diff --git a/README.md b/README.md index 495cf4ae7..e5f16b0e3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ ![UDS Logo](https://www.udsenterprise.com/static//img/logoUDSNav.png) -openuds +The main repository has been transfered to https://github.com/VirtualCable/openuds + +OpenUDS ======= OpenUDS (Universal Desktop Services) is a multiplatform connection broker for: @@ -13,3 +15,4 @@ This is an Open Source Source project, initiated by Spanish Company ​Virtualca Please fell free to contribute to this project. **Note: Master version is always under heavy development and it is not recommended for use, it will probably have unfixed bugs. Please use the latest stable branch.** + diff --git a/SECURITY.md b/SECURITY.md new file mode 100644 index 000000000..74a6062bc --- /dev/null +++ b/SECURITY.md @@ -0,0 +1,11 @@ +# Security + +Virtual Cable takes the security of our software products and services seriously. + +If you find any vulnerability, please, report it to "agomez@virtualcable.net". + +Please, do not use the issue tracker for security vulnerabilities. + +[]: # Path: README.md + +Thank you very much for your interest in OpenUDS. diff --git a/TODO.txt b/TODO.txt deleted file mode 100644 index 8b1378917..000000000 --- a/TODO.txt +++ /dev/null @@ -1 +0,0 @@ - diff --git a/actor/src/actor_client.py b/actor/src/actor_client.py index b797adba2..b60a6de98 100755 --- a/actor/src/actor_client.py +++ b/actor/src/actor_client.py @@ -27,7 +27,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ''' -@author: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' import sys import os diff --git a/actor/src/udsactor/client.py b/actor/src/udsactor/client.py index 67d102e2f..f3ee54fe5 100644 --- a/actor/src/udsactor/client.py +++ b/actor/src/udsactor/client.py @@ -239,7 +239,7 @@ class UDSActorClient(threading.Thread): # pylint: disable=too-many-instance-att pixmap: 'QPixmap' = self._qApp.primaryScreen().grabWindow(0) # type: ignore ba = QByteArray() buffer = QBuffer(ba) - buffer.open(QIODevice.WriteOnly) # type: ignore + buffer.open(QIODevice.OpenModeFlag.WriteOnly) pixmap.save(buffer, 'PNG') buffer.close() scrBase64 = bytes(ba.toBase64()).decode() # type: ignore # there are problems with Pylance and connects on PyQt5... :) diff --git a/actor/src/udsactor/http/cert.py b/actor/src/udsactor/http/cert.py index 451d75048..17f96cc67 100644 --- a/actor/src/udsactor/http/cert.py +++ b/actor/src/udsactor/http/cert.py @@ -1,5 +1,7 @@ from .. import types +# Default certificate, will be overwritten by the first call to Broker, it's needed to wake up the server part of the actor +# at the beginning, but will be replaced by the real certificate. defaultCertificate = types.CertificateInfoType( private_key='-----BEGIN ENCRYPTED PRIVATE KEY-----\nMIIFHTBPBgkqhkiG9w0BBQ0wQjApBgkqhkiG9w0BBQwwHAQIfG2+iMYJBswCAggA\nMAwGCCqGSIb3DQIJBQAwFQYJKwYBBAGXVQECBAhCusU5R8ulZQSCBMgheyZ81Qkq\n+TcbPeBlUGCFllSUOo7xQ/OuwYSmzLx8LpN0hQNv4azF6MYH+I8eMSPd3A547yW3\nJE4GjIBfRvcq2X1UZ2FQfECU9UP0ShPuPrVhIh6ZZklmlRjbIF8hGfSzXAuafQb+\n4wXXsofahi/SPgqK1Gw65nRiMcoeRZchJkx8pBgKVWED6Cbh6aAkeqkVKPnsebiV\n6kE+0C7+hgNUbyRd46R+/5NXzPjg4ItfSak+PLzQ1KeRv4Cu6DdzRKJ4V9/MlNdU\nNNEkSVSEaRn4sv+eByU4uxBMaSmD1tLc/A7OmaAeRpIQvls3Zcf2+V0+anAtjbjd\n6eIb2nceey+dKFm4ewlR4mXuzj1QowRTHceOIkvKIrOODxdy9M5hNBZ7VLum29tY\nRhqtmEH2BZZJ8SpM2SsEZzPxqJFiVZbvpeOKjxlMyn1dFWn1rP8uMnfuMKqBaj5D\nd5clOPlwebYw5UpM6Vvawu4nGqxECTSWcfNlDYO5U/0Fsm9+JIrJ7Buukgv2+rhs\nD/6oUK9NB8AW9qnDr7UxbC/ujhkKQG3woaZlPbiMs5WQaS+DrTg4N49wPzS0h+ME\nF8ZzuPnd6+sMGQioCIrQAZ08rk54oCijBhFh8/EQhQKGsMFw2swi9t6+FVU5Bvil\nlhmBd3LA5EuQ5y1X0jRL/+GDiUiZw1gOJP8d/XzhUJL9AmamdqJ6/rAU7lUTNWkM\ndzmFonUO2Mh2zgEEudHsTOH8udZ2l64LIHc6fCkDmM8QzghjrEFyci6R8333DSSM\nwbM0MvyTLM7TTqZUD60EgD+Ihyr/wJcBZY7GVn7hTq7ee14zeI+dZFmTMYOnt0mA\ngof19t0naPPZU+zyl/ambNF5mmSkGOAl4IBHNvPt5ztEVbNpwW3DHbmdYW71Ax+z\nCDlr4iKZahv21o1PCesPV2IlaHZFD6aBRt0DxzMqtq9cpWsI1g7aEaAjRbSvqhMY\npUeqFXz/GfR9rjRkufr48//ll0/Q/Ogx7m1TjQ6mAEQrklI7pa2W0u3H0BpSZSis\nR6ST3ulE+wfsp8cau6q2er+BSsDhBjSn9FeCUjHzY56u9ud/kb6/jLEdgxNpj0na\n3WVqCCCL/dAFSWznBmdracZsRMXapXInHCiiOEkXXbXIXvRKiTPJXdN+w2/U2j2B\nwXZuazVSpmM+xAZTAS9dtBUQJo+5px9b6P09uagvTA32ezbpPXf+hSfmTdUwbmAY\nrmE9SW85tzX+cD17loygBBRrjOr4uQy/s/9FqLx8bM73jly05rdOmX28ECKwEA05\n8aCFkfqrl9J9doVapaUlywpJVPFtE6W6tCF+ULMfb16vEjT1du1+epEnbGGLRQxg\n3aFLyKlvFaNvR38fiQFUGtBgGOaBN3rhGpbMwjch3oReXv9X/4UCL6sVIiOH2H3c\nVSZdC3O5g6CMVe4zckUe1k9mLDb5524IHDFfptZ6Bw+uzrqIy3GHW8dJF2AK471b\nMUnCojTpdbFHaUs2u/rNKVUyY+vLf8hkyP+znBUoPxSJtty53EWNukxjjsxx0lx3\niZGqN72lXlXuSFZAIxi307+xxE21cbzDsMidyJkbKKGm/F4BOKvX9jWmAyYmBG6A\n1L3yNRouFWsYDwYAX2nZ1is=\n-----END ENCRYPTED PRIVATE KEY-----\n', server_certificate='-----BEGIN CERTIFICATE-----\nMIIDcTCCAlkCBDfnXU8wDQYJKoZIhvcNAQELBQAwfTELMAkGA1UEBhMCRVMxDzAN\nBgNVBAgMBk1hZHJpZDEPMA0GA1UEBwwGTWFkcmlkMREwDwYDVQQKDAhVRFMgQ2Vy\ndDERMA8GA1UECwwIVURTIENlcnQxEjAQBgNVBAMMCTEyNy4wLjAuMTESMBAGA1Ud\nEQwJMTI3LjAuMC4xMB4XDTIwMDIxNzExNTkzMloXDTMwMDIxNDExNTkzMlowfTEL\nMAkGA1UEBhMCRVMxDzANBgNVBAgMBk1hZHJpZDEPMA0GA1UEBwwGTWFkcmlkMREw\nDwYDVQQKDAhVRFMgQ2VydDERMA8GA1UECwwIVURTIENlcnQxEjAQBgNVBAMMCTEy\nNy4wLjAuMTESMBAGA1UdEQwJMTI3LjAuMC4xMIIBIjANBgkqhkiG9w0BAQEFAAOC\nAQ8AMIIBCgKCAQEA2e1cW7YtRpNLazR3f/LqLv8OB0rKh8cUPH4wuQhbBTkee8Wu\n5eMSadRCIyRbKj4b8dtVfI9QW0SrmhGuMx1KCh3CsYd9XsWiKbGkiRBHIDOn5pkF\n6PUayDJ8KjnGbfnZjp0AmxXP4r1OO8jUPqzKS9Ubf5PgwcwdFiUKVfVPwGwctwt5\nt9YpSRONw0rTsCjVHvO2dd9h6EopskLCWxpN8l9kNLwLM/6t0IqVKmn5/IYPKKN2\nCX8a7IXpxwoiUs4sBZYhUMBWikB1hKQRSYafp1Xvc5PeTFXTFqGANnqz0NoZ8tqL\n8qjQUN/PCdtzhfcP5RgT2g1qyS2RBCMYH7Zs0wIDAQABMA0GCSqGSIb3DQEBCwUA\nA4IBAQCUt+qlLA1N9VXMwDQAYG4Kt6/UlMHCXAajHQQGtjdyGJ4++m7EIjI96hMU\n3Cx2gp2ggR3JGnuSR+DdBvPl5iGku7J8KV0JiJg30gTY8JuUIy/PMLZWloYKrBHV\nlin2GujQ4OsIt3dbr4XtcKW1Wd7L6fBzHlq7Xyxh+gcTzTvTmq67Q9XKlBWsegMf\nv4FKy0lfcSFK3vTzswQtuTontG4TqLiT/4AnMt3D0cTQ6b6KoZwUUX/TDNhau06d\nQ4Ilz8X61ka+4HBkFSR5ahP9noCVhwO329h+6epO141E5Tep3OLc/GCF4oaKOlMR\nfqxf5f2bghU0fxmtEoNJTZkBsN1S\n-----END CERTIFICATE-----\n', diff --git a/actor/src/udsactor/http/clients_pool.py b/actor/src/udsactor/http/clients_pool.py index b5787ad55..0a07d8854 100644 --- a/actor/src/udsactor/http/clients_pool.py +++ b/actor/src/udsactor/http/clients_pool.py @@ -37,9 +37,9 @@ from udsactor import tools, types from udsactor.log import logger # For avoid proxy on localhost connections -NO_PROXY = { - 'http': None, - 'https': None, +NO_PROXY: typing.Dict[str, str] = { + 'http': '', + 'https': '', } diff --git a/actor/src/udsactor/http/server.py b/actor/src/udsactor/http/server.py index d12ce48cf..e04a08aa4 100644 --- a/actor/src/udsactor/http/server.py +++ b/actor/src/udsactor/http/server.py @@ -42,12 +42,10 @@ from .. import rest from .public import PublicProvider from .local import LocalProvider +# a couple of 1.2 ciphers + 1.3 ciphers (implicit) DEFAULT_CIPHERS = ( - 'ECDHE-RSA-AES256-GCM-SHA384' - ':ECDHE-ECDSA-AES256-GCM-SHA384' - ':ECDHE-ECDSA-AES256-GCM-SHA384' - ':ECDHE-ECDSA-AES256-CCM' - ':DHE-RSA-AES256-SHA256' + 'ECDHE-RSA-AES128-GCM-SHA256' + ':ECDHE-RSA-AES256-GCM-SHA384' ) # Not imported at runtime, just for type checking @@ -191,8 +189,8 @@ class HTTPServerThread(threading.Thread): # self._server.socket = ssl.wrap_socket(self._server.socket, certfile=self.certFile, server_side=True) context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) - # Disable TLSv1.0 and TLSv1.1, disable TLSv1.2, use only TLSv1.3 - context.options |= ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 + # Disable TLSv1.0 and TLSv1.1, use only TLSv1.3 or TLSv1.2 with allowed ciphers + context.minimum_version = ssl.TLSVersion.TLSv1_2 # If a configures ciphers are provided, use them, otherwise use the default ones context.set_ciphers(self._service._certificate.ciphers or DEFAULT_CIPHERS) diff --git a/actor/src/udsactor/linux/operations.py b/actor/src/udsactor/linux/operations.py index fede39bbd..9fabb48ff 100644 --- a/actor/src/udsactor/linux/operations.py +++ b/actor/src/udsactor/linux/operations.py @@ -56,9 +56,7 @@ def _getMacAddr(ifname: str) -> typing.Optional[str]: ifnameBytes = ifname.encode('utf-8') try: s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - info = bytearray( - fcntl.ioctl(s.fileno(), 0x8927, struct.pack(str('256s'), ifnameBytes[:15])) - ) + info = bytearray(fcntl.ioctl(s.fileno(), 0x8927, struct.pack(str('256s'), ifnameBytes[:15]))) return str(''.join(['%02x:' % char for char in info[18:24]])[:-1]).upper() except Exception: return None @@ -110,10 +108,7 @@ def _getInterfaces() -> typing.List[str]: )[0] namestr = names.tobytes() # return namestr, outbytes - return [ - namestr[i : i + offset].split(b'\0', 1)[0].decode('utf-8') - for i in range(0, outbytes, length) - ] + return [namestr[i : i + offset].split(b'\0', 1)[0].decode('utf-8') for i in range(0, outbytes, length)] def _getIpAndMac( @@ -138,10 +133,7 @@ def getNetworkInfo() -> typing.Iterator[types.InterfaceInfoType]: for ifname in _getInterfaces(): ip, mac = _getIpAndMac(ifname) if ( - mac != '00:00:00:00:00:00' - and mac - and ip - and ip.startswith('169.254') is False + mac != '00:00:00:00:00:00' and mac and ip and ip.startswith('169.254') is False ): # Skips local interfaces & interfaces with no dhcp IPs yield types.InterfaceInfoType(name=ifname, mac=mac, ip=ip) @@ -164,6 +156,7 @@ def getLinuxOs() -> str: def getVersion() -> str: return 'Linux ' + getLinuxOs() + def reboot(flags: int = 0): ''' Simple reboot using os command @@ -173,6 +166,7 @@ def reboot(flags: int = 0): except Exception as e: logger.error('Error rebooting: %s', e) + def loggoff() -> None: ''' Right now restarts the machine... @@ -193,7 +187,6 @@ def renameComputer(newName: str) -> bool: rename(newName) return True # Always reboot right now. Not much slower but much more convenient - def joinDomain( # pylint: disable=unused-argument, too-many-arguments name: str, domain: str, @@ -256,15 +249,20 @@ def leaveDomain( except Exception as e: logger.error(f'Error leave machine from domain {domain}: {e}') -def changeUserPassword(user: str, oldPassword: str, newPassword: str) -> None: +def changeUserPassword( + user: str, oldPassword: str, newPassword: str +) -> None: # pylint: disable=unused-argument ''' - Simple password change for user using command line + Simple password change for user on linux ''' - - subprocess.run( # nosec: Fine, all under control - 'echo "{1}\n{1}" | /usr/bin/passwd {0} 2> /dev/null'.format(user, newPassword), - shell=True, - ) + try: + subprocess.Popen( + ['/usr/bin/passwd', user], # nosec: Fixed params + stdin=subprocess.PIPE, + stdout=subprocess.PIPE, + ).communicate(f'{newPassword}\n{newPassword}\n'.encode('utf-8')) + except Exception as e: + logger.error('Error changing password: %s', e) def initIdleDuration(atLeastSeconds: int) -> None: @@ -289,11 +287,7 @@ def getSessionType() -> str: * xrdp --> xrdp session * other types ''' - return ( - 'xrdp' - if 'XRDP_SESSION' in os.environ - else os.environ.get('XDG_SESSION_TYPE', 'unknown') - ) + return 'xrdp' if 'XRDP_SESSION' in os.environ else os.environ.get('XDG_SESSION_TYPE', 'unknown') def forceTimeSync() -> None: diff --git a/actor/src/udsactor/rest.py b/actor/src/udsactor/rest.py index 3cee28c86..c76b56f94 100644 --- a/actor/src/udsactor/rest.py +++ b/actor/src/udsactor/rest.py @@ -32,10 +32,12 @@ # pylint: disable=invalid-name import warnings import json +import ssl import logging import typing import requests +import requests.adapters from udsactor import types, tools from udsactor.version import VERSION, BUILD @@ -94,6 +96,7 @@ class UDSApi: # pylint: disable=too-few-public-methods _host: str = '' _validateCert: bool = True _url: str = '' + _session: 'requests.Session' def __init__(self, host: str, validateCert: bool) -> None: self._host = host @@ -107,6 +110,28 @@ class UDSApi: # pylint: disable=too-few-public-methods except Exception: # nosec: not interested in exceptions pass + context = ( + ssl.create_default_context(purpose=ssl.Purpose.SERVER_AUTH) + if validateCert + else ssl._create_unverified_context(purpose=ssl.Purpose.SERVER_AUTH, check_hostname=False) + ) + # Disable SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2 + context.minimum_version = ssl.TLSVersion.TLSv1_3 + + # Configure session security + class UDSHTTPAdapter(requests.adapters.HTTPAdapter): + def init_poolmanager(self, *args, **kwargs) -> None: + kwargs["ssl_context"] = context + + return super().init_poolmanager(*args, **kwargs) + + def cert_verify(self, conn, url, verify, cert): # pylint: disable=unused-argument + # Overridden to do nothing + return super().cert_verify(conn, url, validateCert, cert) + + self._session = requests.Session() + self._session.mount("https://", UDSHTTPAdapter()) + @property def _headers(self) -> typing.MutableMapping[str, str]: return { @@ -126,11 +151,11 @@ class UDSApi: # pylint: disable=too-few-public-methods ) -> typing.Any: headers = headers or self._headers try: - result = requests.post( + result = self._session.post( self._api_url(method), data=json.dumps(payLoad), headers=headers, - verify=self._validateCert, + # verify=self._validateCert, Not needed, already in session timeout=TIMEOUT, proxies=NO_PROXY # type: ignore if disableProxy @@ -163,10 +188,10 @@ class UDSServerApi(UDSApi): def enumerateAuthenticators(self) -> typing.Iterable[types.AuthenticatorType]: try: - result = requests.get( + result = self._session.get( self._url + 'auth/auths', headers=self._headers, - verify=self._validateCert, + # verify=self._validateCert, timeout=4, ) if result.ok: @@ -179,7 +204,7 @@ class UDSServerApi(UDSApi): priority=v['priority'], isCustom=v['isCustom'], ) - except Exception: # nosec: not interested in exceptions + except Exception as e: pass def register( @@ -214,22 +239,22 @@ class UDSServerApi(UDSApi): # First, try to login authInfo = {'auth': auth, 'username': username, 'password': password} headers = self._headers - result = requests.post( + result = self._session.post( self._url + 'auth/login', data=json.dumps(authInfo), headers=headers, - verify=self._validateCert, + # verify=self._validateCert, ) if not result.ok or result.json()['result'] == 'error': raise Exception() # Invalid credentials headers['X-Auth-Token'] = result.json()['token'] - result = requests.post( + result = self._session.post( self._api_url('register'), data=json.dumps(data), headers=headers, - verify=self._validateCert, + # verify=self._validateCert, ) if result.ok: return result.json()['result'] diff --git a/actor/src/udsactor/service.py b/actor/src/udsactor/service.py index e0ea7503e..3ae7586fd 100644 --- a/actor/src/udsactor/service.py +++ b/actor/src/udsactor/service.py @@ -90,7 +90,7 @@ class CommonService: # pylint: disable=too-many-instance-attributes self._clientsPool = clients_pool.UDSActorClientPool() self._certificate = ( cert.defaultCertificate - ) # For being used on "unmanaged" hosts only + ) # For being used on "unmanaged" hosts only, and prior to first login self._http = None # Initialzies loglevel and serviceLogger diff --git a/client-py3/full/linux/debian/control b/client-py3/full/linux/debian/control index ecdf895b1..8419480c2 100644 --- a/client-py3/full/linux/debian/control +++ b/client-py3/full/linux/debian/control @@ -1,10 +1,10 @@ Source: udsclient3 Section: admin Priority: optional -Maintainer: Adolfo Gómez García +Maintainer: Adolfo Gómez García Build-Depends: debhelper (>= 7), po-debconf Standards-Version: 3.9.2 -Homepage: http://www.virtualcable.es +Homepage: http://www.udsenterprise.com Package: udsclient3 Section: admin diff --git a/client-py3/full/linux/debian/copyright b/client-py3/full/linux/debian/copyright index e1c25d694..8db383521 100644 --- a/client-py3/full/linux/debian/copyright +++ b/client-py3/full/linux/debian/copyright @@ -5,9 +5,9 @@ Source: http://github.com/dkmstr/openuds/client-py3 Files: * Copyright: (c) 2014-2022, Virtual Cable S.L.U. -License: 3-BSD +License: BSD-3-clause -License: 3-BSD +License: BSD-3-clause All rights reserved. . Redistribution and use in source and binary forms, with or without @@ -35,4 +35,4 @@ License: 3-BSD CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - \ No newline at end of file + diff --git a/client-py3/full/linux/igel/init.sh b/client-py3/full/linux/igel/init.sh index 620e02480..e5da533e9 100755 --- a/client-py3/full/linux/igel/init.sh +++ b/client-py3/full/linux/igel/init.sh @@ -1,2 +1,4 @@ #!/bin/sh cp /UDSClient/UDSClient.desktop /usr/share/applications.mime +chmod 755 /UDSClient/UDSClient + diff --git a/client-py3/full/linux/installer-appimage-template.sh b/client-py3/full/linux/installer-appimage-template.sh index 571ddee86..b4720920a 100644 --- a/client-py3/full/linux/installer-appimage-template.sh +++ b/client-py3/full/linux/installer-appimage-template.sh @@ -9,6 +9,7 @@ fi echo "Installing UDSClient Portable..." cp UDSClient-0.0.0-x86_64.AppImage /usr/bin +chmod 755 /usr/bin/UDSClient-0.0.0-x86_64.AppImage cp UDSClient.desktop /usr/share/applications update-desktop-database diff --git a/client-py3/full/linux/readme.txt b/client-py3/full/linux/readme.txt index 44aa9453e..7cc0e1864 100644 --- a/client-py3/full/linux/readme.txt +++ b/client-py3/full/linux/readme.txt @@ -1,3 +1,5 @@ UDSClient is the client connector needed to get acccess to services managed by UDS Broker. +For raspberry Pi, AppImage does not works with 1.1.0 (works with 1.0.3) + Please, visit http://www.udsenterprise.com for more information diff --git a/client-py3/full/src/UDSClient.py b/client-py3/full/src/UDSClient.py index acca846d2..94dc0d94d 100755 --- a/client-py3/full/src/UDSClient.py +++ b/client-py3/full/src/UDSClient.py @@ -41,11 +41,11 @@ import typing from PyQt5 import QtCore, QtWidgets, QtGui from PyQt5.QtCore import QSettings -from uds.rest import RestApi, RetryException, InvalidVersion, UDSException +from uds.rest import RestApi, RetryException, InvalidVersion # Just to ensure there are available on runtime -from uds.forward import forward as ssh_forward # type: ignore -from uds.tunnel import forward as tunnel_forwards # type: ignore +from uds.forward import forward as ssh_forward # type: ignore # pylint: disable=unused-import +from uds.tunnel import forward as tunnel_forwards # type: ignore # pylint: disable=unused-import from uds.log import logger from uds import tools @@ -55,7 +55,6 @@ from UDSWindow import Ui_MainWindow class UDSClient(QtWidgets.QMainWindow): - ticket: str = '' scrambler: str = '' withError = False @@ -149,7 +148,7 @@ class UDSClient(QtWidgets.QMainWindow): webbrowser.open(e.downloadUrl) self.closeWindow() return - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught self.showError(e) self.closeWindow() return @@ -168,7 +167,9 @@ class UDSClient(QtWidgets.QMainWindow): # self.hide() self.closeWindow() - exec(script, globals(), {'parent': self, 'sp': params}) + exec( + script, globals(), {'parent': self, 'sp': params} + ) # pylint: disable=exec-used # Execute the waiting tasks... threading.Thread(target=endScript).start() @@ -177,7 +178,8 @@ class UDSClient(QtWidgets.QMainWindow): self.ui.info.setText(str(e) + ', retrying access...') # Retry operation in ten seconds QtCore.QTimer.singleShot(10000, self.getTransportData) - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught + logger.exception('Error getting transport data') self.showError(e) def start(self): @@ -194,27 +196,27 @@ def endScript(): try: # Remove early stage files... tools.unlinkFiles(early=True) - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught logger.debug('Unlinking files on early stage: %s', e) # After running script, wait for stuff try: logger.debug('Wating for tasks to finish...') tools.waitForTasks() - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught logger.debug('Watiting for tasks to finish: %s', e) try: logger.debug('Unlinking files') tools.unlinkFiles(early=False) - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught logger.debug('Unlinking files on later stage: %s', e) # Removing try: logger.debug('Executing threads before exit') tools.execBeforeExit() - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught logger.debug('execBeforeExit: %s', e) logger.debug('endScript done') @@ -305,7 +307,7 @@ def minimal(api: RestApi, ticket: str, scrambler: str): + '\n\nPlease, retry again in a while.', QtWidgets.QMessageBox.Ok, ) - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught # logger.exception('Got exception on getTransportData') QtWidgets.QMessageBox.critical( None, # type: ignore @@ -352,31 +354,38 @@ def main(args: typing.List[str]): sys.exit(0) logger.debug('URI: %s', uri) - if uri[:6] != 'uds://' and uri[:7] != 'udss://': - raise Exception() + # Shows error if using http (uds:// ) version, not supported anymore + if uri[:6] == 'uds://': + QtWidgets.QMessageBox.critical( + None, # type: ignore + 'Notice', + f'UDS Client Version {VERSION} does not support HTTP protocol Anymore.', + QtWidgets.QMessageBox.Ok, + ) + sys.exit(1) + if uri[:7] != 'udss://': + raise Exception('Not supported protocol') # Just shows "about" dialog - ssl = uri[3] == 's' host, ticket, scrambler = uri.split('//')[1].split('/') # type: ignore logger.debug( - 'ssl:%s, host:%s, ticket:%s, scrambler:%s', - ssl, + 'host:%s, ticket:%s, scrambler:%s', host, ticket, scrambler, ) - except Exception: + except Exception: # pylint: disable=broad-except logger.debug('Detected execution without valid URI, exiting') QtWidgets.QMessageBox.critical( None, # type: ignore 'Notice', - 'UDS Client Version {}'.format(VERSION), + f'UDS Client Version {VERSION}', QtWidgets.QMessageBox.Ok, ) sys.exit(1) # Setup REST api endpoint api = RestApi( - '{}://{}/uds/rest/client'.format(['http', 'https'][ssl], host), sslError + f'https://{host}/uds/rest/client', sslError ) try: @@ -394,7 +403,7 @@ def main(args: typing.List[str]): exitVal = app.exec() logger.debug('Execution finished correctly') - except Exception as e: + except Exception as e: # pylint: disable=broad-exception-caught logger.exception('Got an exception executing client:') exitVal = 128 QtWidgets.QMessageBox.critical( @@ -404,5 +413,6 @@ def main(args: typing.List[str]): logger.debug('Exiting') sys.exit(exitVal) + if __name__ == "__main__": main(sys.argv) diff --git a/client-py3/full/src/uds/forward.py b/client-py3/full/src/uds/forward.py index 694352716..743ef7fb7 100644 --- a/client-py3/full/src/uds/forward.py +++ b/client-py3/full/src/uds/forward.py @@ -216,7 +216,7 @@ class ForwardThread(threading.Thread): class SubHandler(Handler): chain_host = self.redirectHost chain_port = self.redirectPort - ssh_transport = self.client.get_transport() + ssh_transport = self.client.get_transport() # type: ignore event = self.stopEvent thread = self diff --git a/client-py3/full/src/uds/rest.py b/client-py3/full/src/uds/rest.py index c4fd80fc7..f9d339cc8 100644 --- a/client-py3/full/src/uds/rest.py +++ b/client-py3/full/src/uds/rest.py @@ -51,6 +51,19 @@ from .log import logger # Server before this version uses "unsigned" scripts OLD_METHOD_VERSION = '2.4.0' +SECURE_CIPHERS = ( + 'TLS_AES_256_GCM_SHA384' + ':TLS_CHACHA20_POLY1305_SHA256' + ':TLS_AES_128_GCM_SHA256' + ':ECDHE-RSA-AES256-GCM-SHA384' + ':ECDHE-RSA-AES128-GCM-SHA256' + ':ECDHE-RSA-CHACHA20-POLY1305' + ':ECDHE-ECDSA-AES128-GCM-SHA256' + ':ECDHE-ECDSA-AES256-GCM-SHA384' + ':ECDHE-ECDSA-AES128-SHA256' + ':ECDHE-ECDSA-CHACHA20-POLY1305' +) + # Callback for error on cert # parameters are hostname, serial # If returns True, ignores error @@ -72,7 +85,6 @@ class InvalidVersion(UDSException): super().__init__(downloadUrl) self.downloadUrl = downloadUrl - class RestApi: _restApiUrl: str # base Rest API URL @@ -184,6 +196,10 @@ class RestApi: ctx = ssl.create_default_context() ctx.check_hostname = False ctx.verify_mode = ssl.CERT_NONE + # Disable SSLv2, SSLv3, TLSv1, TLSv1.1 + ctx.minimum_version = ssl.TLSVersion.TLSv1_2 + ctx.set_ciphers(SECURE_CIPHERS) + # If we have the certificates file, we use it if tools.getCaCertsFile() is not None: ctx.load_verify_locations(tools.getCaCertsFile()) diff --git a/client-py3/full/src/uds/tools.py b/client-py3/full/src/uds/tools.py index b335e6daf..ae8c8e188 100644 --- a/client-py3/full/src/uds/tools.py +++ b/client-py3/full/src/uds/tools.py @@ -44,11 +44,17 @@ import typing import certifi +# For signature checking +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import serialization, hashes +from cryptography.hazmat.primitives.asymmetric import utils, padding + try: import psutil except ImportError: psutil = None + from .log import logger _unlinkFiles: typing.List[typing.Tuple[str, bool]] = [] @@ -76,9 +82,7 @@ nVgtClKcDDlSaBsO875WDR0CAwEAAQ== def saveTempFile(content: str, filename: typing.Optional[str] = None) -> str: if filename is None: - filename = ''.join( - random.choice(string.ascii_lowercase + string.digits) for _ in range(16) - ) + filename = ''.join(random.choice(string.ascii_lowercase + string.digits) for _ in range(16)) filename = filename + '.uds' filename = os.path.join(tempfile.gettempdir(), filename) @@ -108,9 +112,7 @@ def testServer(host: str, port: typing.Union[str, int], timeOut: int = 4) -> boo return True -def findApp( - appName: str, extraPath: typing.Optional[str] = None -) -> typing.Optional[str]: +def findApp(appName: str, extraPath: typing.Optional[str] = None) -> typing.Optional[str]: searchPath = os.environ['PATH'].split(os.pathsep) if extraPath: searchPath += list(extraPath) @@ -139,9 +141,7 @@ def addFileToUnlink(filename: str, early: bool = False) -> None: ''' Adds a file to the wait-and-unlink list ''' - logger.debug( - 'Added file %s to unlink on %s stage', filename, 'early' if early else 'later' - ) + logger.debug('Added file %s to unlink on %s stage', filename, 'early' if early else 'later') _unlinkFiles.append((filename, early)) @@ -195,9 +195,7 @@ def waitForTasks() -> None: psutil.process_iter(attrs=('ppid',)), ) ) - logger.debug( - 'Waiting for subprocesses... %s, %s', task.pid, subProcesses - ) + logger.debug('Waiting for subprocesses... %s, %s', task.pid, subProcesses) for i in subProcesses: logger.debug('Found %s', i) i.wait() @@ -224,14 +222,7 @@ def verifySignature(script: bytes, signature: bytes) -> bool: param: signature String signature to be verified return: Boolean. True if the signature is valid; False otherwise. ''' - # For signature checking - from cryptography.hazmat.backends import default_backend - from cryptography.hazmat.primitives import serialization, hashes - from cryptography.hazmat.primitives.asymmetric import utils, padding - - public_key = serialization.load_pem_public_key( - data=PUBLIC_KEY, backend=default_backend() - ) + public_key = serialization.load_pem_public_key(data=PUBLIC_KEY, backend=default_backend()) try: public_key.verify( # type: ignore @@ -261,9 +252,17 @@ def getCaCertsFile() -> typing.Optional[str]: # Check if "standard" paths are valid for linux systems if 'linux' in sys.platform: - for path in ('/etc/pki/tls/certs/ca-bundle.crt', '/etc/ssl/certs/ca-certificates.crt', '/etc/ssl/ca-bundle.pem'): + for path in ( + '/etc/pki/tls/certs/ca-bundle.crt', + '/etc/ssl/certs/ca-certificates.crt', + '/etc/ssl/ca-bundle.pem', + ): if os.path.exists(path): logger.info('Found certifi path: %s', path) return path return None + + +def isMac() -> bool: + return 'darwin' in sys.platform diff --git a/client-py3/full/src/uds/tunnel.py b/client-py3/full/src/uds/tunnel.py index b59a2ad92..cba1557ef 100644 --- a/client-py3/full/src/uds/tunnel.py +++ b/client-py3/full/src/uds/tunnel.py @@ -32,8 +32,6 @@ import socket import socketserver import ssl import threading -import time -import random import threading import select import typing @@ -48,13 +46,15 @@ BUFFER_SIZE: typing.Final[int] = 1024 * 16 # Max buffer length LISTEN_ADDRESS: typing.Final[str] = '0.0.0.0' if DEBUG else '127.0.0.1' LISTEN_ADDRESS_V6: typing.Final[str] = '::' if DEBUG else '::1' + # ForwarServer states -class ForwardState(enum.IntEnum): +class ForwardState(enum.IntEnum): TUNNEL_LISTENING = 0 TUNNEL_OPENING = 1 TUNNEL_PROCESSING = 2 TUNNEL_ERROR = 3 + # Some constants strings for protocol HANDSHAKE_V1: typing.Final[bytes] = b'\x5AMGB\xA5\x01\x00' CMD_TEST: typing.Final[bytes] = b'TEST' @@ -62,8 +62,10 @@ CMD_OPEN: typing.Final[bytes] = b'OPEN' RESPONSE_OK: typing.Final[bytes] = b'OK' + logger = logging.getLogger(__name__) +PayLoadType = typing.Optional[typing.Tuple[typing.Optional[bytes], typing.Optional[bytes]]] class ForwardServer(socketserver.ThreadingTCPServer): daemon_threads = True @@ -74,9 +76,9 @@ class ForwardServer(socketserver.ThreadingTCPServer): ticket: str stop_flag: threading.Event can_stop: bool - timeout: int timer: typing.Optional[threading.Timer] check_certificate: bool + keep_listening: bool current_connections: int status: ForwardState @@ -87,39 +89,42 @@ class ForwardServer(socketserver.ThreadingTCPServer): remote: typing.Tuple[str, int], ticket: str, timeout: int = 0, - local_port: int = 0, + local_port: int = 0, # Use first available listen port if not specified check_certificate: bool = True, + keep_listening: bool = False, ipv6_listen: bool = False, ipv6_remote: bool = False, - ) -> None: - - local_port = local_port or random.randrange(33000, 53000) + ) -> None: + # Negative values for timeout, means "accept always connections" + # "but if no connection is stablished on timeout (positive)" + # "stop the listener" + # Note that this is for backwards compatibility, better use "keep_listening" + if timeout < 0: + keep_listening = True + timeout = abs(timeout) if ipv6_listen: self.address_family = socket.AF_INET6 + # Binds and activate the server, so if local_port is 0, it will be assigned super().__init__( - server_address=(LISTEN_ADDRESS if ipv6_listen else LISTEN_ADDRESS_V6, local_port), + server_address=(LISTEN_ADDRESS_V6 if ipv6_listen else LISTEN_ADDRESS, local_port), RequestHandlerClass=Handler, ) + self.remote = remote self.remote_ipv6 = ipv6_remote or ':' in remote[0] # if ':' in remote address, it's ipv6 (port is [1]) self.ticket = ticket - # Negative values for timeout, means "accept always connections" - # "but if no connection is stablished on timeout (positive)" - # "stop the listener" - self.timeout = int(time.time()) + timeout if timeout > 0 else 0 self.check_certificate = check_certificate + self.keep_listening = keep_listening self.stop_flag = threading.Event() # False initial self.current_connections = 0 self.status = ForwardState.TUNNEL_LISTENING self.can_stop = False - timeout = abs(timeout) or 60 - self.timer = threading.Timer( - abs(timeout), ForwardServer.__checkStarted, args=(self,) - ) + timeout = timeout or 60 + self.timer = threading.Timer(timeout, ForwardServer.__checkStarted, args=(self,)) self.timer.start() def stop(self) -> None: @@ -132,7 +137,9 @@ class ForwardServer(socketserver.ThreadingTCPServer): self.shutdown() def connect(self) -> ssl.SSLSocket: - with socket.socket(socket.AF_INET6 if self.remote_ipv6 else socket.AF_INET, socket.SOCK_STREAM) as rsocket: + with socket.socket( + socket.AF_INET6 if self.remote_ipv6 else socket.AF_INET, socket.SOCK_STREAM + ) as rsocket: logger.info('CONNECT to %s', self.remote) rsocket.connect(self.remote) @@ -143,10 +150,13 @@ class ForwardServer(socketserver.ThreadingTCPServer): # Do not "recompress" data, use only "base protocol" compression context.options |= ssl.OP_NO_COMPRESSION + # Macs with default installed python, does not support mininum tls version set to TLSv1.3 + # USe "brew" version instead, or uncomment next line and comment the next one + # context.minimum_version = ssl.TLSVersion.TLSv1_2 if tools.isMac() else ssl.TLSVersion.TLSv1_3 + context.minimum_version = ssl.TLSVersion.TLSv1_3 + if tools.getCaCertsFile() is not None: - context.load_verify_locations( - tools.getCaCertsFile() - ) # Load certifi certificates + context.load_verify_locations(tools.getCaCertsFile()) # Load certifi certificates # If ignore remote certificate if self.check_certificate is False: @@ -171,18 +181,20 @@ class ForwardServer(socketserver.ThreadingTCPServer): logger.debug('Tunnel is available!') return True except Exception as e: - logger.error( - 'Error connecting to tunnel server %s: %s', self.server_address, e - ) + logger.error('Error connecting to tunnel server %s: %s', self.server_address, e) return False @property def stoppable(self) -> bool: logger.debug('Is stoppable: %s', self.can_stop) - return self.can_stop or (self.timeout != 0 and int(time.time()) > self.timeout) + return self.can_stop @staticmethod def __checkStarted(fs: 'ForwardServer') -> None: + # As soon as the timer is fired, the server can be stopped + # This means that: + # * If not connections are stablished, the server will be stopped + # * If no "keep_listening" is set, the server will not allow any new connections logger.debug('New connection limit reached') fs.timer = None fs.can_stop = True @@ -196,10 +208,11 @@ class Handler(socketserver.BaseRequestHandler): # server: ForwardServer def handle(self) -> None: - self.server.status = ForwardState.TUNNEL_OPENING + if self.server.status == ForwardState.TUNNEL_LISTENING: + self.server.status = ForwardState.TUNNEL_OPENING # Only update state on first connection # If server new connections processing are over time... - if self.server.stoppable: + if self.server.stoppable and not self.server.keep_listening: self.server.status = ForwardState.TUNNEL_ERROR logger.info('Rejected timedout connection') self.request.close() # End connection without processing it @@ -217,11 +230,10 @@ class Handler(socketserver.BaseRequestHandler): data = ssl_socket.recv(2) if data != RESPONSE_OK: data += ssl_socket.recv(128) - raise Exception( - f'Error received: {data.decode(errors="ignore")}' - ) # Notify error + raise Exception(f'Error received: {data.decode(errors="ignore")}') # Notify error # All is fine, now we can tunnel data + self.process(remote=ssl_socket) except Exception as e: logger.error(f'Error connecting to {self.server.remote!s}: {e!s}') @@ -258,10 +270,9 @@ class Handler(socketserver.BaseRequestHandler): def _run(server: ForwardServer) -> None: logger.debug( - 'Starting forwarder: %s -> %s, timeout: %d', + 'Starting forwarder: %s -> %s', server.server_address, server.remote, - server.timeout, ) server.serve_forever() logger.debug('Stoped forwarder %s -> %s', server.server_address, server.remote) @@ -273,14 +284,15 @@ def forward( timeout: int = 0, local_port: int = 0, check_certificate=True, + keep_listening=True, ) -> ForwardServer: - fs = ForwardServer( remote=remote, ticket=ticket, timeout=timeout, local_port=local_port, check_certificate=check_certificate, + keep_listening=keep_listening, ) # Starts a new thread threading.Thread(target=_run, args=(fs,)).start() @@ -295,18 +307,26 @@ if __name__ == "__main__": log.setLevel(logging.DEBUG) handler = logging.StreamHandler(sys.stdout) handler.setLevel(logging.DEBUG) - formatter = logging.Formatter( - '%(levelname)s - %(message)s' - ) # Basic log format, nice for syslog + formatter = logging.Formatter('%(levelname)s - %(message)s') # Basic log format, nice for syslog handler.setFormatter(formatter) log.addHandler(handler) ticket = 'mffqg7q4s61fvx0ck2pe0zke6k0c5ipb34clhbkbs4dasb4g' fs = forward( - ('172.27.0.1', 7777), + ('demoaslan.udsenterprise.com', 11443), ticket, - local_port=49999, + local_port=0, timeout=-20, check_certificate=False, ) + print('Listening on port', fs.server_address) + import socket + # Open a socket to local fs.server_address and send some random data + with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s: + s.connect(fs.server_address) + s.sendall(b'Hello world!') + data = s.recv(1024) + print('Received', repr(data)) + fs.stop() + diff --git a/guacamole-auth-uds/pom.xml b/guacamole-auth-uds/pom.xml index 9dc5a55ab..66c51e760 100644 --- a/guacamole-auth-uds/pom.xml +++ b/guacamole-auth-uds/pom.xml @@ -7,9 +7,9 @@ org.openuds.server guacamole-auth-uds jar - 2.5.0 + 4.0.0 UDS Integration Extension for Apache Guacamole - https://github.com/dkmstr/openuds + https://github.com/VirtualCable/openuds UTF-8 @@ -18,14 +18,13 @@ - + org.apache.maven.plugins maven-compiler-plugin - 3.3 - 1.8 - 1.8 + 11 + 11 -Xlint:all -Werror @@ -38,7 +37,6 @@ org.apache.maven.plugins maven-dependency-plugin - 2.10 unpack-dependencies @@ -70,15 +68,15 @@ javax.ws.rs jsr311-api - 1.1.1 provided + 1.1.1 org.apache.guacamole guacamole-ext - 1.2.0 + 1.5.1 provided @@ -86,7 +84,7 @@ com.google.inject guice - 3.0 + 5.1.0 diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java index 7163a0bc0..68fdd8d87 100644 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java +++ b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/UDSModule.java @@ -55,7 +55,7 @@ public class UDSModule extends AbstractModule { * If the guacamole.properties file cannot be read. */ public UDSModule() throws GuacamoleException { - this.environment = new LocalEnvironment(); + this.environment = LocalEnvironment.getInstance(); } @Override diff --git a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java index 65365c06a..e3e8e252e 100644 --- a/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java +++ b/guacamole-auth-uds/src/main/java/org/openuds/guacamole/config/ConfigurationService.java @@ -30,13 +30,8 @@ package org.openuds.guacamole.config; import com.google.inject.Inject; import com.google.inject.Singleton; -import java.io.BufferedReader; -import java.io.FileReader; -import java.io.IOException; import java.net.URI; -import java.net.URISyntaxException; import org.apache.guacamole.GuacamoleException; -import org.apache.guacamole.GuacamoleServerException; import org.apache.guacamole.environment.Environment; import org.apache.guacamole.properties.URIGuacamoleProperty; diff --git a/server/.pylintrc b/server/.pylintrc new file mode 100644 index 000000000..81bf8a2ca --- /dev/null +++ b/server/.pylintrc @@ -0,0 +1,636 @@ +[MAIN] + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Clear in-memory caches upon conclusion of linting. Useful if running pylint +# in a server-like mode. +clear-cache-post-run=no + +# Load and enable all available extensions. Use --list-extensions to see a list +# all available extensions. +enable-all-extensions=yes + +# In error mode, messages with a category besides ERROR or FATAL are +# suppressed, and no reports are done by default. Error mode is compatible with +# disabling specific errors. +#errors-only= + +# Always return a 0 (non-error) status code, even if lint errors are found. +# This is primarily useful in continuous integration scripts. +#exit-zero= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-allow-list=lxml.etree + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. (This is an alternative name to extension-pkg-allow-list +# for backward compatibility.) +extension-pkg-whitelist= + +# Return non-zero exit code if any of these messages/categories are detected, +# even if score is above --fail-under value. Syntax same as enable. Messages +# specified are enabled, while categories only check already-enabled messages. +fail-on= + +# Specify a score threshold under which the program will exit with error. +fail-under=10 + +# Interpret the stdin as a python script, whose filename needs to be passed as +# the module_or_package argument. +#from-stdin= + +# Files or directories to be skipped. They should be base names, not paths. +ignore=CVS + +# Add files or directories matching the regular expressions patterns to the +# ignore-list. The regex matches against paths and can be in Posix or Windows +# format. Because '\\' represents the directory delimiter on Windows systems, +# it can't be used as an escape character. +ignore-paths= + +# Files or directories matching the regular expression patterns are skipped. +# The regex matches against base names, not paths. The default value ignores +# Emacs file locks +ignore-patterns=^\.# + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis). It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use, and will cap the count on Windows to +# avoid hangs. +jobs=1 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python module names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Minimum Python version to use for version dependent checks. Will default to +# the version used to run pylint. +py-version=3.11 + +# Discover python modules and packages in the file system subtree. +recursive=no + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + +# In verbose mode, extra non-checker-related info will be displayed. +#verbose= + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=camelCase + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. If left empty, argument names will be checked with the set +# naming style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=camelCase + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. If left empty, attribute names will be checked with the set naming +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. If left empty, class attribute names will be checked +# with the set naming style. +#class-attribute-rgx= + +# Naming style matching correct class constant names. +class-const-naming-style=UPPER_CASE + +# Regular expression matching correct class constant names. Overrides class- +# const-naming-style. If left empty, class constant names will be checked with +# the set naming style. +#class-const-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. If left empty, class names will be checked with the set naming style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. If left empty, constant names will be checked with the set naming +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=camelCase + +# Regular expression matching correct function names. Overrides function- +# naming-style. If left empty, function names will be checked with the set +# naming style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. If left empty, inline iteration names will be checked +# with the set naming style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=camelCase + +# Regular expression matching correct method names. Overrides method-naming- +# style. If left empty, method names will be checked with the set naming style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=camelCase + +# Regular expression matching correct module names. Overrides module-naming- +# style. If left empty, module names will be checked with the set naming style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Regular expression matching correct type variable names. If left empty, type +# variable names will be checked with the set naming style. +#typevar-rgx= + +# Naming style matching correct variable names. +variable-naming-style=camelCase + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. If left empty, variable names will be checked with the set +# naming style. +#variable-rgx= + + +[CLASSES] + +# Warn about protected attribute access inside special methods +check-protected-access-in-special-methods=no + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=mcs + + +[DESIGN] + +# List of regular expressions of class ancestor names to ignore when counting +# public methods (see R0903) +exclude-too-few-public-methods= + +# List of qualified class names to ignore when counting class parents (see +# R0901) +ignored-parents= + +# Maximum number of arguments for function / method. +max-args=10 + +# Maximum number of attributes for a class (see R0902). +max-attributes=12 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=5 + +# Maximum number of branch for function / method body. +max-branches=24 + +# Maximum number of locals for function / method body. +max-locals=24 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=32 + +# Maximum number of return / yield for function / method body. +max-returns=9 + +# Maximum number of statements in function / method body. +max-statements=64 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=1 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when caught. +overgeneral-exceptions=builtins.BaseException,builtins.Exception + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=100 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[IMPORTS] + +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= + +# Allow explicit reexports by alias from a package __init__. +allow-reexport-from-package=no + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules= + +# Output a graph (.gv or any supported image format) of external dependencies +# to the given file (report RP0402 must not be disabled). +ext-import-graph= + +# Output a graph (.gv or any supported image format) of all (i.e. internal and +# external) dependencies to the given file (report RP0402 must not be +# disabled). +import-graph= + +# Output a graph (.gv or any supported image format) of internal dependencies +# to the given file (report RP0402 must not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + +[LOGGING] + +# The type of string formatting that logging methods do. `old` means using % +# formatting, `new` is for `{}` formatting. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, +# UNDEFINED. +confidence=HIGH, + CONTROL_FLOW, + INFERENCE, + INFERENCE_FAILURE, + UNDEFINED + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=raw-checker-failed, + bad-inline-option, + locally-disabled, + file-ignored, + suppressed-message, + useless-suppression, + deprecated-pragma, + use-symbolic-message-instead, + R0022, + broad-exception-raised, + invalid-name, + broad-except, + no-name-in-module, # Too many false positives... :( + import-error, + too-many-lines, + redefined-builtin, + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[METHOD_ARGS] + +# List of qualified names (i.e., library.method) which require a timeout +# parameter e.g. 'requests.api.get,requests.api.post' +timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + +# Regular expression of note tags to take in consideration. +notes-rgx= + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=8 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit,argparse.parse_error + + +[REPORTS] + +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'fatal', 'error', 'warning', 'refactor', +# 'convention', and 'info' which contain the number of messages in each +# category, as well as 'statement' which is the total number of statements +# analyzed. This score is used by the global evaluation report (RP0004). +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +#output-format= + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[SIMILARITIES] + +# Comments are removed from the similarity computation +ignore-comments=yes + +# Docstrings are removed from the similarity computation +ignore-docstrings=yes + +# Imports are removed from the similarity computation +ignore-imports=yes + +# Signatures are removed from the similarity computation +ignore-signatures=yes + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it work, +# install the 'python-enchant' package. +spelling-dict= + +# List of comma separated words that should be considered directives if they +# appear at the beginning of a comment and should not be checked. +spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains the private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. +spelling-store-unknown-words=no + + +[STRING] + +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=no + +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= .*.objects + .*.DoesNotExist.* + .+service, + .+osmanager, + ldap\..+, + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of symbolic message names to ignore for Mixin members. +ignored-checks-for-mixins=no-member, + not-async-context-manager, + not-context-manager, + attribute-defined-outside-init + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + +# Regex pattern to define which classes are considered mixins. +mixin-class-rgx=.*[Mm]ixin + +# List of decorators that change the signature of a decorated function. +signature-mutators= + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of names allowed to shadow builtins +allowed-redefined-builtins= + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io diff --git a/server/requirements.txt b/server/requirements.txt index e58b4007e..e1aa6af95 100644 --- a/server/requirements.txt +++ b/server/requirements.txt @@ -1,21 +1,51 @@ +# Broker (and common) +# Latest versions should work fine with master branch Django bitarray +numpy html5lib +cryptography +python3-saml six dnspython lxml ovirt-engine-sdk-python pycurl matplotlib -pyOpenSSL mysqlclient python-ldap paramiko +pyOpenSSL +pyrad defusedxml python-dateutil requests WeasyPrint webencodings xml-marshaller -cryptography -hypothesis +ipython +pyvmomi +PyJWT +pylibmc +gunicorn +python-dateutil +pywinrm +pywinrm[credssp] +whitenoise +setproctitle +openpyxl +boto3 +uvicorn[standard] +numpy +pandas +xxhash +psutil +pyyaml +pyotp +qrcode +qrcode[pil] +art +# For tunnel +dnspython +aiohttp +uvloop diff --git a/server/src/server/settings.py.sample b/server/src/server/settings.py.sample index 13de244af..afecaabf1 100644 --- a/server/src/server/settings.py.sample +++ b/server/src/server/settings.py.sample @@ -3,6 +3,7 @@ Settings file for uds server (Django) ''' import os +import sys import django # calculated paths for django and the site @@ -57,20 +58,23 @@ TIME_ZONE = 'Europe/Madrid' # http://www.i18nguy.com/unicode/language-identifiers.html LANGUAGE_CODE = 'en' -ugettext = lambda s: s +# Override for gettext so we can use the same syntax as in django +# and we can translate it later with our own function +def gettext(s): + return s LANGUAGES = ( - ('es', ugettext('Spanish')), - ('en', ugettext('English')), - ('fr', ugettext('French')), - ('de', ugettext('German')), - ('pt', ugettext('Portuguese')), - ('it', ugettext('Italian')), - ('ar', ugettext('Arabic')), - ('eu', ugettext('Basque')), - ('ar', ugettext('Arabian')), - ('ca', ugettext('Catalan')), - ('zh-hans', ugettext('Chinese')), + ('es', gettext('Spanish')), + ('en', gettext('English')), + ('fr', gettext('French')), + ('de', gettext('German')), + ('pt', gettext('Portuguese')), + ('it', gettext('Italian')), + ('ar', gettext('Arabic')), + ('eu', gettext('Basque')), + ('ar', gettext('Arabian')), + ('ca', gettext('Catalan')), + ('zh-hans', gettext('Chinese')), ) LANGUAGE_COOKIE_NAME = 'uds_lang' @@ -159,10 +163,27 @@ FILE_UPLOAD_DIRECTORY_PERMISSIONS = 0o750 FILE_UPLOAD_MAX_MEMORY_SIZE = 512 * 1024 # 512 Kb # Make this unique, and don't share it with anybody. -SECRET_KEY = 's5ky!7b5f#s35!e38xv%e-+iey6yi-#630x)kk3kk5_j8rie2*' +SECRET_KEY = 's5ky!7b5f#s35!e38xv%e-+iey6yi-#630x)kk3kk5_j8rie2*' # nosec: sample key, Remember to change it on production!! # This is a very long string, an RSA KEY (this can be changed, but if u loose it, all encription will be lost) RSA_KEY = '-----BEGIN RSA PRIVATE KEY-----\nMIICXgIBAAKBgQC0qe1GlriQbHFYdKYRPBFDSS8Ne/TEKI2mtPKJf36XZTy6rIyH\nvUpT1gMScVjHjOISLNJQqktyv0G+ZGzLDmfkCUBev6JBlFwNeX3Dv/97Q0BsEzJX\noYHiDANUkuB30ukmGvG0sg1v4ccl+xs2Su6pFSc5bGINBcQ5tO0ZI6Q1nQIDAQAB\nAoGBAKA7Octqb+T/mQOX6ZXNjY38wXOXJb44LXHWeGnEnvUNf/Aci0L0epCidfUM\nfG33oKX4BMwwTVxHDrsa/HaXn0FZtbQeBVywZqMqWpkfL/Ho8XJ8Rsq8OfElrwek\nOCPXgxMzQYxoNHw8V97k5qhfupQ+h878BseN367xSyQ8plahAkEAuPgAi6aobwZ5\nFZhx/+6rmQ8sM8FOuzzm6bclrvfuRAUFa9+kMM2K48NAneAtLPphofqI8wDPCYgQ\nTl7O96GXVQJBAPoKtWIMuBHJXKCdUNOISmeEvEzJMPKduvyqnUYv17tM0JTV0uzO\nuDpJoNIwVPq5c3LJaORKeCZnt3dBrdH1FSkCQQC3DK+1hIvhvB0uUvxWlIL7aTmM\nSny47Y9zsc04N6JzbCiuVdeueGs/9eXHl6f9gBgI7eCD48QAocfJVygphqA1AkEA\nrvzZjcIK+9+pJHqUO0XxlFrPkQloaRK77uHUaW9IEjui6dZu4+2T/q7SjubmQgWR\nZy7Pap03UuFZA2wCoqJbaQJAUG0FVrnyUORUnMQvdDjAWps2sXoPvA8sbQY1W8dh\nR2k4TCFl2wD7LutvsdgdkiH0gWdh5tc1c4dRmSX1eQ27nA==\n-----END RSA PRIVATE KEY-----' +# Trusted cyphers +SECURE_CIPHERS = ( + 'TLS_AES_256_GCM_SHA384' + ':TLS_CHACHA20_POLY1305_SHA256' + ':TLS_AES_128_GCM_SHA256' + ':ECDHE-RSA-AES256-GCM-SHA384' + ':ECDHE-RSA-AES128-GCM-SHA256' + ':ECDHE-RSA-CHACHA20-POLY1305' + ':ECDHE-ECDSA-AES128-GCM-SHA256' + ':ECDHE-ECDSA-AES256-GCM-SHA384' + ':ECDHE-ECDSA-AES128-SHA256' + ':ECDHE-ECDSA-CHACHA20-POLY1305' +) +# Min TLS version +SECURE_MIN_TLS_VERSION = '1.2' + + TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', @@ -234,7 +255,8 @@ WORKERSFILE = 'workers.log' AUTHFILE = 'auth.log' USEFILE = 'use.log' TRACEFILE = 'trace.log' -LOGLEVEL = DEBUG and 'DEBUG' or 'INFO' +OPERATIONSFILE = 'operations.log' +LOGLEVEL = 'DEBUG' if DEBUG else 'INFO' ROTATINGSIZE = 32 * 1024 * 1024 # 32 Megabytes before rotating files LOGGING = { @@ -246,13 +268,21 @@ LOGGING = { } }, 'formatters': { - 'verbose': { + 'database': { 'format': '%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s' }, 'simple': { - 'format': '%(levelname)s %(asctime)s %(module)s %(funcName)s %(lineno)d %(message)s' + 'format': '%(levelname)s %(asctime)s %(name)s:%(funcName)s %(lineno)d %(message)s' + }, + 'uds': { + 'format': 'uds[%(process)-5s]: %(levelname)s %(asctime)s %(name)s:%(funcName)s %(lineno)d %(message)s' + }, + 'services': { + 'format': 'uds-s[%(process)-5s]: %(levelname)s %(asctime)s %(name)s:%(funcName)s %(lineno)d %(message)s' + }, + 'workers': { + 'format': 'uds-w[%(process)-5s]: %(levelname)s %(asctime)s %(name)s:%(funcName)s %(lineno)d %(message)s' }, - 'database': {'format': '%(levelname)s %(asctime)s Database %(message)s'}, 'auth': {'format': '%(asctime)s %(message)s'}, 'use': {'format': '%(asctime)s %(message)s'}, 'trace': {'format': '%(levelname)s %(asctime)s %(message)s'}, @@ -262,9 +292,17 @@ LOGGING = { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, + # Sample logging to syslog + #'file': { + # 'level': 'DEBUG', + # 'class': 'logging.handlers.SysLogHandler', + # 'formatter': 'uds', + # 'facility': 'local0', + # 'address': '/dev/log', + #}, 'file': { 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', + 'class': 'uds.core.util.log.UDSLogHandler', 'formatter': 'simple', 'filename': LOGDIR + '/' + LOGFILE, 'mode': 'a', @@ -275,7 +313,7 @@ LOGGING = { 'database': { 'level': 'DEBUG', 'class': 'logging.handlers.RotatingFileHandler', - 'formatter': 'verbose', + 'formatter': 'database', 'filename': LOGDIR + '/' + 'sql.log', 'mode': 'a', 'maxBytes': ROTATINGSIZE, @@ -284,7 +322,7 @@ LOGGING = { }, 'servicesFile': { 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', + 'class': 'uds.core.util.log.UDSLogHandler', 'formatter': 'simple', 'filename': LOGDIR + '/' + SERVICESFILE, 'mode': 'a', @@ -294,7 +332,7 @@ LOGGING = { }, 'workersFile': { 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', + 'class': 'uds.core.util.log.UDSLogHandler', 'formatter': 'simple', 'filename': LOGDIR + '/' + WORKERSFILE, 'mode': 'a', @@ -304,7 +342,7 @@ LOGGING = { }, 'authFile': { 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', + 'class': 'uds.core.util.log.UDSLogHandler', 'formatter': 'auth', 'filename': LOGDIR + '/' + AUTHFILE, 'mode': 'a', @@ -314,7 +352,7 @@ LOGGING = { }, 'useFile': { 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', + 'class': 'uds.core.util.log.UDSLogHandler', 'formatter': 'use', 'filename': LOGDIR + '/' + USEFILE, 'mode': 'a', @@ -324,7 +362,7 @@ LOGGING = { }, 'traceFile': { 'level': 'DEBUG', - 'class': 'logging.handlers.RotatingFileHandler', + 'class': 'uds.core.util.log.UDSLogHandler', 'formatter': 'trace', 'filename': LOGDIR + '/' + TRACEFILE, 'mode': 'a', @@ -332,6 +370,16 @@ LOGGING = { 'backupCount': 3, 'encoding': 'utf-8', }, + 'operationsFile': { + 'level': 'DEBUG', + 'class': 'uds.core.util.log.UDSLogHandler', + 'formatter': 'trace', + 'filename': LOGDIR + '/' + OPERATIONSFILE, + 'mode': 'a', + 'maxBytes': ROTATINGSIZE, + 'backupCount': 3, + 'encoding': 'utf-8', + }, 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', @@ -374,6 +422,12 @@ LOGGING = { 'propagate': True, 'level': 'ERROR', }, + # Disable matplotlib (used by reports) logging (too verbose) + 'matplotlib': { + 'handlers': ['null'], + 'propagate': True, + 'level': 'ERROR', + }, 'uds': { 'handlers': ['file'], 'level': LOGLEVEL, @@ -412,5 +466,11 @@ LOGGING = { 'level': 'INFO', 'propagate': False, }, + # Custom operations + 'operationsLog': { + 'handlers': ['operationsFile'], + 'level': 'INFO', + 'propagate': False, + }, }, } diff --git a/server/src/tests/REST/auths/test_users_groups_groups.py b/server/src/tests/REST/auths/test_users_groups_groups.py index c386c7903..564ede703 100644 --- a/server/src/tests/REST/auths/test_users_groups_groups.py +++ b/server/src/tests/REST/auths/test_users_groups_groups.py @@ -33,7 +33,6 @@ import functools import logging from uds import models -from uds.core.managers import cryptoManager from ...utils import rest from ...fixtures import rest as rest_fixtures @@ -46,6 +45,7 @@ class GroupsTest(rest.test.RESTActorTestCase): """ Test users group rest api """ + def setUp(self) -> None: # Override number of items to create rest.test.NUMBER_OF_ITEMS_TO_CREATE = 16 @@ -66,7 +66,9 @@ class GroupsTest(rest.test.RESTActorTestCase): for group in groups: # Locate the group in the auth dbgrp = self.auth.groups.get(name=group['name']) - self.assertTrue(rest.assertions.assertGroupIs(dbgrp, group, compare_uuid=True)) + self.assertTrue( + rest.assertions.assertGroupIs(dbgrp, group, compare_uuid=True) + ) def test_groups_tableinfo(self) -> None: url = f'authenticators/{self.auth.uuid}/groups/tableinfo' @@ -110,7 +112,6 @@ class GroupsTest(rest.test.RESTActorTestCase): response = self.client.rest_get(f'{url}/invalid') self.assertEqual(response.status_code, 404) - def test_group_create_edit(self) -> None: url = f'authenticators/{self.auth.uuid}/groups' # Normal group @@ -133,75 +134,12 @@ class GroupsTest(rest.test.RESTActorTestCase): self.assertEqual(response.status_code, 400) # Now a meta group, with some groups inside - groups = [self.simple_groups[0].uuid] - - - return - url = f'authenticators/{self.auth.uuid}/users' - user_dct: typing.Dict[str, typing.Any] = { - 'name': 'test', - 'real_name': 'test real name', - 'comments': 'test comments', - 'state': 'A', - 'is_admin': True, - 'staff_member': True, - 'groups': [self.groups[0].uuid, self.groups[1].uuid], - } - - # Now, will work - response = self.client.rest_put( - url, - user_dct, - content_type='application/json', + # groups = [self.simple_groups[0].uuid] + group_dct = rest_fixtures.createGroup( + meta=True, groups=[self.simple_groups[0].uuid, self.simple_groups[1].uuid] ) - # Get user from database and ensure values are correct - dbusr = self.auth.users.get(name=user_dct['name']) - self.assertEqual(user_dct['name'], dbusr.name) - self.assertEqual(user_dct['real_name'], dbusr.real_name) - self.assertEqual(user_dct['comments'], dbusr.comments) - self.assertEqual(user_dct['is_admin'], dbusr.is_admin) - self.assertEqual(user_dct['staff_member'], dbusr.staff_member) - self.assertEqual(user_dct['state'], dbusr.state) - self.assertEqual(user_dct['groups'], [i.uuid for i in dbusr.groups.all()]) - - self.assertEqual(response.status_code, 200) - # Returns nothing - - # Now, will fail because name is already in use - response = self.client.rest_put( - url, - user_dct, - content_type='application/json', - ) - self.assertEqual(response.status_code, 400) - - # Modify saved user - user_dct['name'] = 'test2' - user_dct['real_name'] = 'test real name 2' - user_dct['comments'] = 'test comments 2' - user_dct['state'] = 'D' - user_dct['is_admin'] = False - user_dct['staff_member'] = False - user_dct['groups'] = [self.groups[2].uuid] - user_dct['id'] = dbusr.uuid - user_dct['password'] = 'test' # nosec: test password - user_dct['mfa_data'] = 'mfadata' - response = self.client.rest_put( url, - user_dct, - content_type='application/json', + group_dct, ) - self.assertEqual(response.status_code, 200) - - # Get user from database and ensure values are correct - dbusr = self.auth.users.get(name=user_dct['name']) - self.assertEqual(user_dct['name'], dbusr.name) - self.assertEqual(user_dct['real_name'], dbusr.real_name) - self.assertEqual(user_dct['comments'], dbusr.comments) - self.assertEqual(user_dct['is_admin'], dbusr.is_admin) - self.assertEqual(user_dct['staff_member'], dbusr.staff_member) - self.assertEqual(user_dct['state'], dbusr.state) - self.assertEqual(user_dct['groups'], [i.uuid for i in dbusr.groups.all()]) - self.assertEqual(cryptoManager().checkHash(user_dct['password'], dbusr.password), True) diff --git a/server/src/tests/core/models/test_account.py b/server/src/tests/core/models/test_account.py index e3631570b..3116b64e9 100644 --- a/server/src/tests/core/models/test_account.py +++ b/server/src/tests/core/models/test_account.py @@ -34,7 +34,10 @@ import typing import logging from uds import models +from uds.core.util import model +from uds.models import consts from uds.models.account_usage import AccountUsage + from ...fixtures import services as services_fixtures from ...utils.test import UDSTestCase @@ -52,9 +55,7 @@ class ModelAccountTest(UDSTestCase): def setUp(self) -> None: super().setUp() - self.user_services = services_fixtures.createCacheTestingUserServices( - NUM_USERSERVICES - ) + self.user_services = services_fixtures.createCacheTestingUserServices(NUM_USERSERVICES) def test_base(self) -> None: acc = models.Account.objects.create(name='Test Account') @@ -62,7 +63,7 @@ class ModelAccountTest(UDSTestCase): self.assertEqual(acc.name, 'Test Account') self.assertIsInstance(acc.uuid, str) self.assertEqual(acc.comments, '') - self.assertEqual(acc.time_mark, models.util.NEVER) + self.assertEqual(acc.time_mark, consts.NEVER) # Ensures no ussage accounting is done self.assertEqual(acc.usages.count(), 0) @@ -72,7 +73,7 @@ class ModelAccountTest(UDSTestCase): acc.startUsageAccounting(self.user_services[0]) # Only one usage is createdm even with different accounters - self.assertEqual(acc.usages.count(), 1, 'loop {}'.format(i)) + self.assertEqual(acc.usages.count(), 1, f'loop {i}') # Now create one acconting with the same user service 32 times # no usage is created because already created one for that user service @@ -80,7 +81,7 @@ class ModelAccountTest(UDSTestCase): acc = models.Account.objects.create(name='Test Account') acc.startUsageAccounting(self.user_services[0]) - self.assertEqual(acc.usages.count(), 0, 'loop {}'.format(i)) + self.assertEqual(acc.usages.count(), 0, f'loop {i}') def test_start_single_many(self) -> None: acc = models.Account.objects.create(name='Test Account') @@ -89,7 +90,7 @@ class ModelAccountTest(UDSTestCase): acc.startUsageAccounting(self.user_services[i]) # Only one usage is createdm even with different accounters - self.assertEqual(acc.usages.count(), NUM_USERSERVICES, 'loop {}'.format(i)) + self.assertEqual(acc.usages.count(), NUM_USERSERVICES, f'loop {i}'.format(i)) # Now create one acconting with the same user services 32 times # no usage is created because already created one for that user service @@ -98,7 +99,7 @@ class ModelAccountTest(UDSTestCase): for i in range(NUM_USERSERVICES): acc.startUsageAccounting(self.user_services[i]) - self.assertEqual(acc.usages.count(), 0, 'loop {}'.format(i)) + self.assertEqual(acc.usages.count(), 0, f'loop {i}') def test_start_multiple(self) -> None: for i in range(NUM_USERSERVICES): @@ -109,9 +110,7 @@ class ModelAccountTest(UDSTestCase): def test_end_single(self) -> None: acc = models.Account.objects.create(name='Test Account') - for i in range( - 32 - ): # will create 32 usages, because we close them all, even with one user service + for i in range(32): # will create 32 usages, because we close them all, even with one user service acc.startUsageAccounting(self.user_services[i % NUM_USERSERVICES]) acc.stopUsageAccounting(self.user_services[i % NUM_USERSERVICES]) @@ -120,15 +119,13 @@ class ModelAccountTest(UDSTestCase): def test_end_single_many(self) -> None: # Now create one acconting with the same user service 32 times # no usage is created - for i in range(32): + for _ in range(32): acc = models.Account.objects.create(name='Test Account') for j in range(NUM_USERSERVICES): acc.startUsageAccounting(self.user_services[j]) acc.stopUsageAccounting(self.user_services[j]) - self.assertEqual( - acc.usages.count(), NUM_USERSERVICES - ) # This acc will only have one usage + self.assertEqual(acc.usages.count(), NUM_USERSERVICES) # This acc will only have one usage def test_account_usage(self) -> None: acc = models.Account.objects.create(name='Test Account') @@ -145,7 +142,7 @@ class ModelAccountTest(UDSTestCase): for i, usage in enumerate(AccountUsage.objects.all().order_by('id')): self.assertEqual(usage.elapsed_seconds, 32 + i) # With timemark to NEVER, we should get 0 in elapsed_seconds_timemark - usage.account.time_mark = models.util.NEVER + usage.account.time_mark = consts.NEVER usage.account.save(update_fields=['time_mark']) self.assertEqual(usage.elapsed_seconds_timemark, 0) @@ -161,24 +158,21 @@ class ModelAccountTest(UDSTestCase): self.assertEqual(usage.elapsed_seconds_timemark, 32) # With start or end to NEVER, we should get 0 in elapsed_seconds - usage.start = models.util.NEVER + usage.start = consts.NEVER usage.save(update_fields=['start']) self.assertEqual(usage.elapsed_seconds, 0) - usage.start = models.getSqlDatetime() - usage.end = models.util.NEVER + usage.start = model.getSqlDatetime() + usage.end = consts.NEVER usage.save(update_fields=['start', 'end']) self.assertEqual(usage.elapsed_seconds, 0) # Now end is before start - usage.start = models.getSqlDatetime() + usage.start = model.getSqlDatetime() usage.end = usage.start - datetime.timedelta(seconds=1) usage.save(update_fields=['start', 'end']) self.assertEqual(usage.elapsed_seconds, 0) - # Esnure elapsed and elapsed_timemark as strings for i, usage in enumerate(AccountUsage.objects.all().order_by('id')): self.assertIsInstance(usage.elapsed, str) self.assertIsInstance(usage.elapsed_timemark, str) self.assertIsInstance(str(usage), str) - - diff --git a/server/src/tests/core/util/test_uniqueid.py b/server/src/tests/core/util/test_uniqueid.py index 0ae0182c8..a81d21629 100644 --- a/server/src/tests/core/util/test_uniqueid.py +++ b/server/src/tests/core/util/test_uniqueid.py @@ -32,13 +32,14 @@ """ import time -from ...utils.test import UDSTestCase -from django.conf import settings from uds.core.util.unique_id_generator import UniqueIDGenerator from uds.core.util.unique_gid_generator import UniqueGIDGenerator from uds.core.util.unique_mac_generator import UniqueMacGenerator from uds.core.util.unique_name_generator import UniqueNameGenerator -from uds.models import getSqlDatetimeAsUnix + +from uds.core.util.model import getSqlDatetimeAsUnix + +from ...utils.test import UDSTestCase NUM_THREADS = 8 @@ -73,7 +74,7 @@ class UniqueIdTest(UDSTestCase): self.assertEqual(self.uidGen.get(), 40) def test_release_unique_id(self): - for x in range(100): + for _ in range(100): self.uidGen.get() self.assertEqual(self.uidGen.get(), 100) @@ -99,20 +100,20 @@ class UniqueIdTest(UDSTestCase): self.assertEqual(self.uidGen.get(), i) # from NUM to NUM*2-1 (both included) are still there, so we should get 200 - self.assertEqual(self.uidGen.get(), NUM*2) - self.assertEqual(self.uidGen.get(), NUM*2+1) + self.assertEqual(self.uidGen.get(), NUM * 2) + self.assertEqual(self.uidGen.get(), NUM * 2 + 1) def test_gid(self): for x in range(100): - self.assertEqual(self.ugidGen.get(), 'uds{:08d}'.format(x)) + self.assertEqual(self.ugidGen.get(), f'uds{x:08d}') def test_gid_basename(self): self.ugidGen.setBaseName('mar') for x in range(100): - self.assertEqual(self.ugidGen.get(), 'mar{:08d}'.format(x)) + self.assertEqual(self.ugidGen.get(), f'mar{x:08d}') def test_mac(self): - start, end = TEST_MAC_RANGE.split('-') + start, end = TEST_MAC_RANGE.split('-') # pylint: disable=unused-variable self.assertEqual(self.macGen.get(TEST_MAC_RANGE), start) @@ -150,7 +151,7 @@ class UniqueIdTest(UDSTestCase): for x in range(20): name = self.nameGen.get('test', length=length) lst.append(name) - self.assertEqual(name, 'test{:0{width}d}'.format(num, width=length)) + self.assertEqual(name, f'test{num:0{length}d}'.format(num, width=length)) num += 1 for x in lst: @@ -159,7 +160,7 @@ class UniqueIdTest(UDSTestCase): self.assertEqual(self.nameGen.get('test', length=1), 'test0') def test_name_full(self): - for x in range(10): + for _ in range(10): self.nameGen.get('test', length=1) with self.assertRaises(KeyError): diff --git a/server/src/tests/core/workers/test_assigned_unused.py b/server/src/tests/core/workers/test_assigned_unused.py index e4ba65b9e..7340bab0f 100644 --- a/server/src/tests/core/workers/test_assigned_unused.py +++ b/server/src/tests/core/workers/test_assigned_unused.py @@ -33,6 +33,7 @@ import typing import datetime from uds import models +from uds.core.util import model from uds.core.environment import Environment from uds.core.util import config from uds.core.util.state import State @@ -57,13 +58,13 @@ class AssignedAndUnusedTest(UDSTestCase): # Set now, should not be removed count = models.UserService.objects.filter(state=State.REMOVABLE).count() cleaner = AssignedAndUnused(Environment.getTempEnv()) - # since_state = getSqlDatetime() - datetime.timedelta(seconds=cleaner.frecuency) + # since_state = util.getSqlDatetime() - datetime.timedelta(seconds=cleaner.frecuency) cleaner.run() self.assertEqual(models.UserService.objects.filter(state=State.REMOVABLE).count(), count) # Set half the userServices to a long-ago state, should be removed for i, us in enumerate(self.userServices): if i%2 == 0: - us.state_date = models.getSqlDatetime() - datetime.timedelta(seconds=602) + us.state_date = model.getSqlDatetime() - datetime.timedelta(seconds=602) us.save(update_fields=['state_date']) cleaner.run() self.assertEqual(models.UserService.objects.filter(state=State.REMOVABLE).count(), count + len(self.userServices)//2) diff --git a/server/src/tests/core/workers/test_hanged_userservice_cleaner.py b/server/src/tests/core/workers/test_hanged_userservice_cleaner.py index 64566bd3b..1172211bc 100644 --- a/server/src/tests/core/workers/test_hanged_userservice_cleaner.py +++ b/server/src/tests/core/workers/test_hanged_userservice_cleaner.py @@ -33,6 +33,7 @@ import datetime import typing from uds import models +from uds.core.util import model from uds.core.environment import Environment from uds.core.util import config from uds.core.util.state import State @@ -75,7 +76,7 @@ class HangedCleanerTest(UDSTestCase): us.state = State.USABLE us.os_state = State.USABLE - us.state_date = models.getSqlDatetime() - datetime.timedelta( + us.state_date = model.getSqlDatetime() - datetime.timedelta( seconds=MAX_INIT + 1 ) us.save(update_fields=['state', 'os_state', 'state_date']) diff --git a/server/src/tests/core/workers/test_stats_c_acummulator.py b/server/src/tests/core/workers/test_stats_c_acummulator.py index 6b854f787..6b1d66b45 100644 --- a/server/src/tests/core/workers/test_stats_c_acummulator.py +++ b/server/src/tests/core/workers/test_stats_c_acummulator.py @@ -36,13 +36,14 @@ import random from uds import models from uds.core.util.stats import counters -from ...utils.test import UDSTestCase -from ...fixtures import stats_counters as fixtures_stats_counters from uds.core.workers import stats_collector from uds.core.environment import Environment from uds.core.util import config +from ...utils.test import UDSTestCase +from ...fixtures import stats_counters as fixtures_stats_counters + START_DATE = datetime.datetime(2009, 12, 4, 0, 0, 0) # Some random values, @@ -62,11 +63,13 @@ class StatsFunction: def __call__(self, i: int, number_per_hour: int) -> int: self.counter += 1 - return self.counter * self.multiplier * 100 + random.randint(0, 100) # nosec: just testing values, lower 2 digits are random + return self.counter * self.multiplier * 100 + random.randint( + 0, 100 + ) # nosec: just testing values, lower 2 digits are random class StatsAcummulatorTest(UDSTestCase): - def setUp(self): + def setUp(self) -> None: # In fact, real data will not be assigned to Userservices, but it's ok for testing for pool_id in range(NUMBER_OF_POOLS): fixtures_stats_counters.create_stats_interval_total( @@ -83,12 +86,10 @@ class StatsAcummulatorTest(UDSTestCase): config.GlobalConfig.STATS_ACCUM_MAX_CHUNK_TIME.set(DAYS // 2 + 1) stats_collector.StatsAccumulator.setup() - def test_stats_accumulator(self): + def test_stats_accumulator(self) -> None: # Ensure first that we have correct number of base stats base_stats = models.StatsCounters.objects.all() - total_base_stats = ( - DAYS * 24 * NUMBER_PER_HOUR * NUMBER_OF_POOLS * len(COUNTERS_TYPES) - ) # All stats + total_base_stats = DAYS * 24 * NUMBER_PER_HOUR * NUMBER_OF_POOLS * len(COUNTERS_TYPES) # All stats self.assertEqual(base_stats.count(), total_base_stats) optimizer = stats_collector.StatsAccumulator(Environment.getTempEnv()) @@ -138,23 +139,16 @@ class StatsAcummulatorTest(UDSTestCase): self.assertEqual(stat.v_count, len(d[stamp])) # Recalculate sum of stats, now from StatsCountersAccum (dayly) - data_d: typing.Dict[ - str, typing.Dict[int, typing.List[typing.Dict[str, int]]] - ] = {} + data_d: typing.Dict[str, typing.Dict[int, typing.List[typing.Dict[str, int]]]] = {} for i in hour_stats.order_by('owner_id', 'counter_type', 'stamp'): - stamp = ( - i.stamp - (i.stamp % (3600 * 24)) + 3600 * 24 - ) # Round to day and to next day - d = data_d.setdefault(f'{i.owner_id:03d}{i.counter_type}', {}) - d.setdefault(stamp, []).append( - {'sum': i.v_sum, 'count': i.v_count, 'max': i.v_max, 'min': i.v_min} - ) - pass + stamp = i.stamp - (i.stamp % (3600 * 24)) + 3600 * 24 # Round to day and to next day + dd = data_d.setdefault(f'{i.owner_id:03d}{i.counter_type}', {}) + dd.setdefault(stamp, []).append({'sum': i.v_sum, 'count': i.v_count, 'max': i.v_max, 'min': i.v_min}) for i in day_stats.order_by('owner_id', 'stamp'): stamp = i.stamp # already rounded to day - d = data_d[f'{i.owner_id:03d}{i.counter_type}'] - self.assertEqual(i.v_sum, sum([x['sum'] for x in d[stamp]])) - self.assertEqual(i.v_max, max([x['max'] for x in d[stamp]])) - self.assertEqual(i.v_min, min([x['min'] for x in d[stamp]])) - self.assertEqual(i.v_count, sum([x['count'] for x in d[stamp]])) + dd = data_d[f'{i.owner_id:03d}{i.counter_type}'] + self.assertEqual(i.v_sum, sum(x['sum'] for x in dd[stamp])) + self.assertEqual(i.v_max, max(x['max'] for x in dd[stamp])) + self.assertEqual(i.v_min, min(x['min'] for x in dd[stamp])) + self.assertEqual(i.v_count, sum(x['count'] for x in dd[stamp])) diff --git a/server/src/tests/fixtures/authenticators.py b/server/src/tests/fixtures/authenticators.py index e72d439bb..201a7f9f0 100644 --- a/server/src/tests/fixtures/authenticators.py +++ b/server/src/tests/fixtures/authenticators.py @@ -36,10 +36,8 @@ from uds.core.util import states from uds.core.managers.crypto import CryptoManager # Counters so we can reinvoke the same method and generate new data -glob = { - 'user_id': 0, - 'group_id': 0 -} +glob = {'user_id': 0, 'group_id': 0} + def createAuthenticator( authenticator: typing.Optional[models.Authenticator] = None, @@ -48,6 +46,7 @@ def createAuthenticator( Creates a testing authenticator """ if authenticator is None: + # pylint: disable=import-outside-toplevel from uds.auths.InternalDB.authenticator import InternalDBAuth authenticator = models.Authenticator() @@ -74,10 +73,10 @@ def createUsers( """ users = [ authenticator.users.create( - name='user{}'.format(i), - password=CryptoManager().hash('user{}'.format(i)), - real_name='Real name {}'.format(i), - comments='User {}'.format(i), + name=f'user{i}', + password=CryptoManager().hash(f'user{i}'), + real_name=f'Real name {i}', + comments=f'User {i}', staff_member=is_staff or is_admin, is_admin=is_admin, state=states.common.ACTIVE if enabled else states.common.BLOCKED, @@ -103,8 +102,8 @@ def createGroups( """ groups = [ authenticator.groups.create( - name='group{}'.format(i), - comments='Group {}'.format(i), + name=f'group{i}', + comments=f'Group {i}', is_meta=False, ) for i in range(glob['group_id'], glob['group_id'] + number_of_groups) @@ -123,8 +122,8 @@ def createMetaGroups( """ meta_groups = [ authenticator.groups.create( - name='meta-group{}'.format(i), - comments='Meta group {}'.format(i), + name=f'meta-group{i}', + comments=f'Meta group {i}', is_meta=True, meta_if_any=i % 2 == 0, ) @@ -136,9 +135,11 @@ def createMetaGroups( groups = list(authenticator.groups.all()) if groups: for meta in meta_groups: - for group in random.sample(groups, random.randint(1, len(groups)//2)): # nosec: testing only + for group in random.sample( + groups, random.randint(1, len(groups) // 2) # nosec: testing only + ): meta.groups.add(group) - + glob['group_id'] += number_of_meta return meta_groups diff --git a/server/src/tests/messaging/test_notifier.py b/server/src/tests/messaging/test_notifier.py index 50b6a4a67..46dc92618 100644 --- a/server/src/tests/messaging/test_notifier.py +++ b/server/src/tests/messaging/test_notifier.py @@ -79,7 +79,7 @@ class EmailNotifierTest(UDSTestCase): notifier.getInstance().notify( 'Group', 'Identificator', - messaging.NotificationLevel.CRITICAL, + messaging.LogLevel.CRITICAL, 'Test message cañón', ) diff --git a/server/src/tests/middleware/test_global_request.py b/server/src/tests/middleware/test_global_request.py index 9a54ff66e..55b8ffdd9 100644 --- a/server/src/tests/middleware/test_global_request.py +++ b/server/src/tests/middleware/test_global_request.py @@ -59,17 +59,17 @@ class GlobalRequestMiddlewareTest(test.WEBTestCase): self.client.enable_ipv4() response = self.client.get('/', secure=False) - request = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) + req = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) # session[AUTHORIZED_KEY] = False, not logged in - self.assertEqual(request.session.get(AUTHORIZED_KEY), False) + self.assertEqual(req.session.get(AUTHORIZED_KEY), False) # Ensure ip, and ip_proxy are set and both are the same, 127.0.0.1 - self.assertEqual(request.ip, '127.0.0.1') - self.assertEqual(request.ip_proxy, '127.0.0.1') - self.assertEqual(request.ip_version, 4) + self.assertEqual(req.ip, '127.0.0.1') + self.assertEqual(req.ip_proxy, '127.0.0.1') + self.assertEqual(req.ip_version, 4) # Ensure user is not set - self.assertEqual(request.user, None) + self.assertEqual(req.user, None) # And redirects to index self.assertEqual(response.status_code, 302) self.assertEqual(response.url, reverse('page.index')) @@ -81,17 +81,17 @@ class GlobalRequestMiddlewareTest(test.WEBTestCase): self.client.enable_ipv6() response = self.client.get('/', secure=False) - request = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) + req = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) # session[AUTHORIZED_KEY] = False, not logged in - self.assertEqual(request.session.get(AUTHORIZED_KEY), False) - + self.assertEqual(req.session.get(AUTHORIZED_KEY), False) + # Ensure ip, and ip_proxy are set and both are the same, - self.assertEqual(request.ip, '::1') - self.assertEqual(request.ip_proxy, '::1') - self.assertEqual(request.ip_version, 6) + self.assertEqual(req.ip, '::1') + self.assertEqual(req.ip_proxy, '::1') + self.assertEqual(req.ip_version, 6) # Ensure user is not set - self.assertEqual(request.user, None) + self.assertEqual(req.user, None) # And redirects to index self.assertEqual(response.status_code, 302) self.assertEqual(response.url, reverse('page.index')) @@ -105,17 +105,17 @@ class GlobalRequestMiddlewareTest(test.WEBTestCase): user = self.login(as_admin=False) response = self.client.get('/', secure=False) - request = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) + req = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) # session[AUTHORIZED_KEY] = True, logged in - self.assertEqual(request.session.get(AUTHORIZED_KEY), True) + self.assertEqual(req.session.get(AUTHORIZED_KEY), True) # Ensure ip, and ip_proxy are set and both are the same, - self.assertEqual(request.ip, '127.0.0.1') - self.assertEqual(request.ip_proxy, '127.0.0.1') - self.assertEqual(request.ip_version, 4) + self.assertEqual(req.ip, '127.0.0.1') + self.assertEqual(req.ip_proxy, '127.0.0.1') + self.assertEqual(req.ip_version, 4) # Ensure user is correct - self.assertEqual(request.user.uuid, user.uuid) + self.assertEqual(req.user.uuid, user.uuid) # And redirects to index self.assertEqual(response.status_code, 302) self.assertEqual(response.url, reverse('page.index')) @@ -129,44 +129,45 @@ class GlobalRequestMiddlewareTest(test.WEBTestCase): user = self.login(as_admin=False) response = self.client.get('/', secure=False) - request = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) + req = typing.cast('ExtendedHttpRequestWithUser', response.wsgi_request) # session[AUTHORIZED_KEY] = True, logged in - self.assertEqual(request.session.get(AUTHORIZED_KEY), True) + self.assertEqual(req.session.get(AUTHORIZED_KEY), True) # Ensure ip, and ip_proxy are set and both are the same, - self.assertEqual(request.ip, '::1') - self.assertEqual(request.ip_proxy, '::1') - self.assertEqual(request.ip_version, 6) + self.assertEqual(req.ip, '::1') + self.assertEqual(req.ip_proxy, '::1') + self.assertEqual(req.ip_version, 6) # Ensure user is correct - self.assertEqual(request.user.uuid, user.uuid) + self.assertEqual(req.user.uuid, user.uuid) # And redirects to index self.assertEqual(response.status_code, 302) self.assertEqual(response.url, reverse('page.index')) def test_no_middleware(self) -> None: # Ensure GlobalRequestMiddleware is not present - GlobalRequestMiddlewareTest.remove_middleware('uds.middleware.request.GlobalRequestMiddleware') + GlobalRequestMiddlewareTest.remove_middleware( + 'uds.middleware.request.GlobalRequestMiddleware' + ) self.client.enable_ipv4() response = self.client.get('/', secure=False) - request = response.wsgi_request + req = response.wsgi_request # session[AUTHORIZED_KEY] is not present - self.assertEqual(AUTHORIZED_KEY in request.session, False) + self.assertEqual(AUTHORIZED_KEY in req.session, False) # ip is not present, nor ip_proxy or ip_version - self.assertEqual(hasattr(request, 'ip'), False) - self.assertEqual(hasattr(request, 'ip_proxy'), False) - self.assertEqual(hasattr(request, 'ip_version'), False) - + self.assertEqual(hasattr(req, 'ip'), False) + self.assertEqual(hasattr(req, 'ip_proxy'), False) + self.assertEqual(hasattr(req, 'ip_version'), False) + # Also, user is not present - self.assertEqual(hasattr(request, 'user'), False) + self.assertEqual(hasattr(req, 'user'), False) # And redirects to index self.assertEqual(response.status_code, 302) self.assertEqual(response.url, reverse('page.index')) - def test_detect_ips_no_proxy(self) -> None: req = mock.Mock() # Use an ipv4 and an ipv6 address @@ -174,7 +175,7 @@ class GlobalRequestMiddlewareTest(test.WEBTestCase): req.META = { 'REMOTE_ADDR': ip, } - request._fill_ips(req) + request._fill_ips(req) # pylint: disable=protected-access self.assertEqual(req.ip, ip) self.assertEqual(req.ip_proxy, ip) self.assertEqual(req.ip_version, 4 if '.' in ip else 6) @@ -193,22 +194,34 @@ class GlobalRequestMiddlewareTest(test.WEBTestCase): 'HTTP_X_FORWARDED_FOR': client_ip, } else: - req.META = { - 'HTTP_X_FORWARDED_FOR': "{},{}".format(client_ip, proxy), - } + req.META = {'HTTP_X_FORWARDED_FOR': f'{client_ip},{proxy}'} - request._fill_ips(req) - self.assertEqual(req.ip, client_ip, "Failed for {}".format(req.META)) - self.assertEqual(req.ip_proxy, client_ip, "Failed for {}".format(req.META)) - self.assertEqual(req.ip_version, 4 if '.' in client_ip else 6, "Failed for {}".format(req.META)) + request._fill_ips(req) # pylint: disable=protected-access + self.assertEqual( + req.ip, client_ip, "Failed for {}".format(req.META) + ) + self.assertEqual( + req.ip_proxy, client_ip, "Failed for {}".format(req.META) + ) + self.assertEqual( + req.ip_version, + 4 if '.' in client_ip else 6, + "Failed for {}".format(req.META), + ) def test_detect_ips_proxy_chained(self) -> None: config.GlobalConfig.BEHIND_PROXY.set(True) req = mock.Mock() # Use an ipv4 and an ipv6 address for client_ip in ['192.168.128.128', '2001:db8:85a3:8d3:1319:8a2e:370:7348']: - for first_proxy in ['192.168.200.200', '2001:db8:85a3:8d3:1319:8a2e:370:7349']: - for second_proxy in ['192.168.201.201', '2001:db8:85a3:8d3:1319:8a2e:370:7350']: + for first_proxy in [ + '192.168.200.200', + '2001:db8:85a3:8d3:1319:8a2e:370:7349', + ]: + for second_proxy in [ + '192.168.201.201', + '2001:db8:85a3:8d3:1319:8a2e:370:7350', + ]: for with_nginx in [True, False]: x_forwarded_for = '{}, {}'.format(client_ip, first_proxy) if with_nginx is False: @@ -218,11 +231,12 @@ class GlobalRequestMiddlewareTest(test.WEBTestCase): } else: req.META = { - 'HTTP_X_FORWARDED_FOR': "{}, {}".format(x_forwarded_for, second_proxy), + 'HTTP_X_FORWARDED_FOR': "{}, {}".format( + x_forwarded_for, second_proxy + ), } request._fill_ips(req) self.assertEqual(req.ip, first_proxy) self.assertEqual(req.ip_proxy, client_ip) - self.assertEqual(req.ip_version, 4 if '.' in first_proxy else 6) - \ No newline at end of file + self.assertEqual(req.ip_version, 4 if '.' in first_proxy else 6) diff --git a/server/src/tests/middleware/test_redirect.py b/server/src/tests/middleware/test_redirect.py index f8d087b86..a9ecda86a 100644 --- a/server/src/tests/middleware/test_redirect.py +++ b/server/src/tests/middleware/test_redirect.py @@ -28,14 +28,11 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import typing import logging from django.urls import reverse -from uds.core.util import config from uds.core.managers.crypto import CryptoManager -from uds.middleware.redirect import _NO_REDIRECT from ..utils import test @@ -49,11 +46,11 @@ class RedirectMiddlewareTest(test.UDSTransactionTestCase): """ def test_redirect(self): RedirectMiddlewareTest.add_middleware('uds.middleware.redirect.RedirectMiddleware') - config.GlobalConfig.REDIRECT_TO_HTTPS.set(True) + page = 'https://testserver' + reverse('page.index') response = self.client.get('/', secure=False) - self.assertEqual(response.status_code, 302) - self.assertEqual(response.url, 'https://testserver/') - # Try secure, will redirect to index + self.assertEqual(response.status_code, 301) + self.assertEqual(response.url, page) + # Try secure, will redirect to index, not absulute url response = self.client.get('/', secure=True) self.assertEqual(response.status_code, 302) self.assertEqual(response.url, reverse('page.index')) @@ -62,21 +59,7 @@ class RedirectMiddlewareTest(test.UDSTransactionTestCase): for _ in range(32): url = f'/{CryptoManager().randomString(32)}' response = self.client.get(url, secure=False) - self.assertEqual(response.status_code, 302) - self.assertEqual(response.url, f'https://testserver{url}') + self.assertEqual(response.status_code, 301) + self.assertEqual(response.url, page) response = self.client.get(url, secure=True) self.assertEqual(response.status_code, 404) # Not found - - # These urls will never redirect: - for url in _NO_REDIRECT: - # Append some random string to avoid cache and make a 404 occur - url = f'/{url}{("/" + CryptoManager().randomString(32)) if "test" not in url else ""}' - response = self.client.get(url, secure=False) - # every url will return 404, except /uds/rest/client/test that will return 200 and wyse or servlet that will return 302 - if url.startswith('/uds/rest/client/test'): - self.assertEqual(response.status_code, 200) - elif url.startswith('/wyse') or url.startswith('/servlet'): - self.assertEqual(response.status_code, 302) - else: - self.assertEqual(response.status_code, 404) - diff --git a/server/src/tests/middleware/test_security.py b/server/src/tests/middleware/test_security.py index 590e3f0c8..b4d20bec3 100644 --- a/server/src/tests/middleware/test_security.py +++ b/server/src/tests/middleware/test_security.py @@ -33,7 +33,6 @@ import logging from django.urls import reverse from uds.core.util import config -from uds.middleware.redirect import _NO_REDIRECT from ..utils import test diff --git a/server/src/tests/utils/rest/__init__.py b/server/src/tests/utils/rest/__init__.py index fc6b708e6..181b08004 100644 --- a/server/src/tests/utils/rest/__init__.py +++ b/server/src/tests/utils/rest/__init__.py @@ -36,13 +36,14 @@ import typing from django.test import SimpleTestCase from django.test.client import Client -# Not used, alloes "rest.test" or "rest.assertions" -from . import test -from . import assertions +from uds.REST.handlers import AUTH_TOKEN_HEADER + +# Not used, allows "rest.test" or "rest.assertions" +from . import test # pylint: disable=unused-import +from . import assertions # pylint: disable=unused-import from .. import generators -from uds.REST.handlers import AUTH_TOKEN_HEADER # Calls REST login def login( @@ -67,7 +68,7 @@ def login( caller.assertEqual( response.status_code, expectedResponseCode, - 'Login from {}'.format(errorMessage or caller.__class__.__name__), + f'Login from {errorMessage or caller.__class__.__name__}', ) if response.status_code == 200: @@ -83,16 +84,18 @@ def logout(caller: SimpleTestCase, client: Client, auth_token: str) -> None: **{AUTH_TOKEN_HEADER: auth_token} ) caller.assertEqual( - response.status_code, 200, 'Logout Result: {}'.format(response.content) + response.status_code, 200, f'Logout Result: {response.content}' ) caller.assertEqual( - response.json(), {'result': 'ok'}, 'Logout Result: {}'.format(response.content) + response.json(), {'result': 'ok'}, 'Logout Result: {response.content}' ) # Rest related utils for fixtures + # Just a holder for a type, to indentify uuids +# pylint: disable=too-few-public-methods class uuid_type: pass @@ -100,7 +103,7 @@ class uuid_type: RestFieldType = typing.Tuple[str, typing.Union[typing.Type, typing.Tuple[str, ...]]] RestFieldReference = typing.Final[typing.List[RestFieldType]] - +# pylint: disable=too-many-return-statements def random_value( field_type: typing.Union[typing.Type, typing.Tuple[str, ...]], value: typing.Any = None, @@ -125,10 +128,15 @@ def random_value( if field_type == typing.List[int]: return [generators.random_int() for _ in range(generators.random_int(1, 10))] if field_type == typing.List[bool]: - return [random.choice([True, False]) for _ in range(generators.random_int(1, 10))] # nosec + return [ + random.choice([True, False]) for _ in range(generators.random_int(1, 10)) # nosec: test values + ] if field_type == typing.List[typing.Tuple[str, str]]: - return [(generators.random_utf8_string(), generators.random_utf8_string()) for _ in range(generators.random_int(1, 10))] - + return [ + (generators.random_utf8_string(), generators.random_utf8_string()) + for _ in range(generators.random_int(1, 10)) + ] + return None @@ -139,13 +147,13 @@ class RestStruct: def as_dict(self, **kwargs) -> typing.Dict[str, typing.Any]: # Use kwargs to override values - res = {k: kwargs.get(k, getattr(self, k)) for k in self.__annotations__} + res = {k: kwargs.get(k, getattr(self, k)) for k in self.__annotations__} # pylint: disable=no-member # Remove None values for optional fields return { k: v for k, v in res.items() if v is not None - or self.__annotations__[k] + or self.__annotations__[k] # pylint: disable=no-member not in ( typing.Optional[str], typing.Optional[bool], diff --git a/server/src/tests/utils/rest/assertions.py b/server/src/tests/utils/rest/assertions.py index 22c06977a..e034f0b77 100644 --- a/server/src/tests/utils/rest/assertions.py +++ b/server/src/tests/utils/rest/assertions.py @@ -32,8 +32,7 @@ import logging import typing from uds import models -from uds.core.auths.user import User as aUser -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from .. import ensure_data @@ -86,7 +85,7 @@ def assertUserIs( # Compare password if compare_password: - if not cryptoManager().checkHash(compare_to['password'], user.password): + if not CryptoManager().checkHash(compare_to['password'], user.password): logger.info( 'User password do not match: %s != %s', user.password, diff --git a/server/src/tests/utils/rest/test.py b/server/src/tests/utils/rest/test.py index d23e78cbb..3564a9c2e 100644 --- a/server/src/tests/utils/rest/test.py +++ b/server/src/tests/utils/rest/test.py @@ -28,19 +28,19 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import logging import typing from uds import models from uds.core.util import log +from uds.REST.handlers import AUTH_TOKEN_HEADER + from .. import test, generators, rest, constants from ...fixtures import ( authenticators as authenticators_fixtures, services as services_fixtures, ) -from uds.REST.handlers import AUTH_TOKEN_HEADER NUMBER_OF_ITEMS_TO_CREATE = 4 @@ -91,10 +91,10 @@ class RESTTestCase(test.UDSTransactionTestCase): ) for user in self.users: - log.doLog(user, log.DEBUG, f'Debug Log for {user.name}') - log.doLog(user, log.INFO, f'Info Log for {user.name}') - log.doLog(user, log.WARNING, f'Warning Log for {user.name}') - log.doLog(user, log.ERROR, f'Error Log for {user.name}') + log.doLog(user, log.LogLevel.DEBUG, f'Debug Log for {user.name}') + log.doLog(user, log.LogLevel.INFO, f'Info Log for {user.name}') + log.doLog(user, log.LogLevel.WARNING, f'Warning Log for {user.name}') + log.doLog(user, log.LogLevel.ERROR, f'Error Log for {user.name}') self.provider = services_fixtures.createProvider() diff --git a/server/src/tests/utils/test.py b/server/src/tests/utils/test.py index 4943b1ccf..3844ea8ff 100644 --- a/server/src/tests/utils/test.py +++ b/server/src/tests/utils/test.py @@ -53,14 +53,9 @@ class UDSHttpResponse(HttpResponse): super().__init__(content, *args, **kwargs) self.content = content - def json(self) -> typing.Any: - return super().json() # type: ignore - class UDSClientMixin: - headers: typing.Dict[str, str] = { - 'HTTP_USER_AGENT': 'Testing user agent', - } + uds_headers: typing.Dict[str, str] ip_version: int = 4 def initialize(self): @@ -73,18 +68,21 @@ class UDSClientMixin: 'django.contrib.messages.middleware.MessageMiddleware', 'uds.middleware.request.GlobalRequestMiddleware', ] + self.uds_headers = { + 'HTTP_USER_AGENT': 'Testing user agent', + } # Update settings security options settings.RSA_KEY = '-----BEGIN PRIVATE KEY-----\nMIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDcANi/08cnpn04\njKW/o2G1k4SIa6dJks8DmT4MQHOWqYC46YSIIPzqGoBPcvkbDSPSFBnByo3HhMY+\nk4JHc9SUwEmHSJWDCHjt7XSXX/ryqH0QQIJtSjk9Bc+GkOU24mnbITiw7ORjp7VN\nvgFdFhjVsZM/NjX/6Y9DoCPC1mGj0O9Dd4MfCsNwUxRhhR6LdrEnpRUSVW0Ksxbz\ncTfpQjdFr86+1BeUbzqN2HDcEGhvioj+0lGPXcOZoRNYU16H7kjLNP+o+rC7f/q/\nfoOYLzDSkmzePbcG+g0Hv7K7fuLus05ZWjupOmJA9hytB1BIF4p5f4ewl05Fx2Zj\nG2LneO2fAgMBAAECggEBANDimOnh2TkDceeMWx+OsAooC3E/zbEkjBudl3UoiNcn\nD0oCpkxeDeT0zpkgz/ZoTnd7kE0Y1e73WQc3JT5UcyXdQLMLLrIgDDnT+Jx1jB5z\n7XLN3UiJbblL2BOrZYbsCJf/fgU2l08rgBBVdJP+lAvps6YUAcd+6gDKfsnSpRhU\nWBHLZde7l6vUJ2OK9ZmHaghF5E8Xx918OSUKFJfGTYL5JLTb/scdl8vQse1quWC1\nk48PPXK10vOFvYWonQpRb2cOK/PPjPXPNWzcQyQY9D1iOeFvRyLqOXYE/ZY+qDe2\nHdPGrkl67yz01nzepkWWg/ZNbMXeZZyOnZm0aXtOxtkCgYEA/Qz3mescgwrt67yh\nFrbXjUqiVf2IpbNt88CUcbY0r1EdTA9OMtOtPYNvfpyRIRfDaZJ1zAdh3CZ2/hTm\ng+VUtseKnUDCi0xIBKX3V2O8sryWt2KStTnTo6JP0T47yXvmaRu5cutgoaD9SK+r\nN5vg1D2gNLmsT8uJh1Bl/yWGC4sCgYEA3pFGgAmiywsvmsddkI+LujoQVTiqkfFg\nMHHsJFOZlhYO83g49Q11pcQ70ukT6e89Ggwy///+z19p8jJ+wGqQWQLsM6eO1utg\nnJ8wMTwk8tOEm9MnWnnWhtG9KWcgkmwOVQiesJdWa1xOqsBKGchUkugmFycKNsiG\nHUbogbJ0OL0CgYBVLIcuxKdNKGGaxlwGVDbLdQKdJQBYncN1ly2f9K9ZD1loH4K3\nsu4N1W6y1Co5VFFO+KAzs4xp2HyW2xwX6xoPh6yNb53L2zombmKJhKWgF8A3K7Or\n0jH9UwXArUzcbZrJaC6MktNss85tJ8vepNYROkjxVkm8dgrtg89BCTVMLwKBgQCW\nSSh+uoL3cdUyQV63h4ZFOIHg2cOrin52F+bpXJ3/z2NHGa30IqOHTGtM7l+o/geX\nOBeT72tC4d2rUlduXEaeJDAUbRcxnnx9JayoAkG8ygDoK3uOR2kJXkTJ2T4QQPCo\nkIp/GaGcGxdviyo+IJyjGijmR1FJTrvotwG22iZKTQKBgQCIh50Dz0/rqZB4Om5g\nLLdZn1C8/lOR8hdK9WUyPHZfJKpQaDOlNdiy9x6xD6+uIQlbNsJhlDbOudHDurfI\nghGbJ1sy1FUloP+V3JAFS88zIwrddcGEso8YMFMCE1fH2/q35XGwZEnUq7ttDaxx\nHmTQ2w37WASIUgCl2GhM25np0Q==\n-----END PRIVATE KEY-----\n' settings.CERTIFICATE = '-----BEGIN CERTIFICATE-----\nMIICzTCCAjYCCQCOUQEWpuEa3jANBgkqhkiG9w0BAQUFADCBqjELMAkGA1UEBhMC\nRVMxDzANBgNVBAgMBk1hZHJpZDEUMBIGA1UEBwwLQWxjb3Jjw4PCs24xHTAbBgNV\nBAoMFFZpcnR1YWwgQ2FibGUgUy5MLlUuMRQwEgYDVQQLDAtEZXZlbG9wbWVudDEY\nMBYGA1UEAwwPQWRvbGZvIEfDg8KzbWV6MSUwIwYJKoZIhvcNAQkBFhZhZ29tZXpA\ndmlydHVhbGNhYmxlLmVzMB4XDTEyMDYyNTA0MjM0MloXDTEzMDYyNTA0MjM0Mlow\ngaoxCzAJBgNVBAYTAkVTMQ8wDQYDVQQIDAZNYWRyaWQxFDASBgNVBAcMC0FsY29y\nY8ODwrNuMR0wGwYDVQQKDBRWaXJ0dWFsIENhYmxlIFMuTC5VLjEUMBIGA1UECwwL\nRGV2ZWxvcG1lbnQxGDAWBgNVBAMMD0Fkb2xmbyBHw4PCs21lejElMCMGCSqGSIb3\nDQEJARYWYWdvbWV6QHZpcnR1YWxjYWJsZS5lczCBnzANBgkqhkiG9w0BAQEFAAOB\njQAwgYkCgYEA35iGyHS/GVdWk3n9kQ+wsCLR++jd9Vez/s407/natm8YDteKksA0\nMwIvDAX722blm8PUya2NOlnum8KdyUPDOq825XERDlsIA+sTd6lb1c7w44qZ/pb+\n68mhXoRx2VJsu//+zhBkaQ1/KcugeHa4WLRIH35YLxdQDxrXS1eQWccCAwEAATAN\nBgkqhkiG9w0BAQUFAAOBgQAk+fJPpY+XvUsxR2A4SaQ8TGnE2x4PtpwCrCVzKEU9\nW2ugdXvysxkHbib3+JdA6s+lJjHs5HiMZPo/ak8adEKke+d10EU5YcUaJRRUpStY\nqQHziaqOl5Hgi75Kjskq6+tCU0Iui+s9pBg0V6y1AQsCmH2xFs7t1oEOGRFVarfF\n4Q==\n-----END CERTIFICATE-----' def add_header(self, name: str, value: str): - self.headers[name] = value + self.uds_headers[name] = value def set_user_agent(self, user_agent: typing.Optional[str] = None): user_agent = user_agent or '' # Add 'HTTP_USER_AGENT' header - self.headers['HTTP_USER_AGENT'] = user_agent + self.uds_headers['HTTP_USER_AGENT'] = user_agent def enable_ipv4(self): self.ip_version = 4 @@ -121,7 +119,7 @@ class UDSClient(UDSClientMixin, Client): # Copy request dict request = request.copy() # Add headers - request.update(self.headers) + request.update(self.uds_headers) return super().request(**request) def get(self, *args, **kwargs) -> 'UDSHttpResponse': @@ -176,9 +174,10 @@ class UDSAsyncClient(UDSClientMixin, AsyncClient): # Copy request dict request = request.copy() # Add headers - request.update(self.headers) + request.update(self.uds_headers) return await super().request(**request) + # pylint: disable=invalid-overridden-method async def get(self, *args, **kwargs) -> 'UDSHttpResponse': self.append_remote_addr(kwargs) return typing.cast('UDSHttpResponse', await super().get(*args, **kwargs)) @@ -187,6 +186,7 @@ class UDSAsyncClient(UDSClientMixin, AsyncClient): # compose url return await self.get(self.compose_rest_url(method), *args, **kwargs) + # pylint: disable=invalid-overridden-method async def post(self, *args, **kwargs) -> 'UDSHttpResponse': self.append_remote_addr(kwargs) return typing.cast('UDSHttpResponse', await super().post(*args, **kwargs)) @@ -195,6 +195,7 @@ class UDSAsyncClient(UDSClientMixin, AsyncClient): kwargs['content_type'] = kwargs.get('content_type', 'application/json') return await self.post(self.compose_rest_url(method), *args, **kwargs) + # pylint: disable=invalid-overridden-method async def put(self, *args, **kwargs) -> 'UDSHttpResponse': kwargs['content_type'] = kwargs.get('content_type', 'application/json') return typing.cast('UDSHttpResponse', await super().put(*args, **kwargs)) @@ -203,6 +204,7 @@ class UDSAsyncClient(UDSClientMixin, AsyncClient): kwargs['content_type'] = kwargs.get('content_type', 'application/json') return await self.put(self.compose_rest_url(method), *args, **kwargs) + # pylint: disable=invalid-overridden-method async def delete(self, *args, **kwargs) -> 'UDSHttpResponse': self.append_remote_addr(kwargs) return typing.cast('UDSHttpResponse', await super().delete(*args, **kwargs)) @@ -247,6 +249,7 @@ class UDSTransactionTestCase(UDSTestCaseMixin, TransactionTestCase): setupClass(cls) +# pylint: disable=unused-argument def setupClass( cls: typing.Union[typing.Type[UDSTestCase], typing.Type[UDSTransactionTestCase]] ) -> None: diff --git a/server/src/tests/web/user/test_login_logout.py b/server/src/tests/web/user/test_login_logout.py index 1933a5404..b3b5ea2fc 100644 --- a/server/src/tests/web/user/test_login_logout.py +++ b/server/src/tests/web/user/test_login_logout.py @@ -33,6 +33,7 @@ import typing from django.urls import reverse +from uds import models from uds.core.util.config import GlobalConfig from ...utils.web import test @@ -41,8 +42,6 @@ from ...fixtures import authenticators as fixtures_authenticators if typing.TYPE_CHECKING: from django.http import HttpResponse -from uds import models - class WebLoginLogoutTest(test.WEBTestCase): """ @@ -98,7 +97,8 @@ class WebLoginLogoutTest(test.WEBTestCase): # Ensures a couple of logs are created for every operation # Except for root, that has no user associated on db if up[0] is not root and up[1] is not rootpass: # root user is last one - self.assertEqual(models.Log.objects.count(), num * 4) + # 5 = 4 audit logs + 1 system log (auth.log) + self.assertEqual(models.Log.objects.count(), num * 5) # Ensure web login for super user is disabled and that the root login fails GlobalConfig.SUPER_USER_ALLOW_WEBACCESS.set(False) @@ -122,7 +122,7 @@ class WebLoginLogoutTest(test.WEBTestCase): response = self.do_login(user.name, user.name, user.manager.uuid) self.assertInvalidLogin(response) - self.assertEqual(models.Log.objects.count(), 2) + self.assertEqual(models.Log.objects.count(), 4) user = fixtures_authenticators.createUsers( fixtures_authenticators.createAuthenticator(), @@ -132,7 +132,7 @@ class WebLoginLogoutTest(test.WEBTestCase): response = self.do_login(user.name, user.name, user.manager.uuid, False) self.assertInvalidLogin(response) - self.assertEqual(models.Log.objects.count(), 4) + self.assertEqual(models.Log.objects.count(), 8) user = fixtures_authenticators.createUsers( fixtures_authenticators.createAuthenticator(), @@ -142,7 +142,7 @@ class WebLoginLogoutTest(test.WEBTestCase): response = self.do_login(user.name, user.name, user.manager.uuid) self.assertInvalidLogin(response) - self.assertEqual(models.Log.objects.count(), 6) + self.assertEqual(models.Log.objects.count(), 12) def test_login_invalid_user(self): user = fixtures_authenticators.createUsers( @@ -153,7 +153,8 @@ class WebLoginLogoutTest(test.WEBTestCase): self.assertInvalidLogin(response) # Invalid password log & access denied, in auth and user log - self.assertEqual(models.Log.objects.count(), 4) + # + 2 system logs (auth.log), one for each failed login + self.assertEqual(models.Log.objects.count(), 6) user = fixtures_authenticators.createUsers( fixtures_authenticators.createAuthenticator(), @@ -163,7 +164,7 @@ class WebLoginLogoutTest(test.WEBTestCase): response = self.do_login(user.name, 'wrong password', user.manager.uuid) self.assertInvalidLogin(response) - self.assertEqual(models.Log.objects.count(), 8) + self.assertEqual(models.Log.objects.count(), 12) user = fixtures_authenticators.createUsers( fixtures_authenticators.createAuthenticator(), @@ -173,4 +174,4 @@ class WebLoginLogoutTest(test.WEBTestCase): response = self.do_login(user.name, 'wrong password', user.manager.uuid) self.assertInvalidLogin(response) - self.assertEqual(models.Log.objects.count(), 12) + self.assertEqual(models.Log.objects.count(), 18) diff --git a/server/src/uds/REST/dispatcher.py b/server/src/uds/REST/dispatcher.py index 211a48110..a1e57ab35 100644 --- a/server/src/uds/REST/dispatcher.py +++ b/server/src/uds/REST/dispatcher.py @@ -36,7 +36,6 @@ import traceback from django import http from django.utils.decorators import method_decorator -from django.utils.translation import gettext as _ from django.views.decorators.csrf import csrf_exempt from django.views.generic.base import View @@ -92,7 +91,9 @@ class Dispatcher(View): service = Dispatcher.services full_path_lst: typing.List[str] = [] # Guess content type from content type header (post) or ".xxx" to method - content_type: str = request.META.get('CONTENT_TYPE', 'application/json').split(';')[0] + content_type: str = request.META.get('CONTENT_TYPE', 'application/json').split( + ';' + )[0] while path: clean_path = path[0] @@ -112,13 +113,15 @@ class Dispatcher(View): logger.debug("REST request: %s (%s)", full_path, content_type) # Here, service points to the path and the value of '' is the handler - cls: typing.Optional[typing.Type[Handler]] = service[''] # Get "root" class, that is stored on + cls: typing.Optional[typing.Type[Handler]] = service[ + '' + ] # Get "root" class, that is stored on if not cls: return http.HttpResponseNotFound( 'Method not found', content_type="text/plain" ) - processor = processors.available_processors_mime_dict .get( + processor = processors.available_processors_mime_dict.get( content_type, processors.default_processor )(request) @@ -144,9 +147,9 @@ class Dispatcher(View): logger.debug('Path: %s', full_path) logger.debug('Error: %s', e) - log.log_operation(handler, 500, log.ERROR) + log.logOperation(handler, 500, log.LogLevel.ERROR) return http.HttpResponseServerError( - 'Invalid parameters invoking {0}: {1}'.format(full_path, e), + f'Invalid parameters invoking {full_path}: {e}', content_type="text/plain", ) except AttributeError: @@ -154,17 +157,17 @@ class Dispatcher(View): for n in ['get', 'post', 'put', 'delete']: if hasattr(handler, n): allowedMethods.append(n) - log.log_operation(handler, 405, log.ERROR) + log.logOperation(handler, 405, log.LogLevel.ERROR) return http.HttpResponseNotAllowed( allowedMethods, content_type="text/plain" ) except AccessDenied: - log.log_operation(handler, 403, log.ERROR) + log.logOperation(handler, 403, log.LogLevel.ERROR) return http.HttpResponseForbidden( 'access denied', content_type="text/plain" ) except Exception: - log.log_operation(handler, 500, log.ERROR) + log.logOperation(handler, 500, log.LogLevel.ERROR) logger.exception('error accessing attribute') logger.debug('Getting attribute %s for %s', http_method, full_path) return http.HttpResponseServerError( @@ -174,7 +177,7 @@ class Dispatcher(View): # Invokes the handler's operation, add headers to response and returns try: response = operation() - + if not handler.raw: # Raw handlers will return an HttpResponse Object response = processor.getResponse(response) # Set response headers @@ -182,33 +185,33 @@ class Dispatcher(View): for k, val in handler.headers().items(): response[k] = val - log.log_operation(handler, response.status_code, log.INFO) + log.logOperation(handler, response.status_code, log.LogLevel.INFO) return response except RequestError as e: - log.log_operation(handler, 400, log.ERROR) + log.logOperation(handler, 400, log.LogLevel.ERROR) return http.HttpResponseBadRequest(str(e), content_type="text/plain") except ResponseError as e: - log.log_operation(handler, 500, log.ERROR) + log.logOperation(handler, 500, log.LogLevel.ERROR) return http.HttpResponseServerError(str(e), content_type="text/plain") except NotSupportedError as e: - log.log_operation(handler, 501, log.ERROR) + log.logOperation(handler, 501, log.LogLevel.ERROR) return http.HttpResponseBadRequest(str(e), content_type="text/plain") except AccessDenied as e: - log.log_operation(handler, 403, log.ERROR) + log.logOperation(handler, 403, log.LogLevel.ERROR) return http.HttpResponseForbidden(str(e), content_type="text/plain") except NotFound as e: - log.log_operation(handler, 404, log.ERROR) + log.logOperation(handler, 404, log.LogLevel.ERROR) return http.HttpResponseNotFound(str(e), content_type="text/plain") except HandlerError as e: - log.log_operation(handler, 500, log.ERROR) + log.logOperation(handler, 500, log.LogLevel.ERROR) return http.HttpResponseBadRequest(str(e), content_type="text/plain") except Exception as e: - log.log_operation(handler, 500, log.ERROR) + log.logOperation(handler, 500, log.LogLevel.ERROR) # Get ecxeption backtrace trace_back = traceback.format_exc() logger.error('Exception processing request: %s', full_path) for i in trace_back.splitlines(): - logger.error(f'* {i}') + logger.error('* %s', i) return http.HttpResponseServerError(str(e), content_type="text/plain") @@ -249,9 +252,8 @@ class Dispatcher(View): it register all subclases of Handler. (In fact, it looks for packages inside "methods" package, child of this) """ logger.info('Initializing REST Handlers') - # Our parent module "REST", because we are in "dispatcher" - modName = __name__[:__name__.rfind('.')] + modName = __name__[: __name__.rfind('.')] # Register all subclasses of Handler modfinder.dynamicLoadAndRegisterPackages( @@ -262,7 +264,5 @@ class Dispatcher(View): packageName='methods', ) - return - Dispatcher.initialize() diff --git a/server/src/uds/REST/handlers.py b/server/src/uds/REST/handlers.py index e0c43a79a..fe5cad009 100644 --- a/server/src/uds/REST/handlers.py +++ b/server/src/uds/REST/handlers.py @@ -40,7 +40,7 @@ from uds.core.util.config import GlobalConfig from uds.core.auths.auth import getRootUser from uds.core.util import net from uds.models import Authenticator, User -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from .exceptions import AccessDenied @@ -51,7 +51,9 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) -AUTH_TOKEN_HEADER: typing.Final[str] = 'HTTP_X_AUTH_TOKEN' # nosec: this is not a password +AUTH_TOKEN_HEADER: typing.Final[ + str +] = 'HTTP_X_AUTH_TOKEN' # nosec: this is not a password class Handler: @@ -102,9 +104,8 @@ class Handler: method: str, params: typing.MutableMapping[str, typing.Any], *args: str, - **kwargs + **kwargs, ): - logger.debug( 'Data: %s %s %s', self.__class__, self.needs_admin, self.authenticated ) @@ -112,9 +113,7 @@ class Handler: self.needs_admin or self.needs_staff ) and not self.authenticated: # If needs_admin, must also be authenticated raise Exception( - 'class {} is not authenticated but has needs_admin or needs_staff set!!'.format( - self.__class__ - ) + f'class {self.__class__} is not authenticated but has needs_admin or needs_staff set!!' ) self._request = request @@ -153,7 +152,6 @@ class Handler: else: self._user = User() # Empty user for non authenticated handlers - def headers(self) -> typing.Dict[str, str]: """ Returns the headers of the REST request (all) @@ -185,6 +183,27 @@ class Handler: except Exception: # nosec: intentionally ingoring exception pass # If not found, just ignore it + @property + def request(self) -> 'ExtendedHttpRequestWithUser': + """ + Returns the request object + """ + return self._request + + @property + def params(self) -> typing.Any: + """ + Returns the params object + """ + return self._params + + @property + def args(self) -> typing.Tuple[str, ...]: + """ + Returns the args object + """ + return self._args + # Auth related def getAuthToken(self) -> typing.Optional[str]: """ @@ -217,7 +236,9 @@ class Handler: staff_member = True # Make admins also staff members :-) # crypt password and convert to base64 - passwd = codecs.encode(cryptoManager().symCrypt(password, scrambler), 'base64').decode() + passwd = codecs.encode( + CryptoManager().symCrypt(password, scrambler), 'base64' + ).decode() session['REST'] = { 'auth': id_auth, @@ -314,7 +335,7 @@ class Handler: return net.contains( GlobalConfig.ADMIN_TRUSTED_SOURCES.get(True), self._request.ip ) - except Exception as e: + except Exception: logger.warning( 'Error checking truted ADMIN source: "%s" does not seems to be a valid network string. Using Unrestricted access.', GlobalConfig.ADMIN_TRUSTED_SOURCES.get(), @@ -368,4 +389,4 @@ class Handler: for name in names: if name in self._params: return self._params[name] - return '' \ No newline at end of file + return '' diff --git a/server/src/uds/REST/log.py b/server/src/uds/REST/log.py index 936bd61e6..22c788817 100644 --- a/server/src/uds/REST/log.py +++ b/server/src/uds/REST/log.py @@ -32,15 +32,10 @@ Author: Adolfo Gómez, dkmaster at dkmon dot com import typing from uds import models -from uds.core.util.log import ( - REST, - OWNER_TYPE_AUDIT, - DEBUG, - INFO, - WARNING, - ERROR, - CRITICAL, -) + +# Import for REST using this module can access constants easily +# pylint: disable=unused-import +from uds.core.util.log import LogLevel, LogSource, doLog if typing.TYPE_CHECKING: from .handlers import Handler @@ -53,6 +48,7 @@ if typing.TYPE_CHECKING: UUID_REPLACER = ( ('providers', models.Provider), ('services', models.Service), + ('servicespools', models.ServicePool), ('users', models.User), ('groups', models.Group), ) @@ -68,14 +64,14 @@ def replacePath(path: str) -> str: uuid = path.split(f'/{type}/')[1].split('/')[0] name = model.objects.get(uuid=uuid).name # type: ignore path = path.replace(uuid, f'[{name}]') - except Exception: # nosec: intentionally broad exception + except Exception: # nosec: intentionally broad exception pass return path -def log_operation( - handler: typing.Optional['Handler'], response_code: int, level: int = INFO +def logOperation( + handler: typing.Optional['Handler'], response_code: int, level: LogLevel = LogLevel.INFO ): """ Logs a request @@ -83,7 +79,7 @@ def log_operation( if not handler: return # Nothing to log - path = handler._request.path + path = handler.request.path # If a common request, and no error, we don't log it because it's useless and a waste of resources if response_code < 400 and any( @@ -93,15 +89,13 @@ def log_operation( path = replacePath(path) - username = handler._request.user.pretty_name if handler._request.user else 'Unknown' - # Global log is used without owner nor type - models.Log.objects.create( - owner_id=0, - owner_type=OWNER_TYPE_AUDIT, - created=models.getSqlDatetime(), + username = handler.request.user.pretty_name if handler.request.user else 'Unknown' + doLog( + None, level=level, - source=REST, - data=f'{handler._request.ip} {username}: [{handler._request.method}/{response_code}] {path}'[ + message=f'{handler.request.ip}[{username}]: [{handler.request.method}/{response_code}] {path}'[ :4096 ], + source=LogSource.REST, + avoidDuplicates=False, ) diff --git a/server/src/uds/REST/methods/actor_token.py b/server/src/uds/REST/methods/actor_token.py index 25125d697..6d76ecce1 100644 --- a/server/src/uds/REST/methods/actor_token.py +++ b/server/src/uds/REST/methods/actor_token.py @@ -39,6 +39,7 @@ from uds.models import ActorToken from uds.REST.exceptions import RequestError, NotFound from uds.REST.model import ModelHandler, OK from uds.core.util import permissions +from uds.core.util.log import LogLevel logger = logging.getLogger(__name__) @@ -64,18 +65,18 @@ class ActorTokens(ModelHandler): def item_as_dict(self, item: ActorToken) -> typing.Dict[str, typing.Any]: return { 'id': item.token, - 'name': _('Token isued by {} from {}').format( + 'name': str(_('Token isued by {} from {}')).format( item.username, item.hostname or item.ip ), 'stamp': item.stamp, 'username': item.username, 'ip': item.ip, - 'host': '{} - {}'.format(item.ip, item.mac), + 'host': f'{item.ip} - {item.mac}', 'hostname': item.hostname, 'pre_command': item.pre_command, 'post_command': item.post_command, 'runonce_command': item.runonce_command, - 'log_level': ['DEBUG', 'INFO', 'ERROR', 'FATAL'][item.log_level % 4], + 'log_level': LogLevel.fromActorLevel(item.log_level).name # ['DEBUG', 'INFO', 'ERROR', 'FATAL'][item.log_level % 4], } def delete(self) -> str: @@ -92,6 +93,6 @@ class ActorTokens(ModelHandler): try: self.model.objects.get(token=self._args[0]).delete() except self.model.DoesNotExist: - raise NotFound('Element do not exists') + raise NotFound('Element do not exists') from None return OK diff --git a/server/src/uds/REST/methods/actor_v3.py b/server/src/uds/REST/methods/actor_v3.py index 6fae28766..16cd7cc55 100644 --- a/server/src/uds/REST/methods/actor_v3.py +++ b/server/src/uds/REST/methods/actor_v3.py @@ -33,23 +33,27 @@ import time import logging import typing import functools +import enum from uds.models import ( - getSqlDatetimeAsUnix, - getSqlDatetime, ActorToken, UserService, Service, TicketStore, ) +from uds.core.util.model import getSqlDatetimeAsUnix, getSqlDatetime + + # from uds.core import VERSION -from uds.core.managers import userServiceManager, cryptoManager +from uds.core.managers.user_service import UserServiceManager +from uds.core.managers.crypto import CryptoManager from uds.core import osmanagers -from uds.core.util import log, certs +from uds.core.util import log, security from uds.core.util.state import State from uds.core.util.cache import Cache from uds.core.util.config import GlobalConfig +from uds.core import exceptions from uds.models.service import ServiceTokenAlias from ..handlers import Handler @@ -70,12 +74,32 @@ UNMANAGED = 'unmanaged' # matches the definition of UDS Actors OFC cache = Cache('actorv3') -class BlockAccess(Exception): +class BlockAccess(exceptions.UDSException): pass +class NotifyActionType(enum.StrEnum): + LOGIN = 'login' + LOGOUT = 'logout' + DATA = 'data' + + @staticmethod + def valid_names() -> typing.List[str]: + return [e.value for e in NotifyActionType] + + # Helpers def fixIdsList(idsList: typing.List[str]) -> typing.List[str]: + """ + Params: + idsList: List of ids to fix + + Returns: + List of ids with both upper and lower case + + Comment: + Due to database case sensitiveness, we need to check for both upper and lower case + """ return list(set([i.upper() for i in idsList] + [i.lower() for i in idsList])) @@ -107,7 +131,7 @@ def clearIfSuccess(func: typing.Callable) -> typing.Callable: result = func( *args, **kwargs ) # If raises any exception, it will be raised and we will not clear the counter - clearFailedIp(_self._request) + clearFailedIp(_self._request) # pylint: disable=protected-access return result return wrapper @@ -133,7 +157,7 @@ class ActorV3Action(Handler): @staticmethod def setCommsUrl(userService: UserService, ip: str, port: int, secret: str): - userService.setCommsUrl('https://{}:{}/actor/{}'.format(ip, port, secret)) + userService.setCommsUrl(f'https://{ip}:{port}/actor/{secret}') def getUserService(self) -> UserService: ''' @@ -143,7 +167,7 @@ class ActorV3Action(Handler): return UserService.objects.get(uuid=self._params['token']) except UserService.DoesNotExist: logger.error('User service not found (params: %s)', self._params) - raise BlockAccess() + raise BlockAccess() from None def action(self) -> typing.MutableMapping[str, typing.Any]: return ActorV3Action.actorResult(error='Base action invoked') @@ -162,6 +186,46 @@ class ActorV3Action(Handler): raise AccessDenied('Access denied') + # Some helpers + def notifyService(self, action: NotifyActionType) -> None: + try: + # If unmanaged, use Service locator + service: 'services.Service' = Service.objects.get(token=self._params['token']).getInstance() + + # We have a valid service, now we can make notifications + + # Build the possible ids and make initial filter to match service + idsList = [x['ip'] for x in self._params['id']] + [x['mac'] for x in self._params['id']][:10] + + # ensure idsLists has upper and lower versions for case sensitive databases + idsList = fixIdsList(idsList) + + validId: typing.Optional[str] = service.getValidId(idsList) + + is_remote = self._params.get('session_type', '')[:4] in ('xrdp', 'RDP-') + + # Must be valid + if action in (NotifyActionType.LOGIN, NotifyActionType.LOGOUT): + if not validId: # For login/logout, we need a valid id + raise Exception() + # Notify Service that someone logged in/out + + if action == NotifyActionType.LOGIN: + # Try to guess if this is a remote session + service.processLogin(validId, remote_login=is_remote) + elif action == NotifyActionType.LOGOUT: + service.processLogout(validId, remote_login=is_remote) + elif action == NotifyActionType.DATA: + service.notifyData(validId, self._params['data']) + else: + raise Exception('Invalid action') + + # All right, service notified.. + except Exception as e: + # Log error and continue + logger.error('Error notifying service: %s (%s)', e, self._params) + raise BlockAccess() from None + class Test(ActorV3Action): """ @@ -176,9 +240,7 @@ class Test(ActorV3Action): if self._params.get('type') == UNMANAGED: Service.objects.get(token=self._params['token']) else: - ActorToken.objects.get( - token=self._params['token'] - ) # Not assigned, because only needs check + ActorToken.objects.get(token=self._params['token']) # Not assigned, because only needs check clearFailedIp(self._request) except Exception: # Increase failed attempts @@ -201,6 +263,7 @@ class Register(ActorV3Action): - run_once_command: comand to run just once after the actor is started. The actor will stop after this. The command is responsible to restart the actor. - log_level: log level for the actor + - custom: Custom actor data (i.e. cetificate and comms_url for LinxApps, maybe other for other services) """ @@ -223,24 +286,30 @@ class Register(ActorV3Action): actorToken.post_command = self._params['post_command'] actorToken.runonce_command = self._params['run_once_command'] actorToken.log_level = self._params['log_level'] + if 'custom' in self._params: + actorToken.custom = self._params['certificate'] actorToken.stamp = getSqlDatetime() actorToken.save() logger.info('Registered actor %s', self._params) except Exception: # Not found, create a new token - actorToken = ActorToken.objects.create( - username=self._user.pretty_name, - ip_from=self._request.ip, - ip=self._params['ip'], - ip_version=self._request.ip_version, - hostname=self._params['hostname'], - mac=self._params['mac'], - pre_command=self._params['pre_command'], - post_command=self._params['post_command'], - runonce_command=self._params['run_once_command'], - log_level=self._params['log_level'], - token=secrets.token_urlsafe(36), - stamp=getSqlDatetime(), - ) + kwargs = { + 'username': self._user.pretty_name, + 'ip_from': self._request.ip, + 'ip': self._params['ip'], + 'ip_version': self._request.ip_version, + 'hostname': self._params['hostname'], + 'mac': self._params['mac'], + 'pre_command': self._params['pre_command'], + 'post_command': self._params['post_command'], + 'runonce_command': self._params['run_once_command'], + 'log_level': self._params['log_level'], + 'token': secrets.token_urlsafe(36), + 'stamp': getSqlDatetime(), + } + if 'custom' in self._params: + kwargs['custom'] = self._params['custom'] + + actorToken = ActorToken.objects.create(**kwargs) return ActorV3Action.actorResult(actorToken.token) @@ -291,8 +360,13 @@ class Initialize(ActorV3Action): # Managed machines will not use this field (will return None) alias_token: typing.Optional[str] = None - initialization_result = ( - lambda own_token, unique_id, os, alias_token: ActorV3Action.actorResult( + def initialization_result( + own_token: typing.Optional[str], + unique_id: typing.Optional[str], + os: typing.Any, + alias_token: typing.Optional[str], + ) -> typing.MutableMapping[str, typing.Any]: + return ActorV3Action.actorResult( { 'own_token': own_token, 'unique_id': unique_id, @@ -300,7 +374,7 @@ class Initialize(ActorV3Action): 'alias_token': alias_token, } ) - ) + try: token = self._params['token'] # First, try to locate an user service providing this token. @@ -313,20 +387,16 @@ class Initialize(ActorV3Action): # If not found an alias, try to locate on service table # Not on alias token, try to locate on Service table - if not service: + if not service: service = typing.cast('Service', Service.objects.get(token=token)) # Locate an userService that belongs to this service and which # Build the possible ids and make initial filter to match service - idsList = [x['ip'] for x in self._params['id']] + [ - x['mac'] for x in self._params['id'] - ][:10] + idsList = [x['ip'] for x in self._params['id']] + [x['mac'] for x in self._params['id']][:10] dbFilter = UserService.objects.filter(deployed_service__service=service) else: # If not service provided token, use actor tokens - ActorToken.objects.get( - token=token - ) # Not assigned, because only needs check + ActorToken.objects.get(token=token) # Not assigned, because only needs check # Build the possible ids and make initial filter to match ANY userservice with provided MAC idsList = [i['mac'] for i in self._params['id'][:5]] dbFilter = UserService.objects.all() @@ -356,17 +426,12 @@ class Initialize(ActorV3Action): if service and not alias_token: # Is a service managed by UDS # Create a new alias for it, and save - alias_token = ( - cryptoManager().randomString(40) - ) # fix alias with new token + alias_token = CryptoManager().randomString(40) # fix alias with new token service.aliases.create(alias=alias_token) - - return initialization_result( - userService.uuid, userService.unique_id, osData, alias_token - ) + return initialization_result(userService.uuid, userService.unique_id, osData, alias_token) except (ActorToken.DoesNotExist, Service.DoesNotExist): - raise BlockAccess() + raise BlockAccess() from None class BaseReadyChange(ActorV3Action): @@ -415,10 +480,10 @@ class BaseReadyChange(ActorV3Action): if osManager: osManager.toReady(userService) - userServiceManager().notifyReadyFromOsManager(userService, '') + UserServiceManager().notifyReadyFromOsManager(userService, '') # Generates a certificate and send it to client. - privateKey, cert, password = certs.selfSignedCert(self._params['ip']) + privateKey, cert, password = security.selfSignedCert(self._params['ip']) # Store certificate with userService userService.setProperty('cert', cert) userService.setProperty('priv', privateKey) @@ -488,51 +553,7 @@ class Version(ActorV3Action): return ActorV3Action.actorResult() -class LoginLogout(ActorV3Action): - name = 'notused' # Not really important, this is not a "leaf" class and will not be directly available - - def notifyService(self, isLogin: bool) -> None: - try: - # If unmanaged, use Service locator - service: 'services.Service' = Service.objects.get( - token=self._params['token'] - ).getInstance() - - # We have a valid service, now we can make notifications - - # Build the possible ids and make initial filter to match service - idsList = [x['ip'] for x in self._params['id']] + [ - x['mac'] for x in self._params['id'] - ][:10] - - # ensure idsLists has upper and lower versions for case sensitive databases - idsList = fixIdsList(idsList) - - validId: typing.Optional[str] = service.getValidId(idsList) - - # Must be valid - if not validId: - raise Exception() - - # Recover Id Info from service and validId - # idInfo = service.recoverIdInfo(validId) - - # Notify Service that someone logged in/out - is_remote = self._params.get('session_type', '')[:4] in ('xrdp', 'RDP-') - if isLogin: - # Try to guess if this is a remote session - service.processLogin(validId, remote_login=is_remote) - else: - service.processLogout(validId, remote_login=is_remote) - - # All right, service notified.. - except Exception as e: - # Log error and continue - logger.error('Error notifying service: %s (%s)', e, self._params) - raise BlockAccess() - - -class Login(LoginLogout): +class Login(ActorV3Action): """ Notifies user logged id """ @@ -550,15 +571,9 @@ class Login(LoginLogout): # } @staticmethod - def process_login( - userService: UserService, username: str - ) -> typing.Optional[osmanagers.OSManager]: - osManager: typing.Optional[ - osmanagers.OSManager - ] = userService.getOsManagerInstance() - if ( - not userService.in_use - ): # If already logged in, do not add a second login (windows does this i.e.) + def process_login(userService: UserService, username: str) -> typing.Optional[osmanagers.OSManager]: + osManager: typing.Optional[osmanagers.OSManager] = userService.getOsManagerInstance() + if not userService.in_use: # If already logged in, do not add a second login (windows does this i.e.) osmanagers.OSManager.loggedIn(userService, username) return osManager @@ -572,18 +587,14 @@ class Login(LoginLogout): try: userService: UserService = self.getUserService() - osManager = Login.process_login( - userService, self._params.get('username') or '' - ) + osManager = Login.process_login(userService, self._params.get('username') or '') maxIdle = osManager.maxIdle() if osManager else None logger.debug('Max idle: %s', maxIdle) ip, hostname = userService.getConnectionSource() - session_id = ( - userService.initSession() - ) # creates a session for every login requested + session_id = userService.initSession() # creates a session for every login requested if osManager: # For os managed services, let's check if we honor deadline if osManager.ignoreDeadLine(): @@ -593,10 +604,12 @@ class Login(LoginLogout): else: # For non os manager machines, process deadline as always deadLine = userService.deployed_service.getDeadline() - except Exception: # If unamanaged host, lest do a bit more work looking for a service with the provided parameters... + except ( + Exception + ): # If unamanaged host, lest do a bit more work looking for a service with the provided parameters... if isManaged: raise - self.notifyService(isLogin=True) + self.notifyService(action=NotifyActionType.LOGIN) return ActorV3Action.actorResult( { @@ -609,7 +622,7 @@ class Login(LoginLogout): ) -class Logout(LoginLogout): +class Logout(ActorV3Action): """ Notifies user logged out """ @@ -617,23 +630,17 @@ class Logout(LoginLogout): name = 'logout' @staticmethod - def process_logout( - userService: UserService, username: str, session_id: str - ) -> None: + def process_logout(userService: UserService, username: str, session_id: str) -> None: """ This method is static so can be invoked from elsewhere """ - osManager: typing.Optional[ - osmanagers.OSManager - ] = userService.getOsManagerInstance() + osManager: typing.Optional[osmanagers.OSManager] = userService.getOsManagerInstance() # Close session # For compat, we have taken '' as "all sessions" userService.closeSession(session_id) - if ( - userService.in_use - ): # If already logged out, do not add a second logout (windows does this i.e.) + if userService.in_use: # If already logged out, do not add a second logout (windows does this i.e.) osmanagers.OSManager.loggedOut(userService, username) if osManager: if osManager.isRemovableOnLogout(userService): @@ -647,18 +654,18 @@ class Logout(LoginLogout): logger.debug('Args: %s, Params: %s', self._args, self._params) try: - userService: UserService = ( - self.getUserService() - ) # if not exists, will raise an error + userService: UserService = self.getUserService() # if not exists, will raise an error Logout.process_logout( userService, self._params.get('username') or '', self._params.get('session_id') or '', ) - except Exception: # If unamanaged host, lest do a bit more work looking for a service with the provided parameters... + except ( + Exception + ): # If unamanaged host, lest do a bit more work looking for a service with the provided parameters... if isManaged: raise - self.notifyService(isLogin=False) # Logout notification + self.notifyService(NotifyActionType.LOGOUT) # Logout notification return ActorV3Action.actorResult( 'notified' ) # Result is that we have not processed the logout in fact, but notified the service @@ -679,9 +686,9 @@ class Log(ActorV3Action): # Adjust loglevel to own, we start on 10000 for OTHER, and received is 0 for OTHER log.doLog( userService, - int(self._params['level']) + 10000, + log.LogLevel.fromInt(int(self._params['level']) + 10000), self._params['message'], - log.ACTOR, + log.LogSource.ACTOR, ) return ActorV3Action.actorResult('ok') @@ -699,16 +706,12 @@ class Ticket(ActorV3Action): try: # Simple check that token exists - ActorToken.objects.get( - token=self._params['token'] - ) # Not assigned, because only needs check + ActorToken.objects.get(token=self._params['token']) # Not assigned, because only needs check except ActorToken.DoesNotExist: - raise BlockAccess() # If too many blocks... + raise BlockAccess() from None # If too many blocks... try: - return ActorV3Action.actorResult( - TicketStore.get(self._params['ticket'], invalidate=True) - ) + return ActorV3Action.actorResult(TicketStore.get(self._params['ticket'], invalidate=True)) except TicketStore.DoesNotExist: return ActorV3Action.actorResult(error='Invalid ticket') @@ -741,9 +744,7 @@ class Unmanaged(ActorV3Action): # Build the possible ids and ask service if it recognizes any of it # If not recognized, will generate anyway the certificate, but will not be saved - idsList = [x['ip'] for x in self._params['id']] + [ - x['mac'] for x in self._params['id'] - ][:10] + idsList = [x['ip'] for x in self._params['id']] + [x['mac'] for x in self._params['id']][:10] validId: typing.Optional[str] = service.getValidId(idsList) # ensure idsLists has upper and lower versions for case sensitive databases @@ -772,16 +773,12 @@ class Unmanaged(ActorV3Action): # Try to infer the ip from the valid id (that could be an IP or a MAC) ip: str try: - ip = next( - x['ip'] - for x in self._params['id'] - if x['ip'] == validId or x['mac'] == validId - ) + ip = next(x['ip'] for x in self._params['id'] if validId in (x['ip'], x['mac'])) except StopIteration: ip = self._params['id'][0]['ip'] # Get first IP if no valid ip found # Generates a certificate and send it to client. - privateKey, certificate, password = certs.selfSignedCert(ip) + privateKey, certificate, password = security.selfSignedCert(ip) cert: typing.Dict[str, str] = { 'private_key': privateKey, 'server_certificate': certificate, @@ -817,21 +814,22 @@ class Notify(ActorV3Action): def get(self) -> typing.MutableMapping[str, typing.Any]: logger.debug('Args: %s, Params: %s', self._args, self._params) - if ( - 'action' not in self._params - or 'token' not in self._params - or self._params['action'] not in ('login', 'logout') - ): - # Requested login or logout - raise RequestError('Invalid parameters') + try: + action = NotifyActionType(self._params['action']) + token = self._params['token'] # pylint: disable=unused-variable # Just to check it exists + except Exception as e: + # Requested login, logout or whatever + raise RequestError('Invalid parameters') from e try: # Check block manually checkBlockedIp(self._request) # pylint: disable=protected-access - if 'action' == 'login': + if action == NotifyActionType.LOGIN: Login.action(typing.cast(Login, self)) - else: + elif action == NotifyActionType.LOGOUT: Logout.action(typing.cast(Logout, self)) + elif action == NotifyActionType.DATA: + self.notifyService(action) return ActorV3Action.actorResult('ok') except UserService.DoesNotExist: diff --git a/server/src/uds/REST/methods/authenticators.py b/server/src/uds/REST/methods/authenticators.py index 0288a5cb1..74c9ff023 100644 --- a/server/src/uds/REST/methods/authenticators.py +++ b/server/src/uds/REST/methods/authenticators.py @@ -50,7 +50,7 @@ from .users_groups import Users, Groups # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from django.db import models - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) @@ -154,7 +154,7 @@ class Authenticators(ModelHandler): raise Exception() # Not found except Exception as e: logger.info('Type not found: %s', e) - raise NotFound('type not found') + raise NotFound('type not found') from e def item_as_dict(self, item: Authenticator) -> typing.Dict[str, typing.Any]: type_ = item.getType() @@ -214,19 +214,16 @@ class Authenticators(ModelHandler): if type_ == 'user': return list(auth.searchUsers(term))[:limit] - else: - return list(auth.searchGroups(term))[:limit] + return list(auth.searchGroups(term))[:limit] except Exception as e: logger.exception('Too many results: %s', e) return [{'id': _('Too many results...'), 'name': _('Refine your query')}] # self.invalidResponseException('{}'.format(e)) def test(self, type_: str): - from uds.core.environment import Environment - authType = auths.factory().lookup(type_) if not authType: - raise self.invalidRequestException('Invalid type: {}'.format(type_)) + raise self.invalidRequestException(f'Invalid type: {type_}') dct = self._params.copy() dct['_request'] = self._request diff --git a/server/src/uds/REST/methods/calendarrules.py b/server/src/uds/REST/methods/calendarrules.py index 489c04583..583c70856 100644 --- a/server/src/uds/REST/methods/calendarrules.py +++ b/server/src/uds/REST/methods/calendarrules.py @@ -39,7 +39,7 @@ from django.db import IntegrityError from uds.models.calendar_rule import freqs, CalendarRule -from uds.models.util import getSqlDatetime +from uds.core.util.model import getSqlDatetime from uds.core.util import permissions from uds.core.util.model import processUuid @@ -59,7 +59,7 @@ class CalendarRules(DetailHandler): # pylint: disable=too-many-public-methods """ @staticmethod - def ruleToDict(item: CalendarRule, perm: int): + def ruleToDict(item: CalendarRule, perm: int) -> typing.Dict[str, typing.Any]: """ Convert a calRule db item to a dict for a rest response :param item: Rule item (db) @@ -80,18 +80,17 @@ class CalendarRules(DetailHandler): # pylint: disable=too-many-public-methods return retVal - def getItems(self, parent: 'Calendar', item: typing.Optional[str]): + def getItems(self, parent: 'Calendar', item: typing.Optional[str]) -> typing.Any: # Check what kind of access do we have to parent provider perm = permissions.getEffectivePermission(self._user, parent) try: if item is None: return [CalendarRules.ruleToDict(k, perm) for k in parent.rules.all()] - else: - k = parent.rules.get(uuid=processUuid(item)) - return CalendarRules.ruleToDict(k, perm) - except Exception: + k = parent.rules.get(uuid=processUuid(item)) + return CalendarRules.ruleToDict(k, perm) + except Exception as e: logger.exception('itemId %s', item) - raise self.invalidItemException() + raise self.invalidItemException() from e def getFields(self, parent: 'Calendar') -> typing.List[typing.Any]: return [ @@ -144,12 +143,12 @@ class CalendarRules(DetailHandler): # pylint: disable=too-many-public-methods calRule.__dict__.update(fields) calRule.save() except CalendarRule.DoesNotExist: - raise self.invalidItemException() - except IntegrityError: # Duplicate key probably - raise RequestError(_('Element already exists (duplicate key error)')) + raise self.invalidItemException() from None + except IntegrityError as e: # Duplicate key probably + raise RequestError(_('Element already exists (duplicate key error)')) from e except Exception as e: logger.exception('Saving calendar') - raise RequestError('incorrect invocation to PUT: {0}'.format(e)) + raise RequestError(f'incorrect invocation to PUT: {e}') from e def deleteItem(self, parent: 'Calendar', item: str) -> None: logger.debug('Deleting rule %s from %s', item, parent) @@ -158,9 +157,9 @@ class CalendarRules(DetailHandler): # pylint: disable=too-many-public-methods calRule.calendar.modified = getSqlDatetime() calRule.calendar.save() calRule.delete() - except Exception: + except Exception as e: logger.exception('Exception') - raise self.invalidItemException() + raise self.invalidItemException() from e def getTitle(self, parent: 'Calendar') -> str: try: diff --git a/server/src/uds/REST/methods/client.py b/server/src/uds/REST/methods/client.py index 64adcc292..051aa10a2 100644 --- a/server/src/uds/REST/methods/client.py +++ b/server/src/uds/REST/methods/client.py @@ -39,7 +39,8 @@ from uds.REST import RequestError from uds.models import TicketStore from uds.models import User from uds.web.util import errors -from uds.core.managers import cryptoManager, userServiceManager +from uds.core.managers.user_service import UserServiceManager +from uds.core.managers.crypto import CryptoManager from uds.core.util.config import GlobalConfig from uds.core.services.exceptions import ServiceNotReadyError from uds.core import VERSION as UDS_VERSION, REQUIRED_CLIENT_VERSION @@ -53,8 +54,6 @@ logger = logging.getLogger(__name__) CLIENT_VERSION = UDS_VERSION - - # Enclosed methods under /client path class Client(Handler): """ @@ -91,9 +90,10 @@ class Client(Handler): if errorCode != 0: # Reformat error so it is better understood by users # error += ' (code {0:04X})'.format(errorCode) - error = _( - 'Your service is being created. Please, wait while we complete it' - ) + ' ({}%)'.format(int(errorCode * 25)) + error = ( + _('Your service is being created. Please, wait while we complete it') + + f' ({int(errorCode)*25}%)' + ) res['error'] = error res['retryable'] = '1' if retryable else '0' @@ -111,8 +111,12 @@ class Client(Handler): def process(self, ticket: str, scrambler: str) -> typing.Dict[str, typing.Any]: userService: typing.Optional['UserService'] = None hostname = self._params.get('hostname', '') # Or if hostname is not included... + version = self._params.get('version', '0.0.0') srcIp = self._request.ip + if version < REQUIRED_CLIENT_VERSION: + return Client.result(error='Client version not supported.\n Please, upgrade it.') + # Ip is optional, if GlobalConfig.HONOR_CLIENT_IP_NOTIFY.getBool() is True: srcIp = self._params.get('ip', srcIp) @@ -140,7 +144,7 @@ class Client(Handler): userServiceInstance, transport, transportInstance, - ) = userServiceManager().getService( + ) = UserServiceManager().getService( self._request.user, self._request.os, self._request.ip, @@ -156,7 +160,7 @@ class Client(Handler): transport, transportInstance, ) - password = cryptoManager().symDecrpyt(data['password'], scrambler) + password = CryptoManager().symDecrpyt(data['password'], scrambler) # userService.setConnectionSource(srcIp, hostname) # Store where we are accessing from so we can notify Service if not ip: @@ -166,7 +170,7 @@ class Client(Handler): if not transportInstance: raise Exception('No transport instance!!!') - transport_script =transportInstance.getEncodedTransportScript( + transport_script = transportInstance.getEncodedTransportScript( userService, transport, ip, @@ -188,12 +192,8 @@ class Client(Handler): ) except ServiceNotReadyError as e: # Refresh ticket and make this retrayable - TicketStore.revalidate( - ticket, 20 - ) # Retry will be in at most 5 seconds, so 20 is fine :) - return Client.result( - error=errors.SERVICE_IN_PREPARATION, errorCode=e.code, retryable=True - ) + TicketStore.revalidate(ticket, 20) # Retry will be in at most 5 seconds, so 20 is fine :) + return Client.result(error=errors.SERVICE_IN_PREPARATION, errorCode=e.code, retryable=True) except Exception as e: logger.exception("Exception") return Client.result(error=str(e)) @@ -218,15 +218,20 @@ class Client(Handler): { 'availableVersion': CLIENT_VERSION, 'requiredVersion': REQUIRED_CLIENT_VERSION, - 'downloadUrl': self._request.build_absolute_uri( - reverse('page.client-download') - ), + 'downloadUrl': self._request.build_absolute_uri(reverse('page.client-download')), } ) - return match(self._args, - error, # In case of error, raises RequestError + return match( + self._args, + error, # In case of error, raises RequestError ((), noargs), # No args, return version (('test',), self.test), # Test request, returns "Correct" - (('', '',), self.process), # Process request, needs ticket and scrambler + ( + ( + '', + '', + ), + self.process, + ), # Process request, needs ticket and scrambler ) diff --git a/server/src/uds/REST/methods/config.py b/server/src/uds/REST/methods/config.py index 0bfd770b9..acf8e3c9f 100644 --- a/server/src/uds/REST/methods/config.py +++ b/server/src/uds/REST/methods/config.py @@ -43,14 +43,13 @@ logger = logging.getLogger(__name__) class Config(Handler): needs_admin = True # By default, staff is lower level needed - def get(self): - cfg: CfgConfig.Value - + def get(self) -> typing.Any: return CfgConfig.getConfigValues(self.is_admin()) - def put(self): + def put(self) -> typing.Any: for section, secDict in self._params.items(): for key, vals in secDict.items(): + logger.info('Updating config value %s.%s to %s by %s', section, key, vals['value'], self._user.name) CfgConfig.update(section, key, vals['value']) return 'done' diff --git a/server/src/uds/REST/methods/connection.py b/server/src/uds/REST/methods/connection.py index 71283aedc..93bedad6a 100644 --- a/server/src/uds/REST/methods/connection.py +++ b/server/src/uds/REST/methods/connection.py @@ -37,8 +37,8 @@ from uds.core.util.request import ExtendedHttpRequestWithUser from uds.REST import Handler from uds.REST import RequestError -from uds.core.managers import userServiceManager -from uds.core.managers import cryptoManager +from uds.core.managers.user_service import UserServiceManager +from uds.core.managers.crypto import CryptoManager from uds.core.services.exceptions import ServiceNotReadyError from uds.core.util.rest.tools import match from uds.web.util import errors, services @@ -76,7 +76,7 @@ class Connection(Handler): error = errors.errorString(error) error = str(error) # Ensure error is an string if errorCode != 0: - error += ' (code {0:04X})'.format(errorCode) + error += f' (code {errorCode:04X})' res['error'] = error res['retryable'] = '1' if retryable else '0' @@ -100,10 +100,10 @@ class Connection(Handler): ( ip, userService, - iads, - trans, + _, # iads, + _, #trans, itrans, - ) = userServiceManager().getService( # pylint: disable=unused-variable + ) = UserServiceManager().getService( # pylint: disable=unused-variable self._user, self._request.os, self._request.ip, @@ -132,18 +132,18 @@ class Connection(Handler): def script(self, idService: str, idTransport: str, scrambler: str, hostname: str) -> typing.Dict[str, typing.Any]: try: - res = userServiceManager().getService( + res = UserServiceManager().getService( self._user, self._request.os, self._request.ip, idService, idTransport ) logger.debug('Res: %s', res) ( ip, userService, - userServiceInstance, + _, # userServiceInstance, transport, transportInstance, ) = res # pylint: disable=unused-variable - password = cryptoManager().symDecrpyt(self.getValue('password'), scrambler) + password = CryptoManager().symDecrpyt(self.getValue('password'), scrambler) userService.setConnectionSource( self._request.ip, hostname @@ -172,14 +172,14 @@ class Connection(Handler): logger.exception("Exception") return Connection.result(error=str(e)) - def getTicketContent(self, ticketId: str) -> typing.Dict[str, typing.Any]: - return {} # TODO: use this for something? + def getTicketContent(self, ticketId: str) -> typing.Dict[str, typing.Any]: # pylint: disable=unused-argument + return {} def getUdsLink(self, idService: str, idTransport: str) -> typing.Dict[str, typing.Any]: # Returns the UDS link for the user & transport self._request.user = self._user # type: ignore - self._request._cryptedpass = self._session['REST']['password'] # type: ignore - self._request._scrambler = self._request.META['HTTP_SCRAMBLER'] # type: ignore + setattr(self._request, '_cryptedpass', self._session['REST']['password']) # type: ignore # pylint: disable=protected-access + setattr(self._request, '_scrambler', self._request.META['HTTP_SCRAMBLER']) # type: ignore # pylint: disable=protected-access linkInfo = services.enableService( self._request, idService=idService, idTransport=idTransport ) diff --git a/server/src/uds/REST/methods/meta_pools.py b/server/src/uds/REST/methods/meta_pools.py index 31b9afaec..984184dce 100644 --- a/server/src/uds/REST/methods/meta_pools.py +++ b/server/src/uds/REST/methods/meta_pools.py @@ -173,7 +173,7 @@ class MetaPools(ModelHandler): 'values': [gui.choiceImage(-1, '--------', DEFAULT_THUMB_BASE64)] + gui.sortedChoices( [ - gui.choiceImage(v.uuid, v.name, v.thumb64) + gui.choiceImage(v.uuid, v.name, v.thumb64) # type: ignore for v in Image.objects.all() ] ), @@ -188,7 +188,7 @@ class MetaPools(ModelHandler): 'values': [gui.choiceImage(-1, _('Default'), DEFAULT_THUMB_BASE64)] + gui.sortedChoices( [ - gui.choiceImage(v.uuid, v.name, v.thumb64) + gui.choiceImage(v.uuid, v.name, v.thumb64) # type: ignore for v in ServicePoolGroup.objects.all() ] ), diff --git a/server/src/uds/REST/methods/meta_service_pools.py b/server/src/uds/REST/methods/meta_service_pools.py index 026288531..bce7c06d4 100644 --- a/server/src/uds/REST/methods/meta_service_pools.py +++ b/server/src/uds/REST/methods/meta_service_pools.py @@ -110,12 +110,12 @@ class MetaServicesPool(DetailHandler): log.doLog( parent, - log.INFO, + log.LogLevel.INFO, ("Added" if uuid is None else "Modified") + " meta pool member {}/{}/{} by {}".format( pool.name, priority, enabled, self._user.pretty_name ), - log.ADMIN, + log.LogSource.ADMIN, ) return self.success() @@ -128,7 +128,7 @@ class MetaServicesPool(DetailHandler): member.delete() - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) class MetaAssignedService(DetailHandler): @@ -243,7 +243,7 @@ class MetaAssignedService(DetailHandler): else: raise self.invalidItemException(_('Item is not removable')) - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) # Only owner is allowed to change right now def saveItem(self, parent: MetaPool, item: typing.Optional[str]): @@ -276,4 +276,4 @@ class MetaAssignedService(DetailHandler): service.save() # Log change - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) diff --git a/server/src/uds/REST/methods/notifiers.py b/server/src/uds/REST/methods/notifiers.py index fea9ec93a..b11b505da 100644 --- a/server/src/uds/REST/methods/notifiers.py +++ b/server/src/uds/REST/methods/notifiers.py @@ -35,11 +35,10 @@ import typing from django.utils.translation import gettext_lazy as _, gettext from uds.core.environment import Environment -from uds.models import Notifier, NotificationLevel +from uds.models import Notifier, LogLevel from uds.core import messaging from uds.core.ui import gui from uds.core.util import permissions -from uds.core.managers import notifications from uds.REST.model import ModelHandler @@ -86,7 +85,7 @@ class Notifiers(ModelHandler): for field in [ { 'name': 'level', - 'values': [gui.choiceItem(i[0], i[1]) for i in NotificationLevel.all()], + 'values': [gui.choiceItem(i[0], i[1]) for i in LogLevel.interesting()], 'label': gettext('Level'), 'tooltip': gettext('Level of notifications'), 'type': gui.InputField.Types.CHOICE, diff --git a/server/src/uds/REST/methods/op_calendars.py b/server/src/uds/REST/methods/op_calendars.py index a393c2534..1ceb116a1 100644 --- a/server/src/uds/REST/methods/op_calendars.py +++ b/server/src/uds/REST/methods/op_calendars.py @@ -71,9 +71,9 @@ class AccessCalendars(DetailHandler): return AccessCalendars.as_dict( parent.calendarAccess.get(uuid=processUuid(item)) ) - except Exception: + except Exception as e: logger.exception('err: %s', item) - raise self.invalidItemException() + raise self.invalidItemException() from e def getTitle(self, parent: 'ServicePool'): return _('Access restrictions by calendar') @@ -96,8 +96,10 @@ class AccessCalendars(DetailHandler): access: str = self._params['access'].upper() if access not in (ALLOW, DENY): raise Exception() - except Exception: - raise self.invalidRequestException(_('Invalid parameters on request')) + except Exception as e: + raise self.invalidRequestException( + _('Invalid parameters on request') + ) from e priority = int(self._params['priority']) if uuid is not None: @@ -114,22 +116,17 @@ class AccessCalendars(DetailHandler): log.doLog( parent, - log.INFO, - "Added access calendar {}/{} by {}".format( - calendar.name, access, self._user.pretty_name - ), - log.ADMIN, + log.LogLevel.INFO, + f'{"Added" if uuid is None else "Updated"} access calendar {calendar.name}/{access} by {self._user.pretty_name}', + log.LogSource.ADMIN, ) def deleteItem(self, parent: 'ServicePool', item: str) -> None: calendarAccess = parent.calendarAccess.get(uuid=processUuid(self._args[0])) - logStr = "Removed access calendar {} by {}".format( - calendarAccess.calendar.name, self._user.pretty_name - ) - + logStr = f'Removed access calendar {calendarAccess.calendar.name} by {self._user.pretty_name}' calendarAccess.delete() - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) class ActionsCalendars(DetailHandler): @@ -167,8 +164,8 @@ class ActionsCalendars(DetailHandler): ] i = parent.calendaraction_set.get(uuid=processUuid(item)) return ActionsCalendars.as_dict(i) - except Exception: - raise self.invalidItemException() + except Exception as e: + raise self.invalidItemException() from e def getTitle(self, parent: 'ServicePool'): return _('Scheduled actions') @@ -197,13 +194,10 @@ class ActionsCalendars(DetailHandler): params = json.dumps(self._params['params']) # logger.debug('Got parameters: {} {} {} {} ----> {}'.format(calendar, action, eventsOffset, atStart, params)) - logStr = "Added scheduled action \"{},{},{},{},{}\" by {}".format( - calendar.name, - action, - eventsOffset, - atStart and 'Start' or 'End', - params, - self._user.pretty_name, + logStr = ( + f'{"Added" if uuid is None else "Updated"} scheduled action ' + f'{calendar.name},{action},{eventsOffset},{"start" if atStart else "end"},{params} ' + f'by {self._user.pretty_name}' ) if uuid is not None: @@ -225,39 +219,35 @@ class ActionsCalendars(DetailHandler): params=params, ) - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) def deleteItem(self, parent: 'ServicePool', item: str) -> None: calendarAction = CalendarAction.objects.get(uuid=processUuid(self._args[0])) - logStr = "Removed scheduled action \"{},{},{},{},{}\" by {}".format( - calendarAction.calendar.name, - calendarAction.action, - calendarAction.events_offset, - calendarAction.at_start and 'Start' or 'End', - calendarAction.params, - self._user.pretty_name, + logStr = ( + f'Removed scheduled action "{calendarAction.calendar.name},' + f'{calendarAction.action},{calendarAction.events_offset},' + f'{calendarAction.at_start and "Start" or "End"},' + f'{calendarAction.params}" by {self._user.pretty_name}' ) calendarAction.delete() - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) def execute(self, parent: 'ServicePool', item: str): logger.debug('Launching action') uuid = processUuid(item) calendarAction: CalendarAction = CalendarAction.objects.get(uuid=uuid) self.ensureAccess(calendarAction, permissions.PermissionType.MANAGEMENT) - logStr = "Launched scheduled action \"{},{},{},{},{}\" by {}".format( - calendarAction.calendar.name, - calendarAction.action, - calendarAction.events_offset, - calendarAction.at_start and 'Start' or 'End', - calendarAction.params, - self._user.pretty_name, + + logStr = ( + f'Launched scheduled action "{calendarAction.calendar.name},' + f'{calendarAction.action},{calendarAction.events_offset},' + f'{calendarAction.at_start and "Start" or "End"},' + f'{calendarAction.params}" by {self._user.pretty_name}' ) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) calendarAction.execute() - log.doLog(parent, log.INFO, logStr, log.ADMIN) - return self.success() diff --git a/server/src/uds/REST/methods/permissions.py b/server/src/uds/REST/methods/permissions.py index 7524cb409..7e8b3773a 100644 --- a/server/src/uds/REST/methods/permissions.py +++ b/server/src/uds/REST/methods/permissions.py @@ -97,10 +97,10 @@ class Permissions(Handler): { 'id': perm.uuid, 'type': kind, - 'auth': entity.manager.uuid, - 'auth_name': entity.manager.name, - 'entity_id': entity.uuid, - 'entity_name': entity.name, + 'auth': entity.manager.uuid, # type: ignore + 'auth_name': entity.manager.name, # type: ignore + 'entity_id': entity.uuid, # type: ignore + 'entity_name': entity.name, # type: ignore 'perm': perm.permission, 'perm_name': perm.permission_as_string, } @@ -108,7 +108,7 @@ class Permissions(Handler): return sorted(res, key=lambda v: v['auth_name'] + v['entity_name']) - def get(self): + def get(self) -> typing.Any: """ Processes get requests """ diff --git a/server/src/uds/REST/methods/services.py b/server/src/uds/REST/methods/services.py index 3290873c0..e196d6b83 100644 --- a/server/src/uds/REST/methods/services.py +++ b/server/src/uds/REST/methods/services.py @@ -42,12 +42,10 @@ from uds.core import exceptions from uds.core.util import log from uds.core.util import permissions from uds.core.util.model import processUuid -from uds.core.util.config import GlobalConfig from uds.core.environment import Environment from uds.core.ui.images import DEFAULT_THUMB_BASE64 from uds.core.ui import gui from uds.core.util.state import State -from uds.core.module import Module from uds.REST.model import DetailHandler @@ -128,9 +126,9 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods k = parent.services.get(uuid=processUuid(item)) val = Services.serviceToDict(k, perm, full=True) return self.fillIntanceFields(k, val) - except Exception: - logger.exception('itemId %s', item) - raise self.invalidItemException() + except Exception as e: + logger.error('Error getting services for %s: %s', parent, e) + raise self.invalidItemException() from e def getRowStyle(self, parent: 'Provider') -> typing.Dict[str, typing.Any]: return {'field': 'maintenance_mode', 'prefix': 'row-maintenance-'} @@ -184,27 +182,27 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods service.save() except models.Service.DoesNotExist: - raise self.invalidItemException() - except IntegrityError: # Duplicate key probably + raise self.invalidItemException() from None + except IntegrityError as e: # Duplicate key probably if service and service.token and not item: service.delete() raise RequestError( _( 'Service token seems to be in use by other service. Please, select a new one.' ) - ) - raise RequestError(_('Element already exists (duplicate key error)')) + ) from e + raise RequestError(_('Element already exists (duplicate key error)')) from e except exceptions.ValidationError as e: if ( not item and service ): # Only remove partially saved element if creating new (if editing, ignore this) self._deleteIncompleteService(service) - raise RequestError(_('Input error: {0}'.format(e))) + raise RequestError(_('Input error: {0}'.format(e))) from e except Exception as e: if not item and service: self._deleteIncompleteService(service) logger.exception('Saving Service') - raise RequestError('incorrect invocation to PUT: {0}'.format(e)) + raise RequestError('incorrect invocation to PUT: {0}'.format(e)) from e def deleteItem(self, parent: 'Provider', item: str) -> None: try: @@ -214,7 +212,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods return except Exception: logger.exception('Deleting service') - raise self.invalidItemException() + raise self.invalidItemException() from None raise RequestError('Item has associated deployed services') @@ -284,7 +282,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods parentInstance = parent.getInstance() serviceType = parentInstance.getServiceByType(forType) if not serviceType: - raise self.invalidItemException('Gui for {} not found'.format(forType)) + raise self.invalidItemException(f'Gui for {forType} not found') service = serviceType( Environment.getTempEnv(), parentInstance @@ -314,7 +312,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods except Exception as e: logger.exception('getGui') - raise ResponseError(str(e)) + raise ResponseError(str(e)) from e def getLogs(self, parent: 'Provider', item: str) -> typing.List[typing.Any]: try: @@ -322,7 +320,7 @@ class Services(DetailHandler): # pylint: disable=too-many-public-methods logger.debug('Getting logs for %s', item) return log.getLogs(service) except Exception: - raise self.invalidItemException() + raise self.invalidItemException() from None def servicesPools(self, parent: 'Provider', item: str) -> typing.Any: service = parent.services.get(uuid=processUuid(item)) diff --git a/server/src/uds/REST/methods/services_pool_groups.py b/server/src/uds/REST/methods/services_pool_groups.py index 8643de3e0..1867bec8a 100644 --- a/server/src/uds/REST/methods/services_pool_groups.py +++ b/server/src/uds/REST/methods/services_pool_groups.py @@ -93,7 +93,7 @@ class ServicesPoolGroups(ModelHandler): 'values': [gui.choiceImage(-1, '--------', DEFAULT_THUMB_BASE64)] + gui.sortedChoices( [ - gui.choiceImage(v.uuid, v.name, v.thumb64) + gui.choiceImage(v.uuid, v.name, v.thumb64) # type: ignore for v in Image.objects.all() ] ), diff --git a/server/src/uds/REST/methods/services_pools.py b/server/src/uds/REST/methods/services_pools.py index fd79aae61..4ebe394de 100644 --- a/server/src/uds/REST/methods/services_pools.py +++ b/server/src/uds/REST/methods/services_pools.py @@ -44,8 +44,9 @@ from uds.models import ( ServicePoolGroup, Account, User, - getSqlDatetime, ) +from uds.core.util.model import getSqlDatetime + from uds.models.calendar_action import ( CALENDAR_ACTION_INITIAL, CALENDAR_ACTION_MAX, @@ -63,7 +64,7 @@ from uds.models.calendar_action import ( CALENDAR_ACTION_REMOVE_STUCK_USERSERVICES, ) -from uds.core.managers import userServiceManager +from uds.core.managers.user_service import UserServiceManager from uds.core.ui.images import DEFAULT_THUMB_BASE64 from uds.core.util.state import State from uds.core.util.model import processUuid @@ -157,9 +158,7 @@ class ServicesPools(ModelHandler): def getItems(self, *args, **kwargs): # Optimized query, due that there is a lot of info needed for theee - d = getSqlDatetime() - datetime.timedelta( - seconds=GlobalConfig.RESTRAINT_TIME.getInt() - ) + d = getSqlDatetime() - datetime.timedelta(seconds=GlobalConfig.RESTRAINT_TIME.getInt()) return super().getItems( overview=kwargs.get('overview', True), query=( @@ -180,11 +179,7 @@ class ServicesPools(ModelHandler): filter=~Q(userServices__state__in=State.INFO_STATES), ) ) - .annotate( - preparing_count=Count( - 'userServices', filter=Q(userServices__state=State.PREPARING) - ) - ) + .annotate(preparing_count=Count('userServices', filter=Q(userServices__state=State.PREPARING))) .annotate( error_count=Count( 'userServices', @@ -225,25 +220,23 @@ class ServicesPools(ModelHandler): state = item.state if item.isInMaintenance(): state = State.MAINTENANCE - # This needs a lot of queries, and really does not shows anything important i think... - # elif userServiceManager().canInitiateServiceFromDeployedService(item) is False: + # This needs a lot of queries, and really does not apport anything important to the report + # elif UserServiceManager().canInitiateServiceFromDeployedService(item) is False: # state = State.SLOWED_DOWN val = { 'id': item.uuid, 'name': item.name, 'short_name': item.short_name, 'tags': [tag.tag for tag in item.tags.all()], - 'parent': item.service.name, - 'parent_type': item.service.data_type, + 'parent': item.service.name, # type: ignore + 'parent_type': item.service.data_type, # type: ignore 'comments': item.comments, 'state': state, - 'thumb': item.image.thumb64 - if item.image is not None - else DEFAULT_THUMB_BASE64, + 'thumb': item.image.thumb64 if item.image is not None else DEFAULT_THUMB_BASE64, 'account': item.account.name if item.account is not None else '', 'account_id': item.account.uuid if item.account is not None else None, - 'service_id': item.service.uuid, - 'provider_id': item.service.provider.uuid, + 'service_id': item.service.uuid, # type: ignore + 'provider_id': item.service.provider.uuid, # type: ignore 'image_id': item.image.uuid if item.image is not None else None, 'initial_srvs': item.initial_srvs, 'cache_l1_srvs': item.cache_l1_srvs, @@ -256,8 +249,7 @@ class ServicesPools(ModelHandler): 'ignores_unused': item.ignores_unused, 'fallbackAccess': item.fallbackAccess, 'meta_member': [ - {'id': i.meta_pool.uuid, 'name': i.meta_pool.name} - for i in item.memberOfMeta.all() + {'id': i.meta_pool.uuid, 'name': i.meta_pool.name} for i in item.memberOfMeta.all() ], 'calendar_message': item.calendar_message, } @@ -270,12 +262,8 @@ class ServicesPools(ModelHandler): restrained = item.error_count >= GlobalConfig.RESTRAINT_COUNT.getInt() # type: ignore usage_count = item.usage_count # type: ignore else: - valid_count = item.userServices.exclude( - state__in=State.INFO_STATES - ).count() - preparing_count = item.userServices.filter( - state=State.PREPARING - ).count() + valid_count = item.userServices.exclude(state__in=State.INFO_STATES).count() + preparing_count = item.userServices.filter(state=State.PREPARING).count() restrained = item.isRestrained() usage_count = -1 @@ -289,15 +277,13 @@ class ServicesPools(ModelHandler): poolGroupThumb = item.servicesPoolGroup.image.thumb64 val['state'] = state - val['thumb'] = ( - item.image.thumb64 if item.image is not None else DEFAULT_THUMB_BASE64 - ) + val['thumb'] = item.image.thumb64 if item.image is not None else DEFAULT_THUMB_BASE64 val['user_services_count'] = valid_count val['user_services_in_preparation'] = preparing_count val['tags'] = [tag.tag for tag in item.tags.all()] val['restrained'] = restrained val['permission'] = permissions.getEffectivePermission(self._user, item) - val['info'] = Services.serviceInfo(item.service) + val['info'] = Services.serviceInfo(item.service) # type: ignore val['pool_group_id'] = poolGroupId val['pool_group_name'] = poolGroupName val['pool_group_thumb'] = poolGroupThumb @@ -313,9 +299,7 @@ class ServicesPools(ModelHandler): # if OSManager.objects.count() < 1: # No os managers, can't create db # raise ResponseError(gettext('Create at least one OS Manager before creating a new service pool')) if Service.objects.count() < 1: - raise ResponseError( - gettext('Create at least a service before creating a new service pool') - ) + raise ResponseError(gettext('Create at least a service before creating a new service pool')) g = self.addDefaultFields([], ['name', 'short_name', 'comments', 'tags']) @@ -325,7 +309,7 @@ class ServicesPools(ModelHandler): 'values': [gui.choiceItem('', '')] + gui.sortedChoices( [ - gui.choiceItem(v.uuid, v.provider.name + '\\' + v.name) + gui.choiceItem(v.uuid, v.provider.name + '\\' + v.name) # type: ignore for v in Service.objects.all() ] ), @@ -339,7 +323,7 @@ class ServicesPools(ModelHandler): 'name': 'osmanager_id', 'values': [gui.choiceItem(-1, '')] + gui.sortedChoices( - [gui.choiceItem(v.uuid, v.name) for v in OSManager.objects.all()] + [gui.choiceItem(v.uuid, v.name) for v in OSManager.objects.all()] # type: ignore ), 'label': gettext('OS Manager'), 'tooltip': gettext('OS Manager used as base of this service pool'), @@ -362,9 +346,7 @@ class ServicesPools(ModelHandler): 'name': 'allow_users_reset', 'value': False, 'label': gettext('Allow reset by users'), - 'tooltip': gettext( - 'If active, the user will be allowed to reset the service' - ), + 'tooltip': gettext('If active, the user will be allowed to reset the service'), 'type': gui.InputField.Types.CHECKBOX, 'order': 112, 'tab': gettext('Advanced'), @@ -393,10 +375,7 @@ class ServicesPools(ModelHandler): 'name': 'image_id', 'values': [gui.choiceImage(-1, '--------', DEFAULT_THUMB_BASE64)] + gui.sortedChoices( - [ - gui.choiceImage(v.uuid, v.name, v.thumb64) - for v in Image.objects.all() - ] + [gui.choiceImage(v.uuid, v.name, v.thumb64) for v in Image.objects.all()] # type: ignore ), 'label': gettext('Associated Image'), 'tooltip': gettext('Image assocciated with this service'), @@ -409,14 +388,12 @@ class ServicesPools(ModelHandler): 'values': [gui.choiceImage(-1, _('Default'), DEFAULT_THUMB_BASE64)] + gui.sortedChoices( [ - gui.choiceImage(v.uuid, v.name, v.thumb64) + gui.choiceImage(v.uuid, v.name, v.thumb64) # type: ignore for v in ServicePoolGroup.objects.all() ] ), 'label': gettext('Pool group'), - 'tooltip': gettext( - 'Pool group for this pool (for pool classify on display)' - ), + 'tooltip': gettext('Pool group for this pool (for pool classify on display)'), 'type': gui.InputField.Types.IMAGE_CHOICE, 'order': 121, 'tab': gettext('Display'), @@ -447,9 +424,7 @@ class ServicesPools(ModelHandler): 'value': '0', 'minValue': '0', 'label': gettext('Services to keep in cache'), - 'tooltip': gettext( - 'Services kept in cache for improved user service assignation' - ), + 'tooltip': gettext('Services kept in cache for improved user service assignation'), 'type': gui.InputField.Types.NUMERIC, 'order': 131, 'tab': gettext('Availability'), @@ -459,9 +434,7 @@ class ServicesPools(ModelHandler): 'value': '0', 'minValue': '0', 'label': gettext('Services to keep in L2 cache'), - 'tooltip': gettext( - 'Services kept in cache of level2 for improved service generation' - ), + 'tooltip': gettext('Services kept in cache of level2 for improved service generation'), 'type': gui.InputField.Types.NUMERIC, 'order': 132, 'tab': gettext('Availability'), @@ -482,9 +455,7 @@ class ServicesPools(ModelHandler): 'name': 'show_transports', 'value': True, 'label': gettext('Show transports'), - 'tooltip': gettext( - 'If active, alternative transports for user will be shown' - ), + 'tooltip': gettext('If active, alternative transports for user will be shown'), 'type': gui.InputField.Types.CHECKBOX, 'tab': gettext('Advanced'), 'order': 130, @@ -493,7 +464,7 @@ class ServicesPools(ModelHandler): 'name': 'account_id', 'values': [gui.choiceItem(-1, '')] + gui.sortedChoices( - [gui.choiceItem(v.uuid, v.name) for v in Account.objects.all()] + [gui.choiceItem(v.uuid, v.name) for v in Account.objects.all()] # type: ignore ), 'label': gettext('Accounting'), 'tooltip': gettext('Account associated to this service pool'), @@ -506,16 +477,15 @@ class ServicesPools(ModelHandler): return g - def beforeSave( - self, fields: typing.Dict[str, typing.Any] - ) -> None: # pylint: disable=too-many-branches,too-many-statements + # pylint: disable=too-many-statements + def beforeSave(self, fields: typing.Dict[str, typing.Any]) -> None: # logger.debug(self._params) try: try: service = Service.objects.get(uuid=processUuid(fields['service_id'])) fields['service_id'] = service.id - except: - raise RequestError(gettext('Base service does not exist anymore')) + except Exception: + raise RequestError(gettext('Base service does not exist anymore')) from None try: serviceType = service.getType() @@ -527,9 +497,7 @@ class ServicesPools(ModelHandler): self._params['allow_users_reset'] = False if serviceType.needsManager is True: - osmanager = OSManager.objects.get( - uuid=processUuid(fields['osmanager_id']) - ) + osmanager = OSManager.objects.get(uuid=processUuid(fields['osmanager_id'])) fields['osmanager_id'] = osmanager.id else: del fields['osmanager_id'] @@ -556,19 +524,11 @@ class ServicesPools(ModelHandler): fields['cache_l1_srvs'] = int(fields['cache_l1_srvs']) if serviceType.maxDeployed != -1: - fields['max_srvs'] = min( - (fields['max_srvs'], serviceType.maxDeployed) - ) - fields['initial_srvs'] = min( - fields['initial_srvs'], serviceType.maxDeployed - ) - fields['cache_l1_srvs'] = min( - fields['cache_l1_srvs'], serviceType.maxDeployed - ) - - - except Exception: - raise RequestError(gettext('This service requires an OS Manager')) + fields['max_srvs'] = min((fields['max_srvs'], serviceType.maxDeployed)) + fields['initial_srvs'] = min(fields['initial_srvs'], serviceType.maxDeployed) + fields['cache_l1_srvs'] = min(fields['cache_l1_srvs'], serviceType.maxDeployed) + except Exception as e: + raise RequestError(gettext('This service requires an OS Manager')) from e # If max < initial or cache_1 or cache_l2 fields['max_srvs'] = max( @@ -586,9 +546,7 @@ class ServicesPools(ModelHandler): if accountId != '-1': try: - fields['account_id'] = Account.objects.get( - uuid=processUuid(accountId) - ).id + fields['account_id'] = Account.objects.get(uuid=processUuid(accountId)).id except Exception: logger.exception('Getting account ID') @@ -618,14 +576,14 @@ class ServicesPools(ModelHandler): except (RequestError, ResponseError): raise except Exception as e: - raise RequestError(str(e)) + raise RequestError(str(e)) from e def afterSave(self, item: ServicePool) -> None: if self._params.get('publish_on_save', False) is True: try: item.publish() - except Exception as e: - logger.error('Could not publish service pool %s: %s',item.name, e) + except Exception as e: + logger.error('Could not publish service pool %s: %s', item.name, e) def deleteItem(self, item: ServicePool) -> None: try: @@ -659,7 +617,7 @@ class ServicesPools(ModelHandler): # Returns the action list based on current element, for calendar def actionsList(self, item: ServicePool) -> typing.Any: validActions: typing.Tuple[typing.Dict, ...] = () - itemInfo = item.service.getType() + itemInfo = item.service.getType() # type: ignore if itemInfo.usesCache is True: validActions += ( CALENDAR_ACTION_INITIAL, @@ -679,7 +637,7 @@ class ServicesPools(ModelHandler): CALENDAR_ACTION_DEL_ALL_TRANSPORTS, CALENDAR_ACTION_ADD_GROUP, CALENDAR_ACTION_DEL_GROUP, - CALENDAR_ACTION_DEL_ALL_GROUPS + CALENDAR_ACTION_DEL_ALL_GROUPS, ) # Advanced actions @@ -691,7 +649,7 @@ class ServicesPools(ModelHandler): return validActions def listAssignables(self, item: ServicePool) -> typing.Any: - service = item.service.getInstance() + service = item.service.getInstance() # type: ignore return [gui.choiceItem(i[0], i[1]) for i in service.listAssignables()] def createFromAssignable(self, item: ServicePool) -> typing.Any: @@ -699,7 +657,7 @@ class ServicesPools(ModelHandler): return self.invalidRequestException('Invalid parameters') logger.debug('Creating from assignable: %s', self._params) - userServiceManager().createFromAssignable( + UserServiceManager().createFromAssignable( item, User.objects.get(uuid=processUuid(self._params['user_id'])), self._params['assignable_id'], diff --git a/server/src/uds/REST/methods/services_usage.py b/server/src/uds/REST/methods/services_usage.py index acb0f3e4c..02a101073 100644 --- a/server/src/uds/REST/methods/services_usage.py +++ b/server/src/uds/REST/methods/services_usage.py @@ -77,8 +77,8 @@ class ServicesUsage(DetailHandler): 'friendly_name': item.friendly_name, 'owner': owner, 'owner_info': owner_info, - 'service': item.deployed_service.service.name, - 'service_id': item.deployed_service.service.uuid, + 'service': item.deployed_service.service.name, # type: ignore + 'service_id': item.deployed_service.service.uuid, # type: ignore 'pool': item.deployed_service.name, 'pool_id': item.deployed_service.uuid, 'ip': props.get('ip', _('unknown')), diff --git a/server/src/uds/REST/methods/system.py b/server/src/uds/REST/methods/system.py index 61f1e6ed6..5c1988e32 100644 --- a/server/src/uds/REST/methods/system.py +++ b/server/src/uds/REST/methods/system.py @@ -37,6 +37,7 @@ import logging import typing from uds import models +from uds.core.util.model import getSqlDatetime from uds.core.util.model import processUuid from uds.core.util.stats import counters @@ -71,7 +72,7 @@ def getServicesPoolsCounters( + str(POINTS) + str(since_days) ) - to = models.getSqlDatetime() + to = getSqlDatetime() since: datetime.datetime = to - datetime.timedelta(days=since_days) cachedValue: typing.Optional[bytes] = cache.get(cacheKey) @@ -103,9 +104,9 @@ def getServicesPoolsCounters( # return [{'stamp': since + datetime.timedelta(hours=i*10), 'value': i*i*counter_type//4} for i in range(300)] return val - except: - logger.exception('exception') - raise ResponseError('can\'t create stats for objects!!!') + except Exception as e: + logger.exception('getServicesPoolsCounters') + raise ResponseError('can\'t create stats for objects!!!') from e class System(Handler): diff --git a/server/src/uds/REST/methods/tickets.py b/server/src/uds/REST/methods/tickets.py index d85a1b6f5..700bd8384 100644 --- a/server/src/uds/REST/methods/tickets.py +++ b/server/src/uds/REST/methods/tickets.py @@ -38,7 +38,7 @@ import typing from uds.REST import Handler from uds.REST import RequestError from uds import models -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.util.model import processUuid from uds.core.util import tools @@ -66,7 +66,7 @@ VALID_PARAMS = ( ) -# Enclosed methods under /actor path +# Enclosed methods under /tickets path class Tickets(Handler): """ Processes tickets access requests. @@ -121,17 +121,25 @@ class Tickets(Handler): raise RequestError('Invalid method') try: - for i in ('authId', 'auth_id', 'authTag', 'auth_tag', 'auth', 'auth_name', 'authSmallName'): + for i in ( + 'authId', + 'auth_id', + 'authTag', + 'auth_tag', + 'auth', + 'auth_name', + 'authSmallName', + ): if i in self._params: raise StopIteration if 'username' in self._params and 'groups' in self._params: raise StopIteration() - + raise RequestError('Invalid parameters (no auth or username/groups)') except StopIteration: - pass # All ok - + pass # All ok + # Must be invoked as '/rest/ticket/create, with "username", ("authId" or "auth_id") or ("auth_tag" or "authSmallName" or "authTag"), "groups" (array) and optionally "time" (in seconds) as paramteres def put( self, @@ -171,7 +179,7 @@ class Tickets(Handler): groupIds: typing.List[str] = [] for groupName in tools.as_list(self.getParam('groups')): try: - groupIds.append(auth.groups.get(name=groupName).uuid) + groupIds.append(auth.groups.get(name=groupName).uuid or '') except Exception: logger.info( 'Group %s from ticket does not exists on auth %s, forced creation: %s', @@ -185,6 +193,7 @@ class Tickets(Handler): name=groupName, comments='Autocreated form ticket by using force paratemeter', ).uuid + or '' ) if not groupIds: # No valid group in groups names @@ -244,7 +253,7 @@ class Tickets(Handler): ): pool.assignedGroups.add(auth.groups.get(uuid=addGrp)) - servicePoolId = 'F' + pool.uuid + servicePoolId = 'F' + pool.uuid # type: ignore except models.Authenticator.DoesNotExist: return Tickets.result(error='Authenticator does not exists') @@ -257,7 +266,7 @@ class Tickets(Handler): data = { 'username': username, - 'password': cryptoManager().encrypt(password), + 'password': CryptoManager().encrypt(password), 'realname': realname, 'groups': groupIds, 'auth': auth.uuid, diff --git a/server/src/uds/REST/methods/tunnel.py b/server/src/uds/REST/methods/tunnel.py index 39b86ef64..9f86eb33c 100644 --- a/server/src/uds/REST/methods/tunnel.py +++ b/server/src/uds/REST/methods/tunnel.py @@ -34,7 +34,7 @@ import logging import typing from uds import models -from uds.core import managers +from uds.core.util.model import getSqlDatetimeAsUnix, getSqlDatetime from uds.REST import Handler from uds.REST import AccessDenied from uds.core.auths.auth import isTrustedSource @@ -99,11 +99,11 @@ class TunnelTicket(Handler): sent, recv = self._params['sent'], self._params['recv'] # Ensures extra exists... extra = extra or {} - now = models.getSqlDatetimeAsUnix() + now = getSqlDatetimeAsUnix() totalTime = now - extra.get('b', now - 1) msg = f'User {user.name} stopped tunnel {extra.get("t", "")[:8]}... to {host}:{port}: u:{sent}/d:{recv}/t:{totalTime}.' - log.doLog(user.manager, log.INFO, msg) - log.doLog(userService, log.INFO, msg) + log.doLog(user.manager, log.LogLevel.INFO, msg) + log.doLog(userService, log.LogLevel.INFO, msg) # Try to log Close event try: @@ -131,8 +131,8 @@ class TunnelTicket(Handler): tunnel=self._args[0], ) msg = f'User {user.name} started tunnel {self._args[0][:8]}... to {host}:{port} from {self._args[1]}.' - log.doLog(user.manager, log.INFO, msg) - log.doLog(userService, log.INFO, msg) + log.doLog(user.manager, log.LogLevel.INFO, msg) + log.doLog(userService, log.LogLevel.INFO, msg) # Generate new, notify only, ticket notifyTicket = models.TicketStore.create_for_tunnel( userService=userService, @@ -140,7 +140,7 @@ class TunnelTicket(Handler): host=host, extra={ 't': self._args[0], # ticket - 'b': models.getSqlDatetimeAsUnix(), # Begin time stamp + 'b': getSqlDatetimeAsUnix(), # Begin time stamp }, validity=MAX_SESSION_LENGTH, ) @@ -149,7 +149,7 @@ class TunnelTicket(Handler): return data except Exception as e: logger.info('Ticket ignored: %s', e) - raise AccessDenied() + raise AccessDenied() from e class TunnelRegister(Handler): @@ -159,7 +159,7 @@ class TunnelRegister(Handler): def post(self) -> typing.MutableMapping[str, typing.Any]: tunnelToken: models.TunnelToken - now = models.getSqlDatetimeAsUnix() + now = getSqlDatetimeAsUnix() try: # If already exists a token for this MAC, return it instead of creating a new one, and update the information... tunnelToken = models.TunnelToken.objects.get( @@ -168,7 +168,7 @@ class TunnelRegister(Handler): # Update parameters tunnelToken.username = self._user.pretty_name tunnelToken.ip_from = self._request.ip - tunnelToken.stamp = models.getSqlDatetime() + tunnelToken.stamp = getSqlDatetime() tunnelToken.save() except Exception: try: @@ -178,7 +178,7 @@ class TunnelRegister(Handler): ip=self._params['ip'], hostname=self._params['hostname'], token=secrets.token_urlsafe(36), - stamp=models.getSqlDatetime(), + stamp=getSqlDatetime(), ) except Exception as e: return {'result': '', 'stamp': now, 'error': str(e)} diff --git a/server/src/uds/REST/methods/tunnel_token.py b/server/src/uds/REST/methods/tunnel_token.py index ca9a53cd3..36bf4d8aa 100644 --- a/server/src/uds/REST/methods/tunnel_token.py +++ b/server/src/uds/REST/methods/tunnel_token.py @@ -58,7 +58,7 @@ class TunnelTokens(ModelHandler): def item_as_dict(self, item: TunnelToken) -> typing.Dict[str, typing.Any]: return { 'id': item.token, - 'name': _('Token isued by {} from {}').format(item.username, item.ip), + 'name': str(_('Token isued by {} from {}')).format(item.username, item.ip), 'stamp': item.stamp, 'username': item.username, 'ip': item.ip, @@ -80,6 +80,6 @@ class TunnelTokens(ModelHandler): try: self.model.objects.get(token=self._args[0]).delete() except self.model.DoesNotExist: - raise NotFound('Element do not exists') + raise NotFound('Element do not exists') from None return OK diff --git a/server/src/uds/REST/methods/user_services.py b/server/src/uds/REST/methods/user_services.py index 093b97e9c..5ff37f98b 100644 --- a/server/src/uds/REST/methods/user_services.py +++ b/server/src/uds/REST/methods/user_services.py @@ -39,7 +39,7 @@ from uds import models from uds.core.util.state import State from uds.core.util.model import processUuid from uds.core.util import log, permissions -from uds.core.managers import userServiceManager +from uds.core.managers.user_service import UserServiceManager from uds.REST.model import DetailHandler from uds.REST import ResponseError @@ -125,9 +125,9 @@ class AssignedService(DetailHandler): return AssignedService.itemToDict( parent.assignedUserServices().get(processUuid(uuid=processUuid(item))) ) - except Exception: + except Exception as e: logger.exception('getItems') - raise self.invalidItemException() + raise self.invalidItemException() from e def getTitle(self, parent: models.ServicePool) -> str: return _('Assigned services') @@ -164,8 +164,8 @@ class AssignedService(DetailHandler): ) logger.debug('Getting logs for %s', userService) return log.getLogs(userService) - except Exception: - raise self.invalidItemException() + except Exception as e: + raise self.invalidItemException() from e # This is also used by CachedService, so we use "userServices" directly and is valid for both def deleteItem(self, parent: models.ServicePool, item: str) -> None: @@ -173,20 +173,14 @@ class AssignedService(DetailHandler): userService: models.UserService = parent.userServices.get( uuid=processUuid(item) ) - except Exception: + except Exception as e: logger.exception('deleteItem') - raise self.invalidItemException() + raise self.invalidItemException() from e if userService.user: - logStr = 'Deleted assigned service {} to user {} by {}'.format( - userService.friendly_name, - userService.user.pretty_name, - self._user.pretty_name, - ) + logStr = f'Deleted assigned service {userService.friendly_name} to user {userService.user.pretty_name} by {self._user.pretty_name}' else: - logStr = 'Deleted cached service {} by {}'.format( - userService.friendly_name, self._user.pretty_name - ) + logStr = f'Deleted cached service {userService.friendly_name} by {self._user.pretty_name}' if userService.state in (State.USABLE, State.REMOVING): userService.remove() @@ -197,7 +191,7 @@ class AssignedService(DetailHandler): else: raise self.invalidItemException(_('Item is not removable')) - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) # Only owner is allowed to change right now def saveItem(self, parent: models.ServicePool, item: typing.Optional[str]) -> None: @@ -207,9 +201,7 @@ class AssignedService(DetailHandler): userService = parent.userServices.get(uuid=processUuid(item)) user = models.User.objects.get(uuid=processUuid(fields['user_id'])) - logStr = 'Changing ownership of service from {} to {} by {}'.format( - userService.user, user.pretty_name, self._user.pretty_name - ) + logStr = f'Changed ownership of service {userService.friendly_name} from {userService.user} to {user.pretty_name} by {self._user.pretty_name}' # If there is another service that has this same owner, raise an exception if ( @@ -220,20 +212,18 @@ class AssignedService(DetailHandler): > 0 ): raise self.invalidResponseException( - 'There is already another user service assigned to {}'.format( - user.pretty_name - ) + f'There is already another user service assigned to {user.pretty_name}' ) userService.user = user # type: ignore userService.save() # Log change - log.doLog(parent, log.INFO, logStr, log.ADMIN) + log.doLog(parent, log.LogLevel.INFO, logStr, log.LogSource.ADMIN) def reset(self, parent: 'models.ServicePool', item: str) -> typing.Any: userService = parent.userServices.get(uuid=processUuid(item)) - userServiceManager().reset(userService) + UserServiceManager().reset(userService) class CachedService(AssignedService): @@ -259,9 +249,9 @@ class CachedService(AssignedService): uuid=processUuid(item) ) return AssignedService.itemToDict(cachedService, True) - except Exception: + except Exception as e: logger.exception('getItems') - raise self.invalidItemException() + raise self.invalidItemException() from e def getTitle(self, parent: models.ServicePool) -> str: return _('Cached services') @@ -290,7 +280,7 @@ class CachedService(AssignedService): logger.debug('Getting logs for %s', item) return log.getLogs(userService) except Exception: - raise self.invalidItemException() + raise self.invalidItemException() from None class Groups(DetailHandler): @@ -350,9 +340,9 @@ class Groups(DetailHandler): parent.assignedGroups.add(group) log.doLog( parent, - log.INFO, - "Added group {} by {}".format(group.pretty_name, self._user.pretty_name), - log.ADMIN, + log.LogLevel.INFO, + f'Added group {group.pretty_name} by {self._user.pretty_name}', + log.LogSource.ADMIN, ) def deleteItem(self, parent: models.ServicePool, item: str) -> None: @@ -360,9 +350,9 @@ class Groups(DetailHandler): parent.assignedGroups.remove(group) log.doLog( parent, - log.INFO, - "Removed group {} by {}".format(group.pretty_name, self._user.pretty_name), - log.ADMIN, + log.LogLevel.INFO, + f'Removed group {group.pretty_name} by {self._user.pretty_name}', + log.LogSource.ADMIN, ) @@ -409,9 +399,9 @@ class Transports(DetailHandler): parent.transports.add(transport) log.doLog( parent, - log.INFO, - "Added transport {} by {}".format(transport.name, self._user.pretty_name), - log.ADMIN, + log.LogLevel.INFO, + f'Added transport {transport.name} by {self._user.pretty_name}', + log.LogSource.ADMIN, ) def deleteItem(self, parent: models.ServicePool, item: str) -> None: @@ -421,9 +411,9 @@ class Transports(DetailHandler): parent.transports.remove(transport) log.doLog( parent, - log.INFO, - "Removed transport {} by {}".format(transport.name, self._user.pretty_name), - log.ADMIN, + log.LogLevel.INFO, + f'Removed transport {transport.name} by {self._user.pretty_name}', + log.LogSource.ADMIN, ) @@ -457,11 +447,9 @@ class Publications(DetailHandler): log.doLog( parent, - log.INFO, - "Initated publication v{} by {}".format( - parent.current_pub_revision, self._user.pretty_name - ), - log.ADMIN, + log.LogLevel.INFO, + f'Initiated publication v{parent.current_pub_revision} by {self._user.pretty_name}', + log.LogSource.ADMIN, ) return self.success() @@ -486,15 +474,13 @@ class Publications(DetailHandler): ds = models.ServicePoolPublication.objects.get(uuid=processUuid(uuid)) ds.cancel() except Exception as e: - raise ResponseError("{}".format(e)) + raise ResponseError(str(e)) from e log.doLog( parent, - log.INFO, - "Canceled publication v{} by {}".format( - parent.current_pub_revision, self._user.pretty_name - ), - log.ADMIN, + log.LogLevel.INFO, + f'Canceled publication v{parent.current_pub_revision} by {self._user.pretty_name}', + log.LogSource.ADMIN, ) return self.success() diff --git a/server/src/uds/REST/methods/users_groups.py b/server/src/uds/REST/methods/users_groups.py index 56d64dfb4..bbbf9735f 100644 --- a/server/src/uds/REST/methods/users_groups.py +++ b/server/src/uds/REST/methods/users_groups.py @@ -44,7 +44,7 @@ from uds.core.auths.user import User as aUser from uds.core.util import log from uds.core.util.model import processUuid from uds.models import Authenticator, User, Group, ServicePool -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.REST import RequestError from uds.core.ui.images import DEFAULT_THUMB_BASE64 @@ -77,7 +77,6 @@ def getPoolsForGroups(groups): class Users(DetailHandler): - custom_methods = ['servicesPools', 'userServices', 'cleanRelated'] def getItems(self, parent: Authenticator, item: typing.Optional[str]): @@ -120,35 +119,34 @@ class Users(DetailHandler): or _('User') ) return values - else: - u = parent.users.get(uuid=processUuid(item)) - res = model_to_dict( - u, - fields=( - 'name', - 'real_name', - 'comments', - 'state', - 'staff_member', - 'is_admin', - 'last_access', - 'parent', - 'mfa_data', - ), - ) - res['id'] = u.uuid - res['role'] = ( - res['staff_member'] - and (res['is_admin'] and _('Admin') or _('Staff member')) - or _('User') - ) - usr = aUser(u) - res['groups'] = [g.dbGroup().uuid for g in usr.groups()] - logger.debug('Item: %s', res) - return res - except Exception: + u = parent.users.get(uuid=processUuid(item)) + res = model_to_dict( + u, + fields=( + 'name', + 'real_name', + 'comments', + 'state', + 'staff_member', + 'is_admin', + 'last_access', + 'parent', + 'mfa_data', + ), + ) + res['id'] = u.uuid + res['role'] = ( + res['staff_member'] + and (res['is_admin'] and _('Admin') or _('Staff member')) + or _('User') + ) + usr = aUser(u) + res['groups'] = [g.dbGroup().uuid for g in usr.groups()] + logger.debug('Item: %s', res) + return res + except Exception as e: logger.exception('En users') - raise self.invalidItemException() + raise self.invalidItemException() from e def getTitle(self, parent): try: @@ -191,7 +189,7 @@ class Users(DetailHandler): try: user = parent.users.get(uuid=processUuid(item)) except Exception: - raise self.invalidItemException() + raise self.invalidItemException() from None return log.getLogs(user) @@ -210,7 +208,7 @@ class Users(DetailHandler): if 'password' in self._params: valid_fields.append('password') - self._params['password'] = cryptoManager().hash(self._params['password']) + self._params['password'] = CryptoManager().hash(self._params['password']) if 'mfa_data' in self._params: valid_fields.append('mfa_data') @@ -247,18 +245,18 @@ class Users(DetailHandler): if g.is_meta is False ) except User.DoesNotExist: - raise self.invalidItemException() + raise self.invalidItemException() from None except IntegrityError: # Duplicate key probably - raise RequestError(_('User already exists (duplicate key error)')) + raise RequestError(_('User already exists (duplicate key error)')) from None except AuthenticatorException as e: - raise RequestError(str(e)) + raise RequestError(str(e)) from e except ValidationError as e: - raise RequestError(str(e.message)) - except RequestError: - raise - except Exception: + raise RequestError(str(e.message)) from e + except RequestError: # pylint: disable=try-except-raise + raise # Re-raise + except Exception as e: logger.exception('Saving user') - raise self.invalidRequestException() + raise self.invalidRequestException() from e return self.getItems(parent, user.uuid) @@ -266,9 +264,12 @@ class Users(DetailHandler): try: user = parent.users.get(uuid=processUuid(item)) if not self._user.is_admin and (user.is_admin or user.staff_member): - logger.warn('Removal of user {} denied due to insufficients rights') + logger.warning( + 'Removal of user %s denied due to insufficients rights', + user.pretty_name, + ) raise self.invalidItemException( - 'Removal of user {} denied due to insufficients rights' + f'Removal of user {user.pretty_name} denied due to insufficients rights' ) assignedUserService: 'UserService' @@ -285,9 +286,9 @@ class Users(DetailHandler): logger.exception('Saving user on removing error') user.delete() - except Exception: + except Exception as e: logger.exception('Removing user') - raise self.invalidItemException() + raise self.invalidItemException() from e return 'deleted' @@ -325,7 +326,7 @@ class Users(DetailHandler): res.append(v) return res - + def cleanRelated(self, parent: Authenticator, item: str) -> typing.Dict: uuid = processUuid(item) user = parent.users.get(uuid=processUuid(uuid)) @@ -334,7 +335,6 @@ class Users(DetailHandler): class Groups(DetailHandler): - custom_methods = ['servicesPools', 'users'] def getItems(self, parent: Authenticator, item: typing.Optional[str]): @@ -364,14 +364,14 @@ class Groups(DetailHandler): if multi: return res if not i: - raise # Invalid item + raise Exception('Item not found') # Add pools field if 1 item only result = res[0] result['pools'] = [v.uuid for v in getPoolsForGroups([i])] return result - except Exception: + except Exception as e: logger.exception('REST groups') - raise self.invalidItemException() + raise self.invalidItemException() from e def getTitle(self, parent: Authenticator) -> str: try: @@ -409,12 +409,12 @@ class Groups(DetailHandler): } types = [ { - 'name': tDct[t]['name'], - 'type': t, - 'description': tDct[t]['description'], + 'name': v['name'], + 'type': k, + 'description': v['description'], 'icon': '', } - for t in tDct + for k, v in tDct.items() ] if forType is None: @@ -423,7 +423,7 @@ class Groups(DetailHandler): try: return next(filter(lambda x: x['type'] == forType, types)) except Exception: - raise self.invalidRequestException() + raise self.invalidRequestException() from None def saveItem(self, parent: Authenticator, item: typing.Optional[str]) -> None: group = None # Avoid warning on reference before assignment @@ -467,7 +467,11 @@ class Groups(DetailHandler): if is_meta: # Do not allow to add meta groups to meta groups - group.groups.set(i for i in parent.groups.filter(uuid__in=self._params['groups']) if i.is_meta is False) + group.groups.set( + i + for i in parent.groups.filter(uuid__in=self._params['groups']) + if i.is_meta is False + ) if pools: # Update pools @@ -475,16 +479,16 @@ class Groups(DetailHandler): group.save() except Group.DoesNotExist: - raise self.invalidItemException() + raise self.invalidItemException() from None except IntegrityError: # Duplicate key probably - raise RequestError(_('User already exists (duplicate key error)')) + raise RequestError(_('User already exists (duplicate key error)')) from None except AuthenticatorException as e: - raise RequestError(str(e)) - except RequestError: - raise - except Exception: + raise RequestError(str(e)) from e + except RequestError: # pylint: disable=try-except-raise + raise # Re-raise + except Exception as e: logger.exception('Saving group') - raise self.invalidRequestException() + raise self.invalidRequestException() from e def deleteItem(self, parent: Authenticator, item: str) -> None: try: @@ -492,7 +496,7 @@ class Groups(DetailHandler): group.delete() except Exception: - raise self.invalidItemException() + raise self.invalidItemException() from None def servicesPools( self, parent: Authenticator, item: str @@ -532,11 +536,10 @@ class Groups(DetailHandler): 'last_access': user.last_access, } - res: typing.List[typing.Mapping[str, typing.Any]] = [] if group.is_meta: # Get all users for everygroup and groups = getGroupsFromMeta((group,)) - tmpSet = None + tmpSet: typing.Optional[typing.Set] = None for g in groups: gSet = set((i for i in g.users.all())) if tmpSet is None: @@ -549,12 +552,9 @@ class Groups(DetailHandler): if not tmpSet: break # If already empty, stop - users = list(tmpSet) if tmpSet else list() + users = list(tmpSet or {}) if tmpSet else [] tmpSet = None else: users = group.users.all() - for i in users: - res.append(info(i)) - - return res + return [info(i) for i in users] diff --git a/server/src/uds/REST/model.py b/server/src/uds/REST/model.py index a7b4a31ff..848b40977 100644 --- a/server/src/uds/REST/model.py +++ b/server/src/uds/REST/model.py @@ -45,7 +45,8 @@ from uds.core.ui import gui as uiGui from uds.core.util import log from uds.core.util import permissions from uds.core.util.model import processUuid -from uds.core import Module, exceptions as g_exceptions +from uds.core.module import Module +from uds.core import exceptions as g_exceptions from uds.models import Tag, TaggingMixin, ManagedObjectModel, Network @@ -70,7 +71,7 @@ OK: typing.Final[ str ] = 'ok' # Constant to be returned when result is just "operation complete successfully" - +# pylint: disable=unused-argument class BaseModelHandler(Handler): """ Base Handler for Master & Detail Handlers @@ -245,12 +246,12 @@ class BaseModelHandler(Handler): if not permissions.hasAccess(self._user, obj, permission, root): raise self.accessDenied() - def getPermissions( - self, obj: models.Model, root: bool = False - ) -> int: + def getPermissions(self, obj: models.Model, root: bool = False) -> int: return permissions.getEffectivePermission(self._user, obj, root) - def typeInfo(self, type_: typing.Type['Module']) -> typing.Dict[str, typing.Any]: + def typeInfo( + self, type_: typing.Type['Module'] # pylint: disable=unused-argument + ) -> typing.Dict[str, typing.Any]: """ Returns info about the type In fact, right now, it returns an empty dict, that will be extended by typeAsDict @@ -315,7 +316,7 @@ class BaseModelHandler(Handler): args[key] = self._params[key] # del self._params[key] except KeyError as e: - raise exceptions.RequestError('needed parameter not found in data {0}'.format(e)) + raise exceptions.RequestError(f'needed parameter not found in data {e}') return args @@ -350,7 +351,7 @@ class BaseModelHandler(Handler): :param message: Custom message to add to exception. If it is None, "Invalid Request" is used """ message = message or _('Invalid Request') - return exceptions.RequestError('{} {}: {}'.format(message, self.__class__, self._args)) + return exceptions.RequestError(f'{message} {self.__class__}: {self._args}') def invalidResponseException( self, message: typing.Optional[str] = None @@ -376,10 +377,14 @@ class BaseModelHandler(Handler): return exceptions.NotFound(message) # raise NotFound('{} {}: {}'.format(message, self.__class__, self._args)) - def accessDenied(self, message: typing.Optional[str] = None) -> exceptions.HandlerError: + def accessDenied( + self, message: typing.Optional[str] = None + ) -> exceptions.HandlerError: return exceptions.AccessDenied(message or _('Access denied')) - def notSupported(self, message: typing.Optional[str] = None) -> exceptions.HandlerError: + def notSupported( + self, message: typing.Optional[str] = None + ) -> exceptions.HandlerError: return exceptions.NotSupportedError(message or _('Operation not supported')) # Success methods @@ -390,7 +395,7 @@ class BaseModelHandler(Handler): logger.debug('Returning success on %s %s', self.__class__, self._args) return OK - def test(self, type_: str): + def test(self, type_: str) -> None: # pylint: disable=unused-argument """ Invokes a test for an item """ @@ -439,7 +444,7 @@ class DetailHandler(BaseModelHandler): path: str, params: typing.Any, *args: str, - **kwargs: typing.Any + **kwargs: typing.Any, ): # pylint: disable=super-init-not-called """ Detail Handlers in fact "disabled" handler most initialization, that is no needed because @@ -472,9 +477,8 @@ class DetailHandler(BaseModelHandler): return None - def get( - self, - ) -> typing.Any: # pylint: disable=too-many-branches,too-many-return-statements + # pylint: disable=too-many-branches,too-many-return-statements + def get(self) -> typing.Any: """ Processes GET method for a detail Handler """ @@ -595,7 +599,7 @@ class DetailHandler(BaseModelHandler): # return [] # return {} # Returns one item raise NotImplementedError( - 'Must provide an getItems method for {} class'.format(self.__class__) + f'Must provide an getItems method for {self.__class__} class' ) # Default save @@ -852,10 +856,12 @@ class ModelHandler(BaseModelHandler): logger.debug('After filtering: %s', res) return res - except: + except Exception as e: logger.exception('Exception:') logger.info('Filtering expression %s is invalid!', self.fltr) - raise exceptions.RequestError('Filtering expression {} is invalid'.format(self.fltr)) + raise exceptions.RequestError( + f'Filtering expression {self.fltr} is invalid' + ) from e # Helper to process detail # Details can be managed (writen) by any user that has MANAGEMENT permission over parent @@ -883,9 +889,8 @@ class ModelHandler(BaseModelHandler): if not self.detail: raise self.invalidRequestException() - detailCls = self.detail[ - self._args[1] - ] # pylint: disable=unsubscriptable-object + # pylint: disable=unsubscriptable-object + detailCls = self.detail[self._args[1]] args = list(self._args[2:]) path = self._path + '/' + '/'.join(args[:2]) detail = detailCls( @@ -894,15 +899,15 @@ class ModelHandler(BaseModelHandler): method = getattr(detail, self._operation) return method() - except IndexError: - raise self.invalidItemException() - except (KeyError, AttributeError): - raise self.invalidMethodException() + except IndexError as e: + raise self.invalidItemException() from e + except (KeyError, AttributeError) as e: + raise self.invalidMethodException() from e except exceptions.HandlerError: raise except Exception as e: logger.error('Exception processing detail: %s', e) - raise self.invalidRequestException() + raise self.invalidRequestException() from e def getItems( self, *args, **kwargs @@ -950,7 +955,6 @@ class ModelHandler(BaseModelHandler): except Exception as e: # maybe an exception is thrown to skip an item logger.debug('Got exception processing item from model: %s', e) # logger.exception('Exception getting item from {0}'.format(self.model)) - pass def get(self) -> typing.Any: """ @@ -960,6 +964,7 @@ class ModelHandler(BaseModelHandler): self.extractFilter() return self.doFilter(self.doGet()) + # pylint: disable=too-many-return-statements def doGet(self) -> typing.Any: logger.debug('method GET for %s, %s', self.__class__.__name__, self._args) nArgs = len(self._args) @@ -991,8 +996,8 @@ class ModelHandler(BaseModelHandler): operation = None try: operation = getattr(self, self._args[0]) - except Exception: - raise self.invalidMethodException() + except Exception as e: + raise self.invalidMethodException() from e return operation() @@ -1020,9 +1025,9 @@ class ModelHandler(BaseModelHandler): res = self.item_as_dict(val) self.fillIntanceFields(val, res) return res - except Exception: + except Exception as e: logger.exception('Got Exception looking for item') - raise self.invalidItemException() + raise self.invalidItemException() from e # nArgs > 1 # Request type info or gui, or detail @@ -1046,8 +1051,8 @@ class ModelHandler(BaseModelHandler): uuid=self._args[0].lower() ) # DB maybe case sensitive??, anyway, uuids are stored in lowercase return self.getLogs(item) - except Exception: - raise self.invalidItemException() + except Exception as e: + raise self.invalidItemException() from e # If has detail and is requesting detail if self.detail is not None: @@ -1072,7 +1077,7 @@ class ModelHandler(BaseModelHandler): Processes a PUT request """ logger.debug('method PUT for %s, %s', self.__class__.__name__, self._args) - + # Append request to _params, may be needed by some classes # I.e. to get the user IP, server name, etc.. self._params['_request'] = self._request @@ -1147,7 +1152,7 @@ class ModelHandler(BaseModelHandler): res = self.item_as_dict(item) self.fillIntanceFields(item, res) - except Exception as e: + except Exception: logger.exception('Exception on put') if deleteOnError: item.delete() @@ -1158,16 +1163,18 @@ class ModelHandler(BaseModelHandler): return res except self.model.DoesNotExist: - raise exceptions.NotFound('Item not found') + raise exceptions.NotFound('Item not found') from None except IntegrityError: # Duplicate key probably - raise exceptions.RequestError('Element already exists (duplicate key error)') + raise exceptions.RequestError( + 'Element already exists (duplicate key error)' + ) from None except (exceptions.SaveException, g_exceptions.ValidationError) as e: - raise exceptions.RequestError(str(e)) + raise exceptions.RequestError(str(e)) from e except (exceptions.RequestError, exceptions.ResponseError): raise - except Exception: + except Exception as e: logger.exception('Exception on put') - raise exceptions.RequestError('incorrect invocation to PUT') + raise exceptions.RequestError('incorrect invocation to PUT') from e def delete(self) -> typing.Any: """ @@ -1189,7 +1196,7 @@ class ModelHandler(BaseModelHandler): self.checkDelete(item) self.deleteItem(item) except self.model.DoesNotExist: - raise exceptions.NotFound('Element do not exists') + raise exceptions.NotFound('Element do not exists') from None return OK diff --git a/server/src/uds/__init__.py b/server/src/uds/__init__.py index 965c66229..89034f7b0 100644 --- a/server/src/uds/__init__.py +++ b/server/src/uds/__init__.py @@ -38,6 +38,7 @@ import logging from django.db import connections from django.db.backends.signals import connection_created + # from django.db.models.signals import post_migrate from django.dispatch import receiver @@ -50,8 +51,8 @@ logger = logging.getLogger(__name__) # Set default ssl context unverified, as MOST servers that we will connect will be with self signed certificates... try: - _create_unverified_https_context = ssl._create_unverified_context - ssl._create_default_https_context = _create_unverified_https_context + # _create_unverified_https_context = ssl._create_unverified_context + # ssl._create_default_https_context = _create_unverified_https_context # Capture warnnins to logg logging.captureWarnings(True) @@ -69,17 +70,37 @@ class UDSAppConfig(AppConfig): # with ANY command from manage. logger.debug('Initializing app (ready) ***************') - # Now, ensures that all dynamic elements are loadad and present - # To make sure that the packages are initialized at this point + # Now, ensures that all dynamic elements are loaded and present + # To make sure that the packages are already initialized at this point + + # pylint: disable=unused-import,import-outside-toplevel from . import services + + # pylint: disable=unused-import,import-outside-toplevel from . import auths + + # pylint: disable=unused-import,import-outside-toplevel from . import mfas + + # pylint: disable=unused-import,import-outside-toplevel from . import osmanagers + + # pylint: disable=unused-import,import-outside-toplevel from . import notifiers + + # pylint: disable=unused-import,import-outside-toplevel from . import transports + + # pylint: disable=unused-import,import-outside-toplevel from . import reports + + # pylint: disable=unused-import,import-outside-toplevel from . import dispatchers + + # pylint: disable=unused-import,import-outside-toplevel from . import plugins + + # pylint: disable=unused-import,import-outside-toplevel from . import REST # Ensure notifications table exists on local sqlite db (called "persistent" on settings.py) @@ -96,8 +117,9 @@ default_app_config = 'uds.UDSAppConfig' # Sets up several sqlite non existing methodsm and some optimizations on sqlite +# pylint: disable=unused-argument @receiver(connection_created) -def extend_sqlite(connection=None, **kwargs): +def extend_sqlite(connection=None, **kwargs) -> None: if connection and connection.vendor == "sqlite": logger.debug('Connection vendor is sqlite, extending methods') cursor = connection.cursor() @@ -108,4 +130,3 @@ def extend_sqlite(connection=None, **kwargs): cursor.execute('PRAGMA mmap_size=67108864') connection.connection.create_function("MIN", 2, min) connection.connection.create_function("MAX", 2, max) - connection.connection.create_function("CEIL", 1, math.ceil) diff --git a/server/src/uds/auths/IP/authenticator.py b/server/src/uds/auths/IP/authenticator.py index 12f830be2..2c0708c2a 100644 --- a/server/src/uds/auths/IP/authenticator.py +++ b/server/src/uds/auths/IP/authenticator.py @@ -100,7 +100,7 @@ class IPAuth(auths.Authenticator): def authenticate( self, username: str, - credentials: str, + credentials: str, # pylint: disable=unused-argument groupsManager: 'auths.GroupsManager', request: 'ExtendedHttpRequest', ) -> auths.AuthenticationResult: @@ -123,7 +123,7 @@ class IPAuth(auths.Authenticator): def internalAuthenticate( self, username: str, - credentials: str, + credentials: str, # pylint: disable=unused-argument groupsManager: 'auths.GroupsManager', request: 'ExtendedHttpRequest', ) -> auths.AuthenticationResult: @@ -137,8 +137,8 @@ class IPAuth(auths.Authenticator): return auths.FAILED_AUTH @staticmethod - def test(env, data): - return _("All seems to be fine.") + def test(env, data): # pylint: disable=unused-argument + return [True, _("Internal structures seems ok")] def check(self): return _("All seems to be fine.") @@ -154,11 +154,9 @@ class IPAuth(auths.Authenticator): return ('function setVal(element, value) {{\n' # nosec: no user input, password is always EMPTY ' document.getElementById(element).value = value;\n' '}}\n' - 'setVal("id_user", "{ip}");\n' - 'setVal("id_password", "{passwd}");\n' - 'document.getElementById("loginform").submit();\n').format( - ip=ip, passwd='' - ) + f'setVal("id_user", "{ip}");\n' + 'setVal("id_password", "");\n' + 'document.getElementById("loginform").submit();\n') return 'alert("invalid authhenticator"); window.location.reload();' diff --git a/server/src/uds/auths/InternalDB/authenticator.py b/server/src/uds/auths/InternalDB/authenticator.py index 833e1bae6..b8028257c 100644 --- a/server/src/uds/auths/InternalDB/authenticator.py +++ b/server/src/uds/auths/InternalDB/authenticator.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2012-2019 Virtual Cable S.L. +# Copyright (c) 2012-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -12,7 +12,7 @@ # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # @@ -41,7 +41,7 @@ import dns.reversename from django.utils.translation import gettext_noop as _ from uds.core import auths from uds.core.ui import gui -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.util.state import State from uds.core.auths.auth import authLogLogin @@ -108,12 +108,13 @@ class InternalDBAuth(auths.Authenticator): def mfaIdentifier(self, username: str) -> str: try: - self.dbAuthenticator().users.get(name=username, state=State.ACTIVE).mfa_data + self.dbAuthenticator().users.get(name=username.lower(), state=State.ACTIVE).mfa_data except Exception: # nosec: This is e controled pickle loading pass return '' def transformUsername(self, username: str, request: 'ExtendedHttpRequest') -> str: + username = username.lower() if self.differentForEachHost.isTrue(): newUsername = ( (request.ip_proxy if self.acceptProxy.isTrue() else request.ip) @@ -147,6 +148,7 @@ class InternalDBAuth(auths.Authenticator): groupsManager: 'auths.GroupsManager', request: 'ExtendedHttpRequest', ) -> auths.AuthenticationResult: + username = username.lower() logger.debug('Username: %s, Password: %s', username, credentials) dbAuth = self.dbAuthenticator() try: @@ -159,7 +161,7 @@ class InternalDBAuth(auths.Authenticator): return auths.FAILED_AUTH # Internal Db Auth has its own groups. (That is, no external source). If a group is active it is valid - if cryptoManager().checkHash(credentials, user.password): + if CryptoManager().checkHash(credentials, user.password): groupsManager.validate([g.name for g in user.groups.all()]) return auths.SUCCESS_AUTH @@ -169,7 +171,7 @@ class InternalDBAuth(auths.Authenticator): def getGroups(self, username: str, groupsManager: 'auths.GroupsManager'): dbAuth = self.dbAuthenticator() try: - user: 'models.User' = dbAuth.users.get(name=username, state=State.ACTIVE) + user: 'models.User' = dbAuth.users.get(name=username.lower(), state=State.ACTIVE) except Exception: return @@ -178,7 +180,7 @@ class InternalDBAuth(auths.Authenticator): def getRealName(self, username: str) -> str: # Return the real name of the user, if it is set try: - user = self.dbAuthenticator().users.get(name=username, state=State.ACTIVE) + user = self.dbAuthenticator().users.get(name=username.lower(), state=State.ACTIVE) return user.real_name or username except Exception: return super().getRealName(username) @@ -187,7 +189,7 @@ class InternalDBAuth(auths.Authenticator): pass @staticmethod - def test(env, data): + def test(env, data): # pylint: disable=unused-argument return [True, _("Internal structures seems ok")] def check(self): diff --git a/server/src/uds/auths/Radius/__init__.py b/server/src/uds/auths/Radius/__init__.py index 1e26166aa..8e9f08d04 100644 --- a/server/src/uds/auths/Radius/__init__.py +++ b/server/src/uds/auths/Radius/__init__.py @@ -32,6 +32,6 @@ Sample authenticator. We import here the module, and uds.auths module will take care of registering it as provider -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from .authenticator import RadiusAuth diff --git a/server/src/uds/auths/Radius/authenticator.py b/server/src/uds/auths/Radius/authenticator.py index ae012dd1d..563b3dfd0 100644 --- a/server/src/uds/auths/Radius/authenticator.py +++ b/server/src/uds/auths/Radius/authenticator.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -37,7 +37,7 @@ from django.utils.translation import gettext_noop as _ from uds.core.ui import gui from uds.core import auths -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.auths.auth import authLogLogin from . import client @@ -207,9 +207,9 @@ class RadiusAuth(auths.Authenticator): connection = self.radiusClient() # Reply is not important... connection.authenticate( - cryptoManager().randomString(10), cryptoManager().randomString(10) + CryptoManager().randomString(10), CryptoManager().randomString(10) ) - except client.RadiusAuthenticationError as e: + except client.RadiusAuthenticationError: pass except Exception: logger.exception('Connecting') diff --git a/server/src/uds/auths/Radius/client.py b/server/src/uds/auths/Radius/client.py index eb5504b44..62b6040d2 100644 --- a/server/src/uds/auths/Radius/client.py +++ b/server/src/uds/auths/Radius/client.py @@ -207,9 +207,6 @@ class RadiusClient: if reply.code == pyrad.packet.AccessChallenge: state = typing.cast(typing.List[bytes], reply.get('State') or [b''])[0] - replyMessage = typing.cast( - typing.List[bytes], reply.get('Reply-Message') or [''] - )[0] return self.challenge_only(username, otp, state=state) # user/pwd accepted: but this user does not have challenge data @@ -229,7 +226,7 @@ class RadiusClient: return RadiusResult() def authenticate_challenge( - self, username: str, password: str = '', otp: str = '', state: bytes = b'' + self, username: str, password: str = '', otp: str = '', state: bytes = b'' # nosec: not a password, just an empty string ) -> RadiusResult: ''' wrapper for above 3 functions: authenticate_only, challenge_only, authenticate_and_challenge diff --git a/server/src/uds/auths/RegexLdap/authenticator.py b/server/src/uds/auths/RegexLdap/authenticator.py index 952a2f7e2..5446244cb 100644 --- a/server/src/uds/auths/RegexLdap/authenticator.py +++ b/server/src/uds/auths/RegexLdap/authenticator.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# pylint: disable=no-member # # Copyright (c) 2012-2022 Virtual Cable S.L.U. @@ -269,10 +269,10 @@ class RegexLdap(auths.Authenticator): pattern = '(' + pattern + ')' try: re.search(pattern, '') - except Exception: + except Exception as e: raise exceptions.ValidationError( - 'Invalid pattern in {0}: {1}'.format(fieldLabel, line) - ) + f'Invalid pattern in {fieldLabel}: {line}' + ) from e def __getAttrsFromField(self, field: str) -> typing.List[str]: res = [] @@ -486,9 +486,7 @@ class RegexLdap(auths.Authenticator): for usr in ldaputil.getAsDict( con=self.__connection(), base=self._ldapBase, - ldapFilter='(&(objectClass={})({}={}))'.format( - self._altClass, self._userIdAttr, ldaputil.escape(username) - ), + ldapFilter=f'(&(objectClass={self._altClass})({self._userIdAttr}={ldaputil.escape(username)}))', attrList=attributes, sizeLimit=LDAP_RESULT_LIMIT, ): @@ -555,7 +553,7 @@ class RegexLdap(auths.Authenticator): self.__connectAs( usr['dn'], credentials ) # Will raise an exception if it can't connect - except: + except Exception: authLogLogin( request, self.dbAuthenticator(), username, 'Invalid password' ) @@ -627,9 +625,7 @@ class RegexLdap(auths.Authenticator): for r in ldaputil.getAsDict( con=self.__connection(), base=self._ldapBase, - ldapFilter='(&(&(objectClass={})({}={}*)))'.format( - self._userClass, self._userIdAttr, ldaputil.escape(pattern) - ), + ldapFilter=f'(&(&(objectClass={self._userClass})({self._userIdAttr}={ldaputil.escape(pattern)}*)))', attrList=None, # All attrs sizeLimit=LDAP_RESULT_LIMIT, ): @@ -642,11 +638,11 @@ class RegexLdap(auths.Authenticator): ) logger.debug(res) return res - except Exception: + except Exception as e: logger.exception("Exception: ") raise auths.exceptions.AuthenticatorException( _('Too many results, be more specific') - ) + ) from e @staticmethod def test(env, data): @@ -676,7 +672,7 @@ class RegexLdap(auths.Authenticator): con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # ldap.SCOPE_* not resolved due to dynamic creation? - filterstr='(objectClass=%s)' % self._userClass, + filterstr=f'(objectClass={self._userClass})', sizelimit=1, ) ) @@ -700,8 +696,7 @@ class RegexLdap(auths.Authenticator): con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # ldap.SCOPE_* not resolved due to dynamic creation? - filterstr='(&(objectClass=%s)(%s=*))' - % (self._userClass, self._userIdAttr), + filterstr=f'(&(objectClass={self._userClass})({self._userIdAttr}=*))', sizelimit=1, ) ) @@ -728,7 +723,7 @@ class RegexLdap(auths.Authenticator): con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # ldap.SCOPE_* not resolved due to dynamic creation? - filterstr='(%s=*)' % vals, + filterstr=f'({vals}=*)', sizelimit=1, ) ) @@ -759,15 +754,8 @@ class RegexLdap(auths.Authenticator): ] def __str__(self): - return "Ldap Auth: {}:{}@{}:{}, base = {}, userClass = {}, userIdAttr = {}, groupNameAttr = {}, userName attr = {}, altClass={}".format( - self._username, - self._password, - self._host, - self._port, - self._ldapBase, - self._userClass, - self._userIdAttr, - self._groupNameAttr, - self._userNameAttr, - self._altClass, + return ( + f'Ldap Auth: {self._username}:{self._password}@{self._host}:{self._port},' + f' base = {self._ldapBase}, userClass = {self._userClass}, userIdAttr = {self._userIdAttr},' + f' groupNameAttr = {self._groupNameAttr}, userName attr = {self._userNameAttr}, altClass={self._altClass}' ) diff --git a/server/src/uds/auths/SAML/__init__.py b/server/src/uds/auths/SAML/__init__.py index 5af5252be..fdbc90dc3 100644 --- a/server/src/uds/auths/SAML/__init__.py +++ b/server/src/uds/auths/SAML/__init__.py @@ -27,7 +27,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from uds.core import managers from .saml import SAMLAuthenticator # import for registration on space, diff --git a/server/src/uds/auths/SAML/config.py b/server/src/uds/auths/SAML/config.py index 415348859..d551af79d 100644 --- a/server/src/uds/auths/SAML/config.py +++ b/server/src/uds/auths/SAML/config.py @@ -4,9 +4,7 @@ from uds.core.util.config import Config ORGANIZATION_NAME = Config.section('SAML').value('Organization Name', 'UDS', help='Organization name to display on SAML SP Metadata') ORGANIZATION_DISPLAY = Config.section('SAML').value('Org. Display Name', 'UDS Organization', help='Organization Display name to display on SAML SP Metadata') ORGANIZATION_URL = Config.section('SAML').value('Organization URL', 'http://www.udsenterprise.com', help='Organization url to display on SAML SP Metadata') -IDP_METADATA_CACHE = Config.section('SAML').value('IDP Metadata cache') ORGANIZATION_NAME.get() ORGANIZATION_DISPLAY.get() ORGANIZATION_URL.get() -IDP_METADATA_CACHE.getInt() diff --git a/server/src/uds/auths/SAML/saml.py b/server/src/uds/auths/SAML/saml.py index bfe2aa28f..a1f7c935d 100644 --- a/server/src/uds/auths/SAML/saml.py +++ b/server/src/uds/auths/SAML/saml.py @@ -28,29 +28,29 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import re from urllib.parse import urlparse import xml.sax # nosec: used to parse trusted xml provided only by administrators import datetime -import requests import logging import typing +import requests + from onelogin.saml2.auth import OneLogin_Saml2_Auth -from onelogin.saml2.utils import OneLogin_Saml2_Utils from onelogin.saml2.idp_metadata_parser import OneLogin_Saml2_IdPMetadataParser from onelogin.saml2.settings import OneLogin_Saml2_Settings from django.utils.translation import gettext_noop as _, gettext -from uds.models import getSqlDatetime +from uds.core.util.model import getSqlDatetime from uds.core.ui import gui from uds.core import auths, exceptions -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.util.decorators import allowCache -from uds.core.util import certs +from uds.core.util import security from . import config @@ -121,9 +121,7 @@ class SAMLAuthenticator(auths.Authenticator): multiline=10, label=_('Private key'), order=1, - tooltip=_( - 'Private key used for sign and encription, as generated in base 64 from openssl' - ), + tooltip=_('Private key used for sign and encription, as generated in base 64 from openssl'), required=True, tab=_('Certificates'), ) @@ -143,9 +141,7 @@ class SAMLAuthenticator(auths.Authenticator): multiline=4, label=_('IDP Metadata'), order=3, - tooltip=_( - 'You can enter here the URL or the IDP metadata or the metadata itself (xml)' - ), + tooltip=_('You can enter here the URL or the IDP metadata or the metadata itself (xml)'), required=True, tab=_('Metadata'), ) @@ -153,9 +149,7 @@ class SAMLAuthenticator(auths.Authenticator): length=256, label=_('Entity ID'), order=4, - tooltip=_( - 'ID of the SP. If left blank, this will be autogenerated from server URL' - ), + tooltip=_('ID of the SP. If left blank, this will be autogenerated from server URL'), tab=_('Metadata'), ) @@ -334,19 +328,14 @@ class SAMLAuthenticator(auths.Authenticator): if ' ' in values['name']: raise exceptions.ValidationError( - gettext( - 'This kind of Authenticator does not support white spaces on field NAME' - ) + gettext('This kind of Authenticator does not support white spaces on field NAME') ) # First, validate certificates self.cache.remove('idpMetadata') # This is in fact not needed, but we may say something useful to user if we check this - if ( - self.serverCertificate.value.startswith('-----BEGIN CERTIFICATE-----\n') - is False - ): + if self.serverCertificate.value.startswith('-----BEGIN CERTIFICATE-----\n') is False: raise exceptions.ValidationError( gettext( 'Server certificate should be a valid PEM (PEM certificates starts with -----BEGIN CERTIFICATE-----)' @@ -354,17 +343,13 @@ class SAMLAuthenticator(auths.Authenticator): ) try: - cryptoManager().loadCertificate(self.serverCertificate.value) + CryptoManager().loadCertificate(self.serverCertificate.value) except Exception as e: - raise exceptions.ValidationError( - gettext('Invalid server certificate. ') + str(e) - ) + raise exceptions.ValidationError(gettext('Invalid server certificate. ') + str(e)) if ( - self.privateKey.value.startswith('-----BEGIN RSA PRIVATE KEY-----\n') - is False - and self.privateKey.value.startswith('-----BEGIN PRIVATE KEY-----\n') - is False + self.privateKey.value.startswith('-----BEGIN RSA PRIVATE KEY-----\n') is False + and self.privateKey.value.startswith('-----BEGIN PRIVATE KEY-----\n') is False ): raise exceptions.ValidationError( gettext( @@ -373,14 +358,14 @@ class SAMLAuthenticator(auths.Authenticator): ) try: - pk = cryptoManager().loadPrivateKey(self.privateKey.value) + CryptoManager().loadPrivateKey(self.privateKey.value) except Exception as e: raise exceptions.ValidationError(gettext('Invalid private key. ') + str(e)) - if not certs.checkCertificateMatchPrivateKey(cert=self.serverCertificate.value, key=self.privateKey.value): - raise exceptions.ValidationError( - gettext('Certificate and private key do not match') - ) + if not security.checkCertificateMatchPrivateKey( + cert=self.serverCertificate.value, key=self.privateKey.value + ): + raise exceptions.ValidationError(gettext('Certificate and private key do not match')) request: 'ExtendedHttpRequest' = values['_request'] @@ -395,14 +380,14 @@ class SAMLAuthenticator(auths.Authenticator): logger.debug('idp Metadata is an URL: %s', idpMetadata) try: resp = requests.get( - idpMetadata.split('\n')[0], verify=self.checkSSLCertificate.isTrue() + idpMetadata.split('\n')[0], + verify=self.checkSSLCertificate.isTrue(), + timeout=10, ) idpMetadata = resp.content.decode() except Exception as e: raise exceptions.ValidationError( - gettext('Can\'t fetch url {0}: {1}').format( - self.idpMetadata.value, str(e) - ) + gettext('Can\'t fetch url {0}: {1}').format(self.idpMetadata.value, str(e)) ) fromUrl = True @@ -412,9 +397,7 @@ class SAMLAuthenticator(auths.Authenticator): xml.sax.parseString(idpMetadata, xml.sax.ContentHandler()) # type: ignore # nosec: url provided by admin except Exception as e: msg = (gettext(' (obtained from URL)') if fromUrl else '') + str(e) - raise exceptions.ValidationError( - gettext('XML does not seem valid for IDP Metadata ') + msg - ) + raise exceptions.ValidationError(gettext('XML does not seem valid for IDP Metadata ') + msg) # Now validate regular expressions, if they exists self.validateField(self.userNameAttr) @@ -424,12 +407,17 @@ class SAMLAuthenticator(auths.Authenticator): def getReqFromRequest( self, request: 'ExtendedHttpRequest', - params: typing.Dict[str, typing.Any] = {}, + params: typing.Optional[typing.Dict[str, typing.Any]] = None, ) -> typing.Dict[str, typing.Any]: manageUrlObj = urlparse(self.manageUrl.value) script_path = manageUrlObj.path + # If callback parameters are passed, we use them if params: + # Remove next 3 lines, just for testing and debugging + # params['http_host'] = '172.27.0.1' + # params['server_port'] = '8000' + # params['https'] = False return { 'https': ['off', 'on'][params.get('https', False)], 'http_host': params['http_host'], @@ -455,26 +443,20 @@ class SAMLAuthenticator(auths.Authenticator): @allowCache( cachePrefix='idpm', cachingKeyFnc=CACHING_KEY_FNC, - cacheTimeout=3600*24*365, # 1 year + cacheTimeout=3600 * 24 * 365, # 1 year ) - def getIdpMetadataDict(self, **kwargs) -> typing.Dict[str, typing.Any]: + def getIdpMetadataDict(self) -> typing.Dict[str, typing.Any]: if self.idpMetadata.value.startswith('http'): try: resp = requests.get( self.idpMetadata.value.split('\n')[0], verify=self.checkSSLCertificate.isTrue(), + timeout=10, ) val = resp.content.decode() except Exception as e: logger.error('Error fetching idp metadata: %s', e) - raise auths.exceptions.AuthenticatorException( - gettext('Can\'t access idp metadata') - ) - self.cache.put( - 'idpMetadata', - val, - config.IDP_METADATA_CACHE.getInt(True), - ) + raise auths.exceptions.AuthenticatorException(gettext('Can\'t access idp metadata')) else: val = self.idpMetadata.value @@ -530,6 +512,11 @@ class SAMLAuthenticator(auths.Authenticator): }, } + @allowCache( + cachePrefix='spm', + cachingKeyFnc=CACHING_KEY_FNC, + cacheTimeout=3600, # 1 hour + ) def getSpMetadata(self) -> str: saml_settings = OneLogin_Saml2_Settings(settings=self.oneLoginSettings()) metadata = saml_settings.get_sp_metadata() @@ -540,8 +527,7 @@ class SAMLAuthenticator(auths.Authenticator): ) if isinstance(metadata, str): return metadata - else: - return typing.cast(bytes, metadata).decode() + return typing.cast(bytes, metadata).decode() def validateField(self, field: gui.TextField): """ @@ -555,14 +541,10 @@ class SAMLAuthenticator(auths.Authenticator): pattern = '(' + pattern + ')' try: re.search(pattern, '') - except: - raise exceptions.ValidationError( - 'Invalid pattern at {0}: {1}'.format(field.label, line) - ) + except Exception as e: + raise exceptions.ValidationError(f'Invalid pattern at {field.label}: {line}') from e - def processField( - self, field: str, attributes: typing.Dict[str, typing.List] - ) -> typing.List[str]: + def processField(self, field: str, attributes: typing.Dict[str, typing.List]) -> typing.List[str]: res = [] for line in field.splitlines(): equalPos = line.find('=') @@ -600,9 +582,7 @@ class SAMLAuthenticator(auths.Authenticator): content_type = 'text/html' if wantsHtml else 'application/samlmetadata+xml' info = ( - '
'.join(info.replace('<', '<').splitlines()) - if parameters.get('format') == 'html' - else info + '
'.join(info.replace('<', '<').splitlines()) if parameters.get('format') == 'html' else info ) return info, content_type # 'application/samlmetadata+xml') @@ -627,19 +607,27 @@ class SAMLAuthenticator(auths.Authenticator): else: req['get_data']['SAMLResponse'] = req['post_data']['SAMLResponse'] + logoutRequestId = request.session.get('samlLogoutRequestId', None) + + # Cleanup session & session cookie + request.session.flush() + settings = OneLogin_Saml2_Settings(settings=self.oneLoginSettings()) auth = OneLogin_Saml2_Auth(req, settings) - dscb = lambda: request.session.flush() - - url = auth.process_slo(delete_session_cb=dscb) + url = auth.process_slo(request_id=logoutRequestId) errors = auth.get_errors() if errors: - raise auths.exceptions.AuthenticatorException( - gettext('Error processing SLO: ') + str(errors) - ) + logger.debug('Error on SLO: %s', auth.get_last_response_xml()) + logger.debug('post_data: %s', req['post_data']) + logger.info('Errors processing logout request: %s', errors) + raise auths.exceptions.AuthenticatorException(gettext('Error processing SLO: ') + str(errors)) + + # Remove MFA related data + if request.user: + self.mfaClean(request.user.name) return auths.AuthenticationResult( success=auths.AuthenticationSuccess.REDIRECT, @@ -663,19 +651,13 @@ class SAMLAuthenticator(auths.Authenticator): auth = OneLogin_Saml2_Auth(req, settings) auth.process_response() except Exception as e: - raise auths.exceptions.AuthenticatorException( - gettext('Error processing SAML response: ') + str(e) - ) + raise auths.exceptions.AuthenticatorException(gettext('Error processing SAML response: ') + str(e)) errors = auth.get_errors() if errors: - raise auths.exceptions.AuthenticatorException( - 'SAML response error: ' + str(errors) - ) + raise auths.exceptions.AuthenticatorException('SAML response error: ' + str(errors)) if not auth.is_authenticated(): - raise auths.exceptions.AuthenticatorException( - gettext('SAML response not authenticated') - ) + raise auths.exceptions.AuthenticatorException(gettext('SAML response not authenticated')) # Store SAML attributes request.session['SAML'] = { @@ -703,13 +685,13 @@ class SAMLAuthenticator(auths.Authenticator): attributes.update(auth.get_friendlyname_attributes()) if not attributes: - raise auths.exceptions.AuthenticatorException( - gettext('No attributes returned from IdP') - ) + raise auths.exceptions.AuthenticatorException(gettext('No attributes returned from IdP')) logger.debug("Attributes: %s", attributes) # Now that we have attributes, we can extract values from this, map groups, etc... - username = ''.join(self.processField(self.userNameAttr.value, attributes)) + username = ''.join( + self.processField(self.userNameAttr.value, attributes) + ) # in case of multiple values is returned, join them logger.debug('Username: %s', username) groups = self.processField(self.groupNameAttr.value, attributes) @@ -721,16 +703,22 @@ class SAMLAuthenticator(auths.Authenticator): # store groups for this username at storage, so we can check it at a later stage self.storage.putPickle(username, [realName, groups]) + # store also the mfa identifier field value, in case we have provided it + if self.mfaAttr.value.strip(): + self.storage.putPickle( + self.mfaStorageKey(username), + ''.join(self.processField(self.mfaAttr.value, attributes)), + ) # in case multipel values is returned, join them + else: + self.storage.remove(self.mfaStorageKey(username)) + # Now we check validity of user + gm.validate(groups) - return auths.AuthenticationResult( - success=auths.AuthenticationSuccess.OK, username=username - ) + return auths.AuthenticationResult(success=auths.AuthenticationSuccess.OK, username=username) - def logout( - self, request: 'ExtendedHttpRequest', username: str - ) -> auths.AuthenticationResult: + def logout(self, request: 'ExtendedHttpRequest', username: str) -> auths.AuthenticationResult: if not self.globalLogout.isTrue(): return auths.SUCCESS_AUTH @@ -742,6 +730,15 @@ class SAMLAuthenticator(auths.Authenticator): saml = request.session.get('SAML', {}) + # Clear user data from session + request.session.clear() + + # Remove MFA related data + self.mfaClean(username) + + if not saml: + return auths.SUCCESS_AUTH + return auths.AuthenticationResult( success=auths.AuthenticationSuccess.REDIRECT, url=auth.logout( @@ -772,7 +769,7 @@ class SAMLAuthenticator(auths.Authenticator): req = self.getReqFromRequest(request) auth = OneLogin_Saml2_Auth(req, self.oneLoginSettings()) - return 'window.location="{0}";'.format(auth.login()) + return f'window.location="{auth.login()}";' def removeUser(self, username): """ diff --git a/server/src/uds/auths/Sample/SampleAuth.py b/server/src/uds/auths/Sample/SampleAuth.py index f4b97faa3..c5243bae7 100644 --- a/server/src/uds/auths/Sample/SampleAuth.py +++ b/server/src/uds/auths/Sample/SampleAuth.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -118,7 +118,9 @@ class SampleAuth(auths.Authenticator): # : We will define a simple form where we will use a simple # : list editor to allow entering a few group names - groups = gui.EditableListField(label=_('Groups'), values=['Gods', 'Daemons', 'Mortals']) + groups = gui.EditableListField( + label=_('Groups'), values=['Gods', 'Daemons', 'Mortals'] + ) def initialize(self, values: typing.Optional[typing.Dict[str, typing.Any]]) -> None: """ @@ -131,9 +133,7 @@ class SampleAuth(auths.Authenticator): # unserialization, and at this point all will be default values # so self.groups.value will be [] if values and len(self.groups.value) < 2: - raise exceptions.ValidationError( - _('We need more than two groups!') - ) + raise exceptions.ValidationError(_('We need more than two groups!')) def searchUsers(self, pattern: str) -> typing.Iterable[typing.Dict[str, str]]: """ @@ -147,8 +147,8 @@ class SampleAuth(auths.Authenticator): """ return [ { - 'id': '{0}-{1}'.format(pattern, a), - 'name': '{0} number {1}'.format(pattern, a), + 'id': f'{pattern}-{a}', + 'name': f'{pattern} number {a}', } for a in range(1, 10) ] @@ -173,7 +173,7 @@ class SampleAuth(auths.Authenticator): username: str, credentials: str, groupsManager: 'GroupsManager', - request: 'ExtendedHttpRequest', + request: 'ExtendedHttpRequest', # pylint: disable=unused-argument ) -> auths.AuthenticationResult: """ This method is invoked by UDS whenever it needs an user to be authenticated. @@ -246,7 +246,9 @@ class SampleAuth(auths.Authenticator): if len(set(g.lower()).intersection(username.lower())) >= 2: groupsManager.validate(g) - def getJavascript(self, request: 'HttpRequest') -> typing.Optional[str]: + def getJavascript( + self, request: 'HttpRequest' # pylint: disable=unused-argument + ) -> typing.Optional[str]: """ If we override this method from the base one, we are telling UDS that we want to draw our own authenticator. @@ -278,7 +280,10 @@ class SampleAuth(auths.Authenticator): return res def authCallback( - self, parameters: typing.Dict[str, typing.Any], gm: 'auths.GroupsManager', request: 'ExtendedHttpRequestWithUser' + self, + parameters: typing.Dict[str, typing.Any], + gm: 'auths.GroupsManager', # pylint: disable=unused-argument + request: 'ExtendedHttpRequestWithUser', # pylint: disable=unused-argument ) -> AuthenticationResult: """ We provide this as a sample of callback for an user. @@ -313,7 +318,7 @@ class SampleAuth(auths.Authenticator): Here, we will set the state to "Inactive" and realName to the same as username, but twice :-) """ - from uds.core.util.state import State + from uds.core.util.state import State # pylint: disable=import-outside-toplevel usrData['real_name'] = usrData['name'] + ' ' + usrData['name'] usrData['state'] = State.INACTIVE diff --git a/server/src/uds/auths/Sample/__init__.py b/server/src/uds/auths/Sample/__init__.py index 6ace74141..a5c28cbc3 100644 --- a/server/src/uds/auths/Sample/__init__.py +++ b/server/src/uds/auths/Sample/__init__.py @@ -32,7 +32,7 @@ Sample authenticator. We import here the module, and uds.auths module will take care of registering it as provider -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from .SampleAuth import SampleAuth diff --git a/server/src/uds/auths/SimpleLDAP/authenticator.py b/server/src/uds/auths/SimpleLDAP/authenticator.py index 02e9f39b4..062faa513 100644 --- a/server/src/uds/auths/SimpleLDAP/authenticator.py +++ b/server/src/uds/auths/SimpleLDAP/authenticator.py @@ -1,5 +1,4 @@ -# -*- coding: utf-8 -*- - +# pylint: disable=no-member # ldap module gives errors to pylint # # Copyright (c) 2012-2021 Virtual Cable S.L.U. # All rights reserved. @@ -51,9 +50,8 @@ logger = logging.getLogger(__name__) LDAP_RESULT_LIMIT = 100 - +# pylint: disable=too-many-instance-attributes class SimpleLDAPAuthenticator(auths.Authenticator): - host = gui.TextField( length=64, label=_('Host'), @@ -192,13 +190,12 @@ class SimpleLDAPAuthenticator(auths.Authenticator): order=13, tooltip=_('Attribute from where to extract the MFA code'), required=False, - tab=gui.MFA_TAB, + tab=gui.Tab.MFA, ) - - typeName = _('SimpleLDAP (DEPRECATED)') + typeName = _('SimpleLDAP') typeType = 'SimpleLdapAuthenticator' - typeDescription = _('Simple LDAP authenticator (DEPRECATED)') + typeDescription = _('Simple LDAP authenticator') iconFile = 'auth.png' # If it has and external source where to get "new" users (groups must be declared inside UDS) @@ -230,7 +227,6 @@ class SimpleLDAPAuthenticator(auths.Authenticator): _verifySsl: bool = True _certificate: str = '' - def initialize(self, values: typing.Optional[typing.Dict[str, typing.Any]]) -> None: if values: self._host = values['host'] @@ -319,12 +315,8 @@ class SimpleLDAPAuthenticator(auths.Authenticator): ) = vals[1:14] self._ssl = gui.toBool(ssl) - if vals[0] == 'v2': - ( - self._mfaAttr, - verifySsl, - self._certificate - ) = vals[14:17] + if vals[0] == 'v2': + (self._mfaAttr, verifySsl, self._certificate) = vals[14:17] self._verifySsl = gui.toBool(verifySsl) def mfaStorageKey(self, username: str) -> str: @@ -333,9 +325,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): def mfaIdentifier(self, username: str) -> str: return self.storage.getPickle(self.mfaStorageKey(username)) or '' - def __connection( - self - ): + def __connection(self): """ Tries to connect to ldap. If username is None, it tries to connect using user provided credentials. @return: Connection established @@ -376,7 +366,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): @return: None if username is not found, an dictionary of LDAP entry attributes if found. @note: Active directory users contains the groups it belongs to in "memberOf" attribute """ - attributes = [i for i in self._userNameAttr.split(',') + [self._userIdAttr]] + attributes = self._userNameAttr.split(',') + [self._userIdAttr] if self._mfaAttr: attributes = attributes + [self._mfaAttr] @@ -410,13 +400,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): try: groups: typing.List[str] = [] - filter_ = '(&(objectClass=%s)(|(%s=%s)(%s=%s)))' % ( - self._groupClass, - self._memberAttr, - user['_id'], - self._memberAttr, - user['dn'], - ) + filter_ = f'(&(objectClass={self._groupClass})(|({self._memberAttr}={user["_id"]})({self._memberAttr}={user["dn"]})))' for d in ldaputil.getAsDict( con=self.__connection(), base=self._ldapBase, @@ -450,7 +434,11 @@ class SimpleLDAPAuthenticator(auths.Authenticator): ).strip() def authenticate( - self, username: str, credentials: str, groupsManager: 'auths.GroupsManager', request: 'ExtendedHttpRequest' + self, + username: str, + credentials: str, + groupsManager: 'auths.GroupsManager', + request: 'ExtendedHttpRequest', ) -> auths.AuthenticationResult: ''' Must authenticate the user. @@ -466,9 +454,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): user = self.__getUser(username) if user is None: - authLogLogin( - request, self.dbAuthenticator(), username, 'Invalid user' - ) + authLogLogin(request, self.dbAuthenticator(), username, 'Invalid user') return auths.FAILED_AUTH try: @@ -476,7 +462,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): self.__connectAs( user['dn'], credentials ) # Will raise an exception if it can't connect - except: + except Exception: authLogLogin( request, self.dbAuthenticator(), username, 'Invalid password' ) @@ -556,8 +542,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): for r in ldaputil.getAsDict( con=self.__connection(), base=self._ldapBase, - ldapFilter='(&(objectClass=%s)(%s=%s*))' - % (self._userClass, self._userIdAttr, pattern), + ldapFilter=f'(&(objectClass={self._userClass})({self._userIdAttr}={pattern}*))', attrList=[self._userIdAttr, self._userNameAttr], sizeLimit=LDAP_RESULT_LIMIT, ): @@ -569,11 +554,11 @@ class SimpleLDAPAuthenticator(auths.Authenticator): ) return res - except Exception: + except Exception as e: logger.exception("Exception: ") raise auths.exceptions.AuthenticatorException( _('Too many results, be more specific') - ) + ) from e def searchGroups(self, pattern: str) -> typing.Iterable[typing.Dict[str, str]]: try: @@ -581,19 +566,18 @@ class SimpleLDAPAuthenticator(auths.Authenticator): for r in ldaputil.getAsDict( con=self.__connection(), base=self._ldapBase, - ldapFilter='(&(objectClass=%s)(%s=%s*))' - % (self._groupClass, self._groupIdAttr, pattern), + ldapFilter=f'(&(objectClass={self._groupClass})({self._groupIdAttr}={pattern}*))', attrList=[self._groupIdAttr, 'memberOf', 'description'], sizeLimit=LDAP_RESULT_LIMIT, ): res.append({'id': r[self._groupIdAttr][0], 'name': r['description'][0]}) return res - except Exception: + except Exception as e: logger.exception("Exception: ") raise auths.exceptions.AuthenticatorException( _('Too many results, be more specific') - ) + ) from e @staticmethod def test(env, data) -> typing.List[typing.Any]: @@ -620,7 +604,17 @@ class SimpleLDAPAuthenticator(auths.Authenticator): return [False, _('Ldap search base is incorrect')] try: - if len(con.search_ext_s(base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, filterstr='(objectClass=%s)' % self._userClass, sizelimit=1)) == 1: # type: ignore # SCOPE.. exists on LDAP after load + if ( + len( + con.search_ext_s( + base=self._ldapBase, + scope=ldap.SCOPE_SUBTREE, # type: ignore # SCOPE.. exists on LDAP after load + filterstr=f'(objectClass={self._userClass})', + sizelimit=1, + ) + ) + == 1 + ): raise Exception() return [ False, @@ -628,7 +622,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): 'Ldap user class seems to be incorrect (no user found by that class)' ), ] - except Exception as e: # nosec: Flow control + except Exception: # nosec: Flow control # If found 1 or more, all right pass @@ -638,7 +632,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # SCOPE.. exists on LDAP after load - filterstr='(objectClass=%s)' % self._groupClass, + filterstr=f'(objectClass={self._groupClass})', sizelimit=1, ) ) @@ -651,7 +645,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): 'Ldap group class seems to be incorrect (no group found by that class)' ), ] - except Exception as e: # nosec: Flow control + except Exception: # nosec: Flow control # If found 1 or more, all right pass @@ -661,7 +655,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # SCOPE.. exists on LDAP after load - filterstr='(%s=*)' % self._userIdAttr, + filterstr=f'({self._userIdAttr}=*)', sizelimit=1, ) ) @@ -674,7 +668,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): 'Ldap user id attribute seems to be incorrect (no user found by that attribute)' ), ] - except Exception as e: # nosec: Flow control + except Exception: # nosec: Flow control # If found 1 or more, all right pass @@ -684,7 +678,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # SCOPE.. exists on LDAP after load - filterstr='(%s=*)' % self._groupIdAttr, + filterstr=f'({self._groupIdAttr}=*)', sizelimit=1, ) ) @@ -697,7 +691,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): 'Ldap group id attribute seems to be incorrect (no group found by that attribute)' ), ] - except Exception as e: # nosec: Flow control + except Exception: # nosec: Flow control # If found 1 or more, all right pass @@ -708,8 +702,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # SCOPE.. exists on LDAP after load - filterstr='(&(objectClass=%s)(%s=*))' - % (self._userClass, self._userIdAttr), + filterstr=f'(&(objectClass={self._userClass})({self._userIdAttr}=*))', sizelimit=1, ) ) @@ -722,7 +715,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): 'Ldap user class or user id attr is probably wrong (can\'t find any user with both conditions)' ), ] - except Exception as e: # nosec: Flow control + except Exception: # nosec: Flow control # If found 1 or more, all right pass @@ -731,8 +724,7 @@ class SimpleLDAPAuthenticator(auths.Authenticator): res = con.search_ext_s( base=self._ldapBase, scope=ldap.SCOPE_SUBTREE, # type: ignore # SCOPE.. exists on LDAP after load - filterstr='(&(objectClass=%s)(%s=*))' - % (self._groupClass, self._groupIdAttr), + filterstr=f'(&(objectClass={self._groupClass})({self._groupIdAttr}=*))', attrlist=[self._memberAttr], ) if not res: @@ -759,16 +751,9 @@ class SimpleLDAPAuthenticator(auths.Authenticator): ] def __str__(self): - return "Ldap Auth: {0}:{1}@{2}:{3}, base = {4}, userClass = {5}, groupClass = {6}, userIdAttr = {7}, groupIdAttr = {8}, memberAttr = {9}, userName attr = {10}".format( - self._username, - self._password, - self._host, - self._port, - self._ldapBase, - self._userClass, - self._groupClass, - self._userIdAttr, - self._groupIdAttr, - self._memberAttr, - self._userNameAttr, + return ( + f'Ldap Auth: {self._username}:{self._password}@{self._host}:{self._port}, ' + f'base = {self._ldapBase}, userClass = {self._userClass}, groupClass = {self._groupClass}, ' + f'userIdAttr = {self._userIdAttr}, groupIdAttr = {self._groupIdAttr}, ' + f'memberAttr = {self._memberAttr}, userName attr = {self._userNameAttr}' ) diff --git a/server/src/uds/auths/__init__.py b/server/src/uds/auths/__init__.py index d77f51889..0829263b2 100644 --- a/server/src/uds/auths/__init__.py +++ b/server/src/uds/auths/__init__.py @@ -38,7 +38,7 @@ To create a new authentication module, you will need to follow this steps: The registration of modules is done locating subclases of :py:class:`uds.core.auths.Authentication` -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from uds.core.util import modfinder diff --git a/server/src/uds/core/__init__.py b/server/src/uds/core/__init__.py index 26d20ca6d..a92f9e2a4 100644 --- a/server/src/uds/core/__init__.py +++ b/server/src/uds/core/__init__.py @@ -34,13 +34,8 @@ This package contains all core-related code for UDS """ import time -# Core needs tasks manager to register scheduled jobs, so we ensure of that here -from .environment import Environmentable -from .serializable import Serializable -from .module import Module - VERSION = '4.x.x-DEVEL' -VERSION_STAMP = '{}-DEVEL'.format(time.strftime("%Y%m%d")) +VERSION_STAMP = f'{time.strftime("%Y%m%d")}-DEVEL' # Minimal uds client version required to connect to this server -REQUIRED_CLIENT_VERSION = '3.5.0' \ No newline at end of file +REQUIRED_CLIENT_VERSION = '3.6.0' diff --git a/server/src/uds/core/auths/__init__.py b/server/src/uds/core/auths/__init__.py index 82efccae6..5e21a8347 100644 --- a/server/src/uds/core/auths/__init__.py +++ b/server/src/uds/core/auths/__init__.py @@ -30,7 +30,7 @@ """ UDS authentication related interfaces and classes -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from .authenticator import ( Authenticator, diff --git a/server/src/uds/core/auths/auth.py b/server/src/uds/core/auths/auth.py index ddffff970..3c797fb66 100644 --- a/server/src/uds/core/auths/auth.py +++ b/server/src/uds/core/auths/auth.py @@ -30,7 +30,7 @@ Provides useful functions for authenticating, used by web interface. -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' import logging import typing @@ -54,7 +54,7 @@ from uds.core.util import net from uds.core.util.config import GlobalConfig from uds.core.util.stats import events from uds.core.util.state import State -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.auths import Authenticator as AuthenticatorInstance, SUCCESS_AUTH from uds import models @@ -73,6 +73,7 @@ EXPIRY_KEY = 'ek' AUTHORIZED_KEY = 'ak' ROOT_ID = -20091204 # Any negative number will do the trick UDS_COOKIE_LENGTH = 48 +IP_KEY = 'session_ip' RT = typing.TypeVar('RT') @@ -91,9 +92,14 @@ def getUDSCookie( Generates a random cookie for uds, used, for example, to encript things """ if 'uds' not in request.COOKIES: - cookie = cryptoManager().randomString(UDS_COOKIE_LENGTH) + cookie = CryptoManager().randomString(UDS_COOKIE_LENGTH) if response is not None: - response.set_cookie('uds', cookie, samesite='Lax') + response.set_cookie( + 'uds', + cookie, + samesite='Lax', + httponly=GlobalConfig.ENHANCED_SECURITY.getBool(), + ) request.COOKIES['uds'] = cookie else: cookie = request.COOKIES['uds'][:UDS_COOKIE_LENGTH] @@ -163,7 +169,7 @@ def webLoginRequired( if not request.user or not request.authorized: return HttpResponseRedirect(reverse('page.login')) - if admin in (True, 'admin'): + if admin in (True, 'admin'): if request.user.isStaff() is False or ( admin == 'admin' and not request.user.is_admin ): @@ -197,7 +203,7 @@ def trustedSourceRequired( try: if not isTrustedSource(request.ip): return HttpResponseForbidden() - except Exception as e: + except Exception: logger.warning( 'Error checking trusted source: "%s" does not seems to be a valid network string. Using Unrestricted access.', GlobalConfig.TRUSTED_SOURCES.get(), @@ -397,7 +403,9 @@ def webLogin( Helper function to, once the user is authenticated, store the information at the user session. @return: Always returns True """ - from uds import REST + from uds import ( # pylint: disable=import-outside-toplevel # to avoid circular imports + REST, + ) if ( user.id != ROOT_ID @@ -413,12 +421,16 @@ def webLogin( request.authorized = ( False # For now, we don't know if the user is authorized until MFA is checked ) + # Store request ip in session + request.session[IP_KEY] = request.ip # If Enabled zero trust, do not cache credentials if GlobalConfig.ENFORCE_ZERO_TRUST.getBool(False): password = '' # nosec: clear password if zero trust is enabled request.session[USER_KEY] = user.id - request.session[PASS_KEY] = codecs.encode(cryptoManager().symCrypt(password, cookie), "base64").decode() # as str + request.session[PASS_KEY] = codecs.encode( + CryptoManager().symCrypt(password, cookie), "base64" + ).decode() # as str # Ensures that this user will have access through REST api if logged in through web interface # Note that REST api will set the session expiry to selected value if user is an administrator @@ -444,11 +456,13 @@ def webPassword(request: HttpRequest) -> str: """ if hasattr(request, 'session'): passkey = codecs.decode(request.session.get(PASS_KEY, '').encode(), 'base64') - return cryptoManager().symDecrpyt( + return CryptoManager().symDecrpyt( passkey, getUDSCookie(request) ) # recover as original unicode string - else: # No session, get from _session instead, this is an "client" REST request - return cryptoManager().symDecrpyt(request._cryptedpass, request._scrambler) # type: ignore + # No session, get from _session instead, this is an "client" REST request + return CryptoManager().symDecrpyt( + getattr(request, '_cryptedpass'), getattr(request, '_scrambler') + ) def webLogout( @@ -476,8 +490,6 @@ def webLogout( ) else: # No user, redirect to / return HttpResponseRedirect(reverse('page.login')) - except Exception: - raise finally: # Try to delete session request.session.flush() @@ -513,14 +525,12 @@ def authLogLogin( ] ) ) - level = log.INFO if logStr == 'Logged in' else log.ERROR + level = log.LogLevel.INFO if logStr == 'Logged in' else log.LogLevel.ERROR log.doLog( authenticator, level, - 'user {} has {} from {} where os is {}'.format( - userName, logStr, request.ip, request.os.os.name - ), - log.WEB, + f'user {userName} has {logStr} from {request.ip} where os is {request.os.os.name}', + log.LogSource.WEB, ) try: @@ -529,12 +539,10 @@ def authLogLogin( log.doLog( user, level, - '{} from {} where OS is {}'.format( - logStr, request.ip, request.os.os.name - ), - log.WEB, + f'{logStr} from {request.ip} where OS is {request.os.os.name}', + log.LogSource.WEB, ) - except models.User.DoesNotExist: + except models.User.DoesNotExist: # pylint: disable=no-member pass @@ -542,10 +550,8 @@ def authLogLogout(request: 'ExtendedHttpRequest') -> None: if request.user: log.doLog( request.user.manager, - log.INFO, - 'user {} has logged out from {}'.format(request.user.name, request.ip), - log.WEB, - ) - log.doLog( - request.user, log.INFO, 'has logged out from {}'.format(request.ip), log.WEB + log.LogLevel.INFO, + f'user {request.user.name} has logged out from {request.ip}', + log.LogSource.WEB, ) + log.doLog(request.user, log.LogLevel.INFO, f'has logged out from {request.ip}', log.LogSource.WEB) diff --git a/server/src/uds/core/auths/authenticator.py b/server/src/uds/core/auths/authenticator.py index 3192e3581..db64ae957 100644 --- a/server/src/uds/core/auths/authenticator.py +++ b/server/src/uds/core/auths/authenticator.py @@ -1,4 +1,5 @@ -# -*- coding: utf-8 -*- +# pylint: disable=unused-argument # this has a lot of "default" methods, so we need to ignore unused arguments most of the time + # # Copyright (c) 2012-2020 Virtual Cable S.L.U. # All rights reserved. @@ -29,17 +30,16 @@ """ Base module for all authenticators -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import enum import logging -from re import A import typing from django.utils.translation import gettext_noop as _ from django.urls import reverse -from uds.core import Module +from uds.core.module import Module # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: @@ -65,6 +65,7 @@ class AuthenticationSuccess(enum.IntEnum): OK = 1 REDIRECT = 2 + class AuthenticationInternalUrl(enum.Enum): """ Enumeration for authentication success @@ -78,6 +79,7 @@ class AuthenticationInternalUrl(enum.Enum): """ return reverse(self.value) + class AuthenticationResult(typing.NamedTuple): success: AuthenticationSuccess url: typing.Optional[str] = None @@ -186,8 +188,8 @@ class Authenticator(Module): # : If this authenticators casues a temporal block of an user on repeated login failures blockUserOnLoginFailures: typing.ClassVar[bool] = True - from .user import User - from .group import Group + from .user import User # pylint: disable=import-outside-toplevel + from .group import Group # pylint: disable=import-outside-toplevel # : The type of user provided, normally standard user will be enough. # : This is here so if we need it in some case, we can write our own @@ -213,10 +215,12 @@ class Authenticator(Module): @param environment: Environment for the authenticator @param values: Values passed to element """ - from uds.models import Authenticator as AuthenticatorModel - + from uds.models import ( # pylint: disable=import-outside-toplevel + Authenticator as AuthenticatorModel, + ) + self._dbAuth = dbAuth or AuthenticatorModel() # Fake dbAuth if not provided - super(Authenticator, self).__init__(environment, values) + super().__init__(environment, values) self.initialize(values) def initialize(self, values: typing.Optional[typing.Dict[str, typing.Any]]) -> None: @@ -249,9 +253,9 @@ class Authenticator(Module): user param is a database user object """ - from uds.core.auths.groups_manager import ( + from uds.core.auths.groups_manager import ( # pylint: disable=import-outside-toplevel GroupsManager, - ) # pylint: disable=redefined-outer-name + ) if self.isExternalSource: groupsManager = GroupsManager(self._dbAuth) @@ -268,7 +272,7 @@ class Authenticator(Module): This method will allow us to know where to do redirection in case we need to use callback for authentication """ - from .auth import authCallbackUrl + from .auth import authCallbackUrl # pylint: disable=import-outside-toplevel return authCallbackUrl(self.dbAuthenticator()) @@ -276,7 +280,7 @@ class Authenticator(Module): """ Helper method to return info url for this authenticator """ - from .auth import authInfoUrl + from .auth import authInfoUrl # pylint: disable=import-outside-toplevel return authInfoUrl(self.dbAuthenticator()) @@ -394,18 +398,26 @@ class Authenticator(Module): """ return FAILED_AUTH - def isAccesibleFrom(self, request: 'HttpRequest'): + def isAccesibleFrom(self, request: 'HttpRequest') -> bool: """ Used by the login interface to determine if the authenticator is visible on the login page. """ - from uds.core.util.request import ExtendedHttpRequest - from uds.models import Authenticator as dbAuth + from uds.core.util.request import ( # pylint: disable=import-outside-toplevel + ExtendedHttpRequest, + ) + from uds.models import ( # pylint: disable=import-outside-toplevel + Authenticator as dbAuth, + ) return self._dbAuth.state != dbAuth.DISABLED and self._dbAuth.validForIp( typing.cast('ExtendedHttpRequest', request).ip ) - def transformUsername(self, username: str, request: 'ExtendedHttpRequest') -> str: + def transformUsername( + self, + username: str, + request: 'ExtendedHttpRequest', + ) -> str: """ On login, this method get called so we can "transform" provided user name. @@ -462,7 +474,11 @@ class Authenticator(Module): """ return self.authenticate(username, credentials, groupsManager, request) - def logout(self, request: 'ExtendedHttpRequest', username: str) -> AuthenticationResult: + def logout( + self, + request: 'ExtendedHttpRequest', + username: str, + ) -> AuthenticationResult: """ Invoked whenever an user logs out. @@ -491,7 +507,10 @@ class Authenticator(Module): return SUCCESS_AUTH def webLogoutHook( - self, username: str, request: 'HttpRequest', response: 'HttpResponse' + self, + username: str, + request: 'HttpRequest', + response: 'HttpResponse', ) -> None: ''' Invoked on web logout of an user diff --git a/server/src/uds/core/auths/authfactory.py b/server/src/uds/core/auths/authfactory.py index 70e56c17e..d6d69bd49 100644 --- a/server/src/uds/core/auths/authfactory.py +++ b/server/src/uds/core/auths/authfactory.py @@ -40,4 +40,4 @@ if typing.TYPE_CHECKING: class AuthsFactory(factory.ModuleFactory['Authenticator']): - pass \ No newline at end of file + pass diff --git a/server/src/uds/core/auths/exceptions.py b/server/src/uds/core/auths/exceptions.py index 506037adc..a2eeb0e30 100644 --- a/server/src/uds/core/auths/exceptions.py +++ b/server/src/uds/core/auths/exceptions.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ @@ -37,24 +37,18 @@ class AuthenticatorException(Exception): Generic authentication exception """ - pass - class InvalidUserException(AuthenticatorException): """ Invalid user specified. The user cant access the requested service """ - pass - class InvalidAuthenticatorException(AuthenticatorException): """ Invalida authenticator has been specified """ - pass - class Redirect(AuthenticatorException): """ @@ -62,20 +56,14 @@ class Redirect(AuthenticatorException): Used in authUrlCallback to indicate that redirect is needed """ - pass - class Logout(AuthenticatorException): """ This exceptions redirects logouts an user and redirects to an url """ - pass - class MFAError(AuthenticatorException): """ This exceptions indicates than an MFA error has ocurred """ - - pass diff --git a/server/src/uds/core/auths/group.py b/server/src/uds/core/auths/group.py index 68bae302c..0ce3877f7 100644 --- a/server/src/uds/core/auths/group.py +++ b/server/src/uds/core/auths/group.py @@ -29,7 +29,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/core/auths/groups_manager.py b/server/src/uds/core/auths/groups_manager.py index 3cc3ac4a2..ac8db0ca9 100644 --- a/server/src/uds/core/auths/groups_manager.py +++ b/server/src/uds/core/auths/groups_manager.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import re import logging @@ -42,6 +42,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) + class _LocalGrp(typing.NamedTuple): name: str group: 'Group' @@ -54,6 +55,7 @@ class _LocalGrp(typing.NamedTuple): """ return name.casefold() == self.name.casefold() + class GroupsManager: """ Manages registered groups for an specific authenticator. @@ -85,7 +87,9 @@ class GroupsManager: self._dbAuthenticator = dbAuthenticator # We just get active groups, inactive aren't visible to this class self._groups = [] - if dbAuthenticator.id: # If "fake" authenticator (that is, root user with no authenticator in fact) + if ( + dbAuthenticator.id + ): # If "fake" authenticator (that is, root user with no authenticator in fact) for g in dbAuthenticator.groups.filter(state=State.ACTIVE, is_meta=False): name = g.name.lower() isPattern = name.find('pat:') == 0 # Is a pattern? @@ -93,7 +97,7 @@ class GroupsManager: _LocalGrp( name=name[4:] if isPattern else name, group=Group(g), - is_pattern=isPattern + is_pattern=isPattern, ) ) @@ -127,7 +131,9 @@ class GroupsManager: """ returns the list of valid groups (:py:class:uds.core.auths.group.Group) """ - from uds.models import Group as DBGroup + from uds.models import ( # pylint: disable=import-outside-toplevel + Group as DBGroup, + ) valid_id_list: typing.List[int] = [] for group in self._groups: @@ -139,7 +145,9 @@ class GroupsManager: for db_group in DBGroup.objects.filter( manager__id=self._dbAuthenticator.id, is_meta=True ): # @UndefinedVariable - gn = db_group.groups.filter(id__in=valid_id_list, state=State.ACTIVE).count() + gn = db_group.groups.filter( + id__in=valid_id_list, state=State.ACTIVE + ).count() if db_group.meta_if_any and gn > 0: gn = db_group.groups.count() if ( @@ -183,7 +191,7 @@ class GroupsManager: self.validate(n) else: for n in self._checkAllGroups(groupName): - self._groups[n] = self._groups[n]._replace(is_valid=True) + self._groups[n] = self._groups[n]._replace(is_valid=True) def isValid(self, groupName: str) -> bool: """ @@ -196,4 +204,4 @@ class GroupsManager: return False def __str__(self): - return "Groupsmanager: {0}".format(self._groups) + return f'Groupsmanager: {self._groups}' diff --git a/server/src/uds/core/auths/user.py b/server/src/uds/core/auths/user.py index cff842357..8abe8f9b2 100644 --- a/server/src/uds/core/auths/user.py +++ b/server/src/uds/core/auths/user.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -81,9 +81,9 @@ class User: :note: Once obtained valid groups, it caches them until object removal. """ - from uds.models.user import ( + from uds.models.user import ( # pylint: disable=import-outside-toplevel User as DBUser, - ) # pylint: disable=redefined-outer-name + ) if self._groups is None: if self._manager.isExternalSource: @@ -92,7 +92,6 @@ class User: logger.debug(self._groups) # This is just for updating "cached" data of this user, we only get real groups at login and at modify user operation usr = DBUser.objects.get(pk=self._dbUser.id) # @UndefinedVariable - lst: typing.List[int] = [] usr.groups.set((g.dbGroup().id for g in self._groups if g.dbGroup().is_meta is False)) # type: ignore else: # From db diff --git a/server/src/uds/core/environment.py b/server/src/uds/core/environment.py index c35eee1d8..86631ae48 100644 --- a/server/src/uds/core/environment.py +++ b/server/src/uds/core/environment.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing @@ -70,11 +70,11 @@ class Environment: {'mac' : UniqueMacGenerator, 'name' : UniqueNameGenerator } as argument. """ # Avoid circular imports - from uds.core.util.cache import Cache - from uds.core.util.storage import Storage + from uds.core.util.cache import Cache # pylint: disable=import-outside-toplevel + from uds.core.util.storage import Storage # pylint: disable=import-outside-toplevel if idGenerators is None: - idGenerators = dict() + idGenerators = {} self._key = uniqueKey self._cache = Cache(uniqueKey) self._storage = Storage(uniqueKey) @@ -105,7 +105,7 @@ class Environment: @return: Generator for that id, or None if no generator for that id is found """ if not self._idGenerators or generatorId not in self._idGenerators: - raise Exception('No generator found for {}'.format(generatorId)) + raise Exception(f'No generator found for {generatorId}') return self._idGenerators[generatorId] @property diff --git a/server/src/uds/core/exceptions.py b/server/src/uds/core/exceptions.py index ca7ca465f..ee02a50c5 100644 --- a/server/src/uds/core/exceptions.py +++ b/server/src/uds/core/exceptions.py @@ -31,22 +31,20 @@ Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import typing class UDSException(Exception): """ Base class for all UDS exceptions """ - pass - + + class ValidationError(UDSException): """ Exception used to indicate that the params assigned are invalid """ - pass + class TransportError(UDSException): """ Exception used to indicate that the transport is not available """ - pass \ No newline at end of file diff --git a/server/src/uds/core/jobs/__init__.py b/server/src/uds/core/jobs/__init__.py index 5d10001f7..789c74384 100644 --- a/server/src/uds/core/jobs/__init__.py +++ b/server/src/uds/core/jobs/__init__.py @@ -30,7 +30,7 @@ """ UDS jobs related modules -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing from .job import Job @@ -45,6 +45,6 @@ def factory() -> 'JobsFactory': """ Returns a singleton to a jobs factory """ - from .jobs_factory import JobsFactory # pylint: disable=redefined-outer-name + from .jobs_factory import JobsFactory # pylint: disable=import-outside-toplevel return JobsFactory() diff --git a/server/src/uds/core/jobs/delayed_task.py b/server/src/uds/core/jobs/delayed_task.py index ed0df0abd..e7d174b6d 100644 --- a/server/src/uds/core/jobs/delayed_task.py +++ b/server/src/uds/core/jobs/delayed_task.py @@ -71,7 +71,7 @@ class DelayedTask(Environmentable): """ Utility method that allows to register a Delayedtask """ - from .delayed_task_runner import DelayedTaskRunner + from .delayed_task_runner import DelayedTaskRunner # pylint: disable=import-outside-toplevel if check and DelayedTaskRunner.runner().checkExists(tag): return diff --git a/server/src/uds/core/jobs/delayed_task_runner.py b/server/src/uds/core/jobs/delayed_task_runner.py index 8ea6ba96f..9810d32ce 100644 --- a/server/src/uds/core/jobs/delayed_task_runner.py +++ b/server/src/uds/core/jobs/delayed_task_runner.py @@ -42,7 +42,7 @@ from django.db import transaction, OperationalError from django.db.models import Q from uds.models import DelayedTask as DBDelayedTask -from uds.models import getSqlDatetime +from uds.core.util.model import getSqlDatetime from uds.core.environment import Environment from uds.core.util import singleton @@ -55,6 +55,7 @@ class DelayedTaskThread(threading.Thread): """ Class responsible of executing a delayed task in its own thread """ + __slots__ = ('_taskInstance',) _taskInstance: DelayedTask @@ -76,6 +77,7 @@ class DelayedTaskRunner(metaclass=singleton.Singleton): """ Delayed task runner class """ + __slots__ = () granularity: typing.ClassVar[int] = 2 # we check for delayed tasks every "granularity" seconds @@ -105,9 +107,7 @@ class DelayedTaskRunner(metaclass=singleton.Singleton): def executeOneDelayedTask(self) -> None: now = getSqlDatetime() - filt = Q(execution_time__lt=now) | Q( - insert_date__gt=now + timedelta(seconds=30) - ) + filt = Q(execution_time__lt=now) | Q(insert_date__gt=now + timedelta(seconds=30)) # If next execution is before now or last execution is in the future (clock changed on this server, we take that task as executable) try: with transaction.atomic(): # Encloses @@ -118,9 +118,7 @@ class DelayedTaskRunner(metaclass=singleton.Singleton): .order_by('execution_time')[0] # type: ignore # Slicing is not supported by pylance right now ) # @UndefinedVariable if task.insert_date > now + timedelta(seconds=30): - logger.warning( - 'Executed %s due to insert_date being in the future!', task.type - ) + logger.warning('Executed %s due to insert_date being in the future!', task.type) taskInstanceDump = codecs.decode(task.instance.encode(), 'base64') task.delete() taskInstance = pickle.loads(taskInstanceDump) # nosec: controlled pickle @@ -186,18 +184,14 @@ class DelayedTaskRunner(metaclass=singleton.Singleton): time.sleep(1) # Wait a bit before next try... # If retries == 0, this is a big error if retries == 0: - logger.error( - "Could not insert delayed task!!!! %s %s %s", instance, delay, tag - ) + logger.error("Could not insert delayed task!!!! %s %s %s", instance, delay, tag) return False return True def remove(self, tag: str) -> None: try: with transaction.atomic(): - DBDelayedTask.objects.select_for_update().filter( - tag=tag - ).delete() # @UndefinedVariable + DBDelayedTask.objects.select_for_update().filter(tag=tag).delete() # @UndefinedVariable except Exception as e: logger.exception('Exception removing a delayed task %s: %s', e.__class__, e) diff --git a/server/src/uds/core/jobs/job.py b/server/src/uds/core/jobs/job.py index 75f48d492..93679d5d1 100644 --- a/server/src/uds/core/jobs/job.py +++ b/server/src/uds/core/jobs/job.py @@ -31,7 +31,7 @@ import logging import typing -from uds.core import Environmentable +from uds.core.environment import Environmentable from uds.core.util.config import Config diff --git a/server/src/uds/core/jobs/jobs_factory.py b/server/src/uds/core/jobs/jobs_factory.py index 8ec7f77bb..b0cf290aa 100644 --- a/server/src/uds/core/jobs/jobs_factory.py +++ b/server/src/uds/core/jobs/jobs_factory.py @@ -47,9 +47,10 @@ class JobsFactory(factory.Factory['Job']): """ Ensures that uds core workers are correctly registered in database and in factory """ - from uds.models import Scheduler, getSqlDatetime - from uds.core.util.state import State - from uds.core import workers + from uds.models import Scheduler # pylint: disable=import-outside-toplevel + from uds.core.util.model import getSqlDatetime # pylint: disable=import-outside-toplevel + from uds.core.util.state import State # pylint: disable=import-outside-toplevel + from uds.core import workers # pylint: disable=import-outside-toplevel try: logger.debug('Ensuring that jobs are registered inside database') diff --git a/server/src/uds/core/jobs/scheduler.py b/server/src/uds/core/jobs/scheduler.py index 1c8af1306..9addf8d21 100644 --- a/server/src/uds/core/jobs/scheduler.py +++ b/server/src/uds/core/jobs/scheduler.py @@ -40,7 +40,8 @@ from datetime import timedelta from django.db import transaction, DatabaseError, connections from django.db.models import Q -from uds.models import Scheduler as DBScheduler, getSqlDatetime +from uds.models import Scheduler as DBScheduler +from uds.core.util.model import getSqlDatetime from uds.core.util.state import State from .jobs_factory import JobsFactory @@ -64,7 +65,7 @@ class JobThread(threading.Thread): _freq: int def __init__(self, jobInstance: 'Job', dbJob: DBScheduler) -> None: - super(JobThread, self).__init__() + super().__init__() self._jobInstance = jobInstance self._dbJobId = dbJob.id self._freq = dbJob.frecuency @@ -186,8 +187,8 @@ class Scheduler: # I have got some deadlock errors, but looking at that url, i found that it is not so abnormal # logger.debug('Deadlock, no problem at all :-) (sounds hards, but really, no problem, will retry later :-) )') raise DatabaseError( - 'Database access problems. Retrying connection ({})'.format(e) - ) + f'Database access problems. Retrying connection ({e})' + ) from e @staticmethod def releaseOwnShedules() -> None: diff --git a/server/src/uds/core/managers/__init__.py b/server/src/uds/core/managers/__init__.py index f30bfa4a1..7cd9e3bbe 100644 --- a/server/src/uds/core/managers/__init__.py +++ b/server/src/uds/core/managers/__init__.py @@ -30,7 +30,7 @@ """ UDS managers (downloads, users preferences, publications, ...) -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing @@ -40,47 +40,33 @@ if typing.TYPE_CHECKING: from .task import TaskManager from .downloads import DownloadsManager from .log import LogManager - from .user_service import UserServiceManager from .publication import PublicationManager from .notifications import NotificationsManager -def cryptoManager() -> 'CryptoManager': - from .crypto import CryptoManager - - return CryptoManager.manager() - - def taskManager() -> 'TaskManager': - from .task import TaskManager + from .task import TaskManager # pylint: disable=import-outside-toplevel return TaskManager() def downloadsManager() -> 'DownloadsManager': - from .downloads import DownloadsManager + from .downloads import DownloadsManager # pylint: disable=import-outside-toplevel return DownloadsManager() def logManager() -> 'LogManager': - from .log import LogManager + from .log import LogManager # pylint: disable=import-outside-toplevel return LogManager() - -def userServiceManager() -> 'UserServiceManager': - from .user_service import UserServiceManager - - return UserServiceManager() - - def publicationManager() -> 'PublicationManager': - from .publication import PublicationManager + from .publication import PublicationManager # pylint: disable=import-outside-toplevel return PublicationManager() def notificationsManager() -> 'NotificationsManager': - from .notifications import NotificationsManager + from .notifications import NotificationsManager # pylint: disable=import-outside-toplevel return NotificationsManager() diff --git a/server/src/uds/core/managers/crypto.py b/server/src/uds/core/managers/crypto.py index f314b6a59..0600618e8 100644 --- a/server/src/uds/core/managers/crypto.py +++ b/server/src/uds/core/managers/crypto.py @@ -85,7 +85,7 @@ class CryptoManager(metaclass=singleton.Singleton): while len(key) < length: key += key # Dup key - kl: typing.List[int] = [v for v in key] + kl: typing.List[int] = list(key) pos = 0 while len(kl) > length: kl[pos] ^= kl[length] @@ -137,7 +137,7 @@ class CryptoManager(metaclass=singleton.Singleton): modes.CBC(b'udsinitvectoruds'), backend=default_backend(), ) - rndStr = secrets.token_bytes(16) # Same as block size of CBC (that is 16 here) + rndStr = secrets.token_bytes(16) # Same as block size of CBC (that is 16 here) paddedLength = ((len(text) + 4 + 15) // 16) * 16 toEncode = ( struct.pack('>i', len(text)) + text + rndStr[: paddedLength - len(text) - 4] @@ -163,11 +163,11 @@ class CryptoManager(metaclass=singleton.Singleton): toDecode = decryptor.update(text) + decryptor.finalize() return toDecode[4 : 4 + struct.unpack('>i', toDecode[:4])[0]] - + # Fast encription using django SECRET_KEY as key def fastCrypt(self, data: bytes) -> bytes: return self.AESCrypt(data, UDSK) - + # Fast decryption using django SECRET_KEY as key def fastDecrypt(self, data: bytes) -> bytes: return self.AESDecrypt(data, UDSK) @@ -240,8 +240,8 @@ class CryptoManager(metaclass=singleton.Singleton): # If invalid certificate, will raise an exception try: return x509.load_pem_x509_certificate(certificate, default_backend()) - except Exception: - raise Exception('Invalid certificate') + except Exception as e: + raise Exception('Invalid certificate') from e def certificateString(self, certificate: str) -> str: # Remove -----.*-----\n strings using regex @@ -251,7 +251,6 @@ class CryptoManager(metaclass=singleton.Singleton): """ Get a random secret string from config.SECRET_KEY """ - from django.conf import settings return settings.SECRET_KEY[:length] def salt(self, length: int = 16) -> str: @@ -269,22 +268,29 @@ class CryptoManager(metaclass=singleton.Singleton): return '{SHA256SALT}' + salt + str(hashlib.sha3_256(value).hexdigest()) - def checkHash(self, value: typing.Union[str, bytes], hash: str) -> bool: + def checkHash(self, value: typing.Union[str, bytes], hashValue: str) -> bool: if isinstance(value, str): value = value.encode() if not value: - return not hash + return not hashValue - if hash[:8] == '{SHA256}': - return secrets.compare_digest(hashlib.sha3_256(value).hexdigest(), hash[8:]) - elif hash[:12] == '{SHA256SALT}': + if hashValue[:8] == '{SHA256}': + return secrets.compare_digest( + hashlib.sha3_256(value).hexdigest(), hashValue[8:] + ) + if hashValue[:12] == '{SHA256SALT}': # Extract 16 chars salt and hash - salt = hash[12:28].encode() + salt = hashValue[12:28].encode() value = salt + value - return secrets.compare_digest(hashlib.sha3_256(value).hexdigest(), hash[28:]) - else: # Old sha1 - return secrets.compare_digest(hash, str(hashlib.sha1(value).hexdigest())) # nosec: Old compatibility SHA1, not used anymore but need to be supported + return secrets.compare_digest( + hashlib.sha3_256(value).hexdigest(), hashValue[28:] + ) + + # Old sha1 + return secrets.compare_digest( + hashValue, str(hashlib.sha1(value).hexdigest()) # nosec: Old compatibility SHA1, not used anymore but need to be supported + ) # nosec: Old compatibility SHA1, not used anymore but need to be supported def uuid(self, obj: typing.Any = None) -> str: """ @@ -297,7 +303,7 @@ class CryptoManager(metaclass=singleton.Singleton): elif isinstance(obj, bytes): obj = obj.decode('utf8') # To binary else: - obj = '{}'.format(obj) + obj = str(obj) return str( uuid.uuid5(self._namespace, obj) @@ -309,8 +315,8 @@ class CryptoManager(metaclass=singleton.Singleton): def unique(self) -> str: return hashlib.sha3_256( - ( - self.randomString(24, True) - + datetime.datetime.now().strftime('%H%M%S%f') - ).encode() - ).hexdigest() + ( + self.randomString(24, True) + + datetime.datetime.now().strftime('%H%M%S%f') + ).encode() + ).hexdigest() diff --git a/server/src/uds/core/managers/downloads.py b/server/src/uds/core/managers/downloads.py index d9d53535d..e2843e798 100644 --- a/server/src/uds/core/managers/downloads.py +++ b/server/src/uds/core/managers/downloads.py @@ -38,7 +38,7 @@ import typing from wsgiref.util import FileWrapper from django.http import HttpResponse, Http404 -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.util import singleton logger = logging.getLogger(__name__) @@ -76,7 +76,7 @@ class DownloadsManager(metaclass=singleton.Singleton): @param path: path to file @params zip: If download as zip """ - _id = cryptoManager().uuid(name) + _id = CryptoManager().uuid(name) self._downloadables[_id] = { 'name': name, 'comment': comment, @@ -106,7 +106,7 @@ class DownloadsManager(metaclass=singleton.Singleton): memory at once. The FileWrapper will turn the file object into an iterator for chunks of 8KB. """ - wrapper = FileWrapper(open(filename, 'rb')) + wrapper = FileWrapper(open(filename, 'rb')) # pylint: disable=consider-using-with response = HttpResponse(wrapper, content_type=mime) response['Content-Length'] = os.path.getsize(filename) response['Content-Disposition'] = 'attachment; filename=' + name diff --git a/server/src/uds/core/managers/log/__init__.py b/server/src/uds/core/managers/log/__init__.py new file mode 100644 index 000000000..8fa521549 --- /dev/null +++ b/server/src/uds/core/managers/log/__init__.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2023 Virtual Cable S.L.U. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +from .manager import LogManager diff --git a/server/src/uds/core/managers/log.py b/server/src/uds/core/managers/log/manager.py similarity index 52% rename from server/src/uds/core/managers/log.py rename to server/src/uds/core/managers/log/manager.py index 477821484..c2561416f 100644 --- a/server/src/uds/core/managers/log.py +++ b/server/src/uds/core/managers/log/manager.py @@ -29,48 +29,19 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import traceback -import logging +# import traceback import typing -from uds import models - -from uds.core.util.config import GlobalConfig from uds.core.util import singleton +from uds.core.util.model import getSqlDatetime +from uds.models.log import Log + +from .objects import MODEL_TO_TYPE, LogObjectType # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from django.db.models import Model - - -logger = logging.getLogger(__name__) - -( - OT_USERSERVICE, - OT_PUBLICATION, - OT_SERVICEPOOL, - OT_SERVICE, - OT_PROVIDER, - OT_USER, - OT_GROUP, - OT_AUTHENTICATOR, - OT_METAPOOL, -) = range( - 9 -) # @UndefinedVariable - -# Dict for translations -transDict: typing.Dict[typing.Type['Model'], int] = { - models.UserService: OT_USERSERVICE, - models.ServicePoolPublication: OT_PUBLICATION, - models.ServicePool: OT_SERVICEPOOL, - models.Service: OT_SERVICE, - models.Provider: OT_PROVIDER, - models.User: OT_USER, - models.Group: OT_GROUP, - models.Authenticator: OT_AUTHENTICATOR, - models.MetaPool: OT_METAPOOL, -} + from uds import models class LogManager(metaclass=singleton.Singleton): @@ -85,130 +56,146 @@ class LogManager(metaclass=singleton.Singleton): def manager() -> 'LogManager': return LogManager() # Singleton pattern will return always the same instance - def __log( + def _log( self, - owner_type: int, + owner_type: LogObjectType, owner_id: int, level: int, message: str, source: str, avoidDuplicates: bool, + logName: str ): """ Logs a message associated to owner """ # Ensure message fits on space - message = str(message)[:255] + message = str(message)[:4096] - qs = models.Log.objects.filter(owner_id=owner_id, owner_type=owner_type) + qs = Log.objects.filter(owner_id=owner_id, owner_type=owner_type.value) # First, ensure we do not have more than requested logs, and we can put one more log item - if qs.count() >= GlobalConfig.MAX_LOGS_PER_ELEMENT.getInt(): - for i in qs.order_by( - '-created', - )[GlobalConfig.MAX_LOGS_PER_ELEMENT.getInt() - 1 :]: - i.delete() + max_elements = owner_type.get_max_elements() + current_elements = qs.count() + # If max_elements is greater than 0, database contains equals or more than max_elements, we will delete the oldest ones to ensure we have max_elements - 1 + if 0 < max_elements <= current_elements: + # We will delete the oldest ones + for x in qs.order_by('created', 'id')[ + : current_elements - max_elements + 1 + ]: + x.delete() if avoidDuplicates: - try: - lg: models.Log = models.Log.objects.filter( - owner_id=owner_id, owner_type=owner_type - ).order_by('-id')[ - 0 # type: ignore # Slicing is not supported by pylance right now - ] - if lg.data == message: - # Do not log again, already logged - return - except Exception: # nosec: Do not exists log, all ok - pass + lg: typing.Optional['Log'] = Log.objects.filter( + owner_id=owner_id, owner_type=owner_type.value + ).last() + if lg and lg.data == message: + # Do not log again, already logged + return # now, we add new log try: - models.Log.objects.create( - owner_type=owner_type, + Log.objects.create( + owner_type=owner_type.value, owner_id=owner_id, - created=models.getSqlDatetime(), + created=getSqlDatetime(), source=source, level=level, data=message, + name=logName, ) except Exception: # nosec # Some objects will not get logged, such as System administrator objects, but this is fine pass - def __getLogs( - self, owner_type: int, owner_id: int, limit: int + def _getLogs( + self, owner_type: LogObjectType, owner_id: int, limit: int ) -> typing.List[typing.Dict]: """ Get all logs associated with an user service, ordered by date """ - qs = models.Log.objects.filter(owner_id=owner_id, owner_type=owner_type) + qs = Log.objects.filter(owner_id=owner_id, owner_type=owner_type.value) return [ {'date': x.created, 'level': x.level, 'source': x.source, 'message': x.data} for x in reversed(qs.order_by('-created', '-id')[:limit]) # type: ignore # Slicing is not supported by pylance right now ] - def __clearLogs(self, owner_type: int, owner_id: int): + def _clearLogs(self, owner_type: LogObjectType, owner_id: int): """ - Clears all logs related to user service + Clears ALL logs related to user service """ - models.Log.objects.filter(owner_id=owner_id, owner_type=owner_type).delete() + Log.objects.filter(owner_id=owner_id, owner_type=owner_type).delete() def doLog( self, - wichObject: 'Model', + wichObject: typing.Optional['Model'], level: int, message: str, source: str, avoidDuplicates: bool = True, + logName: typing.Optional[str] = None, ): """ Do the logging for the requested object. If the object provided do not accepts associated loggin, it simply ignores the request """ - owner_type = transDict.get(type(wichObject), None) + owner_type = ( + MODEL_TO_TYPE.get(type(wichObject), None) + if wichObject + else LogObjectType.SYSLOG + ) + objectId = getattr(wichObject, 'id', -1) + logName = logName or '' if owner_type is not None: try: - self.__log(owner_type, wichObject.id, level, message, source, avoidDuplicates) # type: ignore - except Exception: - logger.error('Error logging: %s:%s %s - %s %s', owner_type, wichObject.id, level, message, source) # type: ignore - else: - logger.debug( - 'Requested doLog for a type of object not covered: %s', wichObject - ) + self._log( + owner_type, objectId, level, message, source, avoidDuplicates, logName + ) + except Exception: # nosec + pass # Can not log, - def getLogs(self, wichObject: 'Model', limit: int) -> typing.List[typing.Dict]: + def getLogs( + self, wichObject: typing.Optional['Model'], limit: int = -1 + ) -> typing.List[typing.Dict]: """ Get the logs associated with "wichObject", limiting to "limit" (default is GlobalConfig.MAX_LOGS_PER_ELEMENT) """ - owner_type = transDict.get(type(wichObject), None) - logger.debug('Getting log: %s -> %s', wichObject, owner_type) - - if owner_type is not None: # 0 is valid owner type - return self.__getLogs(owner_type, wichObject.id, limit) # type: ignore - - logger.debug( - 'Requested getLogs for a type of object not covered: %s', wichObject + owner_type = ( + MODEL_TO_TYPE.get(type(wichObject), None) + if wichObject + else LogObjectType.SYSLOG ) + + if owner_type: # 0 is valid owner type + return self._getLogs( + owner_type, + getattr(wichObject, 'id', -1), + limit if limit != -1 else owner_type.get_max_elements(), + ) + return [] - def clearLogs(self, wichObject: 'Model'): + def clearLogs(self, wichObject: typing.Optional['Model']): """ Clears all logs related to wichObject Used mainly at object database removal (parent object) """ - owner_type = transDict.get(type(wichObject), None) - if owner_type is not None: - self.__clearLogs(owner_type, wichObject.id) # type: ignore - else: - logger.debug( - 'Requested clearLogs for a type of object not covered: %s: %s', - type(wichObject), - wichObject, - ) - for line in traceback.format_stack(limit=5): - logger.debug('>> %s', line) + owner_type = ( + MODEL_TO_TYPE.get(type(wichObject), None) + if wichObject + else LogObjectType.SYSLOG + ) + if owner_type: + self._clearLogs(owner_type, getattr(wichObject, 'id', -1)) + #else: + # logger.debug( + # 'Requested clearLogs for a type of object not covered: %s: %s', + # type(wichObject), + # wichObject, + #) + #for line in traceback.format_stack(limit=5): + # logger.debug('>> %s', line) diff --git a/server/src/uds/core/managers/log/objects.py b/server/src/uds/core/managers/log/objects.py new file mode 100644 index 000000000..f6961b998 --- /dev/null +++ b/server/src/uds/core/managers/log/objects.py @@ -0,0 +1,44 @@ +import typing +import enum + +from uds import models + +# Not imported at runtime, just for type checking +if typing.TYPE_CHECKING: + from django.db.models import Model + + +class LogObjectType(enum.IntEnum): + USERSERVICE = 0 + PUBLICATION = 1 + SERVICEPOOL = 2 + SERVICE = 3 + PROVIDER = 4 + USER = 5 + GROUP = 6 + AUTHENTICATOR = 7 + METAPOOL = 8 + SYSLOG = 9 + + def get_max_elements(self) -> int: + """ + if True, this type of log will be limited by number of log entries + """ + from uds.core.util.config import GlobalConfig # pylint: disable=import-outside-toplevel + + if self == LogObjectType.SYSLOG: + return GlobalConfig.GENERAL_LOG_MAX_ELEMENTS.getInt() + return GlobalConfig.INDIVIDIAL_LOG_MAX_ELEMENTS.getInt() + +# Dict for translations +MODEL_TO_TYPE: typing.Mapping[typing.Type['Model'], LogObjectType] = { + models.UserService: LogObjectType.USERSERVICE, + models.ServicePoolPublication: LogObjectType.PUBLICATION, + models.ServicePool: LogObjectType.SERVICEPOOL, + models.Service: LogObjectType.SERVICE, + models.Provider: LogObjectType.PROVIDER, + models.User: LogObjectType.USER, + models.Group: LogObjectType.GROUP, + models.Authenticator: LogObjectType.AUTHENTICATOR, + models.MetaPool: LogObjectType.METAPOOL, +} diff --git a/server/src/uds/core/managers/notifications.py b/server/src/uds/core/managers/notifications.py index ba957d5c9..db764993f 100644 --- a/server/src/uds/core/managers/notifications.py +++ b/server/src/uds/core/managers/notifications.py @@ -27,25 +27,25 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing -from django.db import transaction - from uds.core.util import singleton -from uds.models.notifications import Notification, NotificationLevel +from uds.core.util.log import LogLevel if typing.TYPE_CHECKING: from ..messaging import provider logger = logging.getLogger(__name__) + class NotificationsManager(metaclass=singleton.Singleton): """ This class manages alerts and notifications """ + def __init__(self): pass @@ -53,8 +53,12 @@ class NotificationsManager(metaclass=singleton.Singleton): def manager() -> 'NotificationsManager': return NotificationsManager() # Singleton pattern will return always the same instance - def notify(self, group: str, identificator: str, level: NotificationLevel, message: str, *args) -> None: - logger.debug('Notify: %s, %s, %s, %s, [%s]', group, identificator, level, message, args) + def notify(self, group: str, identificator: str, level: LogLevel, message: str, *args) -> None: + from uds.models.notifications import Notification # pylint: disable=import-outside-toplevel + + # logger.debug( + # 'Notify: %s, %s, %s, %s, [%s]', group, identificator, level, message, args + # ) # Format the string try: message = message % args @@ -65,17 +69,3 @@ class NotificationsManager(metaclass=singleton.Singleton): with Notification.atomicPersistent(): notify = Notification(group=group, identificator=identificator, level=level, message=message) Notification.savePersistent(notify) - - def registerGroup(self, group: str) -> None: - """ - Registers a new group. - This is used to group notifications - """ - pass - - def registerIdentificator(self, group: str, identificator: str) -> None: - """ - Registers a new identificator. - This is used to identify notifications - """ - pass \ No newline at end of file diff --git a/server/src/uds/core/managers/publication.py b/server/src/uds/core/managers/publication.py index b0620c902..a0bac13ba 100644 --- a/server/src/uds/core/managers/publication.py +++ b/server/src/uds/core/managers/publication.py @@ -33,10 +33,10 @@ import typing import logging import datetime -from uds.core.util.serializer import serialize - from django.utils.translation import gettext as _ from django.db import transaction + +from uds.core.util.serializer import serialize from uds.core.jobs.delayed_task import DelayedTask from uds.core.jobs.delayed_task_runner import DelayedTaskRunner from uds.core.util.config import GlobalConfig @@ -44,7 +44,8 @@ from uds.core.services.exceptions import PublishException from uds.core.util.state import State from uds.core.util import log -from uds.models import ServicePoolPublication, getSqlDatetime, ServicePool +from uds.models import ServicePoolPublication, ServicePool +from uds.core.util.model import getSqlDatetime from uds.core.util import singleton @@ -81,9 +82,10 @@ class PublicationOldMachinesCleaner(DelayedTask): in_use=False, state_date=now ) servicePoolPub.deployed_service.markOldUserServicesAsRemovables(activePub) - except Exception: # nosec: Removed publication, no problem at all, just continue + except ( + Exception + ): # nosec: Removed publication, no problem at all, just continue pass - class PublicationLauncher(DelayedTask): @@ -127,7 +129,9 @@ class PublicationLauncher(DelayedTask): ) servicePool.save() PublicationFinishChecker.checkAndUpdateState(servicePoolPub, pi, state) - except ServicePoolPublication.DoesNotExist: # Deployed service publication has been removed from database, this is ok, just ignore it + except ( + ServicePoolPublication.DoesNotExist + ): # Deployed service publication has been removed from database, this is ok, just ignore it pass except Exception: logger.exception("Exception launching publication") @@ -146,7 +150,7 @@ class PublicationFinishChecker(DelayedTask): """ def __init__(self, publication: ServicePoolPublication) -> None: - super(PublicationFinishChecker, self).__init__() + super().__init__() self._publishId = publication.id self._state = publication.state @@ -321,7 +325,7 @@ class PublicationManager(metaclass=singleton.Singleton): publication.delete() except Exception: logger.info('Could not delete %s', publication) - raise PublishException(str(e)) + raise PublishException(str(e)) from e def cancel( self, publication: ServicePoolPublication @@ -339,9 +343,9 @@ class PublicationManager(metaclass=singleton.Singleton): logger.info('Double cancel invoked for a publication') log.doLog( publication.deployed_service, - log.WARN, + log.LogLevel.WARNING, 'Forced cancel on publication, you must check uncleaned resources manually', - log.ADMIN, + log.LogSource.ADMIN, ) publication.setState(State.CANCELED) publication.save() @@ -363,7 +367,7 @@ class PublicationManager(metaclass=singleton.Singleton): ) return publication except Exception as e: - raise PublishException(str(e)) + raise PublishException(str(e)) from e def unpublish( self, servicePoolPub: ServicePoolPublication @@ -389,4 +393,4 @@ class PublicationManager(metaclass=singleton.Singleton): servicePoolPub, pubInstance, state ) except Exception as e: - raise PublishException(str(e)) + raise PublishException(str(e)) from e diff --git a/server/src/uds/core/managers/stats.py b/server/src/uds/core/managers/stats.py index b654d98a5..3b90c5e98 100644 --- a/server/src/uds/core/managers/stats.py +++ b/server/src/uds/core/managers/stats.py @@ -36,9 +36,8 @@ import typing from uds.core.util.config import GlobalConfig from uds.core.util import singleton -from uds.models import StatsCounters, StatsCountersAccum -from uds.models import getSqlDatetime, getSqlDatetimeAsUnix -from uds.models import StatsEvents +from uds.models import StatsCounters, StatsCountersAccum, StatsEvents +from uds.core.util.model import getSqlDatetime, getSqlDatetimeAsUnix if typing.TYPE_CHECKING: from django.db import models @@ -52,9 +51,7 @@ FLDS_EQUIV: typing.Mapping[str, typing.Iterable[str]] = { 'fld4': ('uniqueid', 'tunnel'), } -REVERSE_FLDS_EQUIV: typing.Mapping[str, str] = { - i: fld for fld, aliases in FLDS_EQUIV.items() for i in aliases -} +REVERSE_FLDS_EQUIV: typing.Mapping[str, str] = {i: fld for fld, aliases in FLDS_EQUIV.items() for i in aliases} class AccumStat(typing.NamedTuple): @@ -83,15 +80,10 @@ class StatsManager(metaclass=singleton.Singleton): def __doCleanup( self, - model: typing.Type[ - typing.Union['StatsCounters', 'StatsEvents', 'StatsCountersAccum'] - ], + model: typing.Type[typing.Union['StatsCounters', 'StatsEvents', 'StatsCountersAccum']], ) -> None: minTime = time.mktime( - ( - getSqlDatetime() - - datetime.timedelta(days=GlobalConfig.STATS_DURATION.getInt()) - ).timetuple() + (getSqlDatetime() - datetime.timedelta(days=GlobalConfig.STATS_DURATION.getInt())).timetuple() ) model.objects.filter(stamp__lt=minTime).delete() @@ -124,9 +116,7 @@ class StatsManager(metaclass=singleton.Singleton): stamp = typing.cast(datetime.datetime, getSqlDatetime()) # To Unix epoch - stampInt = int( - time.mktime(stamp.timetuple()) - ) # pylint: disable=maybe-no-member + stampInt = int(time.mktime(stamp.timetuple())) # pylint: disable=maybe-no-member try: StatsCounters.objects.create( @@ -138,9 +128,7 @@ class StatsManager(metaclass=singleton.Singleton): ) return True except Exception: - logger.error( - 'Exception handling counter stats saving (maybe database is full?)' - ) + logger.error('Exception handling counter stats saving (maybe database is full?)') return False def getCounters( @@ -198,9 +186,7 @@ class StatsManager(metaclass=singleton.Singleton): if since is None: if points is None: points = 100 # If since is not specified, we need at least points, get a default - since = getSqlDatetime() - datetime.timedelta( - seconds=intervalType.seconds() * points - ) + since = getSqlDatetime() - datetime.timedelta(seconds=intervalType.seconds() * points) if isinstance(since, datetime.datetime): since = int(since.timestamp()) @@ -239,7 +225,6 @@ class StatsManager(metaclass=singleton.Singleton): # Append to numpy array yield last stamp += intervalType.seconds() - def cleanupCounters(self): """ @@ -276,9 +261,7 @@ class StatsManager(metaclass=singleton.Singleton): stamp = getSqlDatetimeAsUnix() else: # To Unix epoch - stamp = int( - time.mktime(stamp.timetuple()) - ) # pylint: disable=maybe-no-member + stamp = int(time.mktime(stamp.timetuple())) # pylint: disable=maybe-no-member try: @@ -308,9 +291,7 @@ class StatsManager(metaclass=singleton.Singleton): ) return True except Exception: - logger.exception( - 'Exception handling event stats saving (maybe database is full?)' - ) + logger.exception('Exception handling event stats saving (maybe database is full?)') return False def getEvents( @@ -336,10 +317,7 @@ class StatsManager(metaclass=singleton.Singleton): return StatsEvents.get_stats(ownerType, eventType, **kwargs) def tailEvents( - self, - *, - fromId: typing.Optional[str] = None, - number: typing.Optional[int] = None + self, *, fromId: typing.Optional[str] = None, number: typing.Optional[int] = None ) -> 'models.QuerySet[StatsEvents]': # If number is not specified, we return five last events number = number or 5 diff --git a/server/src/uds/core/managers/task.py b/server/src/uds/core/managers/task.py index 7a6481602..f114250c6 100644 --- a/server/src/uds/core/managers/task.py +++ b/server/src/uds/core/managers/task.py @@ -1,5 +1,3 @@ -# -*- coding: utf-8 -*- - # # Copyright (c) 2012-2019 Virtual Cable S.L. # All rights reserved. @@ -77,14 +75,13 @@ class TaskManager(metaclass=singleton.Singleton): def __init__(self): self.keepRunning = True self.threads = [] - pass @staticmethod def manager() -> 'TaskManager': return TaskManager() @staticmethod - def sigTerm(sigNum, frame): + def sigTerm(sigNum, frame): # pylint: disable=unused-argument """ This method will ensure that we finish correctly current running task before exiting. If we need to stop cause something went wrong (that should not happen), we must send sigterm, wait a while (10-20 secs) and after that send sigkill @@ -104,12 +101,12 @@ class TaskManager(metaclass=singleton.Singleton): logger.info("Registering sheduled tasks") # Simply import this to make workers "auto import themself" - from uds.core import workers # @UnusedImport pylint: disable=unused-import + from uds.core import workers # pylint: disable=unused-import, import-outside-toplevel def addOtherTasks(self) -> None: logger.info("Registering other tasks") - from uds.core.messaging.processor import MessageProcessorThread + from uds.core.messaging.processor import MessageProcessorThread # pylint: disable=import-outside-toplevel thread = MessageProcessorThread() thread.start() @@ -149,7 +146,7 @@ class TaskManager(metaclass=singleton.Singleton): self.threads.append(thread) time.sleep(0.5) # Wait a bit before next delayed task runner is started - # Add other tasks + # Add any other tasks (Such as message processor) self.addOtherTasks() # Debugging stuff diff --git a/server/src/uds/core/managers/user_preferences.py b/server/src/uds/core/managers/user_preferences.py index c2991ead0..947fca897 100644 --- a/server/src/uds/core/managers/user_preferences.py +++ b/server/src/uds/core/managers/user_preferences.py @@ -35,8 +35,6 @@ import logging import typing -from django.utils.translation import gettext as _ - logger = logging.getLogger(__name__) class CommonPrefs: diff --git a/server/src/uds/core/managers/user_service.py b/server/src/uds/core/managers/user_service.py index 88c0d826a..cb00d052e 100644 --- a/server/src/uds/core/managers/user_service.py +++ b/server/src/uds/core/managers/user_service.py @@ -39,7 +39,6 @@ from django.utils.translation import gettext as _ from django.db.models import Q from django.db import transaction from uds.core.services.exceptions import OperationException -from uds.core.util.config import GlobalConfig from uds.core.util.state import State from uds.core.util import log from uds.core.services.exceptions import ( @@ -53,12 +52,11 @@ from uds.models import ( MetaPool, ServicePool, UserService, - getSqlDatetime, Transport, User, ServicePoolPublication, ) -from uds.models.meta_pool import MetaPoolMember +from uds.core.util.model import getSqlDatetime from uds.core import services, transports from uds.core.util import singleton from uds.core.util.stats import events @@ -72,6 +70,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) traceLogger = logging.getLogger('traceLog') +operationsLogger = logging.getLogger('operationsLog') class UserServiceManager(metaclass=singleton.Singleton): @@ -80,9 +79,7 @@ class UserServiceManager(metaclass=singleton.Singleton): @staticmethod def manager() -> 'UserServiceManager': - return ( - UserServiceManager() - ) # Singleton pattern will return always the same instance + return UserServiceManager() # Singleton pattern will return always the same instance def getCacheStateFilter(self, servicePool: ServicePool, level: int) -> Q: return Q(cache_level=level) & self.getStateFilter(servicePool.service) @@ -91,7 +88,7 @@ class UserServiceManager(metaclass=singleton.Singleton): def getStateFilter(service: 'models.Service') -> Q: if service.oldMaxAccountingMethod: # If no limits and accounting method is not old one # Valid states are: PREPARING, USABLE - states = [State.PREPARING, State.USABLE] + states = [State.PREPARING, State.USABLE] else: # New accounting method selected states = [State.PREPARING, State.USABLE, State.REMOVING, State.REMOVABLE] return Q(state__in=states) @@ -103,9 +100,7 @@ class UserServiceManager(metaclass=singleton.Singleton): """ if self.maximumUserServicesDeployed(servicePool.service): raise MaxServicesReachedError( - _('Maximum number of user services reached for this {}').format( - servicePool - ) + _('Maximum number of user services reached for this {}').format(servicePool) ) def getExistingUserServices(self, service: 'models.Service') -> int: @@ -126,14 +121,11 @@ class UserServiceManager(metaclass=singleton.Singleton): return False if self.getExistingUserServices(service) >= (serviceInstance.maxDeployed or 1): - logger.debug('Maximum number of user services reached for this service: {}'.format(service.name)) return True return False - def _createCacheAtDb( - self, publication: ServicePoolPublication, cacheLevel: int - ) -> UserService: + def _createCacheAtDb(self, publication: ServicePoolPublication, cacheLevel: int) -> UserService: """ Private method to instatiate a cache element at database with default states """ @@ -152,9 +144,7 @@ class UserServiceManager(metaclass=singleton.Singleton): in_use=False, ) - def _createAssignedAtDb( - self, publication: ServicePoolPublication, user: User - ) -> UserService: + def _createAssignedAtDb(self, publication: ServicePoolPublication, user: User) -> UserService: """ Private method to instatiate an assigned element at database with default state """ @@ -172,9 +162,7 @@ class UserServiceManager(metaclass=singleton.Singleton): in_use=False, ) - def _createAssignedAtDbForNoPublication( - self, servicePool: ServicePool, user: User - ) -> UserService: + def _createAssignedAtDbForNoPublication(self, servicePool: ServicePool, user: User) -> UserService: """ __createCacheAtDb and __createAssignedAtDb uses a publication for create the UserService. There is cases where deployed services do not have publications (do not need them), so we need this method to create @@ -194,13 +182,11 @@ class UserServiceManager(metaclass=singleton.Singleton): in_use=False, ) - def createCacheFor( - self, publication: ServicePoolPublication, cacheLevel: int - ) -> UserService: + def createCacheFor(self, publication: ServicePoolPublication, cacheLevel: int) -> UserService: """ Creates a new cache for the deployed service publication at level indicated """ - logger.debug( + operationsLogger.info( 'Creating a new cache element at level %s for publication %s', cacheLevel, publication, @@ -219,28 +205,31 @@ class UserServiceManager(metaclass=singleton.Singleton): # First, honor maxPreparingServices if self.canGrowServicePool(servicePool) is False: # Cannot create new - logger.info( + operationsLogger.info( 'Too many preparing services. Creation of assigned service denied by max preparing services parameter. (login storm with insufficient cache?).' ) raise ServiceNotReadyError() if servicePool.service.getType().publicationType is not None: publication = servicePool.activePublication() - logger.debug( - 'Creating a new assigned element for user %s por publication %s', - user, - publication, - ) if publication: assigned = self._createAssignedAtDb(publication, user) + operationsLogger.info( + 'Creating a new assigned element for user %s for publication %s on pool %s', + user.pretty_name, + publication.revision, + servicePool.name, + ) else: raise Exception( - 'Invalid publication creating service assignation: {} {}'.format( - servicePool, user - ) + f'Invalid publication creating service assignation: {servicePool.name} {user.pretty_name}' ) else: - logger.debug('Creating a new assigned element for user %s', user) + operationsLogger.info( + 'Creating a new assigned element for user %s on pool %s', + user.pretty_name, + servicePool.name, + ) assigned = self._createAssignedAtDbForNoPublication(servicePool, user) assignedInstance = assigned.getInstance() @@ -250,9 +239,7 @@ class UserServiceManager(metaclass=singleton.Singleton): return assigned - def createFromAssignable( - self, servicePool: ServicePool, user: User, assignableId: str - ) -> UserService: + def createFromAssignable(self, servicePool: ServicePool, user: User, assignableId: str) -> UserService: """ Creates an assigned service from an "assignable" id """ @@ -262,33 +249,31 @@ class UserServiceManager(metaclass=singleton.Singleton): if servicePool.service.getType().publicationType is not None: publication = servicePool.activePublication() - logger.debug( - 'Creating an assigned element from assignable %s for user %s por publication %s', - user, - assignableId, - publication, - ) if publication: assigned = self._createAssignedAtDb(publication, user) + operationsLogger.info( + 'Creating an assigned element from assignable %s for user %s for publication %s on pool %s', + assignableId, + user.pretty_name, + publication.revision, + servicePool.name, + ) else: raise Exception( - 'Invalid publication creating service assignation: {} {}'.format( - servicePool, user - ) + f'Invalid publication creating service assignation: {servicePool.name} {user.pretty_name}' ) else: - logger.debug( - 'Creating an assigned element from assignable %s for user %s', + operationsLogger.info( + 'Creating an assigned element from assignable %s for user %s on pool %s', assignableId, - user, + user.pretty_name, + servicePool.name, ) assigned = self._createAssignedAtDbForNoPublication(servicePool, user) # Now, get from serviceInstance the data assignedInstance = assigned.getInstance() - state = serviceInstance.assignFromAssignables( - assignableId, user, assignedInstance - ) + state = serviceInstance.assignFromAssignables(assignableId, user, assignedInstance) # assigned.updateData(assignedInstance) UserServiceOpChecker.makeUnique(assigned, assignedInstance, state) @@ -324,14 +309,12 @@ class UserServiceManager(metaclass=singleton.Singleton): @return: the Uservice canceling """ userService.refresh_from_db() - logger.debug('Canceling userService %s creation', userService) if userService.isPreparing() is False: - logger.info( - 'Cancel requested for a non running operation, performing removal instead' - ) + logger.debug('Cancel requested for a non running operation, performing removal instead') return self.remove(userService) + operationsLogger.info('Canceling userService %s', userService.name) userServiceInstance = userService.getInstance() if ( @@ -357,19 +340,12 @@ class UserServiceManager(metaclass=singleton.Singleton): """ with transaction.atomic(): userService = UserService.objects.select_for_update().get(id=userService.id) - logger.debug('Removing userService %a', userService) - if ( - userService.isUsable() is False - and State.isRemovable(userService.state) is False - ): + operationsLogger.info('Removing userService %a', userService.name) + if userService.isUsable() is False and State.isRemovable(userService.state) is False: raise OperationException(_('Can\'t remove a non active element')) userService.setState(State.REMOVING) - logger.debug( - "***** The state now is %s *****", State.toString(userService.state) - ) - userService.setInUse( - False - ) # For accounting, ensure that it is not in use right now + logger.debug("***** The state now is %s *****", State.toString(userService.state)) + userService.setInUse(False) # For accounting, ensure that it is not in use right now userService.save() userServiceInstance = userService.getInstance() @@ -388,9 +364,7 @@ class UserServiceManager(metaclass=singleton.Singleton): return self.cancel(userService) raise OperationException( - _('Can\'t remove nor cancel {} cause its state don\'t allow it').format( - userService.name - ) + _('Can\'t remove nor cancel {} cause its state don\'t allow it').format(userService.name) ) def getExistingAssignationForUser( @@ -400,9 +374,7 @@ class UserServiceManager(metaclass=singleton.Singleton): user=user, state__in=State.VALID_STATES ) # , deployed_service__visible=True if existing.exists(): - logger.debug( - 'Found assigned service from %s to user %s', servicePool, user.name - ) + logger.debug('Found assigned service from %s to user %s', servicePool, user.name) return existing.first() return None @@ -457,9 +429,7 @@ class UserServiceManager(metaclass=singleton.Singleton): typing.List[UserService], servicePool.cachedUserServices() .select_for_update() - .filter( - cache_level=services.UserDeployment.L1_CACHE, state=State.USABLE - )[ + .filter(cache_level=services.UserDeployment.L1_CACHE, state=State.USABLE)[ :1 # type: ignore # Slicing is not supported by pylance right now ], ) @@ -491,9 +461,7 @@ class UserServiceManager(metaclass=singleton.Singleton): servicePool, events.ET_CACHE_HIT, fld1=servicePool.cachedUserServices() - .filter( - cache_level=services.UserDeployment.L1_CACHE, state=State.USABLE - ) + .filter(cache_level=services.UserDeployment.L1_CACHE, state=State.USABLE) .count(), ) return cache @@ -505,9 +473,7 @@ class UserServiceManager(metaclass=singleton.Singleton): caches = ( servicePool.cachedUserServices() .select_for_update() - .filter( - cache_level=services.UserDeployment.L1_CACHE, state=State.PREPARING - )[ + .filter(cache_level=services.UserDeployment.L1_CACHE, state=State.PREPARING)[ :1 # type: ignore # Slicing is not supported by pylance right now ] ) @@ -538,9 +504,7 @@ class UserServiceManager(metaclass=singleton.Singleton): servicePool, events.ET_CACHE_MISS, fld1=servicePool.cachedUserServices() - .filter( - cache_level=services.UserDeployment.L1_CACHE, state=State.PREPARING - ) + .filter(cache_level=services.UserDeployment.L1_CACHE, state=State.PREPARING) .count(), ) return cache @@ -549,18 +513,16 @@ class UserServiceManager(metaclass=singleton.Singleton): serviceType = servicePool.service.getType() if serviceType.usesCache: inAssigned = ( - servicePool.assignedUserServices() - .filter(self.getStateFilter(servicePool.service)) - .count() + servicePool.assignedUserServices().filter(self.getStateFilter(servicePool.service)).count() ) if ( inAssigned >= servicePool.max_srvs ): # cacheUpdater will drop unnecesary L1 machines, so it's not neccesary to check against inCacheL1 log.doLog( servicePool, - log.WARN, - 'Max number of services reached: {}'.format(servicePool.max_srvs), - log.INTERNAL, + log.LogLevel.WARNING, + f'Max number of services reached: {servicePool.max_srvs}', + log.LogSource.INTERNAL, ) raise MaxServicesReachedError() @@ -568,9 +530,7 @@ class UserServiceManager(metaclass=singleton.Singleton): events.addEvent(servicePool, events.ET_CACHE_MISS, fld1=0) return self.createAssignedFor(servicePool, user) - def getUserServicesInStatesForProvider( - self, provider: 'models.Provider', states: typing.List[str] - ) -> int: + def getUserServicesInStatesForProvider(self, provider: 'models.Provider', states: typing.List[str]) -> int: """ Returns the number of services of a service provider in the state indicated """ @@ -583,13 +543,11 @@ class UserServiceManager(metaclass=singleton.Singleton): checks if we can do a "remove" from a deployed service serviceIsntance is just a helper, so if we already have deserialized deployedService """ - removing = self.getUserServicesInStatesForProvider( - servicePool.service.provider, [State.REMOVING] - ) + removing = self.getUserServicesInStatesForProvider(servicePool.service.provider, [State.REMOVING]) serviceInstance = servicePool.service.getInstance() if ( - serviceInstance.isAvailable() and - removing >= serviceInstance.parent().getMaxRemovingServices() + serviceInstance.isAvailable() + and removing >= serviceInstance.parent().getMaxRemovingServices() and serviceInstance.parent().getIgnoreLimits() is False ): return False @@ -623,7 +581,7 @@ class UserServiceManager(metaclass=singleton.Singleton): try: state = userServiceInstance.setReady() except Exception as e: - logger.warn('Could not check readyness of %s: %s', userService, e) + logger.warning('Could not check readyness of %s: %s', userService, e) return False logger.debug('State: %s', state) @@ -643,7 +601,7 @@ class UserServiceManager(metaclass=singleton.Singleton): if not userService.deployed_service.service.getType().canReset: return - logger.debug('Reseting %s', userService) + operationsLogger.info('Reseting %s', userService) userServiceInstance = userService.getInstance() try: @@ -651,9 +609,7 @@ class UserServiceManager(metaclass=singleton.Singleton): except Exception: logger.exception('Reseting service') - def notifyPreconnect( - self, userService: UserService, userName: str, protocol: str - ) -> None: + def notifyPreconnect(self, userService: UserService, userName: str, protocol: str) -> None: comms.notifyPreconnect(userService, userName, protocol) def checkUuid(self, userService: UserService) -> bool: @@ -662,9 +618,7 @@ class UserServiceManager(metaclass=singleton.Singleton): def requestScreenshot(self, userService: UserService) -> bytes: return comms.requestScreenshot(userService) - def sendScript( - self, userService: UserService, script: str, forUser: bool = False - ) -> None: + def sendScript(self, userService: UserService, script: str, forUser: bool = False) -> None: comms.sendScript(userService, script, forUser) def requestLogoff(self, userService: UserService) -> None: @@ -680,16 +634,12 @@ class UserServiceManager(metaclass=singleton.Singleton): """ osManager = userService.deployed_service.osmanager # If os manager says "machine is persistent", do not try to delete "previous version" assigned machines - doPublicationCleanup = ( - True if not osManager else not osManager.getInstance().isPersistent() - ) + doPublicationCleanup = True if not osManager else not osManager.getInstance().isPersistent() if doPublicationCleanup: remove = False with transaction.atomic(): - userService = UserService.objects.select_for_update().get( - id=userService.id - ) + userService = UserService.objects.select_for_update().get(id=userService.id) activePublication = userService.deployed_service.activePublication() if ( userService.publication @@ -705,9 +655,7 @@ class UserServiceManager(metaclass=singleton.Singleton): if remove: userService.remove() - def notifyReadyFromOsManager( - self, userService: UserService, data: typing.Any - ) -> None: + def notifyReadyFromOsManager(self, userService: UserService, data: typing.Any) -> None: try: userServiceInstance = userService.getInstance() logger.debug('Notifying user service ready state') @@ -748,9 +696,7 @@ class UserServiceManager(metaclass=singleton.Singleton): servicePool.validateUser(user) # Now we have to locate an instance of the service, so we can assign it to user. - if ( - create - ): # getAssignation, if no assignation is found, tries to create one + if create: # getAssignation, if no assignation is found, tries to create one userService = self.getAssignationForUser(servicePool, user) else: # Sometimes maybe we only need to locate the existint user service userService = self.getExistingAssignationForUser(servicePool, user) @@ -791,9 +737,7 @@ class UserServiceManager(metaclass=singleton.Singleton): if not userService: raise InvalidServiceException( - _( - 'Invalid service. The service is not available at this moment. Please, try later' - ) + _('Invalid service. The service is not available at this moment. Please, try later') ) # Early log of "access try" so we can imagine what is going on @@ -809,19 +753,14 @@ class UserServiceManager(metaclass=singleton.Singleton): t: Transport for t in userService.deployed_service.transports.order_by('priority'): typeTrans = t.getType() - if ( - typeTrans - and t.validForIp(srcIp) - and typeTrans.supportsOs(os.os) - and t.validForOs(os.os) - ): + if typeTrans and t.validForIp(srcIp) and typeTrans.supportsOs(os.os) and t.validForOs(os.os): idTransport = t.uuid break try: transport: Transport = Transport.objects.get(uuid=idTransport) - except Exception: - raise InvalidServiceException() + except Exception as e: + raise InvalidServiceException() from e # Ensures that the transport is allowed for this service if userService.deployed_service.transports.filter(id=transport.id).count() == 0: @@ -829,9 +768,7 @@ class UserServiceManager(metaclass=singleton.Singleton): # If transport is not available for the request IP... if not transport.validForIp(srcIp): - msg = _('The requested transport {} is not valid for {}').format( - transport.name, srcIp - ) + msg = _('The requested transport {} is not valid for {}').format(transport.name, srcIp) logger.error(msg) raise InvalidServiceException(msg) @@ -848,9 +785,9 @@ class UserServiceManager(metaclass=singleton.Singleton): serviceNotReadyCode = 0x0002 log.doLog( userService, - log.INFO, - "User {0} from {1} has initiated access".format(user.name, srcIp), - log.WEB, + log.LogLevel.INFO, + f"User {user.pretty_name} from {srcIp} has initiated access", + log.LogSource.WEB, ) # If ready, show transport for this service, if also ready ofc userServiceInstance = userService.getInstance() @@ -858,17 +795,13 @@ class UserServiceManager(metaclass=singleton.Singleton): userService.logIP(ip) # Update known ip logger.debug('IP: %s', ip) - if ( - self.checkUuid(userService) is False - ): # The service is not the expected one + if self.checkUuid(userService) is False: # The service is not the expected one serviceNotReadyCode = 0x0004 log.doLog( userService, - log.WARN, - "User service is not accessible due to invalid UUID (ip {0})".format( - ip - ), - log.TRANSPORT, + log.LogLevel.WARNING, + f'User service is not accessible due to invalid UUID (user: {user.pretty_name}, ip: {ip})', + log.LogSource.TRANSPORT, ) logger.debug('UUID check failed for user service %s', userService) else: @@ -885,7 +818,7 @@ class UserServiceManager(metaclass=singleton.Singleton): transportInstance = transport.getInstance() if transportInstance.isAvailableFor(userService, ip): # userService.setConnectionSource(srcIp, 'unknown') - log.doLog(userService, log.INFO, "User service ready", log.WEB) + log.doLog(userService, log.LogLevel.INFO, "User service ready", log.LogSource.WEB) self.notifyPreconnect( userService, transportInstance.processedUser(userService, user), @@ -906,10 +839,8 @@ class UserServiceManager(metaclass=singleton.Singleton): transportInstance, ) - message = transportInstance.getCustomAvailableErrorMsg( - userService, ip - ) - log.doLog(userService, log.WARN, message, log.TRANSPORT) + message = transportInstance.getCustomAvailableErrorMsg(userService, ip) + log.doLog(userService, log.LogLevel.WARNING, message, log.LogSource.TRANSPORT) logger.debug( 'Transport is not ready for user service %s: %s', userService, @@ -920,11 +851,9 @@ class UserServiceManager(metaclass=singleton.Singleton): else: log.doLog( userService, - log.WARN, - "User {} from {} tried to access, but service was not ready".format( - user.name, srcIp - ), - log.WEB, + log.LogLevel.WARNING, + f'User {user.pretty_name} from {srcIp} tried to access, but service was not ready', + log.LogSource.WEB, ) traceLogger.error( @@ -935,27 +864,19 @@ class UserServiceManager(metaclass=singleton.Singleton): transport.name, ip, ) - raise ServiceNotReadyError( - code=serviceNotReadyCode, userService=userService, transport=transport - ) + raise ServiceNotReadyError(code=serviceNotReadyCode, userService=userService, transport=transport) def isMetaService(self, metaId: str) -> bool: return metaId[0] == 'M' - def locateMetaService( - self, user: User, idService: str - ) -> typing.Optional[UserService]: + def locateMetaService(self, user: User, idService: str) -> typing.Optional[UserService]: kind, uuidMetapool = idService[0], idService[1:] if kind != 'M': return None meta: MetaPool = MetaPool.objects.get(uuid=uuidMetapool) # Get pool members. Just pools "visible" and "usable" - pools = [ - p.pool - for p in meta.members.all() - if p.pool.isVisible() and p.pool.isUsable() - ] + pools = [p.pool for p in meta.members.all() if p.pool.isVisible() and p.pool.isUsable()] # look for an existing user service in the pool try: return UserService.objects.filter( @@ -992,9 +913,7 @@ class UserServiceManager(metaclass=singleton.Singleton): raise ServiceAccessDeniedByCalendar() # Get pool members. Just pools "visible" and "usable" - poolMembers = [ - p for p in meta.members.all() if p.pool.isVisible() and p.pool.isUsable() - ] + poolMembers = [p for p in meta.members.all() if p.pool.isVisible() and p.pool.isUsable()] # Sort pools array. List of tuples with (priority, pool) sortPools: typing.List[typing.Tuple[int, ServicePool]] # Sort pools based on meta selection @@ -1004,19 +923,28 @@ class UserServiceManager(metaclass=singleton.Singleton): sortPools = [(p.pool.usage(), p.pool) for p in poolMembers] else: sortPools = [ - (random.randint(0, 10000), p.pool) for p in poolMembers # nosec: just a suffle, not a crypto (to get a round robin-like behavior) + ( + random.randint( + 0, 10000 + ), # nosec: just a suffle, not a crypto (to get a round robin-like behavior) + p.pool, + ) + for p in poolMembers ] # Just shuffle them # Sort pools related to policy now, and xtract only pools, not sort keys # split resuult in two lists, 100% full and not 100% full # Remove "full" pools (100%) from result and pools in maintenance mode, not ready pools, etc... sortedPools = sorted(sortPools, key=operator.itemgetter(0)) # sort by priority (first element) - pools: typing.List[ServicePool] = [ - p[1] for p in sortedPools if p[1].usage() < 100 and p[1].isUsable() - ] - poolsFull: typing.List[ServicePool] = [ - p[1] for p in sortedPools if p[1].usage() == 100 and p[1].isUsable() - ] + pools: typing.List[ServicePool] = [] + poolsFull: typing.List[ServicePool] = [] + for p in sortedPools: + if not p[1].isUsable(): + continue + if p[1].usage() == 100: + poolsFull.append(p[1]) + else: + pools.append(p[1]) logger.debug('Pools: %s/%s', pools, poolsFull) @@ -1061,7 +989,9 @@ class UserServiceManager(metaclass=singleton.Singleton): # If already assigned, and HA is enabled, check if it is accessible if meta.ha_policy == MetaPool.HA_POLICY_ENABLED: # Check that servide is accessible - if not alreadyAssigned.deployed_service.service.getInstance().isAvailable(): # Not available, mark for removal + if ( + not alreadyAssigned.deployed_service.service.getInstance().isAvailable() + ): # Not available, mark for removal alreadyAssigned.release() raise Exception() # And process a new access @@ -1080,9 +1010,7 @@ class UserServiceManager(metaclass=singleton.Singleton): ) except Exception: # No service already assigned, lets find a suitable one - for ( - pool - ) in pools: # Pools are already sorted, and "full" pools are filtered out + for pool in pools: # Pools are already sorted, and "full" pools are filtered out if meta.ha_policy == MetaPool.HA_POLICY_ENABLED: # If not available, skip it if pool.service.getInstance().isAvailable() is False: @@ -1114,12 +1042,8 @@ class UserServiceManager(metaclass=singleton.Singleton): log.doLog( meta, - log.WARN, - "No user service accessible from device (ip {}, os: {})".format( - srcIp, os.os.name - ), - log.SERVICE, - ) - raise InvalidServiceException( - _('The service is not accessible from this device') + log.LogLevel.WARNING, + f'No user service accessible from device (ip {srcIp}, os: {os.os.name})', + log.LogSource.SERVICE, ) + raise InvalidServiceException(_('The service is not accessible from this device')) diff --git a/server/src/uds/core/managers/userservice/comms.py b/server/src/uds/core/managers/userservice/comms.py index 62a3ceab1..19c066f23 100644 --- a/server/src/uds/core/managers/userservice/comms.py +++ b/server/src/uds/core/managers/userservice/comms.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import os import json @@ -35,7 +35,7 @@ import tempfile import logging import typing -import requests +from uds.core.util.security import secureRequestsSession if typing.TYPE_CHECKING: from uds.models import UserService @@ -67,9 +67,11 @@ def _requestActor( """ url = userService.getCommsUrl() if not url: + # Maybe service knows how to do it + # logger.warning('No notification is made because agent does not supports notifications: %s', userService.friendly_name) raise NoActorComms( - 'No notification urls for {}'.format(userService.friendly_name) + f'No notification urls for {userService.friendly_name}' ) minVersion = minVersion or '3.5.0' @@ -79,41 +81,38 @@ def _requestActor( 'Pool %s has old actors (%s)', userService.deployed_service.name, version ) raise OldActorVersion( - 'Old actor version {} for {}'.format(version, userService.friendly_name) + f'Old actor version {version} for {userService.friendly_name}'.format(version, userService.friendly_name) ) url += '/' + method - proxy = userService.deployed_service.proxy try: - if proxy: - r = proxy.doProxyRequest(url=url, data=data, timeout=TIMEOUT) + verify: typing.Union[bool, str] + cert = userService.getProperty('cert') or '' + # cert = '' # Uncomment to test without cert + if cert: + # Generate temp file, and delete it after + with tempfile.NamedTemporaryFile('wb', delete=False) as f: + f.write(cert.encode()) # Save cert + verify = f.name else: - verify: typing.Union[bool, str] - cert = userService.getProperty('cert') - # cert = '' # Untils more tests, keep as previous.... TODO: Fix this when fully tested - if cert: - # Generate temp file, and delete it after - verify = tempfile.mktemp('udscrt') - with open(verify, 'wb') as f: - f.write(cert.encode()) # Save cert - else: - verify = False - if data is None: - r = requests.get(url, verify=verify, timeout=TIMEOUT) - else: - r = requests.post( - url, - data=json.dumps(data), - headers={'content-type': 'application/json'}, - verify=verify, - timeout=TIMEOUT, - ) - if verify: - try: - os.remove(typing.cast(str, verify)) - except Exception: - logger.exception('removing verify') + verify = False + session = secureRequestsSession(verify=cert) + if data is None: + r = session.get(url, verify=verify, timeout=TIMEOUT) + else: + r = session.post( + url, + data=json.dumps(data), + headers={'content-type': 'application/json'}, + verify=verify, + timeout=TIMEOUT, + ) + if verify: + try: + os.remove(typing.cast(str, verify)) + except Exception: + logger.exception('removing verify') js = r.json() if version >= '3.0.0': diff --git a/server/src/uds/core/managers/userservice/opchecker.py b/server/src/uds/core/managers/userservice/opchecker.py index 1f50b301c..c8a17fc0a 100644 --- a/server/src/uds/core/managers/userservice/opchecker.py +++ b/server/src/uds/core/managers/userservice/opchecker.py @@ -67,7 +67,7 @@ class StateUpdater: logger.error('Got error on processor: %s', msg) self.save(State.ERROR) if msg is not None: - log.doLog(self.userService, log.ERROR, msg, log.INTERNAL) + log.doLog(self.userService, log.LogLevel.ERROR, msg, log.LogSource.INTERNAL) def save(self, newState: typing.Optional[str] = None): if newState: @@ -101,7 +101,7 @@ class StateUpdater: try: executor() except Exception as e: - self.setError('Exception: {}'.format(e)) + self.setError(f'Exception: {e}') logger.debug('Executor for %s done', self.userService.friendly_name) @@ -196,16 +196,12 @@ class UpdateFromCanceling(StateUpdater): class UpdateFromOther(StateUpdater): def finish(self): self.setError( - 'Unknown running transition from {}'.format( - State.toString(self.userService.state) - ) + f'Unknown running transition from {State.toString(self.userService.state)}' ) def running(self): self.setError( - 'Unknown running transition from {}'.format( - State.toString(self.userService.state) - ) + f'Unknown running transition from {State.toString(self.userService.state)}' ) @@ -267,7 +263,7 @@ class UserServiceOpChecker(DelayedTask): except Exception as e: logger.exception('Checking service state') - log.doLog(userService, log.ERROR, 'Exception: {}'.format(e), log.INTERNAL) + log.doLog(userService, log.LogLevel.ERROR, f'Exception: {e}', log.LogSource.INTERNAL) userService.setState(State.ERROR) userService.save(update_fields=['data']) @@ -300,7 +296,7 @@ class UserServiceOpChecker(DelayedTask): logger.debug("uService instance class: %s", ci.__class__) state = ci.checkState() UserServiceOpChecker.checkAndUpdateState(uService, ci, state) - except UserService.DoesNotExist as e: + except UserService.DoesNotExist as e: # pylint: disable=no-member logger.error( 'User service not found (erased from database?) %s : %s', e.__class__, e ) @@ -308,7 +304,7 @@ class UserServiceOpChecker(DelayedTask): # Exception caught, mark service as errored logger.exception("Error %s, %s :", e.__class__, e) if uService: - log.doLog(uService, log.ERROR, 'Exception: {}'.format(e), log.INTERNAL) + log.doLog(uService, log.LogLevel.ERROR, f'Exception: {e}', log.LogSource.INTERNAL) try: uService.setState(State.ERROR) uService.save(update_fields=['data']) diff --git a/server/src/uds/core/messaging/__init__.py b/server/src/uds/core/messaging/__init__.py index 0de1ce295..b9a017903 100644 --- a/server/src/uds/core/messaging/__init__.py +++ b/server/src/uds/core/messaging/__init__.py @@ -27,9 +27,9 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -from .provider import Notifier, NotificationLevel +from .provider import Notifier, LogLevel from .msgfactory import NotifierFactory from . import config diff --git a/server/src/uds/core/messaging/processor.py b/server/src/uds/core/messaging/processor.py index aa20c75de..8ecf882fa 100644 --- a/server/src/uds/core/messaging/processor.py +++ b/server/src/uds/core/messaging/processor.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import time @@ -35,8 +35,9 @@ import typing from uds.core.managers.task import BaseThread -from uds.models import Notifier, Notification, getSqlDatetime -from .provider import Notifier as NotificationProviderModule, NotificationLevel +from uds.models import Notifier, Notification +from uds.core.util.model import getSqlDatetime +from .provider import Notifier as NotificationProviderModule, LogLevel from .config import DO_NOT_REPEAT logger = logging.getLogger(__name__) @@ -55,7 +56,7 @@ class MessageProcessorThread(BaseThread): def __init__(self): super().__init__() - self.setName('MessageProcessorThread') + self.name = 'MessageProcessorThread' self._cached_providers = None self._cached_stamp = 0.0 @@ -75,18 +76,20 @@ class MessageProcessorThread(BaseThread): def run(self): while self.keepRunning: - # Locate all notifications from "persistent" and try to process them # If no notification can be fully resolved, it will be kept in the database + sinceSkip = getSqlDatetime() - datetime.timedelta( + seconds=DO_NOT_REPEAT.getInt() + ) for n in Notification.getPersistentQuerySet().all(): # If there are any other notification simmilar to this on default db, skip it - # Simmilar means that group and identificator are present and it has less than DO_NOT_REPEAT seconds + # Simmilar means that group, identificator and message are already been logged less than DO_NOT_REPEAT seconds ago # from last time if Notification.objects.filter( group=n.group, identificator=n.identificator, - stamp__gt=getSqlDatetime() - - datetime.timedelta(DO_NOT_REPEAT.getInt()), + message=n.message, + stamp__gt=sinceSkip, ).exists(): # Remove it from the persistent db n.deletePersistent() @@ -94,10 +97,11 @@ class MessageProcessorThread(BaseThread): # Try to insert into Main DB notify = ( not n.processed - ) # If it was already processed, the only thing left is to add to maind DB and remove it from persistent + ) # If it was already processed, the only thing left to do is to add to main DB and remove it from persistent pk = n.pk n.processed = True try: + # Trick to save it to main DB n.pk = None n.save(using='default') # Delete from Persistent DB, first restore PK @@ -114,10 +118,10 @@ class MessageProcessorThread(BaseThread): logger.error('Error saving notification %s to persistent DB', n) continue # Process notificators, but this is kept on db with processed flat as True - logger.warning( - 'Could not save notification %s to main DB, trying notificators', - n, - ) + # logger.warning( + # 'Could not save notification %s to main DB, trying notificators', + # n, + #) if notify: for p in (i[1] for i in self.providers if i[0] >= n.level): @@ -127,11 +131,11 @@ class MessageProcessorThread(BaseThread): p.notify( n.group, n.identificator, - NotificationLevel.from_int(n.level), + LogLevel.fromInt(n.level), n.message, ) - for a in range(WAIT_TIME): + for _ in range(WAIT_TIME): if not self.keepRunning: break time.sleep(1) diff --git a/server/src/uds/core/messaging/provider.py b/server/src/uds/core/messaging/provider.py index 48501a981..10fb1b860 100644 --- a/server/src/uds/core/messaging/provider.py +++ b/server/src/uds/core/messaging/provider.py @@ -26,43 +26,26 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing -import enum + from django.utils.translation import gettext_noop as _ -from uds.core import Module +from uds.core.util.log import LogLevel +from uds.core.module import Module if typing.TYPE_CHECKING: from uds.core.environment import Environment -class NotificationLevel(enum.IntEnum): - """ - Notifier levels - """ - INFO = 0 - WARNING = 1 - ERROR = 2 - CRITICAL = 3 - - @staticmethod - def from_int(value: int) -> 'NotificationLevel': - """ - Returns a NotificationLevel from an int value - """ - try: - return NotificationLevel(value) - except ValueError: - return NotificationLevel.INFO - class Notifier(Module): """ this class provides an abstraction of a notifier system for administrator defined events This class will be responsible os sendig emails, messaging notifications, etc.. to administrators """ + # informational related data # : Name of type, used at administration interface to identify this # : notifier type (e.g. "Email", "SMS", etc.) @@ -108,7 +91,7 @@ class Notifier(Module): Default implementation does nothing """ - def notify(self, group: str, identificator: str, level: NotificationLevel, message: str) -> None: + def notify(self, group: str, identificator: str, level: LogLevel, message: str) -> None: """ This method will be invoked from UDS to notify an event to this notifier. This method will be invoked in real time, so ensure this method does not block or @@ -117,6 +100,4 @@ class Notifier(Module): :param level: Level of event :param message: Message to be shown :return: None - """ - pass - + """ diff --git a/server/src/uds/core/mfas/__init__.py b/server/src/uds/core/mfas/__init__.py index d8dbee789..19c09271c 100644 --- a/server/src/uds/core/mfas/__init__.py +++ b/server/src/uds/core/mfas/__init__.py @@ -28,17 +28,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -UDS os managers related interfaces and classes - -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -from .mfa import MFA +from .mfa import MFA, LoginAllowed +from .mfafactory import MFAsFactory -def factory(): +def factory() -> MFAsFactory: """ Returns factory for register/access to authenticators """ - from .mfafactory import MFAsFactory - - return MFAsFactory.factory() + return MFAsFactory() diff --git a/server/src/uds/core/mfas/mfa.py b/server/src/uds/core/mfas/mfa.py index 2f78e9d48..38bfd2877 100644 --- a/server/src/uds/core/mfas/mfa.py +++ b/server/src/uds/core/mfas/mfa.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# pylint: disable=unused-argument # this has a lot of "default" methods, so we need to ignore unused arguments most of the time # # Copyright (c) 2022 Virtual Cable S.L.U. @@ -37,10 +37,11 @@ import hashlib import logging import typing -from django.utils.translation import gettext_noop as _ -from uds import models -from uds.core import Module +from django.utils.translation import gettext_noop as _, gettext +from uds.core.module import Module +from uds.core.util.model import getSqlDatetime from uds.core.auths import exceptions +from uds.models.network import Network if typing.TYPE_CHECKING: from uds.core.environment import Environment @@ -50,6 +51,54 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) +class LoginAllowed(enum.StrEnum): + """ + This enum is used to know if the MFA code was sent or not. + """ + + ALLOWED = '0' + DENIED = '1' + ALLOWED_IF_IN_NETWORKS = '2' + DENIED_IF_IN_NETWORKS = '3' + + @staticmethod + def checkAction( + action: 'LoginAllowed|str', + request: 'ExtendedHttpRequest', + networks: typing.Optional[typing.Iterable[str]] = None, + ) -> bool: + def checkIp() -> bool: + if networks is None: + return True # No network restrictions, so we allow + return any( + i.contains(request.ip) + for i in Network.objects.filter(uuid__in=list(networks)) + ) + + if isinstance(action, str): + action = LoginAllowed(action) + + return { + LoginAllowed.ALLOWED: True, + LoginAllowed.DENIED: False, + LoginAllowed.ALLOWED_IF_IN_NETWORKS: checkIp(), + LoginAllowed.DENIED_IF_IN_NETWORKS: not checkIp(), + }.get(action, False) + + @staticmethod + def valuesForSelect() -> typing.Mapping[str, str]: + return { + LoginAllowed.ALLOWED.value: gettext('Allow user login'), + LoginAllowed.DENIED.value: gettext('Deny user login'), + LoginAllowed.ALLOWED_IF_IN_NETWORKS.value: gettext( + 'Allow user to login if it IP is in the networks list' + ), + LoginAllowed.DENIED_IF_IN_NETWORKS.value: gettext( + 'Deny user to login if it IP is in the networks list' + ), + } + + class MFA(Module): """ this class provides an abstraction of a Multi Factor Authentication @@ -119,7 +168,7 @@ class MFA(Module): """ This method will be invoked from the MFA form, to know the HTML that will be presented to the user below the MFA code form. - + Args: userId: Id of the user that is requesting the MFA code request: Request object, so you can get more information @@ -129,7 +178,9 @@ class MFA(Module): """ return '' - def emptyIndentifierAllowedToLogin(self, request: 'ExtendedHttpRequest') -> typing.Optional[bool]: + def emptyIndentifierAllowedToLogin( + self, request: 'ExtendedHttpRequest' + ) -> typing.Optional[bool]: """ If this method returns True, an user that has no "identifier" is allowed to login without MFA Returns: @@ -153,8 +204,8 @@ class MFA(Module): If returns MFA.RESULT.ALLOW, the MFA code was not sent, the user does not need to enter the MFA code. If raises an error, the MFA code was not sent, and the user needs to enter the MFA code. """ - - raise NotImplementedError('sendCode method not implemented') + logger.error('MFA.sendCode not implemented') + raise exceptions.MFAError('MFA.sendCode not implemented') def _getData( self, request: 'ExtendedHttpRequest', userId: str @@ -177,7 +228,7 @@ class MFA(Module): Internal method to put the data into storage """ storageKey = request.ip + userId - self.storage.putPickle(storageKey, (models.getSqlDatetime(), code)) + self.storage.putPickle(storageKey, (getSqlDatetime(), code)) def process( self, @@ -214,7 +265,7 @@ class MFA(Module): try: if data and validity: # if we have a stored code, check if it's still valid - if data[0] + datetime.timedelta(seconds=validity) > models.getSqlDatetime(): + if data[0] + datetime.timedelta(seconds=validity) > getSqlDatetime(): # if it's still valid, just return without sending a new one return MFA.RESULT.OK except Exception: @@ -224,10 +275,16 @@ class MFA(Module): # Generate a 6 digit code (0-9) code = ''.join(random.SystemRandom().choices('0123456789', k=6)) logger.debug('Generated OTP is %s', code) - # Store the code in the database, own storage space - self._putData(request, userId, code) + # Send the code to the user - return self.sendCode(request, userId, username, identifier, code) + # May raise an exception if the code was not sent and is required to be sent + # pylint: disable=assignment-from-no-return + result = self.sendCode(request, userId, username, identifier, code) + + # Store the code in the database, own storage space, if no exception was raised + self._putData(request, userId, code) + + return result def validate( self, @@ -264,7 +321,7 @@ class MFA(Module): if ( validity > 0 and data[0] + datetime.timedelta(seconds=validity) - < models.getSqlDatetime() + < getSqlDatetime() ): # if it is no more valid, raise an error # Remove stored code and raise error @@ -290,17 +347,16 @@ class MFA(Module): This method allows to reset the MFA state of an user. Normally, this will do nothing, but for persistent MFA data (as Google Authenticator), this will remove the data. """ - pass @staticmethod - def getUserId(user: models.User) -> str: + def getUserId(user: 'User') -> str: """ Composes an unique, mfa dependant, id for the user (at this time, it's sha3_256 of user + mfa) """ mfa = user.manager.mfa if not mfa: raise exceptions.MFAError('MFA is not enabled') - + return hashlib.sha3_256( (user.name + (user.uuid or '') + mfa.uuid).encode() ).hexdigest() diff --git a/server/src/uds/core/mfas/mfafactory.py b/server/src/uds/core/mfas/mfafactory.py index 074be2dca..f73ac3959 100644 --- a/server/src/uds/core/mfas/mfafactory.py +++ b/server/src/uds/core/mfas/mfafactory.py @@ -30,32 +30,13 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import logging import typing -from uds.core.util import singleton +from uds.core.util import factory if typing.TYPE_CHECKING: from .mfa import MFA -logger = logging.getLogger(__name__) - -class MFAsFactory(metaclass=singleton.Singleton): - _factory: typing.Optional['MFAsFactory'] = None - _mfas: typing.MutableMapping[str, typing.Type['MFA']] = {} - - @staticmethod - def factory() -> 'MFAsFactory': - return MFAsFactory() - - def providers(self) -> typing.Mapping[str, typing.Type['MFA']]: - return self._mfas - - def insert(self, type_: typing.Type['MFA']) -> None: - logger.debug('Adding Multi Factor Auth %s as %s', type_.type(), type_) - typeName = type_.type().lower() - self._mfas[typeName] = type_ - - def lookup(self, typeName: str) -> typing.Optional[typing.Type['MFA']]: - return self._mfas.get(typeName.lower(), None) +class MFAsFactory(factory.ModuleFactory['MFA']): + pass diff --git a/server/src/uds/core/module.py b/server/src/uds/core/module.py index 46feb390b..26f494977 100644 --- a/server/src/uds/core/module.py +++ b/server/src/uds/core/module.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import sys import os.path @@ -39,7 +39,7 @@ import typing from django.utils.translation import gettext as _ -from uds.core.ui import UserInterface +from uds.core.ui.user_interface import UserInterface from .serializable import Serializable from .environment import Environment, Environmentable @@ -207,7 +207,7 @@ class Module(UserInterface, Environmentable, Serializable): return codecs.encode(cls.icon(), 'base64').decode() @staticmethod - def test(env: Environment, data: typing.Dict[str, str]) -> typing.List[typing.Any]: + def test(env: Environment, data: typing.Dict[str, str]) -> typing.List[typing.Any]: # pylint: disable=unused-argument """ Test if the connection data is ok. diff --git a/server/src/uds/core/osmanagers/__init__.py b/server/src/uds/core/osmanagers/__init__.py index c0628a1e8..cd8d118d0 100644 --- a/server/src/uds/core/osmanagers/__init__.py +++ b/server/src/uds/core/osmanagers/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2012-2021 Virtual Cable S.L.U. +# Copyright (c) 2012-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -28,10 +28,10 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -UDS os managers related interfaces and classes - -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ + +# pylint: disable=unused-import from .osmanager import OSManager from .osmfactory import OSManagersFactory diff --git a/server/src/uds/core/osmanagers/osmanager.py b/server/src/uds/core/osmanagers/osmanager.py index 1186a3433..a3594ba66 100644 --- a/server/src/uds/core/osmanagers/osmanager.py +++ b/server/src/uds/core/osmanagers/osmanager.py @@ -39,7 +39,7 @@ from uds.core.util.state import State from uds.core.util.stats.events import addEvent, ET_LOGIN, ET_LOGOUT from uds.core.util import log from uds.core.util.config import GlobalConfig -from uds.core import Module +from uds.core.module import Module STORAGE_KEY = 'osmk' @@ -100,7 +100,7 @@ class OSManager(Module): # These methods must be overriden def actorData( - self, userService: 'UserService' + self, userService: 'UserService' # pylint: disable=unused-argument ) -> typing.MutableMapping[str, typing.Any]: """ This method provides information to actor, so actor can complete os configuration. @@ -136,7 +136,9 @@ class OSManager(Module): """ return {} - def checkState(self, userService: 'UserService') -> str: + def checkState( + self, userService: 'UserService' # pylint: disable=unused-argument + ) -> str: """ This method must be overriden so your os manager can respond to requests from system to the current state of the service This method will be invoked when: @@ -155,7 +157,9 @@ class OSManager(Module): This function can update userService values. Normal operation will be remove machines if this state is not valid """ - def isRemovableOnLogout(self, userService: 'UserService') -> bool: + def isRemovableOnLogout( + self, userService: 'UserService' # pylint: disable=unused-argument + ) -> bool: """ If returns true, when actor notifies "logout", UDS will mark service for removal can be overriden @@ -181,7 +185,10 @@ class OSManager(Module): return cls.processUserPassword != OSManager.processUserPassword def processUserPassword( - self, userService: 'UserService', username: str, password: str + self, + userService: 'UserService', # pylint: disable=unused-argument + username: str, + password: str, ) -> typing.Tuple[str, str]: """ This will be invoked prior to passsing username/password to Transport. @@ -251,9 +258,9 @@ class OSManager(Module): log.doLog( userService, - log.INFO, - "User {0} has logged in".format(userName), - log.OSMANAGER, + log.LogLevel.INFO, + f'User {userName} has logged in', + log.LogSource.OSMANAGER, ) log.useLog( @@ -316,9 +323,9 @@ class OSManager(Module): log.doLog( userService, - log.INFO, - "User {0} has logged out".format(userName), - log.OSMANAGER, + log.LogLevel.INFO, + f'User {userName} has logged out', + log.LogSource.OSMANAGER, ) log.useLog( diff --git a/server/src/uds/core/reports/__init__.py b/server/src/uds/core/reports/__init__.py index 93a84d33c..ed0ce411a 100644 --- a/server/src/uds/core/reports/__init__.py +++ b/server/src/uds/core/reports/__init__.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2015-2020 Virtual Cable S.L.U. +# Copyright (c) 2015-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -28,6 +28,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from .report import Report diff --git a/server/src/uds/core/reports/graphs.py b/server/src/uds/core/reports/graphs.py index c04bf74fb..e42d76be6 100644 --- a/server/src/uds/core/reports/graphs.py +++ b/server/src/uds/core/reports/graphs.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. # -*- coding: utf-8 -*- """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -48,7 +48,9 @@ logger = logging.getLogger(__name__) def barChart( - size: typing.Tuple[float, float, int], data: typing.Mapping[str, typing.Any], output: io.BytesIO + size: typing.Tuple[float, float, int], + data: typing.Mapping[str, typing.Any], + output: io.BytesIO, ) -> None: """ Generates a bar chart and stores it on output @@ -81,7 +83,7 @@ def barChart( fig: Figure = Figure(figsize=(size[0], size[1]), dpi=size[2]) # type: ignore FigureCanvas(fig) # Stores canvas on fig.canvas - axis = fig.add_subplot(111) + axis = fig.add_subplot(1, 1, 1) # type: ignore axis.grid(color='r', linestyle='dotted', linewidth=0.1, alpha=0.5) bottom = np.zeros(len(ys[0]['data'])) @@ -105,7 +107,9 @@ def barChart( def lineChart( - size: typing.Tuple[float, float, int], data: typing.Mapping[str, typing.Any], output: io.BytesIO + size: typing.Tuple[float, float, int], + data: typing.Mapping[str, typing.Any], + output: io.BytesIO, ) -> None: """ Generates a line chart and stores it on output @@ -136,7 +140,7 @@ def lineChart( fig: Figure = Figure(figsize=(size[0], size[1]), dpi=size[2]) # type: ignore FigureCanvas(fig) # Stores canvas on fig.canvas - axis = fig.add_subplot(111) + axis = fig.add_subplot(111) # type: ignore axis.grid(color='r', linestyle='dotted', linewidth=0.1, alpha=0.5) for i in y: @@ -160,7 +164,9 @@ def lineChart( def surfaceChart( - size: typing.Tuple[float, float, int], data: typing.Mapping[str, typing.Any], output: io.BytesIO + size: typing.Tuple[float, float, int], + data: typing.Mapping[str, typing.Any], + output: io.BytesIO, ) -> None: """ Generates a surface chart and stores it on output @@ -205,16 +211,21 @@ def surfaceChart( fig: Figure = Figure(figsize=(size[0], size[1]), dpi=size[2]) # type: ignore FigureCanvas(fig) # Stores canvas on fig.canvas - axis: typing.Any = fig.add_subplot(111, projection='3d') + axis: typing.Any = fig.add_subplot(1, 1, 1, projection='3d') # type: ignore # axis.grid(color='r', linestyle='dotted', linewidth=0.1, alpha=0.5) if data.get('wireframe', False): axis.plot_wireframe( - x, y, z, rstride=1, cstride=1, cmap=cm.coolwarm # type: ignore + x, + y, + z, + rstride=1, + cstride=1, + cmap=cm.coolwarm, # pylint: disable=no-member # type: ignore ) else: axis.plot_surface( - x, y, z, rstride=1, cstride=1, cmap=cm.coolwarm # type: ignore + x, y, z, rstride=1, cstride=1, cmap=cm.coolwarm # type: ignore # pylint: disable=no-member ) axis.set_title(data.get('title', '')) diff --git a/server/src/uds/core/reports/report.py b/server/src/uds/core/reports/report.py index 7ebed10f9..8e63a5585 100644 --- a/server/src/uds/core/reports/report.py +++ b/server/src/uds/core/reports/report.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import codecs import datetime @@ -48,14 +48,20 @@ logger = logging.getLogger(__name__) class Report(UserInterface): - mime_type: typing.ClassVar[str] = 'application/pdf' # Report returns pdfs by default, but could be anything else + mime_type: typing.ClassVar[ + str + ] = 'application/pdf' # Report returns pdfs by default, but could be anything else name: typing.ClassVar[str] = _('Base Report') # Report name group: typing.ClassVar[str] = '' # So we can "group" reports by kind? - encoded: typing.ClassVar[bool] = True # If the report is mean to be encoded (binary reports as PDFs == True, text reports must be False so utf-8 is correctly threated + encoded: typing.ClassVar[ + bool + ] = True # If the report is mean to be encoded (binary reports as PDFs == True, text reports must be False so utf-8 is correctly threated uuid: typing.ClassVar[str] = '' description: str = _('Base report') # Report description - filename: str = 'file.pdf' # Filename that will be returned as 'hint' on rest report request + filename: str = ( + 'file.pdf' # Filename that will be returned as 'hint' on rest report request + ) @classmethod def translated_name(cls): @@ -81,35 +87,42 @@ class Report(UserInterface): @classmethod def getUuid(cls): if cls.uuid is None: - raise Exception('Class does not includes an uuid!!!: {}'.format(cls)) + raise Exception(f'Class does not includes an uuid!!!: {cls}') return cls.uuid @staticmethod - def asPDF(html: str, header: typing.Optional[str] = None, water: typing.Optional[str] = None, images: typing.Optional[typing.Dict[str, bytes]] = None) -> bytes: + def asPDF( + html: str, + header: typing.Optional[str] = None, + water: typing.Optional[str] = None, + images: typing.Optional[typing.Dict[str, bytes]] = None, + ) -> bytes: """ Renders an html as PDF. Uses the "report.css" as stylesheet """ # url fetcher for weasyprint - def report_fetcher(url: str, timeout=10, ssl_context=None) -> typing.Dict: + def report_fetcher( + url: str, timeout=10, ssl_context=None # pylint: disable=unused-argument + ) -> typing.Dict: logger.debug('Getting url for weasyprint %s', url) if url.startswith('stock://'): imagePath = stock.getStockImagePath(url[8:]) with open(imagePath, 'rb') as f: image = f.read() - return dict(string=image, mime_type='image/png') + return {'string': image, 'mime_type': 'image/png'} if url.startswith('image://'): img: typing.Optional[bytes] = b'' # Empty image if images: img = images.get(url[8:]) logger.debug('Getting image %s? %s', url[8:], img is not None) - return dict(string=img, mime_type='image/png') + return {'string': img, 'mime_type': 'image/png'} return default_url_fetcher(url) - with open(stock.getStockCssPath('report.css'), 'r') as f: + with open(stock.getStockCssPath('report.css'), 'r', encoding='utf-8') as f: css = f.read() css = ( @@ -117,13 +130,20 @@ class Report(UserInterface): .replace('{page}', _('Page')) .replace('{of}', _('of')) .replace('{water}', water or 'UDS Report') - .replace('{printed}', _('Printed in {now:%Y, %b %d} at {now:%H:%M}').format(now=datetime.datetime.now())) + .replace( + '{printed}', + _('Printed in {now:%Y, %b %d} at {now:%H:%M}').format( + now=datetime.datetime.now() + ), + ) ) h = HTML(string=html, url_fetcher=report_fetcher) c = CSS(string=css) - return typing.cast(bytes, h.write_pdf(stylesheets=[c])) # Return a new bytes object + return typing.cast( + bytes, h.write_pdf(stylesheets=[c]) + ) # Return a new bytes object @staticmethod def templateAsPDF(templateName, dct, header=None, water=None, images=None) -> bytes: @@ -184,4 +204,4 @@ class Report(UserInterface): return typing.cast(str, data) def __str__(self): - return 'Report {} with uuid {}'.format(self.name, self.uuid) + return f'Report {self.name} with uuid {self.uuid}' diff --git a/server/src/uds/core/reports/stock.py b/server/src/uds/core/reports/stock.py index a972600e3..0f46b35bb 100644 --- a/server/src/uds/core/reports/stock.py +++ b/server/src/uds/core/reports/stock.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/core/serializable.py b/server/src/uds/core/serializable.py index 2c95112a7..164b817bc 100644 --- a/server/src/uds/core/serializable.py +++ b/server/src/uds/core/serializable.py @@ -28,12 +28,10 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import base64 import pickle # nosec: Safe pickle usage -import gzip -import typing class Serializable: diff --git a/server/src/uds/core/services/__init__.py b/server/src/uds/core/services/__init__.py index 07bbd6b14..d1cd4c20d 100644 --- a/server/src/uds/core/services/__init__.py +++ b/server/src/uds/core/services/__init__.py @@ -30,12 +30,12 @@ """ UDS Service modules interfaces and classes. -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from . import exceptions from . import types -from .user_deployment import UserDeployment +from .user_service import UserDeployment from .publication import Publication from .service import Service from .provider import ServiceProvider diff --git a/server/src/uds/core/services/exceptions.py b/server/src/uds/core/services/exceptions.py index f7b2a4e27..2db37c4c7 100644 --- a/server/src/uds/core/services/exceptions.py +++ b/server/src/uds/core/services/exceptions.py @@ -28,17 +28,20 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing +from uds.core.exceptions import UDSException + if typing.TYPE_CHECKING: from uds.models import UserService, Transport -class ServiceException(Exception): - def __init__(self, *args, **kwargs): - super(ServiceException, self).__init__(*args) +class ServiceException(UDSException): + """ + Base class for all service exceptions + """ class UnsupportedException(ServiceException): diff --git a/server/src/uds/core/services/provider.py b/server/src/uds/core/services/provider.py index e8b74ddbf..9e35b53a4 100644 --- a/server/src/uds/core/services/provider.py +++ b/server/src/uds/core/services/provider.py @@ -28,16 +28,15 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing -from uds.core import Module +from uds.core.module import Module from uds.core.environment import Environment from uds.core.util import log -from uds.core.util.config import GlobalConfig from uds.core.ui import gui # Not imported at runtime, just for type checking @@ -209,15 +208,15 @@ class ServiceProvider(Module): val = getattr(val, 'value', val) return val is True or val == gui.TRUE - def doLog(self, level: int, message: str) -> None: + def doLog(self, level: log.LogLevel, message: str) -> None: """ Logs a message with requested level associated with this service """ - from uds.models import Provider as DBProvider + from uds.models import Provider as DBProvider # pylint: disable=import-outside-toplevel if self.getUuid(): log.doLog( - DBProvider.objects.get(uuid=self.getUuid()), level, message, log.SERVICE + DBProvider.objects.get(uuid=self.getUuid()), level, message, log.LogSource.SERVICE ) def __str__(self): diff --git a/server/src/uds/core/services/provider_factory.py b/server/src/uds/core/services/provider_factory.py index d37dce10f..07403ce13 100644 --- a/server/src/uds/core/services/provider_factory.py +++ b/server/src/uds/core/services/provider_factory.py @@ -33,10 +33,11 @@ import typing import logging +from uds.core.util import factory + from .provider import ServiceProvider from .service import Service -from uds.core.util import factory logger = logging.getLogger(__name__) diff --git a/server/src/uds/core/services/publication.py b/server/src/uds/core/services/publication.py index bd74a2fa8..d3095d4f6 100644 --- a/server/src/uds/core/services/publication.py +++ b/server/src/uds/core/services/publication.py @@ -28,12 +28,13 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ +import abc import typing -from uds.core import Environmentable -from uds.core import Serializable +from uds.core.environment import Environmentable +from uds.core.serializable import Serializable if typing.TYPE_CHECKING: from uds.core import services @@ -158,6 +159,7 @@ class Publication(Environmentable, Serializable): def getUuid(self) -> str: return self._uuid + @abc.abstractmethod def publish(self) -> str: """ This method is invoked whenever the administrator requests a new publication. @@ -192,11 +194,10 @@ class Publication(Environmentable, Serializable): this method. """ raise NotImplementedError( - 'publish method for class {0} not provided! '.format( - self.__class__.__name__ - ) + f'publish method for class {self.__class__.__name__} not provided! ' ) + @abc.abstractmethod def checkState(self) -> str: """ This is a task method. As that, the expected return values are @@ -222,9 +223,7 @@ class Publication(Environmentable, Serializable): this method. """ raise NotImplementedError( - 'checkState method for class {0} not provided!!!'.format( - self.__class__.__name__ - ) + f'checkState method for class {self.__class__.__name__} not provided!!!' ) def finish(self) -> None: @@ -251,6 +250,7 @@ class Publication(Environmentable, Serializable): """ return 'unknown' + @abc.abstractmethod def destroy(self) -> str: """ This is a task method. As that, the expected return values are @@ -270,9 +270,10 @@ class Publication(Environmentable, Serializable): this method. """ raise NotImplementedError( - 'destroy method for class {0} not provided!'.format(self.__class__.__name__) + f'destroy method for class {self.__class__.__name__} not provided!' ) + @abc.abstractmethod def cancel(self) -> str: """ This is a task method. As that, the expected return values are @@ -292,11 +293,11 @@ class Publication(Environmentable, Serializable): this method. """ raise NotImplementedError( - 'cancel method for class {0} not provided!'.format(self.__class__.__name__) + f'cancel method for class {self.__class__.__name__} not provided!' ) def __str__(self): """ String method, mainly used for debugging purposes """ - return "Base Publication" + return 'Base Publication' diff --git a/server/src/uds/core/services/service.py b/server/src/uds/core/services/service.py index edbc2ae7c..758fc264f 100644 --- a/server/src/uds/core/services/service.py +++ b/server/src/uds/core/services/service.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# pylint: disable=unused-argument # this has a lot of "default" methods, so we need to ignore unused arguments most of the time # # Copyright (c) 2012-2021 Virtual Cable S.L.U. @@ -28,21 +28,21 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import logging from django.utils.translation import gettext_noop as _ -from uds.core import Module +from uds.core.module import Module from uds.core.transports import protocols from uds.core.util.state import State from uds.core.util import log from . import types from .publication import Publication -from .user_deployment import UserDeployment +from .user_service import UserDeployment if typing.TYPE_CHECKING: from uds.core import services @@ -139,9 +139,7 @@ class Service(Module): usesCache = False # : Tooltip to be used if services uses cache at administration interface, indicated by :py:attr:.usesCache - cacheTooltip = _( - 'None' - ) # : Tooltip shown to user when this item is pointed at admin interface + cacheTooltip = _('None') # : Tooltip shown to user when this item is pointed at admin interface # : If user deployments can be cached (see :py:attr:.usesCache), may he also can provide a secondary cache, # : that is no more that user deployments that are "almost ready" to be used, but preperably consumes less @@ -150,9 +148,7 @@ class Service(Module): usesCache_L2 = False # : If we need to generate a "Level 2" cache for this service (i.e., L1 could be running machines and L2 suspended machines) # : Tooltip to be used if services uses L2 cache at administration interface, indicated by :py:attr:.usesCache_L2 - cacheTooltip_L2 = _( - 'None' - ) # : Tooltip shown to user when this item is pointed at admin interface + cacheTooltip_L2 = _('None') # : Tooltip shown to user when this item is pointed at admin interface # : If the service needs a o.s. manager (see os managers section) needsManager: bool = False @@ -270,9 +266,7 @@ class Service(Module): # Keep untouched if maxServices is not present - def requestServicesForAssignation( - self, **kwargs - ) -> typing.Iterable[UserDeployment]: + def requestServicesForAssignation(self, **kwargs) -> typing.Iterable[UserDeployment]: """ override this if mustAssignManualy is True @params kwargs: Named arguments @@ -281,9 +275,7 @@ class Service(Module): name returned is unique :-) """ raise Exception( - 'The class {0} has been marked as manually asignable but no requestServicesForAssignetion provided!!!'.format( - self.__class__.__name__ - ) + f'The class {self.__class__.__name__} has been marked as manually asignable but no requestServicesForAssignetion provided!!!' ) def macGenerator(self) -> typing.Optional['UniqueMacGenerator']: @@ -384,6 +376,18 @@ class Service(Module): """ return + def notifyData(self, id: typing.Optional[str], data: str) -> None: + """ + Processes a custom data notification, that must be interpreted by the service itself. + This allows "token actors" to communicate with service directly, what is needed for + some kind of services (like LinuxApps) + + Args: + id (typing.Optional[str]): Id validated through "getValidId". May be None if not validated (or not provided) + data (str): Data to process + """ + return + def storeIdInfo(self, id: str, data: typing.Any) -> None: self.storage.putPickle('__nfo_' + id, data) @@ -394,16 +398,14 @@ class Service(Module): self.storage.delete('__nfo_' + id) return value - def doLog(self, level: int, message: str) -> None: + def doLog(self, level: log.LogLevel, message: str) -> None: """ Logs a message with requested level associated with this service """ - from uds.models import Service as DBService + from uds.models import Service as DBService # pylint: disable=import-outside-toplevel if self.getUuid(): - log.doLog( - DBService.objects.get(uuid=self.getUuid()), level, message, log.SERVICE - ) + log.doLog(DBService.objects.get(uuid=self.getUuid()), level, message, log.LogSource.SERVICE) @classmethod def canAssign(cls) -> bool: diff --git a/server/src/uds/core/services/types.py b/server/src/uds/core/services/types.py index d96c9dafc..43209efb3 100644 --- a/server/src/uds/core/services/types.py +++ b/server/src/uds/core/services/types.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ VDI = 'vdi' VAPP = 'vApp' diff --git a/server/src/uds/core/services/user_deployment.py b/server/src/uds/core/services/user_service.py similarity index 96% rename from server/src/uds/core/services/user_deployment.py rename to server/src/uds/core/services/user_service.py index 504083861..a644ef8f4 100644 --- a/server/src/uds/core/services/user_deployment.py +++ b/server/src/uds/core/services/user_service.py @@ -28,12 +28,12 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing -from uds.core import Environmentable -from uds.core import Serializable +from uds.core.environment import Environmentable +from uds.core.serializable import Serializable from uds.core.util.state import State from uds.core.util import log @@ -149,9 +149,7 @@ class UserDeployment(Environmentable, Serializable): """ Environmentable.__init__(self, environment) Serializable.__init__(self) - self._service = kwargs[ - 'service' - ] # Raises an exception if service is not included. Parent + self._service = kwargs['service'] # Raises an exception if service is not included. Parent self._publication = kwargs.get('publication', None) self._osmanager = kwargs.get('osmanager', None) self._dbService = kwargs.get('dbservice', None) @@ -229,12 +227,12 @@ class UserDeployment(Environmentable, Serializable): """ return self._dbService - def doLog(self, level: int, message: str) -> None: + def doLog(self, level: log.LogLevel, message: str) -> None: """ Logs a message with requested level associated with this user deployment """ if self._dbService: - log.doLog(self._dbService, level, message, log.SERVICE) + log.doLog(self._dbService, level, message, log.LogSource.SERVICE) def macGenerator(self) -> 'UniqueMacGenerator': """ @@ -271,7 +269,7 @@ class UserDeployment(Environmentable, Serializable): """ raise NotImplementedError('Base getUniqueId for User Deployment called!!!') - def notifyReadyFromOsManager(self, data: typing.Any) -> str: + def notifyReadyFromOsManager(self, data: typing.Any) -> str: # pylint: disable=unused-argument """ This is a task method. As that, the excepted return values are State values RUNNING, FINISHED or ERROR. @@ -387,11 +385,7 @@ class UserDeployment(Environmentable, Serializable): to the core. Take that into account and handle exceptions inside this method. """ - raise Exception( - 'Base deploy for cache invoked! for class {0}'.format( - self.__class__.__name__ - ) - ) + raise Exception(f'Base deploy for cache invoked! for class {self.__class__.__name__}') def deployForUser(self, user: 'models.User') -> str: """ @@ -426,11 +420,7 @@ class UserDeployment(Environmentable, Serializable): to the core. Take that into account and handle exceptions inside this method. """ - raise NotImplementedError( - 'Base deploy for user invoked! for class {0}'.format( - self.__class__.__name__ - ) - ) + raise NotImplementedError(f'Base deploy for user invoked! for class {self.__class__.__name__}') def checkState(self) -> str: """ @@ -455,9 +445,7 @@ class UserDeployment(Environmentable, Serializable): to the core. Take that into account and handle exceptions inside this method. """ - raise NotImplementedError( - 'Base check state invoked! for class {0}'.format(self.__class__.__name__) - ) + raise NotImplementedError(f'Base check state invoked! for class {self.__class__.__name__}') def finish(self) -> None: """ @@ -473,7 +461,7 @@ class UserDeployment(Environmentable, Serializable): nothing) """ - def moveToCache(self, newLevel: int) -> str: + def moveToCache(self, newLevel: int) -> str: # pylint: disable=unused-argument """ This method is invoked whenever the core needs to move from the current cache level to a new cache level an user deployment. @@ -563,9 +551,7 @@ class UserDeployment(Environmentable, Serializable): to the core. Take that into account and handle exceptions inside this method. """ - raise NotImplementedError( - 'destroy method for class {0} not provided!'.format(self.__class__.__name__) - ) + raise NotImplementedError(f'destroy method for class {self.__class__.__name__} not provided!') def cancel(self) -> str: """ @@ -631,6 +617,7 @@ class UserDeployment(Environmentable, Serializable): monitors: number of monitors to use """ return None + def __str__(self): """ Mainly used for debugging purposses diff --git a/server/src/uds/core/transports/__init__.py b/server/src/uds/core/transports/__init__.py index 5955f7f13..1a3c81e7c 100644 --- a/server/src/uds/core/transports/__init__.py +++ b/server/src/uds/core/transports/__init__.py @@ -30,7 +30,7 @@ """ UDS Service modules interfaces and classes. -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from .transport import Transport, TransportScript, DIRECT_GROUP, TUNNELED_GROUP from .transport_factory import TransportsFactory diff --git a/server/src/uds/core/transports/transport.py b/server/src/uds/core/transports/transport.py index c0fe5d674..c93966849 100644 --- a/server/src/uds/core/transports/transport.py +++ b/server/src/uds/core/transports/transport.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# pylint: disable=unused-argument # this has a lot of "default" methods, so we need to ignore unused arguments most of the time # # Copyright (c) 2012-2022 Virtual Cable S.L.U. @@ -30,7 +30,6 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import os import sys import codecs import logging @@ -40,7 +39,7 @@ import typing from django.utils.translation import gettext_noop as _ from uds.core.util import os_detector as OsDetector -from uds.core import Module +from uds.core.module import Module from uds.core.transports import protocols from uds.core.util import net @@ -156,7 +155,7 @@ class Transport(Module): Returns a customized error message, that will be used when a service fails to check "isAvailableFor" Override this in yours transports if needed """ - return "Not accessible (using service ip {})".format(ip) + return f'Not accessible (using service ip {ip})' @classmethod def supportsProtocol(cls, protocol: typing.Union[typing.Iterable, str]): @@ -229,7 +228,7 @@ class Transport(Module): userService: 'models.UserService', transport: 'models.Transport', ip: str, - os: 'DetectedOsInfo', + os: 'DetectedOsInfo', # pylint: disable=redefined-outer-name user: 'models.User', password: str, request: 'ExtendedHttpRequestWithUser', @@ -263,7 +262,7 @@ class Transport(Module): userService: 'models.UserService', transport: 'models.Transport', ip: str, - os: 'DetectedOsInfo', + os: 'DetectedOsInfo', # pylint: disable=redefined-outer-name user: 'models.User', password: str, request: 'ExtendedHttpRequestWithUser', @@ -296,12 +295,16 @@ class Transport(Module): params: Parameters for the return tuple """ # Reads script and signature + import os # pylint: disable=import-outside-toplevel + basePath = os.path.dirname( sys.modules[self.__module__].__file__ or 'not_found' ) # Will raise if not found - script = open(os.path.join(basePath, scriptName), 'r').read() - signature = open(os.path.join(basePath, scriptName + '.signature'), 'r').read() + with open(os.path.join(basePath, scriptName), 'r', encoding='utf8') as scriptFile: + script = scriptFile.read() + with open(os.path.join(basePath, scriptName + '.signature'), 'r', encoding='utf8') as signatureFile: + signature = signatureFile.read() return TransportScript( script=script, @@ -320,7 +323,7 @@ class Transport(Module): Returns a script for the given os and type """ return self.getRelativeScript( - 'scripts/{os}/{type}.py'.format(os=osName, type=type), params + f'scripts/{osName}/{type}.py', params ) def getLink( @@ -328,7 +331,7 @@ class Transport(Module): userService: 'models.UserService', transport: 'models.Transport', ip: str, - os: 'DetectedOsInfo', + os: 'DetectedOsInfo', # pylint: disable=redefined-outer-name user: 'models.User', password: str, request: 'ExtendedHttpRequestWithUser', diff --git a/server/src/uds/core/ui/user_interface.py b/server/src/uds/core/ui/user_interface.py index 6cc716efa..7b89486c0 100644 --- a/server/src/uds/core/ui/user_interface.py +++ b/server/src/uds/core/ui/user_interface.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ # pylint: disable=too-many-lines import codecs @@ -124,27 +124,27 @@ class gui: # : For backward compatibility, will be removed in future versions # For now, will log a warning if used @deprecatedClassValue('gui.Tab.ADVANCED') - def ADVANCED_TAB(cls) -> str: + def ADVANCED_TAB(cls) -> str: # pylint: disable=no-self-argument return str(gui.Tab.ADVANCED) @deprecatedClassValue('gui.Tab.PARAMETERS') - def PARAMETERS_TAB(cls) -> str: + def PARAMETERS_TAB(cls) -> str: # pylint: disable=no-self-argument return str(gui.Tab.PARAMETERS) @deprecatedClassValue('gui.Tab.CREDENTIALS') - def CREDENTIALS_TAB(cls) -> str: + def CREDENTIALS_TAB(cls) -> str: # pylint: disable=no-self-argument return str(gui.Tab.CREDENTIALS) @deprecatedClassValue('gui.Tab.TUNNEL') - def TUNNEL_TAB(cls) -> str: + def TUNNEL_TAB(cls) -> str: # pylint: disable=no-self-argument return str(gui.Tab.TUNNEL) @deprecatedClassValue('gui.Tab.DISPLAY') - def DISPLAY_TAB(cls) -> str: + def DISPLAY_TAB(cls) -> str: # pylint: disable=no-self-argument return str(gui.Tab.DISPLAY) @deprecatedClassValue('gui.Tab.MFA') - def MFA_TAB(cls) -> str: + def MFA_TAB(cls) -> str: # pylint: disable=no-self-argument return str(gui.Tab.MFA) # : Static Callbacks simple registry @@ -196,7 +196,7 @@ class gui: ) -> 'gui.ChoiceType': if isinstance(val, dict): if 'id' not in val or 'text' not in val: - raise ValueError('Invalid choice dict: {}'.format(val)) + raise ValueError(f'Invalid choice dict: {val}') return gui.choiceItem(val['id'], val['text']) # If val is not a dict, and it has not 'id' and 'text', raise an exception return gui.choiceItem(val, val) @@ -214,7 +214,7 @@ class gui: return [choiceFromValue(v) for v in vals] # This should never happen - raise RuntimeError('Invalid type for convertToChoices: {}'.format(type(vals))) + raise ValueError(f'Invalid type for convertToChoices: {vals}') @staticmethod def convertToList( @@ -511,7 +511,7 @@ class gui: """ - class PatternTypes: + class PatternType(enum.Enum): IPV4 = 'ipv4' IPV6 = 'ipv6' IP = 'ip' @@ -528,7 +528,7 @@ class gui: super().__init__(**options, type=gui.InputField.Types.TEXT) self._data['multiline'] = min(max(int(options.get('multiline', 0)), 0), 8) # Pattern to validate the value - # Can contain an regex or this special values: (empty string means no validation) + # Can contain an regex or PatternType # - 'ipv4' # IPv4 address # - 'ipv6' # IPv6 address # - 'ip' # IPv4 or IPv6 address @@ -542,8 +542,10 @@ class gui: # Note: # Checks are performed on admin side, so they are not 100% reliable. self._data['pattern'] = options.get( - 'pattern', gui.TextField.PatternTypes.NONE + 'pattern', gui.TextField.PatternType.NONE ) + if isinstance(self._data['pattern'], str): + self._data['pattern'] = gui.TextField.PatternType(self._data['pattern']) def cleanStr(self): return str(self.value).strip() @@ -552,31 +554,31 @@ class gui: return super().validate() and self._validatePattern() def _validatePattern(self) -> bool: - if isinstance(self._data['pattern'], gui.TextField.PatternTypes): + if isinstance(self._data['pattern'], gui.TextField.PatternType): try: - pattern: gui.TextField.PatternTypes = self._data['pattern'] - if pattern == gui.TextField.PatternTypes.IPV4: + pattern: gui.TextField.PatternType = self._data['pattern'] + if pattern == gui.TextField.PatternType.IPV4: validators.validateIpv4(self.value) - elif pattern == gui.TextField.PatternTypes.IPV6: + elif pattern == gui.TextField.PatternType.IPV6: validators.validateIpv6(self.value) - elif pattern == gui.TextField.PatternTypes.IP: + elif pattern == gui.TextField.PatternType.IP: validators.validateIpv4OrIpv6(self.value) - elif pattern == gui.TextField.PatternTypes.MAC: + elif pattern == gui.TextField.PatternType.MAC: validators.validateMac(self.value) - elif pattern == gui.TextField.PatternTypes.URL: + elif pattern == gui.TextField.PatternType.URL: validators.validateUrl(self.value) - elif pattern == gui.TextField.PatternTypes.EMAIL: + elif pattern == gui.TextField.PatternType.EMAIL: validators.validateEmail(self.value) - elif pattern == gui.TextField.PatternTypes.FQDN: + elif pattern == gui.TextField.PatternType.FQDN: validators.validateFqdn(self.value) - elif pattern == gui.TextField.PatternTypes.HOSTNAME: + elif pattern == gui.TextField.PatternType.HOSTNAME: validators.validateHostname(self.value) - elif pattern == gui.TextField.PatternTypes.HOST: + elif pattern == gui.TextField.PatternType.HOST: try: validators.validateHostname(self.value, allowDomain=True) except exceptions.ValidationError: validators.validateIpv4OrIpv6(self.value) - elif pattern == gui.TextField.PatternTypes.PATH: + elif pattern == gui.TextField.PatternType.PATH: validators.validatePath(self.value) return True except exceptions.ValidationError: @@ -586,6 +588,9 @@ class gui: return re.match(self._data['pattern'], self.value) is not None return True # No pattern, so it's valid + def __str__(self): + return str(self.value) + class TextAutocompleteField(TextField): """ This represents a text field that holds autocomplete values. @@ -623,6 +628,7 @@ class gui: # with tooltip "Port (usually 443)" and order 1 num = gui.NumericField(length=5, label = _('Port'), defvalue = '443', order = 1, tooltip = _('Port (usually 443)'), + minVAlue = 1024, maxValue = 65535, required = True) """ @@ -665,7 +671,7 @@ class gui: def __init__(self, **options): super().__init__(**options, type=gui.InputField.Types.DATE) - def date(self, min: bool = True) -> datetime.date: + def date(self, useMin: bool = True) -> datetime.date: """ Returns the date this object represents @@ -680,9 +686,9 @@ class gui: self.value, '%Y-%m-%d' ).date() # ISO Format except Exception: - return datetime.date.min if min else datetime.date.max + return datetime.date.min if useMin else datetime.date.max - def datetime(self, min: bool = True) -> datetime.datetime: + def datetime(self, useMin: bool = True) -> datetime.datetime: """ Returns the date this object represents @@ -695,7 +701,7 @@ class gui: try: return datetime.datetime.strptime(self.value, '%Y-%m-%d') # ISO Format except Exception: - return datetime.datetime.min if min else datetime.datetime.max + return datetime.datetime.min if useMin else datetime.datetime.max def stamp(self) -> int: return int( @@ -1050,8 +1056,9 @@ class UserInterfaceType(type): better place. This is done this way because we will "deepcopy" these fields later, and update references on class 'self' to the new copy. (so everyone has a different copy) """ + def __new__( - cls: typing.Type['UserInterfaceType'], + mcs: typing.Type['UserInterfaceType'], classname: str, bases: typing.Tuple[type, ...], namespace: typing.Dict[str, typing.Any], @@ -1068,7 +1075,7 @@ class UserInterfaceType(type): newClassDict[attrName] = attr newClassDict['_base_gui'] = _gui return typing.cast( - 'UserInterfaceType', type.__new__(cls, classname, bases, newClassDict) + 'UserInterfaceType', type.__new__(mcs, classname, bases, newClassDict) ) @@ -1083,10 +1090,10 @@ class UserInterface(metaclass=UserInterfaceType): By default, the values passed to this class constructor are used to fill the gui form fields values. """ + class ValidationFieldInfo(typing.NamedTuple): field: str error: str - # Class variable that will hold the gui fields description _base_gui: typing.ClassVar[typing.Dict[str, gui.InputField]] @@ -1246,7 +1253,7 @@ class UserInterface(metaclass=UserInterfaceType): def deserialize(value: bytes) -> typing.Any: if opt_deserializer: return opt_deserializer(value) - return serializer.deserialize(value) + return serializer.deserialize(value) or [] if not values: return @@ -1256,8 +1263,8 @@ class UserInterface(metaclass=UserInterfaceType): self.oldDeserializeForm(values) return - # For future use - version = values[ + # For future use, right now we only have one version + version = values[ # pylint: disable=unused-variable len(SERIALIZATION_HEADER) : len(SERIALIZATION_HEADER) + len(SERIALIZATION_VERSION) ] @@ -1284,7 +1291,7 @@ class UserInterface(metaclass=UserInterfaceType): ] = { gui.InputField.Types.TEXT: lambda x: x, gui.InputField.Types.TEXT_AUTOCOMPLETE: lambda x: x, - gui.InputField.Types.NUMERIC: lambda x: int(x), + gui.InputField.Types.NUMERIC: int, gui.InputField.Types.PASSWORD: lambda x: ( CryptoManager().AESDecrypt(x.encode(), UDSK, True).decode() ), @@ -1367,7 +1374,7 @@ class UserInterface(metaclass=UserInterfaceType): if isinstance(val, bytes): val = val.decode('utf8') except Exception: - logger.exception('Pickling {} from {}'.format(k, self)) + logger.exception('Pickling %s from %s', k, self) val = '' self._gui[k].value = val # logger.debug('Value for {0}:{1}'.format(k, val)) @@ -1399,9 +1406,12 @@ class UserInterface(metaclass=UserInterfaceType): found_erros: typing.List[UserInterface.ValidationFieldInfo] = [] for key, val in self._gui.items(): if val.required and not val.value: - found_erros.append(UserInterface.ValidationFieldInfo(key, 'Field is required')) + found_erros.append( + UserInterface.ValidationFieldInfo(key, 'Field is required') + ) if not val.validate(): - found_erros.append(UserInterface.ValidationFieldInfo(key, 'Field is not valid')) + found_erros.append( + UserInterface.ValidationFieldInfo(key, 'Field is not valid') + ) return found_erros - diff --git a/server/src/uds/core/util/AutoAttributes.py b/server/src/uds/core/util/AutoAttributes.py index 7737bc62d..d4f0c1ddb 100644 --- a/server/src/uds/core/util/AutoAttributes.py +++ b/server/src/uds/core/util/AutoAttributes.py @@ -2,4 +2,5 @@ # Allow old serialized autoattributes to load correctly (register path...) +# pylint: disable=unused-wildcard-import,wildcard-import from .auto_attributes import * diff --git a/server/src/uds/core/util/auto_attributes.py b/server/src/uds/core/util/auto_attributes.py index c43a7a567..e269d5898 100644 --- a/server/src/uds/core/util/auto_attributes.py +++ b/server/src/uds/core/util/auto_attributes.py @@ -31,7 +31,7 @@ @author: Adolfo Gómez, dkmaster at dkmon dot com """ import codecs -import pickle +import pickle # nosec: This is fine, we are not loading untrusted data import logging import typing @@ -105,7 +105,9 @@ class AutoAttributes(Serializable): return # We keep original data (maybe incomplete) if data[:2] == b'v1': - self.attrs = pickle.loads(data[2:]) + self.attrs = pickle.loads( + data[2:] + ) # nosec: pickle is used to load data from trusted source return # We try to load as v0 try: @@ -117,16 +119,18 @@ class AutoAttributes(Serializable): k, v = pair.split(b'\1') # logger.debug('k: %s --- v: %s', k, v) try: - self.attrs[k.decode()] = pickle.loads(v) + self.attrs[k.decode()] = pickle.loads( + v + ) # nosec: pickle is used to load data from trusted source except Exception: # Old encoding on python2, set encoding for loading - self.attrs[k.decode()] = pickle.loads(v, encoding='utf8') + self.attrs[k.decode()] = pickle.loads( + v, encoding='utf8' + ) # nosec: pickle is used to load data from trusted source def __repr__(self) -> str: return ( 'AutoAttributes(' - + ', '.join( - '{}={}'.format(k, v.getType().__name__) for k, v in self.attrs.items() - ) + + ', '.join(f'{k}={v.getType().__name__}' for k, v in self.attrs.items()) + ')' ) @@ -134,7 +138,7 @@ class AutoAttributes(Serializable): return ( '' diff --git a/server/src/uds/core/util/auto_serializable.py b/server/src/uds/core/util/auto_serializable.py index 3ce9d2928..f25efd352 100644 --- a/server/src/uds/core/util/auto_serializable.py +++ b/server/src/uds/core/util/auto_serializable.py @@ -59,6 +59,7 @@ from cryptography import fernet from django.conf import settings +# pylint: disable=too-few-public-methods class _Unassigned: pass @@ -94,10 +95,9 @@ def fernet_key(crypt_key: bytes) -> str: Note: if password is not set, this will raise an exception """ # Generate an URL-Safe base64 encoded 32 bytes key for Fernet - # First, with seed + password, generate a 32 bytes key based on seed + password return base64.b64encode(hashlib.sha256(crypt_key).digest()).decode() - +# pylint: disable=unnecessary-dunder-call class _SerializableField(typing.Generic[T]): name: str type: typing.Type[T] @@ -110,10 +110,9 @@ class _SerializableField(typing.Generic[T]): def _default(self) -> T: if isinstance(self.default, _Unassigned): return self.type() - elif callable(self.default): + if callable(self.default): return self.default() - else: - return self.default + return self.default def __get__( self, @@ -309,13 +308,12 @@ class PasswordField(StringField): class _FieldNameSetter(type): """Simply adds the name of the field in the class to the field object""" - def __new__(cls, name, bases, attrs): - fields = dict() + def __new__(mcs, name, bases, attrs): for k, v in attrs.items(): if isinstance(v, _SerializableField): v.name = k - return super().__new__(cls, name, bases, attrs) + return super().__new__(mcs, name, bases, attrs) class AutoSerializable(metaclass=_FieldNameSetter): @@ -346,8 +344,6 @@ class AutoSerializable(metaclass=_FieldNameSetter): """ return bytes(a ^ b for a, b in zip(data, itertools.cycle(header))) - return data - def unprocess_data(self, header: bytes, data: bytes) -> bytes: """Process data after unmarshalling @@ -367,7 +363,7 @@ class AutoSerializable(metaclass=_FieldNameSetter): def marshal(self) -> bytes: # Iterate over own members and extract fields fields = {} - for k, v in self.__class__.__dict__.items(): + for _, v in self.__class__.__dict__.items(): if isinstance(v, _SerializableField): fields[v.name] = (str(v.__class__.__name__), v.marshal(self)) @@ -435,16 +431,17 @@ class AutoSerializable(metaclass=_FieldNameSetter): # Remove from data data = data[8 + name_len + type_name_len + data_len :] - for k, v in self.__class__.__dict__.items(): + for _, v in self.__class__.__dict__.items(): if isinstance(v, _SerializableField): if v.name in fields and fields[v.name][0] == str(v.__class__.__name__): v.unmarshal(self, fields[v.name][1]) else: if not v.name in fields: - logger.warning(f"Field {v.name} not found in unmarshalled data") + logger.warning('Field %s not found in unmarshalled data', v.name) else: logger.warning( - f"Field {v.name} has wrong type in unmarshalled data (should be {fields[v.name][0]} and is {v.__class__.name}" + 'Field %s has wrong type in unmarshalled data (should be %s and is %s', + v.name, fields[v.name][0], v.__class__.__name__, ) def __eq__(self, other: typing.Any) -> bool: diff --git a/server/src/uds/core/util/cache.py b/server/src/uds/core/util/cache.py index 7b617e0c5..a727c3372 100644 --- a/server/src/uds/core/util/cache.py +++ b/server/src/uds/core/util/cache.py @@ -37,7 +37,7 @@ import logging from django.db import transaction from uds.models.cache import Cache as DBCache -from uds.models.util import getSqlDatetime +from uds.core.util.model import getSqlDatetime from uds.core.util import serializer from .hash import hash_key @@ -107,10 +107,9 @@ class Cache: Cache.misses += 1 # logger.debug('key not found: %s', skey) return defValue - except Exception as e: + except Exception: logger.exception('Error getting cache key: %s', skey) Cache.misses += 1 - # logger.debug('Cache inaccesible: %s:%s', skey, e) return defValue def __getitem__(self, key: typing.Union[str, bytes]) -> typing.Any: diff --git a/server/src/uds/core/util/calendar/__init__.py b/server/src/uds/core/util/calendar/__init__.py index da1e6a70e..9b4808cd6 100644 --- a/server/src/uds/core/util/calendar/__init__.py +++ b/server/src/uds/core/util/calendar/__init__.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import hashlib @@ -40,8 +40,7 @@ import bitarray from django.core.cache import caches -from uds.models.util import NEVER -from uds.models.util import getSqlDatetime +from uds.core.util.model import getSqlDatetime from uds.models.calendar import Calendar @@ -55,7 +54,7 @@ ONE_DAY = 3600 * 24 class CalendarChecker: __slots__ = ('calendar',) - + calendar: Calendar # For performance checking @@ -225,13 +224,12 @@ class CalendarChecker: return next_event def debug(self) -> str: - return "Calendar checker for {}".format(self.calendar) + return f'Calendar checker for {self.calendar}' @staticmethod def _cacheKey(key: str) -> str: # Returns a valid cache key for all caching backends (memcached, redis, or whatever) # Simple, fastest algorihm is to use md5 - h = hashlib.md5() # nosec Thisis just a simpele cache key, no need to use a more secure algorithm - h.update(key.encode('utf-8')) - return h.hexdigest() - + return hashlib.md5( + key.encode('utf-8') + ).hexdigest() # nosec simple fast algorithm for cache keys diff --git a/server/src/uds/core/util/certs.py b/server/src/uds/core/util/certs.py deleted file mode 100644 index 0ee5f1438..000000000 --- a/server/src/uds/core/util/certs.py +++ /dev/null @@ -1,95 +0,0 @@ -import secrets -import random -from datetime import datetime, timedelta -import ipaddress -import typing -import ssl - - -from cryptography import x509 -from cryptography.x509.oid import NameOID -from cryptography.hazmat.primitives import hashes -from cryptography.hazmat.backends import default_backend -from cryptography.hazmat.primitives import serialization -from cryptography.hazmat.primitives.asymmetric import rsa -import certifi - - -def selfSignedCert(ip: str) -> typing.Tuple[str, str, str]: - key = rsa.generate_private_key( - public_exponent=65537, - key_size=4096, - backend=default_backend(), - ) - # Create a random password for private key - password = secrets.token_urlsafe(32) - - name = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, ip)]) - san = x509.SubjectAlternativeName([x509.IPAddress(ipaddress.ip_address(ip))]) - - basic_contraints = x509.BasicConstraints(ca=True, path_length=0) - now = datetime.utcnow() - cert = ( - x509.CertificateBuilder() - .subject_name(name) - .issuer_name(name) # self signed, its Issuer DN must match its Subject DN. - .public_key(key.public_key()) - .serial_number(random.SystemRandom().randint(0, 1 << 64)) - .not_valid_before(now) - .not_valid_after(now + timedelta(days=10 * 365)) - .add_extension(basic_contraints, False) - .add_extension(san, False) - .sign(key, hashes.SHA256(), default_backend()) - ) - - return ( - key.private_bytes( - encoding=serialization.Encoding.PEM, - format=serialization.PrivateFormat.TraditionalOpenSSL, - encryption_algorithm=serialization.BestAvailableEncryption( - password.encode() - ), - ).decode(), - cert.public_bytes(encoding=serialization.Encoding.PEM).decode(), - password, - ) - - -def createSslContext(verify: bool = True) -> ssl.SSLContext: - if verify: - sslContext = ssl.create_default_context(cafile=certifi.where()) - else: - sslContext = ( - ssl._create_unverified_context() - ) # pylint: disable=protected-access - - return sslContext - - -def checkCertificateMatchPrivateKey(*, cert: str, key: str) -> bool: - """ - Checks if a certificate and a private key match. - Borh must be in PEM format. - """ - try: - public_cert = ( - x509.load_pem_x509_certificate(cert.encode(), default_backend()) - .public_key() - .public_bytes( - format=serialization.PublicFormat.PKCS1, - encoding=serialization.Encoding.PEM, - ) - ) - public_key = ( - serialization.load_pem_private_key( - key.encode(), password=None, backend=default_backend() - ) - .public_key() - .public_bytes( - format=serialization.PublicFormat.PKCS1, - encoding=serialization.Encoding.PEM, - ) - ) - return public_cert == public_key - except Exception: - return False diff --git a/server/src/uds/core/util/config.py b/server/src/uds/core/util/config.py index 652e7224d..f00830e97 100644 --- a/server/src/uds/core/util/config.py +++ b/server/src/uds/core/util/config.py @@ -37,7 +37,7 @@ import enum from django.apps import apps from django.utils.translation import gettext_lazy as _, gettext from uds.models.config import Config as DBConfig -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager logger = logging.getLogger(__name__) @@ -126,7 +126,7 @@ class Config: if crypt is False or not default: self._default = default else: - self._default = cryptoManager().encrypt(default) + self._default = CryptoManager().encrypt(default) self._help = kwargs.get('help', '') @@ -148,14 +148,12 @@ class Config: section=self._section.name(), key=self._key ) self._data = readed.value - self._crypt = [self._crypt, True][ - readed.crypt - ] # True has "higher" precedende than False + self._crypt = readed.crypt or self._crypt self._longText = readed.long - if self._type != -1 and self._type != readed.field_type: + if self._type not in (-1, readed.field_type): readed.field_type = self._type readed.save(update_fields=['field_type']) - if self._help != '' and self._help != readed.help: + if self._help not in ('', readed.help): readed.help = self._help readed.save( update_fields=['help'] @@ -165,21 +163,19 @@ class Config: except DBConfig.DoesNotExist: # Not found, so we create it if self._default and self._crypt: - self.set(cryptoManager().decrypt(self._default)) + self.set(CryptoManager().decrypt(self._default)) elif not self._crypt: self.set(self._default) self._data = self._default except Exception as e: logger.info( - 'Error accessing db config {0}.{1}'.format( - self._section.name(), self._key - ) + 'Error accessing db config %s.%s', self._section.name(), self._key ) logger.exception(e) self._data = self._default if self._crypt: - return cryptoManager().decrypt(typing.cast(str, self._data)) + return CryptoManager().decrypt(typing.cast(str, self._data)) return typing.cast(str, self._data) def setParams(self, params: typing.Any) -> None: @@ -242,7 +238,7 @@ class Config: value = str(value) if self._crypt: - value = cryptoManager().encrypt(value) + value = CryptoManager().encrypt(value) logger.debug( 'Saving config %s.%s as %s', self._section.name(), self._key, value @@ -275,7 +271,7 @@ class Config: self._data = value def __str__(self) -> str: - return '{}.{}'.format(self._section.name(), self._key) + return f'{self._section.name()}.{self._key}' @staticmethod def section(sectionName): @@ -316,11 +312,14 @@ class Config: cfg: DBConfig = DBConfig.objects.filter(section=section, key=key)[ 0 # type: ignore # Slicing is not supported by pylance right now ] - if checkType and cfg.field_type in (Config.FieldType.READ, Config.FieldType.HIDDEN): + if checkType and cfg.field_type in ( + Config.FieldType.READ, + Config.FieldType.HIDDEN, + ): return False # Skip non writable elements if cfg.crypt: - value = cryptoManager().encrypt(value) + value = CryptoManager().encrypt(value) cfg.value = value cfg.save() logger.debug('Updated value for %s.%s to %s', section, key, value) @@ -354,6 +353,7 @@ class Config: 'longText': cfg.isLongText(), 'type': cfg.getType(), 'params': cfg.getParams(), + help: cfg.getHelp(), } logger.debug('Configuration: %s', res) return res @@ -507,7 +507,7 @@ class GlobalConfig: # Redirect HTTP to HTTPS REDIRECT_TO_HTTPS: Config.Value = Config.section(GLOBAL_SECTION).value( 'redirectToHttps', - '0', + '1', type=Config.FieldType.BOOLEAN, help=_('Redirect HTTP to HTTPS on connection to UDS'), ) @@ -530,12 +530,21 @@ class GlobalConfig: ), ) # Maximum logs per every log-capable administration element - MAX_LOGS_PER_ELEMENT: Config.Value = Config.section(GLOBAL_SECTION).value( + INDIVIDIAL_LOG_MAX_ELEMENTS: Config.Value = Config.section(GLOBAL_SECTION).value( 'maxLogPerElement', '100', type=Config.FieldType.NUMERIC, help=_('Maximum logs per every log-capable administration element'), ) + # Maximum logs per every log-capable administration element + GENERAL_LOG_MAX_ELEMENTS: Config.Value = Config.section(GLOBAL_SECTION).value( + 'Max entries for general UDS logs', + '32000', + type=Config.FieldType.NUMERIC, + help=_('Maximum logs entries for general UDS logs (0 = unlimited, use with care)'), + ) + + # Time to restrain a user service in case it gives some errors at some point RESTRAINT_TIME: Config.Value = Config.section(GLOBAL_SECTION).value( 'restrainTime', @@ -567,14 +576,18 @@ class GlobalConfig: 'statsAccumFrequency', '14400', type=Config.FieldType.NUMERIC, - help=_('Frequency of stats collection in seconds. Default is 4 hours (14400 seconds)'), + help=_( + 'Frequency of stats collection in seconds. Default is 4 hours (14400 seconds)' + ), ) # Statisctis accumulation chunk size, in days STATS_ACCUM_MAX_CHUNK_TIME = Config.section(GLOBAL_SECTION).value( 'statsAccumMaxChunkTime', '7', type=Config.FieldType.NUMERIC, - help=_('Maximum number of time to accumulate on one run. Default is 7 (1 week)'), + help=_( + 'Maximum number of time to accumulate on one run. Default is 7 (1 week)' + ), ) # If disallow login showing authenticatiors @@ -595,11 +608,6 @@ class GlobalConfig: ), ) - # Maximum security logs duration in days - MAX_AUDIT_LOGS_DURATION: Config.Value = Config.section(SECURITY_SECTION).value( - 'Max Audit Logs duration', '365', type=Config.FieldType.NUMERIC - ) - # Allowed "trusted sources" for request TRUSTED_SOURCES: Config.Value = Config.section(SECURITY_SECTION).value( 'Trusted Hosts', @@ -684,7 +692,7 @@ class GlobalConfig: # Global UDS ID (common for all servers on the same cluster) UDS_ID: Config.Value = Config.section(GLOBAL_SECTION).value( 'UDS ID', - cryptoManager().uuid(), + CryptoManager().uuid(), type=Config.FieldType.READ, help=_('Global UDS ID (common for all servers on the same cluster)'), ) @@ -718,7 +726,10 @@ class GlobalConfig: help=_('Custom CSS styles applied to the user accesible site'), ) SITE_INFO: Config.Value = Config.section(CUSTOM_SECTION).value( - 'Site information', '', type=Config.FieldType.LONGTEXT, help=_('Site information') + 'Site information', + '', + type=Config.FieldType.LONGTEXT, + help=_('Site information'), ) SITE_FILTER_ONTOP: Config.Value = Config.section(CUSTOM_SECTION).value( 'Show Filter on Top', @@ -783,7 +794,9 @@ class GlobalConfig: for v in GlobalConfig.__dict__.values(): if isinstance(v, Config.Value): v.get() - logger.debug('Initialized global config value %s=%s', v.key(), v.get()) + logger.debug( + 'Initialized global config value %s=%s', v.key(), v.get() + ) for c in _getLater: logger.debug('Get later: %s', c) diff --git a/server/src/uds/core/util/connection.py b/server/src/uds/core/util/connection.py index d90050e1b..74e7fedd6 100644 --- a/server/src/uds/core/util/connection.py +++ b/server/src/uds/core/util/connection.py @@ -30,11 +30,7 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import typing -import logging -import socket -logger = logging.getLogger(__name__) - -# import Alias +# Import alias +# pylint: disable=unused-import from .net import testConnection as testServer diff --git a/server/src/uds/core/util/decorators.py b/server/src/uds/core/util/decorators.py index 9abaeec05..5b764a5f0 100644 --- a/server/src/uds/core/util/decorators.py +++ b/server/src/uds/core/util/decorators.py @@ -36,6 +36,7 @@ import inspect import typing import time import threading +import hashlib from uds.core.util.cache import Cache @@ -44,6 +45,7 @@ logger = logging.getLogger(__name__) RT = typing.TypeVar('RT') + # Caching statistics class StatsType: __slots__ = ('hits', 'misses', 'total', 'start_time', 'saving_time') @@ -53,7 +55,7 @@ class StatsType: total: int start_time: float saving_time: int # in nano seconds - + def __init__(self) -> None: self.hits = 0 self.misses = 0 @@ -66,10 +68,9 @@ class StatsType: self.total += 1 self.saving_time += saving_time - def add_miss(self, saving_time: int = 0) -> None: + def add_miss(self) -> None: self.misses += 1 self.total += 1 - self.saving_time += saving_time @property def uptime(self) -> float: @@ -90,8 +91,21 @@ class StatsType: f'saving_time={self.saving_time/1000000:.2f}' ) + stats = StatsType() + +class CacheInfo(typing.NamedTuple): + """ + Cache info + """ + + hits: int + misses: int + total: int + exec_time: int + + def deprecated(func: typing.Callable[..., RT]) -> typing.Callable[..., RT]: """This is a decorator which can be used to mark functions as deprecated. It will result in a warning being emitted @@ -114,7 +128,16 @@ def deprecated(func: typing.Callable[..., RT]) -> typing.Callable[..., RT]: return new_func + def deprecatedClassValue(newVarName: str) -> typing.Callable: + """ + Decorator to make a class value deprecated and warn about it + + Example: + @deprecatedClassValue('other.varname') + def varname(self): # It's like a property + return self._varname # Returns old value + """ class innerDeprecated: fget: typing.Callable new_var_name: str @@ -134,7 +157,9 @@ def deprecatedClassValue(newVarName: str) -> typing.Callable: self.new_var_name, ) except Exception: - logger.info('No stack info on deprecated value use %s', self.fget.__name__) + logger.info( + 'No stack info on deprecated value use %s', self.fget.__name__ + ) return self.fget(cls) @@ -172,8 +197,8 @@ def allowCache( cachingArgs: List of arguments to use for cache key (i.e. [0, 1] will use first and second argument for cache key, 0 will use "self" if a method, and 1 will use first argument) cachingKWArgs: List of keyword arguments to use for cache key (i.e. ['a', 'b'] will use "a" and "b" keyword arguments for cache key) cachingKeyFnc: Function to use for cache key. If provided, this function will be called with the same arguments as the wrapped function, and must return a string to use as cache key - - Note: + + Note: If cachingArgs and cachingKWArgs are not provided, the whole arguments will be used for cache key """ @@ -185,12 +210,13 @@ def allowCache( isinstance(cachingKWArgs, str) and [cachingKWArgs] or list(cachingKWArgs or []) ) + lock = threading.Lock() + + hits = misses = exec_time = 0 + def allowCacheDecorator(fnc: typing.Callable[..., RT]) -> typing.Callable[..., RT]: # If no caching args and no caching kwargs, we will cache the whole call # If no parameters provider, try to infer them from function signature - setattr(fnc, '__cache_hit__', 0) # Cache hit - setattr(fnc, '__cache_miss__', 0) # Cache miss - setattr(fnc, '__exec_time__', 0.0) # Execution time try: if cachingArgList is None and cachingKwargList is None: for pos, (paramName, param) in enumerate( @@ -204,25 +230,34 @@ def allowCache( inspect.Parameter.POSITIONAL_ONLY, ): cachingArgList.append(pos) - elif param.kind in (inspect.Parameter.KEYWORD_ONLY, inspect.Parameter.POSITIONAL_OR_KEYWORD): + elif param.kind in ( + inspect.Parameter.KEYWORD_ONLY, + inspect.Parameter.POSITIONAL_OR_KEYWORD, + ): cachingKwargList.append(paramName) - # *args and **kwargs are not supported + # *args and **kwargs are not supported except Exception: # nosec pass # Not inspectable, no caching - + keyFnc = cachingKeyFnc or (lambda x: fnc.__name__) - + @functools.wraps(fnc) def wrapper(*args, **kwargs) -> RT: - argList: str = '.'.join( - [str(args[i]) for i in cachingArgList if i < len(args)] - + [str(kwargs.get(i, '')) for i in cachingKwargList] + nonlocal hits, misses, exec_time + keyHash = hashlib.sha256(usedforsecurity=False) + for i in cachingArgList: + if i < len(args): + keyHash.update(str(args[i]).encode('utf-8')) + for s in cachingKwargList: + keyHash.update(str(kwargs.get(s, '')).encode('utf-8')) + # Append key data + keyHash.update( + keyFnc(args[0] if len(args) > 0 else fnc.__name__).encode('utf-8') ) - # If invoked from a class, and the class provides "cache" - # we will use it, otherwise, we will use a global cache + # compute cache key + cacheKey = f'{cachePrefix}-{keyHash.hexdigest()}' + cache = getattr(args[0], 'cache', None) or Cache('functionCache') - kkey = keyFnc(args[0]) if len(args) > 0 else '' - cacheKey = '{}-{}.{}'.format(cachePrefix, kkey, argList) # if cacheTimeout is a function, call it timeout = cacheTimeout() if callable(cacheTimeout) else cacheTimeout @@ -231,12 +266,14 @@ def allowCache( if not kwargs.get('force', False) and timeout > 0: data = cache.get(cacheKey) if data: - setattr(fnc, '__cache_hit__', getattr(fnc, '__cache_hit__') + 1) - stats.add_hit(getattr(fnc, '__exec_time__')) + with lock: + hits += 1 + stats.add_hit(exec_time // hits) # Use mean execution time return data - setattr(fnc, '__cache_miss__', getattr(fnc, '__cache_miss__') + 1) - stats.add_miss(getattr(fnc, '__exec_time__')) + with lock: + misses += 1 + stats.add_miss() if 'force' in kwargs: # Remove force key @@ -244,7 +281,10 @@ def allowCache( t = time.thread_time_ns() data = fnc(*args, **kwargs) - setattr(fnc, '__exec_time__', getattr(fnc, '__exec_time__') + time.thread_time_ns() - t) + # Compute duration + with lock: + exec_time += time.thread_time_ns() - t + try: # Maybe returned data is not serializable. In that case, cache will fail but no harm is done with this cache.put(cacheKey, data, timeout) @@ -258,6 +298,21 @@ def allowCache( ) return data + def cache_info() -> CacheInfo: + """Report cache statistics""" + with lock: + return CacheInfo(hits, misses, hits+misses, exec_time) + + def cache_clear() -> None: + """Clear the cache and cache statistics""" + nonlocal hits, misses, exec_time + with lock: + hits = misses = exec_time = 0 + + # Same as lru_cache + wrapper.cache_info = cache_info # type: ignore + wrapper.cache_clear = cache_clear # type: ignore + return wrapper return allowCacheDecorator diff --git a/server/src/uds/core/util/ensure.py b/server/src/uds/core/util/ensure.py index 871a59729..6e228b692 100644 --- a/server/src/uds/core/util/ensure.py +++ b/server/src/uds/core/util/ensure.py @@ -41,7 +41,7 @@ def ensure_list(obj: typing.Union[T, typing.Iterable[T]]) -> typing.List[T]: return [typing.cast(T, obj)] try: - return [_ for _ in typing.cast(typing.List[T], obj)] + return list(typing.cast(typing.List[T], obj)) except Exception: # Not iterable return [typing.cast(T, obj)] diff --git a/server/src/uds/core/util/factory.py b/server/src/uds/core/util/factory.py index e2d48f1bd..10ff0b1c9 100644 --- a/server/src/uds/core/util/factory.py +++ b/server/src/uds/core/util/factory.py @@ -1,19 +1,21 @@ import typing +import logging from uds.core.util import singleton from uds.core import module -import logging logger = logging.getLogger(__name__) T = typing.TypeVar('T', bound=module.Module) V = typing.TypeVar('V') + class Factory(typing.Generic[V], metaclass=singleton.Singleton): ''' Generic factory class. ''' + _objects: typing.MutableMapping[str, typing.Type[V]] def __init__(self) -> None: @@ -46,11 +48,11 @@ class Factory(typing.Generic[V], metaclass=singleton.Singleton): __getitem__ = get - class ModuleFactory(Factory[T]): ''' Module Factory class. ''' + def providers(self) -> typing.Mapping[str, typing.Type[T]]: ''' Returns all providers. diff --git a/server/src/uds/core/util/fuse.py b/server/src/uds/core/util/fuse.py index a7fdcc21b..df60fd2d9 100644 --- a/server/src/uds/core/util/fuse.py +++ b/server/src/uds/core/util/fuse.py @@ -15,12 +15,13 @@ # Modified to add type checking, fix bugs, etc.. by dkmaster@dkmon.com +# pylint: disable=protected-access,too-few-public-methods,unused-argument + import sys import os import ctypes import errno import typing -import warnings import logging from ctypes.util import find_library @@ -44,29 +45,26 @@ if _system == 'Windows': # # We have to fix up c_long and c_ulong so that it matches the # Cygwin (and UNIX) sizes when run on Windows. - import sys - if sys.maxsize > 0xFFFFFFFF: c_win_long = ctypes.c_int64 c_win_ulong = ctypes.c_uint64 if _system == 'Windows' or _system.startswith('CYGWIN'): - class c_timespec(ctypes.Structure): # type: ignore + class c_timespec(ctypes.Structure): # type: ignore # pylint: disable=too-few-public-methods _fields_ = [('tv_sec', c_win_long), ('tv_nsec', c_win_long)] - else: - class c_timespec(ctypes.Structure): # type: ignore + class c_timespec(ctypes.Structure): # type: ignore # pylint: disable=too-few-public-methods _fields_ = [('tv_sec', ctypes.c_long), ('tv_nsec', ctypes.c_long)] -class c_utimbuf(ctypes.Structure): +class c_utimbuf(ctypes.Structure): # type: ignore # pylint: disable=too-few-public-methods _fields_ = [('actime', c_timespec), ('modtime', c_timespec)] -class c_stat(ctypes.Structure): +class c_stat(ctypes.Structure): # type: ignore # pylint: disable=too-few-public-methods pass # Platform dependent @@ -92,7 +90,7 @@ if not _libfuse_path: rootkey, keyname, 0, reg.KEY_READ | reg.KEY_WOW64_32KEY # type: ignore ) val = str(reg.QueryValueEx(key, valname)[0]) # type: ignore - except WindowsError: # type: ignore + except WindowsError: # type: ignore # pylint: disable=undefined-variable pass finally: if key is not None: @@ -103,16 +101,19 @@ if not _libfuse_path: reg.HKEY_LOCAL_MACHINE, r"SOFTWARE\WinFsp", r"InstallDir" # type: ignore ) if _libfuse_path: - _libfuse_path += r"bin\winfsp-%s.dll" % ( - "x64" if sys.maxsize > 0xFFFFFFFF else "x86" + _libfuse_path += ( + r"bin\winfsp-%s.dll" # pylint: disable=consider-using-f-string + % ( # pylint: disable=consider-using-f-string + "x64" if sys.maxsize > 0xFFFFFFFF else "x86" + ) ) else: _libfuse_path = find_library('fuse') if not _libfuse_path: raise EnvironmentError('Unable to find libfuse') -else: - _libfuse = ctypes.CDLL(_libfuse_path) + +_libfuse = ctypes.CDLL(_libfuse_path) if _system == 'Darwin' and hasattr(_libfuse, 'macfuse_version'): _system = 'Darwin-MacFuse' @@ -131,7 +132,6 @@ getxattr_t: typing.Type if _system in ('Darwin', 'Darwin-MacFuse', 'FreeBSD'): ENOTSUP = 45 - c_dev_t = ctypes.c_int32 c_fsblkcnt_t = ctypes.c_ulong c_fsfilcnt_t = ctypes.c_ulong @@ -295,7 +295,7 @@ elif _system == 'Linux': ('st_mtimespec', c_timespec), ('st_ctimespec', c_timespec), ] - elif _machine == 'ppc64' or _machine == 'ppc64le': + elif _machine in ('ppc64', 'ppc64le'): c_stat._fields_ = [ ('st_dev', c_dev_t), ('st_ino', ctypes.c_ulong), @@ -392,7 +392,7 @@ elif _system == 'Windows' or _system.startswith('CYGWIN'): ('st_birthtimespec', c_timespec), ] else: - raise NotImplementedError('%s is not supported.' % _system) + raise NotImplementedError(f'{_system} is not supported.') if _system == 'FreeBSD': @@ -428,7 +428,6 @@ if _system == 'FreeBSD': ('f_frsize', ctypes.c_ulong), ] - elif _system == 'Windows' or _system.startswith('CYGWIN'): class c_statvfs(ctypes.Structure): # type: ignore @@ -446,7 +445,6 @@ elif _system == 'Windows' or _system.startswith('CYGWIN'): ('f_namemax', c_win_ulong), ] - else: class c_statvfs(ctypes.Structure): # type: ignore @@ -481,7 +479,6 @@ if _system == 'Windows' or _system.startswith('CYGWIN'): ('lock_owner', ctypes.c_uint64), ] - else: class fuse_file_info(ctypes.Structure): # type: ignore @@ -713,7 +710,7 @@ class FuseOperations(ctypes.Structure): def time_of_timespec(ts: c_timespec, use_ns=False): - return ts.tv_sec * 10 ** 9 + ts.tv_nsec # type: ignore + return ts.tv_sec * 10**9 + ts.tv_nsec # type: ignore def set_st_attrs(st: c_stat, attrs: typing.Mapping[str, int]) -> None: @@ -723,7 +720,7 @@ def set_st_attrs(st: c_stat, attrs: typing.Mapping[str, int]) -> None: if timespec is None: continue - timespec.tv_sec, timespec.tv_nsec = divmod(int(val), 10 ** 9) + timespec.tv_sec, timespec.tv_nsec = divmod(int(val), 10**9) elif hasattr(st, key): setattr(st, key, val) @@ -749,10 +746,11 @@ def fuse_exit(): class FuseOSError(OSError): - def __init__(self, errno): - super(FuseOSError, self).__init__(errno, os.strerror(errno)) + def __init__(self, errno): # pylint: disable=redefined-outer-name + super().__init__(errno, os.strerror(errno)) +# pylint: disable=too-many-public-methods class FUSE: ''' This class is the lower level interface and should not be subclassed under @@ -776,7 +774,6 @@ class FUSE: encoding: typing.Optional[str] = None, **kwargs, ) -> None: - ''' Setting raw_fi to True will cause FUSE to pass the fuse_file_info class as is to Operations, instead of just the fh field. @@ -839,8 +836,8 @@ class FUSE: del self.operations # Invoke the destructor - if type(self.__critical_exception) is not Exception: - raise self.__critical_exception + if not isinstance(self.__critical_exception, Exception): + raise self.__critical_exception # type: ignore if err: raise RuntimeError(err) @@ -863,37 +860,35 @@ class FUSE: # private_data field of struct fuse_context return func(*args, **kwargs) or 0 - else: - try: - return func(*args, **kwargs) or 0 + try: + return func(*args, **kwargs) or 0 - except OSError as e: - if e.errno > 0: - logger.debug( - "FUSE operation %s raised a %s, returning errno %s.", - func.__name__, - type(e), - e.errno, - ) - return -e.errno - else: - logger.error( - "FUSE operation %s raised an OSError with negative " - "errno %s, returning errno.EINVAL.", - func.__name__, - e.errno, - exc_info=True, - ) - return -errno.EINVAL - - except Exception: - logger.error( - "Uncaught exception from FUSE operation %s, " - "returning errno.EINVAL.", + except OSError as e: + if e.errno > 0: + logger.debug( + "FUSE operation %s raised a %s, returning errno %s.", func.__name__, - exc_info=True, + type(e), + e.errno, ) - return -errno.EINVAL + return -e.errno + logger.error( + "FUSE operation %s raised an OSError with negative " + "errno %s, returning errno.EINVAL.", + func.__name__, + e.errno, + exc_info=True, + ) + return -errno.EINVAL + + except Exception: + logger.error( + "Uncaught exception from FUSE operation %s, " + "returning errno.EINVAL.", + func.__name__, + exc_info=True, + ) + return -errno.EINVAL except BaseException as e: if len(args) > 0 and isinstance(args[0], FUSE): @@ -1003,9 +998,7 @@ class FUSE: logger.debug('Read operation on %s returned %d bytes', path, retsize) if retsize > size: - raise RuntimeError( - "read too much data ({} bytes, expected {})".format(retsize, size) - ) + raise RuntimeError(f'read too much data ({retsize} bytes, expected {size})') ctypes.memmove(buf, ret, retsize) return retsize @@ -1271,8 +1264,8 @@ class Operations: def __call__(self, op: str, *args) -> typing.Any: try: return getattr(self, op)(*args) - except AttributeError: - raise FuseOSError(errno.EFAULT) + except AttributeError as e: + raise FuseOSError(errno.EFAULT) from e def access(self, path: str, amode: int) -> None: return @@ -1297,8 +1290,7 @@ class Operations: raise FuseOSError(errno.EROFS) def destroy(self, path: str) -> None: - 'Called on filesystem destruction. Path is always /' - pass + '''Called on filesystem destruction. Path is always /''' def flush(self, path: typing.Optional[str], fh: typing.Any) -> None: pass @@ -1325,7 +1317,7 @@ class Operations: if path != '/': raise FuseOSError(errno.ENOENT) - return dict(st_mode=(S_IFDIR | 0o755), st_nlink=2) + return {'st_mode': (S_IFDIR | 0o755), 'st_nlink': 2} def getxattr(self, path: str, name: str, position: int = 0) -> str: raise FuseOSError(ENOTSUP) @@ -1336,7 +1328,6 @@ class Operations: Use it instead of __init__ if you start threads on initialization. ''' - pass def ioctl( self, path: str, cmd: bytes, arg: bytes, fip: int, flags: int, data: bytes diff --git a/server/src/uds/core/util/hash.py b/server/src/uds/core/util/hash.py index 64378213c..31a05142d 100644 --- a/server/src/uds/core/util/hash.py +++ b/server/src/uds/core/util/hash.py @@ -32,6 +32,8 @@ """ import typing +hasher: typing.Any + try: # Try to use fast hashlib (if available) import xxhash @@ -48,6 +50,6 @@ def hash_key(key: typing.Union[str, bytes]) -> str: Returns a hash of the given key """ if isinstance(key, str): - return hasher(key.encode('utf-8')).hexdigest() + key = key.encode('utf-8') return hasher(key).hexdigest() diff --git a/server/src/uds/core/util/html.py b/server/src/uds/core/util/html.py index 379e295b8..0bbe7f91b 100644 --- a/server/src/uds/core/util/html.py +++ b/server/src/uds/core/util/html.py @@ -43,24 +43,23 @@ logger = logging.getLogger(__name__) def udsLink(request: 'HttpRequest', ticket: str, scrambler: str) -> str: - if request.is_secure(): proto = 'udss' else: proto = 'uds' - return "{}://{}{}/{}".format( - proto, request.build_absolute_uri('/').split('//')[1], ticket, scrambler - ) + return f'{proto}://{request.build_absolute_uri("/")}{ticket}/{scrambler}' def udsAccessLink( - request: 'HttpRequest', serviceId: str, transportId: typing.Optional[str] + request: 'HttpRequest', # pylint: disable=unused-argument + serviceId: str, + transportId: typing.Optional[str], ) -> str: ''' If transportId (uuid) is None, this will be a metaLink ''' - return 'udsa://{}/{}'.format(serviceId, transportId or 'meta') + return f'udsa://{serviceId}/{transportId or "meta"}' def parseDate(dateToParse) -> datetime.date: @@ -97,4 +96,3 @@ def extractKey(dictionary: typing.Dict, key: typing.Any, **kwargs) -> str: else: value = default return value - diff --git a/server/src/uds/core/util/ldaputil.py b/server/src/uds/core/util/ldaputil.py index 106a57001..2071834d6 100644 --- a/server/src/uds/core/util/ldaputil.py +++ b/server/src/uds/core/util/ldaputil.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# pylint: disable=no-member # # Copyright (c) 2016-2021 Virtual Cable S.L.U. @@ -36,6 +36,13 @@ import tempfile import os.path import ldap.filter +from ldap import ( + SCOPE_BASE, # type: ignore + SCOPE_SUBTREE, # type: ignore + SCOPE_ONELEVEL, # type: ignore + # SCOPE_SUBORDINATE, # type: ignore +) + from django.utils.translation import gettext as _ from uds.core.util import tools @@ -44,23 +51,16 @@ logger = logging.getLogger(__name__) LDAPResultType = typing.MutableMapping[str, typing.Any] -from ldap import ( - SCOPE_BASE, # type: ignore - SCOPE_SUBTREE, # type: ignore - SCOPE_ONELEVEL, # type: ignore - SCOPE_SUBORDINATE, # type: ignore -) - class LDAPError(Exception): @staticmethod def reraise(e: typing.Any): _str = _('Connection error: ') if hasattr(e, 'message') and isinstance(e.message, dict): - _str += '{}, {}'.format(e.message.get('info', ''), e.message.get('desc')) + _str += f'{e.message.get("info", "")}, {e.message.get("desc", "")}' else: - _str += '{}'.format(e) - raise LDAPError(_str) + _str += str(e) + raise LDAPError(_str) from e def escape(value: str): @@ -100,7 +100,7 @@ def connection( schema = 'ldaps' if ssl else 'ldap' if port == -1: port = 636 if ssl else 389 - uri = "{}://{}:{}".format(schema, host, port) + uri = f'{schema}://{host}:{port}' logger.debug('Ldap uri: %s', uri) l = ldap.initialize(uri=uri) # type: ignore @@ -116,22 +116,26 @@ def connection( # Create a semi-temporary ca file, with the content of the certificate # The name is from the host, so we can ovwerwrite it if needed cert_filename = os.path.join(tempfile.gettempdir(), f'ldap-cert-{host}.pem') - with open(cert_filename, 'w') as f: + with open(cert_filename, 'w', encoding='utf8') as f: f.write(certificate) - l.set_option(ldap.OPT_X_TLS_CACERTFILE, cert_filename) # type: ignore + l.set_option(ldap.OPT_X_TLS_CACERTFILE, cert_filename) # type: ignore if not verify_ssl: l.set_option(ldap.OPT_X_TLS_REQUIRE_CERT, ldap.OPT_X_TLS_NEVER) # type: ignore + # Disable TLS1 and TLS1.1 + # 0x304 = TLS1.3, 0x303 = TLS1.2, 0x302 = TLS1.1, 0x301 = TLS1.0, but use ldap module constants + l.set_option(ldap.OPT_X_TLS_PROTOCOL_MIN, ldap.OPT_X_TLS_PROTOCOL_TLS1_2) # type: ignore + l.set_option(ldap.OPT_X_TLS_NEWCTX, 0) # type: ignore l.simple_bind_s(who=username, cred=password) except ldap.SERVER_DOWN as e: # type: ignore - raise LDAPError(_('Can\'t contact LDAP server') + ': {}'.format(e)) + raise LDAPError(_('Can\'t contact LDAP server') + f': {e}') from e except ldap.LDAPError as e: # type: ignore LDAPError.reraise(e) except Exception as e: logger.exception('Exception connection:') - raise LDAPError('{}'.format(e)) + raise LDAPError(str(e)) from e logger.debug('Connection was successful') return l @@ -141,8 +145,8 @@ def getAsDict( con: typing.Any, base: str, ldapFilter: str, - attrList: typing.Optional[typing.Iterable[str]]=None, - sizeLimit: int=100, + attrList: typing.Optional[typing.Iterable[str]] = None, + sizeLimit: int = 100, scope=SCOPE_SUBTREE, ) -> typing.Generator[LDAPResultType, None, None]: """ @@ -152,7 +156,7 @@ def getAsDict( logger.debug('Filter: %s, attr list: %s', ldapFilter, attrList) if attrList: - attrList = [i for i in attrList] # Ensures iterable is a list + attrList = list(attrList) # Ensures iterable is a list res = None try: @@ -168,7 +172,7 @@ def getAsDict( LDAPError.reraise(e) except Exception as e: logger.exception('Exception connection:') - raise LDAPError('{}'.format(e)) + raise LDAPError(str(e)) from e logger.debug('Result of search %s on %s: %s', ldapFilter, base, res) @@ -210,9 +214,9 @@ def getFirst( """ value = ldap.filter.escape_filter_chars(value) - attrList = [field] + [i for i in attributes] if attributes else [] + attrList = [field] + list(attributes) if attributes else [] - ldapFilter = '(&(objectClass={})({}={}))'.format(objectClass, field, value) + ldapFilter = f'(&(objectClass={objectClass})({field}={value}))' try: obj = next(getAsDict(con, base, ldapFilter, attrList, sizeLimit)) @@ -242,9 +246,11 @@ def getRootDSE(con: typing.Any) -> typing.Optional[LDAPResultType]: @param cont: Connection to LDAP server @return: None if root DSE is not found, an dictionary of LDAP entry attributes if found (all in unicode on py2, str on py3). """ - return next(getAsDict( - con=con, - base='', - ldapFilter='(objectClass=*)', - scope=SCOPE_BASE, - )) + return next( + getAsDict( + con=con, + base='', + ldapFilter='(objectClass=*)', + scope=SCOPE_BASE, + ) + ) diff --git a/server/src/uds/core/util/log.py b/server/src/uds/core/util/log.py index 5734b3a70..e350a970a 100644 --- a/server/src/uds/core/util/log.py +++ b/server/src/uds/core/util/log.py @@ -30,75 +30,87 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ +import os import logging +import logging.handlers import typing +import enum +import re -from uds.core.managers import logManager +from django.apps import apps + +from systemd import journal # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from django.db.models import Model -logger = logging.getLogger(__name__) useLogger = logging.getLogger('useLog') -# Logging levels -OTHER, DEBUG, INFO, WARNING, ERROR, CRITICAL = ( - 10000 * (x + 1) for x in range(6) -) # @UndefinedVariable - -WARN = WARNING -FATAL = CRITICAL - -# Logging sources -INTERNAL, ACTOR, TRANSPORT, OSMANAGER, UNKNOWN, WEB, ADMIN, SERVICE, REST = ( - 'internal', - 'actor', - 'transport', - 'osmanager', - 'unknown', - 'web', - 'admin', - 'service', - 'rest', -) - -OTHERSTR, DEBUGSTR, INFOSTR, WARNSTR, ERRORSTR, FATALSTR = ( - 'OTHER', - 'DEBUG', - 'INFO', - 'WARN', - 'ERROR', - 'FATAL', -) - -# Names for defined log levels -__nameLevels = { - DEBUGSTR: DEBUG, - INFOSTR: INFO, - WARNSTR: WARN, - ERRORSTR: ERROR, - FATALSTR: FATAL, - OTHERSTR: OTHER, -} - -# Reverse dict of names -__valueLevels = {v: k for k, v in __nameLevels.items()} - -# Global log owner types: -OWNER_TYPE_GLOBAL = -1 -OWNER_TYPE_AUDIT = -2 +# Pattern for look for date and time in this format: 2023-04-20 04:03:08,776 (and trailing spaces) +# This is the format used by python logging module +DATETIME_PATTERN: typing.Final[re.Pattern] = re.compile(r'(\d{4}-\d{2}-\d{2} \d{2}:\d{2}:\d{2},\d{3}) *') +# Pattern for removing the LOGLEVEL from the log line beginning +LOGLEVEL_PATTERN: typing.Final[re.Pattern] = re.compile(r'^(DEBUG|INFO|WARNING|ERROR|CRITICAL) *') -def logLevelFromStr(level: str) -> int: - """ - Gets the numeric log level from an string. - """ - return __nameLevels.get(level.upper(), OTHER) +class LogLevel(enum.IntEnum): + OTHER = 10000 + DEBUG = 20000 + INFO = 30000 + WARNING = 40000 + ERROR = 50000 + CRITICAL = 60000 + + def __str__(self) -> str: + return self.name + + def __repr__(self) -> str: + return self.name + + @classmethod + def fromStr(cls: typing.Type['LogLevel'], level: str) -> 'LogLevel': + try: + return cls[level.upper()] + except KeyError: + return cls.OTHER + + @classmethod + def fromInt(cls: typing.Type['LogLevel'], level: int) -> 'LogLevel': + try: + return cls(level) + except ValueError: + return cls.OTHER + + @classmethod + def fromActorLevel(cls: typing.Type['LogLevel'], level: int) -> 'LogLevel': + """ + Returns the log level for actor log level + """ + return [cls.DEBUG, cls.INFO, cls.ERROR, cls.CRITICAL][level % 4] + + # Return all Log levels as tuples of (level value, level name) + @staticmethod + def all() -> typing.List[typing.Tuple[int, str]]: + return [(level.value, level.name) for level in LogLevel] + + # Rteturns "interesting" log levels + @staticmethod + def interesting() -> typing.List[typing.Tuple[int, str]]: + return [(level.value, level.name) for level in LogLevel if level.value > LogLevel.INFO.value] -def logStrFromLevel(level: int) -> str: - return __valueLevels.get(level, 'OTHER') +class LogSource(enum.StrEnum): + INTERNAL = 'internal' + ACTOR = 'actor' + TRANSPORT = 'transport' + OSMANAGER = 'osmanager' + UNKNOWN = 'unknown' + WEB = 'web' + ADMIN = 'admin' + SERVICE = 'service' + REST = 'rest' + LOGS = 'logs' def useLog( @@ -140,34 +152,98 @@ def useLog( ) ) + # Will be stored on database by UDSLogHandler + def doLog( - wichObject: 'Model', - level: int, + wichObject: typing.Optional['Model'], + level: LogLevel, message: str, - source: str = UNKNOWN, + source: LogSource = LogSource.UNKNOWN, avoidDuplicates: bool = True, + logName: typing.Optional[str] = None, ) -> None: - logger.debug('%s %s %s', wichObject, level, message) - logManager().doLog(wichObject, level, message, source, avoidDuplicates) + # pylint: disable=import-outside-toplevel + from uds.core.managers.log import LogManager + + LogManager().doLog(wichObject, level, message, source, avoidDuplicates, logName) -def getLogs( - wichObject: 'Model', limit: typing.Optional[int] = None -) -> typing.List[typing.Dict]: +def getLogs(wichObject: typing.Optional['Model'], limit: int = -1) -> typing.List[typing.Dict]: """ Get the logs associated with "wichObject", limiting to "limit" (default is GlobalConfig.MAX_LOGS_PER_ELEMENT) """ - from uds.core.util.config import GlobalConfig + # pylint: disable=import-outside-toplevel + from uds.core.managers.log import LogManager - if limit is None: - limit = GlobalConfig.MAX_LOGS_PER_ELEMENT.getInt() - - return logManager().getLogs(wichObject, limit) + return LogManager().getLogs(wichObject, limit) -def clearLogs(wichObject: 'Model') -> None: +def clearLogs(wichObject: typing.Optional['Model']) -> None: """ Clears the logs associated with the object using the logManager """ - return logManager().clearLogs(wichObject) + # pylint: disable=import-outside-toplevel + from uds.core.managers.log import LogManager + + return LogManager().clearLogs(wichObject) + + +class UDSLogHandler(logging.handlers.RotatingFileHandler): + """ + Custom log handler that will log to database before calling to RotatingFileHandler + """ + + # Protects from recursive calls + emiting: typing.ClassVar[bool] = False + + def emit(self, record: logging.LogRecord) -> None: + # To avoid circular imports and loading manager before apps are ready + # pylint: disable=import-outside-toplevel + from uds.core.managers.notifications import NotificationsManager + + def getMsg(*, removeLevel: bool) -> str: + msg = self.format(record) + # Remove date and time from message, as it will be stored on database + msg = DATETIME_PATTERN.sub('', msg) + if removeLevel: + # Remove log level from message, as it will be stored on database + msg = LOGLEVEL_PATTERN.sub('', msg) + return msg + + def notify(msg: str, identificator: str, logLevel: LogLevel) -> None: + NotificationsManager().notify('log', identificator, logLevel, msg) + + if apps.ready and record.levelno >= logging.INFO and not UDSLogHandler.emiting: + try: + # Convert to own loglevel, basically multiplying by 1000 + logLevel = LogLevel.fromInt(record.levelno * 1000) + UDSLogHandler.emiting = True + identificator = os.path.basename(self.baseFilename) + msg = getMsg(removeLevel=True) + if record.levelno >= logging.WARNING: + # Remove traceback from message, as it will be stored on database + notify(msg.splitlines()[0], identificator, logLevel) + doLog(None, logLevel, msg, LogSource.LOGS, False, identificator) + except Exception: # nosec: If cannot log, just ignore it + pass + finally: + UDSLogHandler.emiting = False + + # Send warning and error messages to systemd journal + if record.levelno >= logging.WARNING: + msg = getMsg(removeLevel=False) + # Send to systemd journaling, transforming identificator and priority + identificator = 'UDS-' + os.path.basename(self.baseFilename).split('.')[0] + # convert syslog level to systemd priority + # Systemd priority levels are: + # "emerg" (0), "alert" (1), "crit" (2), "err" (3), + # "warning" (4), "notice" (5), "info" (6), "debug" (7) + # Log levels are: + # "CRITICAL" (50), "ERROR" (40), "WARNING" (30), "INFO" (20), "DEBUG" (10), "NOTSET" (0) + # Note, priority will be always 4 (WARNING), 3(ERROR), or 2(CRITICAL) + priority = 4 if record.levelno == logging.WARNING else 3 if record.levelno == logging.ERROR else 2 + + journal.send(MESSAGE=msg, PRIORITY=priority, SYSLOG_IDENTIFIER=identificator) + + return super().emit(record) diff --git a/server/src/uds/core/util/model.py b/server/src/uds/core/util/model.py index f738a58c0..9131a7611 100644 --- a/server/src/uds/core/util/model.py +++ b/server/src/uds/core/util/model.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2014-2021 Virtual Cable S.L.U. +# Copyright (c) 2012-2020 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -12,7 +12,7 @@ # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors +# * Neither the name of Virtual Cable S.L. nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # @@ -26,16 +26,114 @@ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +""" +Author: Adolfo Gómez, dkmaster at dkmon dot com +""" import typing +import logging +from threading import Lock +import datetime +from time import mktime -from uds.core.managers import cryptoManager +from django.db import connection, models +from uds.models import consts +from uds.core.managers.crypto import CryptoManager + +logger = logging.getLogger(__name__) + +CACHE_TIME_TIMEOUT = 60 # Every 60 second, refresh the time from database (to avoid drifts) + + +# pylint: disable=too-few-public-methods +class TimeTrack: + """ + Reduces the queries to database to get the current time + keeping it cached for CACHE_TIME_TIMEOUT seconds (and adjusting it based on local time) + """ + lock: typing.ClassVar[Lock] = Lock() + last_check: typing.ClassVar[datetime.datetime] = consts.NEVER + cached_time: typing.ClassVar[datetime.datetime] = consts.NEVER + hits: typing.ClassVar[int] = 0 + misses: typing.ClassVar[int] = 0 + + @staticmethod + def _fetchSqlDatetime() -> datetime.datetime: + """Returns the current date/time of the database server. + + We use this time as method to keep all operations betwen different servers in sync. + + We support get database datetime for: + * mysql + * sqlite + + Returns: + datetime: Current datetime of the database server + """ + if connection.vendor in ('mysql', 'microsoft'): + cursor = connection.cursor() + sentence = ( + 'SELECT CURRENT_TIMESTAMP(4)' if connection.vendor == 'mysql' else 'SELECT CURRENT_TIMESTAMP' + ) + cursor.execute(sentence) + date = (cursor.fetchone() or [datetime.datetime.now()])[0] + else: + date = ( + datetime.datetime.now() + ) # If not know how to get database datetime, returns local datetime (this is fine for sqlite, which is local) + + return date + + @staticmethod + def getSqlDatetime() -> datetime.datetime: + now = datetime.datetime.now() + with TimeTrack.lock: + diff = now - TimeTrack.last_check + # If in last_check is in the future, or more than CACHE_TIME_TIMEOUT seconds ago, we need to refresh + # Future is possible if we have a clock update, or a big drift + if diff > datetime.timedelta(seconds=CACHE_TIME_TIMEOUT) or diff < datetime.timedelta(seconds=0): + TimeTrack.last_check = now + TimeTrack.misses += 1 + TimeTrack.cached_time = TimeTrack._fetchSqlDatetime() + else: + TimeTrack.hits += 1 + return TimeTrack.cached_time + (now - TimeTrack.last_check) + + +# pylint: disable=too-few-public-methods +class UnsavedForeignKey(models.ForeignKey): + """ + From 1.8 of django, we need to point to "saved" objects. + If dont, will raise an InvalidValue exception. + + We need to trick in some cases, because for example, root user is not in DB + """ + + # Allows pointing to an unsaved object + # allow_unsaved_instance_assignment = True + + +def getSqlDatetime() -> datetime.datetime: + """Returns the current date/time of the database server. + Has been updated to use TimeTrack, which reduces the queries to database to get the current time + """ + return TimeTrack.getSqlDatetime() + + +def getSqlDatetimeAsUnix() -> int: + """Returns the current date/time of the database server as unix timestamp + + Returns: + int: Unix timestamp + """ + return int(mktime(getSqlDatetime().timetuple())) def generateUuid(obj: typing.Any = None) -> str: """ Generates a ramdom uuid for models default """ - return cryptoManager().uuid(obj=obj).lower() + return CryptoManager().uuid(obj=obj).lower() def processUuid(uuid: str) -> str: diff --git a/server/src/uds/core/util/models.py b/server/src/uds/core/util/models.py new file mode 100644 index 000000000..932da65bc --- /dev/null +++ b/server/src/uds/core/util/models.py @@ -0,0 +1,44 @@ +# -*- coding: utf-8 -*- + +# +# Copyright (c) 2014-2021 Virtual Cable S.L.U. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +import typing + +from uds.core.managers.crypto import CryptoManager + + +def generateUuid(obj: typing.Any = None) -> str: + """ + Generates a ramdom uuid for models default + """ + return CryptoManager().uuid(obj=obj).lower() + + +def processUuid(uuid: str) -> str: + if isinstance(uuid, bytes): + uuid = uuid.decode('utf8') # type: ignore + return uuid.lower() diff --git a/server/src/uds/core/util/modfinder.py b/server/src/uds/core/util/modfinder.py index 49c389dc5..673d3b502 100644 --- a/server/src/uds/core/util/modfinder.py +++ b/server/src/uds/core/util/modfinder.py @@ -65,7 +65,7 @@ def loadModulesUrls() -> typing.List[typing.Any]: modName = 'uds.dispatchers' pkgpath = os.path.dirname(typing.cast(str, sys.modules[modName].__file__)) for _, name, _ in pkgutil.iter_modules([pkgpath]): - fullModName = '{}.{}.urls'.format(modName, name) + fullModName = f'{modName}.{name}.urls' try: mod = importlib.import_module(fullModName) urlpatterns: typing.List[typing.Any] = getattr(mod, 'urlpatterns') @@ -98,7 +98,7 @@ def importModules(modName: str, *, packageName: typing.Optional[str] = None) -> pkgpath = os.path.dirname(typing.cast(str, sys.modules[modName].__file__)) if packageName: # Append package name to path and module name pkgpath = os.path.join(pkgpath, packageName) - modName = '{}.{}'.format(modName, packageName) + modName = f'{modName}.{packageName}' logger.info('* Importing modules from %s', pkgpath) for _, name, _ in pkgutil.iter_modules([pkgpath]): diff --git a/server/src/uds/core/util/net.py b/server/src/uds/core/util/net.py index 201032b0a..0a3b628ba 100644 --- a/server/src/uds/core/util/net.py +++ b/server/src/uds/core/util/net.py @@ -35,12 +35,13 @@ import socket import logging import typing import ipaddress -import enum + class IpType(typing.NamedTuple): ip: int version: typing.Literal[4, 6, 0] # 0 is only used for invalid detected ip + class NetworkType(typing.NamedTuple): start: int end: int @@ -73,10 +74,11 @@ def ipToLong(ip: str) -> IpType: try: if ':' in ip and '.' not in ip: return IpType(int(ipaddress.IPv6Address(ip)), 6) - else: # ipv4 - if ':' in ip and '.' in ip: - ip = ip.split(':')[-1] # Last part of ipv6 address - return IpType(int(ipaddress.IPv4Address(ip)), 4) + if ':' in ip and '.' in ip: + ip = ip.split(':')[ + -1 + ] # Last part of ipv6 address is ipv4 address (has dots and colons, so we can't use ipaddress) + return IpType(int(ipaddress.IPv4Address(ip)), 4) except Exception as e: logger.error('Ivalid value: %s (%s)', ip, e) return IpType(0, 0) # Invalid values will map to "0.0.0.0" --> 0 @@ -88,11 +90,10 @@ def longToIp(n: int, version: typing.Literal[0, 4, 6] = 0) -> str: """ if n > 2**32 or version == 6: return str(ipaddress.IPv6Address(n).compressed) - else: - return str(ipaddress.IPv4Address(n)) + return str(ipaddress.IPv4Address(n)) -def networkFromStringIPv4(strNets: str, version: typing.Literal[0, 4, 6] = 0) -> NetworkType: +def networkFromStringIPv4(strNets: str) -> NetworkType: ''' Parses the network from strings in this forms: - A.* (or A.*.* or A.*.*.*) @@ -185,17 +186,17 @@ def networkFromStringIPv4(strNets: str, version: typing.Literal[0, 4, 6] = 0) -> raise Exception() except Exception as e: logger.error('Invalid network found: %s %s', strNets, e) - raise ValueError(inputString) + raise ValueError(inputString) from e -def networkFromStringIPv6(strNets: str, version: typing.Literal[0, 4, 6] = 0) -> NetworkType: +def networkFromStringIPv6(strNets: str) -> NetworkType: ''' returns a named tuple with networks start and network end ''' logger.debug('Getting network from %s', strNets) # if '*' or '::*', return the whole IPv6 range - if strNets == '*' or strNets == '::*': + if strNets in ('*', '::*'): return NetworkType(0, 2**128 - 1, 6) try: @@ -204,7 +205,7 @@ def networkFromStringIPv6(strNets: str, version: typing.Literal[0, 4, 6] = 0) -> return NetworkType(int(net.network_address), int(net.broadcast_address), 6) except Exception as e: logger.error('Invalid network found: %s %s', strNets, e) - raise ValueError(strNets) + raise ValueError(strNets) from e def networkFromString( @@ -212,12 +213,12 @@ def networkFromString( version: typing.Literal[0, 4, 6] = 0, ) -> NetworkType: if not ':' in strNets and version != 6: - return networkFromStringIPv4(strNets, version) - else: # ':' in strNets or version == 6: - # If is in fact an IPv4 address, return None network, this will not be used - if '.' in strNets: - return NetworkType(0, 0, 0) - return networkFromStringIPv6(strNets, version) + return networkFromStringIPv4(strNets) + # ':' in strNets or version == 6: + # If is in fact an IPv4 address, return None network, this will not be used + if '.' in strNets: + return NetworkType(0, 0, 0) + return networkFromStringIPv6(strNets) def networksFromString( @@ -260,7 +261,7 @@ def isValidIp(value: str, version: typing.Literal[0, 4, 6] = 0) -> bool: # Using ipaddress module try: addr = ipaddress.ip_address(value) - return version == 0 or addr.version == version + return version in (0, addr.version) # Must be the same version or 0 except ValueError: return False diff --git a/server/src/uds/core/util/objtype.py b/server/src/uds/core/util/objtype.py index 3f8ea7c70..63f0785ab 100644 --- a/server/src/uds/core/util/objtype.py +++ b/server/src/uds/core/util/objtype.py @@ -42,6 +42,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) + class ObjectType(enum.Enum): PROVIDER = (1, models.Provider) SERVICE = (2, models.Service) @@ -67,7 +68,6 @@ class ObjectType(enum.Enum): LOG = (22, models.Log) NOTIFICATION = (23, models.Notification) TICKET_STORE = (24, models.TicketStore) - @property def model(self) -> typing.Type['Model']: @@ -75,8 +75,7 @@ class ObjectType(enum.Enum): @property def type(self) -> int: - """Returns the integer value of this object type - """ + """Returns the integer value of this object type""" return self.value[0] @staticmethod @@ -84,7 +83,7 @@ class ObjectType(enum.Enum): for objType in ObjectType: if objType.model == type(model): return objType - raise ValueError('Invalid model type: {}'.format(model)) + raise ValueError(f'Invalid model type: {model}') def __eq__(self, __o: object) -> bool: """Compares with another ObjType, and includes int comparison diff --git a/server/src/uds/core/util/permissions.py b/server/src/uds/core/util/permissions.py index 2c67506e8..92edcf791 100644 --- a/server/src/uds/core/util/permissions.py +++ b/server/src/uds/core/util/permissions.py @@ -33,12 +33,13 @@ import logging import typing +# from django.utils.translation import gettext as _ + from uds import models from uds.models.permissions import PermissionType from uds.core.util import objtype -from django.utils.translation import gettext as _ # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: diff --git a/server/src/uds/core/util/request.py b/server/src/uds/core/util/request.py index 474cf9bca..9b12379e3 100644 --- a/server/src/uds/core/util/request.py +++ b/server/src/uds/core/util/request.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -46,16 +46,6 @@ class ExtendedHttpRequest(HttpRequest): os: 'DetectedOsInfo' user: typing.Optional[User] authorized: bool - - - def __init__(self) -> None: - super().__init__() - class ExtendedHttpRequestWithUser(ExtendedHttpRequest): user: User - - def __init__(self) -> None: - super().__init__() - - diff --git a/server/src/uds/core/util/rest/tools.py b/server/src/uds/core/util/rest/tools.py index 0742fbc21..e956f83ab 100644 --- a/server/src/uds/core/util/rest/tools.py +++ b/server/src/uds/core/util/rest/tools.py @@ -37,6 +37,7 @@ logger = logging.getLogger(__name__) T = typing.TypeVar('T', bound=typing.Any) + # We want to write something like this: # (('', '', 'literal', '', '', 'literal2', ...), callback) # Where callback is a function that will be called with the arguments in the order they are @@ -71,19 +72,26 @@ def match( continue # Check if all the arguments match - match = True + doMatch = True for i, arg in enumerate(arg_list): if matcher[0][i].startswith('<') and matcher[0][i].endswith('>'): continue if arg != matcher[0][i]: - match = False + doMatch = False break - if match: + if doMatch: # All the arguments match, call the callback - return matcher[1](*[arg for i, arg in enumerate(arg_list) if matcher[0][i].startswith('<') and matcher[0][i].endswith('>')]) + return matcher[1]( + *[ + arg + for i, arg in enumerate(arg_list) + if matcher[0][i].startswith('<') and matcher[0][i].endswith('>') + ] + ) logger.warning('No match found for %s with %s', arg_list, args) # Invoke error callback error() + return None # In fact, error is expected to raise an exception, so this is never reached diff --git a/server/src/uds/core/util/security.py b/server/src/uds/core/util/security.py new file mode 100644 index 000000000..6a9887fe9 --- /dev/null +++ b/server/src/uds/core/util/security.py @@ -0,0 +1,193 @@ +import secrets +import random +from datetime import datetime, timedelta +import ipaddress +import typing +import logging +import ssl + +from django.conf import settings + +from cryptography import x509 +from cryptography.x509.oid import NameOID +from cryptography.hazmat.primitives import hashes +from cryptography.hazmat.backends import default_backend +from cryptography.hazmat.primitives import serialization +from cryptography.hazmat.primitives.asymmetric import rsa +import certifi +import requests +import requests.adapters + +logger = logging.getLogger(__name__) + +KEY_SIZE = 4096 +SECRET_SIZE = 32 + + +try: + # Ensure that we do not get warnings about self signed certificates and so + import requests.packages.urllib3 # type: ignore + + requests.packages.urllib3.disable_warnings() # type: ignore # pylint: disable=no-member +except Exception: # nosec: simple check for disabling warnings, + # Igonre if we cannot disable warnings + pass + + +def selfSignedCert(ip: str) -> typing.Tuple[str, str, str]: + """ + Generates a self signed certificate for the given ip. + This method is mainly intended to be used for generating/saving Actor certificates. + UDS will check that actor server certificate is the one generated by this method. + """ + key = rsa.generate_private_key( + public_exponent=65537, + key_size=KEY_SIZE, + backend=default_backend(), + ) + # Create a random password for private key + password = secrets.token_hex(SECRET_SIZE) + + name = x509.Name([x509.NameAttribute(NameOID.COMMON_NAME, ip)]) + san = x509.SubjectAlternativeName([x509.IPAddress(ipaddress.ip_address(ip))]) + + basic_contraints = x509.BasicConstraints(ca=True, path_length=0) + now = datetime.utcnow() + cert = ( + x509.CertificateBuilder() + .subject_name(name) + .issuer_name(name) # self signed, its Issuer DN must match its Subject DN. + .public_key(key.public_key()) + .serial_number(random.SystemRandom().randint(0, 1 << 64)) + .not_valid_before(now) + .not_valid_after(now + timedelta(days=10 * 365)) + .add_extension(basic_contraints, False) + .add_extension(san, False) + .sign(key, hashes.SHA256(), default_backend()) + ) + + return ( + key.private_bytes( + encoding=serialization.Encoding.PEM, + format=serialization.PrivateFormat.TraditionalOpenSSL, + encryption_algorithm=serialization.BestAvailableEncryption( + password.encode() + ), + ).decode(), + cert.public_bytes(encoding=serialization.Encoding.PEM).decode(), + password, + ) + + +def createClientSslContext(verify: bool = True) -> ssl.SSLContext: + """ + Creates a SSLContext for client connections. + + Args: + verify: If True, the server certificate will be verified. (Default: True) + + Returns: + A SSLContext object. + """ + sslContext = ssl.create_default_context( + purpose=ssl.Purpose.SERVER_AUTH, cafile=certifi.where() + ) + if not verify: + sslContext.check_hostname = False + sslContext.verify_mode = ssl.VerifyMode.CERT_NONE + + # Disable TLS1.0 and TLS1.1, SSLv2 and SSLv3 are disabled by default + # Next line is deprecated in Python 3.7 + # sslContext.options |= ssl.OP_NO_TLSv1 | ssl.OP_NO_TLSv1_1 | ssl.OP_NO_SSLv2 | ssl.OP_NO_SSLv3 + if hasattr(settings, 'SECURE_MIN_TLS_VERSION') and settings.SECURE_MIN_TLS_VERSION: + # format is "1.0, 1.1, 1.2 or 1.3", convert to ssl.TLSVersion.TLSv1_0, ssl.TLSVersion.TLSv1_1, ssl.TLSVersion.TLSv1_2 or ssl.TLSVersion.TLSv1_3 + sslContext.minimum_version = getattr( + ssl.TLSVersion, 'TLSv' + settings.SECURE_MIN_TLS_VERSION.replace('.', '_') + ) + else: + sslContext.minimum_version = ssl.TLSVersion.TLSv1_2 + + sslContext.maximum_version = ssl.TLSVersion.MAXIMUM_SUPPORTED + if hasattr(settings, 'SECURE_CIPHERS') and settings.SECURE_CIPHERS: + sslContext.set_ciphers(settings.SECURE_CIPHERS) + + return sslContext + + +def checkCertificateMatchPrivateKey(*, cert: str, key: str) -> bool: + """ + Checks if a certificate and a private key match. + All parameters must be keyword arguments. + Borh must be in PEM format. + """ + try: + public_cert = ( + x509.load_pem_x509_certificate(cert.encode(), default_backend()) + .public_key() + .public_bytes( + format=serialization.PublicFormat.PKCS1, + encoding=serialization.Encoding.PEM, + ) + ) + public_key = ( + serialization.load_pem_private_key( + key.encode(), password=None, backend=default_backend() + ) + .public_key() + .public_bytes( + format=serialization.PublicFormat.PKCS1, + encoding=serialization.Encoding.PEM, + ) + ) + return public_cert == public_key + except Exception: + # Not intended to show kind of error, just to return False if the certificate does not match the key + # Even if the key or certificate is not valid, we only want a True if they match, False otherwise + return False + + +def secureRequestsSession( + *, verify: typing.Union[str, bool] = True +) -> 'requests.Session': + ''' + Generates a requests.Session object with a custom adapter that uses a custom SSLContext. + This is intended to be used for requests that need to be secure, but not necessarily verified. + Removes the support for TLS1.0 and TLS1.1, and disables SSLv2 and SSLv3. (done in @createClientSslContext) + + Args: + verify: If True, the server certificate will be verified. (Default: True) + + Returns: + A requests.Session object. + ''' + + # Copy verify value + lverify = verify + + class UDSHTTPAdapter(requests.adapters.HTTPAdapter): + def init_poolmanager(self, *args, **kwargs) -> None: + kwargs["ssl_context"] = createClientSslContext(verify=verify is True) + + # See urllib3.poolmanager.SSL_KEYWORDS for all available keys. + return super().init_poolmanager(*args, **kwargs) + + def cert_verify(self, conn, url, verify, cert) -> None: + """Verify a SSL certificate. This method should not be called from user + code, and is only exposed for use when subclassing the HTTPAdapter class + """ + + # If lverify is an string, use it even if verify is False + # if not, use verify value + if not isinstance(verify, str): + verify = lverify + + # logger.info('Connection info: %s', conn) + # for k, v in conn.__dict__.items(): + # logger.info('Connection info: %s = %s', k, v) + + super().cert_verify(conn, url, verify, cert) + + session = requests.Session() + session.mount("https://", UDSHTTPAdapter()) + + return session diff --git a/server/src/uds/core/util/serializer.py b/server/src/uds/core/util/serializer.py index c58cf4ff4..d18ff5c89 100644 --- a/server/src/uds/core/util/serializer.py +++ b/server/src/uds/core/util/serializer.py @@ -48,7 +48,6 @@ def serialize(obj: typing.Any) -> bytes: """ # generate pickle dump and encrypt it to keep it safe # Compress data using lzma first - data = CryptoManager().fastCrypt( lzma.compress(pickle.dumps(obj)) @@ -63,8 +62,12 @@ def deserialize(data: typing.Optional[bytes]) -> typing.Any: if not data: return None - if data[0:2] in DESERIALIZERS: - return pickle.loads(lzma.decompress(DESERIALIZERS[data[0:2]](data[2:]))) # nosec: Secured by encryption - else: - # Old version, try to unpickle it + if data[0:2] in DESERIALIZERS: + return pickle.loads( + lzma.decompress(DESERIALIZERS[data[0:2]](data[2:])) + ) # nosec: Secured by encryption + # Old version, try to unpickle it + try: return pickle.loads(data) # nosec: Backward compatibility + except Exception: + return None diff --git a/server/src/uds/core/util/session_serializer.py b/server/src/uds/core/util/session_serializer.py index a99ff4d17..38546e75f 100644 --- a/server/src/uds/core/util/session_serializer.py +++ b/server/src/uds/core/util/session_serializer.py @@ -34,7 +34,6 @@ import typing import json -from django.contrib.sessions.serializers import JSONSerializer class SessionSerializer: """ Serializer for django sessions. @@ -43,7 +42,8 @@ class SessionSerializer: """ Serialize data for storage in a session. """ - return json.dumps(data).encode() + return json.dumps(data, separators=(',', ':')).encode() + def loads(self, data: bytes) -> typing.Dict[str, typing.Any]: """ diff --git a/server/src/uds/core/util/singleton.py b/server/src/uds/core/util/singleton.py index 024437623..e9e50ee8f 100644 --- a/server/src/uds/core/util/singleton.py +++ b/server/src/uds/core/util/singleton.py @@ -1,21 +1,23 @@ import typing + class Singleton(type): ''' Metaclass for singleton pattern Usage: - + class MyClass(metaclass=Singleton): ... ''' + _instance: typing.Optional[typing.Any] - # We use __init__ so we customise the created class from this metaclass - def __init__(self, *args, **kwargs) -> None: - self._instance = None + # We use __init__ so we customise the created class from this metaclass + def __init__(cls, *args, **kwargs) -> None: + cls._instance = None super().__init__(*args, **kwargs) - def __call__(self, *args, **kwargs) -> typing.Any: - if self._instance is None: - self._instance = super().__call__(*args, **kwargs) - return self._instance + def __call__(cls, *args, **kwargs) -> typing.Any: + if cls._instance is None: + cls._instance = super().__call__(*args, **kwargs) + return cls._instance diff --git a/server/src/uds/core/util/state_queue.py b/server/src/uds/core/util/state_queue.py index 0387c625b..cbce25e86 100644 --- a/server/src/uds/core/util/state_queue.py +++ b/server/src/uds/core/util/state_queue.py @@ -42,11 +42,7 @@ class StateQueue: self._current = None def __str__(self): - res = '' % ( - self._current, - ','.join(state for state in self._queue), - ) - return res + return f'' def clearQueue(self) -> None: self._queue.clear() @@ -84,5 +80,5 @@ class StateQueue: def remove(self, state: typing.Any): try: self._queue.remove(state) - except Exception: + except Exception: # nosec: Fine to ignore exception here pass # If state not in queue, nothing happens diff --git a/server/src/uds/core/util/states/group.py b/server/src/uds/core/util/states/group.py index f1b740988..aedf59e90 100644 --- a/server/src/uds/core/util/states/group.py +++ b/server/src/uds/core/util/states/group.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2015-2019 Virtual Cable S.L. +# Copyright (c) 2015-2019 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -12,7 +12,7 @@ # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # @@ -31,7 +31,7 @@ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -from .common import ( +from .common import ( # pylint: disable=unused-import ACTIVE, INACTIVE, ) diff --git a/server/src/uds/core/util/states/process.py b/server/src/uds/core/util/states/process.py index e87e63944..c07cb84f3 100644 --- a/server/src/uds/core/util/states/process.py +++ b/server/src/uds/core/util/states/process.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2015-2019 Virtual Cable S.L. +# Copyright (c) 2015-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -12,7 +12,7 @@ # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -@author: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ # pylint: disable=unused-import -from .common import ERROR, FINISHED, RUNNING # @UnusedImport +from .common import ERROR, FINISHED, RUNNING diff --git a/server/src/uds/core/util/states/publication.py b/server/src/uds/core/util/states/publication.py index fb18dd814..38de5ddf5 100644 --- a/server/src/uds/core/util/states/publication.py +++ b/server/src/uds/core/util/states/publication.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2015-2019 Virtual Cable S.L. +# Copyright (c) 2015-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -12,7 +12,7 @@ # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # @@ -40,4 +40,4 @@ from .common import ( CANCELED, LAUNCHING, PREPARING, -) # @UnusedImport +) diff --git a/server/src/uds/core/util/states/service_pool.py b/server/src/uds/core/util/states/service_pool.py index 8388155e2..08f9d63c5 100644 --- a/server/src/uds/core/util/states/service_pool.py +++ b/server/src/uds/core/util/states/service_pool.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2015-2019 Virtual Cable S.L. +# Copyright (c) 2015-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -12,7 +12,7 @@ # * Redistributions in binary form must reproduce the above copyright notice, # this list of conditions and the following disclaimer in the documentation # and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# * Neither the name of Virtual Cable S.L.U. nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # @@ -32,4 +32,4 @@ """ # pylint: disable=unused-import -from .common import ACTIVE, REMOVABLE, REMOVING, REMOVED # @UnusedImport +from .common import ACTIVE, REMOVABLE, REMOVING, REMOVED diff --git a/server/src/uds/core/util/states/task.py b/server/src/uds/core/util/states/task.py index aad060a2d..7ebae8c39 100644 --- a/server/src/uds/core/util/states/task.py +++ b/server/src/uds/core/util/states/task.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2015-2021 Virtual Cable S.L.U. +# Copyright (c) 2015-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -32,4 +32,4 @@ """ # pylint: disable=unused-import -from .common import FOR_EXECUTE # @UnusedImport +from .common import FOR_EXECUTE diff --git a/server/src/uds/core/util/states/user_service.py b/server/src/uds/core/util/states/user_service.py index 345829186..d72282098 100644 --- a/server/src/uds/core/util/states/user_service.py +++ b/server/src/uds/core/util/states/user_service.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2015-2021 Virtual Cable S.L.U. +# Copyright (c) 2015-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -41,4 +41,4 @@ from .common import ( REMOVED, INFO_STATES, VALID_STATES, -) # @UnusedImport +) diff --git a/server/src/uds/core/util/stats/counters.py b/server/src/uds/core/util/stats/counters.py index 0c96b680f..60a80af8a 100644 --- a/server/src/uds/core/util/stats/counters.py +++ b/server/src/uds/core/util/stats/counters.py @@ -37,13 +37,13 @@ from django.db.models import Model from uds.core.managers.stats import StatsManager, AccumStat from uds.models import ( - NEVER, Provider, Service, ServicePool, Authenticator, StatsCountersAccum, ) +from uds.models.consts import NEVER logger = logging.getLogger(__name__) @@ -67,6 +67,7 @@ CounterClass = typing.TypeVar( OT_PROVIDER, OT_SERVICE, OT_SERVICEPOOL, OT_AUTHENTICATOR = range(4) + # Helpers def _get_Id(obj): return obj.id if obj.id != -1 else None @@ -244,7 +245,7 @@ def getAcumCounters( since=since, points=points, ) - + # Data initialization def _initializeData() -> None: diff --git a/server/src/uds/core/util/stats/events.py b/server/src/uds/core/util/stats/events.py index 775ada32c..2b6ad8d3c 100644 --- a/server/src/uds/core/util/stats/events.py +++ b/server/src/uds/core/util/stats/events.py @@ -63,7 +63,7 @@ if typing.TYPE_CHECKING: # Os Manager ET_OSMANAGER_INIT, ET_OSMANAGER_READY, - ET_OSMANAGER_RELEASE + ET_OSMANAGER_RELEASE, ) = range(11) # Events names @@ -81,20 +81,14 @@ EVENT_NAMES: typing.Mapping[int, str] = { ET_OSMANAGER_RELEASE: 'OS Manager release', } -( - OT_PROVIDER, - OT_SERVICE, - OT_SERVICEPOOL, - OT_AUTHENTICATOR, - OT_OSMANAGER -) = range(5) +(OT_PROVIDER, OT_SERVICE, OT_SERVICEPOOL, OT_AUTHENTICATOR, OT_OSMANAGER) = range(5) TYPES_NAMES: typing.Mapping[int, str] = { OT_PROVIDER: 'Provider', OT_SERVICE: 'Service', OT_SERVICEPOOL: 'Deployed', OT_AUTHENTICATOR: 'Authenticator', - OT_OSMANAGER: 'OS Manager' + OT_OSMANAGER: 'OS Manager', } MODEL_TO_EVENT: typing.Mapping[typing.Type['models.Model'], int] = { @@ -102,7 +96,7 @@ MODEL_TO_EVENT: typing.Mapping[typing.Type['models.Model'], int] = { Service: OT_SERVICE, Provider: OT_PROVIDER, Authenticator: OT_AUTHENTICATOR, - OSManager: OT_OSMANAGER + OSManager: OT_OSMANAGER, } # Events data (fld1, fld2, fld3, fld4): @@ -154,21 +148,22 @@ MODEL_TO_EVENT: typing.Mapping[typing.Type['models.Model'], int] = { # OT_OSMANAGER_RELEASE: -> On OsManager # (servicepool_uuid, '', userservice_uuid) + # Helpers # get owner by type and id def getOwner(ownerType: int, ownerId: int) -> typing.Optional['models.Model']: if ownerType == OT_PROVIDER: return Provider.objects.get(pk=ownerId) - elif ownerType == OT_SERVICE: + if ownerType == OT_SERVICE: return Service.objects.get(pk=ownerId) - elif ownerType == OT_SERVICEPOOL: + if ownerType == OT_SERVICEPOOL: return ServicePool.objects.get(pk=ownerId) - elif ownerType == OT_AUTHENTICATOR: + if ownerType == OT_AUTHENTICATOR: return Authenticator.objects.get(pk=ownerId) - elif ownerType == OT_OSMANAGER: + if ownerType == OT_OSMANAGER: return OSManager.objects.get(pk=ownerId) - else: - return None + return None + class EventTupleType(typing.NamedTuple): stamp: datetime.datetime @@ -188,13 +183,14 @@ class EventTupleType(typing.NamedTuple): def __str__(self) -> str: # Convert Event type to string first eventName = EVENT_NAMES[self.event_type] - return '{} {} {} {} {} {}'.format(self.stamp, eventName, self.fld1, self.fld2, self.fld3, self.fld4 ) + return ( + f'{self.stamp} {eventName} {self.fld1} {self.fld2} {self.fld3} {self.fld4}' + ) EventClass = typing.Union[Provider, Service, ServicePool, Authenticator] - def addEvent(obj: EventClass, eventType: int, **kwargs) -> bool: """ Adds a event stat to specified object @@ -237,7 +233,11 @@ def getEvents( owner_id = obj.pk for i in StatsManager.manager().getEvents( - MODEL_TO_EVENT[objType], eventType, owner_id=owner_id, since=kwargs.get('since'), to=kwargs.get('to') + MODEL_TO_EVENT[objType], + eventType, + owner_id=owner_id, + since=kwargs.get('since'), + to=kwargs.get('to'), ): yield EventTupleType( datetime.datetime.fromtimestamp(i.stamp), @@ -247,8 +247,9 @@ def getEvents( i.fld4, i.event_type, ) - - # tail the events table + + +# tail the events table def tailEvents(sleepTime: int = 2) -> typing.Generator[EventTupleType, None, None]: fromId = None while True: @@ -263,4 +264,3 @@ def tailEvents(sleepTime: int = 2) -> typing.Generator[EventTupleType, None, Non ) fromId = i.pk if i.pk > (fromId or 0) else fromId time.sleep(sleepTime) - diff --git a/server/src/uds/core/util/storage.py b/server/src/uds/core/util/storage.py index 6d46a4f7c..a9f87803c 100644 --- a/server/src/uds/core/util/storage.py +++ b/server/src/uds/core/util/storage.py @@ -29,7 +29,7 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import pickle # nosec: This is e controled pickle use +import pickle # nosec: This is e controled pickle use import base64 import hashlib import codecs @@ -66,7 +66,9 @@ def _decodeValue( ) -> typing.Tuple[str, typing.Any]: if value: try: - v = pickle.loads(base64.b64decode(value.encode())) # nosec: This is e controled pickle loading + v = pickle.loads( + base64.b64decode(value.encode()) + ) # nosec: This is e controled pickle loading if isinstance(v, tuple) and v[0] == MARK: return typing.cast(typing.Tuple[str, typing.Any], v[1:]) # Fix value so it contains also the "key" (in this case, the original key is lost, we have only the hash value...) @@ -75,7 +77,7 @@ def _decodeValue( try: return ('#' + dbk, base64.b64decode(value.encode()).decode()) except Exception as e: - logger.warn('Unknown decodeable value: %s (%s)', value, e) + logger.warning('Unknown decodeable value: %s (%s)', value, e) return ('', None) @@ -108,9 +110,8 @@ class StorageAsDict(MutableMapping): @property def _db(self) -> typing.Union[models.QuerySet, models.Manager]: if self._atomic: - return DBStorage.objects.select_for_update() # type: ignore - else: - return DBStorage.objects # type: ignore + return DBStorage.objects.select_for_update() + return DBStorage.objects @property def _filtered(self) -> 'models.QuerySet[DBStorage]': @@ -127,7 +128,7 @@ class StorageAsDict(MutableMapping): def __getitem__(self, key: str) -> typing.Any: if not isinstance(key, str): - raise TypeError('Key must be str, {} found'.format(type(key))) + raise TypeError(f'Key must be str, {type(key)} found') dbk = self._key(key) logger.debug('Getitem: %s', dbk) @@ -139,12 +140,13 @@ class StorageAsDict(MutableMapping): def __setitem__(self, key: str, value: typing.Any) -> None: if not isinstance(key, str): - raise TypeError('Key must be str type, {} found'.format(type(key))) + raise TypeError(f'Key must be str type, {type(key)} found') dbk = self._key(key) logger.debug('Setitem: %s = %s', dbk, value) data = _encodeValue(key, value, self._compat) - c, created = DBStorage.objects.update_or_create( + # ignores return value, we don't care if it was created or updated + DBStorage.objects.update_or_create( key=dbk, defaults={'data': data, 'attr1': self._group, 'owner': self._owner} ) @@ -179,7 +181,7 @@ class StorageAsDict(MutableMapping): return self[key] or default def delete(self, key: str) -> None: - self.__delitem__(key) + self.__delitem__(key) # pylint: disable=unnecessary-dunder-call # Custom utility methods @property @@ -312,7 +314,9 @@ class Storage: def getPickle(self, skey: typing.Union[str, bytes]) -> typing.Any: v = self.readData(skey, True) if v: - return pickle.loads(typing.cast(bytes, v)) # nosec: This is e controled pickle loading + return pickle.loads( + typing.cast(bytes, v) + ) # nosec: This is e controled pickle loading return None def getPickleByAttr1(self, attr1: str, forUpdate: bool = False): @@ -335,7 +339,9 @@ class Storage: try: # Process several keys at once DBStorage.objects.filter(key__in=[self.getKey(k) for k in keys]).delete() - except Exception: # nosec: Not interested in processing exceptions, just ignores it + except ( + Exception + ): # nosec: Not interested in processing exceptions, just ignores it pass def lock(self): diff --git a/server/src/uds/core/util/tools.py b/server/src/uds/core/util/tools.py index 18581b097..a79be6c7f 100644 --- a/server/src/uds/core/util/tools.py +++ b/server/src/uds/core/util/tools.py @@ -32,17 +32,15 @@ Author: Adolfo Gómez, dkmaster at dkmon dot com """ import sys import os -import re import datetime import unicodedata import typing +import contextlib from django.utils import formats from django.utils.translation import gettext import django.template.defaultfilters as filters -from uds.core import exceptions - class CaseInsensitiveDict(dict): @classmethod @@ -50,46 +48,46 @@ class CaseInsensitiveDict(dict): return key.lower() if isinstance(key, str) else key def __init__(self, *args, **kwargs): - super(CaseInsensitiveDict, self).__init__(*args, **kwargs) + super().__init__(*args, **kwargs) self._convert_keys() def __getitem__(self, key): - return super(CaseInsensitiveDict, self).__getitem__(self.__class__._k(key)) + return super().__getitem__(self.__class__._k(key)) def __setitem__(self, key, value): - super(CaseInsensitiveDict, self).__setitem__(self.__class__._k(key), value) + super().__setitem__(self.__class__._k(key), value) def __delitem__(self, key): - return super(CaseInsensitiveDict, self).__delitem__(self.__class__._k(key)) + return super().__delitem__(self.__class__._k(key)) def __contains__(self, key): - return super(CaseInsensitiveDict, self).__contains__(self.__class__._k(key)) + return super().__contains__(self.__class__._k(key)) def pop(self, key, *args, **kwargs): - return super(CaseInsensitiveDict, self).pop( - self.__class__._k(key), *args, **kwargs + return super().pop( + self.__class__._k(key), *args, **kwargs # pylint: disable=protected-access ) def get(self, key, *args, **kwargs): - return super(CaseInsensitiveDict, self).get( - self.__class__._k(key), *args, **kwargs + return super().get( + self.__class__._k(key), *args, **kwargs # pylint: disable=protected-access ) def setdefault(self, key, *args, **kwargs): - return super(CaseInsensitiveDict, self).setdefault( - self.__class__._k(key), *args, **kwargs + return super().setdefault( + self.__class__._k(key), *args, **kwargs # pylint: disable=protected-access ) def update(self, E=None, **F): if E is None: E = {} - super(CaseInsensitiveDict, self).update(self.__class__(E)) - super(CaseInsensitiveDict, self).update(self.__class__(**F)) + super().update(self.__class__(E)) + super().update(self.__class__(**F)) def _convert_keys(self): for k in list(self.keys()): - v = super(CaseInsensitiveDict, self).pop(k) - self.__setitem__(k, v) + v = super().pop(k) + self.__setitem__(k, v) # pylint: disable=unnecessary-dunder-call def as_list(value: typing.Any) -> typing.List[typing.Any]: @@ -104,7 +102,7 @@ def as_list(value: typing.Any) -> typing.List[typing.Any]: if isinstance(value, (bytes, str, int, float)): return [value] try: - return [v for v in value] + return list(value) except Exception: return [value] @@ -152,3 +150,15 @@ def removeControlCharacters(s: str) -> str: str -- string without control characters """ return ''.join(ch for ch in s if unicodedata.category(ch)[0] != "C") + + +@contextlib.contextmanager +def ignoreExceptions(): + """ + Ignores exceptions of type exceptions + """ + try: + yield + except Exception: # nosec: want to catch all exceptions + pass + \ No newline at end of file diff --git a/server/src/uds/core/util/unique.py b/server/src/uds/core/util/unique.py index bd420cfb4..21a18c29d 100644 --- a/server/src/uds/core/util/unique.py +++ b/server/src/uds/core/util/unique.py @@ -29,6 +29,8 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ + +# pylint: disable=unused-import from .unique_gid_generator import UniqueGIDGenerator from .unique_mac_generator import UniqueMacGenerator from .unique_name_generator import UniqueNameGenerator diff --git a/server/src/uds/core/util/unique_gid_generator.py b/server/src/uds/core/util/unique_gid_generator.py index 1f12a3576..b5c835f41 100644 --- a/server/src/uds/core/util/unique_gid_generator.py +++ b/server/src/uds/core/util/unique_gid_generator.py @@ -46,7 +46,7 @@ class UniqueGIDGenerator(UniqueIDGenerator): def __toName(self, seq: int) -> str: if seq == -1: raise KeyError('No more GIDS available.') - return '{:s}{:08d}'.format(self._baseName, seq) + return f'{self._baseName}{seq:08d}' # return "%s%0*d" % (self._baseName, 8, seq) def get(self, rangeStart: int = 0, rangeEnd: int = MAX_SEQ) -> str: # type: ignore diff --git a/server/src/uds/core/util/unique_id_generator.py b/server/src/uds/core/util/unique_id_generator.py index 3a1704222..77a0ef3e4 100644 --- a/server/src/uds/core/util/unique_id_generator.py +++ b/server/src/uds/core/util/unique_id_generator.py @@ -38,7 +38,7 @@ from django.db import transaction, OperationalError, connection from django.db.utils import IntegrityError from uds.models.unique_id import UniqueId -from uds.models.util import getSqlDatetimeAsUnix +from uds.core.util.model import getSqlDatetimeAsUnix if typing.TYPE_CHECKING: from django.db import models @@ -148,9 +148,9 @@ class UniqueIDGenerator: def transfer(self, seq: int, toUidGen: 'UniqueIDGenerator') -> bool: self.__filter(0, forUpdate=True).filter(owner=self._owner, seq=seq).update( - owner=toUidGen._owner, - basename=toUidGen._baseName, - stamp=getSqlDatetimeAsUnix(), # pylint: disable=protected-access + owner=toUidGen._owner, # pylint: disable=protected-access + basename=toUidGen._baseName, # pylint: disable=protected-access + stamp=getSqlDatetimeAsUnix(), ) return True diff --git a/server/src/uds/core/util/unique_mac_generator.py b/server/src/uds/core/util/unique_mac_generator.py index ea2511665..9759ee9bb 100644 --- a/server/src/uds/core/util/unique_mac_generator.py +++ b/server/src/uds/core/util/unique_mac_generator.py @@ -50,17 +50,17 @@ class UniqueMacGenerator(UniqueIDGenerator): def __toMac(self, seq: int) -> str: if seq == -1: # No mor macs available return '00:00:00:00:00:00' - return re.sub(r"(..)", r"\1:", "%0*X" % (12, seq))[:-1] + return re.sub(r"(..)", r"\1:", f'{seq:012X}')[:-1] # noinspection PyMethodOverriding - def get(self, macRange: str) -> str: # type: ignore + def get(self, macRange: str) -> str: # type: ignore # pylint: disable=arguments-differ firstMac, lastMac = macRange.split('-') return self.__toMac(super().get(self.__toInt(firstMac), self.__toInt(lastMac))) - def transfer(self, mac: str, toUMgen: 'UniqueMacGenerator'): # type: ignore + def transfer(self, mac: str, toUMgen: 'UniqueMacGenerator'): # type: ignore # pylint: disable=arguments-renamed super().transfer(self.__toInt(mac), toUMgen) - def free(self, mac: str) -> None: + def free(self, mac: str) -> None: # type: ignore # pylint: disable=arguments-renamed super().free(self.__toInt(mac)) # Release is inherited, no mod needed diff --git a/server/src/uds/core/util/unique_name_generator.py b/server/src/uds/core/util/unique_name_generator.py index 389274c87..60b7c8be8 100644 --- a/server/src/uds/core/util/unique_name_generator.py +++ b/server/src/uds/core/util/unique_name_generator.py @@ -47,15 +47,15 @@ class UniqueNameGenerator(UniqueIDGenerator): def __toName(self, seq: int, length: int) -> str: if seq == -1: raise KeyError('No more names available. Please, increase service digits.') - return "%s%0*d" % (self._baseName, length, seq) + return f'{self._baseName}{seq:0{length}d}' - def get(self, baseName: str, length: int = 5) -> str: # type: ignore # pylint: disable=arguments-differ + def get(self, baseName: str, length: int = 5) -> str: # type: ignore # pylint: disable=arguments-differ,arguments-renamed self.setBaseName(baseName) minVal = 0 - maxVal = 10 ** length - 1 + maxVal = 10**length - 1 return self.__toName(super().get(minVal, maxVal), length) - def transfer(self, baseName: str, name: str, toUNGen: 'UniqueNameGenerator') -> None: # type: ignore + def transfer(self, baseName: str, name: str, toUNGen: 'UniqueNameGenerator') -> None: # type: ignore # pylint: disable=arguments-differ self.setBaseName(baseName) super().transfer(int(name[len(self._baseName) :]), toUNGen) diff --git a/server/src/uds/core/util/validators.py b/server/src/uds/core/util/validators.py index 8bec368cc..fd29ec98d 100644 --- a/server/src/uds/core/util/validators.py +++ b/server/src/uds/core/util/validators.py @@ -65,16 +65,14 @@ def validateNumeric( numeric = int(value) if minValue is not None and numeric < minValue: raise exceptions.ValidationError( - _( - '{0} must be greater than or equal to {1}'.format( - fieldName, minValue - ) + _('{0} must be greater than or equal to {1}').format( + fieldName, minValue ) ) if maxValue is not None and numeric > maxValue: raise exceptions.ValidationError( - _('{0} must be lower than or equal to {1}'.format(fieldName, maxValue)) + _('{0} must be lower than or equal to {1}').format(fieldName, maxValue) ) value = str(numeric) @@ -82,7 +80,7 @@ def validateNumeric( except ValueError: raise exceptions.ValidationError( _('{0} contains invalid characters').format(fieldName) - ) + ) from None return int(value) @@ -139,7 +137,7 @@ def validateIpv4(ipv4: str) -> str: except Exception: raise exceptions.ValidationError( _('{} is not a valid IPv4 address').format(ipv4) - ) + ) from None return ipv4 @@ -155,7 +153,7 @@ def validateIpv6(ipv6: str) -> str: except Exception: raise exceptions.ValidationError( _('{} is not a valid IPv6 address').format(ipv6) - ) + ) from None return ipv6 @@ -171,7 +169,7 @@ def validateIpv4OrIpv6(ipv4OrIpv6: str) -> str: except Exception: raise exceptions.ValidationError( _('{} is not a valid IPv4 or IPv6 address').format(ipv4OrIpv6) - ) + ) from None return ipv4OrIpv6 @@ -216,9 +214,7 @@ def validatePath( ) else: if not valid_for_windows.match(path) and not valid_for_unix.match(path): - raise exceptions.ValidationError( - _('{} is not a valid path').format(path) - ) + raise exceptions.ValidationError(_('{} is not a valid path').format(path)) return path @@ -246,7 +242,7 @@ def validateHostPortPair(hostPortPair: str) -> typing.Tuple[str, int]: except Exception: raise exceptions.ValidationError( _('{} is not a valid host:port pair').format(hostPortPair) - ) + ) from None def validateTimeout(timeOutStr: str) -> int: @@ -273,9 +269,7 @@ def validateMac(mac: str) -> str: ) # In fact, it could be XX-XX-XX-XX-XX-XX, but we use - as range separator if macRE.match(mac) is None: - raise exceptions.ValidationError( - _('{} is not a valid MAC address').format(mac) - ) + raise exceptions.ValidationError(_('{} is not a valid MAC address').format(mac)) return mac @@ -293,7 +287,7 @@ def validateMacRange(macRange: str) -> str: except Exception: raise exceptions.ValidationError( _('{} is not a valid MAC range').format(macRange) - ) + ) from None return macRange @@ -343,8 +337,6 @@ def validateBasename(baseName: str, length: int = -1) -> str: ) if baseName.isdigit(): - raise exceptions.ValidationError( - _('The machine name can\'t be only numbers') - ) + raise exceptions.ValidationError(_('The machine name can\'t be only numbers')) return baseName diff --git a/server/src/uds/core/util/xml2dict.py b/server/src/uds/core/util/xml2dict.py index ba301789d..3e32d5a42 100644 --- a/server/src/uds/core/util/xml2dict.py +++ b/server/src/uds/core/util/xml2dict.py @@ -32,35 +32,35 @@ import typing from collections import defaultdict -from xml.etree import cElementTree +import defusedxml.ElementTree as ET if typing.TYPE_CHECKING: - from xml.etree.cElementTree import Element + from xml.etree.ElementTree import Element # nosec: Only type checking -def etree_to_dict(t: 'Element') -> typing.Mapping[str, typing.Any]: - d: typing.MutableMapping[str, typing.Any] = {} - if t.attrib: - d.update({t.tag: {}}) +def etree_to_dict(tree: 'Element') -> typing.Mapping[str, typing.Any]: + dct: typing.MutableMapping[str, typing.Any] = {} + if tree.attrib: + dct.update({tree.tag: {}}) - children = list(t) + children = list(tree) if children: dd = defaultdict(list) for dc in map(etree_to_dict, children): for k, v in dc.items(): dd[k].append(v) - d = {t.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}} - if t.attrib: - d[t.tag].update(('@' + k, v) for k, v in t.attrib.items()) - if t.text: - text = t.text.strip() - if children or t.attrib: + dct = {tree.tag: {k: v[0] if len(v) == 1 else v for k, v in dd.items()}} + if tree.attrib: + dct[tree.tag].update(('@' + k, v) for k, v in tree.attrib.items()) + if tree.text: + text = tree.text.strip() + if children or tree.attrib: if text: - d[t.tag]['#text'] = text + dct[tree.tag]['#text'] = text else: - d[t.tag] = text - return d + dct[tree.tag] = text + return dct def parse(xml_string: str) -> typing.Mapping[str, typing.Any]: - return etree_to_dict(cElementTree.XML(xml_string)) + return etree_to_dict(ET.XML(xml_string)) diff --git a/server/src/uds/core/workers/__init__.py b/server/src/uds/core/workers/__init__.py index 7faafb328..8badf6a88 100644 --- a/server/src/uds/core/workers/__init__.py +++ b/server/src/uds/core/workers/__init__.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import logging @@ -43,8 +43,8 @@ def initialize() -> None: This imports all packages that are descendant of this package, and, after that, it register all subclases of service provider as """ - from uds.core import jobs - from uds.core.managers import taskManager + from uds.core import jobs # pylint: disable=import-outside-toplevel + from uds.core.managers import taskManager # pylint: disable=import-outside-toplevel def registerer(cls: typing.Type[jobs.Job]) -> None: if cls.__module__.startswith('uds.core.workers'): diff --git a/server/src/uds/core/workers/assigned_unused.py b/server/src/uds/core/workers/assigned_unused.py index 9671d09a9..4c3c71e66 100644 --- a/server/src/uds/core/workers/assigned_unused.py +++ b/server/src/uds/core/workers/assigned_unused.py @@ -37,7 +37,8 @@ from django.db.models import Q, Count from uds.core.jobs import Job from uds.core.util.config import GlobalConfig from uds.core.util.state import State -from uds.models import ServicePool, getSqlDatetime +from uds.models import ServicePool +from uds.core.util.model import getSqlDatetime logger = logging.getLogger(__name__) diff --git a/server/src/uds/core/workers/hanged_userservice_cleaner.py b/server/src/uds/core/workers/hanged_userservice_cleaner.py index 928377429..5468ffb3f 100644 --- a/server/src/uds/core/workers/hanged_userservice_cleaner.py +++ b/server/src/uds/core/workers/hanged_userservice_cleaner.py @@ -34,7 +34,8 @@ import logging from django.db.models import Q, Count from uds.core.util.config import GlobalConfig -from uds.models import ServicePool, UserService, getSqlDatetime +from uds.models import ServicePool, UserService +from uds.core.util.model import getSqlDatetime from uds.core.util.state import State from uds.core.jobs import Job from uds.core.util import log @@ -98,30 +99,26 @@ class HangedCleaner(Job): ): # Removing too long, remark it as removable log.doLog( us, - log.ERROR, + log.LogLevel.ERROR, 'User Service hanged on removal process. Restarting removal.', - log.INTERNAL, + log.LogSource.INTERNAL, ) log.doLog( servicePool, - log.ERROR, - 'User service {} hanged on removal. Restarting removal.'.format( - us.friendly_name - ), + log.LogLevel.ERROR, + f'User service {us.friendly_name} hanged on removal. Restarting removal.', ) us.release() # Mark it again as removable, and let's see else: log.doLog( us, - log.ERROR, + log.LogLevel.ERROR, 'User Service seems to be hanged. Removing it.', - log.INTERNAL, + log.LogSource.INTERNAL, ) log.doLog( servicePool, - log.ERROR, - 'Removing user service {} because it seems to be hanged'.format( - us.friendly_name - ), + log.LogLevel.ERROR, + f'Removing user service {us.friendly_name} because it seems to be hanged' ) us.releaseOrCancel() diff --git a/server/src/uds/core/workers/notifications.py b/server/src/uds/core/workers/notifications.py index 7c808aa47..c57560280 100644 --- a/server/src/uds/core/workers/notifications.py +++ b/server/src/uds/core/workers/notifications.py @@ -32,16 +32,14 @@ import logging from uds.core.jobs import Job -from uds.core.util.config import GlobalConfig -from uds.core.util.state import State -from uds.models import ServicePool, getSqlDatetime +# from uds.core.util.config import GlobalConfig logger = logging.getLogger(__name__) class Notifications(Job): frecuency = 60 # Once every minute - frecuency_cfg = GlobalConfig.CHECK_UNUSED_DELAY + # frecuency_cfg = GlobalConfig.XXXX friendly_name = 'Notifications worker' def run(self) -> None: diff --git a/server/src/uds/core/workers/publication_cleaner.py b/server/src/uds/core/workers/publication_cleaner.py index 4cc9c6b66..89078ad4c 100644 --- a/server/src/uds/core/workers/publication_cleaner.py +++ b/server/src/uds/core/workers/publication_cleaner.py @@ -35,7 +35,8 @@ import typing from uds.core.managers import publicationManager from uds.core.util.config import GlobalConfig -from uds.models import ServicePoolPublication, getSqlDatetime +from uds.models import ServicePoolPublication +from uds.core.util.model import getSqlDatetime from uds.core.services.exceptions import PublishException from uds.core.util.state import State from uds.core.jobs import Job diff --git a/server/src/uds/core/workers/scheduled_action_executor.py b/server/src/uds/core/workers/scheduled_action_executor.py index 69ba625a8..ca0884bd0 100644 --- a/server/src/uds/core/workers/scheduled_action_executor.py +++ b/server/src/uds/core/workers/scheduled_action_executor.py @@ -33,7 +33,8 @@ import logging from uds.core.util import states -from uds.models import CalendarAction, getSqlDatetime +from uds.models import CalendarAction +from uds.core.util.model import getSqlDatetime from uds.core.jobs import Job logger = logging.getLogger(__name__) diff --git a/server/src/uds/core/workers/scheduler_housekeeping.py b/server/src/uds/core/workers/scheduler_housekeeping.py index 4d9ca7978..1fa7651ac 100644 --- a/server/src/uds/core/workers/scheduler_housekeeping.py +++ b/server/src/uds/core/workers/scheduler_housekeeping.py @@ -35,7 +35,8 @@ import logging from django.db import transaction -from uds.models import Scheduler, getSqlDatetime +from uds.models import Scheduler +from uds.core.util.model import getSqlDatetime from uds.core.util.state import State from uds.core.jobs import Job @@ -57,14 +58,13 @@ class SchedulerHousekeeping(Job): Look for "hanged" scheduler tasks and reschedule them """ since = getSqlDatetime() - timedelta(minutes=MAX_EXECUTION_MINUTES) - for i in range(3): # Retry three times in case of lockout error + for _ in range(3): # Retry three times in case of lockout error try: with transaction.atomic(): Scheduler.objects.select_for_update(skip_locked=True).filter( last_execution__lt=since, state=State.RUNNING ).update(owner_server='', state=State.FOR_EXECUTE) break - except Exception as e: + except Exception: logger.info('Retrying Scheduler cleanup transaction') time.sleep(1) - diff --git a/server/src/uds/core/workers/service_pool_cleaner.py b/server/src/uds/core/workers/service_pool_cleaner.py index d5fca78ee..83032a11b 100644 --- a/server/src/uds/core/workers/service_pool_cleaner.py +++ b/server/src/uds/core/workers/service_pool_cleaner.py @@ -35,7 +35,8 @@ import typing from django.db import transaction from uds.core.util.config import GlobalConfig -from uds.models import ServicePool, UserService, getSqlDatetime +from uds.models import ServicePool, UserService +from uds.core.util.model import getSqlDatetime from uds.core.util.state import State from uds.core.jobs import Job diff --git a/server/src/uds/core/workers/servicepools_cache_updater.py b/server/src/uds/core/workers/servicepools_cache_updater.py index 3cc825cdd..46b1cd698 100644 --- a/server/src/uds/core/workers/servicepools_cache_updater.py +++ b/server/src/uds/core/workers/servicepools_cache_updater.py @@ -36,7 +36,7 @@ from django.db import transaction from django.db.models import Q from uds.core.util.config import GlobalConfig from uds.core.util.state import State -from uds.core.managers import userServiceManager +from uds.core.managers.user_service import UserServiceManager from uds.core.services.exceptions import MaxServicesReachedError from uds.models import ServicePool, ServicePoolPublication, UserService from uds.core import services @@ -66,7 +66,7 @@ class ServiceCacheUpdater(Job): servicePool, log.WARN, 'Service Pool is restrained due to excesive errors', - log.INTERNAL, + log.LogSource.INTERNAL, ) logger.info('%s is restrained, will check this later', servicePool.name) @@ -91,7 +91,7 @@ class ServiceCacheUpdater(Job): for servicePool in servicePoolsNeedingCaching: servicePool.userServices.update() # Cleans cached queries # If this deployedService don't have a publication active and needs it, ignore it - spServiceInstance = servicePool.service.getInstance() + spServiceInstance = servicePool.service.getInstance() # type: ignore if ( servicePool.activePublication() is None @@ -122,7 +122,7 @@ class ServiceCacheUpdater(Job): inCacheL1: int = ( servicePool.cachedUserServices() .filter( - userServiceManager().getCacheStateFilter( + UserServiceManager().getCacheStateFilter( servicePool, services.UserDeployment.L1_CACHE ) ) @@ -132,7 +132,7 @@ class ServiceCacheUpdater(Job): inCacheL2: int = ( servicePool.cachedUserServices() .filter( - userServiceManager().getCacheStateFilter( + UserServiceManager().getCacheStateFilter( servicePool, services.UserDeployment.L2_CACHE ) ) @@ -140,7 +140,7 @@ class ServiceCacheUpdater(Job): ) inAssigned: int = ( servicePool.assignedUserServices() - .filter(userServiceManager().getStateFilter(servicePool.service)) + .filter(UserServiceManager().getStateFilter(servicePool.service)) # type: ignore .count() ) # if we bypasses max cache, we will reduce it in first place. This is so because this will free resources on service provider @@ -179,7 +179,7 @@ class ServiceCacheUpdater(Job): continue # If this service don't allows more starting user services, continue - if not userServiceManager().canGrowServicePool(servicePool): + if not UserServiceManager().canGrowServicePool(servicePool): logger.debug( 'This pool cannot grow rithg now: %s', servicePool, @@ -209,7 +209,11 @@ class ServiceCacheUpdater(Job): return servicesPools def growL1Cache( - self, servicePool: ServicePool, cacheL1: int, cacheL2: int, assigned: int + self, + servicePool: ServicePool, + cacheL1: int, # pylint: disable=unused-argument + cacheL2: int, + assigned: int, # pylint: disable=unused-argument ) -> None: """ This method tries to enlarge L1 cache. @@ -227,7 +231,7 @@ class ServiceCacheUpdater(Job): servicePool.cachedUserServices() .select_for_update() .filter( - userServiceManager().getCacheStateFilter( + UserServiceManager().getCacheStateFilter( servicePool, services.UserDeployment.L2_CACHE ) ) @@ -248,16 +252,16 @@ class ServiceCacheUpdater(Job): return try: # This has a velid publication, or it will not be here - userServiceManager().createCacheFor( + UserServiceManager().createCacheFor( typing.cast(ServicePoolPublication, servicePool.activePublication()), services.UserDeployment.L1_CACHE, ) except MaxServicesReachedError: log.doLog( servicePool, - log.ERROR, + log.LogLevel.ERROR, 'Max number of services reached for this service', - log.INTERNAL, + log.LogSource.INTERNAL, ) logger.warning( 'Max user services reached for %s: %s. Cache not created', @@ -268,7 +272,11 @@ class ServiceCacheUpdater(Job): logger.exception('Exception') def growL2Cache( - self, servicePool: ServicePool, cacheL1: int, cacheL2: int, assigned: int + self, + servicePool: ServicePool, + cacheL1: int, # pylint: disable=unused-argument + cacheL2: int, # pylint: disable=unused-argument + assigned: int, # pylint: disable=unused-argument ) -> None: """ Tries to grow L2 cache of service. @@ -280,7 +288,7 @@ class ServiceCacheUpdater(Job): logger.debug("Growing L2 cache creating a new service for %s", servicePool.name) try: # This has a velid publication, or it will not be here - userServiceManager().createCacheFor( + UserServiceManager().createCacheFor( typing.cast(ServicePoolPublication, servicePool.activePublication()), services.UserDeployment.L2_CACHE, ) @@ -293,14 +301,18 @@ class ServiceCacheUpdater(Job): # TODO: When alerts are ready, notify this def reduceL1Cache( - self, servicePool: ServicePool, cacheL1: int, cacheL2: int, assigned: int + self, + servicePool: ServicePool, + cacheL1: int, # pylint: disable=unused-argument + cacheL2: int, + assigned: int, # pylint: disable=unused-argument ): logger.debug("Reducing L1 cache erasing a service in cache for %s", servicePool) # We will try to destroy the newest cacheL1 element that is USABLE if the deployer can't cancel a new service creation cacheItems: typing.List[UserService] = list( servicePool.cachedUserServices() .filter( - userServiceManager().getCacheStateFilter( + UserServiceManager().getCacheStateFilter( servicePool, services.UserDeployment.L1_CACHE ) ) @@ -334,7 +346,11 @@ class ServiceCacheUpdater(Job): cache.removeOrCancel() def reduceL2Cache( - self, servicePool: ServicePool, cacheL1: int, cacheL2: int, assigned: int + self, + servicePool: ServicePool, + cacheL1: int, # pylint: disable=unused-argument + cacheL2: int, + assigned: int, # pylint: disable=unused-argument ): logger.debug( "Reducing L2 cache erasing a service in cache for %s", servicePool.name @@ -343,14 +359,14 @@ class ServiceCacheUpdater(Job): cacheItems = ( servicePool.cachedUserServices() .filter( - userServiceManager().getCacheStateFilter( + UserServiceManager().getCacheStateFilter( servicePool, services.UserDeployment.L2_CACHE ) ) .order_by('creation_date') ) # TODO: Look first for non finished cache items and cancel them? - cache: UserService = cacheItems[0] # type: ignore # Slicing is not supported by pylance right now + cache: UserService = cacheItems[0] cache.removeOrCancel() def run(self) -> None: diff --git a/server/src/uds/core/workers/stats_collector.py b/server/src/uds/core/workers/stats_collector.py index c5de4f408..e5413493a 100644 --- a/server/src/uds/core/workers/stats_collector.py +++ b/server/src/uds/core/workers/stats_collector.py @@ -32,9 +32,8 @@ import logging import typing -from django.utils.translation import gettext_lazy as _ - from uds import models +from uds.core.util import model from uds.core.util.state import State from uds.core.util.stats import counters from uds.core.managers.stats import StatsManager @@ -59,7 +58,7 @@ class DeployedServiceStatsCollector(Job): servicePoolsToCheck: typing.Iterable[ models.ServicePool ] = models.ServicePool.objects.filter(state=State.ACTIVE).iterator() - stamp = models.getSqlDatetime() + stamp = model.getSqlDatetime() # Global counters totalAssigned, totalInUse, totalCached = 0, 0, 0 for servicePool in servicePoolsToCheck: @@ -172,7 +171,7 @@ class StatsAccumulator(Job): def run(self): try: StatsManager.manager().acummulate(config.GlobalConfig.STATS_ACCUM_MAX_CHUNK_TIME.getInt()) - except Exception as e: + except Exception: logger.exception('Compressing counters') logger.debug('Done statistics compression') diff --git a/server/src/uds/core/workers/stuck_cleaner.py b/server/src/uds/core/workers/stuck_cleaner.py index ed5168dac..f2bc87f1e 100644 --- a/server/src/uds/core/workers/stuck_cleaner.py +++ b/server/src/uds/core/workers/stuck_cleaner.py @@ -35,7 +35,8 @@ import typing from django.db.models import Q, Count -from uds.models import ServicePool, UserService, getSqlDatetime +from uds.models import ServicePool, UserService +from uds.core.util.model import getSqlDatetime from uds.core.util.state import State from uds.core.jobs import Job from uds.core.util import log @@ -84,7 +85,7 @@ class StuckCleaner(Job): # Info states are removed on UserServiceCleaner and VALID_STATES are ok, or if "hanged", checked on "HangedCleaner" def stuckUserServices(servicePool: ServicePool) -> typing.Iterable[UserService]: q = servicePool.userServices.filter(state_date__lt=since_state) - # Get all that are not in valid or info states, AND the ones that are "PREPARING" with + # Get all that are not in valid or info states, AND the ones that are "PREPARING" with # "destroy_after" property set (exists) (that means that are waiting to be destroyed after initializations) yield from q.exclude(state__in=State.INFO_STATES + State.VALID_STATES) yield from q.filter(state=State.PREPARING, properties__name='destroy_after') @@ -95,10 +96,8 @@ class StuckCleaner(Job): logger.debug('Found stuck user service %s', stuck) log.doLog( servicePool, - log.ERROR, - 'User service {} has been hard removed because it\'s stuck'.format( - stuck.name - ), + log.LogLevel.ERROR, + f'User service {stuck.name} has been hard removed because it\'s stuck', ) # stuck.setState(State.ERROR) stuck.delete() diff --git a/server/src/uds/core/workers/system_cleaners.py b/server/src/uds/core/workers/system_cleaners.py index a37fce8d8..4f0dd12e7 100644 --- a/server/src/uds/core/workers/system_cleaners.py +++ b/server/src/uds/core/workers/system_cleaners.py @@ -32,20 +32,17 @@ """ from importlib import import_module import logging -import datetime import typing from django.conf import settings from uds.core.util.cache import Cache from uds.core.jobs import Job -from uds.models import TicketStore, Log, getSqlDatetime -from uds.core.util import config, log +from uds.models import TicketStore logger = logging.getLogger(__name__) class CacheCleaner(Job): - frecuency = 3600 * 24 # Once a day friendly_name = 'Utility Cache Cleaner' @@ -56,7 +53,6 @@ class CacheCleaner(Job): class TicketStoreCleaner(Job): - frecuency = 60 # every minute (60 seconds) friendly_name = 'Ticket Storage Cleaner' @@ -84,20 +80,3 @@ class SessionsCleaner(Job): pass # No problem if no cleanup logger.debug('Done session cleanup') - - -class AuditLogCleanup(Job): - frecuency = 60 * 60 * 24 # Once a day - friendly_name = 'Audit Log Cleanup' - - def run(self) -> None: - """ - Cleans logs older than days - """ - Log.objects.filter( - created__lt=getSqlDatetime() - - datetime.timedelta( - days=config.GlobalConfig.MAX_AUDIT_LOGS_DURATION.getInt() - ), - owner_type=log.OWNER_TYPE_AUDIT, - ).delete() diff --git a/server/src/uds/core/workers/userservice_cleaner.py b/server/src/uds/core/workers/userservice_cleaner.py index 9d3805bfd..00d0708a8 100644 --- a/server/src/uds/core/workers/userservice_cleaner.py +++ b/server/src/uds/core/workers/userservice_cleaner.py @@ -34,9 +34,10 @@ import logging import typing from django.db import transaction -from uds.core import managers +from uds.core.managers.user_service import UserServiceManager from uds.core.util.config import GlobalConfig -from uds.models import UserService, getSqlDatetime +from uds.models import UserService +from uds.core.util.model import getSqlDatetime from uds.core.util.state import State from uds.core.jobs import Job @@ -77,8 +78,8 @@ class UserServiceRemover(Job): # USER_SERVICE_REMOVAL_LIMIT is the maximum number of items to remove at once # This configuration value is cached at startup, so it is not updated until next reload removeAtOnce: int = GlobalConfig.USER_SERVICE_CLEAN_NUMBER.getInt() - manager = managers.userServiceManager() - + manager = UserServiceManager() + with transaction.atomic(): removeFrom = getSqlDatetime() - timedelta( seconds=10 @@ -89,7 +90,9 @@ class UserServiceRemover(Job): state=State.REMOVABLE, state_date__lt=removeFrom, deployed_service__service__provider__maintenance_mode=False, - ).iterator(chunk_size=removeAtOnce) + ).iterator( + chunk_size=removeAtOnce + ) # We remove at once, but we limit the number of items to remove diff --git a/server/src/uds/dispatchers/guacamole/views.py b/server/src/uds/dispatchers/guacamole/views.py index fd08ebb7d..8b322dc2a 100644 --- a/server/src/uds/dispatchers/guacamole/views.py +++ b/server/src/uds/dispatchers/guacamole/views.py @@ -37,7 +37,7 @@ from django.http import HttpResponse from uds.models import TicketStore, UserService, TunnelToken from uds.core.auths import auth -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.util import log from uds.core.util.stats import events from uds.core.util.request import ExtendedHttpRequestWithUser @@ -91,10 +91,10 @@ def guacamole( raise Exception() # Log message and event protocol = 'RDS' if 'remote-app' in val else val['protocol'].upper() - host = val.get('hostname', '0.0.0.0') + host = val.get('hostname', '0.0.0.0') # nosec: Not a bind, just a placeholder for "no host" msg = f'User {user.name} started HTML5 {protocol} tunnel to {host}.' - log.doLog(user.manager, log.INFO, msg) - log.doLog(userService, log.INFO, msg) + log.doLog(user.manager, log.LogLevel.INFO, msg) + log.doLog(userService, log.LogLevel.INFO, msg) events.addEvent( userService.deployed_service, @@ -113,7 +113,7 @@ def guacamole( raise # Let it be handled by the upper layers if 'password' in val: - val['password'] = cryptoManager().symDecrpyt(val['password'], scrambler) + val['password'] = CryptoManager().symDecrpyt(val['password'], scrambler) response = dict2resp(val) except Exception: diff --git a/server/src/uds/dispatchers/opengnsys/views.py b/server/src/uds/dispatchers/opengnsys/views.py index a4d1d839a..b3b91b185 100644 --- a/server/src/uds/dispatchers/opengnsys/views.py +++ b/server/src/uds/dispatchers/opengnsys/views.py @@ -47,7 +47,12 @@ CONTENT_TYPE = 'text/plain' @auth.trustedSourceRequired -def opengnsys(request: HttpRequest, msg: str, token: str, uuid: str) -> HttpResponse: +def opengnsys( + request: HttpRequest, # pylint: disable=unused-argument + msg: str, + token: str, + uuid: str, +) -> HttpResponse: logger.debug('Received opengnsys message %s, token %s, uuid %s', msg, token, uuid) def getUserService() -> typing.Optional[UserService]: @@ -63,7 +68,7 @@ def opengnsys(request: HttpRequest, msg: str, token: str, uuid: str) -> HttpResp uuid, ) # Sleep a while in case of error? - except Exception as e: + except Exception: # Any exception will stop process logger.warning( 'OpenGnsys: invalid userService %s:%s. (Ignored)', token, uuid @@ -106,7 +111,9 @@ def opengnsys(request: HttpRequest, msg: str, token: str, uuid: str) -> HttpResp logger.debug( 'Processing logout from OpenGnsys %s', userService.friendly_name ) - actor_v3.Logout.process_logout(userService, 'OpenGnsys', '') # Close all sessions + actor_v3.Logout.process_logout( + userService, 'OpenGnsys', '' + ) # Close all sessions fnc: typing.Optional[typing.Callable[[], None]] = { 'login': login, diff --git a/server/src/uds/locale/ar/LC_MESSAGES/django.po b/server/src/uds/locale/ar/LC_MESSAGES/django.po index 916bda3a9..ab87bdc96 100644 --- a/server/src/uds/locale/ar/LC_MESSAGES/django.po +++ b/server/src/uds/locale/ar/LC_MESSAGES/django.po @@ -6,15 +6,17 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Abdel Baaddi , 2017-2018 msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Abdel Baaddi , 2017-2018\n" -"Language-Team: Arabic (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Arabic (http://app.transifex.com/openuds/openuds/language/" "ar/)\n" "Language: ar\n" "MIME-Version: 1.0\n" @@ -218,11 +220,11 @@ msgid "If active, authenticator will be visible for users" msgstr "إذا كان المصدق نشطًا ، فسيكون مرئيًا للمستخدمين" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "لا شيء" @@ -243,7 +245,6 @@ msgid "Refine your query" msgstr "حدد استفسارك" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "يجب أن تحتوي التسمية على أحرف أو أرقام أو رموز فقط: -:." @@ -679,10 +680,10 @@ msgstr "التقارير المتوفرة" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "المجموعة" @@ -724,7 +725,7 @@ msgid "Services Pools" msgstr "تجمعات الخدمة" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -738,7 +739,7 @@ msgstr "وكيل للخدمات وراء جدار الحماية" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1043,10 +1044,10 @@ msgstr "موظف" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1064,8 +1065,8 @@ msgstr "المستخدمون الحاليون" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1075,7 +1076,8 @@ msgstr "المستخدمون الحاليون" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1215,8 +1217,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1301,11 +1303,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "المهلة بالثواني للاتصال بخدمة Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "تحقق من SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1315,26 +1321,29 @@ msgstr "" "التحقق من SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "شهادة" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "شهادة لاستخدامها في التحقق من SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "سمة MFA" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "السمة من مكان استخراج رمز MFA" @@ -1347,111 +1356,111 @@ msgid "Authenticate against Active Directory" msgstr "المصادقة بالمقابلة مع خدمة Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "يجب تحديد اسم المستخدم في النموذج USERNAME@DOMAIN.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" -"تعذر الاتصال بأي خادم AD. تحقق من التكوين الخاص بك (الخادم ، شهادات SSL ، " -"...)." +"تعذر الاتصال بأي خادم AD. تحقق من التكوين الخاص بك (الخادم ، شهادات " +"SSL ، ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "لم يتم العثور على اسم المستخدم" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "لم يتم العثور على المجموعة" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "الكثير من النتائج، كن أكثر تحديداً" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "المجال غير صحيح، الرجاء التحقق من ذلك" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "الملقم لا يبدو Active Directory (ليس لديه كائنات المستخدم)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "الملقم لا يبدو Active Directory (ليس لديه كائنات المجموعة)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "يبدو الاتصال params صحيحا، تم تنفيذ الأختبار بنجاح" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "أزور الإعلانية المصادق" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "المصادق أزور Active Directory" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "معرف المستأجر" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "التي تم الحصول عليها من معرف الدليل Active Directory أزور--خصائص-" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "معرف العميل" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "" "التي تم الحصول عليها من التطبيق التي تم إنشاؤها في أزور \"المؤسسة المصغرة\"" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "العميل السري" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "" "التي تم الحصول عليها من التطبيق التي تم إنشاؤها في أزور للمكاتب المصغرة " "Enteprise--مفاتيح" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "رد الاتصال" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "عنوان رد الاتصال (يشغلها المصغرة، وإصلاح هذا فقط إذا لزم الأمر!!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1460,52 +1469,52 @@ msgstr "" "الوكيل المستخدم للاتصال بـ azure لاتصالات HTTPS (استخدم PROTOCOL: // host: " "port ، أي https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "تفعيل تكامل School Data Sync" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "قم بالتمكين فقط إذا كان لديك Microsoft School Data Sync في بيئتك." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "طريقة Azure Logout." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "" "إعادة توجيه UDS إلى صفحات تسجيل الخروج من Microsoft عند تسجيل الخروج من نظام " "UDS." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "لا تقم بإعادة التوجيه" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "تسجيل خروج Microsoft" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "تسجيل الخروج من Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "لا يدعم أداة مصادقة SAML المسافات البيضاء في الحقل NAME" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "استثناء المصادق:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "خطأ في الاتصال: " -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "يبدو params الاتصال الصحيح، واختبار تم تنفيذها بنجاح" @@ -1532,42 +1541,42 @@ msgstr "اسم المستخدم امتيازات القراءة على eDirector msgid "Timeout in seconds of connection to LDAP" msgstr "المهلة بالثواني لاتصال LDAP" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "eDirectory المصادق" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "مصادقة ضد eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "خطأ في اتصال Edirectory: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "قاعدة البحث Ldap غير صحيح" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "يبدو أن فئة Ldap المستخدم غير صحيحة (العثور على لا مستخدم من تلك الفئة)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" msgstr "" "يبدو أن Ldap المستخدم معرف السمة غير صحيحة (أي مستخدم موجود بذلك السمة)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "مجموعة السمة المتوقعة " -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1632,11 +1641,11 @@ msgstr "عكس DNS" msgid "If checked, the host will be reversed dns" msgstr "في حالة تحديد المضيف سوف تكون عكس dns" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "هياكل داخلية على ما يرام" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "كل شيء يبدو بشكل جيد في المصادق." @@ -1705,106 +1714,106 @@ msgstr "المضيف ملقم Ldap" msgid "Username with read privileges on the base selected" msgstr "اسم المستخدم مع امتيازات القراءة على القاعدة المحددة " -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "قاعدة" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "قاعدة البحث المشترك (المستخدم ل \"المستخدمين\" و \"مجموعات\")" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "معلومات Ldap" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "فئة المستخدم" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "فئة المستخدمين LDAP (عادة Posix account)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "User Id Attr" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "السمة تحتوي على معرف المستخدم" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "User Name Attr" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" msgstr "" "السمات التي تحتوي على سمات اسم المستخدم أو أنماط السمات (واحدة لكل سطر)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Group Name Attr" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" msgstr "السمة التي تحتوي على سمات اسم المجموعة أو أنماط السمة (واحدة لكل سطر)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "فئة البديل" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" msgstr "" "فئة لكائنات LDAP التي سيتم التحقق منها أيضا لاسترجاعها للمجموعات (عادة فارغة)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "المصادق Regex LDAP" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr " التعبيرات العادية لمصادق LDAP" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" msgstr "" "ربما Ldap user id attr خاطئ (لا يمكن العثور على أي مستخدم مع كل الشروط)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" msgstr "يبدو أن سمة معرف مجموعة Ldap غير صحيحة (لا توجد أي مجموعةلهذه السمة)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "المصادق SAML" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "المصادق (SAML (v2.0" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "المفتاح الخاص" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1812,11 +1821,11 @@ msgstr "" "استخدام المفتاح الخاص للتسجيل ولهذه السمة، كما تم إنشاؤه في الأساس 64 من " "OpenSSL" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "شهادات" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1824,80 +1833,80 @@ msgstr "" "المفتاح العمومي يستخدم للإمضاء والتشفير (الجزء العلني من المفتاح الخاص " "السابق)، كما ولد في base64 من OpenSSL" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "IDP Metadata" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "يمكنك إدخال URL أو بيانات IDP Metadata هنا داخليا أو بيان التعريف نفسه (xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "بيانات التعريف" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "معرف الكيان" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "SP ID. إذا ترك فارغاً، ستكون هذه المعطيات من محدد موقع معلومات الخادم" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "User name attrs" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "حقول منها يستخرج اسم المستخدم" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "سمات" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Group name attrs" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "حقول منها تستخرج المجموعات" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Real name attrs" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "حقول منها يستخرج الاسم الحقيقي" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "تسجيل الخروج العالمي" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "في حالة الضبط ، سيؤدي الخروج من UDS إلى تشغيل تسجيل الخروج من SAML" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "توافق ADFS" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "في حالة التعيين ، قم بتمكين ترميز عنوان url بأحرف صغيرة حتى يعمل ADFS بشكل " "صحيح" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "لا يدعم هذا النوع من المصادقة المسافات البيضاء في الحقل NAME" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1905,11 +1914,11 @@ msgstr "" "يجب أن تكون شهادة الملقم PEM صالحة (PEM شهادات تبدأ ب-----BEGIN " "CERTIFICATE-----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "شهادة الملقم غير صالحة. " -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1917,44 +1926,48 @@ msgstr "" "يجب أن يكون المفتاح الخاص PEM صالح (PEM المفاتيح الخاصة تبدأ ب------BEGIN " "RSA PRIVATE KEY-----" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "المفتاح الخاص غير صالح. " -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "الشهادة والمفتاح الخاص لا يتطابقان" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "لا يمكن إحضار url {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr " (تم الحصول عليها من URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML لا تبدو صالحة لبيانات التعريف IDP Metadata" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "لا يمكن الوصول إلى بيانات التعريف IDP Metadata" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "خطأ في التحقق من صحة بيانات تعريف مقدم الخدمة:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "خطأ في معالجة SLO:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "خطأ في معالجة استجابة SAML:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "لم تتم مصادقة استجابة SAML" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "لم يتم إرجاع أي سمات من IdP" @@ -1990,48 +2003,50 @@ msgstr "Ldap Server IP أو اسم المضيف" msgid "Ldap User" msgstr "Ldap المستخدم" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "السمات التي تحتوي على اسم المستخدم (قائمة قيم مفصولة بفاصلة)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "فئة المجموعة" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "فئة لمجموعات LDAP (عادةً poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "معرف المجموعة Attr" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "السمة التي تحتوي على معرف المجموعة" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "عضوية المجموعة" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "سمة المجموعة التي تحتوي على المستخدمين الذين ينتمون إليها" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (تم إزالته)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "بسيط" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "مصادقة LDAP بسيطة (تم إزالتها)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "مصدق LDAP بسيط" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "يبدو أن فئة مجموعة Ldap غير صحيحة (لم يتم العثور على مجموعة من تلك الفئة)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2039,7 +2054,7 @@ msgstr "" "من المحتمل أن فئة مستخدم Ldap أو معرف المستخدم خاطئة (لا يمكن العثور على أي " "مستخدم لديه الشرطين)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2047,7 +2062,7 @@ msgstr "" "من المحتمل أن تكون فئة مجموعة Ldap أو معرف المجموعة خاطئة (لا يمكن العثور " "على أي مجموعة بكلتا الحالتين)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "لا يمكن تحديد موقع أي مجموعة مع تحديد سمة العضوية" @@ -2123,7 +2138,7 @@ msgstr "لا يمكن الوصول إلى الخدمة من هذا الجهاز" msgid "Base MFA" msgstr "قاعدة MFA" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "رمز MFA غير صالح" @@ -2187,7 +2202,7 @@ msgstr "وثائق التفويض" msgid "Tunnel" msgstr "النفق" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "لا يمكن الاتصال بخادم LDAP" @@ -2492,8 +2507,8 @@ msgstr "موضوع البريد الإلكتروني" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "التكوين" @@ -2522,12 +2537,12 @@ msgid "Action for MFA response error" msgstr "الإجراء الخاص بخطأ استجابة MFA" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "السماح بتسجيل دخول المستخدم" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "رفض تسجيل دخول المستخدم" @@ -2556,9 +2571,8 @@ msgid "Text of the email. If empty, a default text will be used" msgstr "نص البريد الإلكتروني. إذا كان فارغًا ، فسيتم استخدام نص افتراضي" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "المتغيرات المسموح بها هي: {code} ، {username} ، {ip}" +msgid "Allowed variables are: " +msgstr "المتغيرات المسموح بها هي:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2652,19 +2666,19 @@ msgstr "خطأ في اتصال Radius OTP" msgid "Invalid OTP code" msgstr "رمز OTP غير صحيح" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "الرسائل القصيرة عبر HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "إرسال رسائل قصيرة بسيطة MFA باستخدام HTTP / HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "نمط URL لإرسال الرسائل القصيرة" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2676,16 +2690,16 @@ msgstr "" "{code} - رمز الإرسال * {phone / + phone} - رقم الهاتف * {username} - اسم " "المستخدم * {justUsername} - اسم المستخدم بدون @ ...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "خادم HTTP" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "تجاهل أخطاء الشهادة" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2693,19 +2707,19 @@ msgstr "" "إذا تم تحديده ، فسيتم تجاهل شهادة الخادم. يكون هذا مفيدًا إذا كان الخادم " "يستخدم شهادة موقعة ذاتيًا." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "طريقة إرسال الرسائل القصيرة" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "طريقة إرسال الرسائل القصيرة" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "رؤوس طلبات الرسائل القصيرة" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2716,14 +2730,14 @@ msgid "" msgstr "" "رؤوس طلبات الرسائل القصيرة. يمكن أن يحتوي على المتغيرات التالية: * {code} - " "رمز الإرسال * {phone / + phone} - رقم الهاتف * {username} - اسم المستخدم * " -"{justUsername} - اسم المستخدم بدون @ .... العناوين موجودة شكل \"Header: Value" -"\". (بدون اقتباس)" +"{justUsername} - اسم المستخدم بدون @ .... العناوين موجودة شكل \"Header: " +"Value\". (بدون اقتباس)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "معلمات لإرسال POST / PUT SMS" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2736,51 +2750,51 @@ msgstr "" "التالية: * {code} - رمز الإرسال * {phone / + phone} - رقم الهاتف * " "{username} - اسم المستخدم * {justUsername} - اسم المستخدم بدون @ ...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "ترميز الرسائل القصيرة" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "ترميز الرسائل القصيرة" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "طريقة مصادقة الرسائل القصيرة" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "مصادقة HTTP الأساسية" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "مصادقة ملخص HTTP" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "مصادقة HTTP" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "مستخدم مصادقة SMS أو رمز مميز" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "مستخدم أو رمز مميز للمصادقة عبر الرسائل القصيرة" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "كلمة مرور مصادقة SMS" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "كلمة مرور لمصادقة الرسائل القصيرة" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "استجابة الرسائل القصيرة موافق regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2788,54 +2802,54 @@ msgstr "" "Regex لاستجابة الرسائل القصيرة موافق. إذا كانت الاستجابة فارغة ، فسيتم " "اعتبارها على ما يرام إذا كان رمز الحالة 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "استجابة HTTP" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "إجراء خطأ استجابة SMS" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "الإجراء لخطأ استجابة SMS" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "" "اسمح للمستخدم بتسجيل الدخول إذا كان عنوان IP الخاص به موجودًا في قائمة الشبكات" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "" "منع المستخدم من تسجيل الدخول إذا كان عنوان IP الخاص به موجودًا في قائمة " "الشبكات" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "مستخدم بدون سياسة MFA" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "شبكات الرسائل القصيرة" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "شبكات لمصادقة الرسائل القصيرة" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "فشل إرسال الرسائل القصيرة" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "خطأ في استجابة الرسائل القصيرة" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "كود وزارة الخارجية" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "افحص هاتفك. ستتلقى رسالة نصية قصيرة تحتوي على رمز التحقق" @@ -4205,7 +4219,7 @@ msgstr "اختبار اتصال ناجح" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "فشل الاتصال. تحقق اتصال params" @@ -4226,8 +4240,7 @@ msgstr "Hyper Services على أساس القوالب والأقراص التف #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "عدد من الآلات المطلوبة للحفاظ على التوالي في انتظار المستخدم" @@ -4402,8 +4415,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "بالنسبة للمجموعات ، يجب أن يكون اسم المستخدم اسم مستخدم مجال (user @ domain " "أو DOMAIN \\ user" @@ -4480,8 +4493,8 @@ msgstr "اختر مشروعًا" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "الذاكرة التي تم تعيينها إلى آلات. (القيمة صفر يعني \"الحفاظ على ذاكرة الجهاز " "الأصلي\")" @@ -4855,11 +4868,11 @@ msgstr "قالب قاعدة." msgid "Service base template" msgstr "قالب قاعدة الخدمة." -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "خطأ مصادقة" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5170,8 +5183,8 @@ msgstr "منفذ API Proxmox (الافتراضي هو 8006)" msgid "" "User with valid privileges on Proxmox, (use \"user@authenticator\" form)" msgstr "" -"مستخدم لديه امتيازات صالحة في Proxmox ، (استخدم نموذج \"user @ Authenticator" -"\")" +"مستخدم لديه امتيازات صالحة في Proxmox ، (استخدم نموذج \"user @ " +"Authenticator\")" #: services/Proxmox/provider.py:95 msgid "Password of the user of Proxmox" @@ -5539,7 +5552,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "متوشالح ليس على قيد الحياة !!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "لا اختبار، ولكن كل شيء سار على ما يرام .." @@ -5595,22 +5607,6 @@ msgstr "ذاكرة كاش L2 للعناصر وهمية" msgid "List of names" msgstr "قائمة بأسماء" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "مزود اختبار" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "اختبار (وهمي) مقدم الخدمة" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "خدمة اختبار مع مخبأ" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "خدمة اختبار لL1 ذاكرة التخزين المؤقت فقط" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "vCloud ملقم IP أو اسم المضيف" @@ -5756,7 +5752,7 @@ msgstr "مزود برنامج VMWare VCenter منصة" msgid "Provides connection to Virtual Center Services" msgstr "توفر وصولا إلى مركز الظاهرية" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "اتصال params ok" @@ -6146,13 +6142,13 @@ msgstr "بروتوكول RDP باستخدام عميل HTML5" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "نفق خادم." #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6227,8 +6223,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "إن لم يكن فارغا، وهذا مجال وسوف تستخدم دائما الاعتماد (كما تستخدم المجال \\ " "المستخدم)" @@ -6316,31 +6312,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "مشاركة الملفات" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "سياسة إعادة توجيه تحميل / تنزيل الملف" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "تعطيل مشاركة الملفات" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "السماح بالتنزيل فقط" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "السماح بالتحميل فقط" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "تفعيل مشاركة الملفات" @@ -6477,13 +6479,13 @@ msgstr "فشل آمن" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "صلاحية التذكرة" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6493,31 +6495,32 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "فرض نافذة HTML جديدة" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "حدد سلوك النوافذ للاتصالات الجديدة على HTML5" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "افتح كل اتصال في نفس النافذة ، ولكن مع الاحتفاظ بنافذة UDS." #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "فرض كل اتصال ليتم فتحه في نافذة جديدة." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "تجاوز نافذة UDS واستبدلها بالاتصال." @@ -6582,7 +6585,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "يجب أن يكون خادم HTTP أو HTTPS" @@ -6670,6 +6673,70 @@ msgstr "" "بيانات الاعتماد فارغة (اعتمادبيانات علامة التبويب) مسموح فقط مع مستوى الأمان " "(معلمات علامة التبويب) بتعيين \"RDP\"" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "بروتوكول SSH باستخدام عميل HTML5" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "اسم المستخدم لمصادقة اتصال SSH." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "أمر SSH" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"أمر لتنفيذه على الخادم البعيد. إذا لم يتم توفيرها ، سيتم تنفيذ قذيفة تفاعلية." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "ملف تقاسم الجذر" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"مسار الجذر لمشاركة الملفات. إذا لم يتم توفيره ، فسيتم استخدام الدليل الجذر." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "منفذ خادم SSH" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "منفذ خادم SSH." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "مفتاح مضيف SSH" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"مفتاح المضيف لخادم SSH. إذا لم يتم تقديمه ، فلن يتم التحقق من هوية المضيف." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "خادم حافظ على قيد الحياة" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"الوقت بالثواني بين الرسائل الحية المرسلة إلى الخادم. إذا لم يتم توفيرها ، " +"فلن يتم إرسال رسائل البقاء على قيد الحياة." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC تجريبي" @@ -7447,10 +7514,10 @@ msgstr "جاري إنشاء الخدمة الخاصة بك ، يرجى الان msgid "Authenticator does not provide information" msgstr "الموثق لا يوفر المعلومات" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} أيام" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} ساعات" diff --git a/server/src/uds/locale/ar/LC_MESSAGES/djangojs.po b/server/src/uds/locale/ar/LC_MESSAGES/djangojs.po index cf1c79d0d..42e72294b 100644 --- a/server/src/uds/locale/ar/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/ar/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Abdel Baaddi , 2016-2018 # Víctor Alonso , 2020 # Víctor Alonso , 2020 @@ -13,10 +15,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Víctor Alonso , 2020\n" -"Language-Team: Arabic (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Arabic (http://app.transifex.com/openuds/openuds/language/" "ar/)\n" "Language: ar\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/ca/LC_MESSAGES/django.po b/server/src/uds/locale/ca/LC_MESSAGES/django.po index bc94867ce..1eb82e800 100644 --- a/server/src/uds/locale/ca/LC_MESSAGES/django.po +++ b/server/src/uds/locale/ca/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2018 # albert clar , 2017-2018,2020-2021 # Javier , 2020 @@ -13,10 +15,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Javier , 2020\n" -"Language-Team: Catalan (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Catalan (http://app.transifex.com/openuds/openuds/language/" "ca/)\n" "Language: ca\n" "MIME-Version: 1.0\n" @@ -219,11 +221,11 @@ msgid "If active, authenticator will be visible for users" msgstr "Si està actiu, l'autenticador serà visible per als usuaris" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Cap" @@ -244,7 +246,6 @@ msgid "Refine your query" msgstr "Refineu la vostra consulta" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "L'etiqueta només ha de contenir lletres, números o símbols: - : ." @@ -683,10 +684,10 @@ msgstr "Informes disponibles" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Grup" @@ -728,7 +729,7 @@ msgid "Services Pools" msgstr "Pools de serveis" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -742,7 +743,7 @@ msgstr "Proxy per a serveis darrere d'un tallafoc" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1055,10 +1056,10 @@ msgstr "Membre del personal" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1076,8 +1077,8 @@ msgstr "Usuaris actuals" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1087,7 +1088,8 @@ msgstr "Usuaris actuals" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1232,8 +1234,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1319,11 +1321,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Temps d'espera de la connexió amb el Directori Actiu en segons" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "Verifiqueu SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1333,26 +1339,29 @@ msgstr "" "es desactivarà" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Certificat" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "Certificat per utilitzar per a la verificació SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "Atribut MFA" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Atribut d'on extreure el codi MFA" @@ -1365,11 +1374,11 @@ msgid "Authenticate against Active Directory" msgstr "Autenticar sobre Directori Actiu" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "Cal especificar el nom d'usuari en format USUARI@DOMINI.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." @@ -1377,98 +1386,98 @@ msgstr "" "No s'ha pogut connectar a cap servidor AD. Comproveu la vostra " "configuració (servidor, certificats ssl, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Nom d'usuari no trobat" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Grup no trobat" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Massa resultats, cal especificar més" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "El Domini sembla ser incorrecte, si us plau verifiqueu-ho" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "El servidor sembla no ser un Directori Actiu (no té objectes d'usuari)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "El servidor sembla no ser un Directori Actiu (no té objectes de grup)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "" "Els paràmetres de connexió semblen correctes, la prova s'ha executat " "correctament" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Autenticador d'Azure AD" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Autenticador d'Azure Directori Actiu" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "Tenant ID" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Obtingut d'Azure Directori Actiu - Propietats - ID de directori" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "ID de client" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Obtingut amb l'App creada amb Azure per a UDS Enterprise" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Clau de Client" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "Obtinguts amb l'App creada amb Azure per a UDS Enterprise - Claus" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "URL de resposta" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "URL de resposta (omplert per UDs, cavieu-ho només si és necessari!!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1477,53 +1486,53 @@ msgstr "" "Proxy utilitzat per a connexions HTTPS a Azure (utilitzeu PROTOCOL://host:" "port, per exemple, https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Activar la integració de sincronització de dades escolars" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "" "Activar només si teniu Microsoft School Data Sync a la vostra institució." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Mètode de tancament de sessió d'Azure." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "" "Redirecció d'UDS a les pàgines de tancament de sessió de Microsoft en " "tancar la sessió d'UDS." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "No redirigeu" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Tancament de sessió de Microsoft" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Tancament de sessió d'Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "L'Autenticador SAML no admet espais blancs al camp NAME" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Excepció d'autenticador:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Error de connexió:" -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "" "Els paràmetres de connexió semblen correctes, la prova s'ha executat " @@ -1555,32 +1564,32 @@ msgstr "Nom d'usuari amb privilegis de lectura sobre l'eDirectory" msgid "Timeout in seconds of connection to LDAP" msgstr "Temps d'espera de la connexió amb el LDAP en segons" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "Autenticador eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "Autenticar sobre eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Error de connexió amb l'eDirectori: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "La base de cerca LDAP no és correcta" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "La classe d'usuari LDAP sembla no ser correcta (no s'ha trobat cap usuari " "amb aquesta classe)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1588,11 +1597,11 @@ msgstr "" "L'atribut d'ID de l'usuari LDAP sembla no ser correcte (no s'ha trobat cap " "usuari amb aquest atribut)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Atribut de grup esperat" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1660,11 +1669,11 @@ msgstr "DNS invers" msgid "If checked, the host will be reversed dns" msgstr "Si està seleccionat, el host serà DNS invers" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Les estructures internes semblen correctes" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Tot sembla correcte a l'autenticador" @@ -1734,45 +1743,45 @@ msgstr "Host servidor LDAP" msgid "Username with read privileges on the base selected" msgstr "Nom d'usuari amb privilegis de lectura sobre la base seleccionada" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Base" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "Base de cerca comuna (utilitzada per a \"usuaris\" i \"grups\")" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Informació del LDAP" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Classe d'usuari" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Classe per a usuaris LDAP (normalment posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Atr. ID d'usuari" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Atribut que conté l'ID d'usuari" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Atr. Nom d'usuari" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1780,11 +1789,11 @@ msgstr "" "Atribut que conté els patrons d’atributs o els atributs de nom d’usuari (un " "per a cada línia)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Atr. Nom de grup" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1792,11 +1801,11 @@ msgstr "" "Atribut que conté els patrons d’atributs o els atributs de nom de grup (un " "per a cada línia)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Classe alternativa" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1804,15 +1813,15 @@ msgstr "" "Classe per a objectes LDAP que també se seleccionarà per a la recuperació de " "grups (normalment buit)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Autenticador Regex LDAP" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Autenticador LDAP d'Expressions Regulars" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1820,7 +1829,7 @@ msgstr "" "L'atribut d'ID d'usuari de LDAP probablement és incorrecte (no es pot trobar " "cap usuari que compleixi les dues condicions)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1828,19 +1837,19 @@ msgstr "" "L'atribut d'ID de grup de LDAP sembla incorrecte (no s'ha trobat cap grup " "amb aquest atribut)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "Autenticador SAML" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "Autenticador SAML (v2.0)" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Clau privada" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1848,11 +1857,11 @@ msgstr "" "Clau privada utilitzada per a signar i encriptar, generada en base 64 des " "d'OPENSSL" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Certificats" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1860,82 +1869,82 @@ msgstr "" "Clau pública utilitzada per a signar i encriptar (part pública de la clau " "privada anterior), generada en base 64 des d'OPENSSL" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "Metadades IDP" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "Podeu posar aquí l'URL o les metadades IDP o les mateixes metadades (xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Metadades" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "ID de l'entitat" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "ID del SP. Si es deixa en blanc, es generarà automàticament des del servidor " "URL" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Atributs de nom d'usuari" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Camps d'on obtenir el nom d'usuari" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Atributs" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Atributs de Nom de grup" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Camps d'on obtenir els grups" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Atributs de Nom real" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Camps d'on obtenir el nom real" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Tancament de sessió global" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "Si s'estableix, la sessió d'UDS activarà la sortida de SAML" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "Compatibilitat ADFS" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Si s'estableix, activeu la codificació d'URL en minúscules perquè " "ADFS pugui funcionar correctament" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "Aquest tipus d'autenticador no admet espais en blanc al camp NOM" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1943,11 +1952,11 @@ msgstr "" "El certificat del servidor ha de ser PEM vàlid (els certificats PEM comencen " "amb -----BEGIN CERTIFICATE-----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Certificat de servidor no vàlid" -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1955,44 +1964,48 @@ msgstr "" "La clau privada ha de ser PEM vàlida (les claus privades PEM comencen amb " "-----BEGIN RSA PRIVATE KEY-----)" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Clau privada incorrecta." -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "El certificat i la clau privada no coincideixen" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "No es por extreure URL {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr " (obtingut de l'URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "El XML no sembla vàlid per a metadades IDP" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "No es pot accedir a les metadades IDP" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Error en validar les metadades de SP:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Error en processar SLO:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Error en processar la resposta SAML:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "La resposta SAML no s'ha autenticat" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "No s'ha retornat cap atribut d'IdP" @@ -2028,50 +2041,52 @@ msgstr "Nom de host o IP del servidor LDAP" msgid "Ldap User" msgstr "Usuari de LDAP" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Atributs que contenen el nom d'usuari (llista de valors separats per comes)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Classe de grup" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Classe per a grups LDAP (normalment poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Atribut d'ID de grup" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Atribut que conté l'ID del grup" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Atribut de Membres del grup" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Atribut del grup que conté els usuaris que hi pertanyen" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (OBSOLET)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "SimpleLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "Autenticador LDAP simple (OBSOLET)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Autenticador LDAP simple" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "Sembla que la classe de grup LDAP no és correcta (no s'ha trobat cap grup " "per a aquesta classe)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2079,7 +2094,7 @@ msgstr "" "Probablement la classe d’usuari LDAP o l’atribut d'identificador d’usuari no " "són correctes (no es pot trobar cap usuari amb les dues condicions)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2087,7 +2102,7 @@ msgstr "" "Probablement la classe de grup LDAP o l'atribut d’identificador de grup no " "són correctes (no es pot trobar cap grup amb les dues condicions)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "No es pot localitzar cap grup amb l’atribut de membres especificat" @@ -2166,7 +2181,7 @@ msgstr "El servei no és accessible des d'aquest dispositiu" msgid "Base MFA" msgstr "Base MFA" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Codi MFA no vàlid" @@ -2230,7 +2245,7 @@ msgstr "Credencials" msgid "Tunnel" msgstr "Túnel" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "No es pot contactar amb el servidor LDAP" @@ -2540,8 +2555,8 @@ msgstr "Assumpte del correu electrònic" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Config" @@ -2570,12 +2585,12 @@ msgid "Action for MFA response error" msgstr "Acció per error de resposta de MFA" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Permet l'inici de sessió de l'usuari" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Denegar l'inici de sessió de l'usuari" @@ -2610,9 +2625,8 @@ msgstr "" "predeterminat" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Les variables permeses són: {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "Les variables permeses són:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2710,19 +2724,19 @@ msgstr "Error de connexió de Radius OTP" msgid "Invalid OTP code" msgstr "Codi OTP no vàlid" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS via HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "SMS senzill que envia MFA mitjançant HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "Patró d'URL per enviar SMS" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2735,16 +2749,16 @@ msgstr "" "{username} - el nom d'usuari * {justUsername} - el nom d'usuari " "sense @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "Servidor HTTP" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Ignora els errors del certificat" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2752,19 +2766,19 @@ msgstr "" "Si està marcat, el certificat del servidor s'ignorarà. Això és útil si " "el servidor utilitza un certificat autofirmat." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "Mètode d'enviament de SMS" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Mètode per enviar SMS" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "Capçaleres per a sol·licituds d'SMS" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2776,14 +2790,14 @@ msgstr "" "Capçaleres per a sol·licituds d'SMS. Pot contenir les variables " "següents: * {codi} - el codi a enviar * {telèfon/+telèfon} - el número de " "telèfon * {username} - el nom d'usuari * {justUsername} - el nom d'" -"usuari sense @.... Les capçaleres estan a la forma de \"Encapçalament: valor" -"\". (sense cometes)" +"usuari sense @.... Les capçaleres estan a la forma de \"Encapçalament: " +"valor\". (sense cometes)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Paràmetres per a l'enviament de SMS POST/PUT" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2797,51 +2811,51 @@ msgstr "" "número de telèfon * {username} - el nom d'usuari * {justUsername} - el " "nom d'usuari sense @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "Codificació de SMS" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Codificació per a SMS" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "Mètode d'autenticació per SMS" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "Autenticació bàsica HTTP" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "HTTP Digest Auth" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "Autenticació HTTP" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "Usuari o testimoni d'autenticació per SMS" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "Usuari o testimoni per a l'autenticació per SMS" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "Contrasenya d'autenticació per SMS" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Contrasenya per a l'autenticació per SMS" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "Resposta d'SMS OK regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2849,55 +2863,55 @@ msgstr "" "Regex per a la resposta d'SMS OK. Si està buit, la resposta es considera " "correcta si el codi d'estat és 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "Resposta HTTP" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "Acció d'error de resposta SMS" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Acció per error de resposta SMS" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "" "Permet que l'usuari iniciï sessió si la seva IP es troba a la llista de " "xarxes" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "" "Denegueu que l'usuari iniciï sessió si la seva IP es troba a la llista " "de xarxes" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "Usuari sense política MFA" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "Xarxes SMS" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Xarxes per a l'autenticació de SMS" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "S'ha produït un error en l'enviament de SMS" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "Error de resposta SMS" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "Codi MFA" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "Comprova el teu telèfon. Rebràs un SMS amb el codi de verificació" @@ -4287,7 +4301,7 @@ msgstr "La prova de connexió s'ha realitzat correctament" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "La connexió ha fallat. Verifiqueu els paràmetres de connexió" @@ -4308,8 +4322,7 @@ msgstr "Hiper serveis basats en plantilles i discs diferencials (LEGACY)" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "" "Nombre desitjat de màquines que es mantenen en execució esperant un usuari" @@ -4491,8 +4504,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Per als clústers, el nom d’usuari ha de ser un nom d’usuari de domini " "(usuari@domini o DOMINI\\usuari)" @@ -4571,8 +4584,8 @@ msgstr "Seleccioneu un projecte" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Memòria assignada a les màquines. (Zero significa \"conservar la memòria " "original de la màquina\")" @@ -4706,8 +4719,8 @@ msgstr "Nom de host o IP del servidor oVirt" #: services/OVirt/provider.py:123 msgid "User with valid privileges on oVirt, (use \"user@domain\" form)" msgstr "" -"Usuari amb privilegis vàlids sobre oVirt (utilitzeu el format \"usuari@domini" -"\")" +"Usuari amb privilegis vàlids sobre oVirt (utilitzeu el format " +"\"usuari@domini\")" #: services/OVirt/provider.py:131 msgid "Password of the user of oVirt" @@ -4958,11 +4971,11 @@ msgstr "Plantilla base" msgid "Service base template" msgstr "Plantilla base de servei" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Error d'autenticació" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5500,8 +5513,8 @@ msgstr "Si no està buit, UDS intentarà afegir usuaris gestionats a aquest grup #: services/RDS_enterprise/provider.py:182 msgid "Select only one of \"User mapping\" or \"User creation\" methods." msgstr "" -"Seleccioneu només un dels mètodes: \"Mapeig d'usuaris\" o \"Creació d'usuaris" -"\"." +"Seleccioneu només un dels mètodes: \"Mapeig d'usuaris\" o \"Creació " +"d'usuaris\"." #: services/RDS_enterprise/provider.py:190 msgid "AD User Management: you must provide the AD server host." @@ -5669,7 +5682,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Matusalem no és viu!!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "No s'ha fet cap comprovació, però tot ha funcionat..." @@ -5725,22 +5737,6 @@ msgstr "Memòria cau nivell 2 per a elements simulats" msgid "List of names" msgstr "Llista de noms" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Proveïdor de prova" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Proveïdor de serveis de prova (i simulació)" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Serveis de prova amb memòria cau" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Servei de prova només per a memòria cau nivell 1" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "Nom de host o IP del servidor vCloud" @@ -5889,7 +5885,7 @@ msgstr "Proveïdor de la plataforma VMWare VCenter" msgid "Provides connection to Virtual Center Services" msgstr "Proporciona connexió a serveis VMWare VCenter" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Paràmetres de connexió correctes" @@ -6292,13 +6288,13 @@ msgstr "Protocol RDP utilitzant client HTML5" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Servidor de túnel" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6377,8 +6373,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "Si no està buit, aquest domini s'utilitzarà sempre per a les credencials (en " "format DOMINI\\usuari)" @@ -6468,31 +6464,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Compartició de fitxers" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Política de redirecció de càrrega/descàrrega de fitxers" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Desactiva la compartició de fitxers" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Permet només la descàrrega" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Permet només la càrrega" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Activa la compartició de fitxers" @@ -6629,13 +6631,13 @@ msgstr "A prova de fallades" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Validesa del ticket" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6645,20 +6647,21 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Forçar una nova finestra HTML" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "" "Seleccioneu el comportament de les finestres per a noves connexions a HTML5" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "" "Obrir totes les connexions a la mateixa finestra, però mantenir la finestra " @@ -6666,13 +6669,13 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Forçar l'obertura de totes les connexions en una finestra nova." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Substitueix la finestra d'UDS per la connexió." @@ -6737,7 +6740,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "El servidor ha de ser http o https" @@ -6825,6 +6828,73 @@ msgstr "" "Només es permeten credencials buides (a la pestanya de Credencials) amb el " "nivell de seguretat (a la pestanya Paràmetres) establert a \"RDP\"" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "Protocol SSH amb el client HTML5" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Nom d'usuari per a l'autenticació de connexió SSH." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "Comandament SSH" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Ordre per executar al servidor remot. Si no es proporciona, s'executarà " +"un shell interactiu." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Arrel per compartir fitxers" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Ruta arrel per compartir fitxers. Si no es proporciona, s'utilitzarà el " +"directori arrel." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "Port del servidor SSH" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Port del servidor SSH." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "Clau d'amfitrió SSH" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Clau d'amfitrió del servidor SSH. Si no es proporciona, no es verifica " +"la identitat de l'amfitrió." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Servidor Keep Alive" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Temps en segons entre els missatges de mantenir vius enviats al servidor. Si " +"no es proporciona, no s'enviarà cap missatge de manteniment viu." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "VNC HTML5 experimental" @@ -7640,10 +7710,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "L'autenticador no proporciona informació" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} dies" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} hores" diff --git a/server/src/uds/locale/ca/LC_MESSAGES/djangojs.po b/server/src/uds/locale/ca/LC_MESSAGES/djangojs.po index d08619f64..4cf6cbcad 100644 --- a/server/src/uds/locale/ca/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/ca/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2017,2020 # albert clar , 2017-2018,2020-2021 #, fuzzy @@ -12,10 +14,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Adolfo Gómez , 2017,2020\n" -"Language-Team: Catalan (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Catalan (http://app.transifex.com/openuds/openuds/language/" "ca/)\n" "Language: ca\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/de/LC_MESSAGES/django.po b/server/src/uds/locale/de/LC_MESSAGES/django.po index d44db158c..fd0687446 100644 --- a/server/src/uds/locale/de/LC_MESSAGES/django.po +++ b/server/src/uds/locale/de/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2012 # Víctor Alonso , 2022 # Víctor Alonso , 2022 @@ -13,10 +15,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Víctor Alonso , 2022\n" -"Language-Team: German (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: German (http://app.transifex.com/openuds/openuds/language/" "de/)\n" "Language: de\n" "MIME-Version: 1.0\n" @@ -219,11 +221,11 @@ msgid "If active, authenticator will be visible for users" msgstr "Wenn aktiv, ist der Authentifikator für Benutzer sichtbar" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Keiner" @@ -244,7 +246,6 @@ msgid "Refine your query" msgstr "Verfeinern Sie Ihre Suchanfrage" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "Label darf nur Buchstaben, Zahlen oder Symbole enthalten: - : ." @@ -684,10 +685,10 @@ msgstr "Verfügbare Berichte" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Gruppe" @@ -729,7 +730,7 @@ msgid "Services Pools" msgstr "Service-Pools" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -743,7 +744,7 @@ msgstr "Proxy für Dienste hinter einer Firewall" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1059,10 +1060,10 @@ msgstr "Mitarbeiter" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1080,8 +1081,8 @@ msgstr "Derzeitige Nutzer" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1091,7 +1092,8 @@ msgstr "Derzeitige Nutzer" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1236,8 +1238,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1323,11 +1325,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Timeout in Sekunden der Verbindung zu Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "SSL verifizieren" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1337,26 +1343,29 @@ msgstr "" "Andernfalls wird die SSL-Überprüfung deaktiviert" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Zertifikat" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "Zertifikat zur Verwendung für die SSL-Überprüfung" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "MFA-Attribut" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Attribut, aus dem der MFA-Code extrahiert werden soll" @@ -1369,11 +1378,11 @@ msgid "Authenticate against Active Directory" msgstr "Authentifizieren Sie sich gegen Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "Der Benutzername muss in der Form USERNAME@DOMAIN.DOM angegeben werden" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." @@ -1381,102 +1390,102 @@ msgstr "" "Es konnte keine Verbindung zu einem AD-Server hergestellt werden. Überprüfen " "Sie Ihre Konfiguration (Server, SSL-Zertifikate, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Benutzername nicht gefunden" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Gruppe nicht gefunden" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Zu viele Ergebnisse, bitte konkretisieren" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Die Domain scheint falsch zu sein, bitte überprüfen Sie es" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "" "Server scheint kein Active Directory zu sein (es hat keine Benutzerobjekte)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "" "Server scheint kein Active Directory zu sein (er hat keine Gruppenobjekte)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "" "Verbindungsparameter scheinen korrekt zu sein, der Test wurde erfolgreich " "ausgeführt" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Azure AD-Authentifikator" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Azure Active Directory Authenticator" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "Mieter-ID" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Von Azure Active Directory erhalten - Eigenschaften - Verzeichnis-ID" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "Kunden ID" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Wird von einer in Azure für UDS Enterprise erstellten App abgerufen" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Kundengeheimnis" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "" "Wird von einer in Azure für UDS Enteprise - Keys erstellten App abgerufen" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "Ruf zurück" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "" "Callback-URL (Wird von UDS gefüllt, korrigiert dies nur, wenn nötig !!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1485,51 +1494,51 @@ msgstr "" "Proxy für die Verbindung zu Azure für HTTPS-Verbindungen (verwenden Sie " "PROTOCOL: // Host: Port, dh https://10.10.0.1:8080)." -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Integration von Schuldatensynchronisierung aktivieren" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "" "Nur aktivieren, wenn Sie Microsoft School Data Sync in Ihrer Umgebung haben." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Azure Logout-Methode." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "UDS-Umleitung zu Microsoft-Abmeldeseiten bei UDS-Abmeldung." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "Nicht umleiten" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Microsoft-Abmeldung" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Abmeldung von Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "SAML Authenticator unterstützt keine Leerzeichen im Feld NAME" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Authenticator-Ausnahme:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Verbindungsfehler:" -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "" "Verbindungsparameter scheinen korrekt zu sein, der Test wurde erfolgreich " @@ -1560,32 +1569,32 @@ msgstr "Benutzername mit Leserechten für das eDirectory" msgid "Timeout in seconds of connection to LDAP" msgstr "Timeout in Sekunden der Verbindung zu LDAP" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "eDirectory Authenticator" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "Authentifizierung gegen eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "eDirectory-Verbindungsfehler: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "Ldap-Suchbasis ist falsch" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "LDAP-Benutzerklasse scheint falsch zu sein (kein Benutzer wurde von dieser " "Klasse gefunden)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1593,11 +1602,11 @@ msgstr "" "LDAP-Benutzer-ID-Attribut scheint falsch zu sein (kein Benutzer wurde von " "diesem Attribut gefunden)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Erwartetes Gruppenattribut" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1666,11 +1675,11 @@ msgstr "Umgekehrtes DNS" msgid "If checked, the host will be reversed dns" msgstr "Wenn aktiviert, wird der Host dns rückgängig gemacht" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Interne Strukturen scheinen in Ordnung zu sein" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Beim Authentifikator scheint alles in Ordnung zu sein." @@ -1740,45 +1749,45 @@ msgstr "LDAP-Server-Host" msgid "Username with read privileges on the base selected" msgstr "Benutzername mit Leseberechtigung für die ausgewählte Basis" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Base" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "Gemeinsame Suchbasis (wird für \"Benutzer\" und \"Gruppen\" verwendet)" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Ldap Info" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Benutzerklasse" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Klasse für LDAP-Benutzer (normalerweise posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Benutzer-ID Attr" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Attribut, das die Benutzer-ID enthält" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Benutzername Attr" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1786,11 +1795,11 @@ msgstr "" "Attribute, die die Benutzernamenattribute oder Attributmuster enthalten " "(eines für jede Zeile)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Gruppenname Attr" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1798,11 +1807,11 @@ msgstr "" "Attribut, das die Gruppennamenattribute oder Attributmuster enthält (eines " "für jede Zeile)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Alt. Klasse" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1810,15 +1819,15 @@ msgstr "" "Klasse für LDAP-Objekte, die auch auf Gruppenabruf geprüft werden " "(normalerweise leer)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Regex LDAP Authentifikator" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Reguläre Ausdrücke LDAP-Authentifikator" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1826,7 +1835,7 @@ msgstr "" "Ldap-Benutzer-ID attr ist wahrscheinlich falsch (kann keinen Benutzer mit " "beiden Bedingungen finden)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1834,19 +1843,19 @@ msgstr "" "Ldap-Gruppen-ID-Attribut scheint falsch zu sein (von diesem Attribut wurde " "keine Gruppe gefunden)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "SAML Authenticator" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "SAML (v2.0) Authenticator" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Privat Schlüssel" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1854,11 +1863,11 @@ msgstr "" "Privater Schlüssel, der zum Signieren und Schreiben verwendet wird, wie in " "Base 64 von OpenSSL generiert" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Zertifikate" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1867,83 +1876,83 @@ msgstr "" "vorherigen privaten Schlüssels), wie er in der Basis 64 von openssl " "generiert wird" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "IDP-Metadaten" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "Sie können hier die URL oder die IDP-Metadaten oder die Metadaten selbst " "(xml) eingeben." -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Metadaten" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "Entity-ID" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "ID des SP. Bleibt das Feld leer, wird dies automatisch von der Server-URL " "generiert" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Benutzername attrs" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Felder, aus denen der Benutzername extrahiert werden soll" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Attribute" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Gruppenname attrs" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Felder, aus denen die Gruppen extrahiert werden sollen" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Echte name attrs" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Felder, aus denen der echte Name extrahiert werden soll" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Globale Abmeldung" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "Wenn gesetzt, löst die Abmeldung von UDS die SAML-Abmeldung aus" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "ADFS-Kompatibilität" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Wenn festgelegt, aktivieren Sie die URL-Codierung in Kleinbuchstaben, damit " "ADFS ordnungsgemäß funktionieren kann" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "Diese Art von Authenticator unterstützt keine Leerzeichen im Feld NAME" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1951,11 +1960,11 @@ msgstr "" "Serverzertifikat sollte ein gültiges PEM sein (PEM-Zertifikate beginnen mit " "----- BEGIN CERTIFICATE -----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Ungültiges Serverzertifikat" -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1963,44 +1972,48 @@ msgstr "" "Der private Schlüssel sollte ein gültiges PEM sein (der private PEM- " "Schlüssel beginnt mit ----- BEGIN RSA PRIVATE KEY -----" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Ungültiger privater Schlüssel" -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "Zertifikat und privater Schlüssel stimmen nicht überein" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "URL {0} kann nicht abgerufen werden: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr "(von URL erhalten)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML scheint für IDP-Metadaten nicht gültig zu sein" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "Ich kann nicht auf IDP-Metadaten zugreifen" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Fehler beim Validieren von SP-Metadaten:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Fehler bei der Verarbeitung von SLO:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Fehler bei der Verarbeitung der SAML-Antwort:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "SAML-Antwort nicht authentifiziert" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "Keine Attribute vom IdP zurückgegeben" @@ -2036,51 +2049,53 @@ msgstr "Ldap Server IP oder Hostname" msgid "Ldap User" msgstr "Ldap-Benutzer" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Attribute, die den Benutzernamen enthalten (Liste der durch Kommas " "getrennten Werte)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Gruppenklasse" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Klasse für LDAP-Gruppen (normalerweise PoxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Gruppen-ID Attr" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Attribut, das die Gruppen-ID enthält" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Gruppenmitgliedschaft attr" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Attribut der Gruppe, die die dazugehörigen Benutzer enthält" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "SimpleLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "Einfacher LDAP-Authentifikator (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Einfacher LDAP-Authentifikator" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "LDAP-Gruppenklasse scheint falsch zu sein (von dieser Klasse wurde keine " "Gruppe gefunden)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2088,7 +2103,7 @@ msgstr "" "LDAP-Benutzerklasse oder Benutzer-ID attr ist wahrscheinlich falsch (kann " "keinen Benutzer mit beiden Bedingungen finden)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2096,7 +2111,7 @@ msgstr "" "LDAP-Gruppenklasse oder Gruppen-ID attr ist wahrscheinlich falsch (kann " "keine Gruppe mit beiden Bedingungen finden)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "Kann keine Gruppe mit dem angegebenen Mitgliedschaftsattribut finden" @@ -2182,7 +2197,7 @@ msgstr "Der Service ist auf diesem Gerät nicht erreichbar" msgid "Base MFA" msgstr "Basis-MFA" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Ungültiger MFA-Code" @@ -2246,7 +2261,7 @@ msgstr "Referenzen" msgid "Tunnel" msgstr "Tunnel" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "LDAP-Server kann nicht kontaktiert werden" @@ -2558,8 +2573,8 @@ msgstr "Betreff der E-Mail" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Konfig" @@ -2588,12 +2603,12 @@ msgid "Action for MFA response error" msgstr "Aktion für MFA-Antwortfehler" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Benutzeranmeldung zulassen" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Benutzeranmeldung verweigern" @@ -2626,9 +2641,8 @@ msgid "Text of the email. If empty, a default text will be used" msgstr "Text der E-Mail. Wenn leer, wird ein Standardtext verwendet" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Erlaubte Variablen sind: {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "Erlaubte Variablen sind:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2723,19 +2737,19 @@ msgstr "Radius-OTP-Verbindungsfehler" msgid "Invalid OTP code" msgstr "Ungültiger OTP-Code" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS über HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "Einfacher SMS-Versand mit MFA über HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "URL-Muster für den SMS-Versand" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2747,16 +2761,16 @@ msgstr "" "{code} - der zu sendende Code * {phone/+phone} - die Telefonnummer * " "{username} - der Benutzername * {justUsername} - der Benutzername ohne @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "HTTP-Server" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Zertifikatsfehler ignorieren" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2764,19 +2778,19 @@ msgstr "" "Wenn diese Option aktiviert ist, wird das Serverzertifikat ignoriert. Dies " "ist nützlich, wenn der Server ein selbstsigniertes Zertifikat verwendet." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "SMS-Sendemethode" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Methode zum Senden von SMS" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "Header für SMS-Anfragen" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2790,11 +2804,11 @@ msgstr "" "der Benutzername * {justUsername} - der Benutzername ohne @... Header sind " "in die Form \"Kopfzeile: Wert\". (ohne die Anführungszeichen)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Parameter für das Senden von SMS POST/PUT" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2808,51 +2822,51 @@ msgstr "" "Telefonnummer * {username} - der Benutzername * {justUsername} - der " "Benutzername ohne @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "SMS-Verschlüsselung" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Verschlüsselung für SMS" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "SMS-Authentifizierungsmethode" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "HTTP-Basis-Auth" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "HTTP-Digest-Auth" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "HTTP-Authentifizierung" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "Benutzer oder Token für die SMS-Authentifizierung" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "Benutzer oder Token für die SMS-Authentifizierung" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "SMS-Authentifizierungspasswort" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Passwort für die SMS-Authentifizierung" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "SMS-Antwort OK Regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2860,55 +2874,55 @@ msgstr "" "Regex für SMS-Antwort OK. Wenn leer, wird die Antwort als OK betrachtet, " "wenn der Statuscode 200 ist." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "HTTP-Antwort" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "SMS-Antwort-Fehleraktion" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Aktion für SMS-Antwortfehler" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "" "Erlauben Sie dem Benutzer, sich anzumelden, wenn seine IP in der " "Netzwerkliste enthalten ist" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "" "Benutzern die Anmeldung verweigern, wenn sich ihre IP in der Netzwerkliste " "befindet" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "Benutzer ohne MFA-Richtlinie" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "SMS-Netzwerke" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Netzwerke für die SMS-Authentifizierung" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "SMS-Versand fehlgeschlagen" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "SMS-Antwortfehler" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "MFA-Code" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "Schau auf dein Telefon. Sie erhalten eine SMS mit dem Bestätigungscode" @@ -4304,7 +4318,7 @@ msgstr "Verbindungstest erfolgreich" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "Verbindung fehlgeschlagen. Überprüfen Sie die Verbindungsparameter" @@ -4325,8 +4339,7 @@ msgstr "Hyper Services basierend auf Vorlagen und Differentialplatten (LEGACY)" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "Anzahl der gewünschten Maschinen, die auf einen Benutzer warten müssen" @@ -4509,8 +4522,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Bei Clustern muss der Benutzername ein Domainbenutzername sein (user@Domain " "oder DOMAIN\\user)" @@ -4589,8 +4602,8 @@ msgstr "Wählen Sie ein Projekt aus" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Speicher, der Maschinen zugewiesen wird. (Nullwert bedeutet \"Original-" "Maschinenspeicher beibehalten\")" @@ -4974,11 +4987,11 @@ msgstr "Basisvorlage" msgid "Service base template" msgstr "Service-Basisvorlage" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Authentifizierungsfehler" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5687,7 +5700,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Methusalah lebt nicht!!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "Nichts wurde getestet, aber alles lief gut..." @@ -5743,22 +5755,6 @@ msgstr "L2-Cache für Dummy-Elemente" msgid "List of names" msgstr "Namensliste" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Testanbieter" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Test- (und Dummy-) Service Provider" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Test Service mit Cache" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Testservice nur für Cache L1" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "vCloud Server-IP oder Hostname" @@ -5908,7 +5904,7 @@ msgstr "VMWare VCenter Platform Provider" msgid "Provides connection to Virtual Center Services" msgstr "Stellt eine Verbindung zu Virtual Center Services bereit" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Verbindungsparameter ok" @@ -6311,13 +6307,13 @@ msgstr "RDP-Protokoll unter Verwendung eines HTML5-Clients" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Tunnelserver" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6398,8 +6394,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "Wenn nicht leer, wird diese Domain immer als Anmeldeinformationen verwendet " "(als DOMAIN\\Benutzer verwendet)." @@ -6489,31 +6485,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Datenaustausch" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Umleitungsrichtlinie für Datei-Upload/Download" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Dateifreigabe deaktivieren" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Nur Download zulassen" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Nur Upload zulassen" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Aktivieren Sie die Dateifreigabe" @@ -6650,13 +6652,13 @@ msgstr "Ausfallsicher" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Ticket Gültigkeit" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6666,19 +6668,20 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Neues HTML-Fenster erzwingen" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "Wählen Sie das Windows-Verhalten für neue Verbindungen in HTML5 aus" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "" "Öffnen Sie jede Verbindung im selben Fenster, behalten Sie jedoch das UDS-" @@ -6686,14 +6689,14 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "" "Erzwingen Sie, dass jede Verbindung in einem neuen Fenster geöffnet wird." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "" "Überschreiben Sie das UDS-Fenster und ersetzen Sie es durch die Verbindung." @@ -6761,7 +6764,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "Der Server muss http oder https sein" @@ -6850,6 +6853,73 @@ msgstr "" "nur zulässig, wenn die Sicherheitsstufe (auf der Registerkarte Parameter) " "auf \"RDP\" gesetzt ist." +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5-SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "SSH-Protokoll mit HTML5-Client" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Benutzername für die Authentifizierung der SSH-Verbindung." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "SSH-Befehl" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Auf dem Remote-Server auszuführender Befehl. Wenn nicht angegeben, wird eine " +"interaktive Shell ausgeführt." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Dateifreigabe-Root" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Stammpfad für die Dateifreigabe. Wenn nicht angegeben, wird das " +"Stammverzeichnis verwendet." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "SSH-Server-Port" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Port des SSH-Servers." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "SSH-Hostschlüssel" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Hostschlüssel des SSH-Servers. Wenn nicht angegeben, erfolgt keine " +"Überprüfung der Hostidentität." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Server-Keep-Alive" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Zeit in Sekunden zwischen Keep-Alive-Meldungen, die an den Server gesendet " +"werden. Wenn nicht angegeben, werden keine Keep-Alive-Nachrichten gesendet." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC Experimental" @@ -7672,10 +7742,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "Der Authentifikator liefert keine Informationen" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} Tage" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} Std" diff --git a/server/src/uds/locale/de/LC_MESSAGES/djangojs.po b/server/src/uds/locale/de/LC_MESSAGES/djangojs.po index 734e1546a..c606f1b9a 100644 --- a/server/src/uds/locale/de/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/de/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2012 # Thorsten Latka , 2020 # Víctor Alonso , 2020,2022 @@ -14,10 +16,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Víctor Alonso , 2020,2022\n" -"Language-Team: German (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: German (http://app.transifex.com/openuds/openuds/language/" "de/)\n" "Language: de\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/en/LC_MESSAGES/django.po b/server/src/uds/locale/en/LC_MESSAGES/django.po index 799750a32..67672e463 100644 --- a/server/src/uds/locale/en/LC_MESSAGES/django.po +++ b/server/src/uds/locale/en/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2012 # Adolfo Gómez , 2012 # blafuente , 2014 @@ -15,10 +17,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Javier , 2014\n" -"Language-Team: English (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: English (http://app.transifex.com/openuds/openuds/language/" "en/)\n" "Language: en\n" "MIME-Version: 1.0\n" @@ -221,11 +223,11 @@ msgid "If active, authenticator will be visible for users" msgstr "If active, authenticator will be visible for users" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "None" @@ -246,10 +248,8 @@ msgid "Refine your query" msgstr "Refine your query" #: REST/methods/authenticators.py:233 -#, fuzzy -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." -msgstr "Label must contain only letters, numbers, \":\" and \"-\"" +msgstr "Label must contain only letters, numbers, or symbols: - : ." #: REST/methods/calendarrules.py:98 msgid "Rule name" @@ -683,10 +683,10 @@ msgstr "Available reports" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Group" @@ -727,7 +727,7 @@ msgid "Services Pools" msgstr "Services Pools" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -741,7 +741,7 @@ msgstr "Proxy for services behind a firewall" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1047,10 +1047,10 @@ msgstr "Staff member" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1068,8 +1068,8 @@ msgstr "Current users" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1079,7 +1079,8 @@ msgstr "Current users" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1220,8 +1221,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1306,39 +1307,47 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Timeout in seconds of connection to Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" -msgstr "" +msgstr "Verify SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " "be disabled" msgstr "" +"If checked, SSL verification will be enforced. If not, SSL verification will " +"be disabled" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Certificate" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#, fuzzy -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" -msgstr "Force SSL certificate verification" +msgstr "Certificate to use for SSL verification" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "MFA attribute" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Attribute from where to extract the MFA code" @@ -1351,108 +1360,110 @@ msgid "Authenticate against Active Directory" msgstr "Authenticate against Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "Must specify the username in the form USERNAME@DOMAIN.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" +"Could not connect to any AD server. Check your configuration (server, ssl " +"certificates, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Username not found" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Group not found" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Too many results, be more specific" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Domain seems to be incorrect, please check it" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "" "Server does not seem an Active Directory (it does not have user objects)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "" "Server does not seem an Active Directory (it does not have group objects)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "Connection params seem correct, test was succesfully executed" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Azure AD Authenticator" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Azure Active Directory Authenticator" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "Tenant ID" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Obtained from Azure Active Directory - Properties - Directory ID" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "Client ID" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Obtained from App created on Azure for UDS Enterprise" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Client Secret" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "Obtained from App created on Azure for UDS Enteprise - Keys" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "Callback" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "Callback url (Filled by UDS, fix this only if necesary!!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1461,51 +1472,51 @@ msgstr "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" "host:port, i.e. https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Enable School Data Sync Integration" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "" "Enable only if you have Microsoft School Data Sync in your Environnment." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Azure Logout method." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "UDS Redirection to Microsoft logout pages on UDS logout." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "Do not redirect" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Microsoft logout" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Office 365 logout" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "SAML Authenticator does not support white spaces on field NAME" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Authenticator exception:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Connection error: " -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "Connection params seems correct, test was succesfully executed" @@ -1532,30 +1543,30 @@ msgstr "Username with read privileges on the eDirectory" msgid "Timeout in seconds of connection to LDAP" msgstr "Timeout in seconds of connection to LDAP" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "eDirectory Authenticator" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "Authenticate against eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Edirectory connection error: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "Ldap search base is incorrect" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "Ldap user class seems to be incorrect (no user found by that class)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1563,11 +1574,11 @@ msgstr "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Expected group attribute " -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1633,11 +1644,11 @@ msgstr "Reverse DNS" msgid "If checked, the host will be reversed dns" msgstr "If checked, the host will be reversed dns" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Internal structures seems ok" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "All seems fine in the authenticator." @@ -1705,45 +1716,45 @@ msgstr "Ldap Server Host" msgid "Username with read privileges on the base selected" msgstr "Username with read privileges on the base selected" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Base" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "Common search base (used for \"users\" and \"groups\")" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Ldap info" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "User class" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Class for LDAP users (normally posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "User Id Attr" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Attribute that contains the user id" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "User Name Attr" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1751,11 +1762,11 @@ msgstr "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Group Name Attr" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1763,11 +1774,11 @@ msgstr "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Alt. class" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1775,15 +1786,15 @@ msgstr "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Regex LDAP Authenticator" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Regular Expressions LDAP authenticator" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1791,7 +1802,7 @@ msgstr "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1799,19 +1810,19 @@ msgstr "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "SAML Authenticator" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "SAML (v2.0) Authenticator" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Private key" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1819,11 +1830,11 @@ msgstr "" "Private key used for sign and encription, as generated in base 64 from " "openssl" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Certificates" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1831,79 +1842,79 @@ msgstr "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "IDP Metadata" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Metadata" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "Entity ID" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "ID of the SP. If left blank, this will be autogenerated from server URL" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "User name attrs" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Fields from where to extract user name" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Attributes" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Group name attrs" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Fields from where to extract the groups" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Real name attrs" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Fields from where to extract the real name" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Global logout" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "If set, logout from UDS will trigger SAML logout" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "ADFS compatibility" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "If set, enable lowercase url encoding so ADFS can work correctly" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "This kind of Authenticator does not support white spaces on field NAME" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1911,11 +1922,11 @@ msgstr "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Invalid server certificate. " -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1923,44 +1934,48 @@ msgstr "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Invalid private key. " -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "Certificate and private key do not match" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "Can't fetch url {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr " (obtained from URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML does not seem valid for IDP Metadata " -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "Can't access idp metadata" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Error validating SP metadata: " -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Error processing SLO: " -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Error processing SAML response: " -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "SAML response not authenticated" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "No attributes returned from IdP" @@ -1996,48 +2011,52 @@ msgstr "Ldap Server IP or Hostname" msgid "Ldap User" msgstr "Ldap User" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Attributes that contains the user name (list of comma separated values)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Group class" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Class for LDAP groups (normally poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Group Id Attr" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Attribute that contains the group id" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Group membership attr" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Attribute of the group that contains the users belonging to it" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:200 +#, fuzzy +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" msgstr "SimpleLDAP (DEPRECATED)" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "Simple LDAP authenticator (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:202 +#, fuzzy +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Sample Authenticator" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "Ldap group class seems to be incorrect (no group found by that class)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2045,7 +2064,7 @@ msgstr "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2053,7 +2072,7 @@ msgstr "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "Can't locate any group with the membership attribute specified" @@ -2131,7 +2150,7 @@ msgstr "The service is not accessible from this device" msgid "Base MFA" msgstr "Base MFA" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Invalid MFA code" @@ -2195,7 +2214,7 @@ msgstr "Credentials" msgid "Tunnel" msgstr "Tunnel" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "Can't contact LDAP server" @@ -2501,8 +2520,8 @@ msgstr "Subject of the email" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Config" @@ -2531,12 +2550,12 @@ msgid "Action for MFA response error" msgstr "Action for MFA response error" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Allow user login" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Deny user login" @@ -2565,9 +2584,8 @@ msgid "Text of the email. If empty, a default text will be used" msgstr "Text of the email. If empty, a default text will be used" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Allowed variables are: {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "Allowed variables are: " #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2661,19 +2679,19 @@ msgstr "Radius OTP connection error" msgid "Invalid OTP code" msgstr "Invalid OTP code" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS via HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "Simple SMS sending MFA using HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "URL pattern for SMS sending" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2687,16 +2705,16 @@ msgstr "" "* {username} - the username\n" "* {justUsername} - the username without @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "HTTP Server" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Ignore certificate errors" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2704,19 +2722,19 @@ msgstr "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "SMS sending method" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Method for sending SMS" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "Headers for SMS requests" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2732,11 +2750,11 @@ msgstr "" "* {justUsername} - the username without @....\n" "Headers are in the form of \"Header: Value\". (without the quotes)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Parameters for SMS POST/PUT sending" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2752,51 +2770,51 @@ msgstr "" "* {username} - the username\n" "* {justUsername} - the username without @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "SMS encoding" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Encoding for SMS" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "SMS authentication method" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "HTTP Basic Auth" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "HTTP Digest Auth" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "HTTP Authentication" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "SMS authentication user or token" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "User or token for SMS authentication" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "SMS authentication password" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Password for SMS authentication" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "SMS response OK regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2804,51 +2822,51 @@ msgstr "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "HTTP Response" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "SMS response error action" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Action for SMS response error" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "Allow user to login if its IP is in the networks list" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "Deny user to login if its IP is in the networks list" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "User without MFA policy" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "SMS networks" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Networks for SMS authentication" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "SMS sending failed" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "SMS response error" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "MFA Code" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "Check your phone. You will receive an SMS with the verification code" @@ -4216,7 +4234,7 @@ msgstr "Connection test successful" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "Connection failed. Check connection params" @@ -4237,8 +4255,7 @@ msgstr "Hyper Services based on templates and differential disks (LEGACY)" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "Number of desired machines to keep running waiting for a user" @@ -4415,11 +4432,11 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" #: services/HyperV_enterprise/service.py:59 msgid "HyperV Clone" @@ -4493,11 +4510,11 @@ msgstr "Select a project" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" #: services/NutanixPrism_enterprise/service.py:90 #: services/Nutanix_enterprise/service.py:76 @@ -4867,11 +4884,11 @@ msgstr "Base Template" msgid "Service base template" msgstr "Service base template" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Authentication error" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5551,7 +5568,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Methuselah is not alive!!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "Nothing tested, but all went fine.." @@ -5607,22 +5623,6 @@ msgstr "L2 cache for dummy elements" msgid "List of names" msgstr "List of names" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Test Provider" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Test (and dummy) service provider" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Test Service with cache" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Test service for cache L1 only" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "vCloud Server IP or Hostname" @@ -5768,7 +5768,7 @@ msgstr "VMWare VCenter Platform Provider" msgid "Provides connection to Virtual Center Services" msgstr "Provides connection to Virtual Center Services" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Connection params ok" @@ -6164,13 +6164,13 @@ msgstr "RDP protocol using HTML5 client" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Tunnel Server" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6245,11 +6245,11 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" #: transports/HTML5RDP/html5rdp.py:128 #: transports/HTML5RDS_enterprise/html5rds.py:121 @@ -6334,31 +6334,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "File Sharing" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "File upload/download redirection policy" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Disable file sharing" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Allow download only" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Allow upload only" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Enable file sharing" @@ -6495,13 +6501,13 @@ msgstr "Failsafe" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Ticket Validity" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6511,31 +6517,32 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Force new HTML Window" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "Select windows behavior for new connections on HTML5" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "Open every connection on the same window, but keeps UDS window." #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Force every connection to be opened on a new window." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Override UDS window and replace it with the connection." @@ -6600,7 +6607,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "The server must be http or https" @@ -6688,6 +6695,72 @@ msgstr "" "Empty credentials (on Credentials tab) is only allowed with Security level " "(on Parameters tab) set to \"RDP\"" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "SSH protocol using HTML5 client" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Username for SSH connection authentication." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "SSH Command" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "File Sharing Root" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Root path for file sharing. If not provided, root directory will be used." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "SSH Server port" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Port of the SSH server." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "SSH Host Key" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Server Keep Alive" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC Experimental" @@ -7470,10 +7543,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "Authenticator does not provide information" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} days" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} hours" diff --git a/server/src/uds/locale/en/LC_MESSAGES/djangojs.po b/server/src/uds/locale/en/LC_MESSAGES/djangojs.po index 543984b40..60e06ae41 100644 --- a/server/src/uds/locale/en/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/en/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # , 2014 # blafuente , 2014 # Javier , 2014 @@ -14,10 +16,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Javier , 2014\n" -"Language-Team: English (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: English (http://app.transifex.com/openuds/openuds/language/" "en/)\n" "Language: en\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/es/LC_MESSAGES/django.po b/server/src/uds/locale/es/LC_MESSAGES/django.po index 04ed0b1aa..b72bf0829 100644 --- a/server/src/uds/locale/es/LC_MESSAGES/django.po +++ b/server/src/uds/locale/es/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2012-2014 # Adolfo Gómez , 2014-2015,2017-2020,2022 # Adolfo Gómez , 2019 @@ -25,10 +27,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Víctor Alonso , 2020,2022\n" -"Language-Team: Spanish (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Spanish (http://app.transifex.com/openuds/openuds/language/" "es/)\n" "Language: es\n" "MIME-Version: 1.0\n" @@ -232,11 +234,11 @@ msgid "If active, authenticator will be visible for users" msgstr "Si está activo, el autenticador será visible para los usuarios" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Ninguno" @@ -257,7 +259,6 @@ msgid "Refine your query" msgstr "Depura tu consulta" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "La etiqueta debe contener solo letras, números o símbolos: - : ." @@ -696,10 +697,10 @@ msgstr "Informes disponibles" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Grupo" @@ -741,7 +742,7 @@ msgid "Services Pools" msgstr "Pools de Servicios" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -755,7 +756,7 @@ msgstr "Proxy para servicios detrás de un firewall" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1068,10 +1069,10 @@ msgstr "Miembro del personal" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1089,8 +1090,8 @@ msgstr "Usuarios actuales" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1100,7 +1101,8 @@ msgstr "Usuarios actuales" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1243,8 +1245,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1330,11 +1332,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Tiempo de espera en segundos de conexión a Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "Verificar SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1344,26 +1350,29 @@ msgstr "" "verificación SSL se desactivará" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Certificado" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "Certificado a utilizar para la verificación SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "Atributo MFA" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Atributo desde donde extraer el código MFA" @@ -1376,112 +1385,112 @@ msgid "Authenticate against Active Directory" msgstr "Autenticar contra Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "" "Debe especificar el nombre de usuario con este formato: " "NOMBREDEUSUARIO@DOMAIN.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" -"No se pudo conectar a ningún servidor AD. Comprueba tu configuración (" -"servidor, certificados ssl,...)." +"No se pudo conectar a ningún servidor AD. Comprueba tu configuración " +"(servidor, certificados ssl,...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Nombre de usuario no encontrado" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Grupo no encontrado" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Demasiados resultados, sea más específico" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Dominio parece incorrecto, por favor compruébelo" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "Servidor no parece un Active Directory (no tiene objetos de usuario)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "Servidor no parece un Active Directory (no tiene objetos de grupo)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "" "Los parámetros de conexión parecen correctos, la prueba fue ejecutada con " "éxito" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Autenticador Azure AD" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Autenticador Azure Active Directory" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "Tenant ID" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Obtenidos de Azure Active Directory - propiedades - ID de directorio" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "ID de cliente" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Obtenido de la aplicación creada en Azure para UDS Enterprise" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Clave de Cliente" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "Obtenido de la aplicación creada en Azure para UDS Enterprise - claves" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "URL de respuesta" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "Url de respuesta (rellenado por UDS, modificar sólo si es necesario!!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1490,52 +1499,52 @@ msgstr "" "Proxy utilizado para la conexión a azure para conexiones HTTPS (use " "PROTOCOL: // host:port, ejemplo: https://proxy:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Habilitar la integración de School Data Sync" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "Habilite solo si tiene Microsoft School Data Sync en su entorno." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Método de cierre de sesión de Azure." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "" "Redirección de UDS a páginas de cierre de sesión de Microsoft en el cierre " "de sesión de UDS." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "No redirigir" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Cierre de sesión de Microsoft" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Cierre de sesión de Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "El autenticador SAML no admite espacios en blanco en el campo NOMBRE" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Excepción de autenticador:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Error de conexión: " -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "" "Los parámetros de conexión parecen validos, el test fue ejecutado " @@ -1566,32 +1575,32 @@ msgstr "Nombre de usuario con privilegios de lectura en eDirectory" msgid "Timeout in seconds of connection to LDAP" msgstr "Tiempo de espera en segundos de conexión a LDAP" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "Autenticador eDirectory " -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "Autenticar contra eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Error de conexión con Edirectory: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "La base de búsqueda LDAP es incorrecta" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "La clase de usuario de LDAP parece ser incorrecta (ningún usuario encontrado " "por esa clase)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1599,11 +1608,11 @@ msgstr "" "El atributo de id de usuario Ldap parece ser incorrecto (ningún usuario " "encontrado por ese atributo)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Atributo de grupo previsto" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1671,11 +1680,11 @@ msgstr "DNS Inversa" msgid "If checked, the host will be reversed dns" msgstr "Si está seleccionado, el host será DNS Inversa" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Las estructuras internas parecen correctas" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Parace que todo funciona correctamente en el autenticador. " @@ -1745,45 +1754,45 @@ msgstr "Servidor host LDAP" msgid "Username with read privileges on the base selected" msgstr "Usuario con privilegios de lectura en la base seleccionada" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Base" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "Base común de búsqueda (utilizada para \"usuarios\" y \"grupos\")" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Información de LDAP" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Clase de usuario" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Clase para usuarios LDAP (normalmente posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Atr. de Id de usuario" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Atributo que contiene el id de usuario" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Atr. de nombre de usuario" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1791,11 +1800,11 @@ msgstr "" "Atributos que contienen el nombre de usuario o patrones de atributos (uno en " "cada línea)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Atr. de nombre de Grupo" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1803,11 +1812,11 @@ msgstr "" "Atributo que contiene el nombre de grupo o patrones de atributos (uno en " "cada línea)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Clase alt." -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1815,15 +1824,15 @@ msgstr "" "Clase de objetos LDAP que se verificará también para la recuperación de los " "grupos (normalmente vacío)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Autenticador Regex LDAP" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Expresiones regulares autenticador LDAP " -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1831,7 +1840,7 @@ msgstr "" "El atributo del id de usuario LDAP es probablemente incorrecto (no se puede " "encontrar ningún usuario con ambas condiciones)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1839,19 +1848,19 @@ msgstr "" "El atributo de id de grupo LDAP parece ser incorrecto (ningún grupo " "encontrado por ese atributo)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "Autenticador SAML " -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "Autenticador SAML (v2.0) " -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Clave privada" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1859,11 +1868,11 @@ msgstr "" "Clave privada utilizada para firmar y encriptar, la generada en la base 64 " "de OpenSSL" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Certificados" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1871,86 +1880,86 @@ msgstr "" "Clave pública utilizada para firma y encriptación (parte pública de la clave " "privada anterior), como se genera en base 64 usando openssl" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "Metadatos IDP " -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "Puede introducir aquí la URL o los metadatos IDP o simplemente los metadatos " "(xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Metadatos " -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "ID de la entidad" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "ID del SP. Si se deja en blanco, se generará automáticamente desde la " "dirección URL del servidor" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Atrs del nombre de usuario" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Campos de los que se extrae el nombre de usuario" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Atributos" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Atrs del nombre de grupo " -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Campos de los que extraer los grupos" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Atrs del nombre real " -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Campos de los que se extrae el nombre real" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Cierre de sesión global" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "" "Si se establece, el cierre de sesión de UDS activará el cierre de sesión de " "SAML" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "Compatibilidad con ADFS" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Si está configurado, habilite la codificación de URL en minúsculas para que " "ADFS pueda funcionar correctamente" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "" "Este tipo de autenticador no admite espacios en blanco en el campo NOMBRE" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1958,11 +1967,11 @@ msgstr "" "El certificado del servidor debe ser un PEM válido (Los certificados PEM " "empiezan con---BEGIN CERTIFICATE---)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Certificado de servidor no válido. " -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1970,44 +1979,48 @@ msgstr "" "La clave privada debe ser un PEM válido (Las claves privadas PEM empiezan " "con---BEGIN RSA PRIVATE KEY---" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Clave privada inválida. " -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "El certificado y la clave privada no coinciden" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "No se puede extraer url {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr " (Obtenido de la URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML no parece válido para metadatos IDP " -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "No se puede acceder a los metadatos IDP" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Error al validar los metadatos del SP:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Error al procesar SLO:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Error al procesar la respuesta SAML:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "Respuesta SAML no autenticada" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "Ningún atributo devuelto por IdP" @@ -2043,51 +2056,53 @@ msgstr "Ldap Server IP o nombre del host" msgid "Ldap User" msgstr "Usuario Ldap" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Atributos que contienen el nombre de usuario (lista de valores separados por " "comas)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Clase de grupo" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Clase para grupos LDAP (normalmente poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Atributo del ID de Grupo" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Atributo que contiene el ID del grupo" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Atributo de miembros de grupo" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Atributo del grupo que contiene los usuarios" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "SimpleLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "Autenticador Simple LDAP (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Autenticador LDAP simple" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "La clase de grupo LDAP parece ser incorrecta (no se ha encontrado ningún " "grupo en esa clase)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2095,7 +2110,7 @@ msgstr "" "La clase de usuario LDAP o el ID de usuario probablemente estén equivocados " "(no se puede encontrar ningún usuario con ambas condiciones)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2103,7 +2118,7 @@ msgstr "" "La clase de grupo de Ldap o el ID de grupo es probablemente incorrecto (no " "se puede encontrar ningún grupo con ambas condiciones)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "" "No se puede localizar ningún grupo al que pertenezca el atributo especificado" @@ -2184,7 +2199,7 @@ msgstr "El servicio no es accesible desde este dispositivo." msgid "Base MFA" msgstr "MFA base" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Código MFA no válido" @@ -2248,7 +2263,7 @@ msgstr "Credenciales" msgid "Tunnel" msgstr "Túnel" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "No existe conexión con el servidor LDAP" @@ -2560,8 +2575,8 @@ msgstr "Asunto del correo electrónico" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Configuración" @@ -2590,12 +2605,12 @@ msgid "Action for MFA response error" msgstr "Acción para el error de respuesta de MFA" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Permitir inicio de sesión de usuario" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Denegar inicio de sesión de usuario" @@ -2628,9 +2643,8 @@ msgstr "" "predeterminado" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Las variables permitidas son: {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "Las variables permitidas son:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2726,19 +2740,19 @@ msgstr "Error de conexión OTP de Radius" msgid "Invalid OTP code" msgstr "Código OTP no válido" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS a través de HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "Envío de SMS simple MFA usando HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "Patrón de URL para envío de SMS" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2751,16 +2765,16 @@ msgstr "" "{username} - el nombre de usuario * {justUsername} - el nombre de usuario " "sin @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "Servidor HTTP" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Ignorar errores de certificado" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2768,19 +2782,19 @@ msgstr "" "Si está marcado, se ignorará el certificado del servidor. Esto es útil si el " "servidor usa un certificado autofirmado." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "Método de envío de SMS" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Método para enviar SMS" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "Encabezados para solicitudes de SMS" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2792,14 +2806,14 @@ msgstr "" "Encabezados para solicitudes de SMS. Puede contener las siguientes " "variables: * {code} - el código para enviar * {phone/+phone} - el número de " "teléfono * {username} - el nombre de usuario * {justUsername} - el nombre de " -"usuario sin @.... Los encabezados están en la forma de \"Encabezado: Valor" -"\". (sin las comillas)" +"usuario sin @.... Los encabezados están en la forma de \"Encabezado: " +"Valor\". (sin las comillas)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Parámetros para el envío de SMS POST/PUT" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2813,51 +2827,51 @@ msgstr "" "teléfono * {username} - el nombre de usuario * {justUsername} - el nombre de " "usuario sin @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "Codificación de SMS" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Codificación para SMS" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "Método de autenticación por SMS" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "Autenticación básica HTTP" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "Autenticación de resumen HTTP" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "Autenticación HTTP" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "Usuario o token de autenticación por SMS" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "Usuario o token para autenticación por SMS" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "Contraseña de autenticación de SMS" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Contraseña para la autenticación por SMS" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "Respuesta de SMS OK expresión regular" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2865,53 +2879,53 @@ msgstr "" "Regex para respuesta SMS OK. Si está vacío, la respuesta se considera " "correcta si el código de estado es 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "Respuesta HTTP" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "Acción de error de respuesta de SMS" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Acción para el error de respuesta de SMS" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "" "Permitir que el usuario inicie sesión si su IP está en la lista de redes" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "" "Denegar al usuario el inicio de sesión si su IP está en la lista de redes" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "Politica para usuario sin MFA" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "Redes SMS" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Redes para la autenticación de SMS" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "Envío de SMS fallido" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "Error de respuesta de SMS" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "Código MFA" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "Revisa tu teléfono. Recibirás un SMS con el código de verificación" @@ -4294,7 +4308,7 @@ msgstr "Test de conexión realizado con éxito" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "La conexión ha fallado. Compruebe los parámetros de conexión" @@ -4315,8 +4329,7 @@ msgstr "Hyper Services basados en plantillas y discos diferenciales (LEGACY)" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "" "Número de máquinas que desea mantener en ejecución esperando a un usuario" @@ -4498,8 +4511,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Para los clusters, el usuario debe ser un nombre de usuario de dominio " "(usuario @ dominio o DOMINIO\\usuario)" @@ -4577,8 +4590,8 @@ msgstr "Seleccionar un proyecto" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Memoria asignada a las máquinas. (Valor cero significa \"mantener la memoria " "de la máquina original\")" @@ -4964,11 +4977,11 @@ msgstr "Plantilla base" msgid "Service base template" msgstr "Plantilla de servicio base" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Error de autenticación" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5674,7 +5687,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "¡¡¡Matusalén no está vivo!!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "No se ha comprobado nada, pero todo salió bien..." @@ -5730,22 +5742,6 @@ msgstr "Caché L2 para elementos simulados" msgid "List of names" msgstr "Lista de nombres" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Proveedor de prueba" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Proveedor de servicios de prueba (y simulado)" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Servicio de prueba con caché" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Servicio de prueba sólo para caché L1 " - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "IP o nombre de host del servidor vCloud" @@ -5891,7 +5887,7 @@ msgstr "Proveedor de plataforma VMware vCenter" msgid "Provides connection to Virtual Center Services" msgstr "Proporciona conexión a los Servicios del Centro Virtual" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Parámetros de conexión ok" @@ -6294,13 +6290,13 @@ msgstr "Protocolo RDP utilizando a cliente de HTML5" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Servidor de túnel" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6379,8 +6375,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "Si no está vacío, este dominio se utilizará siempre como parte de las " "credenciales (como DOMINIO\\usuario)" @@ -6469,31 +6465,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Compartición de archivos" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Política de redireccionamiento de carga/descarga de archivos" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Deshabilitar el uso compartido de archivos" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Permitir solo descarga" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Permitir solo la carga" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Habilitar el uso compartido de archivos" @@ -6630,13 +6632,13 @@ msgstr "A prueba de fallos" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Validez del ticket" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6647,20 +6649,21 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Forzar nueva ventana HTML" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "" "Seleccione el comportamiento de Windows para nuevas conexiones en HTML5" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "" "Abre todas las conexiones en la misma ventana, pero mantiene la ventana de " @@ -6668,13 +6671,13 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Fuerza que todas las conexiones se abran en una nueva ventana." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Anule la ventana UDS y reemplácela con la conexión." @@ -6739,7 +6742,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "El servidor debe ser http o https" @@ -6827,6 +6830,74 @@ msgstr "" "Credenciales de vacías (en la ficha de credenciales) está permitido sólo con " "nivel de seguridad (en ficha de parámetros) se establece en \"RDP\"" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "Protocolo SSH usando cliente HTML5" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Nombre de usuario para autenticación de conexión SSH." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "Comando SSH" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Comando a ejecutar en el servidor remoto. Si no se proporciona, se ejecutará " +"un shell interactivo." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Raíz para compartir archivos" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Ruta raíz para compartir archivos. Si no se proporciona, se utilizará el " +"directorio raíz." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "Puerto del servidor SSH" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Puerto del servidor SSH." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "Clave de host SSH" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Clave de host del servidor SSH. Si no se proporciona, no se realiza ninguna " +"verificación de la identidad del host." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Mantener vivo el servidor" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Tiempo en segundos entre los mensajes de mantenimiento de vida enviados al " +"servidor. Si no se proporciona, no se envían mensajes de mantenimiento de " +"vida." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC Experimental" @@ -7635,10 +7706,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "El Autenticador no proporciona información" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} días" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} horas" diff --git a/server/src/uds/locale/es/LC_MESSAGES/djangojs.po b/server/src/uds/locale/es/LC_MESSAGES/djangojs.po index 0348b06c0..087f516a5 100644 --- a/server/src/uds/locale/es/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/es/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # , 2014 # Adolfo Gómez , 2014-2015,2017-2020 # Adolfo Gómez , 2019 @@ -23,10 +25,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Víctor Alonso , 2020\n" -"Language-Team: Spanish (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Spanish (http://app.transifex.com/openuds/openuds/language/" "es/)\n" "Language: es\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/eu/LC_MESSAGES/django.po b/server/src/uds/locale/eu/LC_MESSAGES/django.po index ab46e64d0..35e0e92e3 100644 --- a/server/src/uds/locale/eu/LC_MESSAGES/django.po +++ b/server/src/uds/locale/eu/LC_MESSAGES/django.po @@ -6,16 +6,18 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2015 # Lanmedia Comunicaciones , 2016-2017,2020 msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Adolfo Gómez , 2015\n" -"Language-Team: Basque (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Basque (http://app.transifex.com/openuds/openuds/language/" "eu/)\n" "Language: eu\n" "MIME-Version: 1.0\n" @@ -218,11 +220,11 @@ msgid "If active, authenticator will be visible for users" msgstr "Aktibo badago, autentifikatzailea ikusgai egongo da erabiltzaileentzat" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Bat ere" @@ -243,7 +245,6 @@ msgid "Refine your query" msgstr "Zure kontsulta hobetu" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "Etiketak letrak, zenbakiak edo ikurrak soilik izan behar ditu: - : ." @@ -684,10 +685,10 @@ msgstr "Txosten erabilgarriak" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Taldea" @@ -729,7 +730,7 @@ msgid "Services Pools" msgstr "Pool-Zerbitzua" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -743,7 +744,7 @@ msgstr "Suebaki baten atzean zerbitzuen proxya" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1053,10 +1054,10 @@ msgstr "Langile Kidea" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1074,8 +1075,8 @@ msgstr "Momentuko erabiltzaileak" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1085,7 +1086,8 @@ msgstr "Momentuko erabiltzaileak" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1226,8 +1228,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1313,11 +1315,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Denbora-muga, Active Directory-en konexioaren segundotan" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "Egiaztatu SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1327,26 +1333,29 @@ msgstr "" "desgaitu egingo da" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Ziurtagiria" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "SSL egiaztatzeko erabili beharreko ziurtagiria" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "MFA atributua" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Atributua nondik atera MFA kodea" @@ -1359,113 +1368,113 @@ msgid "Authenticate against Active Directory" msgstr "Active Directory-aren kontra autentikatu" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "Erabiltzailea USERNAME@DOMAIN.DOM formatuan jarri behar da " -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" -"Ezin izan da AD zerbitzari batera konektatu. Egiaztatu zure konfigurazioa (" -"zerbitzaria, ssl ziurtagiriak, ...)." +"Ezin izan da AD zerbitzari batera konektatu. Egiaztatu zure konfigurazioa " +"(zerbitzaria, ssl ziurtagiriak, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Erabiltzaile ez da aurkitu" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Ez da aurkitu talderik" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "konkretuagoa izan, emaitz gehiegi daude eta." -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Domeinua txarto omen dago, egiazta ezazu." -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "" "Zerbitzaria ez omen da Active Directory Zerbitzari bat (ez du erabiltzaile " "objeturik)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "" "Zerbitzaria ez omen da Active Directory Zerbitzari bat (ez du talde " "objeturik)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "Konexio parametruak ondo daudela dirudi, proba ondo joan da." -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Azure AD autentikatzailea" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Azure Active Directory autentifikatzailea" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "Tenant IDa" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Azure Active Directory-tik lortutakoa - Properties - Directory ID" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "Bezeroaren IDa" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Azure-k sortutako App lortutako UDS Enterprise-ra" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Bezero sekretua" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "Azurek sortutako App lortutako UDS Enteprise - Teklak" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "atzeradei" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "" "Dei-erantzunaren URLa (UDS-k beteta, konpondu hau beharrezkoa bada bakarrik!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1474,51 +1483,51 @@ msgstr "" "HTTPS konexioetarako azure konexiorako erabiltzen den proxy-a (erabili " "PROTOCOL: // host: port, hau da, https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Gaitu ikastetxeko datuak sinkronizatzeko integrazioa" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "Gaitu Microsoft School Data Sync zure ingurunean baldin baduzu." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Azure Logout metodoa." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "" "UDS birbideratzea Microsoft-en saioa amaitzeko orrietara UDS saioa amaitzean." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "Ez birbideratu" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Microsoft-en saioa amaitzea" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Office 365 saioa amaitzea" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "SAML autetikatzaileak ez du NAME eremuan espaziorik onartzen" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Autentikatzaile salbuespena:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Konexioaren errorea:" -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "Konexioaren parametak zuzena dirudi, proba ondo exekutatu da" @@ -1546,32 +1555,32 @@ msgstr "eDirectory-an irakurtzeko pribilegioa daukan erabiltzailea" msgid "Timeout in seconds of connection to LDAP" msgstr "Denbora-muga LDAP konexio segundotan" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "eDirectory autentikatzailea" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "eDirectory-ren kontra autentikatu" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Zuzendaritza konexioaren errorea: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "LDAP bilaketa oinarria txarto dago" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "LDAP erabiltzaile mota txarto dagoela dirudi (ez da aurkitu mota horretako " "erabiltzailerik)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1579,11 +1588,11 @@ msgstr "" "Ldap erabiltzailearen id atributua okerra dela dirudi (atributuak aurkitu ez " "dituen erabiltzaileak)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Itxarondako talde atributua" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1651,11 +1660,11 @@ msgstr "Atzeranzko DNS-a" msgid "If checked, the host will be reversed dns" msgstr "Aktibo izanez gero, ostalariak atzeranzko dns-a izango du" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Barne egitura ondo dagoela dirudi" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Autentikatzailea ondo dagoela dirudi " @@ -1725,47 +1734,47 @@ msgstr "LDAP zerbitzaria" msgid "Username with read privileges on the base selected" msgstr "Aukeratutako oinarrian irakurtzeko pribilegioa daukan erabiltzailea" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Oinarria " -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "" "Bilaketa-oinarri arrunta (\"erabiltzaileentzat\" eta \"taldeentzat\" " "erabiltzen dena)" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Ldap informazioa" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Erabiltzaile mota" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "LDAP erabiltzailearen mota (posixAccount normalean)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Erabiltzaile ID atributua" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Erabiltzaile ID-a daukan atributua" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Erabiltzailea-izen atributua" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1773,11 +1782,11 @@ msgstr "" "Erabiltzaile izenaren atributuak edo atributu ereduak (lerro bakoitzeko bat) " "dituzten atributuak" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Talde-izen atributua" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1785,11 +1794,11 @@ msgstr "" "Taldearen izen atributuak edo atributu ereduak (lerro bakoitzeko bat) dituen " "atributua" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Alt. class" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1797,15 +1806,15 @@ msgstr "" "Taldeak berreskuratzeko hautatutako taldeentzako LDAP objektuentzako klase " "(normalean hutsik dago)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Regex LDAP autentikatzailea" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "LDAP autentikatzailearen adierazpen erregularrak" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1813,7 +1822,7 @@ msgstr "" "LDAP erabiltzairen ID atributua txarto dagoela dirudi (ez da aurkitu " "balditza biak betetzen dituen erabiltzailerik)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1821,19 +1830,19 @@ msgstr "" "LDAP taldearen ID atributua txarto dagoela dirudi (ez da talderik aurkitu " "atributu horrekin )" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "SAML autentikatzailea" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "SAML (v2.0) autentikatzailea" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Gako pribatua" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1841,11 +1850,11 @@ msgstr "" "Seinale eta enkripzioan erabilitako gako pribatua, oinarrian sortutako 64 " "ataka irekitik" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Ziurtagiriak" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1853,80 +1862,80 @@ msgstr "" "Sartu eta erregistratzeko (gako pribatuaren aurreko atal publikoa) " "erabilitako gako publikoa, oinarrian sortua 64 ataka irekitik" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "IDP Metadata" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "Hemen sar dezakezu URLa edo IDP metadatuak edo metadatu bera (xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Metadata" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "Erakunde IDa" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "SP IDa. Utzi hutsik badaude, zerbitzariaren URLa automatikoki sortuko da" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Erabiltzaile-izen atributuak" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Erabiltzaile izena ateratzeko eremuak" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Atributuak" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Talde-izen atributuak" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Taldeak ateratzeko eremuak" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Benetazko izenaren atributuak" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Izen erreala ateratzeko eremuetatik" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Amaitzeko saioa globala" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "Ezarrita badago, UDStik saioa egiteak SAML saioa amaituko du" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "ADFS bateragarritasuna" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Ezarrita badago, gaitu minuskulak url kodeketa, ADFS behar bezala funtziona " "dezan" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "Authenticator mota honek ez ditu zuriunerik onartzen IZENA eremuan" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1934,11 +1943,11 @@ msgstr "" "Zerbitzariaren ziurtagiria PEM baliagarria izan behar da (PEM ziurtagiriak " "hasi behar dira ----- ZIURTATUEI BEGIN -----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Baliogabeko zerbitzari ziiurtagiria" -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1946,44 +1955,48 @@ msgstr "" "Gako pribatua PEM baliagarria izan behar da (PEM gako pribatuak hasten dira " "----- BEGIN RSA PRIBATUA KEY -----" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Gako pribatua baliogabea da." -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "Ziurtagiria eta gako pribatua ez datoz bat" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "Ezin da URL {0} eskuratu: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr "(URLetik lortzen da)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML IDP Metadata ez da baliozkoa" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "Ezin dira idp metadatuak atzitu" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Errore bat gertatu da SP metadatuak baliozkotzean:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Errore bat gertatu da SLO prozesatzen:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Errore bat gertatu da SAML erantzuna prozesatzen:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "SAML erantzuna ez da autentifikatu" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "Ez da atributurik itzuli IdPtik" @@ -2019,50 +2032,52 @@ msgstr "Ldap zerbitzariaren IP edo ostalari izena" msgid "Ldap User" msgstr "Ldap erabiltzailea" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Erabiltzaile izena daukan atributua (komaz banandutako balio zerrenda) " -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Talde klasea" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "LDAP taldeentzako klasea (normalean poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Att Id talde" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Talde IDa duen atributua" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Talde bateko kide" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Bertako erabiltzaileak dituen taldearen atributua" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "SimpleLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "LDAP autentikatzaile sinplea (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "LDAP autentifikatzaile sinplea" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "Ldap talde klasea okerra dela dirudi (klase horren arabera aurkitu ez den " "taldea)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2070,7 +2085,7 @@ msgstr "" "Ldap erabiltzaile-klase edo erabiltzaile-identifikatzailea gaizki dago (ezin " "da bi baldintzarekin aurkitu)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2078,7 +2093,7 @@ msgstr "" "Ldap talde-klase edo talde-identifikatzailea gaizki dago (ezin da bi " "baldintzekin aurkitu)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "Ezin da edozein taldek aurkitu zehaztutako partaidetza atributuarekin" @@ -2156,7 +2171,7 @@ msgstr "Zerbitzua ez dago gailutik eskura" msgid "Base MFA" msgstr "Oinarrizko MFA" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "MFA kodea baliogabea" @@ -2220,7 +2235,7 @@ msgstr "Egiaztagiria" msgid "Tunnel" msgstr "Tunela" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "Ezin da LDAP zerbitzariarekin kontaktatu" @@ -2529,8 +2544,8 @@ msgstr "Posta elektronikoaren gaia" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Konfig" @@ -2559,12 +2574,12 @@ msgid "Action for MFA response error" msgstr "MFA erantzunaren errorearen ekintza" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Baimendu erabiltzaileari saioa hasteko" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Ukatu erabiltzailearen saioa" @@ -2595,9 +2610,8 @@ msgstr "" "erabiliko da" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Onartutako aldagaiak hauek dira: {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "Onartutako aldagaiak hauek dira:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2693,19 +2707,19 @@ msgstr "Radius OTP konexio-errorea" msgid "Invalid OTP code" msgstr "OTP kodea baliogabea" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS HTTP bidez" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "SMS sinpleak MFA bidaltzen ditu HTTP/HTTPS erabiliz" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "SMSak bidaltzeko URL eredua" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2717,16 +2731,16 @@ msgstr "" "beharreko kodea * {telefonoa/+telefonoa} - telefono-zenbakia * {erabiltzaile-" "izena} - erabiltzaile-izena * {justUsername} - erabiltzaile-izena @ gabe...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "HTTP zerbitzaria" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Ez ikusi ziurtagiri-erroreei" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2734,19 +2748,19 @@ msgstr "" "Hautatzen bada, zerbitzariaren ziurtagiria ez ikusi egingo da. Hau " "erabilgarria da zerbitzariak berez sinatutako ziurtagiria erabiltzen badu." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "SMSak bidaltzeko metodoa" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "SMSak bidaltzeko metodoa" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "SMS eskaeren goiburuak" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2760,11 +2774,11 @@ msgstr "" "izena} - erabiltzaile-izena * {justUsername} - erabiltzaile-izena @ gabe.... " "Goiburuak sartuta daude \"Goiburua: balioa\" forma. (komatxorik gabe)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "SMS POST/PUT bidaltzeko parametroak" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2778,51 +2792,51 @@ msgstr "" "zenbakia * {erabiltzaile-izena} - erabiltzaile-izena * {justUsername} - " "erabiltzaile-izena @ gabe...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "SMS kodeketa" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "SMSetarako kodeketa" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "SMS autentifikazio metodoa" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "HTTP oinarrizko autentifikazioa" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "HTTP Digest Auth" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "HTTP autentifikazioa" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "SMS autentifikazioaren erabiltzailea edo tokena" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "SMS autentifikaziorako erabiltzailea edo tokena" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "SMS autentifikazio pasahitza" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "SMS autentifikaziorako pasahitza" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "SMS erantzuna OK regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2830,51 +2844,51 @@ msgstr "" "SMS erantzunerako erregulazioa Ados. Hutsik badago, erantzuna ontzat joko da " "egoera kodea 200 bada." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "HTTP Erantzuna" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "SMS erantzunaren errore ekintza" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "SMSen erantzunaren errorearen ekintza" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "Baimendu erabiltzaileari saioa hasteko bere IP sareen zerrendan badago" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "Ukatu erabiltzaileari saioa hasteko bere IP sareen zerrendan badago" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "MFA politikarik gabeko erabiltzailea" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "SMS sareak" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "SMS autentifikaziorako sareak" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "Ezin izan da SMS bidaltzean" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "SMS erantzunaren errorea" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "MFA kodea" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "Egiaztatu zure telefonoa. SMS bat jasoko duzu egiaztapen-kodearekin" @@ -4259,7 +4273,7 @@ msgstr "Konexioaren proba arrakastatsua" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "Konexioa huts egin du. Egiaztatu konexioaren parametak" @@ -4282,8 +4296,7 @@ msgstr "" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "" "Nahi duzun makina kopurua erabiltzaile baten zain exekutatzen jarraitzeko" @@ -4461,8 +4474,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Klusterrentzako, erabiltzaile izena domeinuaren erabiltzaile izena izan " "behar da (user @ domain edo DOMAIN \\ user)" @@ -4539,8 +4552,8 @@ msgstr "Aukeratu proiektu bat" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Makinak esleitutako memoria. (Zero balioa esan nahi du \"mantendu jatorrizko " "makina memoria\")" @@ -4921,11 +4934,11 @@ msgstr "Base template" msgid "Service base template" msgstr "Zerbitzuaren oinarrizko txantiloia" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Autentikazio errorea" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5630,7 +5643,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Methuselah ez da bizirik! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "Ezer ez da probatu, baina dena ondo joan da ..." @@ -5686,22 +5698,6 @@ msgstr "L2 cachea elementu dummyentzat" msgid "List of names" msgstr "Izen zerrenda" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Proba hornitzailea" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Proba (eta dummy) zerbitzu hornitzailea" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Proba Zerbitzua cachearekin" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Probako c1 L1 zerbitzurako bakarrik" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "vCloud zerbitzariaren IP edo ostalari izena" @@ -5848,7 +5844,7 @@ msgstr "VMWare VCenter Plataforma hornitzailea" msgid "Provides connection to Virtual Center Services" msgstr "Virtual Center zerbitzuetarako konexioa eskaintzen du" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Konexio parametroak ondo daude" @@ -6249,13 +6245,13 @@ msgstr "RDP protokoloa HTML5 bezeroa erabiliz" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Tunel zerbitzaria" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6331,8 +6327,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "Ez bada hutsik, domeinu hau beti kredentzial gisa erabiliko da (DOMAIN \\ " "user gisa erabiltzen da)" @@ -6422,31 +6418,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Fitxategiak partekatzea" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Fitxategiak kargatzeko / deskargatzeko birbideratze politika" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Desgaitu fitxategiak partekatzea" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Baimendu deskargatzea soilik" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Baimendu kargatzea soilik" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Gaitu fitxategiak partekatzea" @@ -6583,13 +6585,13 @@ msgstr "hutsegiteen aurkako" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Txartelaren balioa" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6599,31 +6601,32 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "HTML leiho berria behartu" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "Aukeratu leihoen portaera HTML5 konexio berrietarako" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "Ireki leiho berean konexio guztiak, baina UDS leihoa mantentzen du." #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Behartu konexio guztiak leiho berri batean irekitzera." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Gainidatzi UDS leihoa eta ordeztu konexioarekin." @@ -6688,7 +6691,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "Zerbitzariak http edo https izan behar du" @@ -6776,6 +6779,73 @@ msgstr "" "Kredentzial hutsak (kredentzialak fitxan) bakarrik onartzen dira Segurtasun " "maila (Parametroen fitxan) \"RDP\" aukeran." +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "SSH protokoloa HTML5 bezeroa erabiliz" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "SSH konexioaren autentifikaziorako erabiltzaile-izena." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "SSH komandoa" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Urruneko zerbitzarian exekutatzeko komandoa. Ematen ez bada, shell " +"interaktibo bat exekutatuko da." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Fitxategiak partekatzeko erroa" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Fitxategiak partekatzeko erro bidea. Ematen ez bada, root direktorioa " +"erabiliko da." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "SSH zerbitzariaren ataka" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "SSH zerbitzariaren ataka." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "SSH ostalariaren gakoa" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"SSH zerbitzariaren ostalariaren gakoa. Ematen ez bada, ez da ostalariaren " +"identitatea egiaztatzen." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Zerbitzaria Keep Alive" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Zerbitzariari bidalitako mezuak bizirik mantentzeko arteko denbora " +"segundotan. Ematen ez bada, ez da mezurik bidaliko." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC esperimentala" @@ -7578,10 +7648,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "Autentikatzaileak ez du informaziorik eman." -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} egun" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} ordu" diff --git a/server/src/uds/locale/eu/LC_MESSAGES/djangojs.po b/server/src/uds/locale/eu/LC_MESSAGES/djangojs.po index c314a4faf..ecadaf791 100644 --- a/server/src/uds/locale/eu/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/eu/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2015 # Lanmedia Comunicaciones , 2016-2017,2020 # Naroa Uriarte , 2017 @@ -16,10 +18,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Víctor Alonso , 2020\n" -"Language-Team: Basque (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Basque (http://app.transifex.com/openuds/openuds/language/" "eu/)\n" "Language: eu\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/fr/LC_MESSAGES/django.po b/server/src/uds/locale/fr/LC_MESSAGES/django.po index 6d905d8f2..a86cc234a 100644 --- a/server/src/uds/locale/fr/LC_MESSAGES/django.po +++ b/server/src/uds/locale/fr/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Abdel Baaddi , 2016,2018 # Adolfo Gómez , 2012 # Andrés Schumann , 2023 @@ -14,10 +16,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Javier Gomez , 2023\n" -"Language-Team: French (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: French (http://app.transifex.com/openuds/openuds/language/" "fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" @@ -222,11 +224,11 @@ msgstr "" "S'il est actif, l'authentificateur sera visible pour les utilisateurs" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Aucun" @@ -247,7 +249,6 @@ msgid "Refine your query" msgstr "Affinez votre requête" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "" "L'étiquette ne doit contenir que des lettres, des chiffres ou des " @@ -691,10 +692,10 @@ msgstr "Rapports disponibles" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Groupe" @@ -736,7 +737,7 @@ msgid "Services Pools" msgstr "Pools de services" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -750,7 +751,7 @@ msgstr "Proxy pour les services derrière un pare-feu" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1068,10 +1069,10 @@ msgstr "Membre du personnel" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1089,8 +1090,8 @@ msgstr "Utilisateurs actuels" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1100,7 +1101,8 @@ msgstr "Utilisateurs actuels" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1244,8 +1246,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1294,9 +1296,9 @@ msgid "" "If not empty, the compatibility is \"Windows 2000 and later\" and the user " "does not use UPN (user@domain) as login, this domain will be appended." msgstr "" -"S'il n'est pas vide, la compatibilité est \"Windows 2000 et supérieur" -"\" et l'utilisateur n'utilise pas UPN (user@domain) comme login, ce " -"domaine sera ajouté." +"S'il n'est pas vide, la compatibilité est \"Windows 2000 et " +"supérieur\" et l'utilisateur n'utilise pas UPN (user@domain) comme " +"login, ce domaine sera ajouté." #: auths/ActiveDirectory_enterprise/authenticator.py:111 msgid "Backup server" @@ -1331,11 +1333,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Délai d'attente en secondes de connexion à Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "Vérifier SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1345,26 +1351,29 @@ msgstr "" "sera désactivée" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Certificat" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "Certificat à utiliser pour la vérification SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "Attribut MFA" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Attribut d'où extraire le code MFA" @@ -1377,114 +1386,114 @@ msgid "Authenticate against Active Directory" msgstr "S'authentifier sur Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "Doit spécifier le nom d'utilisateur sous la forme USERNAME@DOMAIN.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" -"Impossible de se connecter à un serveur AD. Vérifiez votre configuration (" -"serveur, certificats ssl, ...)." +"Impossible de se connecter à un serveur AD. Vérifiez votre configuration " +"(serveur, certificats ssl, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Nom d'utilisateur introuvable" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Groupe introuvable" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Trop de résultats, être plus spécifique" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Domaine semble être incorrect, veuillez bien consulter le" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "" "Serveur ne semble pas un serveur Active Directory (il n'a pas d'objets " "utilisateur)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "" "Serveur ne semble pas un serveur Active Directory (il n'a pas d'objets de " "groupe)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "" "Connexion params semblent correctes, le test a été correctement exécutée" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Azur AD authentificateur" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Authentificateur Azur Active Directory" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "ID du locataire" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Obtenu à partir d’Azur Active Directory - propriétés - annuaire ID" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "ID du client" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Obtenu à partir de App créé sur Azure pour les entreprises de l’UDS" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Secret de client" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "Obtenu à partir de App créé sur Azure pour UDS Enteprise - clés" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "Rappel" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "" "Url de callback (rempli par UDS, résoudre ce que si c’est nécessaire !)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1493,56 +1502,56 @@ msgstr "" "Proxy utilisé pour la connexion à azure pour les connexions HTTPS (utilisez " "PROTOCOL: // hôte: port, c'est-à-dire https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Activer l'intégration de la synchronisation des données scolaires" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "" "Activez uniquement si vous avez Microsoft School Data Sync dans votre " "environnement." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Méthode de déconnexion Azure." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "" "Redirection UDS vers les pages de déconnexion Microsoft lors de la " "déconnexion UDS." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "Ne pas rediriger" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Déconnexion Microsoft" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Déconnexion Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "" "SAML Authenticator ne prend pas en charge les espaces blancs sur le champ " "NAME" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Exception d’authentificateur :" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Erreur de connexion : " -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "" "Params de connexion semble correcte, le test a été correctement exécuté" @@ -1572,32 +1581,32 @@ msgstr "Nom d'utilisateur avec des privilèges de lecture sur l'eDirectory" msgid "Timeout in seconds of connection to LDAP" msgstr "Délai en secondes de la connexion à LDAP" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "eDirectory authentificateur" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "S'authentifier auprès d'eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Erreur de connexion Edirectory: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "Base de recherche LDAP est incorrect" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "Classe d'utilisateur LDAP semble incorrect (aucun utilisateur trouvé par " "cette classe)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1605,11 +1614,11 @@ msgstr "" "Attribut d'id utilisateur LDAP semble incorrect (aucun utilisateur trouvée " "par qui attribut)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Attribut groupe attendue " -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1679,11 +1688,11 @@ msgstr "Reverse-DNS" msgid "If checked, the host will be reversed dns" msgstr "S'il est activé, l'hôte sera DNS inversée" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Les structures internes semblent ok" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Tout semble ok dans l'authentificateur." @@ -1756,46 +1765,46 @@ msgid "Username with read privileges on the base selected" msgstr "" "Nom d'utilisateur avec des privilèges de lecture sur la base sélectionnée" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Base" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "" "Base de recherche commune (utilisée pour les « utilisateurs » et « groupes »)" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Info de LDAP" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Classe utilisateur" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Classe pour les utilisateurs de LDAP (normalement posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Utilisateur Id Attr" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Attribut qui contient l'id utilisateur" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Utilisateur nom Attr" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1803,11 +1812,11 @@ msgstr "" "Attributs contenant les attributs de nom d'utilisateur ou leurs modèles " "(un pour chaque ligne)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Groupe nom Attr" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1815,11 +1824,11 @@ msgstr "" "Attribut contenant les attributs de nom de groupe ou leurs modèles (un pour " "chaque ligne)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Classe d’Alt." -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1827,15 +1836,15 @@ msgstr "" "Classe d’objets LDAP qui sera également vérifiée pour la récupération des " "groupes (normalement vide)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Authentificateur LDAP Regex" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Authentificateur de LDAP d'Expressions régulière" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1843,7 +1852,7 @@ msgstr "" "LDAP user id attr est probablement faux (ne peut pas trouver n'importe quel " "utilisateur avec les deux conditions)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1851,19 +1860,19 @@ msgstr "" "Attribut d'id groupe LDAP semble incorrect (aucun groupe trouvée par cet " "attribut)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr " Authentificateur SAML" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "SAML (v2.0) authentificateur" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Clé privée" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1871,11 +1880,11 @@ msgstr "" "Clé privée utilisée pour signature et cryptage, tel qu'elle est générée en " "base 64 de OpenSSL" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Certificats" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1883,85 +1892,85 @@ msgstr "" "Clé publique utilisée pour signature et cryptage (partie publique de la clé " "privé précédente), tel qu'elle est générée en base 64 d’openssl" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "Métadonnées de l'IDP" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "Ici, vous pouvez entrer le URL ou les métadonnées d'IDP ou les métadonnées " "eux-même (xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Métadonnées" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "ID de l'entité" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "ID de la SP. Si laissé vide, ce sera généré automatiquement a partir des URL " "du serveur" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Utilisateur nom attrs" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Champs d'où extraire le nom d'utilisateur" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Attributs" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Groupe nom attrs" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Champs d'où extraire les groupes" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Vrai nom attrs" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Champs d'où extraire le nom réel" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Déconnexion globale" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "Si défini, la déconnexion d'UDS déclenchera la déconnexion SAML" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "Compatibilité ADFS" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Si défini, activez l'encodage d'URL en minuscules pour qu'ADFS " "puisse fonctionner correctement" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "" "Ce type d'authentificateur ne prend pas en charge les espaces blancs sur " "le champ NAME" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1969,11 +1978,11 @@ msgstr "" "Certificat de serveur doit être un PEM valide (certificats PEM commencent " "par---BEGIN CERTIFICATE---)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Certificat de serveur non valide. " -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1981,44 +1990,48 @@ msgstr "" "Clé privée doit être un PEM valide (clés privées PEM commencent par---BEGIN " "RSA PRIVATE KEY---" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Clé privée non valide. " -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "Le certificat et la clé privée ne correspondent pas" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "Impossible d'extraire url {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr " (obtenu à partir d'URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML ne semble pas etre valide pour les métadonnées de l'IDP " -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "Ne peut pas accéder aux métadonnées de l'idp" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Erreur lors de la validation des métadonnées SP :" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Erreur lors du traitement du SLO :" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Erreur lors du traitement de la réponse SAML :" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "Réponse SAML non authentifiée" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "Aucun attribut renvoyé par l'IdP" @@ -2054,51 +2067,53 @@ msgstr "Adresse IP ou nom d'hôte du serveur LDAP" msgid "Ldap User" msgstr "Utilisateur LDAP" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Attributs qui contient le nom d'utilisateur (liste de valeurs séparées par " "des virgules)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Classe de groupe" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Classe pour les groupes LDAP (normalement poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Identifiant de groupe" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Attribut contenant l'id du groupe" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Appartenance à un groupe" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Attribut du groupe contenant les utilisateurs qui lui appartiennent" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (obsolète)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "SimpleLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "Authentificateur LDAP simple (obsolète)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Authentificateur LDAP simple" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "La classe du groupe LDAP semble être incorrecte (aucun groupe trouvé par " "cette classe)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2106,7 +2121,7 @@ msgstr "" "La classe d'utilisateurs LDAP ou l'ID utilisateur attr est " "probablement incorrect (aucun utilisateur ne remplissant les deux conditions)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2114,7 +2129,7 @@ msgstr "" "La classe du groupe LDAP ou l'id du groupe attr est probablement faux " "(impossible de trouver un groupe avec les deux conditions)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "" "Impossible de localiser un groupe avec l'attribut d'appartenance " @@ -2198,7 +2213,7 @@ msgstr "Le service n'est pas accessible depuis cet appareil" msgid "Base MFA" msgstr "AMF de base" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Code MFA invalide" @@ -2262,7 +2277,7 @@ msgstr "Informations d'identification" msgid "Tunnel" msgstr "Tunnel" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "Impossible de contacter le serveur LDAP" @@ -2573,8 +2588,8 @@ msgstr "Objet du mail" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Configuration" @@ -2603,12 +2618,12 @@ msgid "Action for MFA response error" msgstr "Action en cas d'erreur de réponse MFA" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Autoriser la connexion de l'utilisateur" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Refuser la connexion de l'utilisateur" @@ -2641,9 +2656,8 @@ msgid "Text of the email. If empty, a default text will be used" msgstr "Texte de l'e-mail. Si vide, un texte par défaut sera utilisé" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Les variables autorisées sont : {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "Les variables autorisées sont :" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2738,19 +2752,19 @@ msgstr "Erreur de connexion Radius OTP" msgid "Invalid OTP code" msgstr "Code OTP invalide" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS via HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "Envoi de SMS simple MFA via HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "Modèle d'URL pour l'envoi de SMS" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2763,16 +2777,16 @@ msgstr "" "téléphone * {username} - le nom d'utilisateur * {justUsername} - le nom " "d'utilisateur sans @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "Serveur HTTP" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Ignorer les erreurs de certificat" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2780,19 +2794,19 @@ msgstr "" "Si coché, le certificat du serveur sera ignoré. Ceci est utile si le serveur " "utilise un certificat auto-signé." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "Méthode d'envoi de SMS" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Méthode d'envoi de SMS" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "En-têtes pour les demandes SMS" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2807,11 +2821,11 @@ msgstr "" "utilisateur sans @.... Les en-têtes sont dans sous la forme \"En-tête : " "valeur\". (sans les guillemets)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Paramètres pour l'envoi de SMS POST/PUT" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2825,51 +2839,51 @@ msgstr "" "numéro de téléphone * {username} - le nom d'utilisateur * {justUsername} " "- le nom d'utilisateur sans @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "Encodage SMS" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Encodage pour SMS" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "Méthode d'authentification par SMS" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "Authentification de base HTTP" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "Authentification de résumé HTTP" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "Authentification HTTP" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "Utilisateur ou jeton d'authentification par SMS" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "Utilisateur ou jeton pour l'authentification par SMS" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "Mot de passe d'authentification SMS" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Mot de passe pour l'authentification par SMS" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "Réponse SMS OK regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2877,55 +2891,55 @@ msgstr "" "Regex pour la réponse SMS OK. S'il est vide, la réponse est considérée " "comme OK si le code d'état est 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "Réponse HTTP" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "Action d'erreur de réponse SMS" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Action en cas d'erreur de réponse SMS" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "" "Autoriser l'utilisateur à se connecter si son IP figure dans la liste " "des réseaux" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "" "Refuser à l'utilisateur de se connecter si son adresse IP figure dans la " "liste des réseaux" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "Utilisateur sans stratégie MFA" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "Réseaux SMS" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Réseaux pour l'authentification par SMS" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "L'envoi du SMS a échoué" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "Erreur de réponse SMS" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "Code MFA" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "" "Regarde ton Téléphone. Vous recevrez un SMS avec le code de vérification" @@ -4324,7 +4338,7 @@ msgstr "Test de connexion réussie" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "La connexion a échoué. Vérifiez les paramètres de connexion" @@ -4346,8 +4360,7 @@ msgstr "" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "" "Nombre de machines souhaitées pour continuer à s'executer en attente d'un " @@ -4531,8 +4544,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Pour les clusters, le nom d'utilisateur doit être un nom d'" "utilisateur de domaine (utilisateur @ domaine ou DOMAINE \\ utilisateur" @@ -4611,8 +4624,8 @@ msgstr "Sélectionnez un projet" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Mémoire attribuée aux machines. (Valeur zéro signifie « garder la mémoire de " "la machine originale\")" @@ -5005,11 +5018,11 @@ msgstr "Modèle de base" msgid "Service base template" msgstr "Modèle de base de service" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Erreur d'authentification" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5726,7 +5739,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Mathusalem n'est pas en vie!!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "Rien testé, mais tout s'est bien passé." @@ -5782,22 +5794,6 @@ msgstr "Mémoire cache L2 de faux éléments" msgid "List of names" msgstr "Liste des noms" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Fournisseur de test" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Fournisseur de services de test (et factice)" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Service de test avec cache" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Service de test pour le cache L1 uniquement" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "vCloud serveur IP ou nom d’hôte" @@ -5945,7 +5941,7 @@ msgstr "VMWare VCenter Platform Provider" msgid "Provides connection to Virtual Center Services" msgstr "Fournit la connexion à des Services de centre virtuel" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Connexion params ok" @@ -6348,13 +6344,13 @@ msgstr "Protocole RDP en utilisant le client HTML5 " #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Serveur de tunnel" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6434,8 +6430,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "S'il n'est pas vide, ce domaine sera toujours utilisé comme identifiant " "(utilisé comme DOMAIN \\ user)" @@ -6525,31 +6521,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Partage de fichiers" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Politique de redirection de chargement/téléchargement de fichiers" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Désactiver le partage de fichiers" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Autoriser le téléchargement uniquement" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Autoriser le téléchargement uniquement" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Activer le partage de fichiers" @@ -6686,13 +6688,13 @@ msgstr "Failsafe" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Validité du ticket" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6702,13 +6704,14 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Forcer une nouvelle fenêtre HTML" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "" "Sélectionnez le comportement de Windows pour les nouvelles connexions sur " @@ -6716,20 +6719,20 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "" "Ouvrez chaque connexion sur la même fenêtre, mais conserve la fenêtre UDS." #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Forcer l'ouverture de chaque connexion dans une nouvelle fenêtre." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Remplacez la fenêtre UDS et remplacez-la par la connexion." @@ -6795,7 +6798,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "Le serveur doit être http ou https" @@ -6884,6 +6887,73 @@ msgstr "" "d'identification) ne sont autorisées qu'avec le niveau de sécurité (onglet " "Paramètres) défini sur \"RDP\"" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "Protocole SSH utilisant le client HTML5" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Nom d'utilisateur pour l'authentification de la connexion SSH." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "Commande SSH" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Commande à exécuter sur le serveur distant. S'il n'est pas fourni, " +"un shell interactif sera exécuté." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Racine de partage de fichiers" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Chemin racine pour le partage de fichiers. S'il n'est pas fourni, le " +"répertoire racine sera utilisé." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "Port du serveur SSH" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Port du serveur SSH." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "Clé d'hôte SSH" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Clé d'hôte du serveur SSH. S'il n'est pas fourni, aucune " +"vérification de l'identité de l'hôte n'est effectuée." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Serveur Keep Alive" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Temps en secondes entre les messages keep alive envoyés au serveur. S'il " +"n'est pas fourni, aucun message persistant n'est envoyé." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "Expérimental HTML5 VNC" @@ -7692,10 +7762,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "Authentificateur ne fournit pas d'informations" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} journées" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} heures" diff --git a/server/src/uds/locale/fr/LC_MESSAGES/djangojs.po b/server/src/uds/locale/fr/LC_MESSAGES/djangojs.po index a722ae438..d594296b2 100644 --- a/server/src/uds/locale/fr/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/fr/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Abdel Baaddi , 2016,2018 # Adolfo Gómez , 2012 # Andrés Schumann , 2023 @@ -16,10 +18,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Víctor Alonso , 2020\n" -"Language-Team: French (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: French (http://app.transifex.com/openuds/openuds/language/" "fr/)\n" "Language: fr\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/it/LC_MESSAGES/django.po b/server/src/uds/locale/it/LC_MESSAGES/django.po index 534dc0426..6d0ba9274 100644 --- a/server/src/uds/locale/it/LC_MESSAGES/django.po +++ b/server/src/uds/locale/it/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2019 # Javier Gomez , 2023 # Massimo Vignone, 2020 @@ -18,10 +20,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Víctor Alonso , 2019\n" -"Language-Team: Italian (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Italian (http://app.transifex.com/openuds/openuds/language/" "it/)\n" "Language: it\n" "MIME-Version: 1.0\n" @@ -225,11 +227,11 @@ msgid "If active, authenticator will be visible for users" msgstr "Se attivo, l'autenticatore sarà visibile agli utenti" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Nessuna" @@ -250,7 +252,6 @@ msgid "Refine your query" msgstr "Affina la tua richiesta" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "L'etichetta deve contenere solo lettere, numeri o simboli: - : ." @@ -690,10 +691,10 @@ msgstr "Rapporti disponibili" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Gruppo" @@ -735,7 +736,7 @@ msgid "Services Pools" msgstr "Pool di servizi" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -749,7 +750,7 @@ msgstr "Proxy per servizi dietro un firewall" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -819,9 +820,9 @@ msgid "" "careful with this, because the user will have the \"power\" to delete it's " "own service" msgstr "" -"Se attivo, l'utente sarà autorizzato a rimuovere il servizio \"manualmente" -"\". Fai attenzione, perché l'utente avrà il \"potere\" di cancellare il " -"proprio servizio" +"Se attivo, l'utente sarà autorizzato a rimuovere il servizio " +"\"manualmente\". Fai attenzione, perché l'utente avrà il \"potere\" di " +"cancellare il proprio servizio" #: REST/methods/services_pools.py:364 msgid "Allow reset by users" @@ -1061,10 +1062,10 @@ msgstr "Membro dello staff" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1082,8 +1083,8 @@ msgstr "Utenti attuali" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1093,7 +1094,8 @@ msgstr "Utenti attuali" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1238,8 +1240,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1325,11 +1327,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Timeout in secondi per la connessione ad Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "Verifica SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1339,26 +1345,29 @@ msgstr "" "verifica SSL sarà disabilitata" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Certificato" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "Certificato da utilizzare per la verifica SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "Attributo MFA" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Attributo da cui estrarre il codice MFA" @@ -1371,111 +1380,111 @@ msgid "Authenticate against Active Directory" msgstr "Autentica con Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "" "È necessario specificare il nome utente nel formato USERNAME@DOMAIN.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" -"Impossibile connettersi a nessun server AD. Controlla la tua configurazione (" -"server, certificati ssl, ...)." +"Impossibile connettersi a nessun server AD. Controlla la tua configurazione " +"(server, certificati ssl, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Nome utente non trovato" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Gruppo non trovato" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Troppi risultati, essere più specifici" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Il dominio sembra essere errato, per favore controllalo" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "Il server non sembra un Active Directory (non ha oggetti utente)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "Il server non sembra un Active Directory (non ha oggetti di gruppo)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "" "I parametri di connessione sembrano corretti, il test è stato eseguito " "correttamente" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Autenticatore di Azure AD" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Autenticatore di Azure Active Directory" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "Tenant ID" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Ottenuto da Azure Active Directory - Proprietà - Directory ID" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "Client ID" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Ottenuto dall'App creata su Azure per UDS Enterprise" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Client Secret" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "Ottenuto dall'App creata su Azure per UDS Enteprise - Keys" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "Callback" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "Callback URL (compilato da UDS, cambiare solo se necessario!!!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1484,51 +1493,51 @@ msgstr "" "Proxy utilizzato per la connessione ad Azure per le connessioni HTTPS " "(utilizzare PROTOCOL: // host: port, ovvero https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Abilita l'integrazione della sincronizzazione dei dati scolastici" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "Abilita solo se hai Microsoft School Data Sync nel tuo ambiente." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Metodo di disconnessione da Azure." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "" "Reindirizzamento UDS alle pagine di logout di Microsoft al logout di UDS." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "Non reindirizzare" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Disconnessione Microsoft" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Disconnessione da Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "Autenticatore SAML, spazi non supportati nel campo Nome" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Eccezione dell'autenticatore:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Errore di connessione:" -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "" "I parametri di connessione sembrano corretti, il test è stato eseguito " @@ -1558,32 +1567,32 @@ msgstr "Nome utente con privilegi di lettura su eDirectory" msgid "Timeout in seconds of connection to LDAP" msgstr "Timeout in secondi per la connessione a LDAP" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "Autenticatore eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "Autentica con eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Errore di connessione a eDirectory: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "La base di ricerca Ldap non è corretta" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "La classe utente Ldap sembra non essere corretta (nessun utente trovato da " "quella classe)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1591,11 +1600,11 @@ msgstr "" "L'attributo ID utente Ldap sembra non corretto (nessun utente trovato da " "tale attributo)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Attributo di gruppo richiesto" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1664,11 +1673,11 @@ msgstr "DNS inverso" msgid "If checked, the host will be reversed dns" msgstr "Se selezionato, l'host effettuerà una risoluzione DNS inversa" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Le strutture interne sembrano ok" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Tutto sembra a posto nell'autenticatore." @@ -1740,45 +1749,45 @@ msgstr "Ldap Server Host" msgid "Username with read privileges on the base selected" msgstr "Nome utente con privilegi di lettura sulla base selezionata" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Base" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "Base di ricerca comune (utilizzata per \"utenti\" e \"gruppi\")" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Informazioni Ldap" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Classe utente" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Classe per utenti LDAP (normalmente posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Attributo ID utente" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Attributo che contiene l'id utente" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Attributo Nome utente" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1786,11 +1795,11 @@ msgstr "" "Attributi che contengono gli attributi del nome utente o i modelli di " "attributo (uno per ogni riga)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Attributo Nome gruppo" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1798,11 +1807,11 @@ msgstr "" "Attributo che contiene gli attributi del nome del gruppo o i modelli di " "attributo (uno per ogni riga)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Classe alt." -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1810,15 +1819,15 @@ msgstr "" "Classe per oggetti LDAP che verrà anche controllata per il recupero dei " "gruppi (normalmente vuota)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Autenticatore Regex LDAP" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Autenticatore LDAP con espressioni regolari" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1826,7 +1835,7 @@ msgstr "" "L'attributo id utente di Ldap è probabilmente sbagliato (non riesce a " "trovare nessun utente con entrambe le condizioni)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1834,19 +1843,19 @@ msgstr "" "L'attributo id del gruppo Ldap sembra non essere corretto (nessun gruppo " "trovato da quell'attributo)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "Autenticatore SAML" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "Autenticatore SAML (v2.0)" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Chiave privata" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1854,11 +1863,11 @@ msgstr "" "Chiave privata utilizzata per firma e la crittografia, in formato base64 " "come generata da openssl" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Certificati" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1866,82 +1875,82 @@ msgstr "" "Chiave pubblica utilizzata per la firma e la crittografia (parte pubblica " "della chiave privata precedente), in formato base64 come generata da openssl" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "Metadati IDP" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "Puoi inserire qui l'URL o i metadati IDP o i metadati stessi (xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Metadati" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "Entity ID" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "ID dello SP. Se lasciato vuoto, questo verrà generato automaticamente " "dall'URL del server" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Attributi nome utente" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Campi da cui estrarre il nome utente" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Attributi" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Attributi nome di gruppo" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Campi da cui estrarre i gruppi" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Attributi nome reale" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Campi da cui estrarre il nome reale" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Disconnessione globale" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "Se impostata, la disconnessione da UDS attiverà la disconnessione SAML" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "Compatibilità ADFS" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Se impostata, abilita la codifica dell'URL in minuscolo in modo che ADFS " "possa funzionare correttamente" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "" "Questo tipo di autenticatore non supporta gli spazi bianchi nel campo NOME" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1949,11 +1958,11 @@ msgstr "" "Il certificato del server deve essere in formato PEM valido (i certificati " "PEM iniziano con ----- BEGIN CERTIFICATE -----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Certificato del server non valido." -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1961,44 +1970,48 @@ msgstr "" "La chiave privata dovrebbe essere un PEM valido (le chiavi private PEM " "iniziano con ----- BEGIN RSA PRIVATE KEY-----)" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Chiave privata non valida." -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "Il certificato e la chiave privata non corrispondono" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "Impossibile recuperare l'URL {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr "(ottenuto dall'URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML non sembra valido per i metadati IDP" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "Impossibile accedere ai metadati idp" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Errore durante la convalida dei metadati SP:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Errore durante l'elaborazione dello SLO:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Errore durante l'elaborazione della risposta SAML:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "Risposta SAML non autenticata" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "Nessun attributo restituito dall'IdP" @@ -2034,51 +2047,53 @@ msgstr "IP o nome host del server Ldap" msgid "Ldap User" msgstr "Ldap User" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Attributi che contengono il nome utente (elenco di valori separati da " "virgola)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Classe di gruppo" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Classe per gruppi LDAP (normalmente poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Attributo Id di gruppo" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Attributo che contiene l'id del gruppo" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Attributo di appartenenza al gruppo" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Attributo del gruppo che contiene gli utenti ad esso appartenenti" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (SCONSIGLIATO)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "SimpleLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "Autenticatore SimpleLDAP (SCONSIGLIATO)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Semplice autenticatore LDAP" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "La classe di gruppo Ldap sembra non essere corretta (nessun gruppo trovato " "da quella classe)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2086,7 +2101,7 @@ msgstr "" "La classe utente Ldap o l'attributo id utente sono probabilmente sbagliati " "(non riesce a trovare nessun utente con entrambe le condizioni)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2094,7 +2109,7 @@ msgstr "" "La classe di gruppo Ldap o l'attributo Id di gruppo sono probabilmente " "sbagliati (non è possibile trovare alcun gruppo con entrambe le condizioni)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "" "Impossibile individuare alcun gruppo con l'attributo di appartenenza " @@ -2179,7 +2194,7 @@ msgstr "Il servizio non è accessibile da questo dispositivo" msgid "Base MFA" msgstr "MAE di base" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Codice MFA non valido" @@ -2243,7 +2258,7 @@ msgstr "Credenziali" msgid "Tunnel" msgstr "Tunnel" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "Impossibile contattare il server LDAP" @@ -2553,8 +2568,8 @@ msgstr "Oggetto dell'e-mail" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Config" @@ -2583,12 +2598,12 @@ msgid "Action for MFA response error" msgstr "Azione per errore di risposta MFA" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Consenti accesso utente" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Nega accesso utente" @@ -2619,9 +2634,8 @@ msgid "Text of the email. If empty, a default text will be used" msgstr "Testo dell'e-mail. Se vuoto, verrà utilizzato un testo predefinito" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Le variabili consentite sono: {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "Le variabili consentite sono:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2717,19 +2731,19 @@ msgstr "Errore di connessione OTP del raggio" msgid "Invalid OTP code" msgstr "Codice OTP non valido" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS via HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "Semplice invio di SMS tramite MFA tramite HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "Pattern URL per l'invio di SMS" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2741,16 +2755,16 @@ msgstr "" "{code} - il codice da inviare * {phone/+phone} - il numero di telefono * " "{username} - il nome utente * {justUsername} - il nome utente senza @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "Server HTTP" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Ignora gli errori del certificato" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2758,19 +2772,19 @@ msgstr "" "Se selezionato, il certificato del server verrà ignorato. Ciò è utile se il " "server utilizza un certificato autofirmato." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "Metodo di invio SMS" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Metodo per l'invio di SMS" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "Intestazioni per richieste SMS" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2784,11 +2798,11 @@ msgstr "" "{username} - il nome utente * {justUsername} - il nome utente senza @.... Le " "intestazioni sono in la forma di \"Intestazione: Valore\". (senza virgolette)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Parametri per l'invio di SMS POST/PUT" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2802,51 +2816,51 @@ msgstr "" "telefono * {username} - il nome utente * {justUsername} - il nome utente " "senza @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "Codifica SMS" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Codifica per SMS" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "Metodo di autenticazione SMS" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "Autenticazione di base HTTP" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "Aut. digest HTTP" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "Autenticazione HTTP" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "Utente o token di autenticazione SMS" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "Utente o token per l'autenticazione SMS" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "Password di autenticazione SMS" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Password per autenticazione SMS" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "Risposta SMS OK regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2854,53 +2868,53 @@ msgstr "" "Regex per risposta SMS OK. Se vuoto, la risposta è considerata OK se il " "codice di stato è 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "Risposta HTTP" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "Azione di errore di risposta SMS" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Azione per errore di risposta SMS" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "" "Consenti all'utente di accedere se il suo IP è nell'elenco delle reti" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "" "Nega all'utente l'accesso se il suo IP è nell'elenco delle reti" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "Utente senza criterio MFA" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "Reti SMS" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Reti per autenticazione SMS" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "Invio SMS fallito" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "Errore di risposta SMS" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "Codice AMF" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "Controlla il tuo telefono. Riceverai un SMS con il codice di verifica" @@ -4289,7 +4303,7 @@ msgstr "Test di connessione riuscito" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "Connessione fallita. Controllare i parametri di connessione" @@ -4310,8 +4324,7 @@ msgstr "Hyper Services basati su modelli e dischi differenziali (LEGACY)" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "Numero di VM che si desidera mantenere in attesa di un utente" @@ -4491,8 +4504,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Per i cluster, il nome utente deve essere un nome utente di dominio " "(utente@dominio o DOMINIO\\utente" @@ -4571,8 +4584,8 @@ msgstr "Seleziona un progetto" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Memoria assegnata alle VM. (Il valore zero significa \"mantieni la memoria " "della macchina originale\")" @@ -4957,11 +4970,11 @@ msgstr "Modello base" msgid "Service base template" msgstr "Modello base di servizio" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Errore di autenticazione" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5664,7 +5677,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Matusalemme non è vivo!!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "Nessun test, ma tutto è andato bene..." @@ -5720,22 +5732,6 @@ msgstr "Cache L2 per elementi fittizi" msgid "List of names" msgstr "Elenco di nomi" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Provider di prova" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Fornitore di servizi di test (e fittizio) " - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Servizio di test con cache" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Servizio di test solo per la cache L1" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "IP o nome host del server vCloud" @@ -5881,7 +5877,7 @@ msgstr "VMWare VCenter Platform Provider" msgid "Provides connection to Virtual Center Services" msgstr "Fornisce la connessione ai Virtual Center Services" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Parametri di connessione validi" @@ -6284,13 +6280,13 @@ msgstr "Protocollo RDP con client HTML5" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Tunnel Server" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6369,8 +6365,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "Se non vuoto, questo dominio sarà sempre usato come credenziale (usato come " "DOMINIO\\utente)" @@ -6460,31 +6456,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Condivisione di file" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Politica di reindirizzamento caricamento/download file" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Disabilita la condivisione di file" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Consenti solo download" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Consenti solo il caricamento" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Abilita condivisione file" @@ -6621,13 +6623,13 @@ msgstr "fail-safe" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Validità del ticket" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6637,33 +6639,34 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Forza nuova finestra HTML" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "" "Seleziona il comportamento di Windows per le nuove connessioni su HTML5" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "" "Apri ogni connessione sulla stessa finestra, ma mantiene la finestra UDS." #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Forza l'apertura di ogni connessione in una nuova finestra." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Ignora la finestra UDS e sostituiscila con la connessione." @@ -6730,7 +6733,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "Il server deve essere http o https" @@ -6818,6 +6821,73 @@ msgstr "" "Le credenziali vuote (nella scheda Credenziali) sono consentite solo se il " "Livello di sicurezza (nella scheda Parametri) è impostato su \"RDP\"" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "Protocollo SSH utilizzando il client HTML5" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Nome utente per l'autenticazione della connessione SSH." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "Comando SSH" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Comando da eseguire sul server remoto. Se non fornito, verrà eseguita una " +"shell interattiva." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Radice condivisione file" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Percorso principale per la condivisione di file. Se non fornito, verrà " +"utilizzata la directory principale." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "Porta del server SSH" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Porta del server SSH." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "Chiave host SSH" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Chiave host del server SSH. Se non fornito, non viene eseguita alcuna " +"verifica dell'identità dell'host." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Server Keep Alive" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Tempo in secondi tra i messaggi Keep Alive inviati al server. Se non " +"fornito, non vengono inviati messaggi keep alive." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC sperimentale" @@ -6931,8 +7001,8 @@ msgid "" "IP or Hostname of tunnel server sent to client device (\"public\" ip) and " "port. (use HOST:PORT format)" msgstr "" -"IP o nome host del server tunnel inviato al dispositivo client (ip \"pubblico" -"\") e porta. (usa il formato HOST: PORT)" +"IP o nome host del server tunnel inviato al dispositivo client (ip " +"\"pubblico\") e porta. (usa il formato HOST: PORT)" #: transports/NICEDCV_enterprise/nicedcvtunnel.py:57 #: transports/NoMachine_enterprise/nomachine_tunneltransport.py:83 @@ -7630,10 +7700,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "Autenticatore non fornisce informazioni" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} giorni" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} ore" diff --git a/server/src/uds/locale/it/LC_MESSAGES/djangojs.po b/server/src/uds/locale/it/LC_MESSAGES/djangojs.po index dbb66ed16..e5ad37bfd 100644 --- a/server/src/uds/locale/it/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/it/LC_MESSAGES/djangojs.po @@ -5,6 +5,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Javier , 2020 # Massimo Vignone, 2020 # mvignone, 2020-2021 @@ -16,10 +18,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Víctor Alonso , 2020\n" -"Language-Team: Italian (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Italian (http://app.transifex.com/openuds/openuds/language/" "it/)\n" "Language: it\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/pt/LC_MESSAGES/django.po b/server/src/uds/locale/pt/LC_MESSAGES/django.po index e7b99dd6c..2bdb77cc6 100644 --- a/server/src/uds/locale/pt/LC_MESSAGES/django.po +++ b/server/src/uds/locale/pt/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2012 # Javier Gomez , 2023 # Javier , 2023 @@ -13,10 +15,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" -"Last-Translator: Javier Gomez , 2023\n" -"Language-Team: Portuguese (http://www.transifex.com/openuds/openuds/language/" +"Last-Translator: Javier , 2023\n" +"Language-Team: Portuguese (http://app.transifex.com/openuds/openuds/language/" "pt/)\n" "Language: pt\n" "MIME-Version: 1.0\n" @@ -220,11 +222,11 @@ msgid "If active, authenticator will be visible for users" msgstr "Se ativo, o autenticador ficará visível para os usuários" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Nenhum" @@ -245,7 +247,6 @@ msgid "Refine your query" msgstr "Refine sua consulta" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "A etiqueta deve conter apenas letras, números ou símbolos: - : ." @@ -684,10 +685,10 @@ msgstr "Relatórios disponíveis" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Grupo" @@ -729,7 +730,7 @@ msgid "Services Pools" msgstr "Pools de Serviços" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -743,7 +744,7 @@ msgstr "Proxy para serviços atrás de um firewall" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1052,10 +1053,10 @@ msgstr "Membro da equipe" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1073,8 +1074,8 @@ msgstr "Usuários atuais" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1084,7 +1085,8 @@ msgstr "Usuários atuais" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1227,8 +1229,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1314,11 +1316,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Tempo limite em segundos de conexão ao Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "Verificar SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1328,26 +1334,29 @@ msgstr "" "SSL será desativada" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Certificado" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "Certificado a ser usado para verificação SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "Atributo MFA" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Atributo de onde extrair o código MFA" @@ -1360,111 +1369,111 @@ msgid "Authenticate against Active Directory" msgstr "Autenticar-se contra o Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "Deve especificar o nome de usuário no formulário USERNAME@DOMAIN.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" -"Não foi possível conectar a nenhum servidor AD. Verifique sua configuração (" -"servidor, certificados SSL, ...)." +"Não foi possível conectar a nenhum servidor AD. Verifique sua configuração " +"(servidor, certificados SSL, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Nome de usuário não encontrado" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Grupo não encontrado" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Muitos resultados, sejam mais específicos" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Domínio parece estar incorreto, por favor, verifique" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "" "Servidor não parece um Active Directory (ele não tem objetos de usuário)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "Servidor não parece um Active Directory (ele não tem objetos de grupo)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "Params de conexão parecem corretos, teste foi executado com sucesso" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Autenticador do Azure AD" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Autenticador do Active Directory do Azure" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "ID do inquilino" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Obtido do Active Directory do Azure - Propriedades - ID do Diretório" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "ID do Cliente" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "Obtido do aplicativo criado no Azure para UDS Enterprise" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Segredo do cliente" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "Obtido do aplicativo criado no Azure para UDS Enteprise - chaves" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "Ligue de volta" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "" "URL de retorno de chamada (preenchido por UDS, corrija isso apenas se " "necessário)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1473,53 +1482,53 @@ msgstr "" "Proxy usado para conexão ao azure para conexões HTTPS (use PROTOCOL: // " "host: porta, ou seja, https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Habilitar integração de sincronização de dados escolares" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "" "Habilite apenas se você tiver o Microsoft School Data Sync em seu ambiente." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Método de logout do Azure." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "" "Redirecionamento do UDS para as páginas de logout da Microsoft no logout do " "UDS." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "Não redirecione" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Logout da Microsoft" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Sair do Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "O autenticador SAML não suporta espaços em branco no campo NAME" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Exceção do autenticador:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Erro de conexão:" -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "Params de conexão parece correto, o teste foi executado com sucesso" @@ -1546,32 +1555,32 @@ msgstr "Nome de usuário com privilégios de leitura no eDirectory" msgid "Timeout in seconds of connection to LDAP" msgstr "Tempo limite em segundos de conexão ao LDAP" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "Autenticador do eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "Autenticar-se contra o eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Erro de conexão do Edirectory: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "A base de pesquisa do Ldap está incorreta" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "A classe de usuário Ldap parece estar incorreta (nenhum usuário encontrado " "por essa classe)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1579,11 +1588,11 @@ msgstr "" "O atributo de ID do usuário do Ldap parece estar incorreto (nenhum usuário " "foi encontrado por esse atributo)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Atributo de grupo esperado" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1650,11 +1659,11 @@ msgstr "DNS reverso" msgid "If checked, the host will be reversed dns" msgstr "Se marcado, o host será invertido dns" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Estruturas internas parece ok" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Tudo parece bem no autenticador." @@ -1724,45 +1733,45 @@ msgstr "Host do servidor LDAP" msgid "Username with read privileges on the base selected" msgstr "Nome de usuário com privilégios de leitura na base selecionada" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "Base" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "Base de pesquisa comum (usada para \"usuários\" e \"grupos\")" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Ldap info" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Classe de usuário" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Classe para usuários LDAP (normalmente posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Atração de ID do usuário" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Atributo que contém o ID do usuário" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Nome de usuário Attr" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1770,11 +1779,11 @@ msgstr "" "Atributos que contêm os atributos de nome de usuário ou padrões de atributo " "(um para cada linha)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Atributo do Nome do Grupo" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1782,11 +1791,11 @@ msgstr "" "Atributo que contém os atributos do nome do grupo ou padrões de atributos " "(um para cada linha)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Alt. classe" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1794,15 +1803,15 @@ msgstr "" "Classe para objetos LDAP que também serão verificados para recuperação de " "grupos (normalmente vazia)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Autenticador Regex LDAP" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Autenticador LDAP de Expressões Regulares" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1810,7 +1819,7 @@ msgstr "" "O ID do usuário do Ldap provavelmente está errado (não é possível encontrar " "nenhum usuário com ambas as condições)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1818,19 +1827,19 @@ msgstr "" "O atributo id do grupo Ldap parece estar incorreto (nenhum grupo encontrado " "por esse atributo)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "Autenticador SAML" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "Autenticador SAML (v2.0)" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Chave privada" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1838,11 +1847,11 @@ msgstr "" "Chave privada usada para sinal e inscrição, conforme gerado na base 64 do " "openssl" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Certificados" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1850,83 +1859,83 @@ msgstr "" "Chave pública usada para sinal e inscrição (parte pública da chave privada " "anterior), conforme gerado na base 64 de openssl" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "Metadados IDP" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "Você pode inserir aqui o URL ou os metadados do IDP ou os próprios metadados " "(xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Metadados" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "ID da entidade" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "ID do SP. Se deixado em branco, isso será gerado automaticamente a partir do " "URL do servidor" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Nome de usuário attrs" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Campos de onde extrair o nome do usuário" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Atributos" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Nome do grupo attrs" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Campos de onde extrair os grupos" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Nome real attrs" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Campos de onde extrair o nome real" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Logout global" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "Se definido, o logout do UDS acionará o logout do SAML" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "Compatibilidade com ADFS" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Se definido, habilite a codificação de URL em minúsculas para que o ADFS " "funcione corretamente" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "Este tipo de autenticador não suporta espaços em branco no campo NAME" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1934,11 +1943,11 @@ msgstr "" "O certificado do servidor deve ser um PEM válido (os certificados PEM " "começam com ----- BEGIN CERTIFICATE -----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Certificado de servidor inválido." -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1946,44 +1955,48 @@ msgstr "" "A chave privada deve ser um PEM válido (as chaves privadas do PEM começam " "com ----- BEGIN RSA PRIVATE KEY -----" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Chave privada inválida." -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "O certificado e a chave privada não correspondem" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "Não é possível buscar o URL {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr "(obtido da URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML não parece válido para metadados IDP" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "Não é possível acessar os metadados do idp" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Erro ao validar os metadados do SP:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Erro ao processar SLO:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Erro ao processar a resposta SAML:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "Resposta SAML não autenticada" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "Nenhum atributo retornado do IdP" @@ -2019,51 +2032,53 @@ msgstr "IP do servidor LDAP ou nome do host" msgid "Ldap User" msgstr "Usuário Ldap" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Atributos que contêm o nome do usuário (lista de valores separados por " "vírgulas)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Turma de grupo" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Classe para grupos LDAP (normalmente poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Atribulação do código do grupo" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Atributo que contém o ID do grupo" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Membro do grupo attr" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Atributo do grupo que contém os usuários pertencentes a ele" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "SimpleLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "Autenticador LDAP simples (DEPRECATED)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Autenticador LDAP simples" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "" "A classe de grupo Ldap parece estar incorreta (nenhum grupo encontrado por " "essa classe)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2071,7 +2086,7 @@ msgstr "" "A classe de usuário do Ldap ou o id do usuário attr está provavelmente " "errado (não é possível encontrar nenhum usuário com ambas as condições)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2079,7 +2094,7 @@ msgstr "" "A classe do grupo Ldap ou o id do grupo attr está provavelmente errado (não " "é possível encontrar nenhum grupo com ambas as condições)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "" "Não é possível localizar nenhum grupo com o atributo de associação " @@ -2161,7 +2176,7 @@ msgstr "O serviço não está acessível a partir deste dispositivo" msgid "Base MFA" msgstr "MFA básico" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Código MFA inválido" @@ -2225,7 +2240,7 @@ msgstr "Credenciais" msgid "Tunnel" msgstr "Túnel" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "Não é possível entrar em contato com o servidor LDAP" @@ -2537,8 +2552,8 @@ msgstr "Assunto do e-mail" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Configuração" @@ -2567,12 +2582,12 @@ msgid "Action for MFA response error" msgstr "Ação para erro de resposta MFA" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Permitir login do usuário" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Negar login de usuário" @@ -2601,9 +2616,8 @@ msgid "Text of the email. If empty, a default text will be used" msgstr "Texto do e-mail. Se vazio, um texto padrão será usado" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "As variáveis permitidas são: {code}, {username}, {ip}" +msgid "Allowed variables are: " +msgstr "As variáveis permitidas são:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2698,19 +2712,19 @@ msgstr "Erro de conexão Radius OTP" msgid "Invalid OTP code" msgstr "Código OTP inválido" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "SMS via HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "SMS simples enviando MFA usando HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "Endereço URL para envio de SMS" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2722,16 +2736,16 @@ msgstr "" "{code} - o código para enviar * {phone/+phone} - o número de telefone * " "{username} - o nome de usuário * {justUsername} - o nome de usuário sem @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "Servidor HTTP" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Ignorar erros de certificado" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2739,19 +2753,19 @@ msgstr "" "Se marcado, o certificado do servidor será ignorado. Isso é útil se o " "servidor usar um certificado autoassinado." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "Método de envio de SMS" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Método de envio de SMS" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "Cabeçalhos para solicitações de SMS" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2765,11 +2779,11 @@ msgstr "" "{username} - o nome de usuário * {justUsername} - o nome de usuário sem " "@.... Os cabeçalhos estão em a forma de \"Cabeçalho: Valor\". (sem as aspas)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Parâmetros para envio de SMS POST/PUT" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2783,51 +2797,51 @@ msgstr "" "telefone * {username} - o nome de usuário * {justUsername} - o nome de " "usuário sem @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "Codificação de SMS" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Codificação para SMS" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "Método de autenticação SMS" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "Autenticação básica HTTP" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "Autenticação de resumo HTTP" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "Autenticação HTTP" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "Usuário ou token de autenticação SMS" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "Usuário ou token para autenticação por SMS" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "Senha de autenticação SMS" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Senha para autenticação SMS" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "Resposta SMS OK regex" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2835,51 +2849,51 @@ msgstr "" "Regex para resposta SMS OK. Se estiver vazio, a resposta será considerada OK " "se o código de status for 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "Resposta HTTP" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "Ação de erro de resposta SMS" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Ação para erro de resposta SMS" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "Permitir que o usuário faça login se seu IP estiver na lista de redes" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "Negar o login do usuário se seu IP estiver na lista de redes" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "Usuário sem política de MFA" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "redes SMS" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Redes para autenticação SMS" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "Falha no envio de SMS" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "Erro de resposta SMS" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "Código MFA" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "" "Verifique seu telefone. Você receberá um SMS com o código de verificação" @@ -4263,7 +4277,7 @@ msgstr "Teste de conexão bem sucedido" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "Conexão falhou. Verifique os parâmetros de conexão" @@ -4284,8 +4298,7 @@ msgstr "Hyper Services baseados em templates e discos diferenciais (LEGACY)" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "" "Número de máquinas desejadas para continuar correndo esperando por um usuário" @@ -4466,8 +4479,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Para clusters, o nome de usuário deve ser um nome de usuário de domínio " "(usuário @ domínio ou DOMAIN \\ user" @@ -4545,8 +4558,8 @@ msgstr "Selecione um projeto" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Memória atribuída a máquinas. (Valor zero significa \"manter memória " "original da máquina\")" @@ -4676,8 +4689,8 @@ msgstr "oVirt Server IP ou Hostname" #: services/OVirt/provider.py:123 msgid "User with valid privileges on oVirt, (use \"user@domain\" form)" msgstr "" -"Usuário com privilégios válidos no oVirt, (use o formulário \"user @ domain" -"\")" +"Usuário com privilégios válidos no oVirt, (use o formulário \"user @ " +"domain\")" #: services/OVirt/provider.py:131 msgid "Password of the user of oVirt" @@ -4924,11 +4937,11 @@ msgstr "Modelo base" msgid "Service base template" msgstr "Modelo base de serviço" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Erro de autenticação" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5632,7 +5645,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Matusalém não está vivo !!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "Nada testado, mas tudo correu bem .." @@ -5688,22 +5700,6 @@ msgstr "Cache L2 para elementos fictícios" msgid "List of names" msgstr "Lista de nomes" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Provedor de Testes" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Provedor de serviços de teste (e simulado)" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Serviço de teste com cache" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Serviço de teste somente para o cache L1" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "IP do servidor vCloud ou nome do host" @@ -5850,7 +5846,7 @@ msgstr "Fornecedor de plataforma VMWare VCenter" msgid "Provides connection to Virtual Center Services" msgstr "Fornece conexão com os serviços do Virtual Center" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Params de conexão ok" @@ -6251,13 +6247,13 @@ msgstr "Protocolo RDP usando cliente HTML5" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Servidor de túnel" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6333,8 +6329,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "Se não estiver vazio, esse domínio será sempre usado como credencial (usado " "como DOMÍNIO \\ usuário)" @@ -6424,31 +6420,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Compartilhamento de arquivos" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Política de redirecionamento de upload / download de arquivo" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Desativar compartilhamento de arquivos" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Permitir apenas download" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Permitir apenas upload" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Ativar compartilhamento de arquivos" @@ -6585,13 +6587,13 @@ msgstr "À prova de falhas" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Validade do Bilhete" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6601,31 +6603,32 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Forçar nova janela HTML" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "Selecione o comportamento das janelas para novas conexões em HTML5" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "Abra todas as conexões na mesma janela, mas mantém a janela UDS." #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Força cada conexão a ser aberta em uma nova janela." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Substitua a janela UDS e substitua-a pela conexão." @@ -6691,7 +6694,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "O servidor deve ser http ou https" @@ -6779,6 +6782,73 @@ msgstr "" "Credenciais vazias (na guia Credenciais) só é permitida com nível de " "segurança (na guia Parâmetros) definido como \"RDP\"" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "Protocolo SSH usando cliente HTML5" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Nome de usuário para autenticação de conexão SSH." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "Comando SSH" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Comando a ser executado no servidor remoto. Se não for fornecido, um shell " +"interativo será executado." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Raiz de Compartilhamento de Arquivos" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Caminho raiz para compartilhamento de arquivos. Se não for fornecido, o " +"diretório raiz será usado." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "Porta do servidor SSH" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Porta do servidor SSH." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "Chave do host SSH" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Chave do host do servidor SSH. Se não for fornecido, nenhuma verificação da " +"identidade do host será feita." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Servidor Manter Ativo" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Tempo em segundos entre mensagens keep alive enviadas ao servidor. Se não " +"for fornecido, nenhuma mensagem keep alive será enviada." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC Experimental" @@ -7585,10 +7655,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "O autenticador não fornece informações" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} dias" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} horas" diff --git a/server/src/uds/locale/pt/LC_MESSAGES/djangojs.po b/server/src/uds/locale/pt/LC_MESSAGES/djangojs.po index 82a7d4bfc..3d5161a01 100644 --- a/server/src/uds/locale/pt/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/pt/LC_MESSAGES/djangojs.po @@ -6,6 +6,7 @@ # Translators: # Translators: # Translators: +# Translators: # Javier Gomez , 2023 # Víctor Alonso , 2020 # Víctor Alonso , 2020 @@ -14,10 +15,10 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" -"Last-Translator: Javier Gomez , 2023\n" -"Language-Team: Portuguese (http://www.transifex.com/openuds/openuds/language/" +"Last-Translator: Víctor Alonso , 2020\n" +"Language-Team: Portuguese (http://app.transifex.com/openuds/openuds/language/" "pt/)\n" "Language: pt\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/locale/ru/LC_MESSAGES/django.po b/server/src/uds/locale/ru/LC_MESSAGES/django.po index a8c00c630..9744b48a2 100644 --- a/server/src/uds/locale/ru/LC_MESSAGES/django.po +++ b/server/src/uds/locale/ru/LC_MESSAGES/django.po @@ -6,6 +6,8 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: # Adolfo Gómez , 2022 # Alexander , 2020 # Alexey Shabalin , 2019 @@ -19,18 +21,18 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Александр Бурматов, 2022\n" -"Language-Team: Russian (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Russian (http://app.transifex.com/openuds/openuds/language/" "ru/)\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" #: REST/methods/accounts.py:61 msgid "Accounts" @@ -227,11 +229,11 @@ msgid "If active, authenticator will be visible for users" msgstr "Если активен, аутентификатор будет виден пользователям" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "Ничто" @@ -252,9 +254,8 @@ msgid "Refine your query" msgstr "Уточните свой запрос" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." -msgstr "Этикетка должна содержать только буквы, цифры или символы: - : ." +msgstr "Метка должна содержать только буквы, цифры и символы: - : ." #: REST/methods/calendarrules.py:98 msgid "Rule name" @@ -691,10 +692,10 @@ msgstr "Доступные отчеты" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "Группа" @@ -735,7 +736,7 @@ msgid "Services Pools" msgstr "Сервисные пулы" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -749,7 +750,7 @@ msgstr "Прокси для служб за брандмауэром" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1060,10 +1061,10 @@ msgstr "Штатный сотрудник" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1081,8 +1082,8 @@ msgstr "Текущие пользователи" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1092,7 +1093,8 @@ msgstr "Текущие пользователи" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1234,8 +1236,8 @@ msgstr "" #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1321,11 +1323,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "Таймаут подключения к Active Directory в секундах" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "Подтвердить SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1335,26 +1341,29 @@ msgstr "" "случае проверка SSL будет отключена." #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "Сертификат" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" -msgstr "Сертификат для использования для проверки SSL" +msgstr "Сертификат, используемый для проверки SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "Атрибут многофакторной идентификации" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "Атрибут, из которого извлекается код МФА" @@ -1367,117 +1376,117 @@ msgid "Authenticate against Active Directory" msgstr "Аутентификация в Active Directory" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "Нужно указать имя пользователя в формате USERNAME@DOMAIN.DOM" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "" -"Не удалось подключиться ни к одному серверу AD. Проверьте свою конфигурацию (" -"сервер, ssl-сертификаты, ...)." +"Не удалось подключиться ни к одному серверу AD. Проверьте свою конфигурацию " +"(сервер, ssl-сертификаты, ...)." -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "Имя пользователя не найдено" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "Группа не найдена" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "Слишком много результатов, сделайте запрос более уникальным" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "Домен возможно некорректен, пожалуйста проверьте" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "" "Сервер возможно не является членом Active Directory (у него нет " "пользовательских объектов)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "" "Сервер возможно не является членом Active Directory (у него нет групповых " "объектов)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "Параметры подключения правильные, тест был успешно выполнен" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Аутентификатор Azure AD" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Аутентификатор Azure Active Directory" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "Идентификатор клиента" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "Полученные от Azure Active Directory - Свойства - ID каталога" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "Идентификатор клиента" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "" "Получено от приложения, созданного на платформе Azure для UDS Enterprise" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "Секрет клиента" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "" "Получено от приложения, созданного на платформе Azure для UDS Enteprise - " "Ключи" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "Обратный вызов" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "" "Строка адреса обратного вызова (заполняется UDS, исправлять только в случае " "необходимости!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1486,51 +1495,51 @@ msgstr "" "Прокси-сервер, используемый для подключения к azure для HTTPS-подключений " "(используйте PROTOCOL: // host: port, т.е. https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "Включить интеграцию School Data Sync" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "" "Включите, только если у вас есть Microsoft School Data Sync в вашей среде." -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Метод выхода из Azure." -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "Перенаправление UDS на страницы выхода Microsoft при выходе из UDS." -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "Не перенаправлять" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "Выход из Microsoft" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Выход из Office 365" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "Аутентификатор SAML не поддерживает пробелы в поле NAME" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "Исключение проверки подлинности:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "Ошибка подключения: " -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "Параметры подключения кажутся верными, тест выполнен успешно" @@ -1559,32 +1568,32 @@ msgstr "Имя пользователя с правами на чтение в e msgid "Timeout in seconds of connection to LDAP" msgstr "Таймаут подключения к LDAP в секундах" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "Аутентификатор eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "Аутентификация в eDirectory" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "Ошибка подключения к электронному каталогу: {}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "Поиск в LDAP некорректный" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "" "Класс пользователя Ldap возможно указан неправильно (пользователь с этим " "классом не найден)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" @@ -1592,11 +1601,11 @@ msgstr "" "Атрибут идентификатора пользователя Ldap возможно указан некорректно " "(пользователя с таким атрибутом не обнаружено)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "Ожидаемый групповой атрибут" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "" @@ -1663,11 +1672,11 @@ msgstr "Обратный DNS" msgid "If checked, the host will be reversed dns" msgstr "Если отмечено, хост будет использовать обратный DNS" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "Внутренняя структура - ОК" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "Все хорошо для аутентификатора." @@ -1737,45 +1746,45 @@ msgstr "Хост LDAP сервера" msgid "Username with read privileges on the base selected" msgstr "Имя пользователя с правами чтения в выбранной базе" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "База" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "Общая база поиска (используется для пользователей и групп)" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "LDAP информация" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "Класс пользователя" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "Класс для пользователей LDAP (обычно posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "Идентификатор атрибута пользователя" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "Атрибут, содержащий идентификатор пользователя" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "Атрибут имени пользователя" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" @@ -1783,11 +1792,11 @@ msgstr "" "Атрибуты, содержащие атрибуты имени пользователя или шаблоны атрибутов (по " "одному для каждой строки)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "Атрибуты имени группы" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" @@ -1795,11 +1804,11 @@ msgstr "" "Атрибут, содержащий атрибуты имени группы или шаблоны атрибутов (по одному " "для каждой строки)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Альтернативный класс" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" @@ -1807,15 +1816,15 @@ msgstr "" "Класс для объектов LDAP, которые также будут проверены для поиска групп " "(обычно пустой)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "Аутентификатор Regex LDAP" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "Регулярное выражение для аутентификатора LDAP" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" @@ -1823,7 +1832,7 @@ msgstr "" "Идентификатор аттрибута пользователя LDAP вероятно неверный (невозможно " "найти пользователя с обоими условиями)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" @@ -1831,19 +1840,19 @@ msgstr "" "Идентификатор аттрибута группы LDAP вероятно неверный (невозможно найти " "группу с такими аттрибутами)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "Аутентификатор SAML" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "Аутентификатор SAML (v2.0)" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "Приватный ключ" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" @@ -1851,11 +1860,11 @@ msgstr "" "Приватный ключ, используемый для подписи и шифрования, сгенерированный в " "base64 c помощью openssl" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "Сертификаты" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" @@ -1863,82 +1872,82 @@ msgstr "" "Открытый ключ, используемый для подписывания и шифрования (общедоступная " "часть предыдущего частного), сгенерированный в base64 от openssl" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "IDP метаданные" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "" "Здесь вы можете указать URL-адрес, метаданные IDP или сами метаданные (xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "Метаданные" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "ID объекта" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "" "Идентификатор SP. Если оставить пустым, будет автоматически генерироваться с " "URL-адреса сервера" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "Атрибут имени пользователя" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "Поля, откуда извлекается имя пользователя" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "Атрибуты" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "Атрибуты имени группы" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "Поля, откуда извлекается имя группы" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "Атрибуты реального имени" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "Поля, откуда извлекается реальное имя" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "Глобальный выход" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "Если установлено, выход из UDS приведет к выходу из системы SAML." -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "Совместимость с ADFS" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "" "Если установлено, включите кодировку URL-адресов в нижнем регистре, чтобы " "ADFS могла работать правильно." -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "Этот тип аутентификатора не поддерживает пробелы в поле NAME." -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" @@ -1946,11 +1955,11 @@ msgstr "" "Сертификат сервера должен быть действительным PEM (PEM сертификат начинается " "с -----BEGIN CERTIFICATE-----)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "Недопустимый сертификат сервера" -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" @@ -1958,44 +1967,48 @@ msgstr "" "Приватный ключ должен быть действительным PEM (PEM приватный ключ начинается " "с -----BEGIN RSA PRIVATE KEY-----)" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "Недопустимый приватный ключ" -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "Сертификат и закрытый ключ не совпадают" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "Невозможно получить url {0}: {1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr "(полученный из URL)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML не подходит для метаданных IDP" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "Нет доступа к IDP метаданным" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "Ошибка проверки метаданных SP:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "Ошибка обработки SLO:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "Ошибка обработки ответа SAML:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "Ответ SAML не аутентифицирован" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "От IdP не возвращаются атрибуты" @@ -2031,48 +2044,50 @@ msgstr "IP-адрес или имя хоста Ldap-сервера" msgid "Ldap User" msgstr "Пользователь Ldap" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "" "Атрибуты, содержащие имя пользователя (список значений, разделенных запятой)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "Класс группы" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "Класс для групп LDAP (обычно poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Атрибут идентификатора группы" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "Атрибут, содержащий идентификатор группы" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "Атрибут членства в группе" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "Атрибут группы, которая содержит пользователей, принадлежащих ему" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP (УСТАРЕЛО)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "ПростойLDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "SimpleLDAP аутентификатор (УСТАРЕЛО)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "Простой аутентификатор LDAP" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "Класс групп Ldap кажется неправильным (не найдено групп такого класса)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" @@ -2080,7 +2095,7 @@ msgstr "" "Класс пользователя Ldap или атрибут идентификатора пользователя, возможно, " "неправильный (не удаётся найти пользователей с обоими условиями)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" @@ -2088,7 +2103,7 @@ msgstr "" "Класс группы Ldap или атрибут идентификатора группы, возможно, неправильный " "(не удаётся найти группы с обоими условиями)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "Не удаётся найти группу с указанным атрибутом членства" @@ -2169,7 +2184,7 @@ msgstr "Сервис недоступен с этого устройства" msgid "Base MFA" msgstr "База МФА" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "Неверный код МФА" @@ -2233,7 +2248,7 @@ msgstr "Учётные данные" msgid "Tunnel" msgstr "Туннель" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "Не удаётся связаться с сервером LDAP" @@ -2541,8 +2556,8 @@ msgstr "Тема письма" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "Конфигурация" @@ -2572,12 +2587,12 @@ msgid "Action for MFA response error" msgstr "Действие при ошибке ответа МФА" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "Разрешить вход пользователя" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "Запретить вход пользователя" @@ -2610,9 +2625,8 @@ msgstr "" "умолчанию" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "Допустимые переменные: {code}, {username}, {ip}." +msgid "Allowed variables are: " +msgstr "Допустимые переменные:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2706,19 +2720,19 @@ msgstr "Ошибка подключения Radius OTP" msgid "Invalid OTP code" msgstr "Неверный OTP-код" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "СМС через HTTP" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "Простая отправка SMS MFA с использованием HTTP/HTTPS" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "Шаблон URL для отправки SMS" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2730,16 +2744,16 @@ msgstr "" "{code} - код для отправки * {phone/+phone} - номер телефона * {username} - " "имя пользователя * {justUsername} - имя пользователя без @...." -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "HTTP-сервер" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "Игнорировать ошибки сертификата" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." @@ -2747,19 +2761,19 @@ msgstr "" "Если этот флажок установлен, сертификат сервера будет игнорироваться. Это " "полезно, если сервер использует самозаверяющий сертификат." -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "Способ отправки СМС" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "Способ отправки СМС" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "Заголовки для SMS-запросов" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2773,11 +2787,11 @@ msgstr "" "имя пользователя * {justUsername} - имя пользователя без @.... Заголовки в " "виде «Заголовок: Значение». (без кавычек)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "Параметры для отправки SMS POST/PUT" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2790,51 +2804,51 @@ msgstr "" "переменные: * {code} - код для отправки * {phone/+phone} - номер телефона * " "{username} - имя пользователя * {justUsername} - имя пользователя без @...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "Кодировка SMS" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "Кодировка для СМС" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "Метод аутентификации по SMS" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "Базовая HTTP-аутентификация" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "Дайджест-аутентификация HTTP" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "HTTP-аутентификация" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "Пользователь или токен SMS-аутентификации" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "Пользователь или токен для SMS-аутентификации" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "SMS-пароль аутентификации" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "Пароль для SMS-аутентификации" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "SMS ответ OK регулярное выражение" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." @@ -2842,54 +2856,54 @@ msgstr "" "Регулярное выражение для SMS-ответа OK. Если пусто, ответ считается ОК, если " "код состояния равен 200." -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "HTTP-ответ" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "Действие при ошибке ответа SMS" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "Действия при ошибке ответа на SMS" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "" "Разрешить пользователю входить в систему, если его IP-адрес есть в списке " "сетей" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "" "Запретить пользователю вход в систему, если его IP-адрес есть в списке сетей" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "Пользователь без политики MFA" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "SMS-сети" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "Сети для SMS-аутентификации" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "Отправка СМС не удалась" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "Ошибка ответа на смс" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "Код МФА" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "Проверьте свой телефон. Вы получите SMS с кодом подтверждения" @@ -4276,7 +4290,7 @@ msgstr "Тест соединения успешен" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "Ошибка подключения. Проверьте параметры подключения" @@ -4297,8 +4311,7 @@ msgstr "Гиперсервисы на основе шаблонов и дифф #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "Количество работающих в ожидании пользователя машин" @@ -4478,8 +4491,8 @@ msgstr "" #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "" "Для кластеров имя пользователя должно быть именем пользователя домена " "(пользователь@домен или ДОМЕН\\пользователь)" @@ -4558,8 +4571,8 @@ msgstr "Выберите проект" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "" "Память, назначенная машинам. (Нулевое значение \"означает сохранить " "оригинальную память устройства\")" @@ -4943,11 +4956,11 @@ msgstr "Базовый шаблон" msgid "Service base template" msgstr "Шаблон для развертывания образов" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "Ошибка аутентификации" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5652,7 +5665,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "Methuselah не жив!!! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "Ничего не проверено, но все прошло хорошо..." @@ -5708,22 +5720,6 @@ msgstr "Кэш L2 для фиктивных элементов" msgid "List of names" msgstr "Список имен" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "Тестовый поставщик" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "Тестовый (и фейковый) поставщик услуг" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "Тестировать службу с кэшем" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "Тестировать службу с кэшем только 1 уровня" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "IP-адрес или имя vCloud сервера" @@ -5870,7 +5866,7 @@ msgstr "Поставщик платформы VMWare VCenter" msgid "Provides connection to Virtual Center Services" msgstr "Обеспечивает подключение к Virtual Center Services" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "Параметры подключения ОК" @@ -6270,13 +6266,13 @@ msgstr "Протокол RDP с использованием клиента HTML #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "Туннельный сервер" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6357,8 +6353,8 @@ msgstr "" #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "" "Если не пусто, этот домен всегда будет использоваться в качестве учетных " "данных (используется как DOMAIN\\user)" @@ -6448,31 +6444,37 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "Обмен файлами" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "Политика перенаправления загрузки / скачивания файлов" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "Отключить обмен файлами" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "Разрешить только скачивание" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "Разрешить только загрузку" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "Разрешить общий доступ к файлам" @@ -6609,13 +6611,13 @@ msgstr "Отказоустойчивость" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "Срок действия билета" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6625,31 +6627,32 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "Открывать HTML в новом окне" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "Выберите поведение Windows для новых подключений в HTML5" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "Открывать каждое соединение в одном окне, но сохранять окно UDS." #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "Принудительно открывать каждое соединение в новом окне." #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "Переопределите окно UDS и замените его подключением." @@ -6715,7 +6718,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "Сервер должен быть http или https" @@ -6803,6 +6806,73 @@ msgstr "" "Пустые учетные данные (на вкладке Credentials) разрешены только с уровнем " "безопасности (на вкладке «Параметры»), установленным в RDP" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "Протокол SSH с использованием клиента HTML5" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "Имя пользователя для аутентификации SSH-соединения." + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "SSH-команда" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "" +"Команда для выполнения на удаленном сервере. Если не указано, будет " +"выполнена интерактивная оболочка." + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "Корень общего доступа к файлам" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "" +"Корневой путь для общего доступа к файлам. Если не указан, будет " +"использоваться корневой каталог." + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "Порт SSH-сервера" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "Порт SSH-сервера." + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "Ключ хоста SSH" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "" +"Ключ хоста SSH-сервера. Если он не указан, проверка личности хоста не " +"выполняется." + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "Поддержание сервера в рабочем состоянии" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"Время в секундах между сообщениями проверки активности, отправленными на " +"сервер. Если он не указан, сообщения проверки активности не отправляются." + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "Экспериментальный HTML5 VNC" @@ -7610,10 +7680,10 @@ msgstr "" msgid "Authenticator does not provide information" msgstr "Аутентификатор не предоставляет информацию" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} дней" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} часы" diff --git a/server/src/uds/locale/ru/LC_MESSAGES/djangojs.po b/server/src/uds/locale/ru/LC_MESSAGES/djangojs.po index 60ab2da84..007b6fb32 100644 --- a/server/src/uds/locale/ru/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/ru/LC_MESSAGES/djangojs.po @@ -6,6 +6,7 @@ # Translators: # Translators: # Translators: +# Translators: # Adolfo Gómez , 2022 # Alexander , 2020 # Alexey Shabalin , 2019 @@ -21,18 +22,18 @@ msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" -"Last-Translator: Elena Mishina, 2022-2023\n" -"Language-Team: Russian (http://www.transifex.com/openuds/openuds/language/" +"Last-Translator: Александр Бурматов, 2022\n" +"Language-Team: Russian (http://app.transifex.com/openuds/openuds/language/" "ru/)\n" "Language: ru\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n" -"%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n" -"%100>=11 && n%100<=14)? 2 : 3);\n" +"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && " +"n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || " +"(n%100>=11 && n%100<=14)? 2 : 3);\n" #: static/admin/main.js:1 static/admin/translations-fakejs.js:23 #: static/modern/main-es5.js:1 static/modern/translations-fakejs.js:12 diff --git a/server/src/uds/locale/zh_Hans/LC_MESSAGES/django.po b/server/src/uds/locale/zh_Hans/LC_MESSAGES/django.po index 42650ba35..c02c70f5b 100644 --- a/server/src/uds/locale/zh_Hans/LC_MESSAGES/django.po +++ b/server/src/uds/locale/zh_Hans/LC_MESSAGES/django.po @@ -6,14 +6,16 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:28+0200\n" "PO-Revision-Date: 2014-03-26 02:14+0000\n" "Last-Translator: Javier , 2014\n" -"Language-Team: Chinese (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Chinese (http://app.transifex.com/openuds/openuds/language/" "zh/)\n" "Language: zh\n" "MIME-Version: 1.0\n" @@ -216,11 +218,11 @@ msgid "If active, authenticator will be visible for users" msgstr "如果激活,验证器将对用户可见" #: REST/methods/authenticators.py:126 core/services/service.py:143 -#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:188 +#: core/services/service.py:154 mfas/Email/mfa.py:79 mfas/SMS/mfa.py:189 #: models/permissions.py:92 models/permissions.py:96 #: services/Azure_enterprise/helpers.py:116 services/OpenStack/helpers.py:82 #: services/Proxmox/service.py:208 services/Sample/service.py:100 -#: services/Sample/service.py:106 services/TestService_enterprise/service.py:29 +#: services/Sample/service.py:106 msgid "None" msgstr "没有" @@ -241,7 +243,6 @@ msgid "Refine your query" msgstr "优化您的查询" #: REST/methods/authenticators.py:233 -#| msgid "Label must contain only letters, numbers, \":\" and \"-\"" msgid "Label must contain only letters, numbers, or symbols: - : ." msgstr "标签必须仅包含字母、数字或符号:- : 。" @@ -671,10 +672,10 @@ msgstr "可用报告" #: REST/methods/reports.py:67 REST/methods/users_groups.py:386 #: REST/methods/users_groups.py:407 #: auths/ActiveDirectory_enterprise/authenticator.py:174 -#: auths/AzureAD_enterprise/azure_ad.py:95 -#: auths/EDirectory_enterprise/authenticator.py:114 -#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:201 -#: auths/SAML_enterprise/saml.py:109 auths/SimpleLDAP/authenticator.py:182 +#: auths/AzureAD_enterprise/azure_ad.py:97 +#: auths/EDirectory_enterprise/authenticator.py:133 +#: auths/Radius/authenticator.py:63 auths/RegexLdap/authenticator.py:219 +#: auths/SAML_enterprise/saml.py:108 auths/SimpleLDAP/authenticator.py:212 #: models/calendar_action.py:147 models/calendar_action.py:154 msgid "Group" msgstr "组" @@ -714,7 +715,7 @@ msgid "Services Pools" msgstr "服务池" #: REST/methods/services.py:252 REST/methods/services.py:315 -#: auths/AzureAD_enterprise/azure_ad.py:130 +#: auths/AzureAD_enterprise/azure_ad.py:132 #: services/AWS_enterprise/provider.py:87 #: services/Azure_enterprise/provider.py:109 services/OpenStack/provider.py:209 #: services/OpenStack/provider_legacy.py:195 @@ -728,7 +729,7 @@ msgstr "防火墙后面的服务代理" #: REST/methods/services.py:318 REST/methods/services_pools.py:359 #: REST/methods/services_pools.py:370 REST/methods/services_pools.py:381 #: REST/methods/services_pools.py:489 REST/methods/services_pools.py:501 -#: auths/RegexLdap/authenticator.py:176 core/ui/user_interface.py:101 +#: auths/RegexLdap/authenticator.py:194 core/ui/user_interface.py:101 #: osmanagers/WindowsOsManager/windows_domain.py:105 #: osmanagers/WindowsOsManager/windows_domain.py:113 #: osmanagers/WindowsOsManager/windows_domain.py:121 @@ -1023,10 +1024,10 @@ msgstr "工作人员" #: REST/methods/users_groups.py:115 REST/methods/users_groups.py:138 #: auths/ActiveDirectory_enterprise/authenticator.py:70 -#: auths/AzureAD_enterprise/azure_ad.py:94 +#: auths/AzureAD_enterprise/azure_ad.py:96 #: auths/EDirectory_enterprise/authenticator.py:69 #: auths/Radius/authenticator.py:62 auths/RegexLdap/authenticator.py:91 -#: auths/SAML_enterprise/saml.py:106 reports/lists/audit.py:120 +#: auths/SAML_enterprise/saml.py:105 reports/lists/audit.py:120 #: reports/stats/pool_users_summary.py:177 reports/stats/usage_by_pool.py:172 #: templates/uds/reports/stats/pool-users-summary.html:14 #: templates/uds/reports/stats/usage-by-pool.html:15 @@ -1044,8 +1045,8 @@ msgstr "目前的用户" #: REST/methods/users_groups.py:162 #: auths/ActiveDirectory_enterprise/authenticator.py:172 -#: auths/EDirectory_enterprise/authenticator.py:112 -#: auths/RegexLdap/authenticator.py:199 auths/SimpleLDAP/authenticator.py:180 +#: auths/EDirectory_enterprise/authenticator.py:131 +#: auths/RegexLdap/authenticator.py:217 auths/SimpleLDAP/authenticator.py:210 #: mfas/Email/mfa.py:87 services/HyperV_enterprise/legacy/provider.py:103 #: services/HyperV_enterprise/provider.py:86 #: services/NutanixPrism_enterprise/provider.py:54 @@ -1055,7 +1056,8 @@ msgstr "目前的用户" #: services/Proxmox/provider.py:83 services/RDS_enterprise/provider.py:128 #: services/VCloud_enterprise/provider.py:58 #: services/Vmware_enterprise/provider.py:60 services/Xen/provider.py:107 -#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5VNC/html5vnc.py:87 +#: transports/HTML5RDP/html5rdp.py:100 transports/HTML5SSH/html5ssh.py:84 +#: transports/HTML5VNC/html5vnc.py:87 #: transports/NICEDCV_enterprise/nicedcv_base.py:46 #: transports/NoMachine_enterprise/nomachine_base.py:63 #: transports/PCoIP_enterprise/pcoip.py:61 transports/RDP/rdp_base.py:75 @@ -1193,8 +1195,8 @@ msgstr "在所选基础上具有读取权限的用户名(使用USER@DOMAIN.DOM #: auths/ActiveDirectory_enterprise/authenticator.py:80 #: auths/ActiveDirectory_enterprise/authenticator.py:176 #: auths/EDirectory_enterprise/authenticator.py:77 -#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:203 -#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:184 +#: auths/RegexLdap/authenticator.py:99 auths/RegexLdap/authenticator.py:221 +#: auths/SimpleLDAP/authenticator.py:90 auths/SimpleLDAP/authenticator.py:214 #: core/auths/authenticator.py:147 mfas/Email/mfa.py:96 #: osmanagers/WindowsOsManager/windows_domain.py:85 #: osmanagers/WindowsOsManager/windows_random.py:76 @@ -1275,11 +1277,15 @@ msgid "Timeout in seconds of connection to Active Directory" msgstr "连接到Active Directory的超时(以秒为单位)" #: auths/ActiveDirectory_enterprise/authenticator.py:132 +#: auths/EDirectory_enterprise/authenticator.py:94 +#: auths/RegexLdap/authenticator.py:116 auths/SimpleLDAP/authenticator.py:107 #: services/Vmware_enterprise/provider.py:121 msgid "Verify SSL" msgstr "验证 SSL" #: auths/ActiveDirectory_enterprise/authenticator.py:136 +#: auths/EDirectory_enterprise/authenticator.py:98 +#: auths/RegexLdap/authenticator.py:120 auths/SimpleLDAP/authenticator.py:111 #: services/Vmware_enterprise/provider.py:125 msgid "" "If checked, SSL verification will be enforced. If not, SSL verification will " @@ -1287,26 +1293,29 @@ msgid "" msgstr "如果选中,将强制执行 SSL 验证。否则,SSL 验证将被禁用" #: auths/ActiveDirectory_enterprise/authenticator.py:144 -#: auths/SAML_enterprise/saml.py:129 transports/SPICE/spice_base.py:83 +#: auths/EDirectory_enterprise/authenticator.py:105 +#: auths/RegexLdap/authenticator.py:127 auths/SAML_enterprise/saml.py:128 +#: auths/SimpleLDAP/authenticator.py:118 transports/SPICE/spice_base.py:83 msgid "Certificate" msgstr "证书" #: auths/ActiveDirectory_enterprise/authenticator.py:146 -#| msgid "Force SSL certificate verification" +#: auths/EDirectory_enterprise/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:129 auths/SimpleLDAP/authenticator.py:120 msgid "Certificate to use for SSL verification" msgstr "用于 SSL 验证的证书" #: auths/ActiveDirectory_enterprise/authenticator.py:154 -#: auths/EDirectory_enterprise/authenticator.py:95 -#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:182 -#: auths/SAML_enterprise/saml.py:207 +#: auths/EDirectory_enterprise/authenticator.py:114 +#: auths/Radius/authenticator.py:118 auths/RegexLdap/authenticator.py:200 +#: auths/SAML_enterprise/saml.py:206 auths/SimpleLDAP/authenticator.py:192 msgid "MFA attribute" msgstr "MFA 属性" #: auths/ActiveDirectory_enterprise/authenticator.py:156 -#: auths/EDirectory_enterprise/authenticator.py:97 -#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:184 -#: auths/SAML_enterprise/saml.py:209 +#: auths/EDirectory_enterprise/authenticator.py:116 +#: auths/Radius/authenticator.py:120 auths/RegexLdap/authenticator.py:202 +#: auths/SAML_enterprise/saml.py:208 auths/SimpleLDAP/authenticator.py:194 msgid "Attribute from where to extract the MFA code" msgstr "从哪里提取 MFA 代码的属性" @@ -1319,106 +1328,106 @@ msgid "Authenticate against Active Directory" msgstr "针对Active Directory进行身份验证" #: auths/ActiveDirectory_enterprise/authenticator.py:213 -#: auths/ActiveDirectory_enterprise/authenticator.py:688 +#: auths/ActiveDirectory_enterprise/authenticator.py:693 msgid "Must specify the username in the form USERNAME@DOMAIN.DOM" msgstr "必须以USERNAME@DOMAIN.DOM格式指定用户名" -#: auths/ActiveDirectory_enterprise/authenticator.py:356 +#: auths/ActiveDirectory_enterprise/authenticator.py:361 msgid "" "Could not connect to any AD server. Check your configuration (server, ssl " "certificates, ...)." msgstr "无法连接到任何 AD 服务器。检查您的配置(服务器、ssl 证书等)。" -#: auths/ActiveDirectory_enterprise/authenticator.py:561 -#: auths/ActiveDirectory_enterprise/authenticator.py:618 -#: auths/AzureAD_enterprise/azure_ad.py:315 -#: auths/EDirectory_enterprise/authenticator.py:293 -#: auths/EDirectory_enterprise/authenticator.py:324 -#: auths/RegexLdap/authenticator.py:586 auths/RegexLdap/authenticator.py:617 -#: auths/SimpleLDAP/authenticator.py:435 auths/SimpleLDAP/authenticator.py:478 +#: auths/ActiveDirectory_enterprise/authenticator.py:566 +#: auths/ActiveDirectory_enterprise/authenticator.py:623 +#: auths/AzureAD_enterprise/azure_ad.py:318 +#: auths/EDirectory_enterprise/authenticator.py:316 +#: auths/EDirectory_enterprise/authenticator.py:347 +#: auths/RegexLdap/authenticator.py:589 auths/RegexLdap/authenticator.py:620 +#: auths/SimpleLDAP/authenticator.py:508 auths/SimpleLDAP/authenticator.py:551 msgid "Username not found" msgstr "找不到用户名" -#: auths/ActiveDirectory_enterprise/authenticator.py:600 -#: auths/SimpleLDAP/authenticator.py:468 +#: auths/ActiveDirectory_enterprise/authenticator.py:605 +#: auths/SimpleLDAP/authenticator.py:541 msgid "Group not found" msgstr "未找到组" -#: auths/ActiveDirectory_enterprise/authenticator.py:645 -#: auths/ActiveDirectory_enterprise/authenticator.py:667 -#: auths/EDirectory_enterprise/authenticator.py:346 -#: auths/RegexLdap/authenticator.py:645 auths/SimpleLDAP/authenticator.py:503 -#: auths/SimpleLDAP/authenticator.py:523 +#: auths/ActiveDirectory_enterprise/authenticator.py:650 +#: auths/ActiveDirectory_enterprise/authenticator.py:672 +#: auths/EDirectory_enterprise/authenticator.py:369 +#: auths/RegexLdap/authenticator.py:648 auths/SimpleLDAP/authenticator.py:576 +#: auths/SimpleLDAP/authenticator.py:596 msgid "Too many results, be more specific" msgstr "结果太多,更具体" -#: auths/ActiveDirectory_enterprise/authenticator.py:699 +#: auths/ActiveDirectory_enterprise/authenticator.py:704 msgid "Domain seems to be incorrect, please check it" msgstr "域似乎不正确,请检查它" -#: auths/ActiveDirectory_enterprise/authenticator.py:718 +#: auths/ActiveDirectory_enterprise/authenticator.py:723 msgid "" "Server does not seem an Active Directory (it does not have user objects)" msgstr "服务器似乎不是Active Directory(它没有用户对象)" -#: auths/ActiveDirectory_enterprise/authenticator.py:741 +#: auths/ActiveDirectory_enterprise/authenticator.py:746 msgid "" "Server does not seem an Active Directory (it does not have group objects)" msgstr "服务器似乎不是Active Directory(它没有组对象)" -#: auths/ActiveDirectory_enterprise/authenticator.py:750 -#: auths/EDirectory_enterprise/authenticator.py:469 -#: auths/RegexLdap/authenticator.py:755 auths/SimpleLDAP/authenticator.py:686 +#: auths/ActiveDirectory_enterprise/authenticator.py:755 +#: auths/EDirectory_enterprise/authenticator.py:492 +#: auths/RegexLdap/authenticator.py:758 auths/SimpleLDAP/authenticator.py:759 msgid "Connection params seem correct, test was succesfully executed" msgstr "连接参数似乎正确,测试成功执行" -#: auths/AzureAD_enterprise/azure_ad.py:79 +#: auths/AzureAD_enterprise/azure_ad.py:81 msgid "Azure AD Authenticator" msgstr "Azure AD身份验证器" -#: auths/AzureAD_enterprise/azure_ad.py:81 +#: auths/AzureAD_enterprise/azure_ad.py:83 msgid "Azure Active Directory Authenticator" msgstr "Azure Active Directory身份验证器" -#: auths/AzureAD_enterprise/azure_ad.py:99 +#: auths/AzureAD_enterprise/azure_ad.py:101 #: services/Azure_enterprise/provider.py:46 msgid "Tenant ID" msgstr "租户ID" -#: auths/AzureAD_enterprise/azure_ad.py:101 +#: auths/AzureAD_enterprise/azure_ad.py:103 #: services/Azure_enterprise/provider.py:48 msgid "Obtained from Azure Active Directory - Properties - Directory ID" msgstr "从Azure Active Directory获取 - 属性 - 目录ID" -#: auths/AzureAD_enterprise/azure_ad.py:106 +#: auths/AzureAD_enterprise/azure_ad.py:108 #: services/Azure_enterprise/provider.py:53 msgid "Client ID" msgstr "客户ID" -#: auths/AzureAD_enterprise/azure_ad.py:108 +#: auths/AzureAD_enterprise/azure_ad.py:110 #: services/Azure_enterprise/provider.py:55 msgid "Obtained from App created on Azure for UDS Enterprise" msgstr "从Azure上为UDS Enterprise创建的应用程序获取" -#: auths/AzureAD_enterprise/azure_ad.py:113 +#: auths/AzureAD_enterprise/azure_ad.py:115 #: services/Azure_enterprise/provider.py:60 msgid "Client Secret" msgstr "客户秘密" -#: auths/AzureAD_enterprise/azure_ad.py:115 +#: auths/AzureAD_enterprise/azure_ad.py:117 #: services/Azure_enterprise/provider.py:62 msgid "Obtained from App created on Azure for UDS Enteprise - Keys" msgstr "从Azure上为UDS Enteprise创建的应用程序获得 - 密钥" -#: auths/AzureAD_enterprise/azure_ad.py:121 +#: auths/AzureAD_enterprise/azure_ad.py:123 msgid "Callback" msgstr "打回来" -#: auths/AzureAD_enterprise/azure_ad.py:123 +#: auths/AzureAD_enterprise/azure_ad.py:125 msgid "Callback url (Filled by UDS, fix this only if necesary!!)" msgstr "回调网址(由UDS填写,仅在必要时修复此问题!)" -#: auths/AzureAD_enterprise/azure_ad.py:133 +#: auths/AzureAD_enterprise/azure_ad.py:135 #: services/Azure_enterprise/provider.py:112 msgid "" "Proxy used for connection to azure for HTTPS connections (use PROTOCOL://" @@ -1427,50 +1436,50 @@ msgstr "" "用于连接到Azure的HTTPS连接的代理(使用PROTOCOL:// host:port,即" "https://10.10.0.1:8080)" -#: auths/AzureAD_enterprise/azure_ad.py:140 +#: auths/AzureAD_enterprise/azure_ad.py:142 msgid "Enable School Data Sync Integration" msgstr "启用学校数据同步集成" -#: auths/AzureAD_enterprise/azure_ad.py:143 +#: auths/AzureAD_enterprise/azure_ad.py:145 msgid "" "Enable only if you have Microsoft School Data Sync in your Environnment." msgstr "仅当您的环境中有 Microsoft School Data Sync 时才启用。" -#: auths/AzureAD_enterprise/azure_ad.py:150 +#: auths/AzureAD_enterprise/azure_ad.py:152 msgid "Azure Logout method." msgstr "Azure 注销方法。" -#: auths/AzureAD_enterprise/azure_ad.py:152 +#: auths/AzureAD_enterprise/azure_ad.py:154 msgid "UDS Redirection to Microsoft logout pages on UDS logout." msgstr "UDS 注销时重定向到 Microsoft 注销页面。" -#: auths/AzureAD_enterprise/azure_ad.py:156 +#: auths/AzureAD_enterprise/azure_ad.py:158 msgid "Do not redirect" msgstr "不要重定向" -#: auths/AzureAD_enterprise/azure_ad.py:157 +#: auths/AzureAD_enterprise/azure_ad.py:159 msgid "Microsoft logout" msgstr "微软注销" -#: auths/AzureAD_enterprise/azure_ad.py:158 +#: auths/AzureAD_enterprise/azure_ad.py:160 msgid "Office 365 logout" msgstr "Office 365 注销" -#: auths/AzureAD_enterprise/azure_ad.py:176 +#: auths/AzureAD_enterprise/azure_ad.py:178 msgid "SAML Authenticator does not support white spaces on field NAME" msgstr "SAML身份验证器不支持字段NAME上的空格" -#: auths/AzureAD_enterprise/azure_ad.py:325 -#: auths/AzureAD_enterprise/azure_ad.py:351 -#: auths/AzureAD_enterprise/azure_ad.py:361 +#: auths/AzureAD_enterprise/azure_ad.py:328 +#: auths/AzureAD_enterprise/azure_ad.py:354 +#: auths/AzureAD_enterprise/azure_ad.py:364 msgid "Authenticator exception:" msgstr "验证者例外:" -#: auths/AzureAD_enterprise/azure_ad.py:396 core/util/ldaputil.py:50 +#: auths/AzureAD_enterprise/azure_ad.py:399 core/util/ldaputil.py:50 msgid "Connection error: " msgstr "连接错误:" -#: auths/AzureAD_enterprise/azure_ad.py:399 +#: auths/AzureAD_enterprise/azure_ad.py:402 msgid "Connection params seems correct, test was succesfully executed" msgstr "连接参数似乎是正确的,测试成功执行" @@ -1497,40 +1506,40 @@ msgstr "具有eDirectory读取权限的用户名" msgid "Timeout in seconds of connection to LDAP" msgstr "连接到LDAP的超时(以秒为单位)" -#: auths/EDirectory_enterprise/authenticator.py:102 +#: auths/EDirectory_enterprise/authenticator.py:121 msgid "eDirectory Authenticator" msgstr "eDirectory身份验证器" -#: auths/EDirectory_enterprise/authenticator.py:104 +#: auths/EDirectory_enterprise/authenticator.py:123 msgid "Authenticate against eDirectory" msgstr "针对eDirectory进行身份验证" -#: auths/EDirectory_enterprise/authenticator.py:364 +#: auths/EDirectory_enterprise/authenticator.py:387 msgid "Edirectory connection error: {}" msgstr "电子目录连接错误:{}" -#: auths/EDirectory_enterprise/authenticator.py:369 -#: auths/RegexLdap/authenticator.py:668 auths/SimpleLDAP/authenticator.py:548 +#: auths/EDirectory_enterprise/authenticator.py:392 +#: auths/RegexLdap/authenticator.py:671 auths/SimpleLDAP/authenticator.py:621 msgid "Ldap search base is incorrect" msgstr "Ldap搜索库不正确" -#: auths/EDirectory_enterprise/authenticator.py:387 -#: auths/RegexLdap/authenticator.py:686 auths/SimpleLDAP/authenticator.py:556 +#: auths/EDirectory_enterprise/authenticator.py:410 +#: auths/RegexLdap/authenticator.py:689 auths/SimpleLDAP/authenticator.py:629 msgid "Ldap user class seems to be incorrect (no user found by that class)" msgstr "Ldap用户类似乎不正确(该类没有找到用户)" -#: auths/EDirectory_enterprise/authenticator.py:410 -#: auths/SimpleLDAP/authenticator.py:602 +#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/SimpleLDAP/authenticator.py:675 msgid "" "Ldap user id attribute seems to be incorrect (no user found by that " "attribute)" msgstr "Ldap用户标识属性似乎不正确(该属性找不到用户)" -#: auths/EDirectory_enterprise/authenticator.py:433 +#: auths/EDirectory_enterprise/authenticator.py:456 msgid "Expected group attribute " msgstr "预期的组属性" -#: auths/EDirectory_enterprise/authenticator.py:460 +#: auths/EDirectory_enterprise/authenticator.py:483 msgid "" "Ldap user class or user id attr is probably wrong (Ldap is an eDirectory?)" msgstr "Ldap用户类或用户ID attr可能是错误的(Ldap是eDirectory?)" @@ -1593,11 +1602,11 @@ msgstr "反向DNS" msgid "If checked, the host will be reversed dns" msgstr "如果选中,则主机将被反转dns" -#: auths/InternalDB/authenticator.py:180 +#: auths/InternalDB/authenticator.py:182 msgid "Internal structures seems ok" msgstr "内部结构似乎没问题" -#: auths/InternalDB/authenticator.py:183 +#: auths/InternalDB/authenticator.py:185 msgid "All seems fine in the authenticator." msgstr "在验证器中一切似乎都很好。" @@ -1665,243 +1674,247 @@ msgstr "Ldap服务器主机" msgid "Username with read privileges on the base selected" msgstr "在所选基础上具有读取权限的用户名" -#: auths/RegexLdap/authenticator.py:117 auths/SimpleLDAP/authenticator.py:107 +#: auths/RegexLdap/authenticator.py:135 auths/SimpleLDAP/authenticator.py:127 #: services/Nutanix_enterprise/provider.py:118 msgid "Base" msgstr "基础" -#: auths/RegexLdap/authenticator.py:119 auths/SimpleLDAP/authenticator.py:109 +#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:129 msgid "Common search base (used for \"users\" and \"groups\")" msgstr "通用搜索库(用于“用户”和“组”)" -#: auths/RegexLdap/authenticator.py:121 auths/RegexLdap/authenticator.py:130 -#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:151 -#: auths/RegexLdap/authenticator.py:163 auths/SimpleLDAP/authenticator.py:111 -#: auths/SimpleLDAP/authenticator.py:120 auths/SimpleLDAP/authenticator.py:129 +#: auths/RegexLdap/authenticator.py:139 auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:157 auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:181 auths/SimpleLDAP/authenticator.py:131 #: auths/SimpleLDAP/authenticator.py:140 auths/SimpleLDAP/authenticator.py:149 -#: auths/SimpleLDAP/authenticator.py:158 auths/SimpleLDAP/authenticator.py:167 +#: auths/SimpleLDAP/authenticator.py:160 auths/SimpleLDAP/authenticator.py:169 +#: auths/SimpleLDAP/authenticator.py:178 auths/SimpleLDAP/authenticator.py:187 msgid "Ldap info" msgstr "Ldap信息" -#: auths/RegexLdap/authenticator.py:125 auths/SimpleLDAP/authenticator.py:115 +#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:135 msgid "User class" msgstr "用户类" -#: auths/RegexLdap/authenticator.py:128 auths/SimpleLDAP/authenticator.py:118 +#: auths/RegexLdap/authenticator.py:146 auths/SimpleLDAP/authenticator.py:138 msgid "Class for LDAP users (normally posixAccount)" msgstr "LDAP用户的类(通常为posixAccount)" -#: auths/RegexLdap/authenticator.py:134 auths/SimpleLDAP/authenticator.py:124 +#: auths/RegexLdap/authenticator.py:152 auths/SimpleLDAP/authenticator.py:144 msgid "User Id Attr" msgstr "用户ID Attr" -#: auths/RegexLdap/authenticator.py:137 auths/SimpleLDAP/authenticator.py:127 +#: auths/RegexLdap/authenticator.py:155 auths/SimpleLDAP/authenticator.py:147 msgid "Attribute that contains the user id" msgstr "包含用户标识的属性" -#: auths/RegexLdap/authenticator.py:143 auths/SimpleLDAP/authenticator.py:133 +#: auths/RegexLdap/authenticator.py:161 auths/SimpleLDAP/authenticator.py:153 msgid "User Name Attr" msgstr "用户名Attr" -#: auths/RegexLdap/authenticator.py:148 +#: auths/RegexLdap/authenticator.py:166 msgid "" "Attributes that contains the user name attributes or attribute patterns (one " "for each line)" msgstr "包含用户名属性或属性模式的属性(每行一个)" -#: auths/RegexLdap/authenticator.py:155 +#: auths/RegexLdap/authenticator.py:173 msgid "Group Name Attr" msgstr "集团名称Attr" -#: auths/RegexLdap/authenticator.py:160 +#: auths/RegexLdap/authenticator.py:178 msgid "" "Attribute that contains the group name attributes or attribute patterns (one " "for each line)" msgstr "包含组名属性或属性模式的属性(每行一个)" -#: auths/RegexLdap/authenticator.py:169 +#: auths/RegexLdap/authenticator.py:187 msgid "Alt. class" msgstr "Alt键。类" -#: auths/RegexLdap/authenticator.py:173 +#: auths/RegexLdap/authenticator.py:191 msgid "" "Class for LDAP objects that will be also checked for groups retrieval " "(normally empty)" msgstr "LDAP对象的类,也将检查组检索(通常为空)" -#: auths/RegexLdap/authenticator.py:189 +#: auths/RegexLdap/authenticator.py:207 msgid "Regex LDAP Authenticator" msgstr "正则表达式LDAP身份验证器" -#: auths/RegexLdap/authenticator.py:191 +#: auths/RegexLdap/authenticator.py:209 msgid "Regular Expressions LDAP authenticator" msgstr "正则表达式LDAP身份验证器" -#: auths/RegexLdap/authenticator.py:711 +#: auths/RegexLdap/authenticator.py:714 msgid "" "Ldap user id attr is probably wrong (can't find any user with both " "conditions)" msgstr "Ldap用户ID attr可能是错误的(找不到具有这两个条件的任何用户)" -#: auths/RegexLdap/authenticator.py:740 auths/SimpleLDAP/authenticator.py:625 +#: auths/RegexLdap/authenticator.py:743 auths/SimpleLDAP/authenticator.py:698 msgid "" "Ldap group id attribute seems to be incorrect (no group found by that " "attribute)" msgstr "Ldap组id属性似乎不正确(该属性找不到任何组)" -#: auths/SAML_enterprise/saml.py:76 +#: auths/SAML_enterprise/saml.py:75 msgid "SAML Authenticator" msgstr "SAML身份验证器" -#: auths/SAML_enterprise/saml.py:88 +#: auths/SAML_enterprise/saml.py:87 msgid "SAML (v2.0) Authenticator" msgstr "SAML(v2.0)身份验证器" -#: auths/SAML_enterprise/saml.py:118 +#: auths/SAML_enterprise/saml.py:117 msgid "Private key" msgstr "私钥" -#: auths/SAML_enterprise/saml.py:121 +#: auths/SAML_enterprise/saml.py:120 msgid "" "Private key used for sign and encription, as generated in base 64 from " "openssl" msgstr "用于签名和登记的私钥,由openssl在base 64中生成" -#: auths/SAML_enterprise/saml.py:124 auths/SAML_enterprise/saml.py:135 +#: auths/SAML_enterprise/saml.py:123 auths/SAML_enterprise/saml.py:134 msgid "Certificates" msgstr "证书" -#: auths/SAML_enterprise/saml.py:132 +#: auths/SAML_enterprise/saml.py:131 msgid "" "Public key used for sign and encription (public part of previous private " "key), as generated in base 64 from openssl" msgstr "用于签名和登记的公钥(前一个私钥的公共部分),由openssl在base 64中生成" -#: auths/SAML_enterprise/saml.py:140 +#: auths/SAML_enterprise/saml.py:139 msgid "IDP Metadata" msgstr "IDP元数据" -#: auths/SAML_enterprise/saml.py:143 +#: auths/SAML_enterprise/saml.py:142 msgid "" "You can enter here the URL or the IDP metadata or the metadata itself (xml)" msgstr "您可以在此处输入URL或IDP元数据或元数据本身(xml)" -#: auths/SAML_enterprise/saml.py:146 auths/SAML_enterprise/saml.py:155 +#: auths/SAML_enterprise/saml.py:145 auths/SAML_enterprise/saml.py:154 msgid "Metadata" msgstr "元数据" -#: auths/SAML_enterprise/saml.py:150 +#: auths/SAML_enterprise/saml.py:149 msgid "Entity ID" msgstr "实体ID" -#: auths/SAML_enterprise/saml.py:153 +#: auths/SAML_enterprise/saml.py:152 msgid "ID of the SP. If left blank, this will be autogenerated from server URL" msgstr "SP的ID。如果留空,则会从服务器URL自动生成" -#: auths/SAML_enterprise/saml.py:161 +#: auths/SAML_enterprise/saml.py:160 msgid "User name attrs" msgstr "用户名attrs" -#: auths/SAML_enterprise/saml.py:163 +#: auths/SAML_enterprise/saml.py:162 msgid "Fields from where to extract user name" msgstr "从哪里提取用户名的字段" -#: auths/SAML_enterprise/saml.py:165 auths/SAML_enterprise/saml.py:175 -#: auths/SAML_enterprise/saml.py:185 +#: auths/SAML_enterprise/saml.py:164 auths/SAML_enterprise/saml.py:174 +#: auths/SAML_enterprise/saml.py:184 msgid "Attributes" msgstr "属性" -#: auths/SAML_enterprise/saml.py:171 +#: auths/SAML_enterprise/saml.py:170 msgid "Group name attrs" msgstr "集团名称attrs" -#: auths/SAML_enterprise/saml.py:173 +#: auths/SAML_enterprise/saml.py:172 msgid "Fields from where to extract the groups" msgstr "从哪里提取组的字段" -#: auths/SAML_enterprise/saml.py:181 +#: auths/SAML_enterprise/saml.py:180 msgid "Real name attrs" msgstr "真名牌" -#: auths/SAML_enterprise/saml.py:183 +#: auths/SAML_enterprise/saml.py:182 msgid "Fields from where to extract the real name" msgstr "字段从哪里提取真实姓名" -#: auths/SAML_enterprise/saml.py:189 +#: auths/SAML_enterprise/saml.py:188 msgid "Global logout" msgstr "全局注销" -#: auths/SAML_enterprise/saml.py:192 +#: auths/SAML_enterprise/saml.py:191 msgid "If set, logout from UDS will trigger SAML logout" msgstr "如果设置,从 UDS 注销将触发 SAML 注销" -#: auths/SAML_enterprise/saml.py:197 +#: auths/SAML_enterprise/saml.py:196 msgid "ADFS compatibility" msgstr "ADFS 兼容性" -#: auths/SAML_enterprise/saml.py:200 +#: auths/SAML_enterprise/saml.py:199 msgid "If set, enable lowercase url encoding so ADFS can work correctly" msgstr "如果设置,则启用小写 url 编码,以便 ADFS 可以正常工作" -#: auths/SAML_enterprise/saml.py:231 +#: auths/SAML_enterprise/saml.py:230 msgid "This kind of Authenticator does not support white spaces on field NAME" msgstr "这种 Authenticator 不支持字段 NAME 上的空格" -#: auths/SAML_enterprise/saml.py:245 +#: auths/SAML_enterprise/saml.py:244 msgid "" "Server certificate should be a valid PEM (PEM certificates starts with -----" "BEGIN CERTIFICATE-----)" msgstr "" "服务器证书应该是有效的PEM(PEM证书以----- BEGIN CERTIFICATE -----开头)" -#: auths/SAML_enterprise/saml.py:253 +#: auths/SAML_enterprise/saml.py:252 msgid "Invalid server certificate. " msgstr "服务器证书无效。" -#: auths/SAML_enterprise/saml.py:264 +#: auths/SAML_enterprise/saml.py:263 msgid "" "Private key should be a valid PEM (PEM private keys starts with -----BEGIN " "RSA PRIVATE KEY-----" msgstr "私钥应该是有效的PEM(PEM私钥以----- BEGIN RSA私钥开头-----" -#: auths/SAML_enterprise/saml.py:272 +#: auths/SAML_enterprise/saml.py:271 msgid "Invalid private key. " msgstr "私钥无效。" -#: auths/SAML_enterprise/saml.py:291 +#: auths/SAML_enterprise/saml.py:276 +msgid "Certificate and private key do not match" +msgstr "证书和私钥不匹配" + +#: auths/SAML_enterprise/saml.py:295 #, python-brace-format msgid "Can't fetch url {0}: {1}" msgstr "无法获取网址{0}:{1}" -#: auths/SAML_enterprise/saml.py:302 +#: auths/SAML_enterprise/saml.py:306 msgid " (obtained from URL)" msgstr "(从URL获得)" -#: auths/SAML_enterprise/saml.py:304 +#: auths/SAML_enterprise/saml.py:308 msgid "XML does not seem valid for IDP Metadata " msgstr "XML似乎对IDP元数据无效" -#: auths/SAML_enterprise/saml.py:357 +#: auths/SAML_enterprise/saml.py:366 msgid "Can't access idp metadata" msgstr "无法访问idp元数据" -#: auths/SAML_enterprise/saml.py:424 +#: auths/SAML_enterprise/saml.py:433 msgid "Error validating SP metadata: " msgstr "验证 SP 元数据时出错:" -#: auths/SAML_enterprise/saml.py:528 +#: auths/SAML_enterprise/saml.py:542 msgid "Error processing SLO: " msgstr "处理 SLO 时出错:" -#: auths/SAML_enterprise/saml.py:558 +#: auths/SAML_enterprise/saml.py:572 msgid "Error processing SAML response: " msgstr "处理 SAML 响应时出错:" -#: auths/SAML_enterprise/saml.py:571 +#: auths/SAML_enterprise/saml.py:585 msgid "SAML response not authenticated" msgstr "SAML 响应未通过身份验证" -#: auths/SAML_enterprise/saml.py:602 +#: auths/SAML_enterprise/saml.py:616 msgid "No attributes returned from IdP" msgstr "没有从 IdP 返回的属性" @@ -1937,59 +1950,61 @@ msgstr "Ldap服务器IP或主机名" msgid "Ldap User" msgstr "Ldap用户" -#: auths/SimpleLDAP/authenticator.py:137 +#: auths/SimpleLDAP/authenticator.py:157 msgid "Attributes that contains the user name (list of comma separated values)" msgstr "包含用户名的属性(逗号分隔值列表)" -#: auths/SimpleLDAP/authenticator.py:144 +#: auths/SimpleLDAP/authenticator.py:164 msgid "Group class" msgstr "小组课" -#: auths/SimpleLDAP/authenticator.py:147 +#: auths/SimpleLDAP/authenticator.py:167 msgid "Class for LDAP groups (normally poxisGroup)" msgstr "LDAP组的类(通常是poxisGroup)" -#: auths/SimpleLDAP/authenticator.py:153 +#: auths/SimpleLDAP/authenticator.py:173 msgid "Group Id Attr" msgstr "Group Id Attr" -#: auths/SimpleLDAP/authenticator.py:156 +#: auths/SimpleLDAP/authenticator.py:176 msgid "Attribute that contains the group id" msgstr "包含组ID的属性" -#: auths/SimpleLDAP/authenticator.py:162 +#: auths/SimpleLDAP/authenticator.py:182 msgid "Group membership attr" msgstr "集团成员资格attr" -#: auths/SimpleLDAP/authenticator.py:165 +#: auths/SimpleLDAP/authenticator.py:185 msgid "Attribute of the group that contains the users belonging to it" msgstr "包含属于它的用户的组的属性" -#: auths/SimpleLDAP/authenticator.py:170 -msgid "SimpleLDAP (DEPRECATED)" -msgstr "SimpleLDAP(不建议使用)" +#: auths/SimpleLDAP/authenticator.py:200 +#| msgid "SimpleLDAP (DEPRECATED)" +msgid "SimpleLDAP" +msgstr "简单的LDAP" -#: auths/SimpleLDAP/authenticator.py:172 -msgid "Simple LDAP authenticator (DEPRECATED)" -msgstr "简单LDAP身份验证器(不推荐使用)" +#: auths/SimpleLDAP/authenticator.py:202 +#| msgid "Sample Authenticator" +msgid "Simple LDAP authenticator" +msgstr "简单的 LDAP 验证器" -#: auths/SimpleLDAP/authenticator.py:579 +#: auths/SimpleLDAP/authenticator.py:652 msgid "Ldap group class seems to be incorrect (no group found by that class)" msgstr "Ldap组类似乎不正确(该类没有找到组)" -#: auths/SimpleLDAP/authenticator.py:650 +#: auths/SimpleLDAP/authenticator.py:723 msgid "" "Ldap user class or user id attr is probably wrong (can't find any user with " "both conditions)" msgstr "Ldap用户类或用户ID attr可能是错误的(找不到具有这两个条件的任何用户)" -#: auths/SimpleLDAP/authenticator.py:669 +#: auths/SimpleLDAP/authenticator.py:742 msgid "" "Ldap group class or group id attr is probably wrong (can't find any group " "with both conditions)" msgstr "Ldap组类或组ID attr可能是错误的(找不到具有这两个条件的任何组)" -#: auths/SimpleLDAP/authenticator.py:679 +#: auths/SimpleLDAP/authenticator.py:752 msgid "Can't locate any group with the membership attribute specified" msgstr "找不到指定了成员资格属性的任何组" @@ -2064,7 +2079,7 @@ msgstr "无法从此设备访问该服务" msgid "Base MFA" msgstr "基础 MFA" -#: core/mfas/mfa.py:259 +#: core/mfas/mfa.py:266 msgid "Invalid MFA code" msgstr "无效的 MFA 代码" @@ -2128,7 +2143,7 @@ msgstr "证书" msgid "Tunnel" msgstr "隧道" -#: core/util/ldaputil.py:118 +#: core/util/ldaputil.py:125 msgid "Can't contact LDAP server" msgstr "无法联系LDAP服务器" @@ -2433,8 +2448,8 @@ msgstr "电子邮件的主题" #: mfas/Email/mfa.py:111 mfas/Email/mfa.py:120 mfas/Email/mfa.py:128 #: mfas/Email/mfa.py:143 mfas/Email/mfa.py:153 mfas/Email/mfa.py:164 #: mfas/Email/mfa.py:175 mfas/Radius/mfa.py:116 mfas/Radius/mfa.py:126 -#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:236 mfas/SMS/mfa.py:251 -#: mfas/SMS/mfa.py:261 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 +#: mfas/Radius/mfa.py:141 mfas/SMS/mfa.py:237 mfas/SMS/mfa.py:252 +#: mfas/SMS/mfa.py:262 mfas/TOTP/mfa.py:86 mfas/TOTP/mfa.py:95 msgid "Config" msgstr "配置" @@ -2463,12 +2478,12 @@ msgid "Action for MFA response error" msgstr "针对 MFA 响应错误的操作" #: mfas/Email/mfa.py:138 mfas/Radius/mfa.py:111 mfas/Radius/mfa.py:136 -#: mfas/SMS/mfa.py:231 mfas/SMS/mfa.py:246 +#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 msgid "Allow user login" msgstr "允许用户登录" #: mfas/Email/mfa.py:139 mfas/Radius/mfa.py:112 mfas/Radius/mfa.py:137 -#: mfas/SMS/mfa.py:232 mfas/SMS/mfa.py:247 +#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 msgid "Deny user login" msgstr "拒绝用户登录" @@ -2497,9 +2512,8 @@ msgid "Text of the email. If empty, a default text will be used" msgstr "电子邮件的文本。如果为空,将使用默认文本" #: mfas/Email/mfa.py:161 mfas/Email/mfa.py:172 -#, python-brace-format -msgid "Allowed variables are: {code}, {username}, {ip}" -msgstr "允许的变量是:{code}、{username}、{ip}" +msgid "Allowed variables are: " +msgstr "允许的变量是:" #: mfas/Email/mfa.py:169 msgid "Mail HTML" @@ -2589,19 +2603,19 @@ msgstr "半径 OTP 连接错误" msgid "Invalid OTP code" msgstr "无效的 OTP 代码" -#: mfas/SMS/mfa.py:96 +#: mfas/SMS/mfa.py:97 msgid "SMS via HTTP" msgstr "通过 HTTP 发送短信" -#: mfas/SMS/mfa.py:98 +#: mfas/SMS/mfa.py:99 msgid "Simple SMS sending MFA using HTTP/HTTPS" msgstr "使用 HTTP/HTTPS 发送 MFA 的简单短信" -#: mfas/SMS/mfa.py:103 +#: mfas/SMS/mfa.py:104 msgid "URL pattern for SMS sending" msgstr "SMS 发送的 URL 模式" -#: mfas/SMS/mfa.py:106 +#: mfas/SMS/mfa.py:107 msgid "" "URL pattern for SMS sending. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2613,34 +2627,34 @@ msgstr "" "{phone/+phone} - 电话号码 * {username} - 用户名 * {justUsername} - 不带 " "@.... 的用户名" -#: mfas/SMS/mfa.py:114 mfas/SMS/mfa.py:125 mfas/SMS/mfa.py:134 -#: mfas/SMS/mfa.py:152 mfas/SMS/mfa.py:169 mfas/SMS/mfa.py:179 +#: mfas/SMS/mfa.py:115 mfas/SMS/mfa.py:126 mfas/SMS/mfa.py:135 +#: mfas/SMS/mfa.py:153 mfas/SMS/mfa.py:170 mfas/SMS/mfa.py:180 msgid "HTTP Server" msgstr "HTTP 服务器" -#: mfas/SMS/mfa.py:118 +#: mfas/SMS/mfa.py:119 msgid "Ignore certificate errors" msgstr "忽略证书错误" -#: mfas/SMS/mfa.py:122 +#: mfas/SMS/mfa.py:123 msgid "" "If checked, the server certificate will be ignored. This is useful if the " "server uses a self-signed certificate." msgstr "如果选中,服务器证书将被忽略。如果服务器使用自签名证书,这很有用。" -#: mfas/SMS/mfa.py:129 +#: mfas/SMS/mfa.py:130 msgid "SMS sending method" msgstr "短信发送方式" -#: mfas/SMS/mfa.py:131 mfas/SMS/mfa.py:185 +#: mfas/SMS/mfa.py:132 mfas/SMS/mfa.py:186 msgid "Method for sending SMS" msgstr "发送短信的方法" -#: mfas/SMS/mfa.py:140 +#: mfas/SMS/mfa.py:141 msgid "Headers for SMS requests" msgstr "SMS 请求的标头" -#: mfas/SMS/mfa.py:143 +#: mfas/SMS/mfa.py:144 msgid "" "Headers for SMS requests. It can contain the following variables:\n" "* {code} - the code to send\n" @@ -2653,11 +2667,11 @@ msgstr "" "+phone} - 电话号码 * {username} - 用户名 * {justUsername} - 不带 @.... 的用户" "名“标题:值”的形式。 (不带引号)" -#: mfas/SMS/mfa.py:158 +#: mfas/SMS/mfa.py:159 msgid "Parameters for SMS POST/PUT sending" msgstr "SMS POST/PUT 发送参数" -#: mfas/SMS/mfa.py:161 +#: mfas/SMS/mfa.py:162 msgid "" "Parameters for SMS sending via POST/PUT. It can contain the following " "variables:\n" @@ -2670,102 +2684,102 @@ msgstr "" "* {phone/+phone} - 电话号码 * {username} - 用户名 * {justUsername} - 不带 " "@...." -#: mfas/SMS/mfa.py:173 +#: mfas/SMS/mfa.py:174 msgid "SMS encoding" msgstr "短信编码" -#: mfas/SMS/mfa.py:176 +#: mfas/SMS/mfa.py:177 msgid "Encoding for SMS" msgstr "短信编码" -#: mfas/SMS/mfa.py:183 +#: mfas/SMS/mfa.py:184 msgid "SMS authentication method" msgstr "短信认证方式" -#: mfas/SMS/mfa.py:189 +#: mfas/SMS/mfa.py:190 msgid "HTTP Basic Auth" msgstr "HTTP 基本身份验证" -#: mfas/SMS/mfa.py:190 +#: mfas/SMS/mfa.py:191 msgid "HTTP Digest Auth" msgstr "HTTP摘要认证" -#: mfas/SMS/mfa.py:192 mfas/SMS/mfa.py:201 mfas/SMS/mfa.py:210 +#: mfas/SMS/mfa.py:193 mfas/SMS/mfa.py:202 mfas/SMS/mfa.py:211 msgid "HTTP Authentication" msgstr "HTTP 身份验证" -#: mfas/SMS/mfa.py:197 +#: mfas/SMS/mfa.py:198 msgid "SMS authentication user or token" msgstr "短信认证用户或令牌" -#: mfas/SMS/mfa.py:199 +#: mfas/SMS/mfa.py:200 msgid "User or token for SMS authentication" msgstr "用于 SMS 身份验证的用户或令牌" -#: mfas/SMS/mfa.py:206 +#: mfas/SMS/mfa.py:207 msgid "SMS authentication password" msgstr "短信认证密码" -#: mfas/SMS/mfa.py:208 +#: mfas/SMS/mfa.py:209 msgid "Password for SMS authentication" msgstr "短信验证密码" -#: mfas/SMS/mfa.py:215 +#: mfas/SMS/mfa.py:216 msgid "SMS response OK regex" msgstr "短信回复 OK 正则表达式" -#: mfas/SMS/mfa.py:218 +#: mfas/SMS/mfa.py:219 msgid "" "Regex for SMS response OK. If empty, the response is considered OK if status " "code is 200." msgstr "" "SMS 响应的正则表达式 OK。如果为空,则如果状态码为 200,则认为响应正常。" -#: mfas/SMS/mfa.py:221 +#: mfas/SMS/mfa.py:222 msgid "HTTP Response" msgstr "HTTP 响应" -#: mfas/SMS/mfa.py:225 +#: mfas/SMS/mfa.py:226 msgid "SMS response error action" msgstr "短信响应错误动作" -#: mfas/SMS/mfa.py:228 mfas/SMS/mfa.py:243 +#: mfas/SMS/mfa.py:229 mfas/SMS/mfa.py:244 msgid "Action for SMS response error" msgstr "SMS 响应错误的操作" -#: mfas/SMS/mfa.py:233 mfas/SMS/mfa.py:248 +#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 msgid "Allow user to login if its IP is in the networks list" msgstr "如果用户的 IP 在网络列表中,则允许用户登录" -#: mfas/SMS/mfa.py:234 mfas/SMS/mfa.py:249 +#: mfas/SMS/mfa.py:235 mfas/SMS/mfa.py:250 msgid "Deny user to login if its IP is in the networks list" msgstr "如果 IP 在网络列表中,则拒绝用户登录" -#: mfas/SMS/mfa.py:240 +#: mfas/SMS/mfa.py:241 msgid "User without MFA policy" msgstr "没有 MFA 策略的用户" -#: mfas/SMS/mfa.py:255 +#: mfas/SMS/mfa.py:256 msgid "SMS networks" msgstr "短信网络" -#: mfas/SMS/mfa.py:259 +#: mfas/SMS/mfa.py:260 msgid "Networks for SMS authentication" msgstr "用于 SMS 身份验证的网络" -#: mfas/SMS/mfa.py:335 +#: mfas/SMS/mfa.py:333 msgid "SMS sending failed" msgstr "短信发送失败" -#: mfas/SMS/mfa.py:344 +#: mfas/SMS/mfa.py:343 msgid "SMS response error" msgstr "短信回复错误" -#: mfas/SMS/mfa.py:398 web/views/modern.py:312 +#: mfas/SMS/mfa.py:397 web/views/modern.py:316 msgid "MFA Code" msgstr "MFA 代码" -#: mfas/SMS/mfa.py:402 +#: mfas/SMS/mfa.py:401 msgid "Check your phone. You will receive an SMS with the verification code" msgstr "检查你的手机。您将收到一条带有验证码的短信" @@ -4114,7 +4128,7 @@ msgstr "连接测试成功" #: services/HyperV_enterprise/legacy/provider.py:363 #: services/NutanixPrism_enterprise/provider.py:264 #: services/Nutanix_enterprise/provider.py:321 services/OVirt/provider.py:544 -#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:310 +#: services/Proxmox/provider.py:344 services/Vmware_enterprise/provider.py:312 msgid "Connection failed. Check connection params" msgstr "连接失败。检查连接参数" @@ -4135,8 +4149,7 @@ msgstr "基于模板和差异磁盘的超级服务 (LEGACY)" #: services/HyperV_enterprise/legacy/service.py:70 #: services/HyperV_enterprise/service.py:68 services/OVirt/service.py:85 -#: services/Proxmox/service.py:85 services/TestService_enterprise/service.py:27 -#: services/Xen/service.py:82 +#: services/Proxmox/service.py:85 services/Xen/service.py:82 msgid "Number of desired machines to keep running waiting for a user" msgstr "要继续运行等待用户的所需机器数" @@ -4308,8 +4321,8 @@ msgstr "连接到HyperV的超时时间(以秒为单位)。 (将此值保 #: services/HyperV_enterprise/provider.py:187 msgid "" -"For clusters, username must be a domain user name (user@domain or DOMAIN" -"\\user" +"For clusters, username must be a domain user name (user@domain or " +"DOMAIN\\user" msgstr "对于群集,用户名必须是域用户名(user @ domain或DOMAIN \\ user" #: services/HyperV_enterprise/service.py:59 @@ -4384,8 +4397,8 @@ msgstr "选择项目" #: services/NutanixPrism_enterprise/service.py:83 #: services/Nutanix_enterprise/service.py:69 msgid "" -"Memory assigned to machines. (Zero value means \"keep original machine memory" -"\")" +"Memory assigned to machines. (Zero value means \"keep original machine " +"memory\")" msgstr "分配给机器的内存。 (零值表示“保留原始机器内存”)" #: services/NutanixPrism_enterprise/service.py:90 @@ -4748,11 +4761,11 @@ msgstr "基本模板" msgid "Service base template" msgstr "服务基础模板" -#: services/OpenStack/openstack/openstack_client.py:783 +#: services/OpenStack/openstack/openstack_client.py:767 msgid "Authentication error" msgstr "授权错误" -#: services/OpenStack/openstack/openstack_client.py:790 +#: services/OpenStack/openstack/openstack_client.py:774 msgid "" "Openstack does not support identity API 3.2 or newer. This OpenStack server " "is not compatible with UDS." @@ -5415,7 +5428,6 @@ msgid "Methuselah is not alive!!! :-)" msgstr "玛土撒拉还活着! :-)" #: services/Sample/provider.py:205 -#: services/TestService_enterprise/provider.py:56 msgid "Nothing tested, but all went fine.." msgstr "没有测试,但一切都很顺利.." @@ -5471,22 +5483,6 @@ msgstr "虚拟元素的L2缓存" msgid "List of names" msgstr "名单" -#: services/TestService_enterprise/provider.py:49 -msgid "Test Provider" -msgstr "测试提供者" - -#: services/TestService_enterprise/provider.py:51 -msgid "Test (and dummy) service provider" -msgstr "测试(和虚拟)服务提供商" - -#: services/TestService_enterprise/service.py:18 -msgid "Test Service with cache" -msgstr "带缓存的测试服务" - -#: services/TestService_enterprise/service.py:20 -msgid "Test service for cache L1 only" -msgstr "仅限缓存L1的测试服务" - #: services/VCloud_enterprise/provider.py:38 msgid "vCloud Server IP or Hostname" msgstr "vCloud服务器IP或主机名" @@ -5628,7 +5624,7 @@ msgstr "VMWare VCenter平台提供商" msgid "Provides connection to Virtual Center Services" msgstr "提供与Virtual Center Services的连接" -#: services/Vmware_enterprise/provider.py:306 +#: services/Vmware_enterprise/provider.py:308 msgid "Connection params ok" msgstr "连接参数确定" @@ -6012,13 +6008,13 @@ msgstr "使用HTML5客户端的RDP协议" #: transports/HTML5RDP/html5rdp.py:73 #: transports/HTML5RDS_enterprise/html5rds.py:80 -#: transports/HTML5VNC/html5vnc.py:75 +#: transports/HTML5SSH/html5ssh.py:72 transports/HTML5VNC/html5vnc.py:75 msgid "Tunnel Server" msgstr "隧道服务器" #: transports/HTML5RDP/html5rdp.py:76 #: transports/HTML5RDS_enterprise/html5rds.py:83 -#: transports/HTML5VNC/html5vnc.py:78 +#: transports/HTML5SSH/html5ssh.py:75 transports/HTML5VNC/html5vnc.py:78 msgid "" "Host of the tunnel server (use http/https & port if needed) as accesible " "from users" @@ -6089,8 +6085,8 @@ msgstr "如果选中,则域部分将始终清空(例如,需要连接到xrd #: transports/HTML5RDS_enterprise/html5rds.py:116 transports/RDP/rdp_base.py:98 #: transports/RDS_enterprise/rds_base.py:62 msgid "" -"If not empty, this domain will be always used as credential (used as DOMAIN" -"\\user)" +"If not empty, this domain will be always used as credential (used as " +"DOMAIN\\user)" msgstr "如果不为空,则此域将始终用作凭据(用作DOMAIN \\ user)" #: transports/HTML5RDP/html5rdp.py:128 @@ -6168,31 +6164,37 @@ msgstr "如果选中,打印将被重定向到远程会话(如果客户端浏 #: transports/HTML5RDP/html5rdp.py:173 #: transports/HTML5RDS_enterprise/html5rds.py:166 +#: transports/HTML5SSH/html5ssh.py:122 msgid "File Sharing" msgstr "文件共享" #: transports/HTML5RDP/html5rdp.py:175 #: transports/HTML5RDS_enterprise/html5rds.py:168 +#: transports/HTML5SSH/html5ssh.py:124 msgid "File upload/download redirection policy" msgstr "文件上传/下载重定向策略" #: transports/HTML5RDP/html5rdp.py:178 #: transports/HTML5RDS_enterprise/html5rds.py:171 +#: transports/HTML5SSH/html5ssh.py:127 msgid "Disable file sharing" msgstr "禁用文件共享" #: transports/HTML5RDP/html5rdp.py:179 #: transports/HTML5RDS_enterprise/html5rds.py:172 +#: transports/HTML5SSH/html5ssh.py:128 msgid "Allow download only" msgstr "只允许下载" #: transports/HTML5RDP/html5rdp.py:180 #: transports/HTML5RDS_enterprise/html5rds.py:173 +#: transports/HTML5SSH/html5ssh.py:129 msgid "Allow upload only" msgstr "只允许上传" #: transports/HTML5RDP/html5rdp.py:181 #: transports/HTML5RDS_enterprise/html5rds.py:174 +#: transports/HTML5SSH/html5ssh.py:130 msgid "Enable file sharing" msgstr "启用文件共享" @@ -6329,13 +6331,13 @@ msgstr "故障安全" #: transports/HTML5RDP/html5rdp.py:231 #: transports/HTML5RDS_enterprise/html5rds.py:222 -#: transports/HTML5VNC/html5vnc.py:147 +#: transports/HTML5SSH/html5ssh.py:174 transports/HTML5VNC/html5vnc.py:147 msgid "Ticket Validity" msgstr "机票有效期" #: transports/HTML5RDP/html5rdp.py:235 #: transports/HTML5RDS_enterprise/html5rds.py:226 -#: transports/HTML5VNC/html5vnc.py:151 +#: transports/HTML5SSH/html5ssh.py:178 transports/HTML5VNC/html5vnc.py:151 msgid "" "Allowed time, in seconds, for HTML5 client to reload data from UDS Broker. " "The default value of 60 is recommended." @@ -6345,31 +6347,32 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:244 #: transports/HTML5RDS_enterprise/html5rds.py:235 -#: transports/HTML5VNC/html5vnc.py:159 transports/URL/url_custom.py:82 +#: transports/HTML5SSH/html5ssh.py:186 transports/HTML5VNC/html5vnc.py:159 +#: transports/URL/url_custom.py:82 msgid "Force new HTML Window" msgstr "强制新的HTML窗口" #: transports/HTML5RDP/html5rdp.py:245 #: transports/HTML5RDS_enterprise/html5rds.py:236 -#: transports/HTML5VNC/html5vnc.py:160 +#: transports/HTML5SSH/html5ssh.py:187 transports/HTML5VNC/html5vnc.py:160 msgid "Select windows behavior for new connections on HTML5" msgstr "选择Windows行为以获取HTML5上的新连接" #: transports/HTML5RDP/html5rdp.py:250 #: transports/HTML5RDS_enterprise/html5rds.py:241 -#: transports/HTML5VNC/html5vnc.py:165 +#: transports/HTML5SSH/html5ssh.py:192 transports/HTML5VNC/html5vnc.py:165 msgid "Open every connection on the same window, but keeps UDS window." msgstr "在同一窗口中打开每个连接,但保留UDS窗口。" #: transports/HTML5RDP/html5rdp.py:253 #: transports/HTML5RDS_enterprise/html5rds.py:244 -#: transports/HTML5VNC/html5vnc.py:168 +#: transports/HTML5SSH/html5ssh.py:195 transports/HTML5VNC/html5vnc.py:168 msgid "Force every connection to be opened on a new window." msgstr "强制在新窗口中打开每个连接。" #: transports/HTML5RDP/html5rdp.py:257 #: transports/HTML5RDS_enterprise/html5rds.py:248 -#: transports/HTML5VNC/html5vnc.py:172 +#: transports/HTML5SSH/html5ssh.py:199 transports/HTML5VNC/html5vnc.py:172 msgid "Override UDS window and replace it with the connection." msgstr "覆盖UDS窗口并将其替换为连接。" @@ -6430,7 +6433,7 @@ msgstr "" #: transports/HTML5RDP/html5rdp.py:323 #: transports/HTML5RDS_enterprise/html5rds.py:365 -#: transports/HTML5VNC/html5vnc.py:187 +#: transports/HTML5SSH/html5ssh.py:214 transports/HTML5VNC/html5vnc.py:187 msgid "The server must be http or https" msgstr "服务器必须是http或https" @@ -6508,6 +6511,67 @@ msgstr "" "仅在安全级别(在“参数”选项卡上)设置为“RDP”时,才允许空凭据(在“凭据”选项卡" "上)" +#: transports/HTML5SSH/html5ssh.py:61 +msgid "HTML5 SSH" +msgstr "HTML5 SSH" + +#: transports/HTML5SSH/html5ssh.py:63 +msgid "SSH protocol using HTML5 client" +msgstr "使用 HTML5 客户端的 SSH 协议" + +#: transports/HTML5SSH/html5ssh.py:86 +msgid "Username for SSH connection authentication." +msgstr "SSH 连接认证的用户名。" + +#: transports/HTML5SSH/html5ssh.py:114 +msgid "SSH Command" +msgstr "SSH 命令" + +#: transports/HTML5SSH/html5ssh.py:117 +msgid "" +"Command to execute on the remote server. If not provided, an interactive " +"shell will be executed." +msgstr "在远程服务器上执行的命令。如果未提供,将执行交互式 shell。" + +#: transports/HTML5SSH/html5ssh.py:135 +msgid "File Sharing Root" +msgstr "文件共享根" + +#: transports/HTML5SSH/html5ssh.py:138 +msgid "" +"Root path for file sharing. If not provided, root directory will be used." +msgstr "文件共享的根路径。如果未提供,将使用根目录。" + +#: transports/HTML5SSH/html5ssh.py:144 +msgid "SSH Server port" +msgstr "SSH 服务器端口" + +#: transports/HTML5SSH/html5ssh.py:147 +msgid "Port of the SSH server." +msgstr "SSH 服务器的端口。" + +#: transports/HTML5SSH/html5ssh.py:152 +msgid "SSH Host Key" +msgstr "SSH 主机密钥" + +#: transports/HTML5SSH/html5ssh.py:155 +msgid "" +"Host key of the SSH server. If not provided, no verification of host " +"identity is done." +msgstr "SSH 服务器的主机密钥。如果未提供,则不会验证主机身份。" + +#: transports/HTML5SSH/html5ssh.py:161 +msgid "Server Keep Alive" +msgstr "服务器保持活动" + +#: transports/HTML5SSH/html5ssh.py:165 +msgid "" +"Time in seconds between keep alive messages sent to server. If not provided, " +"no keep alive messages are sent." +msgstr "" +"发送到服务器的保持活动消息之间的时间(以秒为单位)。如果未提供,则不会发送保" +"持活动消息。" + #: transports/HTML5VNC/html5vnc.py:64 msgid "HTML5 VNC Experimental" msgstr "HTML5 VNC实验" @@ -7263,10 +7327,10 @@ msgstr "我们正在创建您的服务,请等待几秒钟。)" msgid "Authenticator does not provide information" msgstr "Authenticator不提供信息" -#: web/views/modern.py:303 +#: web/views/modern.py:307 msgid "{} days" msgstr "{} 天" -#: web/views/modern.py:305 +#: web/views/modern.py:309 msgid "{} hours" msgstr "{} 小时" diff --git a/server/src/uds/locale/zh_Hans/LC_MESSAGES/djangojs.po b/server/src/uds/locale/zh_Hans/LC_MESSAGES/djangojs.po index 07153d676..b628cfa20 100644 --- a/server/src/uds/locale/zh_Hans/LC_MESSAGES/djangojs.po +++ b/server/src/uds/locale/zh_Hans/LC_MESSAGES/djangojs.po @@ -5,15 +5,17 @@ # Translators: # Translators: # Translators: +# Translators: +# Translators: #, fuzzy msgid "" msgstr "" "Project-Id-Version: OpenUDS\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2023-03-15 04:01+0100\n" +"POT-Creation-Date: 2023-05-17 14:29+0200\n" "PO-Revision-Date: 2014-03-26 02:16+0000\n" "Last-Translator: Javier , 2014\n" -"Language-Team: Chinese (http://www.transifex.com/openuds/openuds/language/" +"Language-Team: Chinese (http://app.transifex.com/openuds/openuds/language/" "zh/)\n" "Language: zh\n" "MIME-Version: 1.0\n" diff --git a/server/src/uds/management/commands/config.py b/server/src/uds/management/commands/config.py index 885748049..c424a94d8 100644 --- a/server/src/uds/management/commands/config.py +++ b/server/src/uds/management/commands/config.py @@ -30,7 +30,6 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import typing import logging from django.core.management.base import BaseCommand @@ -63,5 +62,5 @@ class Command(BaseCommand): ): # If not exists, try to store value without any special parameters Config.section(mod).value(name, value).get() except Exception as e: - self.stderr.write('The command could not be processed: {}'.format(e)) + self.stderr.write(f'The command could not be processed: {e}') logger.exception('Exception processing %s', args) diff --git a/server/src/uds/management/commands/export.py b/server/src/uds/management/commands/export.py index 5b570f3d1..d3453e479 100644 --- a/server/src/uds/management/commands/export.py +++ b/server/src/uds/management/commands/export.py @@ -198,6 +198,7 @@ def osmanager_exporter(osmanager: models.OSManager) -> typing.Dict[str, typing.A o = managed_object_exporter(osmanager) return o + def calendar_exporter(calendar: models.Calendar) -> typing.Dict[str, typing.Any]: """ Exports a calendar to a dict @@ -212,7 +213,10 @@ def calendar_exporter(calendar: models.Calendar) -> typing.Dict[str, typing.Any] ) return c -def calendar_rule_exporter(calendar_rule: models.CalendarRule) -> typing.Dict[str, typing.Any]: + +def calendar_rule_exporter( + calendar_rule: models.CalendarRule, +) -> typing.Dict[str, typing.Any]: """ Exports a calendar rule to a dict """ @@ -232,6 +236,7 @@ def calendar_rule_exporter(calendar_rule: models.CalendarRule) -> typing.Dict[st ) return c + class Command(BaseCommand): help = 'Export entities from UDS to be imported in another UDS instance' @@ -315,7 +320,7 @@ class Command(BaseCommand): entities = self.remove_reduntant_entities(options['entities']) # For each entity, export it as yaml to output file - with open(options['output'], 'w') as f: + with open(options['output'], 'w', encoding='utf8') as f: for entity in entities: self.stderr.write(f'Exporting {entity}') f.write(self.VALID_ENTITIES[entity]()) @@ -324,9 +329,7 @@ class Command(BaseCommand): if self.verbose: self.stderr.write(f'Exported to {options["output"]}') - def apply_filter( - self, model: typing.Type[ModelType] - ) -> typing.Iterable[ModelType]: + def apply_filter(self, model: typing.Type[ModelType]) -> typing.Iterable[ModelType]: """ Applies a filter to a model """ @@ -337,7 +340,9 @@ class Command(BaseCommand): self.stderr.write("\n ".join(values)) # Generate "OR" filter with all kwargs if self.filter_args: - return model.objects.filter(reduce(operator.or_, (Q(**{k: v}) for k, v in self.filter_args))) + return model.objects.filter( + reduce(operator.or_, (Q(**{k: v}) for k, v in self.filter_args)) + ) return model.objects.all() def output_count( @@ -367,16 +372,11 @@ class Command(BaseCommand): def export_services(self) -> str: # First, locate providers for services with the filter services_list = list( - self.output_count( - 'Filtering services', self.apply_filter(models.Service) - ) - ) - providers_list = set( - [ - s.provider - for s in self.output_count('Filtering providers', services_list) - ] + self.output_count('Filtering services', self.apply_filter(models.Service)) ) + providers_list = { + s.provider for s in self.output_count('Filtering providers', services_list) + } # Now, export those providers providers = [ provider_exporter(p) @@ -416,16 +416,11 @@ class Command(BaseCommand): """ # first, locate authenticators for users with the filter users_list = list( - self.output_count( - 'Filtering users', self.apply_filter(models.User) - ) - ) - authenticators_list = set( - [ - u.manager - for u in self.output_count('Filtering authenticators', users_list) - ] + self.output_count('Filtering users', self.apply_filter(models.User)) ) + authenticators_list = { + u.manager for u in self.output_count('Filtering authenticators', users_list) + } # Now, groups that contains those users groups_list = set() for u in self.output_count('Filtering groups', users_list): @@ -461,16 +456,12 @@ class Command(BaseCommand): """ # First export authenticators for groups with the filter groups_list = list( - self.output_count( - 'Filtering groups', self.apply_filter(models.Group) - ) - ) - authenticators_list = set( - [ - g.manager - for g in self.output_count('Filtering authenticators', groups_list) - ] + self.output_count('Filtering groups', self.apply_filter(models.Group)) ) + authenticators_list = { + g.manager + for g in self.output_count('Filtering authenticators', groups_list) + } authenticators = [ authenticator_exporter(a) for a in self.output_count('Saving authenticators', authenticators_list) diff --git a/server/src/uds/management/commands/fs.py b/server/src/uds/management/commands/fs.py index f835d4f65..af6c10741 100644 --- a/server/src/uds/management/commands/fs.py +++ b/server/src/uds/management/commands/fs.py @@ -1,2 +1,4 @@ # Placeholder, import the command from udsfs + +# pylint: disable=unused-import from .udsfs import Command diff --git a/server/src/uds/management/commands/showconfig.py b/server/src/uds/management/commands/showconfig.py index 53f27116d..6db1b8a0f 100644 --- a/server/src/uds/management/commands/showconfig.py +++ b/server/src/uds/management/commands/showconfig.py @@ -87,6 +87,6 @@ class Command(BaseCommand): if options['yaml']: self.stdout.write(yaml.safe_dump(writer, default_flow_style=False)) except Exception as e: - self.stdout.write('The command could not be processed: {}'.format(e)) + self.stdout.write(f'The command could not be processed: {e}') self.stdout.flush() logger.exception('Exception processing %s', args) diff --git a/server/src/uds/management/commands/taskManager.py b/server/src/uds/management/commands/taskManager.py index dd214b1db..e41392c84 100644 --- a/server/src/uds/management/commands/taskManager.py +++ b/server/src/uds/management/commands/taskManager.py @@ -65,7 +65,7 @@ def become_daemon( if os.fork() > 0: sys.exit(0) # kill off parent except OSError as e: - sys.stderr.write("fork #1 failed: (%d) %s\n" % (e.errno, e.strerror)) + sys.stderr.write(f'fork #1 failed: ({e.errno}) {e.strerror}') sys.exit(1) os.setsid() os.chdir(our_home_dir) @@ -76,12 +76,12 @@ def become_daemon( if os.fork() > 0: os._exit(0) # pylint: disable=protected-access except OSError as e: - sys.stderr.write("fork #2 failed: (%d) %s\n" % (e.errno, e.strerror)) + sys.stderr.write(f'fork #2 failed: ({e.errno}) {e.strerror}') os._exit(1) # pylint: disable=protected-access - si = open('/dev/null', 'r') - so = open(out_log, 'a+', 1) - se = open(err_log, 'a+', 1) + si = open('/dev/null', 'r', encoding='utf-8') # pylint: disable=consider-using-with + so = open(out_log, 'a+', 1, encoding='utf-8') # pylint: disable=consider-using-with + se = open(err_log, 'a+', 1, encoding='utf-8') # pylint: disable=consider-using-with os.dup2(si.fileno(), sys.stdin.fileno()) os.dup2(so.fileno(), sys.stdout.fileno()) os.dup2(se.fileno(), sys.stderr.fileno()) @@ -136,7 +136,7 @@ class Command(BaseCommand): pid: int = 0 try: - pid = int(open(getPidFile(), 'r').readline()) + pid = int(open(getPidFile(), 'r', encoding='utf8').readline()) # pylint: disable=consider-using-with except Exception: pid = 0 @@ -161,7 +161,8 @@ class Command(BaseCommand): ) pid = os.getpid() - open(getPidFile(), 'w+').write('{}\n'.format(pid)) + with open(getPidFile(), 'w+', encoding='utf8') as f: + f.write(f'{pid}\n') manager = taskManager() manager.run() @@ -169,7 +170,7 @@ class Command(BaseCommand): if not start and not stop: if pid: self.stdout.write( - "Task manager found running (pid file exists: {0})\n".format(pid) + f'Task manager found running (pid file exists: {pid})\n' ) else: - self.stdout.write("Task manager not foud (pid file do not exits)\n") + self.stdout.write("Task manager not found (pid file do not exits)\n") diff --git a/server/src/uds/management/commands/tree.py b/server/src/uds/management/commands/tree.py index c6c9d4b62..ef6504a26 100644 --- a/server/src/uds/management/commands/tree.py +++ b/server/src/uds/management/commands/tree.py @@ -32,10 +32,11 @@ """ import logging import typing + import yaml -import collections from django.core.management.base import BaseCommand + from uds.core.util import log from uds import models from uds.core.util.state import State @@ -85,7 +86,7 @@ def getSerializedFromModel( removableFields = removableFields or [] passwordFields = passwordFields or [] try: - values = mod._meta.managers[0].filter(pk=mod.pk).values()[0] # type: ignore + values = mod._meta.managers[0].filter(pk=mod.pk).values()[0] # type: ignore # pylint: disable=protected-access for i in ['uuid', 'id'] + removableFields: if i in values: del values[i] @@ -118,6 +119,7 @@ class Command(BaseCommand): help='Maximum elements exported for groups and user services', ) + # pylint: disable=too-many-locals,too-many-branches,too-many-statements def handle(self, *args, **options) -> None: logger.debug("Show Tree") # firt, genertate Provider-service-servicepool tree @@ -134,14 +136,13 @@ class Command(BaseCommand): try: providers = {} for provider in models.Provider.objects.all(): - services = {} totalServices = 0 totalServicePools = 0 totalUserServices = 0 for service in provider.services.all(): servicePools = {} - numberOfServicePools = 0 + numberOfServicePools = 0 numberOfUserServices = 0 for servicePool in service.deployedServices.all(): # get assigned user services with ERROR status @@ -151,12 +152,7 @@ class Command(BaseCommand): fltr = fltr.filter(state=State.ERROR) for item in fltr[:max_items]: # at most max_items items logs = [ - '{}: {} [{}] - {}'.format( - l['date'], - log.logStrFromLevel(l['level']), - l['source'], - l['message'], - ) + f'{l["date"]}: {log.LogLevel.fromStr(l["level"])} [{l["source"]}] - {l["message"]}' for l in log.getLogs(item) ] userServices[item.friendly_name] = { @@ -197,9 +193,9 @@ class Command(BaseCommand): except Exception: changelogs = [] - publications[str(publication.revision)] = getSerializedFromModel( - publication, ['data'] - ) + publications[ + str(publication.revision) + ] = getSerializedFromModel(publication, ['data']) publications[str(publication.revision)][ 'changelogs' ] = changelogs @@ -242,7 +238,9 @@ class Command(BaseCommand): numberOfServicePools = len(servicePools) totalServicePools += numberOfServicePools - services[f'{service.name} ({numberOfServicePools}, {numberOfUserServices})'] = { + services[ + f'{service.name} ({numberOfServicePools}, {numberOfUserServices})' + ] = { '_': getSerializedFromManagedObject(service), 'servicePools': servicePools, } @@ -262,8 +260,12 @@ class Command(BaseCommand): for authenticator in models.Authenticator.objects.all(): # Groups grps: typing.Dict[str, typing.Any] = {} - for group in authenticator.groups.all()[:max_items]: # at most max_items items - grps[group.name] = getSerializedFromModel(group, ['manager_id', 'name']) + for group in authenticator.groups.all()[ + :max_items + ]: # at most max_items items + grps[group.name] = getSerializedFromModel( + group, ['manager_id', 'name'] + ) authenticators[authenticator.name] = { '_': getSerializedFromManagedObject(authenticator), 'groups': grps, @@ -375,6 +377,6 @@ class Command(BaseCommand): self.stdout.write(yaml.safe_dump(tree, default_flow_style=False)) except Exception as e: - self.stdout.write('The command could not be processed: {}'.format(e)) + self.stdout.write(f'The command could not be processed: {e}') self.stdout.flush() logger.exception('Exception processing %s', args) diff --git a/server/src/uds/management/commands/udsfs/events.py b/server/src/uds/management/commands/udsfs/events.py index c626765a7..385274f37 100644 --- a/server/src/uds/management/commands/udsfs/events.py +++ b/server/src/uds/management/commands/udsfs/events.py @@ -95,7 +95,7 @@ class EventFS(types.UDSFSInterface): ): # Return days of month as indicated on path month = int(path[1]) return ['.', '..'] + [ - '{:02d}'.format(x) + f'{x:02d}' for x in range(1, EventFS.number_of_days(year, month) + 1) ] diff --git a/server/src/uds/management/commands/udsfs/stats.py b/server/src/uds/management/commands/udsfs/stats.py index bcd32da77..efa658715 100644 --- a/server/src/uds/management/commands/udsfs/stats.py +++ b/server/src/uds/management/commands/udsfs/stats.py @@ -6,13 +6,13 @@ import logging from uds import models from uds.core.util.cache import Cache -from uds.core.util.stats import events, counters from . import types logger = logging.getLogger(__name__) + # Custom types class StatInterval(typing.NamedTuple): start: datetime.datetime @@ -87,13 +87,13 @@ class StatsFS(types.UDSFSInterface): self, filename: typing.List[str] ) -> typing.Tuple[DispatcherType, StatInterval, str]: if len(filename) != 1: - raise FileNotFoundError + raise FileNotFoundError() # Extract components try: dispatcher, interval, extension = (filename[0].split('.') + [''])[:3] except ValueError: - raise FileNotFoundError + raise FileNotFoundError() from None logger.debug( 'Dispatcher: %s, interval: %s, extension: %s', @@ -103,16 +103,16 @@ class StatsFS(types.UDSFSInterface): ) if dispatcher not in self._dispatchers: - raise FileNotFoundError + raise FileNotFoundError() fnc, requiresInterval = self._dispatchers[dispatcher] if extension == '' and requiresInterval is True: - raise FileNotFoundError + raise FileNotFoundError() if requiresInterval: if interval not in self._interval: - raise FileNotFoundError + raise FileNotFoundError() range = self._interval[interval] else: @@ -122,7 +122,7 @@ class StatsFS(types.UDSFSInterface): extension = interval if extension != 'csv': - raise FileNotFoundError + raise FileNotFoundError() todayStart = datetime.datetime.utcnow().replace( hour=0, minute=0, second=0, microsecond=0 @@ -174,14 +174,14 @@ class StatsFS(types.UDSFSInterface): cacheTime = 60 # Check if the file info is cached - cached = self._cache.get(path[0]+extension) + cached = self._cache.get(path[0] + extension) if cached is not None: logger.debug('Cache hit for %s', path[0]) data = cached else: logger.debug('Cache miss for %s', path[0]) data = dispatcher(interval, extension, 0, 0) - self._cache.put(path[0]+extension, data, cacheTime) + self._cache.put(path[0] + extension, data, cacheTime) # Calculate the size of the file size = len(data) @@ -206,14 +206,14 @@ class StatsFS(types.UDSFSInterface): cacheTime = 60 # Check if the file info is cached - cached = self._cache.get(path[0]+extension) + cached = self._cache.get(path[0] + extension) if cached is not None: logger.debug('Cache hit for %s', path[0]) data = cached else: logger.debug('Cache miss for %s', path[0]) data = dispatcher(interval, extension, 0, 0) - self._cache.put(path[0]+extension, data, cacheTime) + self._cache.put(path[0] + extension, data, cacheTime) # Dispatch the read to the dispatcher data = dispatcher(interval, extension, size, offset) diff --git a/server/src/uds/management/commands/udsfs/types.py b/server/src/uds/management/commands/udsfs/types.py index a5d7beeb0..d639946a1 100644 --- a/server/src/uds/management/commands/udsfs/types.py +++ b/server/src/uds/management/commands/udsfs/types.py @@ -27,7 +27,7 @@ class StatType(typing.NamedTuple): 'st_ctime': self.st_ctime, 'st_mtime': self.st_mtime, 'st_atime': self.st_atime, - 'st_nlink': self.st_nlink + 'st_nlink': self.st_nlink, } # Append optional fields if self.st_dev != -1: @@ -46,7 +46,7 @@ class StatType(typing.NamedTuple): rst['st_blksize'] = self.st_blksize if self.st_blocks != -1: rst['st_blocks'] = self.st_blocks - + return rst @@ -54,6 +54,7 @@ class UDSFSInterface: """ Base Class for UDS Info File system """ + def getattr(self, path: typing.List[str]) -> StatType: """ Get file attributes. Path is the full path to the file, already splitted. @@ -65,12 +66,12 @@ class UDSFSInterface: Get a list of files in the directory. Path is the full path to the directory, already splitted. """ raise NotImplementedError - + def read(self, path: typing.List[str], size: int, offset: int) -> bytes: """ Read a file. Path is the full path to the file, already splitted. """ raise NotImplementedError - def flush(self, path: typing.List[str]) -> None: + def flush(self, path: typing.List[str]) -> None: # pylint: disable=unused-argument return diff --git a/server/src/uds/mfas/Email/__init__.py b/server/src/uds/mfas/Email/__init__.py index d14dc4590..661dc7736 100644 --- a/server/src/uds/mfas/Email/__init__.py +++ b/server/src/uds/mfas/Email/__init__.py @@ -26,4 +26,5 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +# pylint: disable=unused-import from . import mfa diff --git a/server/src/uds/mfas/Email/mfa.py b/server/src/uds/mfas/Email/mfa.py index 2cfbeafdf..a725b5685 100644 --- a/server/src/uds/mfas/Email/mfa.py +++ b/server/src/uds/mfas/Email/mfa.py @@ -133,12 +133,7 @@ class EmailMFA(mfas.MFA): defaultValue='0', tooltip=_('Action for MFA response error'), required=True, - values={ - '0': _('Allow user login'), - '1': _('Deny user login'), - '2': _('Allow user to login if it IP is in the networks list'), - '3': _('Deny user to login if it IP is in the networks list'), - }, + values=mfas.LoginAllowed.valuesForSelect(), tab=_('Config'), ) @@ -157,7 +152,10 @@ class EmailMFA(mfas.MFA): label=_('Mail text'), order=33, multiline=4, - tooltip=_('Text of the email. If empty, a default text will be used') + '\n' + _('Allowed variables are: {code}, {username}, {ip}'), + tooltip=_('Text of the email. If empty, a default text will be used') + + '\n' + + _('Allowed variables are: ') + + '{code}, {username}, {justUsername}. {ip}', required=True, defvalue='', tab=_('Config'), @@ -168,7 +166,11 @@ class EmailMFA(mfas.MFA): label=_('Mail HTML'), order=34, multiline=4, - tooltip=_('HTML of the email. If empty, a default HTML will be used')+ '\n' + _('Allowed variables are: {code}, {username}, {ip}'), + tooltip=_('HTML of the email. If empty, a default HTML will be used') + + '\n' + + _('Allowed variables are: ') + + '\n' + + '{code}, {username}, {justUsername}, {ip}', required=False, defvalue='', tab=_('Config'), @@ -191,7 +193,7 @@ class EmailMFA(mfas.MFA): # Now check is valid format if ':' in hostname: host, port = validators.validateHostPortPair(hostname) - self.hostname.value = '{}:{}'.format(host, port) + self.hostname.value = f'{host}:{port}' else: host = self.hostname.cleanStr() self.hostname.value = validators.validateFqdn(host) @@ -203,7 +205,7 @@ class EmailMFA(mfas.MFA): return gettext( 'Check your mail. You will receive an email with the verification code' ) - + def initGui(self) -> None: # Populate the networks list self.networks.setValues( @@ -214,28 +216,10 @@ class EmailMFA(mfas.MFA): ] ) - def checkAction(self, action: str, request: 'ExtendedHttpRequest') -> bool: - def checkIp() -> bool: - return any( - i.contains(request.ip) - for i in models.Network.objects.filter(uuid__in=self.networks.value) - ) - - if action == '0': - return True - elif action == '1': - return False - elif action == '2': - return checkIp() - elif action == '3': - return not checkIp() - else: - return False - def emptyIndentifierAllowedToLogin( self, request: 'ExtendedHttpRequest' ) -> typing.Optional[bool]: - return self.checkAction(self.allowLoginWithoutMFA.value, request) + return mfas.LoginAllowed.checkAction(self.allowLoginWithoutMFA.value, request, self.networks.value) def label(self) -> str: return 'OTP received via email' @@ -270,7 +254,7 @@ class EmailMFA(mfas.MFA): smtp.sendmail(self.fromEmail.value, identifier, msg.as_string()) except smtplib.SMTPException as e: - logger.error('Error sending email: {}'.format(e)) + logger.error('Error sending email: %s', e) raise def sendCode( diff --git a/server/src/uds/mfas/Radius/__init__.py b/server/src/uds/mfas/Radius/__init__.py index f963c676e..661dc7736 100644 --- a/server/src/uds/mfas/Radius/__init__.py +++ b/server/src/uds/mfas/Radius/__init__.py @@ -1 +1,30 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2022 Virtual Cable S.L.U. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# pylint: disable=unused-import from . import mfa diff --git a/server/src/uds/mfas/Radius/mfa.py b/server/src/uds/mfas/Radius/mfa.py index db8c92511..4b13dd65a 100644 --- a/server/src/uds/mfas/Radius/mfa.py +++ b/server/src/uds/mfas/Radius/mfa.py @@ -40,7 +40,13 @@ from uds.core import mfas from uds.core.ui import gui from uds.auths.Radius import client -from uds.auths.Radius.client import NOT_CHECKED, INCORRECT, CORRECT, NOT_NEEDED, NEEDED +from uds.auths.Radius.client import ( + # NOT_CHECKED, + INCORRECT, + CORRECT, + NOT_NEEDED, + # NEEDED +) from uds.core.auths.auth import webPassword from uds.core.auths import exceptions @@ -108,12 +114,7 @@ class RadiusOTP(mfas.MFA): defaultValue='0', tooltip=_('Action for OTP server communication error'), required=True, - values={ - '0': _('Allow user login'), - '1': _('Deny user login'), - '2': _('Allow user to login if it IP is in the networks list'), - '3': _('Deny user to login if it IP is in the networks list'), - }, + values=mfas.LoginAllowed.valuesForSelect(), tab=_('Config'), ) @@ -133,12 +134,7 @@ class RadiusOTP(mfas.MFA): defaultValue='0', tooltip=_('Action for user without defined Radius Challenge'), required=True, - values={ - '0': _('Allow user login'), - '1': _('Deny user login'), - '2': _('Allow user to login if it IP is in the networks list'), - '3': _('Deny user to login if it IP is in the networks list'), - }, + values=mfas.LoginAllowed.valuesForSelect(), tab=_('Config'), ) @@ -163,30 +159,16 @@ class RadiusOTP(mfas.MFA): nasIdentifier=self.nasIdentifier.value, ) - def checkAction(self, action: str, request: 'ExtendedHttpRequest') -> bool: - def checkIp() -> bool: - return any( - i.contains(request.ip) - for i in models.Network.objects.filter(uuid__in=self.networks.value) - ) - - if action == '0': - return True - elif action == '1': - return False - elif action == '2': - return checkIp() - elif action == '3': - return not checkIp() - else: - return False - - def checkResult(self, action: str, request: 'ExtendedHttpRequest') -> mfas.MFA.RESULT: - if self.checkAction(action, request): + def checkResult( + self, action: str, request: 'ExtendedHttpRequest' + ) -> mfas.MFA.RESULT: + if mfas.LoginAllowed.checkAction(action, request, self.networks.value): return mfas.MFA.RESULT.OK raise Exception('User not allowed to login') - def emptyIndentifierAllowedToLogin(self, request: 'ExtendedHttpRequest') -> typing.Optional[bool]: + def emptyIndentifierAllowedToLogin( + self, request: 'ExtendedHttpRequest' + ) -> typing.Optional[bool]: return None def label(self) -> str: @@ -225,8 +207,8 @@ class RadiusOTP(mfas.MFA): logger.error( "Exception found connecting to Radius OTP %s: %s", e.__class__, e ) - if not self.checkAction(self.responseErrorAction.value, request): - raise Exception(_('Radius OTP connection error')) + if not mfas.LoginAllowed.checkAction(self.responseErrorAction.value, request, self.networks.value): + raise Exception(_('Radius OTP connection error')) from e logger.warning( "Radius OTP connection error: Allowing access to user [%s] from IP [%s] without OTP", username, @@ -287,8 +269,8 @@ class RadiusOTP(mfas.MFA): logger.error( "Exception found connecting to Radius OTP %s: %s", e.__class__, e ) - if not self.checkAction(self.responseErrorAction.value, request): - raise Exception(_('Radius OTP connection error')) + if mfas.LoginAllowed.checkAction(self.responseErrorAction.value, request, self.networks.value): + raise Exception(_('Radius OTP connection error')) from e logger.warning( "Radius OTP connection error: Allowing access to user [%s] from IP [%s] without OTP", username, diff --git a/server/src/uds/mfas/SMS/__init__.py b/server/src/uds/mfas/SMS/__init__.py index dab63b648..bcd92ee13 100644 --- a/server/src/uds/mfas/SMS/__init__.py +++ b/server/src/uds/mfas/SMS/__init__.py @@ -26,7 +26,8 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -@author: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ +# pylint: disable=unused-import from . import mfa diff --git a/server/src/uds/mfas/SMS/mfa.py b/server/src/uds/mfas/SMS/mfa.py index 0d950ebbe..1bf77b783 100644 --- a/server/src/uds/mfas/SMS/mfa.py +++ b/server/src/uds/mfas/SMS/mfa.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -@author: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing @@ -34,12 +34,13 @@ import re import logging from django.utils.translation import gettext_noop as _, gettext -import requests + import requests.auth from uds import models from uds.core import mfas from uds.core.ui import gui +from uds.core.util import security if typing.TYPE_CHECKING: from uds.core.module import Module @@ -93,6 +94,7 @@ class SMSMFA(mfas.MFA): """ + typeName = _('SMS via HTTP') typeType = 'smsHttpMFA' typeDescription = _('Simple SMS sending MFA using HTTP/HTTPS') @@ -175,7 +177,7 @@ class SMSMFA(mfas.MFA): order=5, tooltip=_('Encoding for SMS'), required=True, - values=('utf-8', 'iso-8859-1'), + values=('utf-8', 'utf-16', 'iso-8859-1'), tab=_('HTTP Server'), ) @@ -242,12 +244,7 @@ class SMSMFA(mfas.MFA): defaultValue='0', tooltip=_('Action for SMS response error'), required=True, - values={ - '0': _('Allow user login'), - '1': _('Deny user login'), - '2': _('Allow user to login if its IP is in the networks list'), - '3': _('Deny user to login if its IP is in the networks list'), - }, + values=mfas.LoginAllowed.valuesForSelect(), tab=_('Config'), ) @@ -274,7 +271,13 @@ class SMSMFA(mfas.MFA): ] ) - def composeSmsUrl(self, userId: str, userName: str, code: str, phone: str) -> str: + def composeSmsUrl( + self, + userId: str, # pylint: disable=unused-argument + userName: str, + code: str, + phone: str, + ) -> str: url = self.sendingUrl.value url = url.replace('{code}', code) url = url.replace('{phone}', phone.replace('+', '')) @@ -284,7 +287,9 @@ class SMSMFA(mfas.MFA): return url def getSession(self) -> requests.Session: - session = requests.Session() + session = security.secureRequestsSession( + verify=self.ignoreCertificateErrors.isTrue() + ) # 0 means no authentication if self.authenticationMethod.value == '1': session.auth = requests.auth.HTTPBasicAuth( @@ -298,10 +303,6 @@ class SMSMFA(mfas.MFA): ) # Any other value means no authentication - # If set ignoreCertificateErrors, do it - if self.ignoreCertificateErrors.isTrue(): - session.verify = False - # Add headers. Headers are in the form of "Header: Value". (without the quotes) if self.headersParameters.value.strip(): for header in self.headersParameters.value.split('\n'): @@ -310,35 +311,29 @@ class SMSMFA(mfas.MFA): session.headers[headerName.strip()] = headerValue.strip() return session - def checkAction(self, action: str, request: 'ExtendedHttpRequest') -> bool: - def checkIp() -> bool: - return any( - i.contains(request.ip) - for i in models.Network.objects.filter(uuid__in=self.networks.value) - ) - - if action == '0': - return True - elif action == '1': - return False - elif action == '2': - return checkIp() - elif action == '3': - return not checkIp() - else: - return False - - def emptyIndentifierAllowedToLogin(self, request: 'ExtendedHttpRequest') -> typing.Optional[bool]: - return self.checkAction(self.allowLoginWithoutMFA.value, request) + def emptyIndentifierAllowedToLogin( + self, request: 'ExtendedHttpRequest' + ) -> typing.Optional[bool]: + return mfas.LoginAllowed.checkAction( + self.allowLoginWithoutMFA.value, request, self.networks.value + ) def processResponse( self, request: 'ExtendedHttpRequest', response: requests.Response ) -> mfas.MFA.RESULT: logger.debug('Response: %s', response) if not response.ok: - if self.responseErrorAction.value == '1': + logger.warning( + 'SMS sending failed: code: %s, content: %s', + response.status_code, + response.text, + ) + if not mfas.LoginAllowed.checkAction( + self.responseErrorAction.value, request, self.networks.value + ): raise Exception(_('SMS sending failed')) - elif self.responseOkRegex.value.strip(): + return mfas.MFA.RESULT.ALLOWED # Allow login, NO MFA code was sent + if self.responseOkRegex.value.strip(): logger.debug( 'Checking response OK regex: %s: (%s)', self.responseOkRegex.value, @@ -349,17 +344,19 @@ class SMSMFA(mfas.MFA): 'SMS response error: %s', response.text, ) - if not self.checkAction(self.responseErrorAction.value, request): + if not mfas.LoginAllowed.checkAction( + self.responseErrorAction.value, request, self.networks.value + ): raise Exception(_('SMS response error')) return mfas.MFA.RESULT.ALLOWED return mfas.MFA.RESULT.OK def getData( self, - request: 'ExtendedHttpRequest', - userId: str, + request: 'ExtendedHttpRequest', # pylint: disable=unused-argument + userId: str, # pylint: disable=unused-argument username: str, - url: str, + url: str, # pylint: disable=unused-argument code: str, phone: str, ) -> bytes: @@ -375,7 +372,11 @@ class SMSMFA(mfas.MFA): return data.encode(self.encoding.value) def sendSMS_GET( - self, request: 'ExtendedHttpRequest', userId: str, username: str, url: str + self, + request: 'ExtendedHttpRequest', + userId: str, # pylint: disable=unused-argument + username: str, # pylint: disable=unused-argument + url: str, ) -> mfas.MFA.RESULT: return self.processResponse(request, self.getSession().get(url)) @@ -406,7 +407,6 @@ class SMSMFA(mfas.MFA): phone: str, ) -> mfas.MFA.RESULT: # Compose POST data - data = '' bdata = self.getData(request, userId, username, url, code, phone) return self.processResponse(request, self.getSession().put(url, data=bdata)) @@ -421,12 +421,11 @@ class SMSMFA(mfas.MFA): url = self.composeSmsUrl(userId, username, code, phone) if self.sendingMethod.value == 'GET': return self.sendSMS_GET(request, userId, username, url) - elif self.sendingMethod.value == 'POST': + if self.sendingMethod.value == 'POST': return self.sendSMS_POST(request, userId, username, url, code, phone) - elif self.sendingMethod.value == 'PUT': + if self.sendingMethod.value == 'PUT': return self.sendSMS_PUT(request, userId, username, url, code, phone) - else: - raise Exception('Unknown SMS sending method') + raise Exception('Unknown SMS sending method') def label(self) -> str: return gettext('MFA Code') diff --git a/server/src/uds/mfas/Sample/__init__.py b/server/src/uds/mfas/Sample/__init__.py index dab63b648..bcd92ee13 100644 --- a/server/src/uds/mfas/Sample/__init__.py +++ b/server/src/uds/mfas/Sample/__init__.py @@ -26,7 +26,8 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -@author: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ +# pylint: disable=unused-import from . import mfa diff --git a/server/src/uds/mfas/Sample/mfa.py b/server/src/uds/mfas/Sample/mfa.py index 2843684cb..eb14f9baf 100644 --- a/server/src/uds/mfas/Sample/mfa.py +++ b/server/src/uds/mfas/Sample/mfa.py @@ -68,4 +68,3 @@ class SampleMFA(mfas.MFA): def sendCode(self, request: 'ExtendedHttpRequest', userId: str, username: str, identifier: str, code: str) -> mfas.MFA.RESULT: logger.debug('Sending code: %s (from %s)', code, request.ip) return mfas.MFA.RESULT.OK - diff --git a/server/src/uds/mfas/TOTP/__init__.py b/server/src/uds/mfas/TOTP/__init__.py index f963c676e..bcd92ee13 100644 --- a/server/src/uds/mfas/TOTP/__init__.py +++ b/server/src/uds/mfas/TOTP/__init__.py @@ -1 +1,33 @@ +# -*- coding: utf-8 -*- +# +# Copyright (c) 2022 Virtual Cable S.L.U. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +""" +Author: Adolfo Gómez, dkmaster at dkmon dot com +""" + +# pylint: disable=unused-import from . import mfa diff --git a/server/src/uds/mfas/TOTP/mfa.py b/server/src/uds/mfas/TOTP/mfa.py index 82b0100a8..f8287d4c6 100644 --- a/server/src/uds/mfas/TOTP/mfa.py +++ b/server/src/uds/mfas/TOTP/mfa.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -@author: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import logging @@ -39,6 +39,7 @@ import qrcode from django.utils.translation import gettext_noop as _, gettext from uds import models +from uds.core.util.model import getSqlDatetime from uds.core import mfas from uds.core.ui import gui @@ -155,7 +156,7 @@ class TOTP_MFA(mfas.MFA): def html(self, request: 'ExtendedHttpRequest', userId: str, username: str) -> str: # Get data from storage related to this user - secret, qrShown = self._userData(userId) + qrShown = self._userData(userId)[1] if qrShown: return _('Enter your authentication code') # Compose the QR code from provisioning URI @@ -216,7 +217,7 @@ class TOTP_MFA(mfas.MFA): # Validate code if not self.getTOTP(userId, username).verify( - code, valid_window=self.validWindow.num(), for_time=models.getSqlDatetime() + code, valid_window=self.validWindow.num(), for_time=getSqlDatetime() ): raise exceptions.MFAError(gettext('Invalid code')) diff --git a/server/src/uds/mfas/__init__.py b/server/src/uds/mfas/__init__.py index b19381323..84f7ea5ef 100644 --- a/server/src/uds/mfas/__init__.py +++ b/server/src/uds/mfas/__init__.py @@ -37,7 +37,7 @@ To create a new authentication module, you will need to follow this steps: The registration of modules is done locating subclases of :py:class:`uds.core.auths.Authentication` -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import os.path import pkgutil @@ -45,24 +45,22 @@ import importlib import sys import typing -def __init__(): + +import logging + +from uds.core.util import modfinder + +logger = logging.getLogger(__name__) + + +def __loadModules(): """ This imports all packages that are descendant of this package, and, after that, - it register all subclases of authenticator as + it register all subclases of mfas.MFA """ - from uds.core import mfas + from uds.core import mfas # pylint: disable=import-outside-toplevel - # Dinamycally import children of this package. The __init__.py files must declare mfs as subclasses of mfas.MFA - pkgpath = os.path.dirname(typing.cast(str, sys.modules[__name__].__file__)) - for _, name, _ in pkgutil.iter_modules([pkgpath]): - # __import__(name, globals(), locals(), [], 1) - importlib.import_module('.' + name, __name__) # import module - - importlib.invalidate_caches() - - a = mfas.MFA - for cls in a.__subclasses__(): - mfas.factory().insert(cls) + modfinder.dynamicLoadAndRegisterModules(mfas.factory(), mfas.MFA, __name__) -__init__() +__loadModules() diff --git a/server/src/uds/middleware/builder.py b/server/src/uds/middleware/builder.py index 0ce9b41bd..938f4a41e 100644 --- a/server/src/uds/middleware/builder.py +++ b/server/src/uds/middleware/builder.py @@ -33,20 +33,8 @@ import typing import asyncio from django.utils.decorators import sync_and_async_middleware -from django.http import HttpResponseForbidden -from django.utils import timezone -from uds.core.util import os_detector as OsDetector -from uds.core.util.config import GlobalConfig -from uds.core.auths.auth import ( - AUTHORIZED_KEY, - EXPIRY_KEY, - ROOT_ID, - USER_KEY, - getRootUser, - webLogout, -) -from uds.models import User +from django.conf import settings if typing.TYPE_CHECKING: from django.http import HttpResponse @@ -71,14 +59,14 @@ def build_middleware( response_processor: ResponseMiddelwareProcessorType, ) -> typing.Callable[[typing.Any], typing.Union[typing.Callable, typing.Coroutine]]: """ - Creates a method to be used as a middleware, synchronously or asynchronously + Creates a method to be used as a middleware, synchronously or asynchronously. + Currently, the is forced to sync an production, but it will be changed in the future to allow async """ - @sync_and_async_middleware def middleware( get_response: typing.Any, ) -> typing.Union[typing.Callable, typing.Coroutine]: - if asyncio.iscoroutinefunction(get_response): + if settings.DEBUG and asyncio.iscoroutinefunction(get_response): async def async_middleware( request: 'ExtendedHttpRequest', @@ -89,12 +77,12 @@ def build_middleware( ) return async_middleware - else: - def sync_middleware(request: 'ExtendedHttpRequest') -> 'HttpResponse': - response = request_processor(request) - return response_processor(request, response or get_response(request)) + # Sync middleware + def sync_middleware(request: 'ExtendedHttpRequest') -> 'HttpResponse': + response = request_processor(request) + return response_processor(request, response or get_response(request)) - return sync_middleware + return sync_middleware return middleware diff --git a/server/src/uds/middleware/redirect.py b/server/src/uds/middleware/redirect.py index 465860787..4add5dfa0 100644 --- a/server/src/uds/middleware/redirect.py +++ b/server/src/uds/middleware/redirect.py @@ -33,9 +33,8 @@ import logging import typing from django.urls import reverse -from django.http import HttpResponseRedirect - -from uds.core.util.config import GlobalConfig +from django.http import HttpResponsePermanentRedirect +from django.conf import settings from . import builder @@ -44,46 +43,11 @@ logger = logging.getLogger(__name__) if typing.TYPE_CHECKING: from django.http import HttpRequest, HttpResponse - -_NO_REDIRECT: typing.List[str] = [ - 'rest', - 'pam', - 'guacamole', - # For new paths - # 'uds/rest', # REST must be HTTPS if redirect is enabled - 'uds/pam', - 'uds/guacamole', - # Test client can be http - 'uds/rest/client/test', - # And also the tunnel - 'uds/rest/tunnel', -] - - -def registerNoRedirectURL(path: str) -> None: - _NO_REDIRECT.append(path) - - def _check_redirectable(request: 'HttpRequest') -> typing.Optional['HttpResponse']: - if GlobalConfig.REDIRECT_TO_HTTPS.getBool() is False or request.is_secure(): + if request.is_secure() or settings.DEBUG: return None - full_path = request.get_full_path() - redirect = True - for nr in _NO_REDIRECT: - if full_path.startswith('/' + nr): - redirect = False - break - - if redirect: - if request.method == 'POST': - url = reverse('page.login') - else: - url = request.build_absolute_uri(full_path) - url = url.replace('http://', 'https://') - - return HttpResponseRedirect(url) - return None + return HttpResponsePermanentRedirect(request.build_absolute_uri(reverse('page.index')).replace('http://', 'https://', 1)) # Compatibility with old middleware, so we can use it in settings.py as it was diff --git a/server/src/uds/middleware/request.py b/server/src/uds/middleware/request.py index 070d58d77..396b4ffbd 100644 --- a/server/src/uds/middleware/request.py +++ b/server/src/uds/middleware/request.py @@ -47,7 +47,7 @@ from uds.core.auths.auth import ( ) from uds.models import User -from . import builder +from . import builder if typing.TYPE_CHECKING: from django.http import HttpResponse diff --git a/server/src/uds/middleware/security.py b/server/src/uds/middleware/security.py index 64749d2d1..9c16bc7fc 100644 --- a/server/src/uds/middleware/security.py +++ b/server/src/uds/middleware/security.py @@ -33,16 +33,16 @@ import re import logging import typing -logger = logging.getLogger(__name__) from django.http import HttpResponseForbidden from uds.core.util.config import GlobalConfig -from uds.core.auths.auth import isTrustedSource - +from uds.core.auths.auth import isTrustedSource, IP_KEY from . import builder +logger = logging.getLogger(__name__) + if typing.TYPE_CHECKING: from django.http import HttpResponse from uds.core.util.request import ExtendedHttpRequest @@ -66,11 +66,26 @@ def _process_request(request: 'ExtendedHttpRequest') -> typing.Optional['HttpRes request.path, ) return HttpResponseForbidden(content='Forbbiden', content_type='text/plain') + + if GlobalConfig.ENHANCED_SECURITY.getBool(): + # Check that ip stored in session is the same as the one that is requesting if user is logged in + session_ip = request.session.get(IP_KEY, None) + if request.user and session_ip and session_ip != request.ip: + logger.info( + 'Denied request from %s to %s. User %s is logged in from a different IP (%s)', + request.ip, + request.path, + request.user, + request.session.get('ip', None), + ) + return HttpResponseForbidden(content='Forbbiden', content_type='text/plain') + return None def _process_response( - request: 'ExtendedHttpRequest', response: 'HttpResponse' + request: 'ExtendedHttpRequest', # pylint: disable=unused-argument + response: 'HttpResponse', ) -> 'HttpResponse': if GlobalConfig.ENHANCED_SECURITY.getBool(): # Legacy browser support for X-XSS-Protection diff --git a/server/src/uds/middleware/xua.py b/server/src/uds/middleware/xua.py index b76755083..30ed23079 100644 --- a/server/src/uds/middleware/xua.py +++ b/server/src/uds/middleware/xua.py @@ -39,13 +39,16 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) + def _process_response( - request: 'ExtendedHttpRequest', response: 'HttpResponse' + request: 'ExtendedHttpRequest', # pylint: disable=unused-argument + response: 'HttpResponse', ) -> 'HttpResponse': if response.get('content-type', '').startswith('text/html'): response['X-UA-Compatible'] = 'IE=edge' return response + # Add a X-UA-Compatible header to the response # This header tells to Internet Explorer to render page with latest # possible version or to use chrome frame if it is installed. TO BE REMOVED SOON (edge does not need it) diff --git a/server/src/uds/migrations/0001_squashed_0042_auto_20210628_1533.py b/server/src/uds/migrations/0001_squashed_0042_auto_20210628_1533.py index 68409e8b3..d5542db4d 100644 --- a/server/src/uds/migrations/0001_squashed_0042_auto_20210628_1533.py +++ b/server/src/uds/migrations/0001_squashed_0042_auto_20210628_1533.py @@ -3,7 +3,7 @@ import datetime from django.db import migrations, models import django.db.models.deletion -import uds.models.util +import uds.core.util.model # Functions from the following migrations need manual copying. @@ -564,12 +564,12 @@ class Migration(migrations.Migration): migrations.AddField( model_name='group', name='created', - field=models.DateTimeField(blank=True, default=uds.models.util.getSqlDatetime), + field=models.DateTimeField(blank=True, default=uds.core.util.model.getSqlDatetime), ), migrations.AddField( model_name='user', name='created', - field=models.DateTimeField(blank=True, default=uds.models.util.getSqlDatetime), + field=models.DateTimeField(blank=True, default=uds.core.util.model.getSqlDatetime), ), migrations.AlterField( model_name='deployedservice', @@ -579,12 +579,12 @@ class Migration(migrations.Migration): migrations.AlterField( model_name='group', name='manager', - field=uds.models.util.UnsavedForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='uds.authenticator'), + field=uds.core.util.model.UnsavedForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='groups', to='uds.authenticator'), ), migrations.AlterField( model_name='user', name='manager', - field=uds.models.util.UnsavedForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='users', to='uds.authenticator'), + field=uds.core.util.model.UnsavedForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='users', to='uds.authenticator'), ), migrations.AddField( model_name='deployedservicepublicationchangelog', diff --git a/server/src/uds/migrations/0044_notification_notifier_servicetokenalias_and_more.py b/server/src/uds/migrations/0044_notification_notifier_servicetokenalias_and_more.py index 02d6febf8..dace83f4c 100644 --- a/server/src/uds/migrations/0044_notification_notifier_servicetokenalias_and_more.py +++ b/server/src/uds/migrations/0044_notification_notifier_servicetokenalias_and_more.py @@ -5,37 +5,40 @@ import django.db.models.deletion import uds.core.util.model import uds.models.notifications import uds.models.user_service_session -import uds.models.util # Remove ServicePools with null service field -def remove_null_service_pools(apps, schema_editor): +def remove_null_service_pools(apps, schema_editor): # pylint: disable=unused-argument ServicePool = apps.get_model('uds', 'ServicePool') ServicePool.objects.filter(service__isnull=True).delete() + # No-Op backwards migration -def nop(apps, schema_editor): # pragma: no cover +def nop(apps, schema_editor): # pylint: disable=unused-argument pass # Python update network fields to allow ipv6 -# We will -def update_network_model(apps, schema_editor): - import uds.models.network +# We will +def update_network_model(apps, schema_editor): # pylint: disable=unused-argument + import uds.models.network # pylint: disable=import-outside-toplevel,redefined-outer-name + Network = apps.get_model('uds', 'Network') try: for net in Network.objects.all(): # Store the net_start and net_end on new fields "start" and "end", that are strings # to allow us to store ipv6 addresses - net.start = uds.models.network.Network._hexlify(net.net_start) - net.end = uds.models.network.Network._hexlify(net.net_end) + # pylint: disable=protected-access + net.start = uds.models.network.Network.hexlify(net.net_start) + # pylint: disable=protected-access + net.end = uds.models.network.Network.hexlify(net.net_end) net.version = 4 # Previous versions only supported ipv4 net.save() except Exception as e: - print('Error updating network model: {}'.format(e)) + print(f'Error updating network model: {e}') + class Migration(migrations.Migration): - dependencies = [ ("uds", "0043_auto_20220704_2120"), ] @@ -93,7 +96,7 @@ class Migration(migrations.Migration): ( "level", models.PositiveSmallIntegerField( - default=uds.models.notifications.NotificationLevel["ERROR"] + default=uds.models.notifications.LogLevel["ERROR"] ), ), ], @@ -133,11 +136,11 @@ class Migration(migrations.Migration): models.CharField( blank=True, db_index=True, - default=uds.models.user_service_session._session_id_generator, + default=uds.models.user_service_session._session_id_generator, # pylint: disable=protected-access max_length=128, ), ), - ("start", models.DateTimeField(default=uds.models.util.getSqlDatetime)), + ("start", models.DateTimeField(default=uds.core.util.model.getSqlDatetime)), ("end", models.DateTimeField(blank=True, null=True)), ], options={ diff --git a/server/src/uds/migrations/0045_actortoken_custom_log_name.py b/server/src/uds/migrations/0045_actortoken_custom_log_name.py new file mode 100644 index 000000000..8d7f19b19 --- /dev/null +++ b/server/src/uds/migrations/0045_actortoken_custom_log_name.py @@ -0,0 +1,22 @@ +# Generated by Django 4.2.1 on 2023-05-10 22:35 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + dependencies = [ + ("uds", "0044_notification_notifier_servicetokenalias_and_more"), + ] + + operations = [ + migrations.AddField( + model_name="actortoken", + name="custom", + field=models.TextField(blank=True, default=""), + ), + migrations.AddField( + model_name="log", + name="name", + field=models.CharField(default="", max_length=64), + ), + ] diff --git a/server/src/uds/models/__init__.py b/server/src/uds/models/__init__.py index 91e43a873..244c8691d 100644 --- a/server/src/uds/models/__init__.py +++ b/server/src/uds/models/__init__.py @@ -1,7 +1,7 @@ -# -*- coding: utf-8 -*- +# pylint: disable=unused-import # -# Copyright (c) 2012-2020 Virtual Cable S.L.U. +# Copyright (c) 2012-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -28,12 +28,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import logging - -# Utility imports -from .util import getSqlDatetime, getSqlDatetimeAsUnix, NEVER, NEVER_UNIX # Imports all models so they are available for migrations, etc.. from .managed_object_model import ManagedObjectModel @@ -111,8 +107,6 @@ from .actor_token import ActorToken from .tunnel_token import TunnelToken # Notifications & Alerts -from .notifications import Notification, Notifier, NotificationLevel +from .notifications import Notification, Notifier, LogLevel # Multi factor authentication from .mfa import MFA - -logger = logging.getLogger(__name__) diff --git a/server/src/uds/models/account.py b/server/src/uds/models/account.py index 0d136d4be..3b54b171c 100644 --- a/server/src/uds/models/account.py +++ b/server/src/uds/models/account.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -35,8 +35,8 @@ from django.db import models from .uuid_model import UUIDModel from .tag import TaggingMixin -from .util import getSqlDatetime -from .util import NEVER +from ..core.util.model import getSqlDatetime +from .consts import NEVER logger = logging.getLogger(__name__) @@ -92,7 +92,7 @@ class Account(UUIDModel, TaggingMixin): tmp.save() return tmp - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -101,4 +101,4 @@ class Account(UUIDModel, TaggingMixin): app_label = 'uds' def __str__(self): - return 'Account id {}, name {}'.format(self.id, self.name) + return f'Account id {self.id}, name {self.name}' diff --git a/server/src/uds/models/account_usage.py b/server/src/uds/models/account_usage.py index 4869ee3f8..a9bee4e43 100644 --- a/server/src/uds/models/account_usage.py +++ b/server/src/uds/models/account_usage.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import logging @@ -38,7 +38,7 @@ from uds.core.util.tools import secondsToTimeString from .uuid_model import UUIDModel from .account import Account from .user_service import UserService -from .util import NEVER +from .consts import NEVER # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: @@ -46,7 +46,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) - +# pylint: disable=no-member # pylint complais a lot about members of models... class AccountUsage(UUIDModel): """ AccountUsage storing on DB model @@ -74,7 +74,7 @@ class AccountUsage(UUIDModel): Account, related_name='usages', on_delete=models.CASCADE ) - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -111,6 +111,4 @@ class AccountUsage(UUIDModel): return secondsToTimeString(self.elapsed_seconds_timemark) def __str__(self): - return 'AccountUsage id {}, pool {}, name {}, start {}, end {}'.format( - self.id, self.pool_name, self.user_name, self.start, self.end - ) + return f'AccountUsage id {self.id}, pool {self.pool_name}, name {self.user_name}, start {self.start}, end {self.end}' diff --git a/server/src/uds/models/actor_token.py b/server/src/uds/models/actor_token.py index 9ed89d7fa..5bbde19f4 100644 --- a/server/src/uds/models/actor_token.py +++ b/server/src/uds/models/actor_token.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2012-2020 Virtual Cable S.L.U. +# Copyright (c) 2012-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -26,11 +26,12 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ''' -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' from django.db import models -from .util import MAX_IPV6_LENGTH, MAX_DNS_NAME_LENGTH +from .consts import MAX_IPV6_LENGTH, MAX_DNS_NAME_LENGTH + class ActorToken(models.Model): """ @@ -41,7 +42,7 @@ class ActorToken(models.Model): ip_from = models.CharField(max_length=MAX_IPV6_LENGTH) ip = models.CharField(max_length=MAX_IPV6_LENGTH) ip_version = models.IntegerField(default=4) # Version of ip fields - + hostname = models.CharField(max_length=MAX_DNS_NAME_LENGTH) mac = models.CharField(max_length=128, db_index=True, unique=True) pre_command = models.CharField(max_length=255, blank=True, default='') @@ -52,13 +53,11 @@ class ActorToken(models.Model): token = models.CharField(max_length=48, db_index=True, unique=True) stamp = models.DateTimeField() # Date creation or validation of this entry - # "fake" declarations for type checking - # objects: 'models.manager.Manager[ActorToken]' + # New fields for 4.0, optional "custom" data, to be interpreted by specific code + custom = models.TextField(blank=True, default='') - class Meta: + class Meta: # pylint: disable=too-few-public-methods app_label = 'uds' def __str__(self): - return ''.format( - self.token, self.stamp, self.username, self.hostname, self.ip_from - ) + return f'' diff --git a/server/src/uds/models/authenticator.py b/server/src/uds/models/authenticator.py index 676b42000..0a9057b70 100644 --- a/server/src/uds/models/authenticator.py +++ b/server/src/uds/models/authenticator.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2012-2021 Virtual Cable S.L.U. +# Copyright (c) 2012-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -27,13 +27,12 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing from django.db import models -from django.db.models import signals from uds.core import auths from uds.core import environment @@ -42,7 +41,7 @@ from uds.core.util.state import State from .managed_object_model import ManagedObjectModel from .tag import TaggingMixin -from .util import NEVER +from .consts import NEVER # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: @@ -57,6 +56,7 @@ class Authenticator(ManagedObjectModel, TaggingMixin): This class represents an Authenticator inside the platform. Sample authenticators are LDAP, Active Directory, SAML, ... """ + # Constants for Visibility VISIBLE = 'v' HIDDEN = 'h' @@ -82,7 +82,13 @@ class Authenticator(ManagedObjectModel, TaggingMixin): networks: 'models.manager.RelatedManager[Network]' # MFA associated to this authenticator. Can be null - mfa = models.ForeignKey('MFA', on_delete=models.SET_NULL, null=True, blank=True, related_name='authenticators') + mfa = models.ForeignKey( + 'MFA', + on_delete=models.SET_NULL, + null=True, + blank=True, + related_name='authenticators', + ) class Meta(ManagedObjectModel.Meta): # pylint: disable=too-few-public-methods """ @@ -175,7 +181,7 @@ class Authenticator(ManagedObjectModel, TaggingMixin): if ( user.real_name.strip() == '' or user.name.strip() == user.real_name.strip() ) and realName != user.real_name: - user.real_name = realName + user.real_name = realName or '' user.save(update_fields=['real_name']) return user @@ -227,9 +233,13 @@ class Authenticator(ManagedObjectModel, TaggingMixin): ip, version = net.ipToLong(ipStr) # Allow if self.net_filtering == Authenticator.ALLOW: - return self.networks.filter(net_start__lte=ip, net_end__gte=ip, version=version).exists() + return self.networks.filter( + net_start__lte=ip, net_end__gte=ip, version=version + ).exists() # Deny, must not be in any network - return self.networks.filter(net_start__lte=ip, net_end__gte=ip).exists() is False + return ( + self.networks.filter(net_start__lte=ip, net_end__gte=ip).exists() is False + ) @staticmethod def all() -> 'models.QuerySet[Authenticator]': @@ -244,7 +254,10 @@ class Authenticator(ManagedObjectModel, TaggingMixin): Gets authenticator by tag name. Special tag name "disabled" is used to exclude customAuth """ - from uds.core.util.config import GlobalConfig + # pylint: disable=import-outside-toplevel + from uds.core.util.config import ( + GlobalConfig, + ) if tag is not None: authsList = Authenticator.objects.filter(small_name=tag).order_by( @@ -264,7 +277,7 @@ class Authenticator(ManagedObjectModel, TaggingMixin): yield auth @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. @@ -273,7 +286,10 @@ class Authenticator(ManagedObjectModel, TaggingMixin): :note: If destroy raises an exception, the deletion is not taken. """ - from uds.core.util.permissions import clean + # pylint: disable=import-outside-toplevel + from uds.core.util.permissions import ( + clean, + ) toDelete = kwargs['instance'] @@ -291,7 +307,6 @@ class Authenticator(ManagedObjectModel, TaggingMixin): # Clears related permissions clean(toDelete) - # returns CSV header @staticmethod def getCSVHeader(sep: str = ',') -> str: @@ -315,9 +330,8 @@ class Authenticator(ManagedObjectModel, TaggingMixin): ] ) - def __str__(self): - return u"{0} of type {1} (id:{2})".format(self.name, self.data_type, self.id) + return f'{self.name} of type {self.data_type} (id:{self.id})' # Connects a pre deletion signal to Authenticator diff --git a/server/src/uds/models/cache.py b/server/src/uds/models/cache.py index a4cccc119..47a1ab365 100644 --- a/server/src/uds/models/cache.py +++ b/server/src/uds/models/cache.py @@ -28,14 +28,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from datetime import timedelta import logging from django.db import models, transaction -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime logger = logging.getLogger(__name__) @@ -56,7 +56,7 @@ class Cache(models.Model): # "fake" relations declarations for type checking # objects: 'models.manager.Manager[Cache]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -80,4 +80,4 @@ class Cache(models.Model): expired = "Expired" else: expired = "Active" - return "{0} {1} = {2} ({3})".format(self.owner, self.key, self.value, expired) + return f'{self.owner} {self.key} = {self.value} ({expired})' diff --git a/server/src/uds/models/calendar.py b/server/src/uds/models/calendar.py index aa6a45ce9..fc7bcf6c3 100644 --- a/server/src/uds/models/calendar.py +++ b/server/src/uds/models/calendar.py @@ -1,6 +1,6 @@ # -*- coding: utf-8 -*- -# Copyright (c) 2016-2020 Virtual Cable S.L.U. +# Copyright (c) 2016-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author:: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -57,7 +57,7 @@ class Calendar(UUIDModel, TaggingMixin): calendaraction_set: 'models.manager.RelatedManager[CalendarAction]' calendaraccess_set: 'models.manager.RelatedManager[CalendarAccess]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -65,6 +65,7 @@ class Calendar(UUIDModel, TaggingMixin): db_table = 'uds_calendar' app_label = 'uds' + # Override default save to add uuid def save( self, *args, @@ -84,6 +85,4 @@ class Calendar(UUIDModel, TaggingMixin): return res def __str__(self): - return 'Calendar "{}" modified on {} with {} rules'.format( - self.name, self.modified, self.rules.count() - ) + return f'Calendar "{self.name}" modified on {self.modified}, rules: {self.rules.count()}' diff --git a/server/src/uds/models/calendar_access.py b/server/src/uds/models/calendar_access.py index 9dee604be..3ac089887 100644 --- a/server/src/uds/models/calendar_access.py +++ b/server/src/uds/models/calendar_access.py @@ -29,7 +29,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -59,7 +59,7 @@ class CalendarAccess(UUIDModel): # "fake" declarations for type checking # objects: 'models.manager.Manager[CalendarAccess]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -69,7 +69,7 @@ class CalendarAccess(UUIDModel): app_label = 'uds' def __str__(self) -> str: - return 'Calendar Access {}/{}'.format(self.calendar, self.access) + return f'Calendar Access {self.calendar}/{self.access}' class CalendarAccessMeta(UUIDModel): @@ -83,7 +83,7 @@ class CalendarAccessMeta(UUIDModel): # "fake" declarations for type checking objects: 'models.BaseManager[CalendarAccessMeta]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -93,4 +93,4 @@ class CalendarAccessMeta(UUIDModel): app_label = 'uds' def __str__(self): - return 'Calendar Access Meta {}/{}'.format(self.calendar, self.access) + return f'Calendar Access Meta {self.calendar}/{self.access}' diff --git a/server/src/uds/models/calendar_action.py b/server/src/uds/models/calendar_action.py index 9e313af02..d3d82afd6 100644 --- a/server/src/uds/models/calendar_action.py +++ b/server/src/uds/models/calendar_action.py @@ -29,7 +29,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import json @@ -43,12 +43,12 @@ from django.db import models from uds.core.util import calendar from uds.core.util import log from uds.core.util import state -from uds.core import managers +from uds.core.managers.user_service import UserServiceManager from uds.core import services from .calendar import Calendar from .uuid_model import UUIDModel -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime from .service_pool import ServicePool from .transport import Transport from .authenticator import Authenticator @@ -254,7 +254,7 @@ class CalendarAction(UUIDModel): # "fake" declarations for type checking # objects: 'models.manager.Manager[CalendarAction]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -272,13 +272,13 @@ class CalendarAction(UUIDModel): ca = CALENDAR_ACTION_DICT.get(self.action) if ca is None: - raise Exception('{} not in action dict'.format(self.action)) + raise Exception(f'Action {self.action} not found') params = json.loads(self.params) res = [] for p in ca['params']: val = params[p['name']] - pp = '{}='.format(p['name']) + pp = f'{p["name"]}=' # Transport if p['type'] == 'transport': try: @@ -328,60 +328,54 @@ class CalendarAction(UUIDModel): v = int(params[field]) return v if v >= 0 else 0 - executed = False - if CALENDAR_ACTION_CACHE_L1['id'] == self.action: + # Actions related to calendar actions + def set_l1_cache() -> None: self.service_pool.cache_l1_srvs = numVal('size') - executed = True - elif CALENDAR_ACTION_CACHE_L2['id'] == self.action: + + def set_l2_cache() -> None: self.service_pool.cache_l2_srvs = numVal('size') - executed = True - elif CALENDAR_ACTION_INITIAL['id'] == self.action: + + def set_initial() -> None: self.service_pool.initial_srvs = numVal('size') - executed = True - elif CALENDAR_ACTION_MAX['id'] == self.action: + + def set_max() -> None: self.service_pool.max_srvs = numVal('size') - executed = True - elif CALENDAR_ACTION_PUBLISH['id'] == self.action: - self.service_pool.publish(changeLog='Scheduled publication action') + + def publish() -> None: + nonlocal saveServicePool + self.service_pool.publish() saveServicePool = False - executed = True - elif CALENDAR_ACTION_IGNORE_UNUSED['id'] == self.action: + + def ignores_unused() -> None: self.service_pool.ignores_unused = params['state'] in ('true', '1', True) - executed = True - elif CALENDAR_ACTION_REMOVE_USERSERVICES['id'] == self.action: + + def remove_userservices() -> None: # 1.- Remove usable assigned services (Ignore "creating ones", just for created) for userService in self.service_pool.assignedUserServices().filter( state=state.State.USABLE ): userService.remove() - saveServicePool = False - executed = True - elif CALENDAR_ACTION_REMOVE_STUCK_USERSERVICES['id'] == self.action: + + def remove_stuck_userservice() -> None: # 1.- Remove stuck assigned services (Ignore "creating ones", just for created) since = getSqlDatetime() - datetime.timedelta(hours=numVal('hours')) for userService in self.service_pool.assignedUserServices().filter( state_date__lt=since, state=state.State.USABLE ): userService.remove() - saveServicePool = False - executed = True - elif CALENDAR_ACTION_DEL_ALL_TRANSPORTS['id'] == self.action: + + def del_all_transport() -> None: # 2.- Remove all transports self.service_pool.transports.clear() - saveServicePool = False - executed = True - elif CALENDAR_ACTION_DEL_ALL_GROUPS['id'] == self.action: + + def del_all_groups() -> None: # 3.- Remove all groups self.service_pool.assignedGroups.clear() - saveServicePool = False - executed = True - elif self.action in [ - CALENDAR_ACTION_CLEAN_CACHE_L1['id'], - CALENDAR_ACTION_CLEAN_CACHE_L2['id'], - ]: + + def clear_cache() -> None: # 4.- Remove all cache_l1_srvs for i in self.service_pool.cachedUserServices().filter( - managers.userServiceManager().getCacheStateFilter( + UserServiceManager().getCacheStateFilter( self.service_pool, services.UserDeployment.L1_CACHE if self.action == CALENDAR_ACTION_CLEAN_CACHE_L1['id'] @@ -389,92 +383,89 @@ class CalendarAction(UUIDModel): ) ): i.remove() - saveServicePool = False - executed = True - elif CALENDAR_ACTION_CLEAN_CACHE_L2['id'] == self.action: - # 5.- Remove all cache_l2_srvs - for i in self.service_pool.cachedUserServices().filter( - managers.userServiceManager().getCacheStateFilter( - self.service_pool, services.UserDeployment.L2_CACHE - ) - ): - i.remove() - saveServicePool = False - executed = True - elif self.action in [ - CALENDAR_ACTION_ADD_TRANSPORT['id'], - CALENDAR_ACTION_DEL_TRANSPORT['id'], - CALENDAR_ACTION_ADD_GROUP['id'], - CALENDAR_ACTION_DEL_GROUP['id'], - ]: # Add/remove transport or group - saveServicePool = False - caTransports = ( - CALENDAR_ACTION_ADD_TRANSPORT['id'], - CALENDAR_ACTION_DEL_TRANSPORT['id'], - ) - caGroups = ( - CALENDAR_ACTION_ADD_GROUP['id'], - CALENDAR_ACTION_DEL_GROUP['id'], - ) - if self.action in caTransports: - try: - t = Transport.objects.get(uuid=params['transport']) - if self.action == caTransports[0]: - self.service_pool.transports.add(t) - else: - self.service_pool.transports.remove(t) - executed = True - except Exception: - self.service_pool.log( - 'Scheduled action not executed because transport is not available anymore' - ) - elif self.action in caGroups: - try: - auth, grp = params['group'].split('@') - grp = Authenticator.objects.get(uuid=auth).groups.get(uuid=grp) - if self.action == caGroups[0]: - self.service_pool.assignedGroups.add(grp) - else: - self.service_pool.assignedGroups.remove(grp) - executed = True - except Exception: - self.service_pool.log( - 'Scheduled action not executed because group is not available anymore' - ) - else: - self.service_pool.log( - 'Scheduled action not executed because is not supported: {}'.format( - self.action - ) - ) - if executed: + def add_del_transport() -> None: try: + t = Transport.objects.get(uuid=params['transport']) + if self.action == CALENDAR_ACTION_ADD_TRANSPORT['id']: + self.service_pool.transports.add(t) + else: + self.service_pool.transports.remove(t) + except Exception: self.service_pool.log( - 'Executed action {} [{}]'.format( - CALENDAR_ACTION_DICT.get(self.action, {})['description'], - self.prettyParams, - ), - level=log.INFO, + 'Scheduled action not executed because transport is not available anymore' + ) + + def add_del_group() -> None: + try: + auth, grp = params['group'].split('@') + grp = Authenticator.objects.get(uuid=auth).groups.get(uuid=grp) + if self.action == CALENDAR_ACTION_ADD_GROUP['id']: + self.service_pool.assignedGroups.add(grp) + else: + self.service_pool.assignedGroups.remove(grp) + except Exception: + self.service_pool.log( + 'Scheduled action not executed because group is not available anymore' + ) + + actions: typing.Mapping[str, typing.Tuple[typing.Callable[[], None], bool]] = { + # Id, actions (lambda), saveServicePool (bool) + CALENDAR_ACTION_CACHE_L1['id']: (set_l1_cache, True), + CALENDAR_ACTION_CACHE_L2['id']: (set_l2_cache, True), + CALENDAR_ACTION_INITIAL['id']: (set_initial, True), + CALENDAR_ACTION_MAX['id']: (set_max, True), + CALENDAR_ACTION_PUBLISH['id']: (publish, False), + CALENDAR_ACTION_IGNORE_UNUSED['id']: (ignores_unused, True), + CALENDAR_ACTION_REMOVE_USERSERVICES['id']: (remove_userservices, False), + CALENDAR_ACTION_REMOVE_STUCK_USERSERVICES['id']: ( + remove_stuck_userservice, + False, + ), + CALENDAR_ACTION_DEL_ALL_TRANSPORTS['id']: (del_all_transport, False), + CALENDAR_ACTION_DEL_ALL_GROUPS['id']: (del_all_groups, False), + CALENDAR_ACTION_CLEAN_CACHE_L1['id']: (clear_cache, False), + CALENDAR_ACTION_CLEAN_CACHE_L2['id']: (clear_cache, False), + CALENDAR_ACTION_ADD_TRANSPORT['id']: ( + add_del_transport, + False, + ), + CALENDAR_ACTION_DEL_TRANSPORT['id']: ( + add_del_transport, + False, + ), + CALENDAR_ACTION_ADD_GROUP['id']: (add_del_group, False), + CALENDAR_ACTION_DEL_GROUP['id']: (add_del_group, False), + } + + fncAction, saveServicePool = actions.get(self.action, (None, False)) + + if fncAction: + try: + fncAction() + + if saveServicePool: + self.service_pool.save() + + self.service_pool.log( + f'Executed action {CALENDAR_ACTION_DICT.get(self.action, {}).get("description", self.action)} [{self.prettyParams}]', + level=log.LogLevel.INFO, ) except Exception: - # Avoid invalid ACTIONS errors on log self.service_pool.log( - 'Action {} is not a valid scheduled action! please, remove it from your list.'.format( - self.action - ) + f'Error executing scheduled action {CALENDAR_ACTION_DICT.get(self.action, {}).get("description", self.action)} [{self.prettyParams}]' ) + logger.exception('Error executing scheduled action') + else: + self.service_pool.log( + f'Scheduled action not executed because is not supported: {self.action}' + ) # On save, will regenerate nextExecution if save: self.save() - if saveServicePool: - self.service_pool.save() - - def save( - self, force_insert=False, force_update=False, using=None, update_fields=None - ): + def save(self, *args, **kwargs): lastExecution = self.last_execution or getSqlDatetime() possibleNext = calendar.CalendarChecker(self.calendar).nextEvent( checkFrom=lastExecution - self.offset, startEvent=self.at_start @@ -484,13 +475,12 @@ class CalendarAction(UUIDModel): else: self.next_execution = None - super().save(force_insert, force_update, using, update_fields) + super().save(*args, **kwargs) def __str__(self): - return 'Calendar of {}, last_execution = {}, next execution = {}, action = {}, params = {}'.format( - self.service_pool.name, - self.last_execution, - self.next_execution, - self.action, - self.params, + return ( + f'Calendar of {self.service_pool.name},' + f' last_execution = {self.last_execution},' + f' next execution = {self.next_execution},' + f' action = {self.action}, params = {self.params}' ) diff --git a/server/src/uds/models/calendar_rule.py b/server/src/uds/models/calendar_rule.py index a924415dc..33f320a06 100644 --- a/server/src/uds/models/calendar_rule.py +++ b/server/src/uds/models/calendar_rule.py @@ -28,12 +28,11 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import logging -import hashlib import typing from django.db import models @@ -42,7 +41,7 @@ from dateutil import rrule as rules from .uuid_model import UUIDModel from .calendar import Calendar -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime logger = logging.getLogger(__name__) @@ -97,6 +96,7 @@ weekdays: typing.Tuple[rules.weekday, ...] = ( ) +# pylint: disable=no-member # For some reason, pylint does not properly detect the ForeignKey, etc.. class CalendarRule(UUIDModel): name = models.CharField(max_length=128) comments = models.CharField(max_length=256) @@ -114,10 +114,7 @@ class CalendarRule(UUIDModel): Calendar, related_name='rules', on_delete=models.CASCADE ) - # "fake" declarations for type checking - # objects: 'models.manager.Manager["CalendarRule"]' - - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -172,23 +169,14 @@ class CalendarRule(UUIDModel): def duration_as_minutes(self) -> int: return dunit_to_mins.get(self.duration_unit, 1) * self.duration - def save( - self, force_insert=False, force_update=False, using=None, update_fields=None - ): + def save(self, *args, **kwargs): logger.debug('Saving...') self.calendar.modified = getSqlDatetime() - res = super().save(force_insert, force_update, using, update_fields) + res = super().save(*args, **kwargs) # Ensure saves associated calendar, so next execution of actions is updated with rule values self.calendar.save() return res def __str__(self): - return 'Rule {0}: {1}-{2}, {3}, Interval: {4}, duration: {5}'.format( - self.name, - self.start, - self.end, - self.frequency, - self.interval, - self.duration, - ) + return f'Rule {self.name}: {self.start}-{self.end}, {self.frequency}, Interval: {self.interval}, duration: {self.duration}' diff --git a/server/src/uds/models/config.py b/server/src/uds/models/config.py index a2b428bb2..230118f5d 100644 --- a/server/src/uds/models/config.py +++ b/server/src/uds/models/config.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -55,7 +55,7 @@ class Config(models.Model): # "fake" declarations for type checking # objects: 'models.manager.Manager[Config]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -68,4 +68,4 @@ class Config(models.Model): app_label = 'uds' def __str__(self) -> str: - return "Config {} = {}".format(self.key, self.value) + return f'Config {self.key} = {self.value}' diff --git a/tunnel-server/samples/echo_server.py b/server/src/uds/models/consts.py similarity index 74% rename from tunnel-server/samples/echo_server.py rename to server/src/uds/models/consts.py index ffdce97f4..3c347e111 100644 --- a/tunnel-server/samples/echo_server.py +++ b/server/src/uds/models/consts.py @@ -1,7 +1,7 @@ -#!/usr/bin/env python3 # -*- coding: utf-8 -*- + # -# Copyright (c) 2020 Virtual Cable S.L.U. +# Copyright (c) 2012-2020 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -26,25 +26,17 @@ # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' -@author: Adolfo Gómez, dkmaster at dkmon dot com -''' -import curio +""" +Author: Adolfo Gómez, dkmaster at dkmon dot com +""" +import typing +from datetime import datetime +from time import mktime +NEVER: typing.Final[datetime] = datetime(1972, 7, 1) +NEVER_UNIX: typing.Final[int] = int(mktime(NEVER.timetuple())) -BUFFER_SIZE = 1024 - -async def echo_server(client, address) -> None: - print(f'Connection fro {address!r}') - while True: - data = await client.recv(BUFFER_SIZE) - if not data: - break - print(f'received {data}') - await client.sendall(data) - print('Closed') - -if __name__ == '__main__': - curio.run(curio.tcp_server, 'localhost', 7777, echo_server) - +# Max ip v6 string length representation, allowing ipv4 mapped addresses +MAX_IPV6_LENGTH: typing.Final[int] = 45 +MAX_DNS_NAME_LENGTH: typing.Final[int] = 255 diff --git a/server/src/uds/models/delayed_task.py b/server/src/uds/models/delayed_task.py index df4f5ac09..c288ccabe 100644 --- a/server/src/uds/models/delayed_task.py +++ b/server/src/uds/models/delayed_task.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -61,7 +61,7 @@ class DelayedTask(models.Model): # "fake" declarations for type checking # objects: 'models.manager.Manager[DelayedTask]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -69,6 +69,4 @@ class DelayedTask(models.Model): app_label = 'uds' def __str__(self) -> str: - return "Run Queue task {0} owned by {3},inserted at {1} and with {2} seconds delay".format( - self.type, self.insert_date, self.execution_delay, self.execution_time - ) + return f'Run Queue task {self.type} owned by {self.execution_time},inserted at {self.insert_date} and with {self.execution_delay} seconds delay' diff --git a/server/src/uds/models/group.py b/server/src/uds/models/group.py index 615688da3..0c8afc602 100644 --- a/server/src/uds/models/group.py +++ b/server/src/uds/models/group.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -41,7 +41,7 @@ from uds.core.util import log from .uuid_model import UUIDModel from .authenticator import Authenticator from .user import User -from .util import UnsavedForeignKey, getSqlDatetime +from ..core.util.model import UnsavedForeignKey, getSqlDatetime # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: @@ -51,6 +51,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) +# pylint: disable=no-member class Group(UUIDModel): """ This class represents a group, associated with one authenticator @@ -73,7 +74,7 @@ class Group(UUIDModel): deployedServices: 'models.manager.RelatedManager[ServicePool]' permissions: 'models.manager.RelatedManager[Permissions]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -101,16 +102,12 @@ class Group(UUIDModel): def __str__(self) -> str: if self.is_meta: - return "Meta group {}(id:{}) with groups {}".format( - self.name, self.id, list(self.groups.all()) - ) + return f'Meta group {self.name}(id:{self.id}) with groups {list(self.groups.all())}' - return "Group {}(id:{}) from auth {}".format( - self.name, self.id, self.manager.name - ) + return f'Group {self.name}(id:{self.id}) from auth {self.manager.name}' @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. diff --git a/server/src/uds/models/image.py b/server/src/uds/models/image.py index 2e541b37a..4f7859bea 100644 --- a/server/src/uds/models/image.py +++ b/server/src/uds/models/image.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import io import codecs @@ -41,7 +41,7 @@ from django.http import HttpResponse from .uuid_model import UUIDModel -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime logger = logging.getLogger(__name__) @@ -77,7 +77,7 @@ class Image(UUIDModel): metaPools: 'models.manager.RelatedManager[MetaPool]' servicesPoolsGroup: 'models.manager.RelatedManager[ServicePoolGroup]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -94,13 +94,13 @@ class Image(UUIDModel): return codecs.decode(data64.encode(), 'base64') @staticmethod - def resizeAndConvert(image: PIL.Image.Image, size: typing.Tuple[int, int]) -> typing.Tuple[int, int, bytes]: + def resizeAndConvert( + image: PIL.Image.Image, size: typing.Tuple[int, int] + ) -> typing.Tuple[int, int, bytes]: """ Resizes an image to the given size """ - image.thumbnail( - size=Image.MAX_IMAGE_SIZE, resample=PIL.Image.LANCZOS, reducing_gap=3.0 - ) + image.thumbnail(size=size, resample=PIL.Image.LANCZOS, reducing_gap=3.0) output = io.BytesIO() image.save(output, 'png') return (image.width, image.height, output.getvalue()) @@ -110,7 +110,9 @@ class Image(UUIDModel): try: stream = io.BytesIO(data) image = PIL.Image.open(stream) - except Exception: # Image data is incorrect, replace as a simple transparent image + except ( + Exception + ): # Image data is incorrect, replace as a simple transparent image image = PIL.Image.new('RGBA', (128, 128)) # Max image size, keeping aspect and using antialias @@ -187,13 +189,9 @@ class Image(UUIDModel): def thumbnailResponse(self) -> HttpResponse: return HttpResponse(self.thumb, content_type='image/png') - def save( - self, force_insert=False, force_update=False, using=None, update_fields=None - ): + def save(self, *args, **kwargs): self.stamp = getSqlDatetime() - return super().save(force_insert, force_update, using, update_fields) + return super().save(*args, **kwargs) def __str__(self): - return 'Image id: {}, name: {}, size: {}, length: {} bytes, thumb length: {} bytes'.format( - self.id, self.name, self.size, len(self.data), len(self.thumb) - ) + return f'Image Id: {self.id}, Name: {self.name}, Size: {self.size}, Length: {len(self.data)} bytes, Thumb length: {len(self.thumb)} bytes' diff --git a/server/src/uds/models/log.py b/server/src/uds/models/log.py index f6ba4640d..18d37e9f9 100644 --- a/server/src/uds/models/log.py +++ b/server/src/uds/models/log.py @@ -28,13 +28,11 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging from django.db import models -from uds.core.util.log import logStrFromLevel - logger = logging.getLogger(__name__) @@ -60,12 +58,13 @@ class Log(models.Model): created = models.DateTimeField(db_index=True) source = models.CharField(max_length=16, default='internal', db_index=True) level = models.PositiveIntegerField(default=0, db_index=True) + name = models.CharField(max_length=64, default='') # If syslog, log name, else empty data = models.CharField(max_length=4096, default='') # "fake" declarations for type checking # objects: 'models.manager.Manager[Log]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -75,14 +74,13 @@ class Log(models.Model): @property def level_str(self) -> str: - return logStrFromLevel(self.level) + # pylint: disable=import-outside-toplevel + from uds.core.util.log import LogLevel + + return LogLevel.fromInt(self.level).name def __str__(self) -> str: - return "Log of {}({}): {} - {} - {} - {}".format( - self.owner_type, - self.owner_id, - self.created, - self.source, - self.level, - self.data, + return ( + f'Log of {self.owner_type}({self.owner_id}):' + f' {self.created} - {self.source} - {self.level} - {self.data}' ) diff --git a/server/src/uds/models/managed_object_model.py b/server/src/uds/models/managed_object_model.py index 7c450f388..455c6b568 100644 --- a/server/src/uds/models/managed_object_model.py +++ b/server/src/uds/models/managed_object_model.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2012-2020 Virtual Cable S.L.U. +# Copyright (c) 2012-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -36,7 +36,7 @@ import typing from django.db import models from uds.core.environment import Environment -from uds.core import Module +from uds.core.module import Module from .uuid_model import UUIDModel @@ -57,7 +57,7 @@ class ManagedObjectModel(UUIDModel): _cachedInstance: typing.Optional[Module] = None - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Defines this is an abstract class """ @@ -68,7 +68,7 @@ class ManagedObjectModel(UUIDModel): """ Returns an environment valid for the record this object represents """ - return Environment.getEnvForTableElement(self._meta.verbose_name, self.id) # type: ignore + return Environment.getEnvForTableElement(self._meta.verbose_name, self.id) # type: ignore # pylint: disable=no-member def deserialize( self, obj: Module, values: typing.Optional[typing.Mapping[str, str]] @@ -119,7 +119,7 @@ class ManagedObjectModel(UUIDModel): Must be overriden!!! """ raise NotImplementedError( - 'getType has not been implemented for {}'.format(self.__class__) + f'getType has not been implemented for {self.__class__.__name__}' ) def isOfType(self, type_: str) -> bool: diff --git a/server/src/uds/models/meta_pool.py b/server/src/uds/models/meta_pool.py index c686653d7..d758a83eb 100644 --- a/server/src/uds/models/meta_pool.py +++ b/server/src/uds/models/meta_pool.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2018-2020 Virtual Cable S.L.U. +# Copyright (c) 2018-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import operator @@ -44,7 +44,7 @@ from uds.core.util.calendar import CalendarChecker from .uuid_model import UUIDModel from .tag import TaggingMixin -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime from .image import Image from .service_pool_group import ServicePoolGroup @@ -133,7 +133,7 @@ class MetaPool(UUIDModel, TaggingMixin): # type: ignore calendarAccess: 'models.QuerySet[CalendarAccessMeta]' members: 'models.QuerySet["MetaPoolMember"]' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -196,9 +196,8 @@ class MetaPool(UUIDModel, TaggingMixin): # type: ignore logger.debug( 'SHORT: %s %s %s', self.short_name, self.short_name is not None, self.name ) - if self.short_name.strip(): - return self.short_name - return self.name + sn = str(self.short_name).strip() + return sn if sn else self.name @staticmethod def getForGroups( @@ -245,12 +244,11 @@ class MetaPool(UUIDModel, TaggingMixin): # type: ignore ), ) ) - # TODO: May we can include some other filters? - + # May we can include some other filters? return meta @staticmethod - def beforeDelete(sender, **kwargs): + def beforeDelete(sender, **kwargs): # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. @@ -259,7 +257,7 @@ class MetaPool(UUIDModel, TaggingMixin): # type: ignore :note: If destroy raises an exception, the deletion is not taken. """ - from uds.core.util.permissions import clean + from uds.core.util.permissions import clean # pylint: disable=import-outside-toplevel toDelete = kwargs['instance'] @@ -270,9 +268,7 @@ class MetaPool(UUIDModel, TaggingMixin): # type: ignore clean(toDelete) def __str__(self): - return 'Meta pool: {}, no. pools: {}, visible: {}, policy: {}'.format( - self.name, self.members.all().count(), self.visible, self.policy - ) + return f'Meta pool: {self.name}, no. pools: {self.members.all().count()}, visible: {self.visible}, policy: {self.policy}' # Connects a pre deletion signal @@ -289,7 +285,7 @@ class MetaPoolMember(UUIDModel): priority = models.PositiveIntegerField(default=0) enabled = models.BooleanField(default=True) - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -298,6 +294,4 @@ class MetaPoolMember(UUIDModel): app_label = 'uds' def __str__(self) -> str: - return '{}/{} {} {}'.format( - self.pool.name, self.meta_pool.name, self.priority, self.enabled - ) + return f'Meta pool member: {self.pool.name}/{self.meta_pool.name}, priority: {self.priority}, enabled: {self.enabled}' diff --git a/server/src/uds/models/mfa.py b/server/src/uds/models/mfa.py index 7bec7a150..218278f51 100644 --- a/server/src/uds/models/mfa.py +++ b/server/src/uds/models/mfa.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2012-2022 Virtual Cable S.L.U. +# Copyright (c) 2012-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -77,15 +77,15 @@ class MFA(ManagedObjectModel, TaggingMixin): # type: ignore We only need to get info from this, not access specific data (class specific info) """ # We only need to get info from this, not access specific data (class specific info) - from uds.core import mfas + from uds.core import mfas # pylint: disable=import-outside-toplevel return mfas.factory().lookup(self.data_type) or mfas.MFA def __str__(self) -> str: - return "{0} of type {1} (id:{2})".format(self.name, self.data_type, self.id) + return f'MFA {self.name} of type {self.data_type} (id:{self.id})' @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. diff --git a/server/src/uds/models/network.py b/server/src/uds/models/network.py index 5c16b36b0..6f36e2b4f 100644 --- a/server/src/uds/models/network.py +++ b/server/src/uds/models/network.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -72,7 +72,7 @@ class Network(UUIDModel, TaggingMixin): # type: ignore # "fake" declarations for type checking # objects: 'models.manager.Manager[Network]' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order """ @@ -81,14 +81,15 @@ class Network(UUIDModel, TaggingMixin): # type: ignore app_label = 'uds' @staticmethod - def _hexlify(number: int) -> str: + def hexlify(number: int) -> str: """ Converts a number to hex, but with 32 chars, and with leading zeros """ - return '{:032x}'.format(number) + # return f'{number:032x}' + return hex(number)[2:].zfill(32) @staticmethod - def _unhexlify(number: str) -> int: + def unhexlify(number: str) -> int: """ Converts a hex string to a number """ @@ -100,7 +101,7 @@ class Network(UUIDModel, TaggingMixin): # type: ignore Returns the networks that are valid for specified ip in dotted quad (xxx.xxx.xxx.xxx) """ ipInt, version = net.ipToLong(ip) - hex_value = Network._hexlify(ipInt) + hex_value = Network.hexlify(ipInt) # hexlify is used to convert to hex, and then decode to convert to string return Network.objects.filter( version=version, @@ -127,8 +128,8 @@ class Network(UUIDModel, TaggingMixin): # type: ignore nr = net.networkFromString(netRange) return Network.objects.create( name=name, - start=Network._hexlify(nr.start), - end=Network._hexlify(nr.end), + start=Network.hexlify(nr.start), + end=Network.hexlify(nr.end), net_string=netRange, version=nr.version, ) @@ -138,31 +139,31 @@ class Network(UUIDModel, TaggingMixin): # type: ignore """ Returns the network start as an integer """ - return Network._unhexlify(self.start) + return Network.unhexlify(self.start) @net_start.setter def net_start(self, value: int) -> None: """ Sets the network start """ - self.start = Network._hexlify(value) + self.start = Network.hexlify(value) @property def net_end(self) -> int: """ Returns the network end as an integer """ - return Network._unhexlify(self.end) + return Network.unhexlify(self.end) @net_end.setter def net_end(self, value: int) -> None: """ Sets the network end """ - self.end = Network._hexlify(value) + self.end = Network.hexlify(value) @property - def netStart(self) -> str: + def str_net_start(self) -> str: """ Property to access the quad dotted format of the stored network start @@ -172,7 +173,7 @@ class Network(UUIDModel, TaggingMixin): # type: ignore return net.longToIp(self.net_start) @property - def netEnd(self) -> str: + def str_net_end(self) -> str: """ Property to access the quad dotted format of the stored network end @@ -198,23 +199,17 @@ class Network(UUIDModel, TaggingMixin): # type: ignore Overrides save to update the start, end and version fields """ rng = net.networkFromString(self.net_string) - self.start = Network._hexlify(rng.start) - self.end = Network._hexlify(rng.end) + self.start = Network.hexlify(rng.start) + self.end = Network.hexlify(rng.end) self.version = rng.version super().save(*args, **kwargs) def __str__(self) -> str: - return u'Network {} ({}) from {} to {} ({})'.format( - self.name, - self.net_string, - net.longToIp(self.net_start), - net.longToIp(self.net_end), - self.version, - ) + return f'Network {self.name} ({self.net_string}) from {self.str_net_start} to {self.str_net_end} ({self.version})' @staticmethod - def beforeDelete(sender, **kwargs) -> None: - from uds.core.util.permissions import clean + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument + from uds.core.util.permissions import clean # pylint: disable=import-outside-toplevel toDelete = kwargs['instance'] diff --git a/server/src/uds/models/notifications.py b/server/src/uds/models/notifications.py index bc761eeb5..6394e4436 100644 --- a/server/src/uds/models/notifications.py +++ b/server/src/uds/models/notifications.py @@ -26,15 +26,14 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -from enum import IntEnum import logging import typing from django.db import models, transaction -from django.utils.translation import gettext as _ +from uds.core.util.log import LogLevel from .managed_object_model import ManagedObjectModel from .tag import TaggingMixin @@ -44,20 +43,6 @@ logger = logging.getLogger(__name__) if typing.TYPE_CHECKING: from uds.core.messaging import Notifier as NotificationProviderModule -class NotificationLevel(IntEnum): - """ - Notification Levels - """ - INFO = 0 - WARNING = 1 - ERROR = 2 - CRITICAL = 3 - - # Return all notification levels as tuples of (level value, level name) - @classmethod - def all(cls): - return [(level.value, level.name) for level in (cls.INFO, cls.WARNING, cls.ERROR, cls.CRITICAL)] - # This model will be available on local "persistent" storage and also on configured database class Notification(models.Model): @@ -75,7 +60,7 @@ class Notification(models.Model): # "fake" declarations for type checking # objects: 'models.BaseManager[Notification]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -102,12 +87,12 @@ class Notifier(ManagedObjectModel, TaggingMixin): name = models.CharField(max_length=128, default='') comments = models.CharField(max_length=256, default='') enabled = models.BooleanField(default=True) - level = models.PositiveSmallIntegerField(default=NotificationLevel.ERROR) + level = models.PositiveSmallIntegerField(default=LogLevel.ERROR) # "fake" declarations for type checking objects: 'models.manager.Manager[Notifier]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -124,21 +109,22 @@ class Notifier(ManagedObjectModel, TaggingMixin): Returns: The python type for this record object """ - from uds.core import messaging # pylint: disable=redefined-outer-name + from uds.core import messaging # pylint: disable=import-outside-toplevel - kind_ = messaging.factory().lookup(self.data_type) - if kind_ is None: - raise Exception('Notifier type not found: {0}'.format(self.data_type)) - return kind_ + kind = messaging.factory().lookup(self.data_type) + if kind is None: + raise Exception(f'Notifier type not found: {self.data_type}') + return kind def getInstance( self, values: typing.Optional[typing.Dict[str, str]] = None ) -> 'NotificationProviderModule': - return typing.cast('NotificationProviderModule', super().getInstance(values=values)) - + return typing.cast( + 'NotificationProviderModule', super().getInstance(values=values) + ) @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. @@ -152,12 +138,16 @@ class Notifier(ManagedObjectModel, TaggingMixin): if toDelete.data: try: s = toDelete.getInstance() - s.destroy() - s.env.clearRelatedData() + s.destroy() # Invokes the destruction of "related own data" + s.env.clearRelatedData() # Clears related data, such as storage, cache, etc... except Exception as e: - logger.error('Error processing deletion of notifier %s: %s (forced deletion)', toDelete.name, e) + logger.error( + 'Error processing deletion of notifier %s: %s (forced deletion)', + toDelete.name, + e, + ) - logger.debug('Before delete mfa provider %s', toDelete) + logger.debug('Before delete notification provider %s', toDelete) # : Connects a pre deletion signal to OS Manager diff --git a/server/src/uds/models/os_manager.py b/server/src/uds/models/os_manager.py index 098397a06..265019558 100644 --- a/server/src/uds/models/os_manager.py +++ b/server/src/uds/models/os_manager.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -55,7 +55,7 @@ class OSManager(ManagedObjectModel, TaggingMixin): # objects: 'models.manager.Manager[OSManager]' deployedServices: 'models.manager.RelatedManager[ServicePool]' - class Meta(ManagedObjectModel.Meta): + class Meta(ManagedObjectModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order """ @@ -80,7 +80,7 @@ class OSManager(ManagedObjectModel, TaggingMixin): :note: We only need to get info from this, not access specific data (class specific info) """ # We only need to get info from this, not access specific data (class specific info) - from uds.core import osmanagers + from uds.core import osmanagers # pylint: disable=import-outside-toplevel return osmanagers.factory().lookup(self.data_type) or osmanagers.OSManager @@ -101,10 +101,10 @@ class OSManager(ManagedObjectModel, TaggingMixin): return True def __str__(self) -> str: - return "{0} of type {1} (id:{2})".format(self.name, self.data_type, self.id) + return f'{self.name} of type {self.data_type} (id:{self.id})' @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. diff --git a/server/src/uds/models/permissions.py b/server/src/uds/models/permissions.py index efe604289..5ecbc0e67 100644 --- a/server/src/uds/models/permissions.py +++ b/server/src/uds/models/permissions.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import enum @@ -41,7 +41,7 @@ from django.db.models import Q from .uuid_model import UUIDModel from .user import User from .group import Group -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime logger = logging.getLogger(__name__) @@ -85,7 +85,6 @@ class PermissionType(enum.IntEnum): return self.value >= permission.value - class Permissions(UUIDModel): """ An OS Manager represents a manager for responding requests for agents inside services. @@ -118,9 +117,7 @@ class Permissions(UUIDModel): object_type = models.SmallIntegerField(default=-1, db_index=True) object_id = models.IntegerField(default=None, db_index=True, null=True, blank=True) - permission = models.SmallIntegerField( - default=PermissionType.NONE, db_index=True - ) + permission = models.SmallIntegerField(default=PermissionType.NONE, db_index=True) # "fake" declarations for type checking # objects: 'models.manager.Manager[Permissions]' @@ -235,11 +232,8 @@ class Permissions(UUIDModel): return PermissionType(self.permission).as_str() def __str__(self) -> str: - return 'Permission {}, user {} group {} object_type {} object_id {} permission {}'.format( - self.uuid, - self.user, - self.group, - self.object_type, - self.object_id, - PermissionType(self.permission).as_str(), + return ( + f'Permission {self.uuid}, user {self.user} group {self.group} ' + f'object_type {self.object_type} object_id {self.object_id} ' + f'permission {PermissionType(self.permission).as_str()}' ) diff --git a/server/src/uds/models/provider.py b/server/src/uds/models/provider.py index 17a40bff8..bd20c8358 100644 --- a/server/src/uds/models/provider.py +++ b/server/src/uds/models/provider.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -59,7 +59,7 @@ class Provider(ManagedObjectModel, TaggingMixin): # type: ignore # objects: 'models.manager.Manager[Provider]' services: 'models.manager.RelatedManager[Service]' - class Meta(ManagedObjectModel.Meta): + class Meta(ManagedObjectModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order """ @@ -76,7 +76,7 @@ class Provider(ManagedObjectModel, TaggingMixin): # type: ignore Returns: The python type for this record object """ - from uds.core import services # pylint: disable=redefined-outer-name + from uds.core import services # pylint: disable=import-outside-toplevel return services.factory().lookup(self.data_type) or services.ServiceProvider @@ -94,10 +94,10 @@ class Provider(ManagedObjectModel, TaggingMixin): # type: ignore return self.maintenance_mode def __str__(self) -> str: - return '{} of type {} (id:{})'.format(self.name, self.data_type, self.id) + return f'Provider {self.name} of type {self.data_type} (id:{self.id})' @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Provider class "Destroy" before deleting it from database. @@ -106,7 +106,7 @@ class Provider(ManagedObjectModel, TaggingMixin): # type: ignore :note: If destroy raises an exception, the deletion is not taken. """ - from uds.core.util.permissions import clean + from uds.core.util.permissions import clean # pylint: disable=import-outside-toplevel toDelete = kwargs['instance'] logger.debug('Before delete service provider %s', toDelete) diff --git a/server/src/uds/models/scheduler.py b/server/src/uds/models/scheduler.py index 8fc75d866..827de82cb 100644 --- a/server/src/uds/models/scheduler.py +++ b/server/src/uds/models/scheduler.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -39,7 +39,7 @@ from uds.core.util.state import State from uds.core.environment import Environment from uds.core import jobs -from .util import NEVER, MAX_DNS_NAME_LENGTH +from .consts import NEVER, MAX_DNS_NAME_LENGTH logger = logging.getLogger(__name__) @@ -76,7 +76,7 @@ class Scheduler(models.Model): # objects: 'models.manager.Manager[Scheduler]' id: int # Primary key (Autogenerated by model, just for type checking) - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -87,7 +87,7 @@ class Scheduler(models.Model): """ Returns an environment valid for the record this object represents """ - return Environment.getEnvForTableElement(self._meta.verbose_name, self.id) # type: ignore + return Environment.getEnvForTableElement(self._meta.verbose_name, self.id) # type: ignore # pylint: disable=no-member def getInstance(self) -> typing.Optional[jobs.Job]: """ @@ -102,7 +102,7 @@ class Scheduler(models.Model): return None @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to remove environment for sheduled task """ @@ -111,9 +111,7 @@ class Scheduler(models.Model): toDelete.getEnvironment().clearRelatedData() def __str__(self) -> str: - return 'Scheduled task {}, every {}, last execution at {}, state = {}'.format( - self.name, self.frecuency, self.last_execution, self.state - ) + return f'Scheduled task {self.name}, every {self.frecuency}, last execution at {self.last_execution}, state = {self.state}' # Connects a pre deletion signal to Scheduler diff --git a/server/src/uds/models/service.py b/server/src/uds/models/service.py index 469d069fd..54bb5fbe3 100644 --- a/server/src/uds/models/service.py +++ b/server/src/uds/models/service.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -46,8 +46,8 @@ from .provider import Provider # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import services from uds.models.service_pool import ServicePool + from uds.core import services logger = logging.getLogger(__name__) @@ -63,10 +63,10 @@ class ServiceTokenAlias(models.Model): ) alias = models.CharField(max_length=64, unique=True) - def __str__(self): - return self.alias - + def __str__(self) -> str: + return str(self.alias) # pylint complains about CharField +# pylint: disable=no-member class Service(ManagedObjectModel, TaggingMixin): # type: ignore """ A Service represents an specidied type of service offered to final users, @@ -93,7 +93,7 @@ class Service(ManagedObjectModel, TaggingMixin): # type: ignore deployedServices: 'models.manager.RelatedManager[ServicePool]' aliases: 'models.manager.RelatedManager[ServiceTokenAlias]' - class Meta(ManagedObjectModel.Meta): + class Meta(ManagedObjectModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -149,9 +149,7 @@ class Service(ManagedObjectModel, TaggingMixin): # type: ignore self.deserialize(obj, values) else: raise Exception( - 'Service type of {} is not recogniced by provider {}'.format( - self.data_type, prov - ) + f'Service type of {self.data_type} is not recogniced by provider {prov.name}' ) self._cachedInstance = obj @@ -169,6 +167,8 @@ class Service(ManagedObjectModel, TaggingMixin): # type: ignore :note: We only need to get info from this, not access specific data (class specific info) """ + from uds.core import services # pylint: disable=import-outside-toplevel,redefined-outer-name + prov: typing.Type['services.ServiceProvider'] = self.provider.getType() return prov.getServiceByType(self.data_type) or services.Service @@ -194,10 +194,10 @@ class Service(ManagedObjectModel, TaggingMixin): # type: ignore return self.max_services_count_type == 1 def __str__(self) -> str: - return '{} of type {} (id:{})'.format(self.name, self.data_type, self.id) + return f'{self.name} of type {self.data_type} (id:{self.id})' @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. @@ -206,7 +206,7 @@ class Service(ManagedObjectModel, TaggingMixin): # type: ignore :note: If destroy raises an exception, the deletion is not taken. """ - from uds.core.util.permissions import clean + from uds.core.util.permissions import clean # pylint: disable=import-outside-toplevel toDelete = kwargs['instance'] diff --git a/server/src/uds/models/service_pool.py b/server/src/uds/models/service_pool.py index a2beb108b..d45332b70 100644 --- a/server/src/uds/models/service_pool.py +++ b/server/src/uds/models/service_pool.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import logging @@ -52,8 +52,8 @@ from .image import Image from .service_pool_group import ServicePoolGroup from .account import Account -from .util import NEVER -from .util import getSqlDatetime +from .consts import NEVER +from ..core.util.model import getSqlDatetime # Not imported at runtime, just for type checking @@ -71,6 +71,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) + # pylint: disable=too-many-public-methods class ServicePool(UUIDModel, TaggingMixin): # type: ignore """ @@ -92,11 +93,15 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore related_name='deployedServices', on_delete=models.CASCADE, ) - transports: 'models.ManyToManyField[Transport, ServicePool]' = models.ManyToManyField( - Transport, related_name='deployedServices', db_table='uds__ds_trans' + transports: 'models.ManyToManyField[Transport, ServicePool]' = ( + models.ManyToManyField( + Transport, related_name='deployedServices', db_table='uds__ds_trans' + ) ) - assignedGroups: 'models.ManyToManyField[Group, ServicePool]' = models.ManyToManyField( - Group, related_name='deployedServices', db_table='uds__ds_grps' + assignedGroups: 'models.ManyToManyField[Group, ServicePool]' = ( + models.ManyToManyField( + Group, related_name='deployedServices', db_table='uds__ds_grps' + ) ) state = models.CharField( max_length=1, default=states.servicePool.ACTIVE, db_index=True @@ -154,7 +159,7 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore calendaraction_set: 'models.manager.RelatedManager[CalendarAction]' changelog: 'models.manager.RelatedManager[ServicePoolPublicationChangelog]' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -200,11 +205,13 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore @staticmethod def getRestrainedsQuerySet() -> 'models.QuerySet[ServicePool]': - from uds.models.user_service import ( + from uds.models.user_service import ( # pylint: disable=import-outside-toplevel UserService, - ) # pylint: disable=redefined-outer-name - from uds.core.util.config import GlobalConfig - from django.db.models import Count + ) + from uds.core.util.config import ( # pylint: disable=import-outside-toplevel + GlobalConfig, + ) + from django.db.models import Count # pylint: disable=import-outside-toplevel if GlobalConfig.RESTRAINT_TIME.getInt() <= 0: return ( @@ -260,7 +267,9 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore The time that a service is in restrain mode is 20 minutes by default (1200 secs), but it can be modified at globalconfig variables """ - from uds.core.util.config import GlobalConfig + from uds.core.util.config import ( # pylint: disable=import-outside-toplevel + GlobalConfig, + ) if GlobalConfig.RESTRAINT_TIME.getInt() <= 0: return False # Do not perform any restraint check if we set the globalconfig to 0 (or less) @@ -282,7 +291,7 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore return self.service.isInMaintenance() if self.service else True def isVisible(self) -> bool: - return self.visible + return self.visible # type: ignore def isUsable(self) -> bool: return ( @@ -315,7 +324,7 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore ret = self.recoverValue('toBeReplacedIn') if ret: return serializer.deserialize(ret) - + except Exception: # nosec: We don't want to fail if there is any exception # logger.exception('Recovering publication death line') pass @@ -364,11 +373,15 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore ac.access == states.action.ALLOW and self.fallbackAccess == states.action.DENY ): - nextE = calendar.CalendarChecker(ac.calendar).nextEvent(chkDateTime, False) + nextE = calendar.CalendarChecker(ac.calendar).nextEvent( + chkDateTime, False + ) if not deadLine or (nextE and deadLine > nextE): deadLine = nextE elif ac.access == states.action.DENY: # DENY - nextE = calendar.CalendarChecker(ac.calendar).nextEvent(chkDateTime, True) + nextE = calendar.CalendarChecker(ac.calendar).nextEvent( + chkDateTime, True + ) if not deadLine or (nextE and deadLine > nextE): deadLine = nextE @@ -482,9 +495,11 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore Ensures that at least a group of groups (database groups) has access to this Service Pool raise an InvalidUserException if fails check """ - from uds.core import auths + from uds.core import auths # pylint: disable=import-outside-toplevel - if not set(groups) & set(self.assignedGroups.all()): + if not set(groups) & set( + self.assignedGroups.all() # pylint: disable=no-member + ): # pylint: disable=no-member raise auths.exceptions.InvalidUserException() def validatePublication(self) -> None: @@ -500,7 +515,10 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore raise InvalidServiceException() def validateTransport(self, transport) -> None: - if self.transports.filter(id=transport.id).count() == 0: + if ( + self.transports.filter(id=transport.id).count() # pylint: disable=no-member + == 0 # pylint: disable=no-member + ): # pylint: disable=no-member raise InvalidServiceException() def validateUser(self, user: 'User') -> None: @@ -536,7 +554,7 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore Returns: List of accesible deployed services """ - from uds.core import services + from uds.core import services # pylint: disable=import-outside-toplevel servicesNotNeedingPub = [ t.type() for t in services.factory().servicesThatDoNotNeedPublication() @@ -608,7 +626,9 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore No check is done, it simply redirects the request to PublicationManager, where checks are done. """ - from uds.core.managers import publicationManager + from uds.core.managers import ( # pylint: disable=import-outside-toplevel + publicationManager, + ) publicationManager().publish(self, changeLog) @@ -679,11 +699,11 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore return bool(self.service) and self.service.testServer(host, port, timeout) # Utility for logging - def log(self, message: str, level: int = log.INFO) -> None: - log.doLog(self, level, message, log.INTERNAL) + def log(self, message: str, level: log.LogLevel = log.LogLevel.INFO) -> None: + log.doLog(self, level, message, log.LogSource.INTERNAL) @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. @@ -692,7 +712,9 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore :note: If destroy raises an exception, the deletion is not taken. """ - from uds.core.util.permissions import clean + from uds.core.util.permissions import ( # pylint: disable=import-outside-toplevel + clean, + ) toDelete: 'ServicePool' = kwargs['instance'] @@ -735,13 +757,10 @@ class ServicePool(UUIDModel, TaggingMixin): # type: ignore ) def __str__(self): - return 'Service pool {}({}) with {} as initial, {} as L1 cache, {} as L2 cache, {} as max'.format( - self.name, - self.id, - self.initial_srvs, - self.cache_l1_srvs, - self.cache_l2_srvs, - self.max_srvs, + return ( + f'Service pool {self.name}({self.id}) with {self.initial_srvs}' + f' as initial, {self.cache_l1_srvs} as L1 cache, {self.cache_l2_srvs}' + f' as L2 cache, {self.max_srvs} as max' ) diff --git a/server/src/uds/models/service_pool_group.py b/server/src/uds/models/service_pool_group.py index 108258e78..fea7877b1 100644 --- a/server/src/uds/models/service_pool_group.py +++ b/server/src/uds/models/service_pool_group.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -44,13 +44,12 @@ from .image import Image logger = logging.getLogger(__name__) - +# pylint: disable=no-member class ServicePoolGroup(UUIDModel): """ A deployed service is the Service produced element that is assigned finally to an user (i.e. a Virtual Machine, etc..) """ - # pylint: disable=model-missing-unicode name = models.CharField(max_length=128, default='', db_index=True, unique=True) comments = models.CharField(max_length=256, default='') priority = models.IntegerField(default=0, db_index=True) @@ -65,7 +64,7 @@ class ServicePoolGroup(UUIDModel): # "fake" declarations for type checking # objects: 'models.manager.Manager[ServicePoolGroup]' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -74,9 +73,7 @@ class ServicePoolGroup(UUIDModel): app_label = 'uds' def __str__(self) -> str: - return 'Service Pool group {}({}): {}'.format( - self.name, self.comments, self.image.name if self.image else '' - ) + return f'Service Pool group {self.name}({self.comments}): {self.image.name if self.image else ""}' @property def as_dict(self) -> typing.MutableMapping[str, typing.Any]: diff --git a/server/src/uds/models/service_pool_publication.py b/server/src/uds/models/service_pool_publication.py index 70ab92fd2..cc80cff03 100644 --- a/server/src/uds/models/service_pool_publication.py +++ b/server/src/uds/models/service_pool_publication.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -42,7 +42,7 @@ from uds.core.environment import Environment from uds.core.util import log from .service_pool import ServicePool -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime from .uuid_model import UUIDModel @@ -65,7 +65,7 @@ class ServicePoolPublicationChangelog(models.Model): # "fake" declarations for type checking # objects: 'models.manager.Manager[ServicePoolPublicationChangelog]' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -74,9 +74,7 @@ class ServicePoolPublicationChangelog(models.Model): app_label = 'uds' def __str__(self) -> str: - return 'Revision log for publication {}, rev {}: {}'.format( - self.publication.name, self.revision, self.log - ) + return f'Changelog for publication {self.publication.name}, rev {self.revision}: {self.log}' class ServicePoolPublication(UUIDModel): @@ -105,7 +103,7 @@ class ServicePoolPublication(UUIDModel): # objects: 'models.manager.Manager["ServicePoolPublication"]' userServices: 'models.manager.RelatedManager[UserService]' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -146,9 +144,7 @@ class ServicePoolPublication(UUIDModel): if serviceInstance.publicationType is None: raise Exception( - 'Class {} do not have defined publicationType but needs to be published!!!'.format( - serviceInstance.__class__ - ) + f'Class {serviceInstance.__class__.__name__} do not have defined publicationType but needs to be published!!!' ) publication = serviceInstance.publicationType( @@ -208,7 +204,7 @@ class ServicePoolPublication(UUIDModel): publicationManager().cancel(self) @staticmethod - def beforeDelete(sender, **kwargs): + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. @@ -230,9 +226,7 @@ class ServicePoolPublication(UUIDModel): logger.debug('Deleted publication %s', toDelete) def __str__(self) -> str: - return 'Publication {}, rev {}, state {}'.format( - self.deployed_service.name, self.revision, State.toString(self.state) - ) + return f'Publication {self.deployed_service.name}, rev {self.revision}, state {State.toString(self.state)}' # Connects a pre deletion signal to Authenticator diff --git a/server/src/uds/models/stats_counters.py b/server/src/uds/models/stats_counters.py index 82172b14f..bd9a69b77 100644 --- a/server/src/uds/models/stats_counters.py +++ b/server/src/uds/models/stats_counters.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import datetime @@ -53,7 +53,7 @@ class StatsCounters(models.Model): # "fake" declarations for type checking objects: 'models.manager.Manager[StatsCounters]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -135,7 +135,7 @@ class StatsCounters(models.Model): q = q[: kwargs['limit']] for i in q.values('group_by_stamp', 'value'): - yield (i['group_by_stamp'], i['value']) + yield (int(i['group_by_stamp']), i['value']) def __str__(self): return f'{datetime.datetime.fromtimestamp(self.stamp)} - {self.owner_id}:{self.owner_type}:{self.counter_type} {self.value}' diff --git a/server/src/uds/models/stats_counters_accum.py b/server/src/uds/models/stats_counters_accum.py index bd96dc611..9f73b4d66 100644 --- a/server/src/uds/models/stats_counters_accum.py +++ b/server/src/uds/models/stats_counters_accum.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import enum @@ -82,7 +82,7 @@ class StatsCountersAccum(models.Model): # "fake" declarations for type checking objects: 'models.manager.Manager[StatsCountersAccum]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -215,7 +215,7 @@ class StatsCountersAccum(models.Model): sum=models.Sum('v_sum'), ) - """Stores accumulated data in StatsCountersAccum""" + # Stores accumulated data in StatsCountersAccum # Acummulate data, only register if there is data accumulated: typing.List[StatsCountersAccum] = [ StatsCountersAccum( diff --git a/server/src/uds/models/stats_events.py b/server/src/uds/models/stats_events.py index 8c3fca7c0..15f645b1e 100644 --- a/server/src/uds/models/stats_events.py +++ b/server/src/uds/models/stats_events.py @@ -28,18 +28,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import logging import typing -import types from django.db import models -from .util import NEVER_UNIX -from .util import getSqlDatetimeAsUnix - logger = logging.getLogger(__name__) @@ -62,7 +58,7 @@ class StatsEvents(models.Model): # "fake" declarations for type checking # objects: 'models.manager.Manager[StatsEvents]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -160,7 +156,7 @@ class StatsEvents(models.Model): # Return record as csv line using separator (default: ',') def toCsv(self, sep: str = ',') -> str: - from uds.core.util.stats.events import EVENT_NAMES, TYPES_NAMES + from uds.core.util.stats.events import EVENT_NAMES, TYPES_NAMES # pylint: disable=import-outside-toplevel return sep.join( [ @@ -176,12 +172,7 @@ class StatsEvents(models.Model): ) def __str__(self): - return 'Log of {}({}): {} - {} - {}, {}, {}'.format( - self.owner_type, - self.owner_id, - self.event_type, - self.stamp, - self.fld1, - self.fld2, - self.fld3, + return ( + f'Log of {self.owner_type}({self.owner_id}): {self.event_type} - {self.stamp}, ' + f'{self.fld1}, {self.fld2}, {self.fld3}' ) diff --git a/server/src/uds/models/storage.py b/server/src/uds/models/storage.py index 7cad1a3b4..e2e5e57e3 100644 --- a/server/src/uds/models/storage.py +++ b/server/src/uds/models/storage.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -53,7 +53,7 @@ class Storage(models.Model): # "fake" declarations for type checking # objects: 'models.manager.Manager[Storage]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -61,6 +61,4 @@ class Storage(models.Model): app_label = 'uds' def __str__(self) -> str: - return '{} {} > str= {}, {}'.format( - self.owner, self.key, self.data, '/'.join([self.attr1 or '']) - ) + return f'{self.owner} {self.key} > str= {self.data}, {self.attr1 or ""}' diff --git a/server/src/uds/models/tag.py b/server/src/uds/models/tag.py index 9ae8b03d8..6460df5f4 100644 --- a/server/src/uds/models/tag.py +++ b/server/src/uds/models/tag.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import typing import logging @@ -81,7 +81,7 @@ class Tag(UUIDModel): servicepool_set: 'models.manager.RelatedManager[ServicePool]' transport_set: 'models.manager.RelatedManager[Transport]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare db table """ @@ -91,14 +91,14 @@ class Tag(UUIDModel): @property def vtag(self) -> str: - return self.tag.capitalize() + return str(self.tag).capitalize() def __str__(self) -> str: - return 'Tag: {} {}'.format(self.uuid, self.tag) + return f'Tag: {self.uuid} {self.tag}' class TaggingMixin(models.Model): tags = models.ManyToManyField(Tag) - class Meta: + class Meta: # pylint: disable=too-few-public-methods abstract = True diff --git a/server/src/uds/models/ticket_store.py b/server/src/uds/models/ticket_store.py index 10a0e33fa..41d1ebe5a 100644 --- a/server/src/uds/models/ticket_store.py +++ b/server/src/uds/models/ticket_store.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ''' -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' import datetime import pickle # nosec: Tickets are generated by us, so we know they are safe @@ -35,10 +35,10 @@ import typing from django.db import models -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from .uuid_model import UUIDModel -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime from .user import User from .user_service import UserService @@ -76,7 +76,7 @@ class TicketStore(UUIDModel): class InvalidTicket(Exception): pass - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare the name of the table at database """ @@ -90,7 +90,7 @@ class TicketStore(UUIDModel): @staticmethod def generateUuid() -> str: return ( - cryptoManager().randomString(40).lower() + CryptoManager().randomString(40).lower() ) # Temporary fix lower() for compat with 3.0 @staticmethod @@ -111,16 +111,19 @@ class TicketStore(UUIDModel): if secure: if not owner: raise ValueError('Tried to use a secure ticket without owner') - data = cryptoManager().AESCrypt(data, owner.encode()) + data = CryptoManager().AESCrypt(data, owner.encode()) owner = SECURED # So data is REALLY encrypted - return TicketStore.objects.create( - stamp=getSqlDatetime(), - data=data, - validator=validator, - validity=validity, - owner=owner, - ).uuid or '' + return ( + TicketStore.objects.create( + stamp=getSqlDatetime(), + data=data, + validator=validator, + validity=validity, + owner=owner, + ).uuid + or '' + ) @staticmethod def get( @@ -147,15 +150,19 @@ class TicketStore(UUIDModel): data: bytes = t.data if secure: # Owner has already been tested and it's not emtpy - data = cryptoManager().AESDecrypt( + data = CryptoManager().AESDecrypt( data, typing.cast(str, owner).encode() ) - data = pickle.loads(data) # nosec: Tickets are generated by us, so we know they are safe + data = pickle.loads( + data + ) # nosec: Tickets are generated by us, so we know they are safe # If has validator, execute it if t.validator: - validator: ValidatorType = pickle.loads(t.validator) # nosec: Tickets are generated by us, so we know they are safe + validator: ValidatorType = pickle.loads( + t.validator + ) # nosec: Tickets are generated by us, so we know they are safe if validator(data) is False: raise TicketStore.InvalidTicket('Validation failed') @@ -166,7 +173,7 @@ class TicketStore(UUIDModel): return data except TicketStore.DoesNotExist: - raise TicketStore.InvalidTicket('Does not exists') + raise TicketStore.InvalidTicket('Does not exists') from None @staticmethod def update( @@ -184,11 +191,13 @@ class TicketStore(UUIDModel): if secure: # Owner has already been tested and it's not emtpy if not owner: raise ValueError('Tried to use a secure ticket without owner') - data = cryptoManager().AESDecrypt( + data = CryptoManager().AESDecrypt( data, typing.cast(str, owner).encode() ) - dct = pickle.loads(data) + dct = pickle.loads( + data + ) # nosec: Tickets are ONLY generated by us, so we know they are safe # invoke check function if checkFnc(dct) is False: @@ -203,7 +212,7 @@ class TicketStore(UUIDModel): if secure: if not owner: raise ValueError('Tried to use a secure ticket without owner') - data = cryptoManager().AESCrypt(data, owner.encode()) + data = CryptoManager().AESCrypt(data, owner.encode()) t.data = data t.save(update_fields=['data']) except TicketStore.DoesNotExist: @@ -222,7 +231,7 @@ class TicketStore(UUIDModel): t.validity = validity t.save(update_fields=['validity', 'stamp']) except TicketStore.DoesNotExist: - raise TicketStore.InvalidTicket('Does not exists') + raise TicketStore.InvalidTicket('Does not exists') from None # Especific methods for tunnel @staticmethod @@ -233,7 +242,7 @@ class TicketStore(UUIDModel): extra: typing.Optional[typing.Mapping[str, typing.Any]] = None, validity: int = 60 * 60 * 24, # 24 Hours default validity for tunnel tickets ) -> str: - owner = cryptoManager().randomString(length=8) + owner = CryptoManager().randomString(length=8) if not userService.user: raise ValueError('User is not set in userService') data = { @@ -302,12 +311,14 @@ class TicketStore(UUIDModel): TicketStore.objects.filter(stamp__lt=cleanSince).delete() def __str__(self) -> str: - data = pickle.loads(self.data) if self.owner != SECURED else '{Secure Ticket}' # nosec: Tickets are generated by us, so we know they are safe - - return 'Ticket id: {}, Owner: {}, Stamp: {}, Validity: {}, Data: {}'.format( - self.uuid, - self.owner, - self.stamp, - self.validity, - data, + # Tickets are generated by us, so we know they are safe + data = ( + pickle.loads(self.data) # nosec + if self.owner != SECURED + else '{Secure Ticket}' + ) + + return ( + f'Ticket id: {self.uuid}, Owner: {self.owner}, Stamp: {self.stamp}, ' + f'Validity: {self.validity}, Data: {data}' ) diff --git a/server/src/uds/models/transport.py b/server/src/uds/models/transport.py index 7e099884b..3cc095cd7 100644 --- a/server/src/uds/models/transport.py +++ b/server/src/uds/models/transport.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -62,7 +62,6 @@ class Transport(ManagedObjectModel, TaggingMixin): ALLOW = 'a' DENY = 'd' - # pylint: disable=model-missing-unicode priority = models.IntegerField(default=0, db_index=True) net_filtering = models.CharField(max_length=1, default=NO_FILTERING, db_index=True) # We store allowed oss as a comma-separated list @@ -76,7 +75,7 @@ class Transport(ManagedObjectModel, TaggingMixin): deployedServices: 'models.manager.RelatedManager[ServicePool]' networks: 'models.manager.RelatedManager[Network]' - class Meta(ManagedObjectModel.Meta): + class Meta(ManagedObjectModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order """ @@ -140,13 +139,13 @@ class Transport(ManagedObjectModel, TaggingMixin): Returns: bool: True if this transport is valid for the specified OS, False otherwise """ - return not self.allowed_oss or os.name in self.allowed_oss.split(',') + return not self.allowed_oss or os.name in str(self.allowed_oss).split(',') def __str__(self) -> str: - return '{} of type {} (id:{})'.format(self.name, self.data_type, self.id) + return f'{self.name} of type {self.data_type} (id:{self.id})' @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. @@ -155,7 +154,7 @@ class Transport(ManagedObjectModel, TaggingMixin): :note: If destroy raises an exception, the deletion is not taken. """ - from uds.core.util.permissions import clean + from uds.core.util.permissions import clean # pylint: disable=import-outside-toplevel toDelete = kwargs['instance'] diff --git a/server/src/uds/models/tunnel_token.py b/server/src/uds/models/tunnel_token.py index 2e17fd206..b12306ead 100644 --- a/server/src/uds/models/tunnel_token.py +++ b/server/src/uds/models/tunnel_token.py @@ -26,14 +26,14 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ''' -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' import typing from django.db import models from uds.core.util.request import ExtendedHttpRequest -from .util import MAX_DNS_NAME_LENGTH, MAX_IPV6_LENGTH +from .consts import MAX_DNS_NAME_LENGTH, MAX_IPV6_LENGTH class TunnelToken(models.Model): @@ -52,7 +52,7 @@ class TunnelToken(models.Model): # "fake" declarations for type checking # objects: 'models.manager.Manager[TunnelToken]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods app_label = 'uds' constraints = [ models.UniqueConstraint(fields=['ip', 'hostname'], name='tt_ip_hostname') @@ -73,6 +73,4 @@ class TunnelToken(models.Model): return False def __str__(self): - return ''.format( - self.token, self.stamp, self.username, self.ip, self.hostname - ) + return f'' diff --git a/server/src/uds/models/unique_id.py b/server/src/uds/models/unique_id.py index 6b4e3b143..954bf8706 100644 --- a/server/src/uds/models/unique_id.py +++ b/server/src/uds/models/unique_id.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -52,7 +52,7 @@ class UniqueId(models.Model): # "fake" declarations for type checking # objects: 'models.manager.Manager[UniqueId]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -64,6 +64,4 @@ class UniqueId(models.Model): ] def __str__(self) -> str: - return u"{0} {1}.{2}, assigned is {3}".format( - self.owner, self.basename, self.seq, self.assigned - ) + return f'{self.owner} {self.basename}.{self.seq}, assigned is {self.assigned}' diff --git a/server/src/uds/models/user.py b/server/src/uds/models/user.py index d81f8dcbf..eb3541a81 100644 --- a/server/src/uds/models/user.py +++ b/server/src/uds/models/user.py @@ -28,18 +28,19 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing from django.db import models from django.db.models import Count, Q, signals -from uds.core import auths +from uds.core import auths, mfas from uds.core.util import log, storage from .authenticator import Authenticator -from .util import NEVER, UnsavedForeignKey, getSqlDatetime +from .consts import NEVER +from ..core.util.model import UnsavedForeignKey, getSqlDatetime from .uuid_model import UUIDModel # Not imported at runtime, just for type checking @@ -51,6 +52,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) +# pylint: disable=no-member class User(UUIDModel): """ This class represents a single user, associated with one authenticator @@ -83,7 +85,7 @@ class User(UUIDModel): userServices: 'models.manager.RelatedManager[UserService]' permissions: 'models.manager.RelatedManager[Permissions]' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -204,10 +206,8 @@ class User(UUIDModel): return store[str(self.uuid) + '_' + key] def __str__(self): - return 'User {} (id:{}) from auth {}'.format( - self.name, self.id, self.manager.name - ) - + return f'{self.pretty_name} (id:{self.id})' + def cleanRelated(self) -> None: """ Cleans up all related external data, such as mfa data, etc @@ -217,9 +217,8 @@ class User(UUIDModel): if self.manager.mfa: self.manager.mfa.getInstance().resetData(mfas.MFA.getUserId(self)) - @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. diff --git a/server/src/uds/models/user_service.py b/server/src/uds/models/user_service.py index f03837a63..523d4f45f 100644 --- a/server/src/uds/models/user_service.py +++ b/server/src/uds/models/user_service.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -44,7 +44,8 @@ from uds.models.uuid_model import UUIDModel from uds.models.service_pool import ServicePool from uds.models.service_pool_publication import ServicePoolPublication from uds.models.user import User -from uds.models.util import NEVER, getSqlDatetime, MAX_IPV6_LENGTH, MAX_DNS_NAME_LENGTH +from uds.core.util.model import getSqlDatetime +from uds.models.consts import NEVER, MAX_IPV6_LENGTH, MAX_DNS_NAME_LENGTH # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: @@ -52,8 +53,6 @@ if typing.TYPE_CHECKING: from uds.core import services from uds.models import ( OSManager, - ServicePool, - ServicePoolPublication, UserServiceProperty, UserServiceSession, AccountUsage, @@ -61,7 +60,9 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) -class UserService(UUIDModel): # pylint: disable=too-many-public-methods + +# pylint: disable=too-many-instance-attributes,too-many-public-methods +class UserService(UUIDModel): """ This is the base model for assigned user service and cached user services. This are the real assigned services to users. ServicePool is the container (the group) of this elements. @@ -76,12 +77,12 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods # so we need to store the publication id here (or the revision, but we need to store something) # storing the id simplifies the queries publication: 'models.ForeignKey[ServicePoolPublication | None]' = models.ForeignKey( - ServicePoolPublication, - on_delete=models.CASCADE, - null=True, - blank=True, - related_name='userServices', - ) + ServicePoolPublication, + on_delete=models.CASCADE, + null=True, + blank=True, + related_name='userServices', + ) unique_id = models.CharField( max_length=128, default='', db_index=True @@ -112,7 +113,9 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods ) # Cache level must be 1 for L1 or 2 for L2, 0 if it is not cached service src_hostname = models.CharField(max_length=MAX_DNS_NAME_LENGTH, default='') - src_ip = models.CharField(max_length=MAX_IPV6_LENGTH, default='') # Source IP of the user connecting to the service. Max length is 45 chars (ipv6) + src_ip = models.CharField( + max_length=MAX_IPV6_LENGTH, default='' + ) # Source IP of the user connecting to the service. Max length is 45 chars (ipv6) # "fake" declarations for type checking # objects: 'models.manager.Manager["UserService"]' @@ -120,7 +123,7 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods sessions: 'models.manager.RelatedManager[UserServiceSession]' accounting: 'AccountUsage' - class Meta(UUIDModel.Meta): + class Meta(UUIDModel.Meta): # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -137,7 +140,7 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods """ Simple accessor to deployed service name plus unique name """ - return "{}\\{}".format(self.deployed_service.name, self.friendly_name) + return f'{self.deployed_service.name}\\{self.friendly_name}' @property def destroy_after(self) -> bool: @@ -173,7 +176,7 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods (see related classes uds.core.util.unique_name_generator and uds.core.util.unique_mac_generator) """ return Environment.getEnvForTableElement( - self._meta.verbose_name, # type: ignore + self._meta.verbose_name, # type: ignore # pylint: disable=no-member self.id, { 'mac': unique.UniqueMacGenerator, @@ -221,9 +224,7 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods ) if serviceInstance.deployedType is None: raise Exception( - 'Class {0} needs deployedType but it is not defined!!!'.format( - serviceInstance.__class__.__name__ - ) + f'Class {serviceInstance.__class__.__name__} needs deployedType but it is not defined!!!' ) us = serviceInstance.deployedType( self.getEnvironment(), @@ -320,8 +321,12 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods self.src_ip = ip[:MAX_IPV6_LENGTH] self.src_hostname = hostname[:MAX_DNS_NAME_LENGTH] - if(len(ip) > MAX_IPV6_LENGTH or len(hostname) > MAX_DNS_NAME_LENGTH): - logger.info('Truncated connection source data to %s/%s', self.src_ip, self.src_hostname) + if len(ip) > MAX_IPV6_LENGTH or len(hostname) > MAX_DNS_NAME_LENGTH: + logger.info( + 'Truncated connection source data to %s/%s', + self.src_ip, + self.src_hostname, + ) self.save(update_fields=['src_ip', 'src_hostname']) @@ -334,7 +339,10 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods :note: If the transport did not notified this data, this may be "empty" """ - return (self.src_ip or '0.0.0.0', self.src_hostname or 'unknown') # nosec: no binding address + return ( + self.src_ip or '0.0.0.0', # nosec: not a binding address + self.src_hostname or 'unknown', + ) def getOsManager(self) -> typing.Optional['OSManager']: return self.deployed_service.osmanager @@ -440,7 +448,8 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods :note: If the state is Fase (set to not in use), a check for removal of this deployed service is launched. """ - from uds.core.managers import userServiceManager + # pylint: disable=import-outside-toplevel + from uds.core.managers.user_service import UserServiceManager self.in_use = inUse self.in_use_date = getSqlDatetime() @@ -454,7 +463,7 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods if not inUse: # Service released, check y we should mark it for removal # If our publication is not current, mark this for removal - userServiceManager().checkForRemoval(self) + UserServiceManager().checkForRemoval(self) def startUsageAccounting(self) -> None: # 1.- If do not have any account associated, do nothing @@ -498,8 +507,7 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods session.close() except Exception: # Does not exists, log it and ignore it logger.warning( - 'Session %s does not exists for user deployed service %s' - % (sessionId, self.id) + 'Session %s does not exists for user deployed service', self.id ) def isUsable(self) -> bool: @@ -518,10 +526,11 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods """ Returns if this service is ready (not preparing or marked for removal) """ - # Call to isReady of the instance - from uds.core.managers import userServiceManager + # pylint: disable=import-outside-toplevel + from uds.core.managers.user_service import UserServiceManager - return userServiceManager().isReady(self) + # Call to isReady of the instance + return UserServiceManager().isReady(self) def isInMaintenance(self) -> bool: return self.deployed_service.isInMaintenance() @@ -542,9 +551,10 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods """ Asks the UserServiceManager to cancel the current operation of this user deployed service. """ - from uds.core.managers import userServiceManager + # pylint: disable=import-outside-toplevel + from uds.core.managers.user_service import UserServiceManager - userServiceManager().cancel(self) + UserServiceManager().cancel(self) def removeOrCancel(self) -> None: """ @@ -568,9 +578,10 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods Args: cacheLevel: New cache level to put object in """ - from uds.core.managers import userServiceManager + # pylint: disable=import-outside-toplevel + from uds.core.managers.user_service import UserServiceManager - userServiceManager().moveToLevel(self, cacheLevel) + UserServiceManager().moveToLevel(self, cacheLevel) def getProperty( self, propName: str, default: typing.Optional[str] = None @@ -622,30 +633,26 @@ class UserService(UUIDModel): # pylint: disable=too-many-public-methods Returns True if this user service does not needs an publication, or if this deployed service publication is the current one """ return ( - (self.deployed_service.service and self.deployed_service.service.getType().publicationType is None) - or self.publication == self.deployed_service.activePublication() - ) + self.deployed_service.service + and self.deployed_service.service.getType().publicationType is None + ) or self.publication == self.deployed_service.activePublication() # Utility for logging - def log(self, message: str, level: int = log.INFO) -> None: - log.doLog(self, level, message, log.INTERNAL) + def log(self, message: str, level: log.LogLevel = log.LogLevel.INFO) -> None: + log.doLog(self, level, message, log.LogSource.INTERNAL) def testServer(self, host, port, timeout=4) -> bool: return self.deployed_service.testServer(host, port, timeout) def __str__(self): - return "User service {}, unique_id {}, cache_level {}, user {}, name {}, state {}:{}".format( - self.name, - self.unique_id, - self.cache_level, - self.user, - self.friendly_name, - State.toString(self.state), - State.toString(self.os_state), + return ( + f'User service {self.name}, unique_id {self.unique_id},' + f' cache_level {self.cache_level}, user {self.user},' + f' name {self.friendly_name}, state {State.toString(self.state)}:{State.toString(self.os_state)}' ) @staticmethod - def beforeDelete(sender, **kwargs) -> None: + def beforeDelete(sender, **kwargs) -> None: # pylint: disable=unused-argument """ Used to invoke the Service class "Destroy" before deleting it from database. diff --git a/server/src/uds/models/user_service_property.py b/server/src/uds/models/user_service_property.py index 80fb60f88..a83cf4b99 100644 --- a/server/src/uds/models/user_service_property.py +++ b/server/src/uds/models/user_service_property.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -55,7 +55,7 @@ class UserServiceProperty(models.Model): # pylint: disable=too-many-public-meth # "fake" declarations for type checking # objects: 'models.manager.Manager[UserServiceProperty]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -69,6 +69,4 @@ class UserServiceProperty(models.Model): # pylint: disable=too-many-public-meth ] def __str__(self) -> str: - return "Property of {}. {}={}".format( - self.user_service.pk, self.name, self.value - ) + return f'Property of {self.user_service.pk}. {self.name}={self.value}' diff --git a/server/src/uds/models/user_service_session.py b/server/src/uds/models/user_service_session.py index d4d002b4f..5ac7d34c2 100644 --- a/server/src/uds/models/user_service_session.py +++ b/server/src/uds/models/user_service_session.py @@ -28,24 +28,25 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging from django.db import models -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from .user_service import UserService -from .util import getSqlDatetime +from ..core.util.model import getSqlDatetime logger = logging.getLogger(__name__) + def _session_id_generator() -> str: """ Generates a new session id """ - return cryptoManager().unique() + return CryptoManager().unique() class UserServiceSession(models.Model): # pylint: disable=too-many-public-methods @@ -54,7 +55,9 @@ class UserServiceSession(models.Model): # pylint: disable=too-many-public-metho The value field is a Text field, so we can put whatever we want in it """ - session_id = models.CharField(max_length=128, db_index=True, default=_session_id_generator, blank=True) + session_id = models.CharField( + max_length=128, db_index=True, default=_session_id_generator, blank=True + ) start = models.DateTimeField(default=getSqlDatetime) end = models.DateTimeField(null=True, blank=True) @@ -65,7 +68,7 @@ class UserServiceSession(models.Model): # pylint: disable=too-many-public-metho # "fake" declarations for type checking # objects: 'models.manager.Manager["UserServiceSession"]' - class Meta: + class Meta: # pylint: disable=too-few-public-methods """ Meta class to declare default order and unique multiple field index """ @@ -79,10 +82,8 @@ class UserServiceSession(models.Model): # pylint: disable=too-many-public-metho ] def __str__(self) -> str: - return 'Session {}. ({} to {}'.format( - self.session_id, self.start, self.end - ) - + return f'Session {self.session_id} ({self.start} to {self.end})' + def close(self) -> None: """ Ends the session diff --git a/server/src/uds/models/util.py b/server/src/uds/models/util.py deleted file mode 100644 index 98b46b60c..000000000 --- a/server/src/uds/models/util.py +++ /dev/null @@ -1,108 +0,0 @@ -# -*- coding: utf-8 -*- - -# -# Copyright (c) 2012-2020 Virtual Cable S.L.U. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -""" -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com -""" -import logging -import typing -from datetime import datetime -from time import mktime - -from django.db import connection, models - -logger = logging.getLogger(__name__) - -NEVER: typing.Final[datetime] = datetime(1972, 7, 1) -NEVER_UNIX: typing.Final[int] = int(mktime(NEVER.timetuple())) - -# Max ip v6 string length representation, allowing ipv4 mapped addresses -MAX_IPV6_LENGTH: typing.Final = 45 -MAX_DNS_NAME_LENGTH: typing.Final = 255 - -class UnsavedForeignKey(models.ForeignKey): - """ - From 1.8 of django, we need to point to "saved" objects. - If dont, will raise an InvalidValue exception. - - We need to trick in some cases, because for example, root user is not in DB - """ - - # Allows pointing to an unsaved object - allow_unsaved_instance_assignment = True - - -def getSqlDatetime() -> datetime: - """Returns the current date/time of the database server. - - We use this time as method to keep all operations betwen different servers in sync. - - We support get database datetime for: - * mysql - * sqlite - - Returns: - datetime: Current datetime of the database server - """ - if connection.vendor in ('mysql', 'microsoft'): - cursor = connection.cursor() - sentence = ( - 'SELECT NOW()' - if connection.vendor == 'mysql' - else 'SELECT CURRENT_TIMESTAMP' - ) - cursor.execute(sentence) - date = (cursor.fetchone() or [datetime.now()])[0] - else: - date = ( - datetime.now() - ) # If not know how to get database datetime, returns local datetime (this is fine for sqlite, which is local) - - return date - - -def getSqlDatetimeAsUnix() -> int: - """Returns the current date/time of the database server as unix timestamp - - Returns: - int: Unix timestamp - """ - return int(mktime(getSqlDatetime().timetuple())) - - -def getSqlFnc(fncName: str) -> str: - """Convert different sql functions for different platforms - - i.e. CEIL --> CEILING on mssql - - """ - if connection.vendor == 'microsoft': - return {'CEIL': 'CEILING'}.get(fncName, fncName) - - return fncName diff --git a/server/src/uds/models/uuid_model.py b/server/src/uds/models/uuid_model.py index b31bde595..3e5a4d840 100644 --- a/server/src/uds/models/uuid_model.py +++ b/server/src/uds/models/uuid_model.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging @@ -51,7 +51,7 @@ class UUIDModel(models.Model): # Just a fake declaration to allow type checking id: int - class Meta: + class Meta: # pylint: disable=too-few-public-methods abstract = True def genUuid(self) -> str: diff --git a/server/src/uds/notifiers/__init__.py b/server/src/uds/notifiers/__init__.py index ca0763f9d..5071be342 100644 --- a/server/src/uds/notifiers/__init__.py +++ b/server/src/uds/notifiers/__init__.py @@ -39,7 +39,7 @@ To create a new notifier module, you will need to follow this steps: The registration of modules is done locating subclases of :py:class:`uds.core.messaging.Notifier` -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging diff --git a/server/src/uds/notifiers/email/notifier.py b/server/src/uds/notifiers/email/notifier.py index d07955443..eae8d41ca 100644 --- a/server/src/uds/notifiers/email/notifier.py +++ b/server/src/uds/notifiers/email/notifier.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import smtplib @@ -46,10 +46,11 @@ from uds.core.util import validators # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) + class EmailNotifier(messaging.Notifier): """ Email notifier @@ -152,7 +153,7 @@ class EmailNotifier(messaging.Notifier): # Now check is valid format if ':' in hostname: host, port = validators.validateHostPortPair(hostname) - self.hostname.value = '{}:{}'.format(host, port) + self.hostname.value = f'{host}:{port}' else: host = self.hostname.cleanStr() self.hostname.value = validators.validateFqdn(host) @@ -163,13 +164,13 @@ class EmailNotifier(messaging.Notifier): # Done - def notify(self, group: str, identificator: str, level: messaging.NotificationLevel, message: str) -> None: + def notify(self, group: str, identificator: str, level: messaging.LogLevel, message: str) -> None: # Send and email with the notification with self.login() as smtp: try: # Create message container msg = MIMEMultipart('alternative') - msg['Subject'] = '{} - {}'.format(group, identificator) + msg['Subject'] = f'{group} - {identificator}' msg['From'] = self.fromEmail.value msg['To'] = self.toEmail.value @@ -180,12 +181,10 @@ class EmailNotifier(messaging.Notifier): if self.enableHTML.value: msg.attach(part2) - + smtp.sendmail(self.fromEmail.value, self.toEmail.value, msg.as_string()) except smtplib.SMTPException as e: - logger.error('Error sending email: {}'.format(e)) - - + logger.error('Error sending email: %s', e) def login(self) -> smtplib.SMTP: """ @@ -204,7 +203,10 @@ class EmailNotifier(messaging.Notifier): context.verify_mode = ssl.CERT_NONE if self.security.value == 'tls': if port: - smtp = smtplib.SMTP(host, port,) + smtp = smtplib.SMTP( + host, + port, + ) else: smtp = smtplib.SMTP(host) smtp.starttls(context=context) @@ -221,5 +223,5 @@ class EmailNotifier(messaging.Notifier): if self.username.value and self.password.value: smtp.login(self.username.value, self.password.value) - + return smtp diff --git a/server/src/uds/notifiers/telegram/__init__.py b/server/src/uds/notifiers/telegram/__init__.py new file mode 100644 index 000000000..5240f4b6e --- /dev/null +++ b/server/src/uds/notifiers/telegram/__init__.py @@ -0,0 +1,2 @@ +# Make notifiers available to the UDS system. +from .notifier import TelegramNotifier diff --git a/server/src/uds/notifiers/telegram/jobs.py b/server/src/uds/notifiers/telegram/jobs.py new file mode 100644 index 000000000..d127c7ccc --- /dev/null +++ b/server/src/uds/notifiers/telegram/jobs.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- + +# +# Copyright (c) 2012-2019 Virtual Cable S.L. +# All rights reserved. +# + +""" +@author: Adolfo Gómez, dkmaster at dkmon dot com +""" +import logging +import typing + +from uds.core import jobs + +from uds.models import Notifier + +from . import notifier + +logger = logging.getLogger(__name__) + + +class TelegramReceiver(jobs.Job): + frecuency = 60 # Once every 60 seconds + friendly_name = 'Telegram Receiver' + + def run(self): + logger.debug('Retrieven messages from Telegram') + + # Get all Notifiers that are telegram notifiers + for telegramDbNotifier in Notifier.objects.filter(data_Type=notifier.TELEGRAM_TYPE): + n = typing.cast(notifier.TelegramNotifier, telegramDbNotifier.getInstance()) + + if n is None: + logger.error('Notifier %s is not a Telegram notifier', telegramDbNotifier.name) + continue + + n.retrieveMessages() diff --git a/server/src/uds/notifiers/telegram/notifier.py b/server/src/uds/notifiers/telegram/notifier.py new file mode 100644 index 000000000..197c383b3 --- /dev/null +++ b/server/src/uds/notifiers/telegram/notifier.py @@ -0,0 +1,208 @@ +# -*- coding: utf-8 -*- + +# +# Copyright (c) 2022 Virtual Cable S.L.U. +# All rights reserved. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distributiopenStack. +# * Neither the name of Virtual Cable S.L. nor the names of its contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permissiopenStack. +# +# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +""" +Author: Adolfo Gómez, dkmaster at dkmon dot com +""" +import logging +import datetime +import secrets +import typing +import time + +from django.utils.translation import gettext_noop as _ + +from uds.core import messaging, exceptions +from uds.core.ui import gui +from uds.core.util.model import getSqlDatetime +from uds.core.util.tools import ignoreExceptions + +from . import telegram + +# Not imported at runtime, just for type checking +if typing.TYPE_CHECKING: + from uds.core.module import Module + +logger = logging.getLogger(__name__) + +TELEGRAM_TYPE = 'telegramNotifications' + + +class TelegramNotifier(messaging.Notifier): + """ + Email notifier + """ + + typeName = _('Telegram notifications') + # : Type used internally to identify this provider + typeType = TELEGRAM_TYPE + # : Description shown at administration interface for this provider + typeDescription = _('Telegram notifications') + # : Icon file used as icon for this provider. This string will be translated + # : BEFORE sending it to administration interface, so don't forget to + # : mark it as _ (using gettext_noop) + iconFile = 'telegram.png' + + botname = gui.TextField( + length=64, + label=_('Bot Name'), + order=1, + tooltip=_('Bot name'), + required=True, + defvalue='', + tab=_('Telegram'), + ) + + accessToken = gui.TextField( + length=64, + label=_('Access Token'), + order=2, + tooltip=_('Access Token'), + required=True, + defvalue='', + tab=_('Telegram'), + ) + + # Secret key used to validate join and subscribe requests + secret = gui.TextField( + length=64, + label=_('Secret'), + order=3, + tooltip=_('Secret key used to validate subscribtion requests (using /join or /subscribe commands)'), + required=True, + defvalue='', + tab=_('Telegram'), + ) + + # The bot will allow commmand (/join {secret} or /subscribe {secret} and /leave or /unsubscribe) to subscribe and unsubscribe + # For this to work, we will process the message and check if it is a command from time to time + # This var defines the delay in secods between checks (1 hour by default, we do not need to check this every second) + checkDelay = gui.NumericField( + length=3, + label=_('Check delay'), + order=3, + tooltip=_('Delay in seconds between checks for commands'), + required=True, + defvalue=3600, + minValue=60, + maxValue=86400, + tab=_('Telegram'), + ) + + def initialize(self, values: 'Module.ValuesType' = None): + """ + We will use the "autosave" feature for form fields + """ + if not values: + return + + # check hostname for stmp server si valid and is in the right format + # that is a hostname or ip address with optional port + # if hostname is not valid, we will raise an exception + for i in (self.botname, self.accessToken, self.secret): + s = i.cleanStr() + if not s: + raise exceptions.ValidationError(_('Invalid value for {}').format(i.label)) + i.value = s + + def initGui(self) -> None: + self.secret.defValue = self.secret.defValue or secrets.token_urlsafe(8) + return super().initGui() + + def notify(self, group: str, identificator: str, level: messaging.LogLevel, message: str) -> None: + telegramMsg = f'{group} - {identificator} - {str(level)}: {message}' + logger.debug('Sending telegram message: %s', telegramMsg) + # load chatIds + chatIds = self.storage.getPickle('chatIds') or [] + t = telegram.Telegram(self.accessToken.value, self.botname.value) + for chatId in chatIds: + with ignoreExceptions(): + t.sendMessage(chatId, telegramMsg) + # Wait a bit, so we don't send more than 10 messages per second + time.sleep(0.1) + + def subscribeUser(self, chatId: int) -> None: + # we do not expect to have a lot of users, so we will use a simple storage + # that holds a list of chatIds + chatIds = self.storage.getPickle('chatIds') or [] + if chatId not in chatIds: + chatIds.append(chatId) + self.storage.putPickle('chatIds', chatIds) + logger.info('User %s subscribed to notifications', chatId) + + def unsubscriteUser(self, chatId: int) -> None: + # we do not expect to have a lot of users, so we will use a simple storage + # that holds a list of chatIds + chatIds = self.storage.getPickle('chatIds') or [] + if chatId in chatIds: + chatIds.remove(chatId) + self.storage.putPickle('chatIds', chatIds) + logger.info('User %s unsubscribed from notifications', chatId) + + def retrieveMessages(self) -> None: + if not self.accessToken.value.strip(): + return # no access token, no messages + # Time of last retrieve + lastCheck: typing.Optional[datetime.datetime] = self.storage.getPickle('lastCheck') + now = getSqlDatetime() + + # If last check is not set, we will set it to now + if lastCheck is None: + lastCheck = now - datetime.timedelta(seconds=self.checkDelay.num() + 1) + self.storage.putPickle('lastCheck', lastCheck) + + # If not enough time has passed, we will not check + if lastCheck + datetime.timedelta(seconds=self.checkDelay.num()) > now: + return + + # Update last check + self.storage.putPickle('lastCheck', now) + + lastOffset = self.storage.getPickle('lastOffset') or 0 + t = telegram.Telegram(self.accessToken.value, last_offset=lastOffset) + with ignoreExceptions(): # In case getUpdates fails, ignore it + for update in t.getUpdates(): + # Process update + with ignoreExceptions(): # Any failure will be ignored and next update will be processed + message = update.text.strip() + if message.split(' ')[0] in ('/join', '/subscribe'): + try: + secret = message.split(' ')[1] + if secret != self.secret.value: + raise Exception() + except Exception: + logger.warning( + 'Invalid subscribe command received from telegram bot (invalid secret: %s)', message + ) + self.subscribeUser(update.chat.id) + t.sendMessage(update.chat.id, _('You have been subscribed to notifications')) + elif message in ('/leave', '/unsubscribe'): + self.unsubscriteUser(update.chat.id) + t.sendMessage(update.chat.id, _('You have been unsubscribed from notifications')) + self.storage.putPickle('lastOffset', t.lastOffset) diff --git a/server/src/uds/notifiers/telegram/telegram.png b/server/src/uds/notifiers/telegram/telegram.png new file mode 100755 index 000000000..91f67e7a3 Binary files /dev/null and b/server/src/uds/notifiers/telegram/telegram.png differ diff --git a/server/src/uds/notifiers/telegram/telegram.py b/server/src/uds/notifiers/telegram/telegram.py new file mode 100644 index 000000000..e82db1ddc --- /dev/null +++ b/server/src/uds/notifiers/telegram/telegram.py @@ -0,0 +1,91 @@ +import typing +import logging + +import requests + +logger = logging.getLogger(__name__) + + +class Chat(typing.NamedTuple): + id: int + type: str + first_name: str + + +class From(typing.NamedTuple): + id: int + is_bot: bool + first_name: str + last_name: typing.Optional[str] + username: str + + +class Message(typing.NamedTuple): + chat: Chat + from_: From + date: int + text: str + + @staticmethod + def fromDict(data: typing.Mapping[str, typing.Any]) -> 'Message': + print(data) + return Message( + Chat( + id=data['chat']['id'], + type=data['chat']['type'], + first_name=data['chat']['first_name'], + ), + From( + id=data['from']['id'], + is_bot=data['from']['is_bot'], + first_name=data['from']['first_name'], + last_name=data['from'].get('last_name'), + username=data['from']['username'], + ), + date=data['date'], + text=data['text'], + ) + + +class Telegram: + token: str + reqTimeout: int + lastOffset: int + + def __init__(self, token: str, last_offset: int = 0) -> None: + self.token = token + self.reqTimeout = 3 * 2 + 1 + self.lastOffset = last_offset + + def request( + self, + method, + params: typing.Optional[typing.Dict[str, typing.Any]] = None, + *, + stream: bool = False, + ) -> typing.Dict[str, typing.Any]: + params = params or {} + params['token'] = self.token + kwargs: typing.Dict[str, typing.Any] = {'params': params} + if stream: + kwargs['stream'] = True + # If params has a timeout, use the max of that and our own timeout + timeout = max(params.get('timeout', 0), self.reqTimeout) + response = requests.get( + f'https://api.telegram.org/bot{self.token}/{method}', + timeout=timeout, + **kwargs, + ) + return response.json() + + def sendMessage(self, chat_id: int, text: str) -> typing.Dict[str, typing.Any]: + return self.request('sendMessage', {'chat_id': chat_id, 'text': text}) + + def getUpdates(self, offset: int = 0, timeout: int = 0) -> typing.Iterable[Message]: + self.lastOffset = offset or self.lastOffset + res = self.request('getUpdates', {'offset': self.lastOffset, 'timeout': timeout}, stream=True) + if res['ok'] and res['result']: # if ok and there are results + # Update the offset + self.lastOffset = res['result'][-1]['update_id'] + 1 + for update in res['result']: + yield Message.fromDict(update['message']) diff --git a/server/src/uds/osmanagers/LinuxOsManager/__init__.py b/server/src/uds/osmanagers/LinuxOsManager/__init__.py index 63f41fa66..1f4002b2c 100644 --- a/server/src/uds/osmanagers/LinuxOsManager/__init__.py +++ b/server/src/uds/osmanagers/LinuxOsManager/__init__.py @@ -46,60 +46,50 @@ from .linux_ad_osmanager import LinuxOsADManager from .linux_freeipa_osmanager import LinuxOsFreeIPAManager downloadsManager().registerDownloadable( - 'udsactor_{version}_all.deb'.format(version=VERSION), - _( - 'UDS Actor for Debian, Ubuntu, ... Linux machines (Requires python >= 3.6)' - ), - os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) - + '/files/udsactor_{version}_all.deb'.format(version=VERSION), + f'udsactor_{VERSION}_all.deb', + _('UDS Actor for Debian, Ubuntu, ... Linux machines (Requires python >= 3.6)'), + os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) + f'/files/udsactor_{VERSION}_all.deb', 'application/x-debian-package', ) downloadsManager().registerDownloadable( - 'udsactor-{version}-1.noarch.rpm'.format(version=VERSION), - _( - 'UDS Actor for Centos, Fedora, RH, Suse, ... Linux machines (Requires python >= 3.6)' - ), + f'udsactor-{VERSION}-1.noarch.rpm', + _('UDS Actor for Centos, Fedora, RH, Suse, ... Linux machines (Requires python >= 3.6)'), os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) - + '/files/udsactor-{version}-1.noarch.rpm'.format(version=VERSION), + + f'/files/udsactor-{VERSION}-1.noarch.rpm', 'application/x-redhat-package-manager', ) downloadsManager().registerDownloadable( - 'udsactor-unmanaged_{version}_all.deb'.format(version=VERSION), + f'udsactor-unmanaged_{VERSION}_all.deb', _( 'UDS Actor for Debian based Linux machines. Used ONLY for static machines. (Requires python >= 3.6)' ), os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) - + '/files/udsactor-unmanaged_{version}_all.deb'.format(version=VERSION), + + f'/files/udsactor-unmanaged_{VERSION}_all.deb', 'application/x-debian-package', ) downloadsManager().registerDownloadable( - 'udsactor-unmanaged-{version}-1.noarch.rpm'.format(version=VERSION), + f'udsactor-unmanaged-{VERSION}-1.noarch.rpm', _( 'UDS Actor for Centos, Fedora, RH, Suse, ... Linux machines. Used ONLY for static machines. (Requires python >= 3.6)' ), os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) - + '/files/udsactor-unmanaged-{version}-1.noarch.rpm'.format(version=VERSION), + + f'/files/udsactor-unmanaged-{VERSION}-1.noarch.rpm', 'application/x-redhat-package-manager', ) downloadsManager().registerDownloadable( 'udsactor_2.2.0_legacy.deb', - _( - 'Legacy UDS Actor for Debian, Ubuntu, ... Linux machines (Requires python 2.7)' - ), - os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) - + '/files/udsactor_2.2.0_legacy.deb', + _('Legacy UDS Actor for Debian, Ubuntu, ... Linux machines (Requires python 2.7)'), + os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) + '/files/udsactor_2.2.0_legacy.deb', 'application/x-debian-package', ) downloadsManager().registerDownloadable( 'udsactor-legacy-2.2.1-1.noarch.rpm', - _( - 'Legacy UDS Actor for Centos, Fedora, RH, ... Linux machines (Requires python 2.7)' - ), + _('Legacy UDS Actor for Centos, Fedora, RH, ... Linux machines (Requires python 2.7)'), os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) + '/files/udsactor-legacy-2.2.1-1.noarch.rpm', 'application/x-redhat-package-manager', @@ -107,9 +97,7 @@ downloadsManager().registerDownloadable( downloadsManager().registerDownloadable( 'udsactor-opensuse-legacy-2.2.1-1.noarch.rpm', - _( - 'Legacy UDS Actor for OpenSUSE, ... Linux machines (Requires python 2.7)' - ), + _('Legacy UDS Actor for OpenSUSE, ... Linux machines (Requires python 2.7)'), os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) + '/files/udsactor-opensuse-legacy-2.2.1-1.noarch.rpm', 'application/x-redhat-package-manager', diff --git a/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py b/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py index 99c8528b6..d56f753a0 100644 --- a/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py +++ b/server/src/uds/osmanagers/LinuxOsManager/linux_osmanager.py @@ -40,7 +40,6 @@ from uds.core.ui import gui from uds.core import osmanagers from uds.core.util.state import State from uds.core.util import log -from uds.core.managers import userServiceManager if typing.TYPE_CHECKING: from uds.models.user_service import UserService @@ -95,11 +94,11 @@ class LinuxOsManager(osmanagers.OSManager): defvalue=gui.TRUE, ) - def __setProcessUnusedMachines(self): + def __setProcessUnusedMachines(self) -> None: self.processUnusedMachines = self._onLogout == 'remove' - def __init__(self, environment, values): - super(LinuxOsManager, self).__init__(environment, values) + def __init__(self, environment, values) -> None: + super().__init__(environment, values) if values is not None: self._onLogout = values['onLogout'] self._idle = int(values['idle']) @@ -129,31 +128,31 @@ class LinuxOsManager(osmanagers.OSManager): return False - def getName(self, service): + def getName(self, service: 'UserService') -> str: """ gets name from deployed """ return service.getName() - def doLog(self, service, data, origin=log.OSMANAGER): + def doLog(self, service: 'UserService', data, origin=log.LogSource.OSMANAGER) -> None: # Stores a log associated with this service try: - msg, level = data.split('\t') + msg, slevel = data.split('\t') try: - level = int(level) + level = log.LogLevel.fromStr(slevel) except Exception: - logger.debug('Do not understand level %s', level) - level = log.INFO + logger.debug('Do not understand level %s', slevel) + level = log.LogLevel.INFO log.doLog(service, level, msg, origin) except Exception: - log.doLog(service, log.ERROR, "do not understand {0}".format(data), origin) + log.doLog(service, log.LogLevel.ERROR, f'do not understand {data}', origin) def actorData( self, userService: 'UserService' ) -> typing.MutableMapping[str, typing.Any]: return {'action': 'rename', 'name': userService.getName()} - def processUnused(self, userService): + def processUnused(self, userService: 'UserService') -> None: """ This will be invoked for every assigned and unused user service that has been in this state at least 1/2 of Globalconfig.CHECK_UNUSED_TIME This function can update userService values. Normal operation will be remove machines if this state is not valid @@ -161,20 +160,20 @@ class LinuxOsManager(osmanagers.OSManager): if self.isRemovableOnLogout(userService): log.doLog( userService, - log.INFO, + log.LogLevel.INFO, 'Unused user service for too long. Removing due to OS Manager parameters.', - log.OSMANAGER, + log.LogSource.OSMANAGER, ) userService.remove() - def isPersistent(self): + def isPersistent(self) -> bool: return self._onLogout == 'keep-always' def checkState(self, userService: 'UserService') -> str: logger.debug('Checking state for service %s', userService) return State.RUNNING - def maxIdle(self): + def maxIdle(self) -> typing.Optional[int]: """ On production environments, will return no idle for non removable machines """ @@ -193,7 +192,7 @@ class LinuxOsManager(osmanagers.OSManager): ['v3', self._onLogout, str(self._idle), gui.fromBool(self._deadLine)] ).encode('utf8') - def unmarshal(self, data: bytes): + def unmarshal(self, data: bytes) -> None: values = data.decode('utf8').split('\t') self._idle = -1 self._deadLine = True diff --git a/server/src/uds/osmanagers/LinuxOsManager/linux_randompass_osmanager.py b/server/src/uds/osmanagers/LinuxOsManager/linux_randompass_osmanager.py index d74a8c688..e4e64c9ec 100644 --- a/server/src/uds/osmanagers/LinuxOsManager/linux_randompass_osmanager.py +++ b/server/src/uds/osmanagers/LinuxOsManager/linux_randompass_osmanager.py @@ -74,7 +74,7 @@ class LinuxRandomPassManager(LinuxOsManager): _userAccount: str def __init__(self, environment, values): - super(LinuxRandomPassManager, self).__init__(environment, values) + super().__init__(environment, values) if values is not None: if values['userAccount'] == '': raise exceptions.ValidationError( @@ -91,7 +91,7 @@ class LinuxRandomPassManager(LinuxOsManager): return (username, userService.recoverValue('linOsRandomPass')) return username, password - def genPassword(self, service): + def genPassword(self, service: 'UserService') -> str: randomPass = service.recoverValue('linOsRandomPass') if randomPass is None: randomPass = ''.join( @@ -101,9 +101,9 @@ class LinuxRandomPassManager(LinuxOsManager): service.storeValue('linOsRandomPass', randomPass) log.doLog( service, - log.INFO, - "Password set to \"{}\"".format(randomPass), - log.OSMANAGER, + log.LogLevel.INFO, + f'Password set to "{randomPass}"', + log.LogSource.OSMANAGER, ) return randomPass @@ -134,7 +134,7 @@ class LinuxRandomPassManager(LinuxOsManager): self._userAccount = values[1].decode() LinuxOsManager.unmarshal(self, codecs.decode(values[2], 'hex')) - def valuesDict(self): + def valuesDict(self) -> gui.ValuesDictType: dic = LinuxOsManager.valuesDict(self) dic['userAccount'] = self._userAccount return dic diff --git a/server/src/uds/osmanagers/Test/__init__.py b/server/src/uds/osmanagers/Test/__init__.py index d42d76d74..5a6b4ad03 100644 --- a/server/src/uds/osmanagers/Test/__init__.py +++ b/server/src/uds/osmanagers/Test/__init__.py @@ -27,9 +27,6 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -@author: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -from django.utils.translation import gettext_noop as _ - from .testing_osmanager import TestOSManager - diff --git a/server/src/uds/osmanagers/Test/testing_osmanager.py b/server/src/uds/osmanagers/Test/testing_osmanager.py index 173e87bda..a97702763 100644 --- a/server/src/uds/osmanagers/Test/testing_osmanager.py +++ b/server/src/uds/osmanagers/Test/testing_osmanager.py @@ -40,7 +40,6 @@ from uds.core.ui import gui from uds.core import osmanagers from uds.core.util.state import State from uds.core.util import log -from uds.core.managers import userServiceManager if typing.TYPE_CHECKING: from uds.models.user_service import UserService @@ -109,18 +108,18 @@ class TestOSManager(osmanagers.OSManager): """ return userService.getName() - def doLog(self, service, data, origin=log.OSMANAGER): + def doLog(self, service: 'UserService', data, origin=log.LogSource.OSMANAGER) -> None: # Stores a log associated with this service try: - msg, level = data.split('\t') + msg, slevel = data.split('\t') try: - level = int(level) + level = log.LogLevel.fromStr(slevel) except Exception: - logger.debug('Do not understand level %s', level) - level = log.INFO + logger.debug('Do not understand level %s', slevel) + level = log.LogLevel.INFO log.doLog(service, level, msg, origin) except Exception: - log.doLog(service, log.ERROR, "do not understand {0}".format(data), origin) + log.doLog(service, log.LogLevel.ERROR, f'do not understand {data}', origin) def actorData( self, userService: 'UserService' @@ -135,9 +134,9 @@ class TestOSManager(osmanagers.OSManager): if self.isRemovableOnLogout(userService): log.doLog( userService, - log.INFO, + log.LogLevel.INFO, 'Unused user service for too long. Removing due to OS Manager parameters.', - log.OSMANAGER, + log.LogSource.OSMANAGER, ) userService.remove() diff --git a/server/src/uds/osmanagers/WindowsOsManager/__init__.py b/server/src/uds/osmanagers/WindowsOsManager/__init__.py index 8913d998a..8e2f2878a 100644 --- a/server/src/uds/osmanagers/WindowsOsManager/__init__.py +++ b/server/src/uds/osmanagers/WindowsOsManager/__init__.py @@ -45,17 +45,17 @@ from .windows_domain import WinDomainOsManager from .windows_random import WinRandomPassManager managers.downloadsManager().registerDownloadable( - 'UDSActorSetup-{version}.exe'.format(version=VERSION), + f'UDSActorSetup-{VERSION}.exe', _('UDS Actor for windows machines'), os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) - + '/files/UDSActorSetup-{version}.exe'.format(version=VERSION), + + f'/files/UDSActorSetup-{VERSION}.exe', 'application/x-msdos-program', ) managers.downloadsManager().registerDownloadable( - 'UDSActorUnmanagedSetup-{version}.exe'.format(version=VERSION), + f'UDSActorUnmanagedSetup-{VERSION}.exe', _('UDS Actor for Unmanaged windows machines. Used ONLY for static machines.'), os.path.dirname(typing.cast(str, sys.modules[__package__].__file__)) - + '/files/UDSActorUnmanagedSetup-{version}.exe'.format(version=VERSION), + + f'/files/UDSActorUnmanagedSetup-{VERSION}.exe', 'application/x-msdos-program', ) diff --git a/server/src/uds/osmanagers/WindowsOsManager/windows.py b/server/src/uds/osmanagers/WindowsOsManager/windows.py index f543093a2..a77ac074a 100644 --- a/server/src/uds/osmanagers/WindowsOsManager/windows.py +++ b/server/src/uds/osmanagers/WindowsOsManager/windows.py @@ -16,7 +16,6 @@ from django.utils.translation import gettext_noop as _, gettext_lazy from uds.core import osmanagers, exceptions from uds.core.services import types as serviceTypes from uds.core.ui import gui -from uds.core.managers import userServiceManager from uds.core.util.state import State from uds.core.util import log from uds.models import TicketStore @@ -97,7 +96,7 @@ class WindowsOsManager(osmanagers.OSManager): except Exception: raise exceptions.ValidationError( _('Length must be numeric!!') - ) + ) from None if length > 6 or length < 1: raise exceptions.ValidationError( _('Length must be betwen 1 and 6') @@ -108,7 +107,7 @@ class WindowsOsManager(osmanagers.OSManager): self.processUnusedMachines = self._onLogout == 'remove' def __init__(self, environment, values): - super(WindowsOsManager, self).__init__(environment, values) + super().__init__(environment, values) if values is not None: self._onLogout = values['onLogout'] self._idle = int(values['idle']) @@ -141,21 +140,21 @@ class WindowsOsManager(osmanagers.OSManager): def getName(self, userService: 'UserService') -> str: return userService.getName() - def doLog(self, userService: 'UserService', data: str, origin=log.OSMANAGER): + def doLog(self, userService: 'UserService', data: str, origin=log.LogSource.OSMANAGER): # Stores a log associated with this service try: msg, levelStr = data.split('\t') try: - level = int(levelStr) + level = log.LogLevel.fromStr(levelStr) except Exception: logger.debug('Do not understand level %s', levelStr) - level = log.INFO + level = log.LogLevel.INFO log.doLog(userService, level, msg, origin) except Exception: logger.exception('WindowsOs Manager message log: ') log.doLog( - userService, log.ERROR, "do not understand {0}".format(data), origin + userService, log.LogLevel.ERROR, f'do not understand {data}', origin ) def actorData( @@ -192,9 +191,9 @@ class WindowsOsManager(osmanagers.OSManager): if self.isRemovableOnLogout(userService): log.doLog( userService, - log.INFO, + log.LogLevel.INFO, 'Unused user service for too long. Removing due to OS Manager parameters.', - log.OSMANAGER, + log.LogSource.OSMANAGER, ) userService.remove() diff --git a/server/src/uds/osmanagers/WindowsOsManager/windows_domain.py b/server/src/uds/osmanagers/WindowsOsManager/windows_domain.py index 518dd7241..d5c228726 100644 --- a/server/src/uds/osmanagers/WindowsOsManager/windows_domain.py +++ b/server/src/uds/osmanagers/WindowsOsManager/windows_domain.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# pylint: disable=no-member # # Copyright (c) 2012-2021 Virtual Cable S.L.U. @@ -40,7 +40,7 @@ import ldap from django.utils.translation import gettext_noop as _ from uds.core.ui import gui -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core import exceptions from uds.core.util import log from uds.core.util import ldaputil @@ -49,7 +49,7 @@ from .windows import WindowsOsManager # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment from uds.models import UserService @@ -68,9 +68,7 @@ class WinDomainOsManager(WindowsOsManager): length=64, label=_('Domain'), order=1, - tooltip=_( - 'Domain to join machines to (use FQDN form, Netbios name not supported for most operations)' - ), + tooltip=_('Domain to join machines to (use FQDN form, Netbios name not supported for most operations)'), required=True, ) account = gui.TextField( @@ -99,9 +97,7 @@ class WinDomainOsManager(WindowsOsManager): length=64, label=_('Machine Group'), order=7, - tooltip=_( - 'Group to which add machines on creation. If empty, no group will be used.' - ), + tooltip=_('Group to which add machines on creation. If empty, no group will be used.'), tab=_('Advanced'), ) removeOnExit = gui.CheckBoxField( @@ -150,17 +146,11 @@ class WinDomainOsManager(WindowsOsManager): # if values['domain'].find('.') == -1: # raise exceptions.ValidationException(_('Must provide domain in FQDN')) if values['account'] == '': - raise exceptions.ValidationError( - _('Must provide an account to add machines to domain!') - ) + raise exceptions.ValidationError(_('Must provide an account to add machines to domain!')) if values['account'].find('\\') != -1: - raise exceptions.ValidationError( - _('DOM\\USER form is not allowed!') - ) + raise exceptions.ValidationError(_('DOM\\USER form is not allowed!')) if values['password'] == '': - raise exceptions.ValidationError( - _('Must provide a password for the account!') - ) + raise exceptions.ValidationError(_('Must provide a password for the account!')) self._domain = values['domain'] self._ou = values['ou'].strip() self._account = values['account'] @@ -234,7 +224,7 @@ class WinDomainOsManager(WindowsOsManager): debug=False, ) except Exception as e: - _str = 'Error: {}'.format(e) + _str = f'Error: {e}' raise ldaputil.LDAPError(_str) @@ -247,9 +237,7 @@ class WinDomainOsManager(WindowsOsManager): ldaputil.getAsDict( ldapConnection, base, - "(&(objectClass=group)(|(cn={0})(sAMAccountName={0})))".format( - group - ), + f'(&(objectClass=group)(|(cn={group})(sAMAccountName={group})))', ['dn'], sizeLimit=50, ) @@ -268,14 +256,10 @@ class WinDomainOsManager(WindowsOsManager): # else: base = ','.join(['DC=' + i for i in self._domain.split('.')]) - fltr = '(&(objectClass=computer)(sAMAccountName={}$))'.format( - ldaputil.escape(machineName) - ) + fltr = f'(&(objectClass=computer)(sAMAccountName={ldaputil.escape(machineName)}$))' obj: typing.Optional[typing.MutableMapping[str, typing.Any]] try: - obj = next( - ldaputil.getAsDict(ldapConnection, base, fltr, ['dn'], sizeLimit=50) - ) + obj = next(ldaputil.getAsDict(ldapConnection, base, fltr, ['dn'], sizeLimit=50)) except StopIteration: obj = None @@ -313,11 +297,9 @@ class WinDomainOsManager(WindowsOsManager): logger.warning('Could not find _ldap._tcp.%s', self._domain) log.doLog( userService, - log.WARN, - "Could not remove machine from domain (_ldap._tcp.{0} not found)".format( - self._domain - ), - log.OSMANAGER, + log.LogLevel.WARNING, + f'Could not remove machine from domain (_ldap._tcp.{self._domain} not found)', + log.LogSource.OSMANAGER, ) except ldap.ALREADY_EXISTS: # type: ignore # (valid) # Already added this machine to this group, pass @@ -325,17 +307,13 @@ class WinDomainOsManager(WindowsOsManager): break except ldaputil.LDAPError: logger.exception('Ldap Exception caught') - error = "Could not add machine (invalid credentials? for {0})".format( - self._account - ) + error = f'Could not add machine (invalid credentials? for {self._account})' except Exception as e: - error = "Could not add machine {} to group {}: {}".format( - userService.friendly_name, self._group, e - ) + error = f'Could not add machine {userService.friendly_name} to group {self._group}: {e}' # logger.exception('Ldap Exception caught') if error: - log.doLog(userService, log.WARN, error, log.OSMANAGER) + log.doLog(userService, log.LogLevel.WARNING, error, log.LogSource.OSMANAGER) logger.error(error) def release(self, userService: 'UserService') -> None: @@ -349,9 +327,9 @@ class WinDomainOsManager(WindowsOsManager): # logger.info('Releasing from a not FQDN domain is not supported') log.doLog( userService, - log.INFO, + log.LogLevel.INFO, "Removing a domain machine form a non FQDN domain is not supported.", - log.OSMANAGER, + log.LogSource.OSMANAGER, ) return @@ -361,45 +339,37 @@ class WinDomainOsManager(WindowsOsManager): logger.warning('Could not find _ldap._tcp.%s', self._domain) log.doLog( userService, - log.WARN, - "Could not remove machine from domain (_ldap._tcp.{} not found)".format( - self._domain - ), - log.OSMANAGER, + log.LogLevel.WARNING, + f'Could not remove machine from domain (_ldap._tcp.{self._domain} not found)', + log.LogSource.OSMANAGER, ) return except ldaputil.LDAPError as e: # logger.exception('Ldap Exception caught') log.doLog( userService, - log.WARN, - "Could not remove machine from domain ({})".format(e), - log.OSMANAGER, + log.LogLevel.WARNING, + f'Could not remove machine from domain ({e})', + log.LogSource.OSMANAGER, ) return except Exception as e: # logger.exception('Exception caught') log.doLog( userService, - log.WARN, - "Could not remove machine from domain ({})".format(e), - log.OSMANAGER, + log.LogLevel.WARNING, + f'Could not remove machine from domain ({e})', + log.LogSource.OSMANAGER, ) return try: res = self.__getMachine(ldapConnection, userService.friendly_name) if res is None: - raise Exception( - 'Machine {} not found on AD (permissions?)'.format( - userService.friendly_name - ) - ) + raise Exception(f'Machine {userService.friendly_name} not found on AD (permissions?)') ldaputil.recursive_delete(ldapConnection, res) except IndexError: - logger.error( - 'Error deleting %s from BASE %s', userService.friendly_name, self._ou - ) + logger.error('Error deleting %s from BASE %s', userService.friendly_name, self._ou) except Exception: logger.exception('Deleting from AD: ') @@ -409,9 +379,9 @@ class WinDomainOsManager(WindowsOsManager): except ldaputil.LDAPError as e: return _('Check error: {}').format(e) except dns.resolver.NXDOMAIN: - return _( - 'Could not find server parameters (_ldap._tcp.{0} can\'t be resolved)' - ).format(self._domain) + return _('Could not find server parameters (_ldap._tcp.{0} can\'t be resolved)').format( + self._domain + ) except Exception as e: logger.exception('Exception ') return str(e) @@ -424,17 +394,13 @@ class WinDomainOsManager(WindowsOsManager): # Group if self._group != '': if self.__getGroup(ldapConnection) is None: - return _( - 'Check Error: group "{}" not found (using "cn" to locate it)' - ).format(self._group) + return _('Check Error: group "{}" not found (using "cn" to locate it)').format(self._group) return _('Server check was successful') # pylint: disable=protected-access @staticmethod - def test( - env: 'Environment', data: typing.Dict[str, str] - ) -> typing.List[typing.Any]: + def test(env: 'Environment', data: typing.Dict[str, str]) -> typing.List[typing.Any]: logger.debug('Test invoked') wd = WinDomainOsManager(env, data) logger.debug(wd) @@ -456,17 +422,13 @@ class WinDomainOsManager(WindowsOsManager): if wd and not wd._ou: return [ False, - _('The default path {0} for computers was not found!!!').format( - wd._ou - ), + _('The default path {0} for computers was not found!!!').format(wd._ou), ] return [False, _('The ou path {0} was not found!!!').format(wd._ou)] except dns.resolver.NXDOMAIN: return [ True, - _( - 'Could not check parameters (_ldap._tcp.{0} can\'r be resolved)' - ).format(wd._domain), + _('Could not check parameters (_ldap._tcp.{0} can\'r be resolved)').format(wd._domain), ] except Exception as e: logger.exception('Exception ') @@ -474,9 +436,7 @@ class WinDomainOsManager(WindowsOsManager): return [True, _("All parameters seem to work fine.")] - def actorData( - self, userService: 'UserService' - ) -> typing.MutableMapping[str, typing.Any]: + def actorData(self, userService: 'UserService') -> typing.MutableMapping[str, typing.Any]: return { 'action': 'rename_ad', 'name': userService.getName(), @@ -497,7 +457,7 @@ class WinDomainOsManager(WindowsOsManager): self._domain, self._ou, self._account, - cryptoManager().encrypt(self._password), + CryptoManager().encrypt(self._password), base, self._group, self._serverHint, @@ -512,7 +472,7 @@ class WinDomainOsManager(WindowsOsManager): self._domain = values[1] self._ou = values[2] self._account = values[3] - self._password = cryptoManager().decrypt(values[4]) + self._password = CryptoManager().decrypt(values[4]) if values[0] in ('v2', 'v3', 'v4'): self._group = values[6] diff --git a/server/src/uds/osmanagers/WindowsOsManager/windows_random.py b/server/src/uds/osmanagers/WindowsOsManager/windows_random.py index 7838744ed..b77a7a62e 100644 --- a/server/src/uds/osmanagers/WindowsOsManager/windows_random.py +++ b/server/src/uds/osmanagers/WindowsOsManager/windows_random.py @@ -39,7 +39,7 @@ import typing from django.utils.translation import gettext_noop as _ from uds.core.ui import gui -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core import exceptions from uds.core.util import log @@ -47,7 +47,7 @@ from .windows import WindowsOsManager # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment from uds.models import UserService @@ -58,9 +58,7 @@ logger = logging.getLogger(__name__) class WinRandomPassManager(WindowsOsManager): typeName = _('Windows Random Password OS Manager') typeType = 'WinRandomPasswordManager' - typeDescription = _( - 'Os Manager to control windows machines, with user password set randomly.' - ) + typeDescription = _('Os Manager to control windows machines, with user password set randomly.') iconFile = 'wosmanager.png' # Apart form data from windows os manager, we need also domain and credentials @@ -88,18 +86,14 @@ class WinRandomPassManager(WindowsOsManager): super().__init__(environment, values) if values: if values['userAccount'] == '': - raise exceptions.ValidationError( - _('Must provide an user account!!!') - ) + raise exceptions.ValidationError(_('Must provide an user account!!!')) if values['password'] == '': - raise exceptions.ValidationError( - _('Must provide a password for the account!!!') - ) + raise exceptions.ValidationError(_('Must provide a password for the account!!!')) self._userAccount = values['userAccount'] self._password = values['password'] else: self._userAccount = '' - self._password = "" + self._password = '' # nosec: not a password (empty) def processUserPassword( self, userService: 'UserService', username: str, password: str @@ -107,9 +101,7 @@ class WinRandomPassManager(WindowsOsManager): if username == self._userAccount: password = userService.recoverValue('winOsRandomPass') - return WindowsOsManager.processUserPassword( - self, userService, username, password - ) + return WindowsOsManager.processUserPassword(self, userService, username, password) def genPassword(self, userService: 'UserService'): randomPass = userService.recoverValue('winOsRandomPass') @@ -117,26 +109,21 @@ class WinRandomPassManager(WindowsOsManager): # Generates a password that conforms to complexity rnd = random.SystemRandom() base = ''.join( - rnd.choice(v) - for v in (string.ascii_lowercase, string.ascii_uppercase, string.digits) + rnd.choice(v) for v in (string.ascii_lowercase, string.ascii_uppercase, string.digits) ) + rnd.choice('.+-') - randomPass = ''.join( - rnd.choice(string.ascii_letters + string.digits) for _ in range(12) - ) + randomPass = ''.join(rnd.choice(string.ascii_letters + string.digits) for _ in range(12)) pos = rnd.randrange(0, len(randomPass)) randomPass = randomPass[:pos] + base + randomPass[pos:] userService.storeValue('winOsRandomPass', randomPass) log.doLog( userService, - log.INFO, - "Password set to \"{}\"".format(randomPass), - log.OSMANAGER, + log.LogLevel.INFO, + f'Password set to "{randomPass}"', + log.LogSource.OSMANAGER, ) return randomPass - def actorData( - self, userService: 'UserService' - ) -> typing.MutableMapping[str, typing.Any]: + def actorData(self, userService: 'UserService') -> typing.MutableMapping[str, typing.Any]: return { 'action': 'rename', 'name': userService.getName(), @@ -150,15 +137,15 @@ class WinRandomPassManager(WindowsOsManager): Serializes the os manager data so we can store it in database ''' base = codecs.encode(super().marshal(), 'hex').decode() - return '\t'.join( - ['v1', self._userAccount, cryptoManager().encrypt(self._password), base] - ).encode('utf8') + return '\t'.join(['v1', self._userAccount, CryptoManager().encrypt(self._password), base]).encode( + 'utf8' + ) def unmarshal(self, data: bytes) -> None: values = data.decode('utf8').split('\t') if values[0] == 'v1': self._userAccount = values[1] - self._password = cryptoManager().decrypt(values[2]) + self._password = CryptoManager().decrypt(values[2]) super().unmarshal(codecs.decode(values[3].encode(), 'hex')) def valuesDict(self) -> gui.ValuesDictType: diff --git a/server/src/uds/osmanagers/__init__.py b/server/src/uds/osmanagers/__init__.py index f1459b38d..c5cb49562 100644 --- a/server/src/uds/osmanagers/__init__.py +++ b/server/src/uds/osmanagers/__init__.py @@ -38,7 +38,7 @@ To create a new OS manager module, you will need to follow this steps: The registration of modules is done locating subclases of :py:class:`uds.core.auths.Authentication` -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from uds.core.util import modfinder diff --git a/server/src/uds/reports/__init__.py b/server/src/uds/reports/__init__.py index d64f5f192..3804d5b14 100644 --- a/server/src/uds/reports/__init__.py +++ b/server/src/uds/reports/__init__.py @@ -36,7 +36,7 @@ To create a new rwpoer module, you will need to follow this steps: The registration of modules is done locating subclases of :py:class:`uds.core.reports.Report` -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/reports/auto/__init__.py b/server/src/uds/reports/auto/__init__.py index 2a1510744..11222d760 100644 --- a/server/src/uds/reports/auto/__init__.py +++ b/server/src/uds/reports/auto/__init__.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import logging @@ -60,16 +60,13 @@ reportAutoModelDct: typing.Mapping[str, typing.Type[ReportAutoModel]] = { # typ class ReportAutoType(UserInterfaceType): - def __new__(cls, name, bases, attrs) -> 'ReportAutoType': + def __new__(mcs, name, bases, attrs) -> 'ReportAutoType': # Add gui for elements... order = 1 # Check what source if attrs.get('data_source'): - - attrs['source'] = fields.source_field( - order, attrs['data_source'], attrs['multiple'] - ) + attrs['source'] = fields.source_field(order, attrs['data_source'], attrs['multiple']) order += 1 # Check if date must be added @@ -88,11 +85,9 @@ class ReportAutoType(UserInterfaceType): attrs['interval'] = fields.intervals_field(order) order += 1 - return typing.cast( - 'ReportAutoType', UserInterfaceType.__new__(cls, name, bases, attrs) - ) - + return typing.cast('ReportAutoType', UserInterfaceType.__new__(mcs, name, bases, attrs)) +# pylint: disable=abstract-method class ReportAuto(Report, metaclass=ReportAutoType): # Variables that will be overwriten on new class creation source: typing.ClassVar[typing.Union[gui.MultiChoiceField, gui.ChoiceField]] @@ -115,23 +110,19 @@ class ReportAuto(Report, metaclass=ReportAutoType): multiple: bool = False def getModel(self) -> typing.Type[ReportAutoModel]: - data_source = self.data_source.split('.')[0] + data_source = self.data_source.split('.', maxsplit=1)[0] return reportAutoModelDct[data_source] def initGui(self): # Fills datasource - fields.source_field_data(self.getModel(), self.data_source, self.source) + fields.source_field_data(self.getModel(), self.source) logger.debug('Source field data: %s', self.source) def getModelItems(self) -> typing.Iterable[ReportAutoModel]: model = self.getModel() - filters = ( - [self.source.value] - if isinstance(self.source, gui.ChoiceField) - else self.source.value - ) + filters = [self.source.value] if isinstance(self.source, gui.ChoiceField) else self.source.value if '0-0-0-0' in filters: items = model.objects.all() @@ -141,9 +132,7 @@ class ReportAuto(Report, metaclass=ReportAutoType): return items def getIntervalInHours(self): - return {'hour': 1, 'day': 24, 'week': 24 * 7, 'month': 24 * 30}[ - self.interval.value - ] + return {'hour': 1, 'day': 24, 'week': 24 * 7, 'month': 24 * 30}[self.interval.value] def getIntervalsList(self) -> typing.List[typing.Tuple[datetime.datetime, datetime.datetime]]: intervals: typing.List[typing.Tuple[datetime.datetime, datetime.datetime]] = [] @@ -164,33 +153,29 @@ class ReportAuto(Report, metaclass=ReportAutoType): next = (start + datetime.timedelta(days=32)).replace(day=1) intervals.append((start, next)) start = next - - logger.info('Intervals: {0}'.format(intervals)) - return intervals + logger.debug('Intervals: %s', intervals) + return intervals def adjustDate(self, d: datetime.date, isEndingDate: bool) -> datetime.date: if self.interval.value in ('hour', 'day'): return d - elif self.interval.value == 'week': + if self.interval.value == 'week': return (d - datetime.timedelta(days=d.weekday())).replace() - elif self.interval.value == 'month': + if self.interval.value == 'month': if not isEndingDate: return d.replace(day=1) - else: - return (d + datetime.timedelta(days=32)).replace(day=1) - datetime.timedelta(days=1) - else: - return d + return (d + datetime.timedelta(days=32)).replace(day=1) - datetime.timedelta(days=1) + return d def formatDatetimeAsString(self, d: datetime.date) -> str: if self.interval.value in ('hour', 'day'): return d.strftime('%Y-%b-%d %H:%M:%S') - elif self.interval.value == 'week': + if self.interval.value == 'week': return d.strftime('%Y-%b-%d') - elif self.interval.value == 'month': + if self.interval.value == 'month': return d.strftime('%Y-%b') - else: - return d.strftime('%Y-%b-%d %H:%M:%S') + return d.strftime('%Y-%b-%d %H:%M:%S') def startingDate(self) -> datetime.date: return self.adjustDate(self.date_start.date(), False) diff --git a/server/src/uds/reports/auto/fields.py b/server/src/uds/reports/auto/fields.py index 059a4d86c..5a5a3f666 100644 --- a/server/src/uds/reports/auto/fields.py +++ b/server/src/uds/reports/auto/fields.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import logging @@ -37,7 +37,6 @@ import typing from django.utils.translation import gettext_noop as _ from uds.core.ui import gui -from uds import models logger = logging.getLogger(__name__) @@ -57,7 +56,7 @@ def single_date_field(order: int) -> gui.DateField: order=order, label=_('Date'), tooltip=_('Date for report'), - defvalue=lambda: datetime.date.today(), + defvalue=datetime.date.today, required=True, ) @@ -67,7 +66,7 @@ def end_date_field(order: int) -> gui.DateField: order=order, label=_('Ending date'), tooltip=_('ending date for report'), - defvalue=lambda: datetime.date.today()+datetime.timedelta(days=1), + defvalue=lambda: datetime.date.today() + datetime.timedelta(days=1), required=True, ) @@ -113,7 +112,6 @@ def source_field( def source_field_data( model: typing.Any, - data_source: str, field: typing.Union[gui.ChoiceField, gui.MultiChoiceField], ) -> None: dataList: typing.List[gui.ChoiceType] = [ diff --git a/server/src/uds/reports/lists/audit.py b/server/src/uds/reports/lists/audit.py index 73755aff2..240b65e41 100644 --- a/server/src/uds/reports/lists/audit.py +++ b/server/src/uds/reports/lists/audit.py @@ -41,6 +41,7 @@ from django.utils.translation import gettext, gettext_lazy as _ from uds.core.ui import gui from uds.core.util import log +from uds.core.managers.log.objects import LogObjectType from uds.models import Log from .base import ListReport @@ -49,7 +50,6 @@ from .base import ListReport logger = logging.getLogger(__name__) - class ListReportAuditCSV(ListReport): name = _('Audit Log list') # Report name description = _('List administration audit logs') # Report description @@ -80,16 +80,21 @@ class ListReportAuditCSV(ListReport): def genData(self) -> typing.Generator[typing.Tuple, None, None]: # Xtract user method, response_code and request from data # the format is "user: [method/response_code] request" - rx = re.compile(r'(?P[^ ]*) (?P.*?): \[(?P[^/]*)/(?P[^\]]*)\] (?P.*)') + rx = re.compile( + r'(?P[^ ]*) (?P.*?): \[(?P[^/]*)/(?P[^\]]*)\] (?P.*)' + ) start = self.startDate.datetime().replace(hour=0, minute=0, second=0, microsecond=0) end = self.endDate.datetime().replace(hour=23, minute=59, second=59, microsecond=999999) for i in Log.objects.filter( - created__gte=start, created__lte=end, owner_id=0, owner_type=log.OWNER_TYPE_AUDIT, + created__gte=start, + created__lte=end, + source=log.LogSource.REST, + owner_type=LogObjectType.SYSLOG, ).order_by('-created'): # extract user, method, response_code and request from data field m = rx.match(i.data) - + if m is not None: # Convert response code to an string if 200, else, to an error response_code = { @@ -117,7 +122,15 @@ class ListReportAuditCSV(ListReport): writer = csv.writer(output) writer.writerow( - [gettext('Date'), gettext('Level'), gettext('IP'), gettext('User'), gettext('Method'), gettext('Response code'), gettext('Request')] + [ + gettext('Date'), + gettext('Level'), + gettext('IP'), + gettext('User'), + gettext('Method'), + gettext('Response code'), + gettext('Request'), + ] ) for l in self.genData(): diff --git a/server/src/uds/reports/lists/base.py b/server/src/uds/reports/lists/base.py index 721c59fa8..250331330 100644 --- a/server/src/uds/reports/lists/base.py +++ b/server/src/uds/reports/lists/base.py @@ -28,10 +28,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import typing - from django.utils.translation import gettext_noop as _ from uds.core import reports diff --git a/server/src/uds/reports/lists/users.py b/server/src/uds/reports/lists/users.py index 2fea04da9..972a2ced8 100644 --- a/server/src/uds/reports/lists/users.py +++ b/server/src/uds/reports/lists/users.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import io import csv diff --git a/server/src/uds/reports/stats/auth_stats.py b/server/src/uds/reports/stats/auth_stats.py index 3349ca6c7..fc1b8e613 100644 --- a/server/src/uds/reports/stats/auth_stats.py +++ b/server/src/uds/reports/stats/auth_stats.py @@ -27,14 +27,13 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing from django.utils.translation import gettext, gettext_lazy as _ -from uds.core.ui import gui from uds.core.util.stats import counters from .base import StatsReportAuto @@ -68,8 +67,6 @@ class AuthenticatorsStats(StatsReportAuto): # Will show a.name on every change... stats.append({'date': a.name, 'users': None}) - services = 0 - userServices = 0 for i in self.getIntervalsList(): start = i[0] end = i[1] diff --git a/server/src/uds/reports/stats/base.py b/server/src/uds/reports/stats/base.py index b6d3d6798..6c319d5ca 100644 --- a/server/src/uds/reports/stats/base.py +++ b/server/src/uds/reports/stats/base.py @@ -28,10 +28,8 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import typing - from django.utils.translation import gettext_noop as _ from uds.core import reports from ..auto import ReportAuto @@ -43,6 +41,6 @@ class StatsReport(reports.Report): def generate(self) -> bytes: raise NotImplementedError('StatsReport generate invoked and not implemented') - +# pylint: disable=abstract-method class StatsReportAuto(ReportAuto, StatsReport): pass diff --git a/server/src/uds/reports/stats/pool_users_summary.py b/server/src/uds/reports/stats/pool_users_summary.py index 4b4367ae2..ddf1d43a9 100644 --- a/server/src/uds/reports/stats/pool_users_summary.py +++ b/server/src/uds/reports/stats/pool_users_summary.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import io import csv diff --git a/server/src/uds/reports/stats/pools_performance.py b/server/src/uds/reports/stats/pools_performance.py index 59a060556..ee74d84e4 100644 --- a/server/src/uds/reports/stats/pools_performance.py +++ b/server/src/uds/reports/stats/pools_performance.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import io import csv diff --git a/server/src/uds/reports/stats/pools_usage_day.py b/server/src/uds/reports/stats/pools_usage_day.py index 99fab2502..eac4185f5 100644 --- a/server/src/uds/reports/stats/pools_usage_day.py +++ b/server/src/uds/reports/stats/pools_usage_day.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import csv import io @@ -92,7 +92,7 @@ class CountersPoolAssigned(StatsReport): for poolUuid in self.pools.value: try: pool = ServicePool.objects.get(uuid=poolUuid) - except Exception: + except Exception: # nosec: If not found, simple ignore it and go for next continue hours = [0] * 24 @@ -125,9 +125,7 @@ class CountersPoolAssigned(StatsReport): d = { 'title': _('Services by hour'), 'x': X, - 'xtickFnc': lambda xx: '{:02d}'.format( - xx - ), # pylint: disable=unnecessary-lambda + 'xtickFnc': '{:02d}'.format, # Two digits 'xlabel': _('Hour'), 'y': [ {'label': i['name'], 'data': [i['hours'][v] for v in X]} for i in items @@ -172,6 +170,6 @@ class CountersPoolAssignedCSV(CountersPoolAssigned): for i in items: for j in range(24): - writer.writerow([i['name'], '{:02d}'.format(j), i['hours'][j]]) + writer.writerow([i['name'], f'{j:02d}', i['hours'][j]]) return output.getvalue() diff --git a/server/src/uds/reports/stats/pools_usage_summary.py b/server/src/uds/reports/stats/pools_usage_summary.py index 2db33175c..b628fe651 100644 --- a/server/src/uds/reports/stats/pools_usage_summary.py +++ b/server/src/uds/reports/stats/pools_usage_summary.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import io import csv @@ -60,7 +60,7 @@ class PoolsUsageSummary(UsageByPool): ) -> typing.Tuple[ typing.ValuesView[typing.MutableMapping[str, typing.Any]], int, int, int ]: - orig, poolNames = super().getData() + orig, poolNames = super().getData() # pylint: disable=unused-variable # Keep name for reference pools: typing.Dict[str, typing.Dict] = {} totalTime: int = 0 @@ -88,8 +88,8 @@ class PoolsUsageSummary(UsageByPool): logger.debug('Pools %s', pools) # Remove unique users, and keep only counts... - for pn in pools: - pools[pn]['users'] = len(pools[pn]['users']) + for _, pn in pools.items(): + pn['users'] = len(pn['users']) return pools.values(), totalTime, totalCount or 1, len(uniqueUsers) diff --git a/server/src/uds/reports/stats/usage.py b/server/src/uds/reports/stats/usage.py index e0d8aed8f..5e38d6d6c 100644 --- a/server/src/uds/reports/stats/usage.py +++ b/server/src/uds/reports/stats/usage.py @@ -27,19 +27,18 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -""" from django.utils.translation import gettext_noop as _ +# from django.utils.translation import gettext_noop as _ -from .base import StatsReport +# from .base import StatsReport -class StatsReportUsage(StatsReport): # Disabled from being used - name = _('Usage stats') # Report name - description = _('Statistics of platform use') # Report description - uuid = '9ae54172-ed48-11e4-b8e1-10feed05884b' +# class StatsReportUsage(StatsReport): # Disabled from being used +# name = _('Usage stats') # Report name +# description = _('Statistics of platform use') # Report description +# uuid = '9ae54172-ed48-11e4-b8e1-10feed05884b' - def generate(self): - return '' - """ +# def generate(self): +# return '' diff --git a/server/src/uds/reports/stats/usage_by_pool.py b/server/src/uds/reports/stats/usage_by_pool.py index de0dbd4b7..7e96227c7 100644 --- a/server/src/uds/reports/stats/usage_by_pool.py +++ b/server/src/uds/reports/stats/usage_by_pool.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import io import csv diff --git a/server/src/uds/reports/stats/user_access.py b/server/src/uds/reports/stats/user_access.py index db3339f39..adea0431a 100644 --- a/server/src/uds/reports/stats/user_access.py +++ b/server/src/uds/reports/stats/user_access.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import csv import io @@ -200,7 +200,7 @@ class StatsReportLogin(StatsReport): _('Sunday'), ][l], 'xlabel': _('Day of week'), - 'y': [{'label': 'Users', 'data': [v for v in dataWeek]}], + 'y': [{'label': 'Users', 'data': list(dataWeek)}], 'ylabel': 'Users', } @@ -211,7 +211,7 @@ class StatsReportLogin(StatsReport): 'title': _('Users Access (by hour)'), 'x': X, 'xlabel': _('Hour'), - 'y': [{'label': 'Users', 'data': [v for v in dataHour]}], + 'y': [{'label': 'Users', 'data': list(dataHour)}], 'ylabel': 'Users', } diff --git a/server/src/uds/services/OVirt/client/ovirt.py b/server/src/uds/services/OVirt/client/ovirt.py index 8a8d13b47..54698be21 100644 --- a/server/src/uds/services/OVirt/client/ovirt.py +++ b/server/src/uds/services/OVirt/client/ovirt.py @@ -26,7 +26,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import threading import logging diff --git a/server/src/uds/services/OVirt/deployment.py b/server/src/uds/services/OVirt/deployment.py index ded853cb2..22ebd2443 100644 --- a/server/src/uds/services/OVirt/deployment.py +++ b/server/src/uds/services/OVirt/deployment.py @@ -28,14 +28,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import pickle +import pickle # nosec: not insecure, we are loading our own data import logging import typing from uds.core import services -from uds.core import managers +from uds.core.managers.user_service import UserServiceManager from uds.core.util.state import State from uds.core.util import log @@ -135,7 +135,9 @@ class OVirtLinkedDeployment(services.UserDeployment): self._mac = vals[3].decode('utf8') self._vmid = vals[4].decode('utf8') self._reason = vals[5].decode('utf8') - self._queue = pickle.loads(vals[6]) + self._queue = pickle.loads( + vals[6] + ) # nosec: not insecure, we are loading our own data def getName(self) -> str: if self._name == '': @@ -216,7 +218,7 @@ class OVirtLinkedDeployment(services.UserDeployment): self.cache.put('ready', '1') except Exception as e: - self.doLog(log.ERROR, 'Error on setReady: {}'.format(e)) + self.doLog(log.LogLevel.ERROR, f'Error on setReady: {e}') # Treat as operation done, maybe the machine is ready and we can continue return State.FINISHED @@ -233,19 +235,22 @@ class OVirtLinkedDeployment(services.UserDeployment): ) -> typing.Optional[typing.MutableMapping[str, typing.Any]]: return self.service().getConsoleConnection(self._vmid) - def desktopLogin(self, username: str, password: str, domain: str = '') -> None: - script = '''import sys + def desktopLogin( + self, + username: str, + password: str, + domain: str = '', # pylint: disable=unused-argument + ) -> None: + script = f'''import sys if sys.platform == 'win32': from uds import operations operations.writeToPipe("\\\\.\\pipe\\VDSMDPipe", struct.pack('!IsIs', 1, '{username}'.encode('utf8'), 2, '{password}'.encode('utf8')), True) -'''.format( - username=username, password=password - ) +''' # Post script to service # operations.writeToPipe("\\\\.\\pipe\\VDSMDPipe", packet, True) dbService = self.dbservice() if dbService: - managers.userServiceManager().sendScript(dbService, script) + UserServiceManager().sendScript(dbService, script) def notifyReadyFromOsManager(self, data: typing.Any) -> str: # Here we will check for suspending the VM (when full ready) @@ -273,7 +278,6 @@ if sys.platform == 'win32': return self.__executeQueue() def __initQueueForDeploy(self, forLevel2: bool = False) -> None: - if forLevel2 is False: self._queue = [opCreate, opChangeMac, opStart, opFinish] else: @@ -322,9 +326,6 @@ if sys.platform == 'win32': def __pushFrontOp(self, op: int): self._queue.insert(0, op) - def __pushBackOp(self, op: int): - self._queue.append(op) - def __error(self, reason: typing.Union[str, Exception]) -> str: """ Internal method to set object as error state @@ -334,7 +335,7 @@ if sys.platform == 'win32': """ reason = str(reason) logger.debug('Setting error state, reason: %s', reason) - self.doLog(log.ERROR, reason) + self.doLog(log.LogLevel.ERROR, reason) if self._vmid != '': # Powers off OVirtDeferredRemoval.remove(self.service().parent(), self._vmid) @@ -369,7 +370,7 @@ if sys.platform == 'win32': if execFnc is None: return self.__error( - 'Unknown operation found at execution queue ({0})'.format(op) + f'Unknown operation found at execution queue ({op})' ) execFnc() @@ -446,7 +447,7 @@ if sys.platform == 'win32': if state in UP_STATES: # Already started, return return State.RUNNING - if state != 'down' and state != 'suspended': + if state not in ('down', 'suspended'): self.__pushFrontOp( opRetry ) # Will call "check Retry", that will finish inmediatly and again call this one @@ -466,7 +467,7 @@ if sys.platform == 'win32': if state == 'down': # Already stoped, return return State.RUNNING - if state != 'up' and state != 'suspended': + if state not in ('up', 'suspended'): self.__pushFrontOp( opRetry ) # Will call "check Retry", that will finish inmediatly and again call this one @@ -576,7 +577,7 @@ if sys.platform == 'win32': if chkFnc is None: return self.__error( - 'Unknown operation found at check queue ({0})'.format(op) + f'Unknown operation found at check queue ({op})' ) state = chkFnc() @@ -629,7 +630,7 @@ if sys.platform == 'win32': if op == opError: return self.__error('Machine is already in error state!') - if op == opFinish or op == opWait: + if op in (opFinish, opWait): self._queue = [opStop, opRemove, opFinish] return self.__executeQueue() diff --git a/server/src/uds/services/OVirt/provider.py b/server/src/uds/services/OVirt/provider.py index 15d99064d..7317e3711 100644 --- a/server/src/uds/services/OVirt/provider.py +++ b/server/src/uds/services/OVirt/provider.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -44,7 +44,7 @@ from .service import OVirtLinkedService # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/OVirt/publication.py b/server/src/uds/services/OVirt/publication.py index f86eb1bdb..80be605fe 100644 --- a/server/src/uds/services/OVirt/publication.py +++ b/server/src/uds/services/OVirt/publication.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from datetime import datetime import logging diff --git a/server/src/uds/services/OVirt/service.py b/server/src/uds/services/OVirt/service.py index 647cc556e..627f93e8e 100644 --- a/server/src/uds/services/OVirt/service.py +++ b/server/src/uds/services/OVirt/service.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import re import logging @@ -48,7 +48,7 @@ from . import helpers # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from .provider import OVirtProvider - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/OpenGnsys/deployment.py b/server/src/uds/services/OpenGnsys/deployment.py index 1560a12f5..dc2c2c353 100644 --- a/server/src/uds/services/OpenGnsys/deployment.py +++ b/server/src/uds/services/OpenGnsys/deployment.py @@ -27,17 +27,17 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import pickle +import pickle # nosec: not insecure, we are loading our own data import logging import typing from uds.core.services import UserDeployment -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.core.util.state import State from uds.core.util import log -from uds.models.util import getSqlDatetimeAsUnix +from uds.core.util.model import getSqlDatetimeAsUnix # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: @@ -80,7 +80,7 @@ class OGDeployment(UserDeployment): def initialize(self) -> None: self._queue = [] dbs = self.dbservice() - self._uuid = dbs.uuid if dbs else '' + self._uuid = dbs.uuid if dbs and dbs.uuid else '' def service(self) -> 'OGService': return typing.cast('OGService', super().service()) @@ -121,7 +121,9 @@ class OGDeployment(UserDeployment): self._machineId = vals[4].decode('utf8') self._reason = vals[5].decode('utf8') self._stamp = int(vals[6].decode('utf8')) - self._queue = pickle.loads(vals[7]) + self._queue = pickle.loads( + vals[7] + ) # nosec: not insecure, we are loading our own data def getName(self) -> str: return self._name @@ -166,7 +168,7 @@ class OGDeployment(UserDeployment): return self.__executeQueue() except Exception as e: - return self.__error('Error setting ready state: {}'.format(e)) + return self.__error(f'Error setting ready state: {e}') def deployForUser(self, user: 'models.User') -> str: """ @@ -197,7 +199,7 @@ class OGDeployment(UserDeployment): status = self.service().status(self._machineId) except Exception as e: logger.exception('Exception at checkMachineReady') - return self.__error('Error checking machine: {}'.format(e)) + return self.__error(f'Error checking machine: {e}') # possible status are ("off", "oglive", "busy", "linux", "windows", "macos" o "unknown"). if status['status'] in ("linux", "windows", "macos"): @@ -218,12 +220,6 @@ class OGDeployment(UserDeployment): res = self._queue.pop(0) return res - def __pushFrontOp(self, op: int) -> None: - self._queue.insert(0, op) - - def __pushBackOp(self, op: int) -> None: - self._queue.append(op) - def __error(self, reason: typing.Any) -> str: """ Internal method to set object as error state @@ -232,13 +228,13 @@ class OGDeployment(UserDeployment): State.ERROR, so we can do "return self.__error(reason)" """ logger.debug('Setting error state, reason: %s', reason) - self.doLog(log.ERROR, reason) + self.doLog(log.LogLevel.ERROR, reason) if self._machineId: try: self.service().unreserve(self._machineId) - except Exception: - pass + except Exception as e: + logger.warning('Error unreserving machine: %s', e) self._queue = [opError] self._reason = str(reason) @@ -266,7 +262,7 @@ class OGDeployment(UserDeployment): if execFnc is None: return self.__error( - 'Unknown operation found at execution queue ({0})'.format(op) + f'Unknown operation found at execution queue ({op})' ) execFnc() @@ -292,7 +288,7 @@ class OGDeployment(UserDeployment): Deploys a machine from template for user/cache """ r: typing.Any = None - token = cryptoManager().randomString(32) + token = CryptoManager().randomString(32) try: r = self.service().reserve() self.service().notifyEvents(r['id'], token, self._uuid) @@ -306,7 +302,7 @@ class OGDeployment(UserDeployment): # Error unreserving reserved machine on creation logger.error('Error unreserving errored machine: %s', ei) - raise Exception('Error creating reservation: {}'.format(e)) + raise Exception(f'Error creating reservation: {e}') from e self._machineId = r['id'] self._name = r['name'] @@ -315,7 +311,7 @@ class OGDeployment(UserDeployment): self._stamp = getSqlDatetimeAsUnix() self.doLog( - log.INFO, + log.LogLevel.INFO, f'Reserved machine {self._name}: id: {self._machineId}, mac: {self._mac}, ip: {self._ip}', ) @@ -389,7 +385,7 @@ class OGDeployment(UserDeployment): if chkFnc is None: return self.__error( - 'Unknown operation found at check queue ({0})'.format(op) + f'Unknown operation found at check queue ({op})' ) state = chkFnc() diff --git a/server/src/uds/services/OpenGnsys/jobs.py b/server/src/uds/services/OpenGnsys/jobs.py index fbf26b24b..9c03b6e11 100644 --- a/server/src/uds/services/OpenGnsys/jobs.py +++ b/server/src/uds/services/OpenGnsys/jobs.py @@ -28,23 +28,22 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import datetime import logging import typing -from django.utils.translation import gettext_noop as _ - from uds.core import jobs from uds import models +from uds.core.util.model import getSqlDatetime from .provider import OGProvider from .service import OGService # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) @@ -67,7 +66,7 @@ class OpenGnsysMaintainer(jobs.Job): service: models.Service for service in provider.services.all(): instance: OGService = typing.cast(OGService, service.getInstance()) - since = models.getSqlDatetime() - datetime.timedelta( + since = getSqlDatetime() - datetime.timedelta( hours=instance.maxReservationTime.num() - 8 ) # If less than 8 hours of reservation... # Now mark for removal every CACHED service that is about to expire its reservation on OpenGnsys diff --git a/server/src/uds/services/OpenGnsys/og/__init__.py b/server/src/uds/services/OpenGnsys/og/__init__.py index 4f291cfa4..8782de7d1 100644 --- a/server/src/uds/services/OpenGnsys/og/__init__.py +++ b/server/src/uds/services/OpenGnsys/og/__init__.py @@ -28,14 +28,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import re import json import logging import typing -import requests +from uds.core.util import security from . import urls from . import fake @@ -43,14 +43,17 @@ from . import fake logger = logging.getLogger(__name__) if typing.TYPE_CHECKING: + import requests from uds.core.util.cache import Cache # Fake part FAKE = False CACHE_VALIDITY = 180 +TIMEOUT = 10 RT = typing.TypeVar('RT') + # Decorator def ensureConnected(fnc: typing.Callable[..., RT]) -> typing.Callable[..., RT]: def inner(*args, **kwargs) -> RT: @@ -62,7 +65,7 @@ def ensureConnected(fnc: typing.Callable[..., RT]) -> typing.Callable[..., RT]: # Result checker def ensureResponseIsValid( - response: requests.Response, errMsg: typing.Optional[str] = None + response: 'requests.Response', errMsg: typing.Optional[str] = None ) -> typing.Any: if not response.ok: if not errMsg: @@ -75,7 +78,7 @@ def ensureResponseIsValid( err = response.content.decode() if 'Database error' in err: err = 'Database error: Please, check OpenGnsys fields length on remotepc table (loginurl and logouturl)' - + errMsg = '{}: {}, ({})'.format(errMsg, err, response.status_code) logger.error('%s: %s', errMsg, response.content) raise Exception(errMsg) @@ -131,11 +134,11 @@ class OpenGnsysClient: ) -> typing.Any: if not FAKE: return ensureResponseIsValid( - requests.post( + security.secureRequestsSession(verify=self.verifyCert).post( self._ogUrl(path), data=json.dumps(data), headers=self.headers, - verify=self.verifyCert, + timeout=TIMEOUT, ), errMsg=errMsg, ) @@ -145,8 +148,9 @@ class OpenGnsysClient: def _get(self, path: str, errMsg: typing.Optional[str] = None) -> typing.Any: if not FAKE: return ensureResponseIsValid( - requests.get( - self._ogUrl(path), headers=self.headers, verify=self.verifyCert + security.secureRequestsSession(verify=self.verifyCert).get( + self._ogUrl(path), headers=self.headers, verify=self.verifyCert, + timeout=TIMEOUT, ), errMsg=errMsg, ) @@ -156,8 +160,10 @@ class OpenGnsysClient: def _delete(self, path: str, errMsg: typing.Optional[str] = None) -> typing.Any: if not FAKE: return ensureResponseIsValid( - requests.delete( - self._ogUrl(path), headers=self.headers, verify=self.verifyCert + security.secureRequestsSession(verify=self.verifyCert).delete( + self._ogUrl(path), + headers=self.headers, + timeout=TIMEOUT, ), errMsg=errMsg, ) diff --git a/server/src/uds/services/OpenGnsys/og/fake.py b/server/src/uds/services/OpenGnsys/og/fake.py index 8c40d6b4b..c8e8673fd 100644 --- a/server/src/uds/services/OpenGnsys/og/fake.py +++ b/server/src/uds/services/OpenGnsys/og/fake.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import copy import random @@ -142,8 +142,8 @@ def post( ou=1, image=2 ): res = copy.deepcopy(RESERVE) - res['name'] += str(random.randint(5000, 100000)) - res['mac'] = ''.join(random.choice('0123456789ABCDEF') for _ in range(12)) + res['name'] += str(random.randint(5000, 100000)) # nosec: for testing pourposes + res['mac'] = ''.join(random.choice('0123456789ABCDEF') for _ in range(12)) # nosec: for testing pourposes res['ip'] = '1.2.3.4' return res @@ -169,7 +169,7 @@ def get( if path == urls.IMAGES.format(ou=2): return [] if path[-6:] == 'status': - rnd = random.randint(0, 100) + rnd = random.randint(0, 100) # nosec: for testing pourposes if rnd < 25: return STATUS_READY_LINUX return STATUS_OFF diff --git a/server/src/uds/services/OpenGnsys/og/urls.py b/server/src/uds/services/OpenGnsys/og/urls.py index 16b5d9d17..087392c33 100644 --- a/server/src/uds/services/OpenGnsys/og/urls.py +++ b/server/src/uds/services/OpenGnsys/og/urls.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ # API URL 1: https://www.informatica.us.es/~ramon/opengnsys/?url=opengnsys-api.yml # API URL 2: http://opengnsys.es/wiki/ApiRest diff --git a/server/src/uds/services/OpenGnsys/provider.py b/server/src/uds/services/OpenGnsys/provider.py index 425043675..9534046cf 100644 --- a/server/src/uds/services/OpenGnsys/provider.py +++ b/server/src/uds/services/OpenGnsys/provider.py @@ -29,7 +29,7 @@ """ Created on Jun 22, 2012 -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -47,7 +47,7 @@ from . import og # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment logger = logging.getLogger(__name__) @@ -193,10 +193,11 @@ class OGProvider(ServiceProvider): if self.udsServerAccessUrl.value.strip() == '': self.udsServerAccessUrl.value = request.build_absolute_uri('/') + # Ensure that url ends with / if self.udsServerAccessUrl.value[-1] != '/': self.udsServerAccessUrl.value += '/' - except Exception: - pass + except Exception as e: + self.udsServerAccessUrl.value = '' @property def endpoint(self) -> str: diff --git a/server/src/uds/services/OpenGnsys/publication.py b/server/src/uds/services/OpenGnsys/publication.py index c38ea459e..637044e48 100644 --- a/server/src/uds/services/OpenGnsys/publication.py +++ b/server/src/uds/services/OpenGnsys/publication.py @@ -27,14 +27,14 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing from uds.core.services import Publication from uds.core.util.state import State -from uds.models.util import getSqlDatetime +from uds.core.util.model import getSqlDatetime # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: diff --git a/server/src/uds/services/OpenGnsys/service.py b/server/src/uds/services/OpenGnsys/service.py index 1ba78fe81..38fadb62f 100644 --- a/server/src/uds/services/OpenGnsys/service.py +++ b/server/src/uds/services/OpenGnsys/service.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -45,7 +45,7 @@ from .publication import OGPublication # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from .provider import OGProvider - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/OpenNebula/deployment.py b/server/src/uds/services/OpenNebula/deployment.py index 9b9558d5a..c0f9359eb 100644 --- a/server/src/uds/services/OpenNebula/deployment.py +++ b/server/src/uds/services/OpenNebula/deployment.py @@ -28,9 +28,9 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import pickle +import pickle # nosec: not insecure, we are loading our own data import logging import typing @@ -105,7 +105,7 @@ class LiveDeployment(UserDeployment): # pylint: disable=too-many-public-methods self._mac = vals[3].decode('utf8') self._vmid = vals[4].decode('utf8') self._reason = vals[5].decode('utf8') - self._queue = pickle.loads(vals[6]) + self._queue = pickle.loads(vals[6]) # nosec: not insecure, we are loading our own data def getName(self) -> str: if self._name == '': @@ -141,7 +141,7 @@ class LiveDeployment(UserDeployment): # pylint: disable=too-many-public-methods self.cache.put('ready', '1') except Exception as e: - self.doLog(log.ERROR, 'Error on setReady: {}'.format(e)) + self.doLog(log.LogLevel.ERROR, 'Error on setReady: {}'.format(e)) # Treat as operation done, maybe the machine is ready and we can continue return State.FINISHED @@ -242,7 +242,7 @@ class LiveDeployment(UserDeployment): # pylint: disable=too-many-public-methods """ reason = str(reason) logger.debug('Setting error state, reason: %s', reason) - self.doLog(log.ERROR, reason) + self.doLog(log.LogLevel.ERROR, reason) if self._vmid: # Powers off & delete it try: diff --git a/server/src/uds/services/OpenNebula/on/client.py b/server/src/uds/services/OpenNebula/on/client.py index db7af2048..23c2fddc6 100644 --- a/server/src/uds/services/OpenNebula/on/client.py +++ b/server/src/uds/services/OpenNebula/on/client.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ # pylint: disable=maybe-no-member diff --git a/server/src/uds/services/OpenNebula/on/common.py b/server/src/uds/services/OpenNebula/on/common.py index 624c7d96c..d449de9ad 100644 --- a/server/src/uds/services/OpenNebula/on/common.py +++ b/server/src/uds/services/OpenNebula/on/common.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ # import sys diff --git a/server/src/uds/services/OpenNebula/on/storage.py b/server/src/uds/services/OpenNebula/on/storage.py index 725c36769..a680b4c8d 100644 --- a/server/src/uds/services/OpenNebula/on/storage.py +++ b/server/src/uds/services/OpenNebula/on/storage.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/services/OpenNebula/on/template.py b/server/src/uds/services/OpenNebula/on/template.py index aa223da8a..d3921690d 100644 --- a/server/src/uds/services/OpenNebula/on/template.py +++ b/server/src/uds/services/OpenNebula/on/template.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging diff --git a/server/src/uds/services/OpenNebula/on/types.py b/server/src/uds/services/OpenNebula/on/types.py index bd9996c2c..d8b2ba002 100644 --- a/server/src/uds/services/OpenNebula/on/types.py +++ b/server/src/uds/services/OpenNebula/on/types.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import enum import typing diff --git a/server/src/uds/services/OpenNebula/on/vm.py b/server/src/uds/services/OpenNebula/on/vm.py index b4eeadc85..1e27cb6df 100644 --- a/server/src/uds/services/OpenNebula/on/vm.py +++ b/server/src/uds/services/OpenNebula/on/vm.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ''' -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' import logging import typing diff --git a/server/src/uds/services/OpenNebula/provider.py b/server/src/uds/services/OpenNebula/provider.py index f1adbb198..889b1b57f 100644 --- a/server/src/uds/services/OpenNebula/provider.py +++ b/server/src/uds/services/OpenNebula/provider.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. ''' -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' import logging import typing @@ -45,7 +45,7 @@ from .service import LiveService # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/OpenNebula/publication.py b/server/src/uds/services/OpenNebula/publication.py index 8c55d4a9f..8d97e4e9a 100644 --- a/server/src/uds/services/OpenNebula/publication.py +++ b/server/src/uds/services/OpenNebula/publication.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/services/OpenNebula/service.py b/server/src/uds/services/OpenNebula/service.py index f9c1215ca..0204304bb 100644 --- a/server/src/uds/services/OpenNebula/service.py +++ b/server/src/uds/services/OpenNebula/service.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -46,7 +46,7 @@ from .deployment import LiveDeployment if typing.TYPE_CHECKING: from . import on from .provider import OpenNebulaProvider - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/OpenStack/deployment.py b/server/src/uds/services/OpenStack/deployment.py index 812544dd2..3a80e42a5 100644 --- a/server/src/uds/services/OpenStack/deployment.py +++ b/server/src/uds/services/OpenStack/deployment.py @@ -28,9 +28,9 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import pickle +import pickle # nosec: not insecure, we are loading our own data import logging import typing @@ -113,7 +113,7 @@ class LiveDeployment(UserDeployment): # pylint: disable=too-many-public-methods self._mac = vals[3].decode('utf8') self._vmid = vals[4].decode('utf8') self._reason = vals[5].decode('utf8') - self._queue = pickle.loads(vals[6]) + self._queue = pickle.loads(vals[6]) # nosec: not insecure, we are loading our own data def getName(self) -> str: if self._name == '': @@ -157,7 +157,7 @@ class LiveDeployment(UserDeployment): # pylint: disable=too-many-public-methods self.cache.put('ready', '1') except Exception as e: - self.doLog(log.ERROR, 'Error on setReady: {}'.format(e)) + self.doLog(log.LogLevel.ERROR, 'Error on setReady: {}'.format(e)) # Treat as operation done, maybe the machine is ready and we can continue return State.FINISHED @@ -247,7 +247,7 @@ class LiveDeployment(UserDeployment): # pylint: disable=too-many-public-methods self._queue = [opError] self._reason = str(reason) - self.doLog(log.ERROR, self._reason) + self.doLog(log.LogLevel.ERROR, self._reason) if self._vmid: # Powers off & delete it try: diff --git a/server/src/uds/services/OpenStack/openstack/__init__.py b/server/src/uds/services/OpenStack/openstack/__init__.py index 94e6fccce..c749e71c3 100644 --- a/server/src/uds/services/OpenStack/openstack/__init__.py +++ b/server/src/uds/services/OpenStack/openstack/__init__.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from .openstack_client import Client diff --git a/server/src/uds/services/OpenStack/openstack/common.py b/server/src/uds/services/OpenStack/openstack/common.py index 2a2c346ab..676565ae1 100644 --- a/server/src/uds/services/OpenStack/openstack/common.py +++ b/server/src/uds/services/OpenStack/openstack/common.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import re diff --git a/server/src/uds/services/OpenStack/openstack/openstack_client.py b/server/src/uds/services/OpenStack/openstack/openstack_client.py index 7c06fc7f7..e84304f8a 100644 --- a/server/src/uds/services/OpenStack/openstack/openstack_client.py +++ b/server/src/uds/services/OpenStack/openstack/openstack_client.py @@ -28,21 +28,21 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import json import typing -import requests - # import dateutil.parser from django.utils.translation import gettext as _ +from uds.core.util import security + # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - pass + import requests logger = logging.getLogger(__name__) @@ -59,7 +59,7 @@ VERIFY_SSL = False # Helpers def ensureResponseIsValid( - response: requests.Response, errMsg: typing.Optional[str] = None + response: 'requests.Response', errMsg: typing.Optional[str] = None ) -> None: if response.ok is False: try: @@ -81,7 +81,7 @@ def ensureResponseIsValid( def getRecurringUrlJson( url: str, - session: requests.Session, + session: 'requests.Session', headers: typing.Dict[str, str], key: str, params: typing.Optional[typing.Mapping[str, str]] = None, @@ -93,7 +93,7 @@ def getRecurringUrlJson( counter += 1 logger.debug('Requesting url #%s: %s / %s', counter, url, params) r = session.get( - url, params=params, headers=headers, verify=VERIFY_SSL, timeout=timeout + url, params=params, headers=headers, timeout=timeout ) ensureResponseIsValid(r, errMsg) @@ -154,7 +154,7 @@ class Client: # pylint: disable=too-many-public-methods _project: typing.Optional[str] _region: typing.Optional[str] _timeout: int - _session: requests.Session + _session: 'requests.Session' # Legacyversion is True for versions <= Ocata def __init__( @@ -171,7 +171,7 @@ class Client: # pylint: disable=too-many-public-methods access: typing.Optional[str] = None, proxies: typing.Optional[typing.MutableMapping[str, str]] = None, ): - self._session = requests.Session() + self._session = security.secureRequestsSession(verify=VERIFY_SSL) if proxies: self._session.proxies = proxies @@ -260,7 +260,6 @@ class Client: # pylint: disable=too-many-public-methods self._authUrl + 'v3/auth/tokens', data=json.dumps(data), headers={'content-type': 'application/json'}, - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -481,7 +480,6 @@ class Client: # pylint: disable=too-many-public-methods self._getEndpointFor('compute', 'compute_legacy') + '/servers/{server_id}'.format(server_id=serverId), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) ensureResponseIsValid(r, 'Get Server information') @@ -493,7 +491,6 @@ class Client: # pylint: disable=too-many-public-methods self._getEndpointFor(self._volume) + '/volumes/{volume_id}'.format(volume_id=volumeId), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -511,7 +508,6 @@ class Client: # pylint: disable=too-many-public-methods self._getEndpointFor(self._volume) + '/snapshots/{snapshot_id}'.format(snapshot_id=snapshotId), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -538,7 +534,6 @@ class Client: # pylint: disable=too-many-public-methods + '/snapshots/{snapshot_id}'.format(snapshot_id=snapshotId), data=json.dumps(data), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -566,7 +561,6 @@ class Client: # pylint: disable=too-many-public-methods self._getEndpointFor(self._volume) + '/snapshots', data=json.dumps(data), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -594,7 +588,6 @@ class Client: # pylint: disable=too-many-public-methods self._getEndpointFor(self._volume) + '/volumes', data=json.dumps(data), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -644,7 +637,6 @@ class Client: # pylint: disable=too-many-public-methods self._getEndpointFor('compute', 'compute_legacy') + '/servers', data=json.dumps(data), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -658,14 +650,12 @@ class Client: # pylint: disable=too-many-public-methods # self._getEndpointFor('compute', , 'compute_legacy') + '/servers/{server_id}/action'.format(server_id=serverId), # data='{"forceDelete": null}', # headers=self._requestHeaders(), - # verify=VERIFY_SSL, # timeout=self._timeout # ) r = self._session.delete( self._getEndpointFor('compute', 'compute_legacy') + '/servers/{server_id}'.format(server_id=serverId), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -681,7 +671,6 @@ class Client: # pylint: disable=too-many-public-methods self._getEndpointFor(self._volume) + '/snapshots/{snapshot_id}'.format(snapshot_id=snapshotId), headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -696,7 +685,6 @@ class Client: # pylint: disable=too-many-public-methods + '/servers/{server_id}/action'.format(server_id=serverId), data='{"os-start": null}', headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -711,7 +699,6 @@ class Client: # pylint: disable=too-many-public-methods + '/servers/{server_id}/action'.format(server_id=serverId), data='{"os-stop": null}', headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -724,7 +711,6 @@ class Client: # pylint: disable=too-many-public-methods + '/servers/{server_id}/action'.format(server_id=serverId), data='{"suspend": null}', headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -737,7 +723,6 @@ class Client: # pylint: disable=too-many-public-methods + '/servers/{server_id}/action'.format(server_id=serverId), data='{"resume": null}', headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -750,7 +735,6 @@ class Client: # pylint: disable=too-many-public-methods + '/servers/{server_id}/action'.format(server_id=serverId), data='{"reboot":{"type":"HARD"}}', headers=self._requestHeaders(), - verify=VERIFY_SSL, timeout=self._timeout, ) @@ -762,7 +746,7 @@ class Client: # pylint: disable=too-many-public-methods # We need api version 3.2 or greater try: r = self._session.get( - self._authUrl, verify=VERIFY_SSL, headers=self._requestHeaders() + self._authUrl, headers=self._requestHeaders() ) except Exception: logger.exception('Testing') diff --git a/server/src/uds/services/OpenStack/provider.py b/server/src/uds/services/OpenStack/provider.py index cedd1ea92..b2afcf1ff 100644 --- a/server/src/uds/services/OpenStack/provider.py +++ b/server/src/uds/services/OpenStack/provider.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -45,7 +45,7 @@ from .service import LiveService # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/OpenStack/provider_legacy.py b/server/src/uds/services/OpenStack/provider_legacy.py index f7485fa2b..5a1af2e7c 100644 --- a/server/src/uds/services/OpenStack/provider_legacy.py +++ b/server/src/uds/services/OpenStack/provider_legacy.py @@ -30,7 +30,7 @@ ''' Created on Jun 22, 2012 -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com ''' import logging import typing @@ -47,7 +47,7 @@ from .service import LiveService # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/OpenStack/publication.py b/server/src/uds/services/OpenStack/publication.py index 2a82dfcde..b819c91a7 100644 --- a/server/src/uds/services/OpenStack/publication.py +++ b/server/src/uds/services/OpenStack/publication.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/services/OpenStack/service.py b/server/src/uds/services/OpenStack/service.py index 260a48d45..89c53146a 100644 --- a/server/src/uds/services/OpenStack/service.py +++ b/server/src/uds/services/OpenStack/service.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -36,7 +36,7 @@ import typing from django.utils.translation import gettext_noop as _ from uds.core.transports import protocols from uds.core.services import Service, types as serviceTypes -from uds.core.util import tools +from uds.core.util import tools, validators from uds.core.ui import gui from .publication import LivePublication @@ -210,7 +210,7 @@ class LiveService(Service): initialized by __init__ method of base class, before invoking this. """ if values: - tools.checkValidBasename(self.baseName.value, self.lenName.num()) + validators.validateBasename(self.baseName.value, self.lenName.num()) # self.ov.value = self.parent().serialize() # self.ev.value = self.parent().env.key diff --git a/server/src/uds/services/PhysicalMachines/deployment.py b/server/src/uds/services/PhysicalMachines/deployment.py index 6bc6a3897..4720e982c 100644 --- a/server/src/uds/services/PhysicalMachines/deployment.py +++ b/server/src/uds/services/PhysicalMachines/deployment.py @@ -33,8 +33,6 @@ import logging import typing -from django.utils.translation import gettext_lazy as _ - import dns.resolver from uds.core import services @@ -80,15 +78,15 @@ class IPMachineDeployed(services.UserDeployment, AutoAttributes): try: # Prefer ipv4 first res = dns.resolver.resolve(ip) - ip = res[0].address + ip = typing.cast(str, res[0].address) # type: ignore # If no address, it will raise an exception except Exception: # If not found, try ipv6 try: res = dns.resolver.resolve(ip, 'AAAA') - ip = res[0].address + ip = typing.cast(str, res[0].address) # type: ignore # If no address, it will raise an exception except Exception as e: self.service().parent().doLog( - log.WARN, f'User service could not resolve Name {ip} ({e}).' + log.LogLevel.WARNING, f'User service could not resolve Name {ip} ({e}).' ) return ip diff --git a/server/src/uds/services/PhysicalMachines/provider.py b/server/src/uds/services/PhysicalMachines/provider.py index bdec1efcb..869a64836 100644 --- a/server/src/uds/services/PhysicalMachines/provider.py +++ b/server/src/uds/services/PhysicalMachines/provider.py @@ -101,7 +101,7 @@ class PhysicalMachinesProvider(services.ServiceProvider): except Exception: raise exceptions.ValidationError( _('Invalid network in advanced configuration: ') + key - ) + ) from None # Now check value is an url if config['wol'][key][:4] != 'http': raise exceptions.ValidationError( @@ -114,8 +114,8 @@ class PhysicalMachinesProvider(services.ServiceProvider): typeDescription = _('Provides connection to machines by IP') iconFile = 'provider.png' - from .service_multi import IPMachinesService - from .service_single import IPSingleMachineService + from .service_multi import IPMachinesService # pylint: disable=import-outside-toplevel + from .service_single import IPSingleMachineService # pylint: disable=import-outside-toplevel offers = [IPMachinesService, IPSingleMachineService] @@ -144,7 +144,7 @@ class PhysicalMachinesProvider(services.ServiceProvider): res = dns.resolver.resolve(ip, 'AAAA') ip = res[0].address except Exception as e: - self.doLog(log.WARN, f'Name {ip} could not be resolved') + self.doLog(log.LogLevel.WARNING, f'Name {ip} could not be resolved') logger.warning('Name %s could not be resolved (%s)', ip, e) return '' diff --git a/server/src/uds/services/PhysicalMachines/service_base.py b/server/src/uds/services/PhysicalMachines/service_base.py index d71e89acb..095f6a024 100644 --- a/server/src/uds/services/PhysicalMachines/service_base.py +++ b/server/src/uds/services/PhysicalMachines/service_base.py @@ -30,11 +30,10 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import requests import logging import typing - +from uds.core.util import security from uds.core import services logger = logging.getLogger(__name__) @@ -71,13 +70,15 @@ class IPServiceBase(services.Service): def unassignMachine(self, ip: str) -> None: raise NotADirectoryError('unassignMachine') - def wakeup(self, ip: str, mac: typing.Optional[str], verify_ssl: bool = False) -> None: + def wakeup( + self, ip: str, mac: typing.Optional[str], verify_ssl: bool = False + ) -> None: if mac: wolurl = self.parent().wolURL(ip, mac) if wolurl: logger.info('Launching WOL: %s', wolurl) try: - requests.get(wolurl, verify=verify_ssl) + security.secureRequestsSession(verify=verify_ssl).get(wolurl) # logger.debug('Result: %s', result) except Exception as e: logger.error('Error on WOL: %s', e) diff --git a/server/src/uds/services/PhysicalMachines/service_multi.py b/server/src/uds/services/PhysicalMachines/service_multi.py index 1a7dc10b6..62e63bcc8 100644 --- a/server/src/uds/services/PhysicalMachines/service_multi.py +++ b/server/src/uds/services/PhysicalMachines/service_multi.py @@ -37,7 +37,7 @@ import typing from django.utils.translation import gettext, gettext_lazy as _ from django.db import transaction -from uds.models import getSqlDatetimeAsUnix +from uds.core.util.model import getSqlDatetimeAsUnix from uds.core.ui import gui from uds.core.util import log from uds.core.util import net @@ -49,7 +49,7 @@ from .service_base import IPServiceBase # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from uds import models - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) @@ -78,9 +78,7 @@ class IPMachinesService(IPServiceBase): label=_('Check Port'), defvalue='0', order=2, - tooltip=_( - 'If non zero, only hosts responding to connection on that port will be served.' - ), + tooltip=_('If non zero, only hosts responding to connection on that port will be served.'), required=True, tab=gui.Tab.ADVANCED, ) @@ -152,22 +150,18 @@ class IPMachinesService(IPServiceBase): for v in values['ipList']: if not net.isValidHost(v.split(';')[0]): # Get only IP/hostname raise exceptions.ValidationError( - gettext('Invalid value detected on servers list: "{}"').format( - v - ) + gettext('Invalid value detected on servers list: "{}"').format(v) ) self._ips = [ - '{}~{}'.format(str(ip).strip(), i) - for i, ip in enumerate(values['ipList']) - if str(ip).strip() + '{}~{}'.format(str(ip).strip(), i) for i, ip in enumerate(values['ipList']) if str(ip).strip() ] # Allow duplicates right now # Current stored data, if it exists d = self.storage.readData('ips') old_ips = pickle.loads(d) if d and isinstance(d, bytes) else [] # nosec: pickle is safe here # dissapeared ones - dissapeared = set( - IPServiceBase.getIp(i.split('~')[0]) for i in old_ips - ) - set(i.split('~')[0] for i in self._ips) + dissapeared = set(IPServiceBase.getIp(i.split('~')[0]) for i in old_ips) - set( + i.split('~')[0] for i in self._ips + ) with transaction.atomic(): for removable in dissapeared: self.storage.remove(removable) @@ -268,19 +262,12 @@ class IPMachinesService(IPServiceBase): # Is WOL enabled? wolENABLED = bool(self.parent().wolURL(theIP, theMAC)) # Now, check if it is available on port, if required... - if ( - self._port > 0 and not wolENABLED - ): # If configured WOL, check is a nonsense - if ( - net.testConnection(theIP, self._port, timeOut=0.5) - is False - ): + if self._port > 0 and not wolENABLED: # If configured WOL, check is a nonsense + if net.testConnection(theIP, self._port, timeOut=0.5) is False: # Log into logs of provider, so it can be "shown" on services logs self.parent().doLog( - log.WARN, - 'Host {} not accesible on port {}'.format( - theIP, self._port - ), + log.LogLevel.WARNING, + f'Host {theIP} not accesible on port {self._port}', ) logger.warning( 'Static Machine check on %s:%s failed. Will be ignored for %s minutes.', @@ -311,11 +298,7 @@ class IPMachinesService(IPServiceBase): logger.exception("Exception at getUnassignedMachine") def listAssignables(self): - return [ - (ip, ip.split('~')[0]) - for ip in self._ips - if self.storage.readData(ip) is None - ] + return [(ip, ip.split('~')[0]) for ip in self._ips if self.storage.readData(ip) is None] def assignFromAssignables( self, @@ -323,9 +306,7 @@ class IPMachinesService(IPServiceBase): user: 'models.User', userDeployment: 'services.UserDeployment', ) -> str: - userServiceInstance: IPMachineDeployed = typing.cast( - IPMachineDeployed, userDeployment - ) + userServiceInstance: IPMachineDeployed = typing.cast(IPMachineDeployed, userDeployment) theIP = IPServiceBase.getIp(assignableId) theMAC = IPServiceBase.getMac(assignableId) @@ -368,7 +349,7 @@ class IPMachinesService(IPServiceBase): def notifyInitialization(self, id: str) -> None: ''' Notify that a machine has been initialized. - Normally, this means that + Normally, this means that ''' logger.debug('Notify initialization for %s: %s', self, id) self.unassignMachine(id) @@ -377,7 +358,7 @@ class IPMachinesService(IPServiceBase): # If locking not allowed, return None if self._lockByExternalAccess is False: return None - # Look for the first valid id on our list + # Look for the first valid id on our list for ip in self._ips: theIP = IPServiceBase.getIp(ip) theMAC = IPServiceBase.getMac(ip) diff --git a/server/src/uds/services/PhysicalMachines/service_single.py b/server/src/uds/services/PhysicalMachines/service_single.py index 460874b51..aa8879689 100644 --- a/server/src/uds/services/PhysicalMachines/service_single.py +++ b/server/src/uds/services/PhysicalMachines/service_single.py @@ -44,7 +44,7 @@ from .service_base import IPServiceBase # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/Proxmox/client/__init__.py b/server/src/uds/services/Proxmox/client/__init__.py index d839e27c3..e648ab954 100644 --- a/server/src/uds/services/Proxmox/client/__init__.py +++ b/server/src/uds/services/Proxmox/client/__init__.py @@ -27,21 +27,24 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import urllib3 -import urllib3.exceptions import urllib.parse import re import typing import logging +import urllib3 +import urllib3.exceptions import requests + +from uds.core.util import security +from uds.core.util.decorators import allowCache, ensureConected + from . import types -from uds.core.util.decorators import allowCache, ensureConected # DEFAULT_PORT = 8006 @@ -78,7 +81,7 @@ class ProxmoxNodeUnavailableError(ProxmoxConnectionError): # caching helper def cachingKeyHelper(obj: 'ProxmoxClient') -> str: - return obj._host + return getattr(obj, '_host', str(hash(obj))) class ProxmoxClient: @@ -109,7 +112,7 @@ class ProxmoxClient: self._credentials = (('username', username), ('password', password)) self._validateCert = validateCertificate self._timeout = timeout - self._url = 'https://{}:{}/api2/json/'.format(self._host, self._port) + self._url = f'https://{self._host}:{self._port}/api2/json/' self.cache = cache @@ -128,9 +131,9 @@ class ProxmoxClient: } @staticmethod - def checkError(response: requests.Response) -> typing.Any: + def checkError(response: 'requests.Response') -> typing.Any: if not response.ok: - errMsg = 'Status code {}'.format(response.status_code) + errMsg = f'Status code {response.status_code}' if response.status_code == 595: raise ProxmoxNodeUnavailableError() @@ -139,7 +142,7 @@ class ProxmoxClient: if response.status_code == 400: try: - errMsg = 'Errors on request: {}'.format(response.json()['errors']) + errMsg = f'Errors on request: {response.json()["errors"]}' except Exception: # nosec: No json or no error info pass @@ -152,19 +155,16 @@ class ProxmoxClient: def _get(self, path: str) -> typing.Any: try: - result = requests.get( + result = security.secureRequestsSession(verify=self._validateCert).get( self._getPath(path), headers=self.headers, cookies={'PVEAuthCookie': self._ticket}, - verify=self._validateCert, timeout=self._timeout, ) - logger.debug( - 'GET result to %s: %s -- %s', path, result.status_code, result.content - ) + logger.debug('GET result to %s: %s -- %s', path, result.status_code, result.content) except requests.ConnectionError as e: - raise ProxmoxConnectionError(e) + raise ProxmoxConnectionError(e) from None return ProxmoxClient.checkError(result) @@ -174,20 +174,17 @@ class ProxmoxClient: data: typing.Optional[typing.Iterable[typing.Tuple[str, str]]] = None, ) -> typing.Any: try: - result = requests.post( + result = security.secureRequestsSession(verify=self._validateCert).post( self._getPath(path), data=list(data or []) or None, headers=self.headers, cookies={'PVEAuthCookie': self._ticket}, - verify=self._validateCert, timeout=self._timeout, ) - logger.debug( - 'POST result to %s: %s -- %s', path, result.status_code, result.content - ) + logger.debug('POST result to %s: %s -- %s', path, result.status_code, result.content) except requests.ConnectionError as e: - raise ProxmoxConnectionError(e) + raise ProxmoxConnectionError(e) from None return ProxmoxClient.checkError(result) @@ -197,12 +194,11 @@ class ProxmoxClient: data: typing.Optional[typing.Iterable[typing.Tuple[str, str]]] = None, ) -> typing.Any: try: - result = requests.delete( + result = security.secureRequestsSession(verify=self._validateCert).delete( self._getPath(path), data=list(data or []) or None, headers=self.headers, cookies={'PVEAuthCookie': self._ticket}, - verify=self._validateCert, timeout=self._timeout, ) @@ -214,7 +210,7 @@ class ProxmoxClient: result.headers, ) except requests.ConnectionError as e: - raise ProxmoxConnectionError(e) + raise ProxmoxConnectionError(e) from None return ProxmoxClient.checkError(result) @@ -230,11 +226,10 @@ class ProxmoxClient: return try: - result = requests.post( + result = security.secureRequestsSession(verify=self._validateCert).post( url=self._getPath('access/ticket'), data=self._credentials, headers=self.headers, - verify=self._validateCert, timeout=self._timeout, ) if not result.ok: @@ -244,20 +239,19 @@ class ProxmoxClient: self._csrf = data['CSRFPreventionToken'] if self.cache: - self.cache.put( - self._host + 'conn', (self._ticket, self._csrf), validity=1800 - ) # 30 minutes + self.cache.put(self._host + 'conn', (self._ticket, self._csrf), validity=1800) # 30 minutes except requests.RequestException as e: raise ProxmoxConnectionError from e def test(self) -> bool: try: self.connect() - except Exception as e: + except Exception: # logger.error('Error testing proxmox: %s', e) return False return True + # pylint: disable=unused-argument @ensureConected @allowCache('cluster', CACHE_DURATION, cachingKeyFnc=cachingKeyHelper) def getClusterInfo(self, **kwargs) -> types.ClusterStatus: @@ -275,6 +269,7 @@ class ProxmoxClient: return False return True + # pylint: disable=unused-argument @ensureConected @allowCache( 'nodeNets', @@ -284,13 +279,16 @@ class ProxmoxClient: cachingKeyFnc=cachingKeyHelper, ) def getNodeNetworks(self, node: str, **kwargs): - return self._get('nodes/{}/network'.format(node))['data'] + return self._get(f'nodes/{node}/network')['data'] @ensureConected def getBestNodeForVm(self, minMemory: int = 0) -> typing.Optional[types.NodeStats]: best = types.NodeStats.empty() node: types.NodeStats - weightFnc = lambda x: (x.mem / x.maxmem) + (x.cpu / x.maxcpu) * 1.3 + + # Function to calculate the weight of a node + def weightFnc(x: types.NodeStats) -> float: + return (x.mem / x.maxmem) + (x.cpu / x.maxcpu) * 1.3 # Offline nodes are not "the best" for node in filter(lambda x: x.status == 'online', self.getNodesStats()): @@ -326,11 +324,7 @@ class ProxmoxClient: if toStorage and self.getStorage(toStorage, vmInfo.node).shared: node = self.getBestNodeForVm(minMemory=-1) if node is None: - raise ProxmoxError( - 'No switable node available for new vm {} on Proxmox'.format( - name - ) - ) + raise ProxmoxError(f'No switable node available for new vm {name} on Proxmox') toNode = node.name else: toNode = fromNode @@ -356,18 +350,14 @@ class ProxmoxClient: params.append(('pool', toPool)) if linkedClone is False: - params.append( - ('format', 'qcow2') - ) # Ensure clone for templates is on qcow2 format + params.append(('format', 'qcow2')) # Ensure clone for templates is on qcow2 format logger.debug('PARAMS: %s', params) return types.VmCreationResult( node=toNode, vmid=newVmId, - upid=types.UPID.fromDict( - self._post('nodes/{}/qemu/{}/clone'.format(fromNode, vmId), data=params) - ), + upid=types.UPID.fromDict(self._post(f'nodes/{fromNode}/qemu/{vmId}/clone', data=params)), ) @ensureConected @@ -376,13 +366,11 @@ class ProxmoxClient: return [g['group'] for g in self._get('cluster/ha/groups')['data']] @ensureConected - def enableVmHA( - self, vmId: int, started: bool = False, group: typing.Optional[str] = None - ) -> None: + def enableVmHA(self, vmId: int, started: bool = False, group: typing.Optional[str] = None) -> None: self._post( 'cluster/ha/resources', data=[ - ('sid', 'vm:{}'.format(vmId)), + ('sid', f'vm:{vmId}'), ('comment', 'UDS HA VM'), ('state', 'started' if started else 'stopped'), ('max_restart', '4'), @@ -394,34 +382,26 @@ class ProxmoxClient: @ensureConected def disableVmHA(self, vmId: int) -> None: try: - self._delete('cluster/ha/resources/vm%3A{}'.format(vmId)) + self._delete(f'cluster/ha/resources/vm%3A{vmId}') except Exception: logger.exception('removeFromHA') @ensureConected - def setProtection( - self, vmId: int, node: typing.Optional[str] = None, protection: bool = False - ) -> None: + def setProtection(self, vmId: int, node: typing.Optional[str] = None, protection: bool = False) -> None: params: typing.List[typing.Tuple[str, str]] = [ ('protection', str(int(protection))), ] node = node or self.getVmInfo(vmId).node - self._post('nodes/{}/qemu/{}/config'.format(node, vmId), data=params) + self._post(f'nodes/{node}/qemu/{vmId}/config', data=params) @ensureConected - def deleteVm( - self, vmId: int, node: typing.Optional[str] = None, purge: bool = True - ) -> types.UPID: + def deleteVm(self, vmId: int, node: typing.Optional[str] = None, purge: bool = True) -> types.UPID: node = node or self.getVmInfo(vmId).node - return types.UPID.fromDict( - self._delete('nodes/{}/qemu/{}?purge=1'.format(node, vmId)) - ) + return types.UPID.fromDict(self._delete(f'nodes/{node}/qemu/{vmId}?purge=1')) @ensureConected def getTask(self, node: str, upid: str) -> types.TaskStatus: - return types.TaskStatus.fromJson( - self._get('nodes/{}/tasks/{}/status'.format(node, urllib.parse.quote(upid))) - ) + return types.TaskStatus.fromJson(self._get(f'nodes/{node}/tasks/{urllib.parse.quote(upid)}/status')) @ensureConected @allowCache( @@ -431,9 +411,7 @@ class ProxmoxClient: cachingKWArgs='node', cachingKeyFnc=cachingKeyHelper, ) - def listVms( - self, node: typing.Union[None, str, typing.Iterable[str]] = None - ) -> typing.List[types.VMInfo]: + def listVms(self, node: typing.Union[None, str, typing.Iterable[str]] = None) -> typing.List[types.VMInfo]: nodeList: typing.Iterable[str] if node is None: nodeList = [n.name for n in self.getClusterInfo().nodes if n.online] @@ -444,11 +422,11 @@ class ProxmoxClient: result = [] for nodeName in nodeList: - for vm in self._get('nodes/{}/qemu'.format(nodeName))['data']: + for vm in self._get(f'nodes/{nodeName}/qemu')['data']: vm['node'] = nodeName result.append(types.VMInfo.fromDict(vm)) - return sorted(result, key=lambda x: '{}{}'.format(x.node, x.name)) + return sorted(result, key=lambda x: (x.node, x.name)) @ensureConected @allowCache( @@ -483,20 +461,12 @@ class ProxmoxClient: cachingKWArgs=['vmId', 'node'], cachingKeyFnc=cachingKeyHelper, ) - def getVmInfo( - self, vmId: int, node: typing.Optional[str] = None, **kwargs - ) -> types.VMInfo: - nodes = ( - [types.Node(node, False, False, 0, '', '', '')] - if node - else self.getClusterInfo().nodes - ) + def getVmInfo(self, vmId: int, node: typing.Optional[str] = None, **kwargs) -> types.VMInfo: + nodes = [types.Node(node, False, False, 0, '', '', '')] if node else self.getClusterInfo().nodes anyNodeIsDown = False for n in nodes: try: - vm = self._get('nodes/{}/qemu/{}/status/current'.format(n.name, vmId))[ - 'data' - ] + vm = self._get(f'nodes/{n.name}/qemu/{vmId}/status/current')['data'] vm['node'] = n.name return types.VMInfo.fromDict(vm) except ProxmoxConnectionError: @@ -513,11 +483,12 @@ class ProxmoxClient: @ensureConected # @allowCache('vmc', CACHE_DURATION, cachingArgs=[1, 2], cachingKWArgs=['vmId', 'node'], cachingKeyFnc=cachingKeyHelper) - def getVmConfiguration(self, vmId: int, node: typing.Optional[str] = None): + # pylint: disable=unused-argument + def getVmConfiguration( + self, vmId: int, node: typing.Optional[str] = None, **kwargs + ) -> types.VMConfiguration: node = node or self.getVmInfo(vmId).node - return types.VMConfiguration.fromDict( - self._get('nodes/{}/qemu/{}/config'.format(node, vmId))['data'] - ) + return types.VMConfiguration.fromDict(self._get(f'nodes/{node}/qemu/{vmId}/config')['data']) @ensureConected def setVmMac( @@ -529,24 +500,23 @@ class ProxmoxClient: ) -> None: node = node or self.getVmInfo(vmId).node # First, read current configuration and extract network configuration - config = self._get('nodes/{}/qemu/{}/config'.format(node, vmId))['data'] + config = self._get(f'nodes/{node}/qemu/{vmId}/config')['data'] if netid not in config: # Get first network interface (netX where X is a number) - netid = next( - (k for k in config if k.startswith('net') and k[3:].isdigit()), None - ) + netid = next((k for k in config if k.startswith('net') and k[3:].isdigit()), None) if not netid: raise ProxmoxError('No network interface found') netdata = config[netid] # Update mac address, that is the first field =, + # pylint: disable=consider-using-f-string netdata = re.sub(r'^([^=]+)=([^,]+),', r'\1={},'.format(mac), netdata) logger.debug('Updating mac address for VM %s: %s=%s', vmId, netid, netdata) self._post( - 'nodes/{}/qemu/{}/config'.format(node, vmId), + f'nodes/{node}/qemu/{vmId}/config', data=[(netid, netdata)], ) @@ -554,44 +524,34 @@ class ProxmoxClient: def startVm(self, vmId: int, node: typing.Optional[str] = None) -> types.UPID: # if exitstatus is "OK" or contains "already running", all is fine node = node or self.getVmInfo(vmId).node - return types.UPID.fromDict( - self._post('nodes/{}/qemu/{}/status/start'.format(node, vmId)) - ) + return types.UPID.fromDict(self._post(f'nodes/{node}/qemu/{vmId}/status/start')) @ensureConected def stopVm(self, vmId: int, node: typing.Optional[str] = None) -> types.UPID: node = node or self.getVmInfo(vmId).node - return types.UPID.fromDict( - self._post('nodes/{}/qemu/{}/status/stop'.format(node, vmId)) - ) + return types.UPID.fromDict(self._post(f'nodes/{node}/qemu/{vmId}/status/stop')) @ensureConected def resetVm(self, vmId: int, node: typing.Optional[str] = None) -> types.UPID: node = node or self.getVmInfo(vmId).node - return types.UPID.fromDict( - self._post('nodes/{}/qemu/{}/status/reset'.format(node, vmId)) - ) + return types.UPID.fromDict(self._post(f'nodes/{node}/qemu/{vmId}/status/reset')) @ensureConected def suspendVm(self, vmId: int, node: typing.Optional[str] = None) -> types.UPID: # if exitstatus is "OK" or contains "already running", all is fine node = node or self.getVmInfo(vmId).node - return types.UPID.fromDict( - self._post('nodes/{}/qemu/{}/status/suspend'.format(node, vmId)) - ) + return types.UPID.fromDict(self._post(f'nodes/{node}/qemu/{vmId}/status/suspend')) @ensureConected def shutdownVm(self, vmId: int, node: typing.Optional[str] = None) -> types.UPID: # if exitstatus is "OK" or contains "already running", all is fine node = node or self.getVmInfo(vmId).node - return types.UPID.fromDict( - self._post('nodes/{}/qemu/{}/status/shutdown'.format(node, vmId)) - ) + return types.UPID.fromDict(self._post(f'nodes/{node}/qemu/{vmId}/status/shutdown')) @ensureConected def convertToTemplate(self, vmId: int, node: typing.Optional[str] = None) -> None: node = node or self.getVmInfo(vmId).node - self._post('nodes/{}/qemu/{}/template'.format(node, vmId)) + self._post(f'nodes/{node}/qemu/{vmId}/template') # Ensure cache is reset for this VM (as it is now a template) self.getVmInfo(vmId, force=True) @@ -608,9 +568,7 @@ class ProxmoxClient: ) def getStorage(self, storage: str, node: str, **kwargs) -> types.StorageInfo: return types.StorageInfo.fromDict( - self._get( - 'nodes/{}/storage/{}/status'.format(node, urllib.parse.quote(storage)) - )['data'] + self._get(f'nodes/{node}/storage/{urllib.parse.quote(storage)}/status')['data'] ) @ensureConected @@ -635,15 +593,11 @@ class ProxmoxClient: nodeList = [node] else: nodeList = node - params = ( - '' if not content else '?content={}'.format(urllib.parse.quote(content)) - ) + params = '' if not content else f'?content={urllib.parse.quote(content)}' result: typing.List[types.StorageInfo] = [] for nodeName in nodeList: - for storage in self._get('nodes/{}/storage{}'.format(nodeName, params))[ - 'data' - ]: + for storage in self._get(f'nodes/{nodeName}/storage{params}')['data']: storage['node'] = nodeName storage['content'] = storage['content'].split(',') result.append(types.StorageInfo.fromDict(storage)) @@ -654,16 +608,13 @@ class ProxmoxClient: @allowCache('nodeStats', CACHE_INFO_DURATION, cachingKeyFnc=cachingKeyHelper) def getNodesStats(self, **kwargs) -> typing.List[types.NodeStats]: return [ - types.NodeStats.fromDict(nodeStat) - for nodeStat in self._get('cluster/resources?type=node')['data'] + types.NodeStats.fromDict(nodeStat) for nodeStat in self._get('cluster/resources?type=node')['data'] ] @ensureConected @allowCache('pools', CACHE_DURATION // 6, cachingKeyFnc=cachingKeyHelper) def listPools(self) -> typing.List[types.PoolInfo]: - return [ - types.PoolInfo.fromDict(nodeStat) for nodeStat in self._get('pools')['data'] - ] + return [types.PoolInfo.fromDict(nodeStat) for nodeStat in self._get('pools')['data']] @ensureConected def getConsoleConnection( diff --git a/server/src/uds/services/Proxmox/deployment.py b/server/src/uds/services/Proxmox/deployment.py index 9396f04b6..03c77385d 100644 --- a/server/src/uds/services/Proxmox/deployment.py +++ b/server/src/uds/services/Proxmox/deployment.py @@ -28,17 +28,17 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ -import pickle # nosec: controled data +import pickle # nosec: controled data import logging import typing from uds.core import services -from uds.core import managers +from uds.core.managers.user_service import UserServiceManager from uds.core.util.state import State from uds.core.util import log -from uds.models import getSqlDatetimeAsUnix +from uds.core.util.model import getSqlDatetimeAsUnix from .jobs import ProxmoxDeferredRemoval from . import client @@ -49,7 +49,7 @@ if typing.TYPE_CHECKING: from uds import models from .service import ProxmoxLinkedService from .publication import ProxmoxPublication - + logger = logging.getLogger(__name__) ( @@ -186,7 +186,7 @@ class ProxmoxDeployment(services.UserDeployment): except client.ProxmoxConnectionError: raise # If connection fails, let it fail on parent except Exception as e: - return self.__error('Machine not found: {}'.format(e)) + return self.__error(f'Machine not found: {e}') if vmInfo.status == 'stopped': self._queue = [opStart, opFinish] @@ -210,20 +210,23 @@ class ProxmoxDeployment(services.UserDeployment): ) -> typing.Optional[typing.MutableMapping[str, typing.Any]]: return self.service().getConsoleConnection(self._vmid) - def desktopLogin(self, username: str, password: str, domain: str = '') -> None: - script = '''import sys + def desktopLogin( + self, + username: str, + password: str, + domain: str = '', # pylint: disable=unused-argument + ) -> None: + script = f'''import sys if sys.platform == 'win32': from uds import operations operations.writeToPipe("\\\\.\\pipe\\VDSMDPipe", struct.pack('!IsIs', 1, '{username}'.encode('utf8'), 2, '{password}'.encode('utf8')), True) -'''.format( - username=username, password=password - ) +''' # Post script to service # operations.writeToPipe("\\\\.\\pipe\\VDSMDPipe", packet, True) dbService = self.dbservice() if dbService: try: - managers.userServiceManager().sendScript(dbService, script) + UserServiceManager().sendScript(dbService, script) except Exception as e: logger.info('Exception sending loggin to %s: %s', dbService, e) @@ -253,7 +256,6 @@ if sys.platform == 'win32': return self.__executeQueue() def __initQueueForDeploy(self, forLevel2: bool = False) -> None: - if forLevel2 is False: self._queue = [opCreate, opGetMac, opStart, opFinish] else: @@ -282,9 +284,6 @@ if sys.platform == 'win32': def __pushFrontOp(self, op: int): self._queue.insert(0, op) - def __pushBackOp(self, op: int): - self._queue.append(op) - def __retryLater(self) -> str: self.__pushFrontOp(opRetry) return State.RUNNING @@ -298,7 +297,7 @@ if sys.platform == 'win32': """ reason = str(reason) logger.debug('Setting error state, reason: %s', reason) - self.doLog(log.ERROR, reason) + self.doLog(log.LogLevel.ERROR, reason) if self._vmid != '': # Powers off ProxmoxDeferredRemoval.remove(self.service().parent(), int(self._vmid)) @@ -334,7 +333,7 @@ if sys.platform == 'win32': if execFnc is None: return self.__error( - 'Unknown operation found at execution queue ({0})'.format(op) + f'Unknown operation found at execution queue ({op})' ) execFnc() @@ -387,15 +386,14 @@ if sys.platform == 'win32': """ try: vmInfo = self.service().getMachineInfo(int(self._vmid)) - except Exception: - raise Exception('Machine not found on remove machine') + except Exception as e: + raise Exception('Machine not found on remove machine') from e if vmInfo.status != 'stopped': logger.debug('Info status: %s', vmInfo) self._queue = [opStop, opRemove, opFinish] return self.__executeQueue() - else: - self.__setTask(self.service().removeMachine(int(self._vmid))) + self.__setTask(self.service().removeMachine(int(self._vmid))) return State.RUNNING @@ -404,8 +402,8 @@ if sys.platform == 'win32': vmInfo = self.service().getMachineInfo(int(self._vmid)) except client.ProxmoxConnectionError: return self.__retryLater() - except Exception: - raise Exception('Machine not found on start machine') + except Exception as e: + raise Exception('Machine not found on start machine') from e if vmInfo.status == 'stopped': self.__setTask(self.service().startMachine(int(self._vmid))) @@ -415,8 +413,8 @@ if sys.platform == 'win32': def __stopMachine(self) -> str: try: vmInfo = self.service().getMachineInfo(int(self._vmid)) - except Exception: - raise Exception('Machine not found on stop machine') + except Exception as e: + raise Exception('Machine not found on stop machine') from e if vmInfo.status != 'stopped': logger.debug('Stopping machine %s', vmInfo) @@ -429,8 +427,8 @@ if sys.platform == 'win32': vmInfo = self.service().getMachineInfo(int(self._vmid)) except client.ProxmoxConnectionError: return State.RUNNING # Try again later - except Exception: - raise Exception('Machine not found on suspend machine') + except Exception as e: + raise Exception('Machine not found on suspend machine') from e if vmInfo.status != 'stopped': self.__setTask(self.service().shutdownMachine(int(self._vmid))) @@ -463,7 +461,7 @@ if sys.platform == 'win32': self.service().setVmMac(int(self._vmid), self.getUniqueId()) except Exception as e: logger.exception('Setting HA and MAC on proxmox') - raise Exception('Error setting MAC and HA on proxmox: {}'.format(e)) + raise Exception(f'Error setting MAC and HA on proxmox: {e}') from e return State.RUNNING # Check methods @@ -534,7 +532,7 @@ if sys.platform == 'win32': if getSqlDatetimeAsUnix() - shutdown_start > GUEST_SHUTDOWN_WAIT: logger.debug('Time is consumed, falling back to stop') self.doLog( - log.ERROR, + log.LogLevel.ERROR, f'Could not shutdown machine using soft power off in time ({GUEST_SHUTDOWN_WAIT} seconds). Powering off.', ) # Not stopped by guest in time, but must be stopped normally @@ -589,7 +587,7 @@ if sys.platform == 'win32': if chkFnc is None: return self.__error( - 'Unknown operation found at check queue ({0})'.format(op) + f'Unknown operation found at check queue ({op})' ) state = chkFnc() @@ -645,7 +643,7 @@ if sys.platform == 'win32': lst = [] if not self.service().tryGracelyShutdown() else [opGracelyStop] queue = lst + [opStop, opRemove, opFinish] - if op == opFinish or op == opWait: + if op in (opFinish, opWait): self._queue[:] = queue return self.__executeQueue() diff --git a/server/src/uds/services/Proxmox/jobs.py b/server/src/uds/services/Proxmox/jobs.py index f4e620415..85b97b7e0 100644 --- a/server/src/uds/services/Proxmox/jobs.py +++ b/server/src/uds/services/Proxmox/jobs.py @@ -33,7 +33,8 @@ import typing from uds.core import jobs -from uds.models import Provider, getSqlDatetimeAsUnix +from uds.models import Provider +from uds.core.util.model import getSqlDatetimeAsUnix from uds.core.util.unique_id_generator import UniqueIDGenerator from . import provider diff --git a/server/src/uds/services/Proxmox/provider.py b/server/src/uds/services/Proxmox/provider.py index 8fc722782..e29e89b46 100644 --- a/server/src/uds/services/Proxmox/provider.py +++ b/server/src/uds/services/Proxmox/provider.py @@ -25,7 +25,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -46,7 +46,7 @@ from . import client # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment logger = logging.getLogger(__name__) @@ -154,7 +154,7 @@ class ProxmoxProvider( 'Range of valid macs for created machines. Any value accepted by Proxmox is valid here.' ), required=True, - tab=gui.ADVANCED_TAB, + tab=gui.Tab.ADVANCED, ) diff --git a/server/src/uds/services/Proxmox/publication.py b/server/src/uds/services/Proxmox/publication.py index 6250e8ac0..d6204f01d 100644 --- a/server/src/uds/services/Proxmox/publication.py +++ b/server/src/uds/services/Proxmox/publication.py @@ -26,7 +26,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from datetime import datetime import time diff --git a/server/src/uds/services/Proxmox/service.py b/server/src/uds/services/Proxmox/service.py index c7b12a933..db10c0ca2 100644 --- a/server/src/uds/services/Proxmox/service.py +++ b/server/src/uds/services/Proxmox/service.py @@ -26,7 +26,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import re @@ -47,7 +47,7 @@ from .publication import ProxmoxPublication # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from . import client from .provider import ProxmoxProvider @@ -200,7 +200,7 @@ class ProxmoxLinkedService(Service): # pylint: disable=too-many-public-methods self.machine.setValues( [ gui.choiceItem( - str(m.vmid), '{}\\{} ({})'.format(m.node, m.name or m.vmid, m.vmid) + str(m.vmid), f'{m.node}\\{m.name or m.vmid} ({m.vmid})' ) for m in self.parent().listMachines() if m.name and m.name[:3] != 'UDS' diff --git a/server/src/uds/services/Sample/deployment_one.py b/server/src/uds/services/Sample/deployment_one.py index 2fb12140b..e26d88254 100644 --- a/server/src/uds/services/Sample/deployment_one.py +++ b/server/src/uds/services/Sample/deployment_one.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/services/Sample/deployment_two.py b/server/src/uds/services/Sample/deployment_two.py index cb67bf4e3..fd132e625 100644 --- a/server/src/uds/services/Sample/deployment_two.py +++ b/server/src/uds/services/Sample/deployment_two.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import codecs import logging diff --git a/server/src/uds/services/Sample/provider.py b/server/src/uds/services/Sample/provider.py index 57b47b28f..0ad4eb261 100644 --- a/server/src/uds/services/Sample/provider.py +++ b/server/src/uds/services/Sample/provider.py @@ -30,7 +30,7 @@ """ Created on Jun 22, 2012 -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -43,7 +43,7 @@ from .service import ServiceOne, ServiceTwo # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/Sample/publication.py b/server/src/uds/services/Sample/publication.py index a6fec0d3f..0de297fe2 100644 --- a/server/src/uds/services/Sample/publication.py +++ b/server/src/uds/services/Sample/publication.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import random import string diff --git a/server/src/uds/services/Sample/service.py b/server/src/uds/services/Sample/service.py index b2eb08d7d..e49038700 100644 --- a/server/src/uds/services/Sample/service.py +++ b/server/src/uds/services/Sample/service.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -44,7 +44,7 @@ from .deployment_two import SampleUserDeploymentTwo # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/Test/deployment.py b/server/src/uds/services/Test/deployment.py index 0b19de132..a9c1fc2de 100644 --- a/server/src/uds/services/Test/deployment.py +++ b/server/src/uds/services/Test/deployment.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import dataclasses diff --git a/server/src/uds/services/Test/provider.py b/server/src/uds/services/Test/provider.py index 1906ebd4c..d6a48e3ab 100644 --- a/server/src/uds/services/Test/provider.py +++ b/server/src/uds/services/Test/provider.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import random diff --git a/server/src/uds/services/Test/publication.py b/server/src/uds/services/Test/publication.py index ad34c4ba0..43e7de388 100644 --- a/server/src/uds/services/Test/publication.py +++ b/server/src/uds/services/Test/publication.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import random import string diff --git a/server/src/uds/services/Test/service.py b/server/src/uds/services/Test/service.py index cf0f3a771..ad342f828 100644 --- a/server/src/uds/services/Test/service.py +++ b/server/src/uds/services/Test/service.py @@ -28,7 +28,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing diff --git a/server/src/uds/services/Xen/deployment.py b/server/src/uds/services/Xen/deployment.py index 8c959b944..54a751b99 100644 --- a/server/src/uds/services/Xen/deployment.py +++ b/server/src/uds/services/Xen/deployment.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import pickle import logging @@ -115,7 +115,7 @@ class XenLinkedDeployment(UserDeployment): self._mac = vals[3].decode('utf8') self._vmid = vals[4].decode('utf8') self._reason = vals[5].decode('utf8') - self._queue = pickle.loads(vals[6]) + self._queue = pickle.loads(vals[6]) # nosec: not insecure, we are loading our own data self._task = vals[7].decode('utf8') def getName(self) -> str: @@ -154,7 +154,7 @@ class XenLinkedDeployment(UserDeployment): self.cache.put('ready', '1', 30) except Exception as e: # On case of exception, log an an error and return as if the operation was executed - self.doLog(log.ERROR, 'Error setting machine state: {}'.format(e)) + self.doLog(log.LogLevel.ERROR, 'Error setting machine state: {}'.format(e)) # return self.__error('Machine is not available anymore') return State.FINISHED @@ -224,7 +224,7 @@ class XenLinkedDeployment(UserDeployment): def __error(self, reason: typing.Any) -> str: logger.debug('Setting error state, reason: %s', reason) - self.doLog(log.ERROR, reason) + self.doLog(log.LogLevel.ERROR, reason) if self._vmid != '': # Powers off and delete VM try: diff --git a/server/src/uds/services/Xen/provider.py b/server/src/uds/services/Xen/provider.py index fffd20324..c0b0e81d3 100644 --- a/server/src/uds/services/Xen/provider.py +++ b/server/src/uds/services/Xen/provider.py @@ -26,7 +26,7 @@ # OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -49,7 +49,7 @@ logger = logging.getLogger(__name__) # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.environment import Environment CACHE_TIME_FOR_SERVER = 1800 diff --git a/server/src/uds/services/Xen/publication.py b/server/src/uds/services/Xen/publication.py index 286d06dfe..6dc0b246d 100644 --- a/server/src/uds/services/Xen/publication.py +++ b/server/src/uds/services/Xen/publication.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from datetime import datetime import logging diff --git a/server/src/uds/services/Xen/service.py b/server/src/uds/services/Xen/service.py index 7847a5657..4cb5ed09c 100644 --- a/server/src/uds/services/Xen/service.py +++ b/server/src/uds/services/Xen/service.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging import typing @@ -43,7 +43,7 @@ from .deployment import XenLinkedDeployment # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from .provider import XenProvider - from uds.core import Module + from uds.core.module import Module logger = logging.getLogger(__name__) diff --git a/server/src/uds/services/__init__.py b/server/src/uds/services/__init__.py index 6cd45f868..a1428e18b 100644 --- a/server/src/uds/services/__init__.py +++ b/server/src/uds/services/__init__.py @@ -38,12 +38,12 @@ To create a new service module, you will need to follow this steps: The registration of modules is done locating subclases of :py:class:`uds.core.auths.Authentication` -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import logging -from uds.core.util import modfinder +from uds.core.util import modfinder logger = logging.getLogger(__name__) @@ -53,12 +53,11 @@ def __loadModules(): This imports all packages that are descendant of this package, and, after that, it register all subclases of service provider as """ - from uds.core import services - + from uds.core import services # pylint: disable=import-outside-toplevel + modfinder.dynamicLoadAndRegisterModules( - services.factory(), - services.ServiceProvider, - __name__ + services.factory(), services.ServiceProvider, __name__ ) + __loadModules() diff --git a/server/src/uds/static/admin/main.js b/server/src/uds/static/admin/main.js index 35e5bb3ad..97692a774 100644 --- a/server/src/uds/static/admin/main.js +++ b/server/src/uds/static/admin/main.js @@ -1 +1 @@ -(self.webpackChunkuds=self.webpackChunkuds||[]).push([[179],{260:(ep,ia,kn)=>{"use strict";function Wt(a){return"function"==typeof a}function is(a){const e=a(s=>{Error.call(s),s.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}const ro=is(a=>function(e){a(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((s,d)=>`${d+1}) ${s.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function js(a,i){if(a){const e=a.indexOf(i);0<=e&&a.splice(e,1)}}class xt{constructor(i){this.initialTeardown=i,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let i;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const f of e)f.remove(this);else e.remove(this);const{initialTeardown:s}=this;if(Wt(s))try{s()}catch(f){i=f instanceof ro?f.errors:[f]}const{_finalizers:d}=this;if(d){this._finalizers=null;for(const f of d)try{Di(f)}catch(_){i=i??[],_ instanceof ro?i=[...i,..._.errors]:i.push(_)}}if(i)throw new ro(i)}}add(i){var e;if(i&&i!==this)if(this.closed)Di(i);else{if(i instanceof xt){if(i.closed||i._hasParent(this))return;i._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(i)}}_hasParent(i){const{_parentage:e}=this;return e===i||Array.isArray(e)&&e.includes(i)}_addParent(i){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(i),e):e?[e,i]:i}_removeParent(i){const{_parentage:e}=this;e===i?this._parentage=null:Array.isArray(e)&&js(e,i)}remove(i){const{_finalizers:e}=this;e&&js(e,i),i instanceof xt&&i._removeParent(this)}}xt.EMPTY=(()=>{const a=new xt;return a.closed=!0,a})();const _i=xt.EMPTY;function Ct(a){return a instanceof xt||a&&"closed"in a&&Wt(a.remove)&&Wt(a.add)&&Wt(a.unsubscribe)}function Di(a){Wt(a)?a():a.unsubscribe()}const gi={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},li={setTimeout(a,i,...e){const{delegate:s}=li;return null!=s&&s.setTimeout?s.setTimeout(a,i,...e):setTimeout(a,i,...e)},clearTimeout(a){const{delegate:i}=li;return((null==i?void 0:i.clearTimeout)||clearTimeout)(a)},delegate:void 0};function vr(a){li.setTimeout(()=>{const{onUnhandledError:i}=gi;if(!i)throw a;i(a)})}function Dd(){}const tp=np("C",void 0,void 0);function np(a,i,e){return{kind:a,value:i,error:e}}let rs=null;function dS(a){if(gi.useDeprecatedSynchronousErrorHandling){const i=!rs;if(i&&(rs={errorThrown:!1,error:null}),a(),i){const{errorThrown:e,error:s}=rs;if(rs=null,e)throw s}}else a()}class rR extends xt{constructor(i){super(),this.isStopped=!1,i?(this.destination=i,Ct(i)&&i.add(this)):this.destination=FX}static create(i,e,s){return new Zu(i,e,s)}next(i){this.isStopped?aR(function Og(a){return np("N",a,void 0)}(i),this):this._next(i)}error(i){this.isStopped?aR(function le(a){return np("E",void 0,a)}(i),this):(this.isStopped=!0,this._error(i))}complete(){this.isStopped?aR(tp,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(i){this.destination.next(i)}_error(i){try{this.destination.error(i)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const RX=Function.prototype.bind;function yb(a,i){return RX.call(a,i)}class OX{constructor(i){this.partialObserver=i}next(i){const{partialObserver:e}=this;if(e.next)try{e.next(i)}catch(s){bb(s)}}error(i){const{partialObserver:e}=this;if(e.error)try{e.error(i)}catch(s){bb(s)}else bb(i)}complete(){const{partialObserver:i}=this;if(i.complete)try{i.complete()}catch(e){bb(e)}}}class Zu extends rR{constructor(i,e,s){let d;if(super(),Wt(i)||!i)d={next:i??void 0,error:e??void 0,complete:s??void 0};else{let f;this&&gi.useDeprecatedNextContext?(f=Object.create(i),f.unsubscribe=()=>this.unsubscribe(),d={next:i.next&&yb(i.next,f),error:i.error&&yb(i.error,f),complete:i.complete&&yb(i.complete,f)}):d=i}this.destination=new OX(d)}}function bb(a){gi.useDeprecatedSynchronousErrorHandling?function PX(a){gi.useDeprecatedSynchronousErrorHandling&&rs&&(rs.errorThrown=!0,rs.error=a)}(a):vr(a)}function aR(a,i){const{onStoppedNotification:e}=gi;e&&li.setTimeout(()=>e(a,i))}const FX={closed:!0,next:Dd,error:function LX(a){throw a},complete:Dd},ip="function"==typeof Symbol&&Symbol.observable||"@@observable";function Ku(a){return a}function rH(a){return 0===a.length?Ku:1===a.length?a[0]:function(e){return a.reduce((s,d)=>d(s),e)}}let Gn=(()=>{class a{constructor(e){e&&(this._subscribe=e)}lift(e){const s=new a;return s.source=this,s.operator=e,s}subscribe(e,s,d){const f=function VX(a){return a&&a instanceof rR||function BX(a){return a&&Wt(a.next)&&Wt(a.error)&&Wt(a.complete)}(a)&&Ct(a)}(e)?e:new Zu(e,s,d);return dS(()=>{const{operator:_,source:w}=this;f.add(_?_.call(f,w):w?this._subscribe(f):this._trySubscribe(f))}),f}_trySubscribe(e){try{return this._subscribe(e)}catch(s){e.error(s)}}forEach(e,s){return new(s=oR(s))((d,f)=>{const _=new Zu({next:w=>{try{e(w)}catch(D){f(D),_.unsubscribe()}},error:f,complete:d});this.subscribe(_)})}_subscribe(e){var s;return null===(s=this.source)||void 0===s?void 0:s.subscribe(e)}[ip](){return this}pipe(...e){return rH(e)(this)}toPromise(e){return new(e=oR(e))((s,d)=>{let f;this.subscribe(_=>f=_,_=>d(_),()=>s(f))})}}return a.create=i=>new a(i),a})();function oR(a){var i;return null!==(i=a??gi.Promise)&&void 0!==i?i:Promise}const zX=is(a=>function(){a(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let Ue=(()=>{class a extends Gn{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const s=new sR(this,this);return s.operator=e,s}_throwIfClosed(){if(this.closed)throw new zX}next(e){dS(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const s of this.currentObservers)s.next(e)}})}error(e){dS(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:s}=this;for(;s.length;)s.shift().error(e)}})}complete(){dS(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:s,isStopped:d,observers:f}=this;return s||d?_i:(this.currentObservers=null,f.push(e),new xt(()=>{this.currentObservers=null,js(f,e)}))}_checkFinalizedStatuses(e){const{hasError:s,thrownError:d,isStopped:f}=this;s?e.error(d):f&&e.complete()}asObservable(){const e=new Gn;return e.source=this,e}}return a.create=(i,e)=>new sR(i,e),a})();class sR extends Ue{constructor(i,e){super(),this.destination=i,this.source=e}next(i){var e,s;null===(s=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===s||s.call(e,i)}error(i){var e,s;null===(s=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===s||s.call(e,i)}complete(){var i,e;null===(e=null===(i=this.destination)||void 0===i?void 0:i.complete)||void 0===e||e.call(i)}_subscribe(i){var e,s;return null!==(s=null===(e=this.source)||void 0===e?void 0:e.subscribe(i))&&void 0!==s?s:_i}}function lR(a){return Wt(null==a?void 0:a.lift)}function Un(a){return i=>{if(lR(i))return i.lift(function(e){try{return a(e,this)}catch(s){this.error(s)}});throw new TypeError("Unable to lift unknown Observable type")}}function ci(a,i,e,s,d){return new sn(a,i,e,s,d)}class sn extends rR{constructor(i,e,s,d,f,_){super(i),this.onFinalize=f,this.shouldUnsubscribe=_,this._next=e?function(w){try{e(w)}catch(D){i.error(D)}}:super._next,this._error=d?function(w){try{d(w)}catch(D){i.error(D)}finally{this.unsubscribe()}}:super._error,this._complete=s?function(){try{s()}catch(w){i.error(w)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var i;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(i=this.onFinalize)||void 0===i||i.call(this))}}}function gt(a,i){return Un((e,s)=>{let d=0;e.subscribe(ci(s,f=>{s.next(a.call(i,f,d++))}))})}function eh(a){return this instanceof eh?(this.v=a,this):new eh(a)}function uR(a,i,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var d,s=e.apply(a,i||[]),f=[];return d={},_("next"),_("throw"),_("return"),d[Symbol.asyncIterator]=function(){return this},d;function _(W){s[W]&&(d[W]=function(Z){return new Promise(function(te,re){f.push([W,Z,te,re])>1||w(W,Z)})})}function w(W,Z){try{!function D(W){W.value instanceof eh?Promise.resolve(W.value.v).then(k,P):z(f[0][2],W)}(s[W](Z))}catch(te){z(f[0][3],te)}}function k(W){w("next",W)}function P(W){w("throw",W)}function z(W,Z){W(Z),f.shift(),f.length&&w(f[0][0],f[0][1])}}function fS(a){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,i=a[Symbol.asyncIterator];return i?i.call(a):(a=function Ju(a){var i="function"==typeof Symbol&&Symbol.iterator,e=i&&a[i],s=0;if(e)return e.call(a);if(a&&"number"==typeof a.length)return{next:function(){return a&&s>=a.length&&(a=void 0),{value:a&&a[s++],done:!a}}};throw new TypeError(i?"Object is not iterable.":"Symbol.iterator is not defined.")}(a),e={},s("next"),s("throw"),s("return"),e[Symbol.asyncIterator]=function(){return this},e);function s(f){e[f]=a[f]&&function(_){return new Promise(function(w,D){!function d(f,_,w,D){Promise.resolve(D).then(function(k){f({value:k,done:w})},_)}(w,D,(_=a[f](_)).done,_.value)})}}}const Ye=a=>a&&"number"==typeof a.length&&"function"!=typeof a;function hR(a){return Wt(null==a?void 0:a.then)}function Mt(a){return Wt(a[ip])}function Cb(a){return Symbol.asyncIterator&&Wt(null==a?void 0:a[Symbol.asyncIterator])}function Ii(a){return new TypeError(`You provided ${null!==a&&"object"==typeof a?"an invalid object":`'${a}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const U=function ra(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function xe(a){return Wt(null==a?void 0:a[U])}function Mo(a){return uR(this,arguments,function*(){const e=a.getReader();try{for(;;){const{value:s,done:d}=yield eh(e.read());if(d)return yield eh(void 0);yield yield eh(s)}}finally{e.releaseLock()}})}function Dn(a){return Wt(null==a?void 0:a.getReader)}function Dr(a){if(a instanceof Gn)return a;if(null!=a){if(Mt(a))return function Yt(a){return new Gn(i=>{const e=a[ip]();if(Wt(e.subscribe))return e.subscribe(i);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(a);if(Ye(a))return function sH(a){return new Gn(i=>{for(let e=0;e{a.then(e=>{i.closed||(i.next(e),i.complete())},e=>i.error(e)).then(null,vr)})}(a);if(Cb(a))return be(a);if(xe(a))return function vt(a){return new Gn(i=>{for(const e of a)if(i.next(e),i.closed)return;i.complete()})}(a);if(Dn(a))return function qe(a){return be(Mo(a))}(a)}throw Ii(a)}function be(a){return new Gn(i=>{(function Le(a,i){var e,s,d,f;return function $s(a,i,e,s){return new(e||(e=Promise))(function(f,_){function w(P){try{k(s.next(P))}catch(z){_(z)}}function D(P){try{k(s.throw(P))}catch(z){_(z)}}function k(P){P.done?f(P.value):function d(f){return f instanceof e?f:new e(function(_){_(f)})}(P.value).then(w,D)}k((s=s.apply(a,i||[])).next())})}(this,void 0,void 0,function*(){try{for(e=fS(a);!(s=yield e.next()).done;)if(i.next(s.value),i.closed)return}catch(_){d={error:_}}finally{try{s&&!s.done&&(f=e.return)&&(yield f.call(e))}finally{if(d)throw d.error}}i.complete()})})(a,i).catch(e=>i.error(e))})}function To(a,i,e,s=0,d=!1){const f=i.schedule(function(){e(),d?a.add(this.schedule(null,s)):this.unsubscribe()},s);if(a.add(f),!d)return f}function ze(a,i,e=1/0){return Wt(i)?ze((s,d)=>gt((f,_)=>i(s,f,d,_))(Dr(a(s,d))),e):("number"==typeof i&&(e=i),Un((s,d)=>function ln(a,i,e,s,d,f,_,w){const D=[];let k=0,P=0,z=!1;const W=()=>{z&&!D.length&&!k&&i.complete()},Z=re=>k{f&&i.next(re),k++;let fe=!1;Dr(e(re,P++)).subscribe(ci(i,pe=>{null==d||d(pe),f?Z(pe):i.next(pe)},()=>{fe=!0},void 0,()=>{if(fe)try{for(k--;D.length&&kte(pe)):te(pe)}W()}catch(pe){i.error(pe)}}))};return a.subscribe(ci(i,Z,()=>{z=!0,W()})),()=>{null==w||w()}}(s,d,a,e)))}function Md(a=1/0){return ze(Ku,a)}const ni=new Gn(a=>a.complete());function vS(a){return a&&Wt(a.schedule)}function Sb(a){return a[a.length-1]}function th(a){return Wt(Sb(a))?a.pop():void 0}function Vi(a){return vS(Sb(a))?a.pop():void 0}function Ws(a,i=0){return Un((e,s)=>{e.subscribe(ci(s,d=>To(s,a,()=>s.next(d),i),()=>To(s,a,()=>s.complete(),i),d=>To(s,a,()=>s.error(d),i)))})}function Ng(a,i=0){return Un((e,s)=>{s.add(a.schedule(()=>e.subscribe(s),i))})}function rp(a,i){if(!a)throw new Error("Iterable cannot be null");return new Gn(e=>{To(e,i,()=>{const s=a[Symbol.asyncIterator]();To(e,i,()=>{s.next().then(d=>{d.done?e.complete():e.next(d.value)})},0,!0)})})}function Wi(a,i){return i?function lH(a,i){if(null!=a){if(Mt(a))return function Db(a,i){return Dr(a).pipe(Ng(i),Ws(i))}(a,i);if(Ye(a))return function as(a,i){return new Gn(e=>{let s=0;return i.schedule(function(){s===a.length?e.complete():(e.next(a[s++]),e.closed||this.schedule())})})}(a,i);if(hR(a))return function xa(a,i){return Dr(a).pipe(Ng(i),Ws(i))}(a,i);if(Cb(a))return rp(a,i);if(xe(a))return function fR(a,i){return new Gn(e=>{let s;return To(e,i,()=>{s=a[U](),To(e,i,()=>{let d,f;try{({value:d,done:f}=s.next())}catch(_){return void e.error(_)}f?e.complete():e.next(d)},0,!0)}),()=>Wt(null==s?void 0:s.return)&&s.return()})}(a,i);if(Dn(a))return function ap(a,i){return rp(Mo(a),i)}(a,i)}throw Ii(a)}(a,i):Dr(a)}function Mi(...a){const i=Vi(a),e=function Dt(a,i){return"number"==typeof Sb(a)?a.pop():i}(a,1/0),s=a;return s.length?1===s.length?Dr(s[0]):Md(e)(Wi(s,i)):ni}function _S(a={}){const{connector:i=(()=>new Ue),resetOnError:e=!0,resetOnComplete:s=!0,resetOnRefCountZero:d=!0}=a;return f=>{let _,w,D,k=0,P=!1,z=!1;const W=()=>{null==w||w.unsubscribe(),w=void 0},Z=()=>{W(),_=D=void 0,P=z=!1},te=()=>{const re=_;Z(),null==re||re.unsubscribe()};return Un((re,fe)=>{k++,!z&&!P&&W();const pe=D=D??i();fe.add(()=>{k--,0===k&&!z&&!P&&(w=$e(te,d))}),pe.subscribe(fe),!_&&k>0&&(_=new Zu({next:Te=>pe.next(Te),error:Te=>{z=!0,W(),w=$e(Z,e,Te),pe.error(Te)},complete:()=>{P=!0,W(),w=$e(Z,s),pe.complete()}}),Dr(re).subscribe(_))})(f)}}function $e(a,i,...e){if(!0===i)return void a();if(!1===i)return;const s=new Zu({next:()=>{s.unsubscribe(),a()}});return Dr(i(...e)).subscribe(s)}function jn(a){for(let i in a)if(a[i]===jn)return i;throw Error("Could not find renamed property on target object.")}function nh(a,i){for(const e in i)i.hasOwnProperty(e)&&!a.hasOwnProperty(e)&&(a[e]=i[e])}function ii(a){if("string"==typeof a)return a;if(Array.isArray(a))return"["+a.map(ii).join(", ")+"]";if(null==a)return""+a;if(a.overriddenName)return`${a.overriddenName}`;if(a.name)return`${a.name}`;const i=a.toString();if(null==i)return""+i;const e=i.indexOf("\n");return-1===e?i:i.substring(0,e)}function Ve(a,i){return null==a||""===a?null===i?"":i:null==i||""===i?a:a+" "+i}const zi=jn({__forward_ref__:jn});function nn(a){return a.__forward_ref__=nn,a.toString=function(){return ii(this())},a}function Et(a){return qn(a)?a():a}function qn(a){return"function"==typeof a&&a.hasOwnProperty(zi)&&a.__forward_ref__===nn}function Mb(a){return a&&!!a.\u0275providers}const yS="https://g.co/ng/security#xss";class Ce extends Error{constructor(i,e){super(function bS(a,i){return`NG0${Math.abs(a)}${i?": "+i.trim():""}`}(i,e)),this.code=i}}function en(a){return"string"==typeof a?a:null==a?"":String(a)}function Tb(a,i){throw new Ce(-201,!1)}function Mr(a,i){null==a&&function qt(a,i,e,s){throw new Error(`ASSERTION ERROR: ${a}`+(null==s?"":` [Expected=> ${e} ${s} ${i} <=Actual]`))}(i,a,null,"!=")}function ke(a){return{token:a.token,providedIn:a.providedIn||null,factory:a.factory,value:void 0}}function st(a){return{providers:a.providers||[],imports:a.imports||[]}}function Ab(a){return vR(a,Td)||vR(a,Bg)}function vR(a,i){return a.hasOwnProperty(i)?a[i]:null}function _R(a){return a&&(a.hasOwnProperty(Mc)||a.hasOwnProperty(Tc))?a[Mc]:null}const Td=jn({\u0275prov:jn}),Mc=jn({\u0275inj:jn}),Bg=jn({ngInjectableDef:jn}),Tc=jn({ngInjectorDef:jn});var Rt=(()=>((Rt=Rt||{})[Rt.Default=0]="Default",Rt[Rt.Host=1]="Host",Rt[Rt.Self=2]="Self",Rt[Rt.SkipSelf=4]="SkipSelf",Rt[Rt.Optional=8]="Optional",Rt))();let El;function Ca(a){const i=El;return El=a,i}function Tr(a,i,e){const s=Ab(a);return s&&"root"==s.providedIn?void 0===s.value?s.value=s.factory():s.value:e&Rt.Optional?null:void 0!==i?i:void Tb(ii(a))}const En=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),zg={},ao="__NG_DI_FLAG__",kb="ngTempTokenPath",yR=/\n/gm,Eb="__source";let Hg;function kd(a){const i=Hg;return Hg=a,i}function fH(a,i=Rt.Default){if(void 0===Hg)throw new Ce(-203,!1);return null===Hg?Tr(a,void 0,i):Hg.get(a,i&Rt.Optional?null:void 0,i)}function oe(a,i=Rt.Default){return(function hH(){return El}()||fH)(Et(a),i)}function Gt(a,i=Rt.Default){return oe(a,Ib(i))}function Ib(a){return typeof a>"u"||"number"==typeof a?a:0|(a.optional&&8)|(a.host&&1)|(a.self&&2)|(a.skipSelf&&4)}function aa(a){const i=[];for(let e=0;e((Ao=Ao||{})[Ao.OnPush=0]="OnPush",Ao[Ao.Default=1]="Default",Ao))(),ko=(()=>{return(a=ko||(ko={}))[a.Emulated=0]="Emulated",a[a.None=2]="None",a[a.ShadowDom=3]="ShadowDom",ko;var a})();const kc={},mn=[],Ug=jn({\u0275cmp:jn}),TS=jn({\u0275dir:jn}),Pb=jn({\u0275pipe:jn}),wR=jn({\u0275mod:jn}),qs=jn({\u0275fac:jn}),oa=jn({__NG_ELEMENT_ID__:jn});let jg=0;function we(a){return Ac(()=>{const e=!0===a.standalone,s={},d={type:a.type,providersResolver:null,decls:a.decls,vars:a.vars,factory:null,template:a.template||null,consts:a.consts||null,ngContentSelectors:a.ngContentSelectors,hostBindings:a.hostBindings||null,hostVars:a.hostVars||0,hostAttrs:a.hostAttrs||null,contentQueries:a.contentQueries||null,declaredInputs:s,inputs:null,outputs:null,exportAs:a.exportAs||null,onPush:a.changeDetection===Ao.OnPush,directiveDefs:null,pipeDefs:null,standalone:e,dependencies:e&&a.dependencies||null,getStandaloneInjector:null,selectors:a.selectors||mn,viewQuery:a.viewQuery||null,features:a.features||null,data:a.data||{},encapsulation:a.encapsulation||ko.Emulated,id:"c"+jg++,styles:a.styles||mn,_:null,setInput:null,schemas:a.schemas||null,tView:null,findHostDirectiveDefs:null,hostDirectives:null},f=a.dependencies,_=a.features;return d.inputs=AS(a.inputs,s),d.outputs=AS(a.outputs),_&&_.forEach(w=>w(d)),d.directiveDefs=f?()=>("function"==typeof f?f():f).map(ss).filter(Ec):null,d.pipeDefs=f?()=>("function"==typeof f?f():f).map(or).filter(Ec):null,d})}function ss(a){return Rn(a)||Ar(a)}function Ec(a){return null!==a}function dt(a){return Ac(()=>({type:a.type,bootstrap:a.bootstrap||mn,declarations:a.declarations||mn,imports:a.imports||mn,exports:a.exports||mn,transitiveCompileScopes:null,schemas:a.schemas||null,id:a.id||null}))}function AS(a,i){if(null==a)return kc;const e={};for(const s in a)if(a.hasOwnProperty(s)){let d=a[s],f=d;Array.isArray(d)&&(f=d[1],d=d[0]),e[d]=s,i&&(i[d]=f)}return e}const me=we;function it(a){return{type:a.type,name:a.name,factory:null,pure:!1!==a.pure,standalone:!0===a.standalone,onDestroy:a.type.prototype.ngOnDestroy||null}}function Rn(a){return a[Ug]||null}function Ar(a){return a[TS]||null}function or(a){return a[Pb]||null}function kr(a,i){const e=a[wR]||null;if(!e&&!0===i)throw new Error(`Type ${ii(a)} does not have '\u0275mod' property.`);return e}function oo(a){return Array.isArray(a)&&"object"==typeof a[1]}function Eo(a){return Array.isArray(a)&&!0===a[1]}function Nb(a){return 0!=(4&a.flags)}function Xg(a){return a.componentOffset>-1}function Bb(a){return 1==(1&a.flags)}function cs(a){return null!==a.template}function IS(a){return 0!=(256&a[2])}function Pi(a,i){return a.hasOwnProperty(qs)?a[qs]:null}class FS{constructor(i,e,s){this.previousValue=i,this.currentValue=e,this.firstChange=s}isFirstChange(){return this.firstChange}}function $n(){return NS}function NS(a){return a.type.prototype.ngOnChanges&&(a.setInput=CR),Qg}function Qg(){const a=DR(this),i=null==a?void 0:a.current;if(i){const e=a.previous;if(e===kc)a.previous=i;else for(let s in i)e[s]=i[s];a.current=null,this.ngOnChanges(i)}}function CR(a,i,e,s){const d=this.declaredInputs[e],f=DR(a)||function BS(a,i){return a[SR]=i}(a,{previous:kc,current:null}),_=f.current||(f.current={}),w=f.previous,D=w[d];_[d]=new FS(D&&D.currentValue,i,w===kc),a[s]=i}$n.ngInherit=!0;const SR="__ngSimpleChanges__";function DR(a){return a[SR]||null}function lr(a){for(;Array.isArray(a);)a=a[0];return a}function so(a,i){return lr(i[a])}function Po(a,i){return lr(i[a.index])}function zb(a,i){return a.data[i]}function ds(a,i){return a[i]}function za(a,i){const e=i[a];return oo(e)?e:e[0]}function Ha(a){return 64==(64&a[2])}function Pc(a,i){return null==i?null:a[i]}function ev(a){a[18]=0}function Rd(a,i){a[5]+=i;let e=a,s=a[3];for(;null!==s&&(1===i&&1===e[5]||-1===i&&0===e[5]);)s[5]+=i,e=s,s=s[3]}const yt={lFrame:Wb(null),bindingsEnabled:!0};function kR(){return yt.bindingsEnabled}function Me(){return yt.lFrame.lView}function yn(){return yt.lFrame.tView}function ae(a){return yt.lFrame.contextLView=a,a[8]}function se(a){return yt.lFrame.contextLView=null,a}function sa(){let a=lp();for(;null!==a&&64===a.type;)a=a.parent;return a}function lp(){return yt.lFrame.currentTNode}function Qs(a,i){const e=yt.lFrame;e.currentTNode=a,e.isParent=i}function Pl(){return yt.lFrame.isParent}function cp(){yt.lFrame.isParent=!1}function Ga(){const a=yt.lFrame;let i=a.bindingRootIndex;return-1===i&&(i=a.bindingRootIndex=a.tView.bindingStartIndex),i}function dp(){return yt.lFrame.bindingIndex++}function Od(a){const i=yt.lFrame,e=i.bindingIndex;return i.bindingIndex=i.bindingIndex+a,e}function US(a,i){const e=yt.lFrame;e.bindingIndex=e.bindingRootIndex=a,Ub(i)}function Ub(a){yt.lFrame.currentDirectiveIndex=a}function jb(a){const i=yt.lFrame.currentDirectiveIndex;return-1===i?null:a[i]}function nv(){return yt.lFrame.currentQueryIndex}function $b(a){yt.lFrame.currentQueryIndex=a}function LR(a){const i=a[1];return 2===i.type?i.declTNode:1===i.type?a[6]:null}function FR(a,i,e){if(e&Rt.SkipSelf){let d=i,f=a;for(;!(d=d.parent,null!==d||e&Rt.Host||(d=LR(f),null===d||(f=f[15],10&d.type))););if(null===d)return!1;i=d,a=f}const s=yt.lFrame=Rl();return s.currentTNode=i,s.lView=a,!0}function iv(a){const i=Rl(),e=a[1];yt.lFrame=i,i.currentTNode=e.firstChild,i.lView=a,i.tView=e,i.contextLView=a,i.bindingIndex=e.bindingStartIndex,i.inI18n=!1}function Rl(){const a=yt.lFrame,i=null===a?null:a.child;return null===i?Wb(a):i}function Wb(a){const i={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:a,child:null,inI18n:!1};return null!==a&&(a.child=i),i}function NR(){const a=yt.lFrame;return yt.lFrame=a.parent,a.currentTNode=null,a.lView=null,a}const rv=NR;function Yb(){const a=NR();a.isParent=!0,a.tView=null,a.selectedIndex=-1,a.contextLView=null,a.elementDepthCount=0,a.currentDirectiveIndex=-1,a.currentNamespace=null,a.bindingRootIndex=-1,a.bindingIndex=-1,a.currentQueryIndex=0}function Ir(){return yt.lFrame.selectedIndex}function Ol(a){yt.lFrame.selectedIndex=a}function Hi(){const a=yt.lFrame;return zb(a.tView,a.selectedIndex)}function Pr(){yt.lFrame.currentNamespace="svg"}function Ll(){!function av(){yt.lFrame.currentNamespace=null}()}function ov(a,i){for(let e=i.directiveStart,s=i.directiveEnd;e=s)break}else i[D]<0&&(a[18]+=65536),(w>11>16&&(3&a[2])===i){a[2]+=2048;try{f.call(w)}finally{}}}else try{f.call(w)}finally{}}class Fl{constructor(i,e,s){this.factory=i,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=s}}function qS(a,i,e){let s=0;for(;si){_=f-1;break}}}for(;f>16}(a),s=i;for(;e>0;)s=s[15],e--;return s}let fp=!0;function pp(a){const i=fp;return fp=a,i}let WR=0;const Lc={};function mp(a,i){const e=Qb(a,i);if(-1!==e)return e;const s=i[1];s.firstCreatePass&&(a.injectorIndex=i.length,lv(s.data,a),lv(i,null),lv(s.blueprint,null));const d=XS(a,i),f=a.injectorIndex;if(us(d)){const _=hp(d),w=Zb(d,i),D=w[1].data;for(let k=0;k<8;k++)i[f+k]=w[_+k]|D[_+k]}return i[f+8]=d,f}function lv(a,i){a.push(0,0,0,0,0,0,0,0,i)}function Qb(a,i){return-1===a.injectorIndex||a.parent&&a.parent.injectorIndex===a.injectorIndex||null===i[a.injectorIndex+8]?-1:a.injectorIndex}function XS(a,i){if(a.parent&&-1!==a.parent.injectorIndex)return a.parent.injectorIndex;let e=0,s=null,d=i;for(;null!==d;){if(s=cv(d),null===s)return-1;if(e++,d=d[15],-1!==s.injectorIndex)return s.injectorIndex|e<<16}return-1}function Jb(a,i,e){!function Kb(a,i,e){let s;"string"==typeof e?s=e.charCodeAt(0)||0:e.hasOwnProperty(oa)&&(s=e[oa]),null==s&&(s=e[oa]=WR++);const d=255&s;i.data[a+(d>>5)]|=1<=0?255&i:XR:i}(e);if("function"==typeof f){if(!FR(i,a,s))return s&Rt.Host?Fd(d,0,s):Nd(i,e,s,d);try{const _=f(s);if(null!=_||s&Rt.Optional)return _;Tb()}finally{rv()}}else if("number"==typeof f){let _=null,w=Qb(a,i),D=-1,k=s&Rt.Host?i[16][6]:null;for((-1===w||s&Rt.SkipSelf)&&(D=-1===w?XS(a,i):i[w+8],-1!==D&&KS(s,!1)?(_=i[1],w=hp(D),i=Zb(D,i)):w=-1);-1!==w;){const P=i[1];if(Nl(f,w,P.data)){const z=ZS(w,i,e,_,s,k);if(z!==Lc)return z}D=i[w+8],-1!==D&&KS(s,i[1].data[w+8]===k)&&Nl(f,w,i)?(_=P,w=hp(D),i=Zb(D,i)):w=-1}}return d}function ZS(a,i,e,s,d,f){const _=i[1],w=_.data[a+8],P=t0(w,_,e,null==s?Xg(w)&&fp:s!=_&&0!=(3&w.type),d&Rt.Host&&f===w);return null!==P?Ma(i,_,P,w):Lc}function t0(a,i,e,s,d){const f=a.providerIndexes,_=i.data,w=1048575&f,D=a.directiveStart,P=f>>20,W=d?w+P:a.directiveEnd;for(let Z=s?w:w+P;Z=D&&te.type===e)return Z}if(d){const Z=_[D];if(Z&&cs(Z)&&Z.type===e)return D}return null}function Ma(a,i,e,s){let d=a[e];const f=i.data;if(function TH(a){return a instanceof Fl}(d)){const _=d;_.resolving&&function pR(a,i){const e=i?`. Dependency path: ${i.join(" > ")} > ${a}`:"";throw new Ce(-200,`Circular dependency in DI detected for ${a}${e}`)}(function ri(a){return"function"==typeof a?a.name||a.toString():"object"==typeof a&&null!=a&&"function"==typeof a.type?a.type.name||a.type.toString():en(a)}(f[e]));const w=pp(_.canSeeViewProviders);_.resolving=!0;const D=_.injectImpl?Ca(_.injectImpl):null;FR(a,s,Rt.Default);try{d=a[e]=_.factory(void 0,f,a,s),i.firstCreatePass&&e>=s.directiveStart&&function $S(a,i,e){const{ngOnChanges:s,ngOnInit:d,ngDoCheck:f}=i.type.prototype;if(s){const _=NS(i);(e.preOrderHooks||(e.preOrderHooks=[])).push(a,_),(e.preOrderCheckHooks||(e.preOrderCheckHooks=[])).push(a,_)}d&&(e.preOrderHooks||(e.preOrderHooks=[])).push(0-a,d),f&&((e.preOrderHooks||(e.preOrderHooks=[])).push(a,f),(e.preOrderCheckHooks||(e.preOrderCheckHooks=[])).push(a,f))}(e,f[e],i)}finally{null!==D&&Ca(D),pp(w),_.resolving=!1,rv()}}return d}function Nl(a,i,e){return!!(e[i+(a>>5)]&1<{const i=a.prototype.constructor,e=i[qs]||ph(i),s=Object.prototype;let d=Object.getPrototypeOf(a.prototype).constructor;for(;d&&d!==s;){const f=d[qs]||ph(d);if(f&&f!==e)return f;d=Object.getPrototypeOf(d)}return f=>new f})}function ph(a){return qn(a)?()=>{const i=ph(Et(a));return i&&i()}:Pi(a)}function cv(a){const i=a[1],e=i.type;return 2===e?i.declTNode:1===e?a[6]:null}function hs(a){return function YR(a,i){if("class"===i)return a.classes;if("style"===i)return a.styles;const e=a.attrs;if(e){const s=e.length;let d=0;for(;d{const s=function QS(a){return function(...e){if(a){const s=a(...e);for(const d in s)this[d]=s[d]}}}(i);function d(...f){if(this instanceof d)return s.apply(this,f),this;const _=new d(...f);return w.annotation=_,w;function w(D,k,P){const z=D.hasOwnProperty(Fc)?D[Fc]:Object.defineProperty(D,Fc,{value:[]})[Fc];for(;z.length<=P;)z.push(null);return(z[P]=z[P]||[]).push(_),D}}return e&&(d.prototype=Object.create(e.prototype)),d.prototype.ngMetadataName=a,d.annotationCls=d,d})}class _e{constructor(i,e){this._desc=i,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=ke({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function mh(a,i){a.forEach(e=>Array.isArray(e)?mh(e,i):i(e))}function KR(a,i,e){i>=a.length?a.push(e):a.splice(i,0,e)}function r0(a,i){return i>=a.length-1?a.pop():a.splice(i,1)[0]}function _p(a,i){const e=[];for(let s=0;s=0?a[1|s]=e:(s=~s,function QR(a,i,e,s){let d=a.length;if(d==i)a.push(e,s);else if(1===d)a.push(s,a[0]),a[0]=e;else{for(d--,a.push(a[d-1],a[d]);d>i;)a[d]=a[d-2],d--;a[i]=e,a[i+1]=s}}(a,s,i,e)),s}function Ie(a,i){const e=ai(a,i);if(e>=0)return a[1|e]}function ai(a,i){return function ps(a,i,e){let s=0,d=a.length>>e;for(;d!==s;){const f=s+(d-s>>1),_=a[f<i?d=f:s=f+1}return~(d<({token:a})),-1),yi=Gg(Js("Optional"),8),co=Gg(Js("SkipSelf"),4);var Xr=(()=>((Xr=Xr||{})[Xr.Important=1]="Important",Xr[Xr.DashCase=2]="DashCase",Xr))();const d0=new Map;let $H=0;const lD="__ngContext__";function ka(a,i){oo(i)?(a[lD]=i[20],function p2(a){d0.set(a[20],a)}(i)):a[lD]=i}function gv(a,i){return undefined(a,i)}function Cp(a){const i=a[3];return Eo(i)?i[3]:i}function uD(a){return fD(a[13])}function hD(a){return fD(a[4])}function fD(a){for(;null!==a&&!Eo(a);)a=a[4];return a}function Sp(a,i,e,s,d){if(null!=s){let f,_=!1;Eo(s)?f=s:oo(s)&&(_=!0,s=s[0]);const w=lr(s);0===a&&null!==e?null==d?p0(i,e,w):Nc(i,e,w,d||null,!0):1===a&&null!==e?Nc(i,e,w,d||null,!0):2===a?function gs(a,i,e){const s=Sh(a,i);s&&function m0(a,i,e,s){a.removeChild(i,e,s)}(a,s,i,e)}(i,w,_):3===a&&i.destroyNode(w),null!=f&&function CD(a,i,e,s,d){const f=e[7];f!==lr(e)&&Sp(i,a,s,f,d);for(let w=10;w0&&(a[e-1][4]=s[4]);const f=r0(a,10+i);!function KH(a,i){uo(a,i,i[11],2,null,null),i[0]=null,i[6]=null}(s[1],s);const _=f[19];null!==_&&_.detachView(f[1]),s[3]=null,s[4]=null,s[2]&=-65}return s}function f0(a,i){if(!(128&i[2])){const e=i[11];e.destroyNode&&uo(a,i,e,3,null,null),function Ch(a){let i=a[13];if(!i)return vv(a[1],a);for(;i;){let e=null;if(oo(i))e=i[13];else{const s=i[10];s&&(e=s)}if(!e){for(;i&&!i[4]&&i!==a;)oo(i)&&vv(i[1],i),i=i[3];null===i&&(i=a),oo(i)&&vv(i[1],i),e=i&&i[4]}i=e}}(i)}}function vv(a,i){if(!(128&i[2])){i[2]&=-65,i[2]|=128,function ms(a,i){let e;if(null!=a&&null!=(e=a.destroyHooks))for(let s=0;s=0?s[d=_]():s[d=-_].unsubscribe(),f+=2}else{const _=s[d=e[f+1]];e[f].call(_)}if(null!==s){for(let f=d+1;f-1){const{encapsulation:f}=a.data[s.directiveStart+d];if(f===ko.None||f===ko.Emulated)return null}return Po(s,e)}}(a,i.parent,e)}function Nc(a,i,e,s,d){a.insertBefore(i,e,s,d)}function p0(a,i,e){a.appendChild(i,e)}function zd(a,i,e,s,d){null!==s?Nc(a,i,e,s,d):p0(a,i,e)}function Sh(a,i){return a.parentNode(i)}function yD(a,i,e){return wD(a,i,e)}let tl,Gl,yv,wD=function bD(a,i,e){return 40&a.type?Po(a,e):null};function v0(a,i,e,s){const d=Ua(a,s,i),f=i[11],w=yD(s.parent||i[6],s,i);if(null!=d)if(Array.isArray(e))for(let D=0;Da,createScript:a=>a,createScriptURL:a=>a})}catch{}return tl}())||void 0===i?void 0:i.createHTML(a))||a}function Ul(){if(void 0===yv&&(yv=null,En.trustedTypes))try{yv=En.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:a=>a,createScript:a=>a,createScriptURL:a=>a})}catch{}return yv}function Dp(a){var i;return(null===(i=Ul())||void 0===i?void 0:i.createHTML(a))||a}function jl(a){var i;return(null===(i=Ul())||void 0===i?void 0:i.createScriptURL(a))||a}class ho{constructor(i){this.changingThisBreaksApplicationSecurity=i}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${yS})`}}class Th extends ho{getTypeName(){return"HTML"}}class e8 extends ho{getTypeName(){return"Style"}}class t8 extends ho{getTypeName(){return"Script"}}class $a extends ho{getTypeName(){return"URL"}}class vs extends ho{getTypeName(){return"ResourceURL"}}function Oo(a){return a instanceof ho?a.changingThisBreaksApplicationSecurity:a}function $l(a,i){const e=function n8(a){return a instanceof ho&&a.getTypeName()||null}(a);if(null!=e&&e!==i){if("ResourceURL"===e&&"URL"===i)return!0;throw new Error(`Required a safe ${i}, got a ${e} (see ${yS})`)}return e===i}class MD{constructor(i){this.inertDocumentHelper=i}getInertBodyElement(i){i=""+i;try{const e=(new window.DOMParser).parseFromString(nl(i),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(i):(e.removeChild(e.firstChild),e)}catch{return null}}}class o8{constructor(i){if(this.defaultDoc=i,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),null==this.inertDocument.body){const e=this.inertDocument.createElement("html");this.inertDocument.appendChild(e);const s=this.inertDocument.createElement("body");e.appendChild(s)}}getInertBodyElement(i){const e=this.inertDocument.createElement("template");if("content"in e)return e.innerHTML=nl(i),e;const s=this.inertDocument.createElement("body");return s.innerHTML=nl(i),this.defaultDoc.documentMode&&this.stripCustomNsAttrs(s),s}stripCustomNsAttrs(i){const e=i.attributes;for(let d=e.length-1;0"),!0}endElement(i){const e=i.nodeName.toLowerCase();w0.hasOwnProperty(e)&&!E2.hasOwnProperty(e)&&(this.buf.push(""))}chars(i){this.buf.push(F2(i))}checkClobberedElement(i,e){if(e&&(i.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${i.outerHTML}`);return e}}const O2=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,L2=/([^\#-~ |!])/g;function F2(a){return a.replace(/&/g,"&").replace(O2,function(i){return"&#"+(1024*(i.charCodeAt(0)-55296)+(i.charCodeAt(1)-56320)+65536)+";"}).replace(L2,function(i){return"&#"+i.charCodeAt(0)+";"}).replace(//g,">")}let Cv;function N2(a,i){let e=null;try{Cv=Cv||function k2(a){const i=new o8(a);return function Vt(){try{return!!(new window.DOMParser).parseFromString(nl(""),"text/html")}catch{return!1}}()?new MD(i):i}(a);let s=i?String(i):"";e=Cv.getInertBodyElement(s);let d=5,f=s;do{if(0===d)throw new Error("Failed to sanitize html because the input is unstable");d--,s=f,f=e.innerHTML,e=Cv.getInertBodyElement(s)}while(s!==f);return nl((new an).sanitizeChildren(AD(e)||e))}finally{if(e){const s=AD(e)||e;for(;s.firstChild;)s.removeChild(s.firstChild)}}}function AD(a){return"content"in a&&function B2(a){return a.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===a.nodeName}(a)?a.content:null}var Vn=(()=>((Vn=Vn||{})[Vn.NONE=0]="NONE",Vn[Vn.HTML=1]="HTML",Vn[Vn.STYLE=2]="STYLE",Vn[Vn.SCRIPT=3]="SCRIPT",Vn[Vn.URL=4]="URL",Vn[Vn.RESOURCE_URL=5]="RESOURCE_URL",Vn))();function Rr(a){const i=Ah();return i?Dp(i.sanitize(Vn.HTML,a)||""):$l(a,"HTML")?Dp(Oo(a)):N2(function DD(){return void 0!==Gl?Gl:typeof document<"u"?document:void 0}(),en(a))}function tn(a){const i=Ah();return i?i.sanitize(Vn.URL,a)||"":$l(a,"URL")?Oo(a):bv(en(a))}function kD(a){const i=Ah();if(i)return jl(i.sanitize(Vn.RESOURCE_URL,a)||"");if($l(a,"ResourceURL"))return jl(Oo(a));throw new Ce(904,!1)}function Ah(){const a=Me();return a&&a[12]}const Sv=new _e("ENVIRONMENT_INITIALIZER"),ED=new _e("INJECTOR",-1),ID=new _e("INJECTOR_DEF_TYPES");class S0{get(i,e=zg){if(e===zg){const s=new Error(`NullInjectorError: No provider for ${ii(i)}!`);throw s.name="NullInjectorError",s}return e}}function Dv(...a){return{\u0275providers:Mv(0,a),\u0275fromNgModule:!0}}function Mv(a,...i){const e=[],s=new Set;let d;return mh(i,f=>{const _=f;kh(_,e,[],s)&&(d||(d=[]),d.push(_))}),void 0!==d&&Ea(d,e),e}function Ea(a,i){for(let e=0;e{i.push(f)})}}function kh(a,i,e,s){if(!(a=Et(a)))return!1;let d=null,f=_R(a);const _=!f&&Rn(a);if(f||_){if(_&&!_.standalone)return!1;d=a}else{const D=a.ngModule;if(f=_R(D),!f)return!1;d=D}const w=s.has(d);if(_){if(w)return!1;if(s.add(d),_.dependencies){const D="function"==typeof _.dependencies?_.dependencies():_.dependencies;for(const k of D)kh(k,i,e,s)}}else{if(!f)return!1;{if(null!=f.imports&&!w){let k;s.add(d);try{mh(f.imports,P=>{kh(P,i,e,s)&&(k||(k=[]),k.push(P))})}finally{}void 0!==k&&Ea(k,i)}if(!w){const k=Pi(d)||(()=>new d);i.push({provide:d,useFactory:k,deps:mn},{provide:ID,useValue:d,multi:!0},{provide:Sv,useValue:()=>oe(d),multi:!0})}const D=f.providers;null==D||w||RD(D,P=>{i.push(P)})}}return d!==a&&void 0!==a.providers}function RD(a,i){for(let e of a)Mb(e)&&(e=e.\u0275providers),Array.isArray(e)?RD(e,i):i(e)}const Eh=jn({provide:String,useValue:jn});function Tp(a){return null!==a&&"object"==typeof a&&Eh in a}function il(a){return"function"==typeof a}const D0=new _e("Set Injector scope."),kv={},M0={};let T0;function Ev(){return void 0===T0&&(T0=new S0),T0}class _s{}class OD extends _s{get destroyed(){return this._destroyed}constructor(i,e,s,d){super(),this.parent=e,this.source=s,this.scopes=d,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,FD(i,_=>this.processProvider(_)),this.records.set(ED,Vc(void 0,this)),d.has("environment")&&this.records.set(_s,Vc(void 0,this));const f=this.records.get(D0);null!=f&&"string"==typeof f.value&&this.scopes.add(f.value),this.injectorDefTypes=new Set(this.get(ID.multi,mn,Rt.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const i of this._ngOnDestroyHooks)i.ngOnDestroy();for(const i of this._onDestroyHooks)i()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(i){this._onDestroyHooks.push(i)}runInContext(i){this.assertNotDestroyed();const e=kd(this),s=Ca(void 0);try{return i()}finally{kd(e),Ca(s)}}get(i,e=zg,s=Rt.Default){this.assertNotDestroyed(),s=Ib(s);const d=kd(this),f=Ca(void 0);try{if(!(s&Rt.SkipSelf)){let w=this.records.get(i);if(void 0===w){const D=function d8(a){return"function"==typeof a||"object"==typeof a&&a instanceof _e}(i)&&Ab(i);w=D&&this.injectableDefInScope(D)?Vc(LD(i),kv):null,this.records.set(i,w)}if(null!=w)return this.hydrate(i,w)}return(s&Rt.Self?Ev():this.parent).get(i,e=s&Rt.Optional&&e===zg?null:e)}catch(_){if("NullInjectorError"===_.name){if((_[kb]=_[kb]||[]).unshift(ii(i)),d)throw _;return function pH(a,i,e,s){const d=a[kb];throw i[Eb]&&d.unshift(i[Eb]),a.message=function MS(a,i,e,s=null){a=a&&"\n"===a.charAt(0)&&"\u0275"==a.charAt(1)?a.slice(2):a;let d=ii(i);if(Array.isArray(i))d=i.map(ii).join(" -> ");else if("object"==typeof i){let f=[];for(let _ in i)if(i.hasOwnProperty(_)){let w=i[_];f.push(_+":"+("string"==typeof w?JSON.stringify(w):ii(w)))}d=`{${f.join(", ")}}`}return`${e}${s?"("+s+")":""}[${d}]: ${a.replace(yR,"\n ")}`}("\n"+a.message,d,e,s),a.ngTokenPath=d,a[kb]=null,a}(_,i,"R3InjectorError",this.source)}throw _}finally{Ca(f),kd(d)}}resolveInjectorInitializers(){const i=kd(this),e=Ca(void 0);try{const s=this.get(Sv.multi,mn,Rt.Self);for(const d of s)d()}finally{kd(i),Ca(e)}}toString(){const i=[],e=this.records;for(const s of e.keys())i.push(ii(s));return`R3Injector[${i.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Ce(205,!1)}processProvider(i){let e=il(i=Et(i))?i:Et(i&&i.provide);const s=function j2(a){return Tp(a)?Vc(void 0,a.useValue):Vc(Wl(a),kv)}(i);if(il(i)||!0!==i.multi)this.records.get(e);else{let d=this.records.get(e);d||(d=Vc(void 0,kv,!0),d.factory=()=>aa(d.multi),this.records.set(e,d)),e=i,d.multi.push(i)}this.records.set(e,s)}hydrate(i,e){return e.value===kv&&(e.value=M0,e.value=e.factory()),"object"==typeof e.value&&e.value&&function c8(a){return null!==a&&"object"==typeof a&&"function"==typeof a.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}injectableDefInScope(i){if(!i.providedIn)return!1;const e=Et(i.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}}function LD(a){const i=Ab(a),e=null!==i?i.factory:Pi(a);if(null!==e)return e;if(a instanceof _e)throw new Ce(204,!1);if(a instanceof Function)return function l8(a){const i=a.length;if(i>0)throw _p(i,"?"),new Ce(204,!1);const e=function dH(a){const i=a&&(a[Td]||a[Bg]);if(i){const e=function uH(a){if(a.hasOwnProperty("name"))return a.name;const i=(""+a).match(/^function\s*([^\s(]+)/);return null===i?"":i[1]}(a);return console.warn(`DEPRECATED: DI is instantiating a token "${e}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${e}" class.`),i}return null}(a);return null!==e?()=>e.factory(a):()=>new a}(a);throw new Ce(204,!1)}function Wl(a,i,e){let s;if(il(a)){const d=Et(a);return Pi(d)||LD(d)}if(Tp(a))s=()=>Et(a.useValue);else if(function Av(a){return!(!a||!a.useFactory)}(a))s=()=>a.useFactory(...aa(a.deps||[]));else if(function Ap(a){return!(!a||!a.useExisting)}(a))s=()=>oe(Et(a.useExisting));else{const d=Et(a&&(a.useClass||a.provide));if(!function _Z(a){return!!a.deps}(a))return Pi(d)||LD(d);s=()=>new d(...aa(a.deps))}return s}function Vc(a,i,e=!1){return{factory:a,value:i,multi:e?[]:void 0}}function FD(a,i){for(const e of a)Array.isArray(e)?FD(e,i):e&&Mb(e)?FD(e.\u0275providers,i):i(e)}class u8{}class A0{}class zc{resolveComponentFactory(i){throw function Ih(a){const i=Error(`No component factory found for ${ii(a)}. Did you add it to @NgModule.entryComponents?`);return i.ngComponent=a,i}(i)}}let ca=(()=>{class a{}return a.NULL=new zc,a})();function $2(){return Gd(sa(),Me())}function Gd(a,i){return new Be(Po(a,i))}let Be=(()=>{class a{constructor(e){this.nativeElement=e}}return a.__NG_ELEMENT_ID__=$2,a})();function W2(a){return a instanceof Be?a.nativeElement:a}class Ep{}let Yl=(()=>{class a{}return a.__NG_ELEMENT_ID__=()=>function BD(){const a=Me(),e=za(sa().index,a);return(oo(e)?e:a)[11]}(),a})(),VD=(()=>{class a{}return a.\u0275prov=ke({token:a,providedIn:"root",factory:()=>null}),a})();class Ph{constructor(i){this.full=i,this.major=i.split(".")[0],this.minor=i.split(".")[1],this.patch=i.split(".").slice(2).join(".")}}const zD=new Ph("15.1.0"),HD={};function k0(a){return a.ngOriginalError}class Hc{constructor(){this._console=console}handleError(i){const e=this._findOriginalError(i);this._console.error("ERROR",i),e&&this._console.error("ORIGINAL ERROR",e)}_findOriginalError(i){let e=i&&k0(i);for(;e&&k0(e);)e=k0(e);return e||null}}function E0(a){return a.ownerDocument.defaultView}function Y2(a){return a.ownerDocument}function Fo(a){return a instanceof Function?a():a}function Rh(a,i,e){let s=a.length;for(;;){const d=a.indexOf(i,e);if(-1===d)return d;if(0===d||a.charCodeAt(d-1)<=32){const f=i.length;if(d+f===s||a.charCodeAt(d+f)<=32)return d}e=d+1}}const I0="ng-template";function un(a,i,e){let s=0;for(;sf?"":d[z+1].toLowerCase();const Z=8&s?W:null;if(Z&&-1!==Rh(Z,k,0)||2&s&&k!==W){if(bs(s))return!1;_=!0}}}}else{if(!_&&!bs(s)&&!bs(D))return!1;if(_&&bs(D))continue;_=!1,s=D|1&s}}return bs(s)||_}function bs(a){return 0==(1&a)}function Iv(a,i,e,s){if(null===i)return-1;let d=0;if(s||!e){let f=!1;for(;d-1)for(e++;e0?'="'+w+'"':"")+"]"}else 8&s?d+="."+_:4&s&&(d+=" "+_);else""!==d&&!bs(_)&&(i+=Zr(f,d),d=""),s=_,f=f||!bs(s);e++}return""!==d&&(i+=Zr(f,d)),i}const Jt={};function N(a){$D(yn(),Me(),Ir()+a,!1)}function $D(a,i,e,s){if(!s)if(3==(3&i[2])){const f=a.preOrderCheckHooks;null!==f&&sv(i,f,e)}else{const f=a.preOrderHooks;null!==f&&uh(i,f,0,e)}Ol(e)}function O0(a,i=null,e=null,s){const d=tO(a,i,e,s);return d.resolveInjectorInitializers(),d}function tO(a,i=null,e=null,s,d=new Set){const f=[e||mn,Dv(a)];return s=s||("object"==typeof a?void 0:ii(a)),new OD(f,i||Ev(),s||null,d)}let Gi=(()=>{class a{static create(e,s){if(Array.isArray(e))return O0({name:""},s,e,"");{var d;const f=null!==(d=e.name)&&void 0!==d?d:"";return O0({name:f},e.parent,e.providers,f)}}}return a.THROW_IF_NOT_FOUND=zg,a.NULL=new S0,a.\u0275prov=ke({token:a,providedIn:"any",factory:()=>oe(ED)}),a.__NG_ELEMENT_ID__=-1,a})();function F(a,i=Rt.Default){const e=Me();return null===e?oe(a,i):fh(sa(),e,Et(a),i)}function xs(){throw new Error("invalid")}function tM(a,i){const e=a.contentQueries;if(null!==e)for(let s=0;s22&&$D(a,i,22,!1),e(s,d)}finally{Ol(f)}}function Wd(a,i,e){if(Nb(i)){const d=i.directiveEnd;for(let f=i.directiveStart;f0;){const e=a[--i];if("number"==typeof e&&e<0)return e}return 0})(_)!=w&&_.push(w),_.push(e,s,f)}}(a,i,s,Lv(a,e,d.hostVars,Jt),d)}function Gc(a,i,e,s,d,f){const _=Po(a,i);!function vO(a,i,e,s,d,f,_){if(null==f)a.removeAttribute(i,d,e);else{const w=null==_?en(f):_(f,s||"",d);a.setAttribute(i,d,w,e)}}(i[11],_,f,a.value,e,s,d)}function D8(a,i,e,s,d,f){const _=f[i];if(null!==_){const w=s.setInput;for(let D=0;D<_.length;){const k=_[D++],P=_[D++],z=_[D++];null!==w?s.setInput(e,z,k,P):e[P]=z}}}function cr(a,i,e){let s=null,d=0;for(;d0&&qd(e)}}function qd(a){for(let s=uD(a);null!==s;s=hD(s))for(let d=10;d0&&qd(f)}const e=a[1].components;if(null!==e)for(let s=0;s0&&qd(d)}}function _O(a,i){const e=za(i,a),s=e[1];(function T8(a,i){for(let e=i.length;e-1&&(vD(i,s),r0(e,s))}this._attachedToViewContainer=!1}f0(this._lView[1],this._lView)}onDestroy(i){nM(this._lView[1],this._lView,null,i)}markForCheck(){sM(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-65}reattach(){this._lView[2]|=64}detectChanges(){jt(this._lView[1],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new Ce(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function gD(a,i){uo(a,i,i[11],2,null,null)}(this._lView[1],this._lView)}attachToAppRef(i){if(this._attachedToViewContainer)throw new Ce(902,!1);this._appRef=i}}class fa extends ql{constructor(i){super(i),this._view=i}detectChanges(){const i=this._view;jt(i[1],i,i[8],!1)}checkNoChanges(){}get context(){return null}}class cM extends ca{constructor(i){super(),this.ngModule=i}resolveComponentFactory(i){const e=Rn(i);return new zh(e,this.ngModule)}}function yO(a){const i=[];for(let e in a)a.hasOwnProperty(e)&&i.push({propName:a[e],templateName:e});return i}class dM{constructor(i,e){this.injector=i,this.parentInjector=e}get(i,e,s){s=Ib(s);const d=this.injector.get(i,HD,s);return d!==HD||e===HD?d:this.parentInjector.get(i,e,s)}}class zh extends A0{get inputs(){return yO(this.componentDef.inputs)}get outputs(){return yO(this.componentDef.outputs)}constructor(i,e){super(),this.componentDef=i,this.ngModule=e,this.componentType=i.type,this.selector=function Xn(a){return a.map(Or).join(",")}(i.selectors),this.ngContentSelectors=i.ngContentSelectors?i.ngContentSelectors:[],this.isBoundToModule=!!e}create(i,e,s,d){var f;let _=(d=d||this.ngModule)instanceof _s?d:null===(f=d)||void 0===f?void 0:f.injector;_&&null!==this.componentDef.getStandaloneInjector&&(_=this.componentDef.getStandaloneInjector(_)||_);const w=_?new dM(i,_):i,D=w.get(Ep,null);if(null===D)throw new Ce(407,!1);const k=w.get(VD,null),P=D.createRenderer(null,this.componentDef),z=this.componentDef.selectors[0][0]||"div",W=s?function x8(a,i,e){return a.selectRootElement(i,e===ko.ShadowDom)}(P,s,this.componentDef.encapsulation):mD(P,z,function bO(a){const i=a.toLowerCase();return"svg"===i?"svg":"math"===i?"math":null}(z)),Z=this.componentDef.onPush?288:272,te=Bp(0,null,null,1,0,null,null,null,null,null),re=G0(null,te,null,Z,null,null,D,P,k,w,null);let fe,pe;iv(re);try{const Te=this.componentDef;let ue,Fe=null;Te.findHostDirectiveDefs?(ue=[],Fe=new Map,Te.findHostDirectiveDefs(Te,ue,Fe),ue.push(Te)):ue=[Te];const Cn=function wO(a,i){const e=a[1];return a[22]=i,Fp(e,22,2,"#host",null)}(re,W),ti=function uM(a,i,e,s,d,f,_,w){const D=d[1];!function I8(a,i,e,s){for(const d of a)i.mergedAttrs=up(i.mergedAttrs,d.hostAttrs);null!==i.mergedAttrs&&(zv(i,i.mergedAttrs,!0),null!==e&&y0(s,e,i))}(s,a,i,_);const k=f.createRenderer(i,e),P=G0(d,Nv(e),null,e.onPush?32:16,d[a.index],a,f,k,w||null,null,null);return D.firstCreatePass&&Vp(D,a,s.length-1),Uc(d,P),d[a.index]=P}(Cn,W,Te,ue,re,D,P);pe=zb(te,22),W&&function xO(a,i,e,s){if(s)qS(a,e,["ng-version",zD.full]);else{const{attrs:d,classes:f}=function R0(a){const i=[],e=[];let s=1,d=2;for(;s0&&zl(a,e,f.join(" "))}}(P,Te,W,s),void 0!==e&&function R8(a,i,e){const s=a.projection=[];for(let d=0;d=0;s--){const d=a[s];d.hostVars=i+=d.hostVars,d.hostAttrs=up(d.hostAttrs,e=up(e,d.hostAttrs))}}(s)}function fM(a){return a===kc?{}:a===mn?[]:a}function K0(a,i){const e=a.viewQuery;a.viewQuery=e?(s,d)=>{i(s,d),e(s,d)}:i}function Hv(a,i){const e=a.contentQueries;a.contentQueries=e?(s,d,f)=>{i(s,d,f),e(s,d,f)}:i}function SO(a,i){const e=a.hostBindings;a.hostBindings=e?(s,d)=>{i(s,d),e(s,d)}:i}let Gv=null;function Zd(){if(!Gv){const a=En.Symbol;if(a&&a.iterator)Gv=a.iterator;else{const i=Object.getOwnPropertyNames(Map.prototype);for(let e=0;e_(lr(Fe[s.index])):s.index;let ue=null;if(!_&&w&&(ue=function Uh(a,i,e,s){const d=a.cleanup;if(null!=d)for(let f=0;fD?w[D]:null}"string"==typeof _&&(f+=2)}return null}(a,i,d,s.index)),null!==ue)(ue.__ngLastListenerFn__||ue).__ngNextListenerFn__=f,ue.__ngLastListenerFn__=f,W=!1;else{f=bM(s,i,P,f,!1);const Fe=e.listen(fe,d,f);z.push(f,Fe),k&&k.push(d,Te,pe,pe+1)}}else f=bM(s,i,P,f,!1);const Z=s.outputs;let te;if(W&&null!==Z&&(te=Z[d])){const re=te.length;if(re)for(let fe=0;fe-1?za(a.index,i):i);let D=Jd(i,0,s,_),k=f.__ngNextListenerFn__;for(;k;)D=Jd(i,0,k,_)&&D,k=k.__ngNextListenerFn__;return d&&!1===D&&(_.preventDefault(),_.returnValue=!1),D}}function q(a=1){return function SH(a){return(yt.lFrame.contextLView=function DH(a,i){for(;a>0;)i=i[15],a--;return i}(a,yt.lFrame.contextLView))[8]}(a)}function FO(a,i){let e=null;const s=function y8(a){const i=a.attrs;if(null!=i){const e=i.indexOf(5);if(!(1&e))return i[e+1]}return null}(a);for(let d=0;d>17&32767}function CM(a){return 2|a}function eu(a){return(131068&a)>>2}function SM(a,i){return-131069&a|i<<2}function DM(a){return 1|a}function U8(a,i,e,s,d){const f=a[e+1],_=null===i;let w=s?ec(f):eu(f),D=!1;for(;0!==w&&(!1===D||_);){const P=a[w+1];DZ(a[w],i)&&(D=!0,a[w+1]=s?DM(P):CM(P)),w=s?ec(P):eu(P)}D&&(a[e+1]=s?CM(f):DM(f))}function DZ(a,i){return null===a||null==i||(Array.isArray(a)?a[1]:a)===i||!(!Array.isArray(a)||"string"!=typeof i)&&ai(a,i)>=0}const Kr={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function Sn(a){return a.substring(Kr.key,Kr.keyEnd)}function MM(a,i){const e=Kr.textEnd;return e===i?-1:(i=Kr.keyEnd=function $8(a,i,e){for(;i32;)i++;return i}(a,Kr.key=i,e),Up(a,i,e))}function Up(a,i,e){for(;i=0;e=MM(i,e))Ut(a,Sn(i),!0)}function go(a,i,e,s){const d=Me(),f=yn(),_=Od(2);f.firstUpdatePass&&AM(f,a,_,s),i!==Jt&&Ia(d,_,i)&&IM(f,f.data[Ir()],d,d[11],a,d[_+1]=function KO(a,i){return null==a||("string"==typeof i?a+=i:"object"==typeof a&&(a=ii(Oo(a)))),a}(i,e),s,_)}function WO(a,i){return i>=a.expandoStartIndex}function AM(a,i,e,s){const d=a.data;if(null===d[e+1]){const f=d[Ir()],_=WO(a,e);RM(f,s)&&null===i&&!_&&(i=!1),i=function YO(a,i,e,s){const d=jb(a);let f=s?i.residualClasses:i.residualStyles;if(null===d)0===(s?i.classBindings:i.styleBindings)&&(e=Yv(e=nu(null,a,i,e,s),i.attrs,s),f=null);else{const _=i.directiveStylingLast;if(-1===_||a[_]!==d)if(e=nu(d,a,i,e,s),null===f){let D=function qO(a,i,e){const s=e?i.classBindings:i.styleBindings;if(0!==eu(s))return a[ec(s)]}(a,i,s);void 0!==D&&Array.isArray(D)&&(D=nu(null,a,i,D[1],s),D=Yv(D,i.attrs,s),function kM(a,i,e,s){a[ec(e?i.classBindings:i.styleBindings)]=s}(a,i,s,D))}else f=function Wv(a,i,e){let s;const d=i.directiveEnd;for(let f=1+i.directiveStylingLast;f0)&&(k=!0)):P=e,d)if(0!==D){const W=ec(a[w+1]);a[s+1]=aw(W,w),0!==W&&(a[W+1]=SM(a[W+1],s)),a[w+1]=function $v(a,i){return 131071&a|i<<17}(a[w+1],s)}else a[s+1]=aw(w,0),0!==w&&(a[w+1]=SM(a[w+1],s)),w=s;else a[s+1]=aw(D,0),0===w?w=s:a[D+1]=SM(a[D+1],s),D=s;k&&(a[s+1]=CM(a[s+1])),U8(a,P,s,!0),U8(a,P,s,!1),function SZ(a,i,e,s,d){const f=d?a.residualClasses:a.residualStyles;null!=f&&"string"==typeof i&&ai(f,i)>=0&&(e[s+1]=DM(e[s+1]))}(i,P,a,s,f),_=aw(w,D),f?i.classBindings=_:i.styleBindings=_}(d,f,i,e,_,s)}}function nu(a,i,e,s,d){let f=null;const _=e.directiveEnd;let w=e.directiveStylingLast;for(-1===w?w=e.directiveStart:w++;w<_&&(f=i[w],s=Yv(s,f.hostAttrs,d),f!==a);)w++;return null!==a&&(e.directiveStylingLast=w),s}function Yv(a,i,e){const s=e?1:2;let d=-1;if(null!==i)for(let f=0;f0;){const D=a[d],k=Array.isArray(D),P=k?D[1]:D,z=null===P;let W=e[d+1];W===Jt&&(W=z?mn:void 0);let Z=z?Ie(W,s):P===s?W:void 0;if(k&&!$h(Z)&&(Z=Ie(D,s)),$h(Z)&&(w=Z,_))return w;const te=a[d+1];d=_?ec(te):eu(te)}if(null!==i){let D=f?i.residualClasses:i.residualStyles;null!=D&&(w=Ie(D,s))}return w}function $h(a){return void 0!==a}function RM(a,i){return 0!=(a.flags&(i?8:16))}function Y(a,i=""){const e=Me(),s=yn(),d=a+22,f=s.firstCreatePass?Fp(s,d,1,i,null):s.data[d],_=e[d]=function pD(a,i){return a.createText(i)}(e[11],i);v0(s,e,_,f),Qs(f,!1)}function In(a){return Re("",a,""),In}function Re(a,i,e){const s=Me(),d=Gp(s,a,i,e);return d!==Jt&&ha(s,Ir(),d),Re}function Oi(a,i,e,s,d){const f=Me(),_=Pa(f,a,i,e,s,d);return _!==Jt&&ha(f,Ir(),_),Oi}function sw(a,i,e){!function rl(a,i,e,s){const d=yn(),f=Od(2);d.firstUpdatePass&&AM(d,null,f,s);const _=Me();if(e!==Jt&&Ia(_,f,e)){const w=d.data[Ir()];if(RM(w,s)&&!WO(d,f)){let D=s?w.classesWithoutHost:w.stylesWithoutHost;null!==D&&(e=Ve(D,e||"")),ew(d,w,_,e,s)}else!function EM(a,i,e,s,d,f,_,w){d===Jt&&(d=mn);let D=0,k=0,P=0>20;if(il(a)||!a.multi){const Z=new Fl(D,d,F),te=Tw(w,i,d?P:P+W,z);-1===te?(Jb(mp(k,_),f,w),ef(f,a,i.length),i.push(w),k.directiveStart++,k.directiveEnd++,d&&(k.providerIndexes+=1048576),e.push(Z),_.push(Z)):(e[te]=Z,_[te]=Z)}else{const Z=Tw(w,i,P+W,z),te=Tw(w,i,P,P+W),fe=te>=0&&e[te];if(d&&!fe||!d&&!(Z>=0&&e[Z])){Jb(mp(k,_),f,w);const pe=function QM(a,i,e,s,d){const f=new Fl(a,e,F);return f.multi=[],f.index=i,f.componentProviders=0,Mw(f,d,s&&!e),f}(d?a_:Xp,e.length,d,s,D);!d&&fe&&(e[te].providerFactory=pe),ef(f,a,i.length,0),i.push(w),k.directiveStart++,k.directiveEnd++,d&&(k.providerIndexes+=1048576),e.push(pe),_.push(pe)}else ef(f,a,Z>-1?Z:te,Mw(e[d?te:Z],D,!d&&s));!d&&s&&fe&&e[te].componentProviders++}}}function ef(a,i,e,s){const d=il(i),f=function kp(a){return!!a.useClass}(i);if(d||f){const D=(f?Et(i.useClass):i).prototype.ngOnDestroy;if(D){const k=a.destroyHooks||(a.destroyHooks=[]);if(!d&&i.multi){const P=k.indexOf(e);-1===P?k.push(e,[s,D]):k[P+1].push(s,D)}else k.push(e,D)}}}function Mw(a,i,e){return e&&a.componentProviders++,a.multi.push(i)-1}function Tw(a,i,e,s){for(let d=e;d{e.providersResolver=(s,d)=>function AL(a,i,e){const s=yn();if(s.firstCreatePass){const d=cs(a);KM(e,s.data,s.blueprint,d,!0),KM(i,s.data,s.blueprint,d,!1)}}(s,d?d(a):a,i)}}class ll{}class JM{}class kL extends ll{constructor(i,e){super(),this._parent=e,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new cM(this);const s=kr(i);this._bootstrapComponents=Fo(s.bootstrap),this._r3Injector=tO(i,e,[{provide:ll,useValue:this},{provide:ca,useValue:this.componentFactoryResolver}],ii(i),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(i)}get injector(){return this._r3Injector}destroy(){const i=this._r3Injector;!i.destroyed&&i.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(i){this.destroyCbs.push(i)}}class o_ extends JM{constructor(i){super(),this.moduleType=i}create(i){return new kL(this.moduleType,i)}}class EL extends ll{constructor(i,e,s){super(),this.componentFactoryResolver=new cM(this),this.instance=null;const d=new OD([...i,{provide:ll,useValue:this},{provide:ca,useValue:this.componentFactoryResolver}],e||Ev(),s,new Set(["environment"]));this.injector=d,d.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(i){this.injector.onDestroy(i)}}function s_(a,i,e=null){return new EL(a,i,e).injector}let wG=(()=>{class a{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e.id)){const s=Mv(0,e.type),d=s.length>0?s_([s],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e.id,d)}return this.cachedInjectors.get(e.id)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}}return a.\u0275prov=ke({token:a,providedIn:"environment",factory:()=>new a(oe(_s))}),a})();function eT(a){a.getStandaloneInjector=i=>i.get(wG).getOrCreateStandaloneInjector(a)}function tf(a,i,e){const s=Ga()+a,d=Me();return d[s]===Jt?Xl(d,s,e?i.call(e):i()):function Zl(a,i){return a[i]}(d,s)}function su(a,i,e,s){return RL(Me(),Ga(),a,i,e,s)}function Iw(a,i,e,s,d){return OL(Me(),Ga(),a,i,e,s,d)}function Kp(a,i){const e=a[i];return e===Jt?void 0:e}function RL(a,i,e,s,d,f){const _=i+e;return Ia(a,_,d)?Xl(a,_+1,f?s.call(f,d):s(d)):Kp(a,_+1)}function OL(a,i,e,s,d,f,_){const w=i+e;return Hh(a,w,d,f)?Xl(a,w+2,_?s.call(_,d,f):s(d,f)):Kp(a,w+2)}function Yc(a,i){const e=yn();let s;const d=a+22;e.firstCreatePass?(s=function LL(a,i){if(i)for(let e=i.length-1;e>=0;e--){const s=i[e];if(a===s.name)return s}}(i,e.pipeRegistry),e.data[d]=s,s.onDestroy&&(e.destroyHooks||(e.destroyHooks=[])).push(d,s.onDestroy)):s=e.data[d];const f=s.factory||(s.factory=Pi(s.type)),_=Ca(F);try{const w=pp(!1),D=f();return pp(w),function RO(a,i,e,s){e>=a.data.length&&(a.data[e]=null,a.blueprint[e]=null),i[e]=s}(e,Me(),d,D),D}finally{Ca(_)}}function Jp(a,i,e){const s=a+22,d=Me(),f=ds(d,s);return em(d,s)?RL(d,Ga(),i,f.transform,e,f):f.transform(e)}function pa(a,i,e,s){const d=a+22,f=Me(),_=ds(f,d);return em(f,d)?OL(f,Ga(),i,_.transform,e,s,_):_.transform(e,s)}function em(a,i){return a[1].data[i].pure}function sT(a){return i=>{setTimeout(a,void 0,i)}}const ye=class RG extends Ue{constructor(i=!1){super(),this.__isAsync=i}emit(i){super.next(i)}subscribe(i,e,s){let d=i,f=e||(()=>null),_=s;if(i&&"object"==typeof i){var w,D,k;const z=i;d=null===(w=z.next)||void 0===w?void 0:w.bind(z),f=null===(D=z.error)||void 0===D?void 0:D.bind(z),_=null===(k=z.complete)||void 0===k?void 0:k.bind(z)}this.__isAsync&&(f=sT(f),d&&(d=sT(d)),_&&(_=sT(_)));const P=super.subscribe({next:d,error:f,complete:_});return i instanceof xt&&i.add(P),P}};function BL(){return this._results[Zd()]()}class lu{get changes(){return this._changes||(this._changes=new ye)}constructor(i=!1){this._emitDistinctChangesOnly=i,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const e=Zd(),s=lu.prototype;s[e]||(s[e]=BL)}get(i){return this._results[i]}map(i){return this._results.map(i)}filter(i){return this._results.filter(i)}find(i){return this._results.find(i)}reduce(i,e){return this._results.reduce(i,e)}forEach(i){this._results.forEach(i)}some(i){return this._results.some(i)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(i,e){const s=this;s.dirty=!1;const d=function lo(a){return a.flat(Number.POSITIVE_INFINITY)}(i);(this._changesDetected=!function RH(a,i,e){if(a.length!==i.length)return!1;for(let s=0;s{class a{}return a.__NG_ELEMENT_ID__=VL,a})();const lT=hi,u_=class extends lT{constructor(i,e,s){super(),this._declarationLView=i,this._declarationTContainer=e,this.elementRef=s}createEmbeddedView(i,e){const s=this._declarationTContainer.tViews,d=G0(this._declarationLView,s,i,16,null,s.declTNode,null,null,null,null,e||null);d[17]=this._declarationLView[this._declarationTContainer.index];const _=this._declarationLView[19];return null!==_&&(d[19]=_.createEmbeddedView(s)),U0(s,d,i),new ql(d)}};function VL(){return h_(sa(),Me())}function h_(a,i){return 4&a.type?new u_(i,a,Gd(a,i)):null}let Hn=(()=>{class a{}return a.__NG_ELEMENT_ID__=OG,a})();function OG(){return GL(sa(),Me())}const nf=Hn,zL=class extends nf{constructor(i,e,s){super(),this._lContainer=i,this._hostTNode=e,this._hostLView=s}get element(){return Gd(this._hostTNode,this._hostLView)}get injector(){return new qr(this._hostTNode,this._hostLView)}get parentInjector(){const i=XS(this._hostTNode,this._hostLView);if(us(i)){const e=Zb(i,this._hostLView),s=hp(i);return new qr(e[1].data[s+8],e)}return new qr(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(i){const e=HL(this._lContainer);return null!==e&&e[i]||null}get length(){return this._lContainer.length-10}createEmbeddedView(i,e,s){let d,f;"number"==typeof s?d=s:null!=s&&(d=s.index,f=s.injector);const _=i.createEmbeddedView(e||{},f);return this.insert(_,d),_}createComponent(i,e,s,d,f){const _=i&&!function dv(a){return"function"==typeof a}(i);let w;if(_)w=e;else{const z=e||{};w=z.index,s=z.injector,d=z.projectableNodes,f=z.environmentInjector||z.ngModuleRef}const D=_?i:new zh(Rn(i)),k=s||this.parentInjector;if(!f&&null==D.ngModule){const W=(_?k:this.parentInjector).get(_s,null);W&&(f=W)}const P=D.create(k,d,void 0,f);return this.insert(P.hostView,w),P}insert(i,e){const s=i._lView,d=s[1];if(function zS(a){return Eo(a[3])}(s)){const P=this.indexOf(i);if(-1!==P)this.detach(P);else{const z=s[3],W=new zL(z,z[6],z[3]);W.detach(W.indexOf(i))}}const f=this._adjustIndex(e),_=this._lContainer;!function h0(a,i,e,s){const d=10+s,f=e.length;s>0&&(e[d-1][4]=i),s0)s.push(_[w/2]);else{const k=f[w+1],P=i[-D];for(let z=10;z{class a{constructor(e){this.appInits=e,this.resolve=__,this.reject=__,this.initialized=!1,this.done=!1,this.donePromise=new Promise((s,d)=>{this.resolve=s,this.reject=d})}runInitializers(){if(this.initialized)return;const e=[],s=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let d=0;d{f.subscribe({complete:w,error:D})});e.push(_)}}Promise.all(e).then(()=>{s()}).catch(d=>{this.reject(d)}),0===e.length&&s(),this.initialized=!0}}return a.\u0275fac=function(e){return new(e||a)(oe(Br,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const du=new _e("AppId",{providedIn:"root",factory:function xT(){return`${Bw()}${Bw()}${Bw()}`}});function Bw(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const hF=new _e("Platform Initializer"),Vw=new _e("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),CT=new _e("appBootstrapListener"),ki=new _e("AnimationModuleType");let fF=(()=>{class a{log(e){console.log(e)}warn(e){console.warn(e)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"platform"}),a})();const Za=new _e("LocaleId",{providedIn:"root",factory:()=>Gt(Za,Rt.Optional|Rt.SkipSelf)||function pF(){return typeof $localize<"u"&&$localize.locale||Xh}()});class MT{constructor(i,e){this.ngModuleFactory=i,this.componentFactories=e}}let zw=(()=>{class a{compileModuleSync(e){return new o_(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const s=this.compileModuleSync(e),f=Fo(kr(e).declarations).reduce((_,w)=>{const D=Rn(w);return D&&_.push(new zh(D)),_},[]);return new MT(s,f)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const vF=(()=>Promise.resolve(0))();function Uw(a){typeof Zone>"u"?vF.then(()=>{a&&a.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",a)}class Je{constructor({enableLongStackTrace:i=!1,shouldCoalesceEventChangeDetection:e=!1,shouldCoalesceRunChangeDetection:s=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ye(!1),this.onMicrotaskEmpty=new ye(!1),this.onStable=new ye(!1),this.onError=new ye(!1),typeof Zone>"u")throw new Ce(908,!1);Zone.assertZonePatched();const d=this;d._nesting=0,d._outer=d._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(d._inner=d._inner.fork(new Zone.TaskTrackingZoneSpec)),i&&Zone.longStackTraceZoneSpec&&(d._inner=d._inner.fork(Zone.longStackTraceZoneSpec)),d.shouldCoalesceEventChangeDetection=!s&&e,d.shouldCoalesceRunChangeDetection=s,d.lastRequestAnimationFrameId=-1,d.nativeRequestAnimationFrame=function ks(){let a=En.requestAnimationFrame,i=En.cancelAnimationFrame;if(typeof Zone<"u"&&a&&i){const e=a[Zone.__symbol__("OriginalDelegate")];e&&(a=e);const s=i[Zone.__symbol__("OriginalDelegate")];s&&(i=s)}return{nativeRequestAnimationFrame:a,nativeCancelAnimationFrame:i}}().nativeRequestAnimationFrame,function jw(a){const i=()=>{!function LZ(a){a.isCheckStableRunning||-1!==a.lastRequestAnimationFrameId||(a.lastRequestAnimationFrameId=a.nativeRequestAnimationFrame.call(En,()=>{a.fakeTopEventTask||(a.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{a.lastRequestAnimationFrameId=-1,lf(a),a.isCheckStableRunning=!0,kT(a),a.isCheckStableRunning=!1},void 0,()=>{},()=>{})),a.fakeTopEventTask.invoke()}),lf(a))}(a)};a._inner=a._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(e,s,d,f,_,w)=>{try{return $w(a),e.invokeTask(d,f,_,w)}finally{(a.shouldCoalesceEventChangeDetection&&"eventTask"===f.type||a.shouldCoalesceRunChangeDetection)&&i(),Ww(a)}},onInvoke:(e,s,d,f,_,w,D)=>{try{return $w(a),e.invoke(d,f,_,w,D)}finally{a.shouldCoalesceRunChangeDetection&&i(),Ww(a)}},onHasTask:(e,s,d,f)=>{e.hasTask(d,f),s===d&&("microTask"==f.change?(a._hasPendingMicrotasks=f.microTask,lf(a),kT(a)):"macroTask"==f.change&&(a.hasPendingMacrotasks=f.macroTask))},onHandleError:(e,s,d,f)=>(e.handleError(d,f),a.runOutsideAngular(()=>a.onError.emit(f)),!1)})}(d)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!Je.isInAngularZone())throw new Ce(909,!1)}static assertNotInAngularZone(){if(Je.isInAngularZone())throw new Ce(909,!1)}run(i,e,s){return this._inner.run(i,e,s)}runTask(i,e,s,d){const f=this._inner,_=f.scheduleEventTask("NgZoneEvent: "+d,i,AT,__,__);try{return f.runTask(_,e,s)}finally{f.cancelTask(_)}}runGuarded(i,e,s){return this._inner.runGuarded(i,e,s)}runOutsideAngular(i){return this._outer.run(i)}}const AT={};function kT(a){if(0==a._nesting&&!a.hasPendingMicrotasks&&!a.isStable)try{a._nesting++,a.onMicrotaskEmpty.emit(null)}finally{if(a._nesting--,!a.hasPendingMicrotasks)try{a.runOutsideAngular(()=>a.onStable.emit(null))}finally{a.isStable=!0}}}function lf(a){a.hasPendingMicrotasks=!!(a._hasPendingMicrotasks||(a.shouldCoalesceEventChangeDetection||a.shouldCoalesceRunChangeDetection)&&-1!==a.lastRequestAnimationFrameId)}function $w(a){a._nesting++,a.isStable&&(a.isStable=!1,a.onUnstable.emit(null))}function Ww(a){a._nesting--,kT(a)}class Yw{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ye,this.onMicrotaskEmpty=new ye,this.onStable=new ye,this.onError=new ye}run(i,e,s){return i.apply(e,s)}runGuarded(i,e,s){return i.apply(e,s)}runOutsideAngular(i){return i()}runTask(i,e,s,d){return i.apply(e,s)}}const ET=new _e(""),im=new _e("");let IT,Xc=(()=>{class a{constructor(e,s,d){this._ngZone=e,this.registry=s,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,IT||(function tU(a){IT=a}(d),d.addToWindow(s)),this._watchAngularEvents(),e.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{Je.assertNotInAngularZone(),Uw(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Uw(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb(this._didWork)}this._didWork=!1});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(s=>!s.updateCb||!s.updateCb(e)||(clearTimeout(s.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,s,d){let f=-1;s&&s>0&&(f=setTimeout(()=>{this._callbacks=this._callbacks.filter(_=>_.timeoutId!==f),e(this._didWork,this.getPendingTasks())},s)),this._callbacks.push({doneCb:e,timeoutId:f,updateCb:d})}whenStable(e,s,d){if(d&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,s,d),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,s,d){return[]}}return a.\u0275fac=function(e){return new(e||a)(oe(Je),oe(rm),oe(im))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),rm=(()=>{class a{constructor(){this._applications=new Map}registerApplication(e,s){this._applications.set(e,s)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,s=!0){var d,f;return null!==(d=null===(f=IT)||void 0===f?void 0:f.findTestabilityInTree(this,e,s))&&void 0!==d?d:null}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"platform"}),a})(),nc=null;const _F=new _e("AllowMultipleToken"),PT=new _e("PlatformDestroyListeners");class yF{constructor(i,e){this.name=i,this.token=e}}function FT(a,i,e=[]){const s=`Platform: ${i}`,d=new _e(s);return(f=[])=>{let _=NT();if(!_||_.injector.get(_F,!1)){const w=[...e,...f,{provide:d,useValue:!0}];a?a(w):function OT(a){if(nc&&!nc.get(_F,!1))throw new Ce(400,!1);nc=a;const i=a.get(BT);(function qw(a){const i=a.get(hF,null);i&&i.forEach(e=>e())})(a)}(function Es(a=[],i){return Gi.create({name:i,providers:[{provide:D0,useValue:"platform"},{provide:PT,useValue:new Set([()=>nc=null])},...a]})}(w,s))}return function Xw(a){const i=NT();if(!i)throw new Ce(401,!1);return i}()}}function NT(){var a,i;return null!==(a=null===(i=nc)||void 0===i?void 0:i.get(BT))&&void 0!==a?a:null}let BT=(()=>{class a{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,s){const d=function VT(a,i){let e;return e="noop"===a?new Yw:("zone.js"===a?void 0:a)||new Je(i),e}(null==s?void 0:s.ngZone,function Zc(a){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!a||!a.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!a||!a.ngZoneRunCoalescing)||!1}}(s)),f=[{provide:Je,useValue:d}];return d.run(()=>{const _=Gi.create({providers:f,parent:this.injector,name:e.moduleType.name}),w=e.create(_),D=w.injector.get(Hc,null);if(!D)throw new Ce(402,!1);return d.runOutsideAngular(()=>{const k=d.onError.subscribe({next:P=>{D.handleError(P)}});w.onDestroy(()=>{b_(this._modules,w),k.unsubscribe()})}),function Zw(a,i,e){try{const s=e();return Uv(s)?s.catch(d=>{throw i.runOutsideAngular(()=>a.handleError(d)),d}):s}catch(s){throw i.runOutsideAngular(()=>a.handleError(s)),s}}(D,d,()=>{const k=w.injector.get(ma);return k.runInitializers(),k.donePromise.then(()=>(function GM(a){Mr(a,"Expected localeId to be defined"),"string"==typeof a&&(hL=a.toLowerCase().replace(/_/g,"-"))}(w.injector.get(Za,Xh)||Xh),this._moduleDoBootstrap(w),w))})})}bootstrapModule(e,s=[]){const d=Kw({},s);return function nU(a,i,e){const s=new o_(e);return Promise.resolve(s)}(0,0,e).then(f=>this.bootstrapModuleFactory(f,d))}_moduleDoBootstrap(e){const s=e.injector.get(cf);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(d=>s.bootstrap(d));else{if(!e.instance.ngDoBootstrap)throw new Ce(-403,!1);e.instance.ngDoBootstrap(s)}this._modules.push(e)}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Ce(404,!1);this._modules.slice().forEach(s=>s.destroy()),this._destroyListeners.forEach(s=>s());const e=this._injector.get(PT,null);e&&(e.forEach(s=>s()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return a.\u0275fac=function(e){return new(e||a)(oe(Gi))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"platform"}),a})();function Kw(a,i){return Array.isArray(i)?i.reduce(Kw,a):{...a,...i}}let cf=(()=>{class a{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(e,s,d){this._zone=e,this._injector=s,this._exceptionHandler=d,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const f=new Gn(w=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{w.next(this._stable),w.complete()})}),_=new Gn(w=>{let D;this._zone.runOutsideAngular(()=>{D=this._zone.onStable.subscribe(()=>{Je.assertNotInAngularZone(),Uw(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,w.next(!0))})})});const k=this._zone.onUnstable.subscribe(()=>{Je.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{w.next(!1)}))});return()=>{D.unsubscribe(),k.unsubscribe()}});this.isStable=Mi(f,_.pipe(_S()))}bootstrap(e,s){const d=e instanceof A0;if(!this._injector.get(ma).done)throw!d&&function ls(a){const i=Rn(a)||Ar(a)||or(a);return null!==i&&i.standalone}(e),new Ce(405,false);let _;_=d?e:this._injector.get(ca).resolveComponentFactory(e),this.componentTypes.push(_.componentType);const w=function RT(a){return a.isBoundToModule}(_)?void 0:this._injector.get(ll),k=_.create(Gi.NULL,[],s||_.selector,w),P=k.location.nativeElement,z=k.injector.get(ET,null);return null==z||z.registerApplication(P),k.onDestroy(()=>{this.detachView(k.hostView),b_(this.components,k),null==z||z.unregisterApplication(P)}),this._loadComponent(k),k}tick(){if(this._runningTick)throw new Ce(101,!1);try{this._runningTick=!0;for(let e of this._views)e.detectChanges()}catch(e){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(e))}finally{this._runningTick=!1}}attachView(e){const s=e;this._views.push(s),s.attachToAppRef(this)}detachView(e){const s=e;b_(this._views,s),s.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);const s=this._injector.get(CT,[]);s.push(...this._bootstrapListeners),s.forEach(d=>d(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>b_(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new Ce(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return a.\u0275fac=function(e){return new(e||a)(oe(Je),oe(_s),oe(Hc))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function b_(a,i){const e=a.indexOf(i);e>-1&&a.splice(e,1)}let Zt=(()=>{class a{}return a.__NG_ELEMENT_ID__=oU,a})();function oU(a){return function Kc(a,i,e){if(Xg(a)&&!e){const s=za(a.index,i);return new ql(s,s)}return 47&a.type?new ql(i[16],i):null}(sa(),Me(),16==(16&a))}class x_{constructor(){}supports(i){return zp(i)}create(i){return new S_(i)}}const C_=(a,i)=>i;class S_{constructor(i){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=i||C_}forEachItem(i){let e;for(e=this._itHead;null!==e;e=e._next)i(e)}forEachOperation(i){let e=this._itHead,s=this._removalsHead,d=0,f=null;for(;e||s;){const _=!s||e&&e.currentIndex{_=this._trackByFn(d,w),null!==e&&Object.is(e.trackById,_)?(s&&(e=this._verifyReinsertion(e,w,_,d)),Object.is(e.item,w)||this._addIdentityChange(e,w)):(e=this._mismatch(e,w,_,d),s=!0),e=e._next,d++}),this.length=d;return this._truncate(e),this.collection=i,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let i;for(i=this._previousItHead=this._itHead;null!==i;i=i._next)i._nextPrevious=i._next;for(i=this._additionsHead;null!==i;i=i._nextAdded)i.previousIndex=i.currentIndex;for(this._additionsHead=this._additionsTail=null,i=this._movesHead;null!==i;i=i._nextMoved)i.previousIndex=i.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(i,e,s,d){let f;return null===i?f=this._itTail:(f=i._prev,this._remove(i)),null!==(i=null===this._unlinkedRecords?null:this._unlinkedRecords.get(s,null))?(Object.is(i.item,e)||this._addIdentityChange(i,e),this._reinsertAfter(i,f,d)):null!==(i=null===this._linkedRecords?null:this._linkedRecords.get(s,d))?(Object.is(i.item,e)||this._addIdentityChange(i,e),this._moveAfter(i,f,d)):i=this._addAfter(new jT(e,s),f,d),i}_verifyReinsertion(i,e,s,d){let f=null===this._unlinkedRecords?null:this._unlinkedRecords.get(s,null);return null!==f?i=this._reinsertAfter(f,i._prev,d):i.currentIndex!=d&&(i.currentIndex=d,this._addToMoves(i,d)),i}_truncate(i){for(;null!==i;){const e=i._next;this._addToRemovals(this._unlink(i)),i=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(i,e,s){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(i);const d=i._prevRemoved,f=i._nextRemoved;return null===d?this._removalsHead=f:d._nextRemoved=f,null===f?this._removalsTail=d:f._prevRemoved=d,this._insertAfter(i,e,s),this._addToMoves(i,s),i}_moveAfter(i,e,s){return this._unlink(i),this._insertAfter(i,e,s),this._addToMoves(i,s),i}_addAfter(i,e,s){return this._insertAfter(i,e,s),this._additionsTail=null===this._additionsTail?this._additionsHead=i:this._additionsTail._nextAdded=i,i}_insertAfter(i,e,s){const d=null===e?this._itHead:e._next;return i._next=d,i._prev=e,null===d?this._itTail=i:d._prev=i,null===e?this._itHead=i:e._next=i,null===this._linkedRecords&&(this._linkedRecords=new nx),this._linkedRecords.put(i),i.currentIndex=s,i}_remove(i){return this._addToRemovals(this._unlink(i))}_unlink(i){null!==this._linkedRecords&&this._linkedRecords.remove(i);const e=i._prev,s=i._next;return null===e?this._itHead=s:e._next=s,null===s?this._itTail=e:s._prev=e,i}_addToMoves(i,e){return i.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=i:this._movesTail._nextMoved=i),i}_addToRemovals(i){return null===this._unlinkedRecords&&(this._unlinkedRecords=new nx),this._unlinkedRecords.put(i),i.currentIndex=null,i._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=i,i._prevRemoved=null):(i._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=i),i}_addIdentityChange(i,e){return i.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=i:this._identityChangesTail._nextIdentityChange=i,i}}class jT{constructor(i,e){this.item=i,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class tx{constructor(){this._head=null,this._tail=null}add(i){null===this._head?(this._head=this._tail=i,i._nextDup=null,i._prevDup=null):(this._tail._nextDup=i,i._prevDup=this._tail,i._nextDup=null,this._tail=i)}get(i,e){let s;for(s=this._head;null!==s;s=s._nextDup)if((null===e||e<=s.currentIndex)&&Object.is(s.trackById,i))return s;return null}remove(i){const e=i._prevDup,s=i._nextDup;return null===e?this._head=s:e._nextDup=s,null===s?this._tail=e:s._prevDup=e,null===this._head}}class nx{constructor(){this.map=new Map}put(i){const e=i.trackById;let s=this.map.get(e);s||(s=new tx,this.map.set(e,s)),s.add(i)}get(i,e){const d=this.map.get(i);return d?d.get(i,e):null}remove(i){const e=i.trackById;return this.map.get(e).remove(i)&&this.map.delete(e),i}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function CF(a,i,e){const s=a.previousIndex;if(null===s)return s;let d=0;return e&&s{if(e&&e.key===d)this._maybeAddToChanges(e,s),this._appendAfter=e,e=e._next;else{const f=this._getOrCreateRecordForKey(d,s);e=this._insertBeforeOrAppend(e,f)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let s=e;null!==s;s=s._nextRemoved)s===this._mapHead&&(this._mapHead=null),this._records.delete(s.key),s._nextRemoved=s._next,s.previousValue=s.currentValue,s.currentValue=null,s._prev=null,s._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(i,e){if(i){const s=i._prev;return e._next=i,e._prev=s,i._prev=e,s&&(s._next=e),i===this._mapHead&&(this._mapHead=e),this._appendAfter=i,i}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(i,e){if(this._records.has(i)){const d=this._records.get(i);this._maybeAddToChanges(d,e);const f=d._prev,_=d._next;return f&&(f._next=_),_&&(_._prev=f),d._next=null,d._prev=null,d}const s=new om(i);return this._records.set(i,s),s.currentValue=e,this._addToAdditions(s),s}_reset(){if(this.isDirty){let i;for(this._previousMapHead=this._mapHead,i=this._previousMapHead;null!==i;i=i._next)i._nextPrevious=i._next;for(i=this._changesHead;null!==i;i=i._nextChanged)i.previousValue=i.currentValue;for(i=this._additionsHead;null!=i;i=i._nextAdded)i.previousValue=i.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(i,e){Object.is(e,i.currentValue)||(i.previousValue=i.currentValue,i.currentValue=e,this._addToChanges(i))}_addToAdditions(i){null===this._additionsHead?this._additionsHead=this._additionsTail=i:(this._additionsTail._nextAdded=i,this._additionsTail=i)}_addToChanges(i){null===this._changesHead?this._changesHead=this._changesTail=i:(this._changesTail._nextChanged=i,this._changesTail=i)}_forEach(i,e){i instanceof Map?i.forEach(e):Object.keys(i).forEach(s=>e(i[s],s))}}class om{constructor(i){this.key=i,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function SF(){return new Qc([new x_])}let Qc=(()=>{class a{constructor(e){this.factories=e}static create(e,s){if(null!=s){const d=s.factories.slice();e=e.concat(d)}return new a(e)}static extend(e){return{provide:a,useFactory:s=>a.create(e,s||SF()),deps:[[a,new co,new yi]]}}find(e){const s=this.factories.find(d=>d.supports(e));if(null!=s)return s;throw new Ce(901,!1)}}return a.\u0275prov=ke({token:a,providedIn:"root",factory:SF}),a})();function DF(){return new D_([new ga])}let D_=(()=>{class a{constructor(e){this.factories=e}static create(e,s){if(s){const d=s.factories.slice();e=e.concat(d)}return new a(e)}static extend(e){return{provide:a,useFactory:s=>a.create(e,s||DF()),deps:[[a,new co,new yi]]}}find(e){const s=this.factories.find(d=>d.supports(e));if(s)return s;throw new Ce(901,!1)}}return a.\u0275prov=ke({token:a,providedIn:"root",factory:DF}),a})();const Jc=FT(null,"core",[]);let $T=(()=>{class a{constructor(e){}}return a.\u0275fac=function(e){return new(e||a)(oe(cf))},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})();function lm(a){return"boolean"==typeof a?a:null!=a&&"false"!==a}let M_=null;function ac(){return M_}class AF{}const bt=new _e("DocumentToken");let YT=(()=>{class a{historyGo(e){throw new Error("Not implemented")}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(){return function ix(){return oe(T_)}()},providedIn:"platform"}),a})();const rx=new _e("Location Initialized");let T_=(()=>{class a extends YT{constructor(e){super(),this._doc=e,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return ac().getBaseHref(this._doc)}onPopState(e){const s=ac().getGlobalEventTarget(this._doc,"window");return s.addEventListener("popstate",e,!1),()=>s.removeEventListener("popstate",e)}onHashChange(e){const s=ac().getGlobalEventTarget(this._doc,"window");return s.addEventListener("hashchange",e,!1),()=>s.removeEventListener("hashchange",e)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(e){this._location.pathname=e}pushState(e,s,d){qT()?this._history.pushState(e,s,d):this._location.hash=d}replaceState(e,s,d){qT()?this._history.replaceState(e,s,d):this._location.hash=d}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:function(){return function XT(){return new T_(oe(bt))}()},providedIn:"platform"}),a})();function qT(){return!!window.history.pushState}function td(a,i){if(0==a.length)return i;if(0==i.length)return a;let e=0;return a.endsWith("/")&&e++,i.startsWith("/")&&e++,2==e?a+i.substring(1):1==e?a+i:a+"/"+i}function ZT(a){const i=a.match(/#|\?|$/),e=i&&i.index||a.length;return a.slice(0,e-("/"===a[e-1]?1:0))+a.slice(e)}function Fa(a){return a&&"?"!==a[0]?"?"+a:a}let fu=(()=>{class a{historyGo(e){throw new Error("Not implemented")}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(){return Gt(cl)},providedIn:"root"}),a})();const kF=new _e("appBaseHref");let cl=(()=>{class a extends fu{constructor(e,s){var d,f,_;super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=null!==(d=null!==(f=s??this._platformLocation.getBaseHrefFromDOM())&&void 0!==f?f:null===(_=Gt(bt).location)||void 0===_?void 0:_.origin)&&void 0!==d?d:""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return td(this._baseHref,e)}path(e=!1){const s=this._platformLocation.pathname+Fa(this._platformLocation.search),d=this._platformLocation.hash;return d&&e?`${s}${d}`:s}pushState(e,s,d,f){const _=this.prepareExternalUrl(d+Fa(f));this._platformLocation.pushState(e,s,_)}replaceState(e,s,d,f){const _=this.prepareExternalUrl(d+Fa(f));this._platformLocation.replaceState(e,s,_)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){var s,d;null===(s=(d=this._platformLocation).historyGo)||void 0===s||s.call(d,e)}}return a.\u0275fac=function(e){return new(e||a)(oe(YT),oe(kF,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),KT=(()=>{class a extends fu{constructor(e,s){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],null!=s&&(this._baseHref=s)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){let s=this._platformLocation.hash;return null==s&&(s="#"),s.length>0?s.substring(1):s}prepareExternalUrl(e){const s=td(this._baseHref,e);return s.length>0?"#"+s:s}pushState(e,s,d,f){let _=this.prepareExternalUrl(d+Fa(f));0==_.length&&(_=this._platformLocation.pathname),this._platformLocation.pushState(e,s,_)}replaceState(e,s,d,f){let _=this.prepareExternalUrl(d+Fa(f));0==_.length&&(_=this._platformLocation.pathname),this._platformLocation.replaceState(e,s,_)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){var s,d;null===(s=(d=this._platformLocation).historyGo)||void 0===s||s.call(d,e)}}return a.\u0275fac=function(e){return new(e||a)(oe(YT),oe(kF,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),uf=(()=>{class a{constructor(e){this._subject=new ye,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;const s=this._locationStrategy.getBaseHref();this._basePath=function gU(a){if(new RegExp("^(https?:)?//").test(a)){const[,e]=a.split(/\/\/[^\/]+/);return e}return a}(ZT(JT(s))),this._locationStrategy.onPopState(d=>{this._subject.emit({url:this.path(!0),pop:!0,state:d.state,type:d.type})})}ngOnDestroy(){var e;null===(e=this._urlChangeSubscription)||void 0===e||e.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,s=""){return this.path()==this.normalize(e+Fa(s))}normalize(e){return a.stripTrailingSlash(function mU(a,i){return a&&i.startsWith(a)?i.substring(a.length):i}(this._basePath,JT(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,s="",d=null){this._locationStrategy.pushState(d,"",e,s),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Fa(s)),d)}replaceState(e,s="",d=null){this._locationStrategy.replaceState(d,"",e,s),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Fa(s)),d)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){var s,d;null===(s=(d=this._locationStrategy).historyGo)||void 0===s||s.call(d,e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(s=>{this._notifyUrlChangeListeners(s.url,s.state)})),()=>{const s=this._urlChangeListeners.indexOf(e);var d;this._urlChangeListeners.splice(s,1),0===this._urlChangeListeners.length&&(null===(d=this._urlChangeSubscription)||void 0===d||d.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",s){this._urlChangeListeners.forEach(d=>d(e,s))}subscribe(e,s,d){return this._subject.subscribe({next:e,error:s,complete:d})}}return a.normalizeQueryParams=Fa,a.joinWithSlash=td,a.stripTrailingSlash=ZT,a.\u0275fac=function(e){return new(e||a)(oe(fu))},a.\u0275prov=ke({token:a,factory:function(){return function QT(){return new uf(oe(fu))}()},providedIn:"root"}),a})();function JT(a){return a.replace(/\/index.html$/,"")}function hA(a,i){i=encodeURIComponent(i);for(const e of a.split(";")){const s=e.indexOf("="),[d,f]=-1==s?[e,""]:[e.slice(0,s),e.slice(s+1)];if(d.trim()===i)return decodeURIComponent(f)}return null}let Ps=(()=>{class a{constructor(e,s,d,f){this._iterableDiffers=e,this._keyValueDiffers=s,this._ngEl=d,this._renderer=f,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(e){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof e?e.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(e){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof e?e.split(/\s+/):e,this._rawClass&&(zp(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const e=this._iterableDiffer.diff(this._rawClass);e&&this._applyIterableChanges(e)}else if(this._keyValueDiffer){const e=this._keyValueDiffer.diff(this._rawClass);e&&this._applyKeyValueChanges(e)}}_applyKeyValueChanges(e){e.forEachAddedItem(s=>this._toggleClass(s.key,s.currentValue)),e.forEachChangedItem(s=>this._toggleClass(s.key,s.currentValue)),e.forEachRemovedItem(s=>{s.previousValue&&this._toggleClass(s.key,!1)})}_applyIterableChanges(e){e.forEachAddedItem(s=>{if("string"!=typeof s.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${ii(s.item)}`);this._toggleClass(s.item,!0)}),e.forEachRemovedItem(s=>this._toggleClass(s.item,!1))}_applyClasses(e){e&&(Array.isArray(e)||e instanceof Set?e.forEach(s=>this._toggleClass(s,!0)):Object.keys(e).forEach(s=>this._toggleClass(s,!!e[s])))}_removeClasses(e){e&&(Array.isArray(e)||e instanceof Set?e.forEach(s=>this._toggleClass(s,!1)):Object.keys(e).forEach(s=>this._toggleClass(s,!1)))}_toggleClass(e,s){(e=e.trim())&&e.split(/\s+/g).forEach(d=>{s?this._renderer.addClass(this._ngEl.nativeElement,d):this._renderer.removeClass(this._ngEl.nativeElement,d)})}}return a.\u0275fac=function(e){return new(e||a)(F(Qc),F(D_),F(Be),F(Yl))},a.\u0275dir=me({type:a,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),a})();class FU{constructor(i,e,s,d){this.$implicit=i,this.ngForOf=e,this.index=s,this.count=d}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let oi=(()=>{class a{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,s,d){this._viewContainer=e,this._template=s,this._differs=d,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const s=this._viewContainer;e.forEachOperation((d,f,_)=>{if(null==d.previousIndex)s.createEmbeddedView(this._template,new FU(d.item,this._ngForOf,-1,-1),null===_?void 0:_);else if(null==_)s.remove(null===f?void 0:f);else if(null!==f){const w=s.get(f);s.move(w,_),qF(w,d)}});for(let d=0,f=s.length;d{qF(s.get(d.currentIndex),d)})}static ngTemplateContextGuard(e,s){return!0}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(hi),F(Qc))},a.\u0275dir=me({type:a,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),a})();function qF(a,i){a.context.$implicit=i.item}let zt=(()=>{class a{constructor(e,s){this._viewContainer=e,this._context=new ff,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=s}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){XF("ngIfThen",e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){XF("ngIfElse",e),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(e,s){return!0}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(hi))},a.\u0275dir=me({type:a,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),a})();class ff{constructor(){this.$implicit=null,this.ngIf=null}}function XF(a,i){if(i&&!i.createEmbeddedView)throw new Error(`${a} must be a TemplateRef, but received '${ii(i)}'.`)}class fA{constructor(i,e){this._viewContainerRef=i,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(i){i&&!this._created?this.create():!i&&this._created&&this.destroy()}}let id=(()=>{class a{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(e){this._ngSwitch=e,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(e){this._defaultViews.push(e)}_matchCase(e){const s=e==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||s,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),s}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(const s of this._defaultViews)s.enforceState(e)}}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0}),a})(),oc=(()=>{class a{constructor(e,s,d){this.ngSwitch=d,d._addCase(),this._view=new fA(e,s)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(hi),F(id,9))},a.\u0275dir=me({type:a,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0}),a})(),gx=(()=>{class a{constructor(e,s,d){d._addDefault(new fA(e,s))}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(hi),F(id,9))},a.\u0275dir=me({type:a,selectors:[["","ngSwitchDefault",""]],standalone:!0}),a})(),Rs=(()=>{class a{constructor(e,s,d){this._ngEl=e,this._differs=s,this._renderer=d,this._ngStyle=null,this._differ=null}set ngStyle(e){this._ngStyle=e,!this._differ&&e&&(this._differ=this._differs.find(e).create())}ngDoCheck(){if(this._differ){const e=this._differ.diff(this._ngStyle);e&&this._applyChanges(e)}}_setStyle(e,s){const[d,f]=e.split("."),_=-1===d.indexOf("-")?void 0:Xr.DashCase;null!=s?this._renderer.setStyle(this._ngEl.nativeElement,d,f?`${s}${f}`:s,_):this._renderer.removeStyle(this._ngEl.nativeElement,d,_)}_applyChanges(e){e.forEachRemovedItem(s=>this._setStyle(s.key,null)),e.forEachAddedItem(s=>this._setStyle(s.key,s.currentValue)),e.forEachChangedItem(s=>this._setStyle(s.key,s.currentValue))}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(D_),F(Yl))},a.\u0275dir=me({type:a,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"},standalone:!0}),a})(),Wn=(()=>{class a{constructor(e){this._viewContainerRef=e,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(e){if(e.ngTemplateOutlet||e.ngTemplateOutletInjector){const s=this._viewContainerRef;if(this._viewRef&&s.remove(s.indexOf(this._viewRef)),this.ngTemplateOutlet){const{ngTemplateOutlet:d,ngTemplateOutletContext:f,ngTemplateOutletInjector:_}=this;this._viewRef=s.createEmbeddedView(d,f,_?{injector:_}:void 0)}else this._viewRef=null}else this._viewRef&&e.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return a.\u0275fac=function(e){return new(e||a)(F(Hn))},a.\u0275dir=me({type:a,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[$n]}),a})();class lc{createSubscription(i,e){return i.subscribe({next:e,error:s=>{throw s}})}dispose(i){i.unsubscribe()}}class KF{createSubscription(i,e){return i.then(e,s=>{throw s})}dispose(i){}}const vx=new KF,Ja=new lc;let pA=(()=>{class a{constructor(e){this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null,this._ref=e}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(e){return this._obj?e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue:(e&&this._subscribe(e),this._latestValue)}_subscribe(e){this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,s=>this._updateLatestValue(e,s))}_selectStrategy(e){if(Uv(e))return vx;if(LO(e))return Ja;throw function br(a,i){return new Ce(2100,!1)}()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,s){e===this._obj&&(this._latestValue=s,this._ref.markForCheck())}}return a.\u0275fac=function(e){return new(e||a)(F(Zt,16))},a.\u0275pipe=it({name:"async",type:a,pure:!1,standalone:!0}),a})(),wo=(()=>{class a{constructor(e){this.differs=e,this.keyValues=[],this.compareFn=_x}transform(e,s=_x){if(!e||!(e instanceof Map)&&"object"!=typeof e)return null;this.differ||(this.differ=this.differs.find(e).create());const d=this.differ.diff(e),f=s!==this.compareFn;return d&&(this.keyValues=[],d.forEachItem(_=>{this.keyValues.push(function iN(a,i){return{key:a,value:i}}(_.key,_.currentValue))})),(d||f)&&(this.keyValues.sort(s),this.compareFn=s),this.keyValues}}return a.\u0275fac=function(e){return new(e||a)(F(D_,16))},a.\u0275pipe=it({name:"keyvalue",type:a,pure:!1,standalone:!0}),a})();function _x(a,i){const e=a.key,s=i.key;if(e===s)return 0;if(void 0===e)return 1;if(void 0===s)return-1;if(null===e)return 1;if(null===s)return-1;if("string"==typeof e&&"string"==typeof s)return e{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})();const aN="browser";let WU=(()=>{class a{}return a.\u0275prov=ke({token:a,providedIn:"root",factory:()=>new YU(oe(bt),window)}),a})();class YU{constructor(i,e){this.document=i,this.window=e,this.offset=()=>[0,0]}setOffset(i){this.offset=Array.isArray(i)?()=>i:i}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(i){this.supportsScrolling()&&this.window.scrollTo(i[0],i[1])}scrollToAnchor(i){if(!this.supportsScrolling())return;const e=function bA(a,i){const e=a.getElementById(i)||a.getElementsByName(i)[0];if(e)return e;if("function"==typeof a.createTreeWalker&&a.body&&(a.body.createShadowRoot||a.body.attachShadow)){const s=a.createTreeWalker(a.body,NodeFilter.SHOW_ELEMENT);let d=s.currentNode;for(;d;){const f=d.shadowRoot;if(f){const _=f.getElementById(i)||f.querySelector(`[name="${i}"]`);if(_)return _}d=s.nextNode()}}return null}(this.document,i);e&&(this.scrollToElement(e),e.focus())}setHistoryScrollRestoration(i){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=i)}}scrollToElement(i){const e=i.getBoundingClientRect(),s=e.left+this.window.pageXOffset,d=e.top+this.window.pageYOffset,f=this.offset();this.window.scrollTo(s-f[0],d-f[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const i=Cx(this.window.history)||Cx(Object.getPrototypeOf(this.window.history));return!(!i||!i.writable&&!i.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function Cx(a){return Object.getOwnPropertyDescriptor(a,"scrollRestoration")}class gu{}class IA extends AF{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class PA extends IA{static makeCurrent(){!function WT(a){M_||(M_=a)}(new PA)}onAndCancel(i,e,s){return i.addEventListener(e,s,!1),()=>{i.removeEventListener(e,s,!1)}}dispatchEvent(i,e){i.dispatchEvent(e)}remove(i){i.parentNode&&i.parentNode.removeChild(i)}createElement(i,e){return(e=e||this.getDefaultDocument()).createElement(i)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(i){return i.nodeType===Node.ELEMENT_NODE}isShadowRoot(i){return i instanceof DocumentFragment}getGlobalEventTarget(i,e){return"window"===e?window:"document"===e?i:"body"===e?i.body:null}getBaseHref(i){const e=function x6(){return cc=cc||document.querySelector("base"),cc?cc.getAttribute("href"):null}();return null==e?null:function C6(a){Ax=Ax||document.createElement("a"),Ax.setAttribute("href",a);const i=Ax.pathname;return"/"===i.charAt(0)?i:`/${i}`}(e)}resetBaseElement(){cc=null}getUserAgent(){return window.navigator.userAgent}getCookie(i){return hA(document.cookie,i)}}let Ax,cc=null;const RA=new _e("TRANSITION_ID"),D6=[{provide:Br,useFactory:function S6(a,i,e){return()=>{e.get(ma).donePromise.then(()=>{const s=ac(),d=i.querySelectorAll(`style[ng-transition="${a}"]`);for(let f=0;f{class a{build(){return new XMLHttpRequest}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();const kx=new _e("EventManagerPlugins");let ad=(()=>{class a{constructor(e,s){this._zone=s,this._eventNameToPlugin=new Map,e.forEach(d=>d.manager=this),this._plugins=e.slice().reverse()}addEventListener(e,s,d){return this._findPluginFor(s).addEventListener(e,s,d)}addGlobalEventListener(e,s,d){return this._findPluginFor(s).addGlobalEventListener(e,s,d)}getZone(){return this._zone}_findPluginFor(e){const s=this._eventNameToPlugin.get(e);if(s)return s;const d=this._plugins;for(let f=0;f{class a{constructor(){this._stylesSet=new Set}addStyles(e){const s=new Set;e.forEach(d=>{this._stylesSet.has(d)||(this._stylesSet.add(d),s.add(d))}),this.onStylesAdded(s)}onStylesAdded(e){}getAllStyles(){return Array.from(this._stylesSet)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),P_=(()=>{class a extends yN{constructor(e){super(),this._doc=e,this._hostNodes=new Map,this._hostNodes.set(e.head,[])}_addStylesToHost(e,s,d){e.forEach(f=>{const _=this._doc.createElement("style");_.textContent=f,d.push(s.appendChild(_))})}addHost(e){const s=[];this._addStylesToHost(this._stylesSet,e,s),this._hostNodes.set(e,s)}removeHost(e){const s=this._hostNodes.get(e);s&&s.forEach(fm),this._hostNodes.delete(e)}onStylesAdded(e){this._hostNodes.forEach((s,d)=>{this._addStylesToHost(e,d,s)})}ngOnDestroy(){this._hostNodes.forEach(e=>e.forEach(fm))}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();function fm(a){ac().remove(a)}const R_={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},Ex=/%COMP%/g;function FA(a,i){return i.flat(100).map(e=>e.replace(Ex,a))}function CN(a){return i=>{if("__ngUnwrap__"===i)return a;!1===a(i)&&(i.preventDefault(),i.returnValue=!1)}}let fl=(()=>{class a{constructor(e,s,d){this.eventManager=e,this.sharedStylesHost=s,this.appId=d,this.rendererByCompId=new Map,this.defaultRenderer=new dc(e)}createRenderer(e,s){if(!e||!s)return this.defaultRenderer;switch(s.encapsulation){case ko.Emulated:{let d=this.rendererByCompId.get(s.id);return d||(d=new k6(this.eventManager,this.sharedStylesHost,s,this.appId),this.rendererByCompId.set(s.id,d)),d.applyToHost(e),d}case ko.ShadowDom:return new E6(this.eventManager,this.sharedStylesHost,e,s);default:if(!this.rendererByCompId.has(s.id)){const d=FA(s.id,s.styles);this.sharedStylesHost.addStyles(d),this.rendererByCompId.set(s.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return a.\u0275fac=function(e){return new(e||a)(oe(ad),oe(P_),oe(du))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();class dc{constructor(i){this.eventManager=i,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(i,e){return e?document.createElementNS(R_[e]||e,i):document.createElement(i)}createComment(i){return document.createComment(i)}createText(i){return document.createTextNode(i)}appendChild(i,e){(NA(i)?i.content:i).appendChild(e)}insertBefore(i,e,s){i&&(NA(i)?i.content:i).insertBefore(e,s)}removeChild(i,e){i&&i.removeChild(e)}selectRootElement(i,e){let s="string"==typeof i?document.querySelector(i):i;if(!s)throw new Error(`The selector "${i}" did not match any elements`);return e||(s.textContent=""),s}parentNode(i){return i.parentNode}nextSibling(i){return i.nextSibling}setAttribute(i,e,s,d){if(d){e=d+":"+e;const f=R_[d];f?i.setAttributeNS(f,e,s):i.setAttribute(e,s)}else i.setAttribute(e,s)}removeAttribute(i,e,s){if(s){const d=R_[s];d?i.removeAttributeNS(d,e):i.removeAttribute(`${s}:${e}`)}else i.removeAttribute(e)}addClass(i,e){i.classList.add(e)}removeClass(i,e){i.classList.remove(e)}setStyle(i,e,s,d){d&(Xr.DashCase|Xr.Important)?i.style.setProperty(e,s,d&Xr.Important?"important":""):i.style[e]=s}removeStyle(i,e,s){s&Xr.DashCase?i.style.removeProperty(e):i.style[e]=""}setProperty(i,e,s){i[e]=s}setValue(i,e){i.nodeValue=e}listen(i,e,s){return"string"==typeof i?this.eventManager.addGlobalEventListener(i,e,CN(s)):this.eventManager.addEventListener(i,e,CN(s))}}function NA(a){return"TEMPLATE"===a.tagName&&void 0!==a.content}class k6 extends dc{constructor(i,e,s,d){super(i),this.component=s;const f=FA(d+"-"+s.id,s.styles);e.addStyles(f),this.contentAttr=function A6(a){return"_ngcontent-%COMP%".replace(Ex,a)}(d+"-"+s.id),this.hostAttr=function xN(a){return"_nghost-%COMP%".replace(Ex,a)}(d+"-"+s.id)}applyToHost(i){super.setAttribute(i,this.hostAttr,"")}createElement(i,e){const s=super.createElement(i,e);return super.setAttribute(s,this.contentAttr,""),s}}class E6 extends dc{constructor(i,e,s,d){super(i),this.sharedStylesHost=e,this.hostEl=s,this.shadowRoot=s.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const f=FA(d.id,d.styles);for(let _=0;_{class a extends OA{constructor(e){super(e)}supports(e){return!0}addEventListener(e,s,d){return e.addEventListener(s,d,!1),()=>this.removeEventListener(e,s,d)}removeEventListener(e,s,d){return e.removeEventListener(s,d)}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();const BA=["alt","control","meta","shift"],DN={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},Px={alt:a=>a.altKey,control:a=>a.ctrlKey,meta:a=>a.metaKey,shift:a=>a.shiftKey};let vf=(()=>{class a extends OA{constructor(e){super(e)}supports(e){return null!=a.parseEventName(e)}addEventListener(e,s,d){const f=a.parseEventName(s),_=a.eventCallback(f.fullKey,d,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>ac().onAndCancel(e,f.domEventName,_))}static parseEventName(e){const s=e.toLowerCase().split("."),d=s.shift();if(0===s.length||"keydown"!==d&&"keyup"!==d)return null;const f=a._normalizeKey(s.pop());let _="",w=s.indexOf("code");if(w>-1&&(s.splice(w,1),_="code."),BA.forEach(k=>{const P=s.indexOf(k);P>-1&&(s.splice(P,1),_+=k+".")}),_+=f,0!=s.length||0===f.length)return null;const D={};return D.domEventName=d,D.fullKey=_,D}static matchEventFullKeyCode(e,s){let d=DN[e.key]||e.key,f="";return s.indexOf("code.")>-1&&(d=e.code,f="code."),!(null==d||!d)&&(d=d.toLowerCase()," "===d?d="space":"."===d&&(d="dot"),BA.forEach(_=>{_!==d&&(0,Px[_])(e)&&(f+=_+".")}),f+=d,f===s)}static eventCallback(e,s,d){return f=>{a.matchEventFullKeyCode(f,e)&&d.runGuarded(()=>s(f))}}static _normalizeKey(e){return"esc"===e?"escape":e}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();const L6=FT(Jc,"browser",[{provide:Vw,useValue:aN},{provide:hF,useValue:function vu(){PA.makeCurrent()},multi:!0},{provide:bt,useFactory:function O6(){return function JH(a){Gl=a}(document),document},deps:[]}]),TN=new _e(""),AN=[{provide:im,useClass:class M6{addToWindow(i){En.getAngularTestability=(s,d=!0)=>{const f=i.findTestabilityInTree(s,d);if(null==f)throw new Error("Could not find testability for element.");return f},En.getAllAngularTestabilities=()=>i.getAllTestabilities(),En.getAllAngularRootElements=()=>i.getAllRootElements(),En.frameworkStabilizers||(En.frameworkStabilizers=[]),En.frameworkStabilizers.push(s=>{const d=En.getAllAngularTestabilities();let f=d.length,_=!1;const w=function(D){_=_||D,f--,0==f&&s(_)};d.forEach(function(D){D.whenStable(w)})})}findTestabilityInTree(i,e,s){return null==e?null:i.getTestability(e)??(s?ac().isShadowRoot(e)?this.findTestabilityInTree(i,e.host,!0):this.findTestabilityInTree(i,e.parentElement,!0):null)}},deps:[]},{provide:ET,useClass:Xc,deps:[Je,rm,im]},{provide:Xc,useClass:Xc,deps:[Je,rm,im]}],zA=[{provide:D0,useValue:"root"},{provide:Hc,useFactory:function R6(){return new Hc},deps:[]},{provide:kx,useClass:SN,multi:!0,deps:[bt,Je,Vw]},{provide:kx,useClass:vf,multi:!0,deps:[bt]},{provide:fl,useClass:fl,deps:[ad,P_,du]},{provide:Ep,useExisting:fl},{provide:yN,useExisting:P_},{provide:P_,useClass:P_,deps:[bt]},{provide:ad,useClass:ad,deps:[kx,Je]},{provide:gu,useClass:T6,deps:[]},[]];let kN=(()=>{class a{constructor(e){}static withServerTransition(e){return{ngModule:a,providers:[{provide:du,useValue:e.appId},{provide:RA,useExisting:du},D6]}}}return a.\u0275fac=function(e){return new(e||a)(oe(TN,12))},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[...zA,...AN],imports:[zr,$T]}),a})(),EN=(()=>{class a{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:function(e){let s=null;return s=e?new e:function N6(){return new EN(oe(bt))}(),s},providedIn:"root"}),a})();typeof window<"u"&&window;let F_=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(e){let s=null;return s=e?new(e||a):oe(N_),s},providedIn:"root"}),a})(),N_=(()=>{class a extends F_{constructor(e){super(),this._doc=e}sanitize(e,s){if(null==s)return null;switch(e){case Vn.NONE:return s;case Vn.HTML:return $l(s,"HTML")?Oo(s):N2(this._doc,String(s)).toString();case Vn.STYLE:return $l(s,"Style")?Oo(s):s;case Vn.SCRIPT:if($l(s,"Script"))return Oo(s);throw new Error("unsafe value used in a script context");case Vn.URL:return $l(s,"URL")?Oo(s):bv(String(s));case Vn.RESOURCE_URL:if($l(s,"ResourceURL"))return Oo(s);throw new Error(`unsafe value used in a resource URL context (see ${yS})`);default:throw new Error(`Unexpected SecurityContext ${e} (see ${yS})`)}}bypassSecurityTrustHtml(e){return function i8(a){return new Th(a)}(e)}bypassSecurityTrustStyle(e){return function A2(a){return new e8(a)}(e)}bypassSecurityTrustScript(e){return function r8(a){return new t8(a)}(e)}bypassSecurityTrustUrl(e){return function a8(a){return new $a(a)}(e)}bypassSecurityTrustResourceUrl(e){return function b0(a){return new vs(a)}(e)}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:function(e){let s=null;return s=e?new e:function LN(a){return new N_(a.get(bt))}(oe(Gi)),s},providedIn:"root"}),a})();function je(...a){return Wi(a,Vi(a))}function sd(a,i){return Wt(i)?ze(a,i,1):ze(a,1)}function fi(a,i){return Un((e,s)=>{let d=0;e.subscribe(ci(s,f=>a.call(i,f,d++)&&s.next(f)))})}class Lx{}class Fx{}class pl{constructor(i){this.normalizedNames=new Map,this.lazyUpdate=null,i?this.lazyInit="string"==typeof i?()=>{this.headers=new Map,i.split("\n").forEach(e=>{const s=e.indexOf(":");if(s>0){const d=e.slice(0,s),f=d.toLowerCase(),_=e.slice(s+1).trim();this.maybeSetNormalizedName(d,f),this.headers.has(f)?this.headers.get(f).push(_):this.headers.set(f,[_])}})}:()=>{this.headers=new Map,Object.keys(i).forEach(e=>{let s=i[e];const d=e.toLowerCase();"string"==typeof s&&(s=[s]),s.length>0&&(this.headers.set(d,s),this.maybeSetNormalizedName(e,d))})}:this.headers=new Map}has(i){return this.init(),this.headers.has(i.toLowerCase())}get(i){this.init();const e=this.headers.get(i.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(i){return this.init(),this.headers.get(i.toLowerCase())||null}append(i,e){return this.clone({name:i,value:e,op:"a"})}set(i,e){return this.clone({name:i,value:e,op:"s"})}delete(i,e){return this.clone({name:i,value:e,op:"d"})}maybeSetNormalizedName(i,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,i)}init(){this.lazyInit&&(this.lazyInit instanceof pl?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(i=>this.applyUpdate(i)),this.lazyUpdate=null))}copyFrom(i){i.init(),Array.from(i.headers.keys()).forEach(e=>{this.headers.set(e,i.headers.get(e)),this.normalizedNames.set(e,i.normalizedNames.get(e))})}clone(i){const e=new pl;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof pl?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([i]),e}applyUpdate(i){const e=i.name.toLowerCase();switch(i.op){case"a":case"s":let s=i.value;if("string"==typeof s&&(s=[s]),0===s.length)return;this.maybeSetNormalizedName(i.name,e);const d=("a"===i.op?this.headers.get(e):void 0)||[];d.push(...s),this.headers.set(e,d);break;case"d":const f=i.value;if(f){let _=this.headers.get(e);if(!_)return;_=_.filter(w=>-1===f.indexOf(w)),0===_.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,_)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(i){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>i(this.normalizedNames.get(e),this.headers.get(e)))}}class q6{encodeKey(i){return NN(i)}encodeValue(i){return NN(i)}decodeKey(i){return decodeURIComponent(i)}decodeValue(i){return decodeURIComponent(i)}}const X6=/%(\d[a-f0-9])/gi,Z6={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function NN(a){return encodeURIComponent(a).replace(X6,(i,e)=>{var s;return null!==(s=Z6[e])&&void 0!==s?s:i})}function _f(a){return`${a}`}class ld{constructor(i={}){if(this.updates=null,this.cloneFrom=null,this.encoder=i.encoder||new q6,i.fromString){if(i.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function FN(a,i){const e=new Map;return a.length>0&&a.replace(/^\?/,"").split("&").forEach(d=>{const f=d.indexOf("="),[_,w]=-1==f?[i.decodeKey(d),""]:[i.decodeKey(d.slice(0,f)),i.decodeValue(d.slice(f+1))],D=e.get(_)||[];D.push(w),e.set(_,D)}),e}(i.fromString,this.encoder)}else i.fromObject?(this.map=new Map,Object.keys(i.fromObject).forEach(e=>{const s=i.fromObject[e],d=Array.isArray(s)?s.map(_f):[_f(s)];this.map.set(e,d)})):this.map=null}has(i){return this.init(),this.map.has(i)}get(i){this.init();const e=this.map.get(i);return e?e[0]:null}getAll(i){return this.init(),this.map.get(i)||null}keys(){return this.init(),Array.from(this.map.keys())}append(i,e){return this.clone({param:i,value:e,op:"a"})}appendAll(i){const e=[];return Object.keys(i).forEach(s=>{const d=i[s];Array.isArray(d)?d.forEach(f=>{e.push({param:s,value:f,op:"a"})}):e.push({param:s,value:d,op:"a"})}),this.clone(e)}set(i,e){return this.clone({param:i,value:e,op:"s"})}delete(i,e){return this.clone({param:i,value:e,op:"d"})}toString(){return this.init(),this.keys().map(i=>{const e=this.encoder.encodeKey(i);return this.map.get(i).map(s=>e+"="+this.encoder.encodeValue(s)).join("&")}).filter(i=>""!==i).join("&")}clone(i){const e=new ld({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(i),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(i=>this.map.set(i,this.cloneFrom.map.get(i))),this.updates.forEach(i=>{switch(i.op){case"a":case"s":const e=("a"===i.op?this.map.get(i.param):void 0)||[];e.push(_f(i.value)),this.map.set(i.param,e);break;case"d":if(void 0===i.value){this.map.delete(i.param);break}{let s=this.map.get(i.param)||[];const d=s.indexOf(_f(i.value));-1!==d&&s.splice(d,1),s.length>0?this.map.set(i.param,s):this.map.delete(i.param)}}}),this.cloneFrom=this.updates=null)}}class BN{constructor(){this.map=new Map}set(i,e){return this.map.set(i,e),this}get(i){return this.map.has(i)||this.map.set(i,i.defaultValue()),this.map.get(i)}delete(i){return this.map.delete(i),this}has(i){return this.map.has(i)}keys(){return this.map.keys()}}function pm(a){return typeof ArrayBuffer<"u"&&a instanceof ArrayBuffer}function VN(a){return typeof Blob<"u"&&a instanceof Blob}function WA(a){return typeof FormData<"u"&&a instanceof FormData}class mm{constructor(i,e,s,d){let f;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=i.toUpperCase(),function Q6(a){switch(a){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||d?(this.body=void 0!==s?s:null,f=d):f=s,f&&(this.reportProgress=!!f.reportProgress,this.withCredentials=!!f.withCredentials,f.responseType&&(this.responseType=f.responseType),f.headers&&(this.headers=f.headers),f.context&&(this.context=f.context),f.params&&(this.params=f.params)),this.headers||(this.headers=new pl),this.context||(this.context=new BN),this.params){const _=this.params.toString();if(0===_.length)this.urlWithParams=e;else{const w=e.indexOf("?");this.urlWithParams=e+(-1===w?"?":wW.set(Z,i.setHeaders[Z]),k)),i.setParams&&(P=Object.keys(i.setParams).reduce((W,Z)=>W.set(Z,i.setParams[Z]),P)),new mm(s,d,_,{params:P,headers:k,context:z,reportProgress:D,responseType:f,withCredentials:w})}}var Ki=(()=>((Ki=Ki||{})[Ki.Sent=0]="Sent",Ki[Ki.UploadProgress=1]="UploadProgress",Ki[Ki.ResponseHeader=2]="ResponseHeader",Ki[Ki.DownloadProgress=3]="DownloadProgress",Ki[Ki.Response=4]="Response",Ki[Ki.User=5]="User",Ki))();class YA{constructor(i,e=200,s="OK"){this.headers=i.headers||new pl,this.status=void 0!==i.status?i.status:e,this.statusText=i.statusText||s,this.url=i.url||null,this.ok=this.status>=200&&this.status<300}}class _u extends YA{constructor(i={}){super(i),this.type=Ki.ResponseHeader}clone(i={}){return new _u({headers:i.headers||this.headers,status:void 0!==i.status?i.status:this.status,statusText:i.statusText||this.statusText,url:i.url||this.url||void 0})}}class Nx extends YA{constructor(i={}){super(i),this.type=Ki.Response,this.body=void 0!==i.body?i.body:null}clone(i={}){return new Nx({body:void 0!==i.body?i.body:this.body,headers:i.headers||this.headers,status:void 0!==i.status?i.status:this.status,statusText:i.statusText||this.statusText,url:i.url||this.url||void 0})}}class zN extends YA{constructor(i){super(i,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${i.url||"(unknown url)"}`:`Http failure response for ${i.url||"(unknown url)"}: ${i.status} ${i.statusText}`,this.error=i.error||null}}function qA(a,i){return{body:i,headers:a.headers,context:a.context,observe:a.observe,params:a.params,reportProgress:a.reportProgress,responseType:a.responseType,withCredentials:a.withCredentials}}let cd=(()=>{class a{constructor(e){this.handler=e}request(e,s,d={}){let f;if(e instanceof mm)f=e;else{let D,k;D=d.headers instanceof pl?d.headers:new pl(d.headers),d.params&&(k=d.params instanceof ld?d.params:new ld({fromObject:d.params})),f=new mm(e,s,void 0!==d.body?d.body:null,{headers:D,context:d.context,params:k,reportProgress:d.reportProgress,responseType:d.responseType||"json",withCredentials:d.withCredentials})}const _=je(f).pipe(sd(D=>this.handler.handle(D)));if(e instanceof mm||"events"===d.observe)return _;const w=_.pipe(fi(D=>D instanceof Nx));switch(d.observe||"body"){case"body":switch(f.responseType){case"arraybuffer":return w.pipe(gt(D=>{if(null!==D.body&&!(D.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return D.body}));case"blob":return w.pipe(gt(D=>{if(null!==D.body&&!(D.body instanceof Blob))throw new Error("Response is not a Blob.");return D.body}));case"text":return w.pipe(gt(D=>{if(null!==D.body&&"string"!=typeof D.body)throw new Error("Response is not a string.");return D.body}));default:return w.pipe(gt(D=>D.body))}case"response":return w;default:throw new Error(`Unreachable: unhandled observe type ${d.observe}}`)}}delete(e,s={}){return this.request("DELETE",e,s)}get(e,s={}){return this.request("GET",e,s)}head(e,s={}){return this.request("HEAD",e,s)}jsonp(e,s){return this.request("JSONP",e,{params:(new ld).append(s,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,s={}){return this.request("OPTIONS",e,s)}patch(e,s,d={}){return this.request("PATCH",e,qA(d,s))}post(e,s,d={}){return this.request("POST",e,qA(d,s))}put(e,s,d={}){return this.request("PUT",e,qA(d,s))}}return a.\u0275fac=function(e){return new(e||a)(oe(Lx))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();function HN(a,i){return i(a)}function B_(a,i){return(e,s)=>i.intercept(e,{handle:d=>a(d,s)})}const tj=new _e("HTTP_INTERCEPTORS"),V_=new _e("HTTP_INTERCEPTOR_FNS");function nj(){let a=null;return(i,e)=>{var s;return null===a&&(a=(null!==(s=Gt(tj,{optional:!0}))&&void 0!==s?s:[]).reduceRight(B_,HN)),a(i,e)}}let GN=(()=>{class a extends Lx{constructor(e,s){super(),this.backend=e,this.injector=s,this.chain=null}handle(e){if(null===this.chain){const s=Array.from(new Set(this.injector.get(V_)));this.chain=s.reduceRight((d,f)=>function ej(a,i,e){return(s,d)=>e.runInContext(()=>i(s,f=>a(f,d)))}(d,f,this.injector),HN)}return this.chain(e,s=>this.backend.handle(s))}}return a.\u0275fac=function(e){return new(e||a)(oe(Fx),oe(_s))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();const XA=/^\)\]\}',?\n/;let ZA=(()=>{class a{constructor(e){this.xhrFactory=e}handle(e){if("JSONP"===e.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new Gn(s=>{const d=this.xhrFactory.build();if(d.open(e.method,e.urlWithParams),e.withCredentials&&(d.withCredentials=!0),e.headers.forEach((Z,te)=>d.setRequestHeader(Z,te.join(","))),e.headers.has("Accept")||d.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){const Z=e.detectContentTypeHeader();null!==Z&&d.setRequestHeader("Content-Type",Z)}if(e.responseType){const Z=e.responseType.toLowerCase();d.responseType="json"!==Z?Z:"text"}const f=e.serializeBody();let _=null;const w=()=>{if(null!==_)return _;const Z=d.statusText||"OK",te=new pl(d.getAllResponseHeaders()),re=function IK(a){return"responseURL"in a&&a.responseURL?a.responseURL:/^X-Request-URL:/m.test(a.getAllResponseHeaders())?a.getResponseHeader("X-Request-URL"):null}(d)||e.url;return _=new _u({headers:te,status:d.status,statusText:Z,url:re}),_},D=()=>{let{headers:Z,status:te,statusText:re,url:fe}=w(),pe=null;204!==te&&(pe=typeof d.response>"u"?d.responseText:d.response),0===te&&(te=pe?200:0);let Te=te>=200&&te<300;if("json"===e.responseType&&"string"==typeof pe){const ue=pe;pe=pe.replace(XA,"");try{pe=""!==pe?JSON.parse(pe):null}catch(Fe){pe=ue,Te&&(Te=!1,pe={error:Fe,text:pe})}}Te?(s.next(new Nx({body:pe,headers:Z,status:te,statusText:re,url:fe||void 0})),s.complete()):s.error(new zN({error:pe,headers:Z,status:te,statusText:re,url:fe||void 0}))},k=Z=>{const{url:te}=w(),re=new zN({error:Z,status:d.status||0,statusText:d.statusText||"Unknown Error",url:te||void 0});s.error(re)};let P=!1;const z=Z=>{P||(s.next(w()),P=!0);let te={type:Ki.DownloadProgress,loaded:Z.loaded};Z.lengthComputable&&(te.total=Z.total),"text"===e.responseType&&d.responseText&&(te.partialText=d.responseText),s.next(te)},W=Z=>{let te={type:Ki.UploadProgress,loaded:Z.loaded};Z.lengthComputable&&(te.total=Z.total),s.next(te)};return d.addEventListener("load",D),d.addEventListener("error",k),d.addEventListener("timeout",k),d.addEventListener("abort",k),e.reportProgress&&(d.addEventListener("progress",z),null!==f&&d.upload&&d.upload.addEventListener("progress",W)),d.send(f),s.next({type:Ki.Sent}),()=>{d.removeEventListener("error",k),d.removeEventListener("abort",k),d.removeEventListener("load",D),d.removeEventListener("timeout",k),e.reportProgress&&(d.removeEventListener("progress",z),null!==f&&d.upload&&d.upload.removeEventListener("progress",W)),d.readyState!==d.DONE&&d.abort()}})}}return a.\u0275fac=function(e){return new(e||a)(oe(gu))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();const KA=new _e("XSRF_ENABLED"),Bx="XSRF-TOKEN",jN=new _e("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>Bx}),$N="X-XSRF-TOKEN",QA=new _e("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>$N});class WN{}let gm=(()=>{class a{constructor(e,s,d){this.doc=e,this.platform=s,this.cookieName=d,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=hA(e,this.cookieName),this.lastCookieString=e),this.lastToken}}return a.\u0275fac=function(e){return new(e||a)(oe(bt),oe(Vw),oe(jN))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();function YN(a,i){const e=a.url.toLowerCase();if(!Gt(KA)||"GET"===a.method||"HEAD"===a.method||e.startsWith("http://")||e.startsWith("https://"))return i(a);const s=Gt(WN).getToken(),d=Gt(QA);return null!=s&&!a.headers.has(d)&&(a=a.clone({headers:a.headers.set(d,s)})),i(a)}var fr=(()=>((fr=fr||{})[fr.Interceptors=0]="Interceptors",fr[fr.LegacyInterceptors=1]="LegacyInterceptors",fr[fr.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",fr[fr.NoXsrfProtection=3]="NoXsrfProtection",fr[fr.JsonpSupport=4]="JsonpSupport",fr[fr.RequestsMadeViaParent=5]="RequestsMadeViaParent",fr))();function yu(a,i){return{\u0275kind:a,\u0275providers:i}}function qN(...a){const i=[cd,ZA,GN,{provide:Lx,useExisting:GN},{provide:Fx,useExisting:ZA},{provide:V_,useValue:YN,multi:!0},{provide:KA,useValue:!0},{provide:WN,useClass:gm}];for(const e of a)i.push(...e.\u0275providers);return function PD(a){return{\u0275providers:a}}(i)}const XN=new _e("LEGACY_INTERCEPTOR_FN");function lj({cookieName:a,headerName:i}){const e=[];return void 0!==a&&e.push({provide:jN,useValue:a}),void 0!==i&&e.push({provide:QA,useValue:i}),yu(fr.CustomXsrfConfiguration,e)}let QN=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[qN(yu(fr.LegacyInterceptors,[{provide:XN,useFactory:nj},{provide:V_,useExisting:XN,multi:!0}]),lj({cookieName:Bx,headerName:$N}))]}),a})();class Qr extends Ue{constructor(i){super(),this._value=i}get value(){return this.getValue()}_subscribe(i){const e=super._subscribe(i);return!e.closed&&i.next(this._value),e}getValue(){const{hasError:i,thrownError:e,_value:s}=this;if(i)throw e;return this._throwIfClosed(),s}next(i){super.next(this._value=i)}}const vm=is(a=>function(){a(this),this.name="EmptyError",this.message="no elements in sequence"}),{isArray:uj}=Array,{getPrototypeOf:hj,prototype:bu,keys:yf}=Object;function JA(a){if(1===a.length){const i=a[0];if(uj(i))return{args:i,keys:null};if(function fj(a){return a&&"object"==typeof a&&hj(a)===bu}(i)){const e=yf(i);return{args:e.map(s=>i[s]),keys:e}}}return{args:a,keys:null}}const{isArray:pj}=Array;function Vx(a){return gt(i=>function Os(a,i){return pj(i)?a(...i):a(i)}(a,i))}function ek(a,i){return a.reduce((e,s,d)=>(e[s]=i[d],e),{})}function wu(...a){const i=Vi(a),e=th(a),{args:s,keys:d}=JA(a);if(0===s.length)return Wi([],i);const f=new Gn(function mj(a,i,e=Ku){return s=>{eB(i,()=>{const{length:d}=a,f=new Array(d);let _=d,w=d;for(let D=0;D{const k=Wi(a[D],i);let P=!1;k.subscribe(ci(s,z=>{f[D]=z,P||(P=!0,w--),w||s.next(e(f.slice()))},()=>{--_||s.complete()}))},s)},s)}}(s,i,d?_=>ek(d,_):Ku));return e?f.pipe(Vx(e)):f}function eB(a,i,e){a?To(e,a,i):i()}function Uo(...a){return function gj(){return Md(1)}()(Wi(a,Vi(a)))}function _m(a){return new Gn(i=>{Dr(a()).subscribe(i)})}function bf(a,i){const e=Wt(a)?a:()=>a,s=d=>d.error(e());return new Gn(i?d=>i.schedule(s,0,d):s)}function tk(){return Un((a,i)=>{let e=null;a._refCount++;const s=ci(i,void 0,void 0,void 0,()=>{if(!a||a._refCount<=0||0<--a._refCount)return void(e=null);const d=a._connection,f=e;e=null,d&&(!f||d===f)&&d.unsubscribe(),i.unsubscribe()});a.subscribe(s),s.closed||(e=a.connect())})}class nk extends Gn{constructor(i,e){super(),this.source=i,this.subjectFactory=e,this._subject=null,this._refCount=0,this._connection=null,lR(i)&&(this.lift=i.lift)}_subscribe(i){return this.getSubject().subscribe(i)}getSubject(){const i=this._subject;return(!i||i.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:i}=this;this._subject=this._connection=null,null==i||i.unsubscribe()}connect(){let i=this._connection;if(!i){i=this._connection=new xt;const e=this.getSubject();i.add(this.source.subscribe(ci(e,void 0,()=>{this._teardown(),e.complete()},s=>{this._teardown(),e.error(s)},()=>this._teardown()))),i.closed&&(this._connection=null,i=xt.EMPTY)}return i}refCount(){return tk()(this)}}function Qi(a,i){return Un((e,s)=>{let d=null,f=0,_=!1;const w=()=>_&&!d&&s.complete();e.subscribe(ci(s,D=>{null==d||d.unsubscribe();let k=0;const P=f++;Dr(a(D,P)).subscribe(d=ci(s,z=>s.next(i?i(D,z,P,k++):z),()=>{d=null,w()}))},()=>{_=!0,w()}))})}function Pn(a){return a<=0?()=>ni:Un((i,e)=>{let s=0;i.subscribe(ci(e,d=>{++s<=a&&(e.next(d),a<=s&&e.complete())}))})}function Ji(...a){const i=Vi(a);return Un((e,s)=>{(i?Uo(a,e,i):Uo(a,e)).subscribe(s)})}function ym(a){return Un((i,e)=>{let s=!1;i.subscribe(ci(e,d=>{s=!0,e.next(d)},()=>{s||e.next(a),e.complete()}))})}function tB(a=ik){return Un((i,e)=>{let s=!1;i.subscribe(ci(e,d=>{s=!0,e.next(d)},()=>s?e.complete():e.error(a())))})}function ik(){return new vm}function Ls(a,i){const e=arguments.length>=2;return s=>s.pipe(a?fi((d,f)=>a(d,f,s)):Ku,Pn(1),e?ym(i):tB(()=>new vm))}function Fi(a,i,e){const s=Wt(a)||i||e?{next:a,error:i,complete:e}:a;return s?Un((d,f)=>{var _;null===(_=s.subscribe)||void 0===_||_.call(s);let w=!0;d.subscribe(ci(f,D=>{var k;null===(k=s.next)||void 0===k||k.call(s,D),f.next(D)},()=>{var D;w=!1,null===(D=s.complete)||void 0===D||D.call(s),f.complete()},D=>{var k;w=!1,null===(k=s.error)||void 0===k||k.call(s,D),f.error(D)},()=>{var D,k;w&&(null===(D=s.unsubscribe)||void 0===D||D.call(s)),null===(k=s.finalize)||void 0===k||k.call(s)}))}):Ku}function eo(a){return Un((i,e)=>{let f,s=null,d=!1;s=i.subscribe(ci(e,void 0,void 0,_=>{f=Dr(a(_,eo(a)(i))),s?(s.unsubscribe(),s=null,f.subscribe(e)):d=!0})),d&&(s.unsubscribe(),s=null,f.subscribe(e))})}function wf(a,i,e,s,d){return(f,_)=>{let w=e,D=i,k=0;f.subscribe(ci(_,P=>{const z=k++;D=w?a(D,P,z):(w=!0,P),s&&_.next(D)},d&&(()=>{w&&_.next(D),_.complete()})))}}function zx(a,i){return Un(wf(a,i,arguments.length>=2,!0))}function Hx(a){return a<=0?()=>ni:Un((i,e)=>{let s=[];i.subscribe(ci(e,d=>{s.push(d),a{for(const d of s)e.next(d);e.complete()},void 0,()=>{s=null}))})}function rk(a,i){const e=arguments.length>=2;return s=>s.pipe(a?fi((d,f)=>a(d,f,s)):Ku,Hx(1),e?ym(i):tB(()=>new vm))}function nB(a,i=!1){return Un((e,s)=>{let d=0;e.subscribe(ci(s,f=>{const _=a(f,d++);(_||i)&&s.next(f),!_&&s.complete()}))})}function iB(a){return gt(()=>a)}function z_(a){return Un((i,e)=>{try{i.subscribe(e)}finally{e.add(a)}})}const _n="primary",bm=Symbol("RouteTitle");class vj{constructor(i){this.params=i||{}}has(i){return Object.prototype.hasOwnProperty.call(this.params,i)}get(i){if(this.has(i)){const e=this.params[i];return Array.isArray(e)?e[0]:e}return null}getAll(i){if(this.has(i)){const e=this.params[i];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function H_(a){return new vj(a)}function _j(a,i,e){const s=e.path.split("/");if(s.length>a.length||"full"===e.pathMatch&&(i.hasChildren()||s.lengths[f]===d)}return a===i}function oB(a){return Array.prototype.concat.apply([],a)}function ak(a){return a.length>0?a[a.length-1]:null}function va(a,i){for(const e in a)a.hasOwnProperty(e)&&i(a[e],e)}function xu(a){return tw(a)?a:Uv(a)?Wi(Promise.resolve(a)):je(a)}const Gx=!1,bj={exact:function lB(a,i,e){if(!Cf(a.segments,i.segments)||!jx(a.segments,i.segments,e)||a.numberOfChildren!==i.numberOfChildren)return!1;for(const s in i.children)if(!a.children[s]||!lB(a.children[s],i.children[s],e))return!1;return!0},subset:cB},sB={exact:function Ux(a,i){return ml(a,i)},subset:function wj(a,i){return Object.keys(i).length<=Object.keys(a).length&&Object.keys(i).every(e=>aB(a[e],i[e]))},ignored:()=>!0};function wm(a,i,e){return bj[e.paths](a.root,i.root,e.matrixParams)&&sB[e.queryParams](a.queryParams,i.queryParams)&&!("exact"===e.fragment&&a.fragment!==i.fragment)}function cB(a,i,e){return dB(a,i,i.segments,e)}function dB(a,i,e,s){if(a.segments.length>e.length){const d=a.segments.slice(0,e.length);return!(!Cf(d,e)||i.hasChildren()||!jx(d,e,s))}if(a.segments.length===e.length){if(!Cf(a.segments,e)||!jx(a.segments,e,s))return!1;for(const d in i.children)if(!a.children[d]||!cB(a.children[d],i.children[d],s))return!1;return!0}{const d=e.slice(0,a.segments.length),f=e.slice(a.segments.length);return!!(Cf(a.segments,d)&&jx(a.segments,d,s)&&a.children[_n])&&dB(a.children[_n],i,f,s)}}function jx(a,i,e){return i.every((s,d)=>sB[e](a[d].parameters,s.parameters))}class xf{constructor(i=new wn([],{}),e={},s=null){this.root=i,this.queryParams=e,this.fragment=s}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=H_(this.queryParams)),this._queryParamMap}toString(){return Sj.serialize(this)}}class wn{constructor(i,e){this.segments=i,this.children=e,this.parent=null,va(e,(s,d)=>s.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return U_(this)}}class G_{constructor(i,e){this.path=i,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=H_(this.parameters)),this._parameterMap}toString(){return Wx(this)}}function Cf(a,i){return a.length===i.length&&a.every((e,s)=>e.path===i[s].path)}let xm=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(){return new ok},providedIn:"root"}),a})();class ok{parse(i){const e=new Mj(i);return new xf(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(i){const e=`/${Sf(i.root,!0)}`,s=function Yx(a){const i=Object.keys(a).map(e=>{const s=a[e];return Array.isArray(s)?s.map(d=>`${Cm(e)}=${Cm(d)}`).join("&"):`${Cm(e)}=${Cm(s)}`}).filter(e=>!!e);return i.length?`?${i.join("&")}`:""}(i.queryParams);return`${e}${s}${"string"==typeof i.fragment?`#${function hB(a){return encodeURI(a)}(i.fragment)}`:""}`}}const Sj=new ok;function U_(a){return a.segments.map(i=>Wx(i)).join("/")}function Sf(a,i){if(!a.hasChildren())return U_(a);if(i){const e=a.children[_n]?Sf(a.children[_n],!1):"",s=[];return va(a.children,(d,f)=>{f!==_n&&s.push(`${f}:${Sf(d,!1)}`)}),s.length>0?`${e}(${s.join("//")})`:e}{const e=function Cj(a,i){let e=[];return va(a.children,(s,d)=>{d===_n&&(e=e.concat(i(s,d)))}),va(a.children,(s,d)=>{d!==_n&&(e=e.concat(i(s,d)))}),e}(a,(s,d)=>d===_n?[Sf(a.children[_n],!1)]:[`${d}:${Sf(s,!1)}`]);return 1===Object.keys(a.children).length&&null!=a.children[_n]?`${U_(a)}/${e[0]}`:`${U_(a)}/(${e.join("//")})`}}function uB(a){return encodeURIComponent(a).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Cm(a){return uB(a).replace(/%3B/gi,";")}function Sm(a){return uB(a).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Cu(a){return decodeURIComponent(a)}function $x(a){return Cu(a.replace(/\+/g,"%20"))}function Wx(a){return`${Sm(a.path)}${function Dj(a){return Object.keys(a).map(i=>`;${Sm(i)}=${Sm(a[i])}`).join("")}(a.parameters)}`}const fB=/^[^\/()?;=#]+/;function Dm(a){const i=a.match(fB);return i?i[0]:""}const qx=/^[^=?&#]+/,Xx=/^[^&#]+/;class Mj{constructor(i){this.url=i,this.remaining=i}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new wn([],{}):new wn([],this.parseChildren())}parseQueryParams(){const i={};if(this.consumeOptional("?"))do{this.parseQueryParam(i)}while(this.consumeOptional("&"));return i}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const i=[];for(this.peekStartsWith("(")||i.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),i.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let s={};return this.peekStartsWith("(")&&(s=this.parseParens(!1)),(i.length>0||Object.keys(e).length>0)&&(s[_n]=new wn(i,e)),s}parseSegment(){const i=Dm(this.remaining);if(""===i&&this.peekStartsWith(";"))throw new Ce(4009,Gx);return this.capture(i),new G_(Cu(i),this.parseMatrixParams())}parseMatrixParams(){const i={};for(;this.consumeOptional(";");)this.parseParam(i);return i}parseParam(i){const e=Dm(this.remaining);if(!e)return;this.capture(e);let s="";if(this.consumeOptional("=")){const d=Dm(this.remaining);d&&(s=d,this.capture(s))}i[Cu(e)]=Cu(s)}parseQueryParam(i){const e=function pB(a){const i=a.match(qx);return i?i[0]:""}(this.remaining);if(!e)return;this.capture(e);let s="";if(this.consumeOptional("=")){const _=function mB(a){const i=a.match(Xx);return i?i[0]:""}(this.remaining);_&&(s=_,this.capture(s))}const d=$x(e),f=$x(s);if(i.hasOwnProperty(d)){let _=i[d];Array.isArray(_)||(_=[_],i[d]=_),_.push(f)}else i[d]=f}parseParens(i){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const s=Dm(this.remaining),d=this.remaining[s.length];if("/"!==d&&")"!==d&&";"!==d)throw new Ce(4010,Gx);let f;s.indexOf(":")>-1?(f=s.slice(0,s.indexOf(":")),this.capture(f),this.capture(":")):i&&(f=_n);const _=this.parseChildren();e[f]=1===Object.keys(_).length?_[_n]:new wn([],_),this.consumeOptional("//")}return e}peekStartsWith(i){return this.remaining.startsWith(i)}consumeOptional(i){return!!this.peekStartsWith(i)&&(this.remaining=this.remaining.substring(i.length),!0)}capture(i){if(!this.consumeOptional(i))throw new Ce(4011,Gx)}}function Zx(a){return a.segments.length>0?new wn([],{[_n]:a}):a}function j_(a){const i={};for(const s of Object.keys(a.children)){const f=j_(a.children[s]);(f.segments.length>0||f.hasChildren())&&(i[s]=f)}return function gB(a){if(1===a.numberOfChildren&&a.children[_n]){const i=a.children[_n];return new wn(a.segments.concat(i.segments),i.children)}return a}(new wn(a.segments,i))}function Jr(a){return a instanceof xf}function vB(a,i,e,s,d){var f;if(0===e.length)return dd(i.root,i.root,i.root,s,d);const _=function yB(a){if("string"==typeof a[0]&&1===a.length&&"/"===a[0])return new Qx(!0,0,a);let i=0,e=!1;const s=a.reduce((d,f,_)=>{if("object"==typeof f&&null!=f){if(f.outlets){const w={};return va(f.outlets,(D,k)=>{w[k]="string"==typeof D?D.split("/"):D}),[...d,{outlets:w}]}if(f.segmentPath)return[...d,f.segmentPath]}return"string"!=typeof f?[...d,f]:0===_?(f.split("/").forEach((w,D)=>{0==D&&"."===w||(0==D&&""===w?e=!0:".."===w?i++:""!=w&&d.push(w))}),d):[...d,f]},[]);return new Qx(e,i,s)}(e);return _.toRoot()?dd(i.root,i.root,new wn([],{}),s,d):function w(k){var P;const z=function kj(a,i,e,s){if(a.isAbsolute)return new Df(i.root,!0,0);if(-1===s)return new Df(e,e===i.root,0);return function sk(a,i,e){let s=a,d=i,f=e;for(;f>d;){if(f-=d,s=s.parent,!s)throw new Ce(4005,!1);d=s.segments.length}return new Df(s,!1,d-f)}(e,s+($_(a.commands[0])?0:1),a.numberOfDoubleDots)}(_,i,null===(P=a.snapshot)||void 0===P?void 0:P._urlSegment,k),W=z.processChildren?Y_(z.segmentGroup,z.index,_.commands):lk(z.segmentGroup,z.index,_.commands);return dd(i.root,z.segmentGroup,W,s,d)}(null===(f=a.snapshot)||void 0===f?void 0:f._lastPathIndex)}function $_(a){return"object"==typeof a&&null!=a&&!a.outlets&&!a.segmentPath}function W_(a){return"object"==typeof a&&null!=a&&a.outlets}function dd(a,i,e,s,d){let _,f={};s&&va(s,(D,k)=>{f[k]=Array.isArray(D)?D.map(P=>`${P}`):`${D}`}),_=a===i?e:_B(a,i,e);const w=Zx(j_(_));return new xf(w,f,d)}function _B(a,i,e){const s={};return va(a.children,(d,f)=>{s[f]=d===i?e:_B(d,i,e)}),new wn(a.segments,s)}class Qx{constructor(i,e,s){if(this.isAbsolute=i,this.numberOfDoubleDots=e,this.commands=s,i&&s.length>0&&$_(s[0]))throw new Ce(4003,!1);const d=s.find(W_);if(d&&d!==ak(s))throw new Ce(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Df{constructor(i,e,s){this.segmentGroup=i,this.processChildren=e,this.index=s}}function lk(a,i,e){if(a||(a=new wn([],{})),0===a.segments.length&&a.hasChildren())return Y_(a,i,e);const s=function Ij(a,i,e){let s=0,d=i;const f={match:!1,pathIndex:0,commandIndex:0};for(;d=e.length)return f;const _=a.segments[d],w=e[s];if(W_(w))break;const D=`${w}`,k=s0&&void 0===D)break;if(D&&k&&"object"==typeof k&&void 0===k.outlets){if(!Su(D,k,_))return f;s+=2}else{if(!Su(D,{},_))return f;s++}d++}return{match:!0,pathIndex:d,commandIndex:s}}(a,i,e),d=e.slice(s.commandIndex);if(s.match&&s.pathIndex{"string"==typeof f&&(f=[f]),null!==f&&(d[_]=lk(a.children[_],i,f))}),va(a.children,(f,_)=>{void 0===s[_]&&(d[_]=f)}),new wn(a.segments,d)}}function ck(a,i,e){const s=a.segments.slice(0,i);let d=0;for(;d{"string"==typeof e&&(e=[e]),null!==e&&(i[s]=ck(new wn([],{}),0,e))}),i}function uk(a){const i={};return va(a,(e,s)=>i[s]=`${e}`),i}function Su(a,i,e){return a==e.path&&ml(i,e.parameters)}const gl="imperative";class to{constructor(i,e){this.id=i,this.url=e}}class hk extends to{constructor(i,e,s="imperative",d=null){super(i,e),this.type=0,this.navigationTrigger=s,this.restoredState=d}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Mf extends to{constructor(i,e,s){super(i,e),this.urlAfterRedirects=s,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Jx extends to{constructor(i,e,s,d){super(i,e),this.reason=s,this.code=d,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class wB extends to{constructor(i,e,s,d){super(i,e),this.reason=s,this.code=d,this.type=16}}class xB extends to{constructor(i,e,s,d){super(i,e),this.error=s,this.target=d,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class Pj extends to{constructor(i,e,s,d){super(i,e),this.urlAfterRedirects=s,this.state=d,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Rj extends to{constructor(i,e,s,d){super(i,e),this.urlAfterRedirects=s,this.state=d,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class Oj extends to{constructor(i,e,s,d,f){super(i,e),this.urlAfterRedirects=s,this.state=d,this.shouldActivate=f,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class Lj extends to{constructor(i,e,s,d){super(i,e),this.urlAfterRedirects=s,this.state=d,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class q_ extends to{constructor(i,e,s,d){super(i,e),this.urlAfterRedirects=s,this.state=d,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ud{constructor(i){this.route=i,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class fk{constructor(i){this.route=i,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Fj{constructor(i){this.snapshot=i,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Nj{constructor(i){this.snapshot=i,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Bj{constructor(i){this.snapshot=i,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class CB{constructor(i){this.snapshot=i,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class X_{constructor(i,e,s){this.routerEvent=i,this.position=e,this.anchor=s,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}let DB=(()=>{class a{createUrlTree(e,s,d,f,_,w){return vB(e||s.root,d,f,_,w)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),MB=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(i){return DB.\u0275fac(i)},providedIn:"root"}),a})();class pk{constructor(i){this._root=i}get root(){return this._root.value}parent(i){const e=this.pathFromRoot(i);return e.length>1?e[e.length-2]:null}children(i){const e=eC(i,this._root);return e?e.children.map(s=>s.value):[]}firstChild(i){const e=eC(i,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(i){const e=tC(i,this._root);return e.length<2?[]:e[e.length-2].children.map(d=>d.value).filter(d=>d!==i)}pathFromRoot(i){return tC(i,this._root).map(e=>e.value)}}function eC(a,i){if(a===i.value)return i;for(const e of i.children){const s=eC(a,e);if(s)return s}return null}function tC(a,i){if(a===i.value)return[i];for(const e of i.children){const s=tC(a,e);if(s.length)return s.unshift(i),s}return[]}class uc{constructor(i,e){this.value=i,this.children=e}toString(){return`TreeNode(${this.value})`}}function Mm(a){const i={};return a&&a.children.forEach(e=>i[e.value.outlet]=e),i}class TB extends pk{constructor(i,e){super(i),this.snapshot=e,nC(this,i)}toString(){return this.snapshot.toString()}}function AB(a,i){const e=function zj(a,i){const _=new Z_([],{},{},"",{},_n,i,null,a.root,-1,{});return new EB("",new uc(_,[]))}(a,i),s=new Qr([new G_("",{})]),d=new Qr({}),f=new Qr({}),_=new Qr({}),w=new Qr(""),D=new xi(s,d,_,w,f,_n,i,e.root);return D.snapshot=e.root,new TB(new uc(D,[]),e)}class xi{constructor(i,e,s,d,f,_,w,D){var k,P;this.url=i,this.params=e,this.queryParams=s,this.fragment=d,this.data=f,this.outlet=_,this.component=w,this.title=null!==(k=null===(P=this.data)||void 0===P?void 0:P.pipe(gt(z=>z[bm])))&&void 0!==k?k:je(void 0),this._futureSnapshot=D}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(gt(i=>H_(i)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(gt(i=>H_(i)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function kB(a,i="emptyOnly"){const e=a.pathFromRoot;let s=0;if("always"!==i)for(s=e.length-1;s>=1;){const d=e[s],f=e[s-1];if(d.routeConfig&&""===d.routeConfig.path)s--;else{if(f.component)break;s--}}return function Hj(a){return a.reduce((i,e)=>{var s;return{params:{...i.params,...e.params},data:{...i.data,...e.data},resolve:{...e.data,...i.resolve,...null===(s=e.routeConfig)||void 0===s?void 0:s.data,...e._resolvedData}}},{params:{},data:{},resolve:{}})}(e.slice(s))}class Z_{get title(){var i;return null===(i=this.data)||void 0===i?void 0:i[bm]}constructor(i,e,s,d,f,_,w,D,k,P,z){this.url=i,this.params=e,this.queryParams=s,this.fragment=d,this.data=f,this.outlet=_,this.component=w,this.routeConfig=D,this._urlSegment=k,this._lastPathIndex=P,this._resolve=z}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=H_(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=H_(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(s=>s.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class EB extends pk{constructor(i,e){super(e),this.url=i,nC(this,e)}toString(){return Tm(this._root)}}function nC(a,i){i.value._routerState=a,i.children.forEach(e=>nC(a,e))}function Tm(a){const i=a.children.length>0?` { ${a.children.map(Tm).join(", ")} } `:"";return`${a.value}${i}`}function mk(a){if(a.snapshot){const i=a.snapshot,e=a._futureSnapshot;a.snapshot=e,ml(i.queryParams,e.queryParams)||a.queryParams.next(e.queryParams),i.fragment!==e.fragment&&a.fragment.next(e.fragment),ml(i.params,e.params)||a.params.next(e.params),function rB(a,i){if(a.length!==i.length)return!1;for(let e=0;eml(e.parameters,i[s].parameters))}(a.url,i.url);return e&&!(!a.parent!=!i.parent)&&(!a.parent||iC(a.parent,i.parent))}function Am(a,i,e){if(e&&a.shouldReuseRoute(i.value,e.value.snapshot)){const s=e.value;s._futureSnapshot=i.value;const d=function PB(a,i,e){return i.children.map(s=>{for(const d of e.children)if(a.shouldReuseRoute(s.value,d.value.snapshot))return Am(a,s,d);return Am(a,s)})}(a,i,e);return new uc(s,d)}{if(a.shouldAttach(i.value)){const f=a.retrieve(i.value);if(null!==f){const _=f.route;return _.value._futureSnapshot=i.value,_.children=i.children.map(w=>Am(a,w)),_}}const s=function RB(a){return new xi(new Qr(a.url),new Qr(a.params),new Qr(a.queryParams),new Qr(a.fragment),new Qr(a.data),a.outlet,a.component,a)}(i.value),d=i.children.map(f=>Am(a,f));return new uc(s,d)}}const gk="ngNavigationCancelingError";function OB(a,i){const{redirectTo:e,navigationBehaviorOptions:s}=Jr(i)?{redirectTo:i,navigationBehaviorOptions:void 0}:i,d=LB(!1,0,i);return d.url=e,d.navigationBehaviorOptions=s,d}function LB(a,i,e){const s=new Error("NavigationCancelingError: "+(a||""));return s[gk]=!0,s.cancellationCode=i,e&&(s.url=e),s}function vk(a){return FB(a)&&Jr(a.url)}function FB(a){return a&&a[gk]}class Gj{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new km,this.attachRef=null}}let km=(()=>{class a{constructor(){this.contexts=new Map}onChildOutletCreated(e,s){const d=this.getOrCreateContext(e);d.outlet=s,this.contexts.set(e,d)}onChildOutletDestroyed(e){const s=this.getContext(e);s&&(s.outlet=null,s.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let s=this.getContext(e);return s||(s=new Gj,this.contexts.set(e,s)),s}getContext(e){return this.contexts.get(e)||null}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const Em=!1;let _k=(()=>{class a{constructor(){this.activated=null,this._activatedRoute=null,this.name=_n,this.activateEvents=new ye,this.deactivateEvents=new ye,this.attachEvents=new ye,this.detachEvents=new ye,this.parentContexts=Gt(km),this.location=Gt(Hn),this.changeDetector=Gt(Zt),this.environmentInjector=Gt(_s)}ngOnChanges(e){if(e.name){const{firstChange:s,previousValue:d}=e.name;if(s)return;this.isTrackedInParentContexts(d)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(d)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(e){var s;return(null===(s=this.parentContexts.getContext(e))||void 0===s?void 0:s.outlet)===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);null!=e&&e.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Ce(4012,Em);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Ce(4012,Em);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Ce(4012,Em);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,s){this.activated=e,this._activatedRoute=s,this.location.insert(e.hostView),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,s){if(this.isActivated)throw new Ce(4013,Em);this._activatedRoute=e;const d=this.location,_=e.snapshot.component,w=this.parentContexts.getOrCreateContext(this.name).children,D=new Uj(e,w,d.injector);if(s&&function jj(a){return!!a.resolveComponentFactory}(s)){const k=s.resolveComponentFactory(_);this.activated=d.createComponent(k,d.length,D)}else this.activated=d.createComponent(_,{index:d.length,injector:D,environmentInjector:s??this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[$n]}),a})();class Uj{constructor(i,e,s){this.route=i,this.childContexts=e,this.parent=s}get(i,e){return i===xi?this.route:i===km?this.childContexts:this.parent.get(i,e)}}let rC=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275cmp=we({type:a,selectors:[["ng-component"]],standalone:!0,features:[eT],decls:1,vars:0,template:function(e,s){1&e&&he(0,"router-outlet")},dependencies:[_k],encapsulation:2}),a})();function NB(a,i){var e;return a.providers&&!a._injector&&(a._injector=s_(a.providers,i,`Route: ${a.path}`)),null!==(e=a._injector)&&void 0!==e?e:i}function K_(a){const i=a.children&&a.children.map(K_),e=i?{...a,children:i}:{...a};return!e.component&&!e.loadComponent&&(i||e.loadChildren)&&e.outlet&&e.outlet!==_n&&(e.component=rC),e}function xo(a){return a.outlet||_n}function BB(a,i){const e=a.filter(s=>xo(s)===i);return e.push(...a.filter(s=>xo(s)!==i)),e}function Q_(a){var i;if(!a)return null;if(null!==(i=a.routeConfig)&&void 0!==i&&i._injector)return a.routeConfig._injector;for(let e=a.parent;e;e=e.parent){const s=e.routeConfig;if(null!=s&&s._loadedInjector)return s._loadedInjector;if(null!=s&&s._injector)return s._injector}return null}class Zj{constructor(i,e,s,d){this.routeReuseStrategy=i,this.futureState=e,this.currState=s,this.forwardEvent=d}activate(i){const e=this.futureState._root,s=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,s,i),mk(this.futureState.root),this.activateChildRoutes(e,s,i)}deactivateChildRoutes(i,e,s){const d=Mm(e);i.children.forEach(f=>{const _=f.value.outlet;this.deactivateRoutes(f,d[_],s),delete d[_]}),va(d,(f,_)=>{this.deactivateRouteAndItsChildren(f,s)})}deactivateRoutes(i,e,s){const d=i.value,f=e?e.value:null;if(d===f)if(d.component){const _=s.getContext(d.outlet);_&&this.deactivateChildRoutes(i,e,_.children)}else this.deactivateChildRoutes(i,e,s);else f&&this.deactivateRouteAndItsChildren(e,s)}deactivateRouteAndItsChildren(i,e){i.value.component&&this.routeReuseStrategy.shouldDetach(i.value.snapshot)?this.detachAndStoreRouteSubtree(i,e):this.deactivateRouteAndOutlet(i,e)}detachAndStoreRouteSubtree(i,e){const s=e.getContext(i.value.outlet),d=s&&i.value.component?s.children:e,f=Mm(i);for(const _ of Object.keys(f))this.deactivateRouteAndItsChildren(f[_],d);if(s&&s.outlet){const _=s.outlet.detach(),w=s.children.onOutletDeactivated();this.routeReuseStrategy.store(i.value.snapshot,{componentRef:_,route:i,contexts:w})}}deactivateRouteAndOutlet(i,e){const s=e.getContext(i.value.outlet),d=s&&i.value.component?s.children:e,f=Mm(i);for(const _ of Object.keys(f))this.deactivateRouteAndItsChildren(f[_],d);s&&s.outlet&&(s.outlet.deactivate(),s.children.onOutletDeactivated(),s.attachRef=null,s.resolver=null,s.route=null)}activateChildRoutes(i,e,s){const d=Mm(e);i.children.forEach(f=>{this.activateRoutes(f,d[f.value.outlet],s),this.forwardEvent(new CB(f.value.snapshot))}),i.children.length&&this.forwardEvent(new Nj(i.value.snapshot))}activateRoutes(i,e,s){const d=i.value,f=e?e.value:null;if(mk(d),d===f)if(d.component){const w=s.getOrCreateContext(d.outlet);this.activateChildRoutes(i,e,w.children)}else this.activateChildRoutes(i,e,s);else if(d.component){const w=s.getOrCreateContext(d.outlet);if(this.routeReuseStrategy.shouldAttach(d.snapshot)){const D=this.routeReuseStrategy.retrieve(d.snapshot);this.routeReuseStrategy.store(d.snapshot,null),w.children.onOutletReAttached(D.contexts),w.attachRef=D.componentRef,w.route=D.route.value,w.outlet&&w.outlet.attach(D.componentRef,D.route.value),mk(D.route.value),this.activateChildRoutes(i,null,w.children)}else{var _;const D=Q_(d.snapshot),k=null!==(_=null==D?void 0:D.get(ca))&&void 0!==_?_:null;w.attachRef=null,w.route=d,w.resolver=k,w.injector=D,w.outlet&&w.outlet.activateWith(d,w.injector),this.activateChildRoutes(i,null,w.children)}}else this.activateChildRoutes(i,null,s)}}class VB{constructor(i){this.path=i,this.route=this.path[this.path.length-1]}}class aC{constructor(i,e){this.component=i,this.route=e}}function zB(a,i,e){const s=a._root;return Pm(s,i?i._root:null,e,[s.value])}function Im(a,i){const e=Symbol(),s=i.get(a,e);return s===e?"function"!=typeof a||function xS(a){return null!==Ab(a)}(a)?i.get(a):a:s}function Pm(a,i,e,s,d={canDeactivateChecks:[],canActivateChecks:[]}){const f=Mm(i);return a.children.forEach(_=>{(function GB(a,i,e,s,d={canDeactivateChecks:[],canActivateChecks:[]}){const f=a.value,_=i?i.value:null,w=e?e.getContext(a.value.outlet):null;if(_&&f.routeConfig===_.routeConfig){const D=function UB(a,i,e){if("function"==typeof e)return e(a,i);switch(e){case"pathParamsChange":return!Cf(a.url,i.url);case"pathParamsOrQueryParamsChange":return!Cf(a.url,i.url)||!ml(a.queryParams,i.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!iC(a,i)||!ml(a.queryParams,i.queryParams);default:return!iC(a,i)}}(_,f,f.routeConfig.runGuardsAndResolvers);D?d.canActivateChecks.push(new VB(s)):(f.data=_.data,f._resolvedData=_._resolvedData),Pm(a,i,f.component?w?w.children:null:e,s,d),D&&w&&w.outlet&&w.outlet.isActivated&&d.canDeactivateChecks.push(new aC(w.outlet.component,_))}else _&&Af(i,w,d),d.canActivateChecks.push(new VB(s)),Pm(a,null,f.component?w?w.children:null:e,s,d)})(_,f[_.value.outlet],e,s.concat([_.value]),d),delete f[_.value.outlet]}),va(f,(_,w)=>Af(_,e.getContext(w),d)),d}function Af(a,i,e){const s=Mm(a),d=a.value;va(s,(f,_)=>{Af(f,d.component?i?i.children.getContext(_):null:i,e)}),e.canDeactivateChecks.push(new aC(d.component&&i&&i.outlet&&i.outlet.isActivated?i.outlet.component:null,d))}function J_(a){return"function"==typeof a}function oC(a){return a instanceof vm||"EmptyError"===(null==a?void 0:a.name)}const Rm=Symbol("INITIAL_VALUE");function kf(){return Qi(a=>wu(a.map(i=>i.pipe(Pn(1),Ji(Rm)))).pipe(gt(i=>{for(const e of i)if(!0!==e){if(e===Rm)return Rm;if(!1===e||e instanceof xf)return e}return!0}),fi(i=>i!==Rm),Pn(1)))}function $B(a){return function NX(...a){return rH(a)}(Fi(i=>{if(Jr(i))throw OB(0,i)}),gt(i=>!0===i))}const Ef={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function WB(a,i,e,s,d){const f=wk(a,i,e);return f.matched?function s7(a,i,e,s){const d=i.canMatch;return d&&0!==d.length?je(d.map(_=>{const w=Im(_,a);return xu(function t7(a){return a&&J_(a.canMatch)}(w)?w.canMatch(i,e):a.runInContext(()=>w(i,e)))})).pipe(kf(),$B()):je(!0)}(s=NB(i,s),i,e).pipe(gt(_=>!0===_?f:{...Ef})):je(f)}function wk(a,i,e){var s;if(""===i.path)return"full"===i.pathMatch&&(a.hasChildren()||e.length>0)?{...Ef}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const f=(i.matcher||_j)(e,a,i);if(!f)return{...Ef};const _={};va(f.posParams,(D,k)=>{_[k]=D.path});const w=f.consumed.length>0?{..._,...f.consumed[f.consumed.length-1].parameters}:_;return{matched:!0,consumedSegments:f.consumed,remainingSegments:e.slice(f.consumed.length),parameters:w,positionalParamSegments:null!==(s=f.posParams)&&void 0!==s?s:{}}}function lC(a,i,e,s){if(e.length>0&&function YB(a,i,e){return e.some(s=>ty(a,i,s)&&xo(s)!==_n)}(a,e,s)){const f=new wn(i,function c7(a,i,e,s){const d={};d[_n]=s,s._sourceSegment=a,s._segmentIndexShift=i.length;for(const f of e)if(""===f.path&&xo(f)!==_n){const _=new wn([],{});_._sourceSegment=a,_._segmentIndexShift=i.length,d[xo(f)]=_}return d}(a,i,s,new wn(e,a.children)));return f._sourceSegment=a,f._segmentIndexShift=i.length,{segmentGroup:f,slicedSegments:[]}}if(0===e.length&&function d7(a,i,e){return e.some(s=>ty(a,i,s))}(a,e,s)){const f=new wn(a.segments,function l7(a,i,e,s,d){const f={};for(const _ of s)if(ty(a,e,_)&&!d[xo(_)]){const w=new wn([],{});w._sourceSegment=a,w._segmentIndexShift=i.length,f[xo(_)]=w}return{...d,...f}}(a,i,e,s,a.children));return f._sourceSegment=a,f._segmentIndexShift=i.length,{segmentGroup:f,slicedSegments:e}}const d=new wn(a.segments,a.children);return d._sourceSegment=a,d._segmentIndexShift=i.length,{segmentGroup:d,slicedSegments:e}}function ty(a,i,e){return(!(a.hasChildren()||i.length>0)||"full"!==e.pathMatch)&&""===e.path}function qB(a,i,e,s){return!!(xo(a)===s||s!==_n&&ty(i,e,a))&&("**"===a.path||wk(i,a,e).matched)}function xk(a,i,e){return 0===i.length&&!a.children[e]}const cC=!1;class dC{constructor(i){this.segmentGroup=i||null}}class XB{constructor(i){this.urlTree=i}}function Om(a){return bf(new dC(a))}function uC(a){return bf(new XB(a))}class p7{constructor(i,e,s,d,f){this.injector=i,this.configLoader=e,this.urlSerializer=s,this.urlTree=d,this.config=f,this.allowRedirects=!0}apply(){const i=lC(this.urlTree.root,[],[],this.config).segmentGroup,e=new wn(i.segments,i.children);return this.expandSegmentGroup(this.injector,this.config,e,_n).pipe(gt(f=>this.createUrlTree(j_(f),this.urlTree.queryParams,this.urlTree.fragment))).pipe(eo(f=>{if(f instanceof XB)return this.allowRedirects=!1,this.match(f.urlTree);throw f instanceof dC?this.noMatchError(f):f}))}match(i){return this.expandSegmentGroup(this.injector,this.config,i.root,_n).pipe(gt(d=>this.createUrlTree(j_(d),i.queryParams,i.fragment))).pipe(eo(d=>{throw d instanceof dC?this.noMatchError(d):d}))}noMatchError(i){return new Ce(4002,cC)}createUrlTree(i,e,s){const d=Zx(i);return new xf(d,e,s)}expandSegmentGroup(i,e,s,d){return 0===s.segments.length&&s.hasChildren()?this.expandChildren(i,e,s).pipe(gt(f=>new wn([],f))):this.expandSegment(i,s,e,s.segments,d,!0)}expandChildren(i,e,s){const d=[];for(const f of Object.keys(s.children))"primary"===f?d.unshift(f):d.push(f);return Wi(d).pipe(sd(f=>{const _=s.children[f],w=BB(e,f);return this.expandSegmentGroup(i,w,_,f).pipe(gt(D=>({segment:D,outlet:f})))}),zx((f,_)=>(f[_.outlet]=_.segment,f),{}),rk())}expandSegment(i,e,s,d,f,_){return Wi(s).pipe(sd(w=>this.expandSegmentAgainstRoute(i,e,s,w,d,f,_).pipe(eo(k=>{if(k instanceof dC)return je(null);throw k}))),Ls(w=>!!w),eo((w,D)=>{if(oC(w))return xk(e,d,f)?je(new wn([],{})):Om(e);throw w}))}expandSegmentAgainstRoute(i,e,s,d,f,_,w){return qB(d,e,f,_)?void 0===d.redirectTo?this.matchSegmentAgainstRoute(i,e,d,f,_):w&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(i,e,s,d,f,_):Om(e):Om(e)}expandSegmentAgainstRouteUsingRedirect(i,e,s,d,f,_){return"**"===d.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(i,s,d,_):this.expandRegularSegmentAgainstRouteUsingRedirect(i,e,s,d,f,_)}expandWildCardWithParamsAgainstRouteUsingRedirect(i,e,s,d){const f=this.applyRedirectCommands([],s.redirectTo,{});return s.redirectTo.startsWith("/")?uC(f):this.lineralizeSegments(s,f).pipe(ze(_=>{const w=new wn(_,{});return this.expandSegment(i,w,e,_,d,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(i,e,s,d,f,_){const{matched:w,consumedSegments:D,remainingSegments:k,positionalParamSegments:P}=wk(e,d,f);if(!w)return Om(e);const z=this.applyRedirectCommands(D,d.redirectTo,P);return d.redirectTo.startsWith("/")?uC(z):this.lineralizeSegments(d,z).pipe(ze(W=>this.expandSegment(i,e,s,W.concat(k),_,!1)))}matchSegmentAgainstRoute(i,e,s,d,f){return"**"===s.path?(i=NB(s,i),s.loadChildren?(s._loadedRoutes?je({routes:s._loadedRoutes,injector:s._loadedInjector}):this.configLoader.loadChildren(i,s)).pipe(gt(w=>(s._loadedRoutes=w.routes,s._loadedInjector=w.injector,new wn(d,{})))):je(new wn(d,{}))):WB(e,s,d,i).pipe(Qi(({matched:_,consumedSegments:w,remainingSegments:D})=>{var k;return _?(i=null!==(k=s._injector)&&void 0!==k?k:i,this.getChildConfig(i,s,d).pipe(ze(z=>{var W;const Z=null!==(W=z.injector)&&void 0!==W?W:i,te=z.routes,{segmentGroup:re,slicedSegments:fe}=lC(e,w,D,te),pe=new wn(re.segments,re.children);if(0===fe.length&&pe.hasChildren())return this.expandChildren(Z,te,pe).pipe(gt(Cn=>new wn(w,Cn)));if(0===te.length&&0===fe.length)return je(new wn(w,{}));const Te=xo(s)===f;return this.expandSegment(Z,pe,te,fe,Te?_n:f,!0).pipe(gt(Fe=>new wn(w.concat(Fe.segments),Fe.children)))}))):Om(e)}))}getChildConfig(i,e,s){return e.children?je({routes:e.children,injector:i}):e.loadChildren?void 0!==e._loadedRoutes?je({routes:e._loadedRoutes,injector:e._loadedInjector}):function o7(a,i,e,s){const d=i.canLoad;return void 0===d||0===d.length?je(!0):je(d.map(_=>{const w=Im(_,a);return xu(function Kj(a){return a&&J_(a.canLoad)}(w)?w.canLoad(i,e):a.runInContext(()=>w(i,e)))})).pipe(kf(),$B())}(i,e,s).pipe(ze(d=>d?this.configLoader.loadChildren(i,e).pipe(Fi(f=>{e._loadedRoutes=f.routes,e._loadedInjector=f.injector})):function h7(a){return bf(LB(cC,3))}())):je({routes:[],injector:i})}lineralizeSegments(i,e){let s=[],d=e.root;for(;;){if(s=s.concat(d.segments),0===d.numberOfChildren)return je(s);if(d.numberOfChildren>1||!d.children[_n])return bf(new Ce(4e3,cC));d=d.children[_n]}}applyRedirectCommands(i,e,s){return this.applyRedirectCreateUrlTree(e,this.urlSerializer.parse(e),i,s)}applyRedirectCreateUrlTree(i,e,s,d){const f=this.createSegmentGroup(i,e.root,s,d);return new xf(f,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(i,e){const s={};return va(i,(d,f)=>{if("string"==typeof d&&d.startsWith(":")){const w=d.substring(1);s[f]=e[w]}else s[f]=d}),s}createSegmentGroup(i,e,s,d){const f=this.createSegments(i,e.segments,s,d);let _={};return va(e.children,(w,D)=>{_[D]=this.createSegmentGroup(i,w,s,d)}),new wn(f,_)}createSegments(i,e,s,d){return e.map(f=>f.path.startsWith(":")?this.findPosParam(i,f,d):this.findOrReturn(f,s))}findPosParam(i,e,s){const d=s[e.path.substring(1)];if(!d)throw new Ce(4001,cC);return d}findOrReturn(i,e){let s=0;for(const d of e){if(d.path===i.path)return e.splice(s),d;s++}return i}}class Ck{}class JB{constructor(i,e,s,d,f,_,w){this.injector=i,this.rootComponentType=e,this.config=s,this.urlTree=d,this.url=f,this.paramsInheritanceStrategy=_,this.urlSerializer=w}recognize(){const i=lC(this.urlTree.root,[],[],this.config.filter(e=>void 0===e.redirectTo)).segmentGroup;return this.processSegmentGroup(this.injector,this.config,i,_n).pipe(gt(e=>{if(null===e)return null;const s=new Z_([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},_n,this.rootComponentType,null,this.urlTree.root,-1,{}),d=new uc(s,e),f=new EB(this.url,d);return this.inheritParamsAndData(f._root),f}))}inheritParamsAndData(i){const e=i.value,s=kB(e,this.paramsInheritanceStrategy);e.params=Object.freeze(s.params),e.data=Object.freeze(s.data),i.children.forEach(d=>this.inheritParamsAndData(d))}processSegmentGroup(i,e,s,d){return 0===s.segments.length&&s.hasChildren()?this.processChildren(i,e,s):this.processSegment(i,e,s,s.segments,d)}processChildren(i,e,s){return Wi(Object.keys(s.children)).pipe(sd(d=>{const f=s.children[d],_=BB(e,d);return this.processSegmentGroup(i,_,f,d)}),zx((d,f)=>d&&f?(d.push(...f),d):null),nB(d=>null!==d),ym(null),rk(),gt(d=>{if(null===d)return null;const f=tV(d);return function eV(a){a.sort((i,e)=>i.value.outlet===_n?-1:e.value.outlet===_n?1:i.value.outlet.localeCompare(e.value.outlet))}(f),f}))}processSegment(i,e,s,d,f){return Wi(e).pipe(sd(_=>{var w;return this.processSegmentAgainstRoute(null!==(w=_._injector)&&void 0!==w?w:i,_,s,d,f)}),Ls(_=>!!_),eo(_=>{if(oC(_))return xk(s,d,f)?je([]):je(null);throw _}))}processSegmentAgainstRoute(i,e,s,d,f){if(e.redirectTo||!qB(e,s,d,f))return je(null);let _;if("**"===e.path){var w,D;const k=d.length>0?ak(d).parameters:{},P=ny(s)+d.length;_=je({snapshot:new Z_(d,k,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,Lm(e),xo(e),null!==(w=null!==(D=e.component)&&void 0!==D?D:e._loadedComponent)&&void 0!==w?w:null,e,Sk(s),P,nV(e)),consumedSegments:[],remainingSegments:[]})}else _=WB(s,e,d,i).pipe(gt(({matched:k,consumedSegments:P,remainingSegments:z,parameters:W})=>{var Z,te;if(!k)return null;const re=ny(s)+P.length;return{snapshot:new Z_(P,W,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,Lm(e),xo(e),null!==(Z=null!==(te=e.component)&&void 0!==te?te:e._loadedComponent)&&void 0!==Z?Z:null,e,Sk(s),re,nV(e)),consumedSegments:P,remainingSegments:z}}));return _.pipe(Qi(k=>{var P,z;if(null===k)return je(null);const{snapshot:W,consumedSegments:Z,remainingSegments:te}=k;i=null!==(P=e._injector)&&void 0!==P?P:i;const re=null!==(z=e._loadedInjector)&&void 0!==z?z:i,fe=function g7(a){return a.children?a.children:a.loadChildren?a._loadedRoutes:[]}(e),{segmentGroup:pe,slicedSegments:Te}=lC(s,Z,te,fe.filter(Fe=>void 0===Fe.redirectTo));if(0===Te.length&&pe.hasChildren())return this.processChildren(re,fe,pe).pipe(gt(Fe=>null===Fe?null:[new uc(W,Fe)]));if(0===fe.length&&0===Te.length)return je([new uc(W,[])]);const ue=xo(e)===f;return this.processSegment(re,fe,pe,Te,ue?_n:f).pipe(gt(Fe=>null===Fe?null:[new uc(W,Fe)]))}))}}function v7(a){const i=a.value.routeConfig;return i&&""===i.path&&void 0===i.redirectTo}function tV(a){const i=[],e=new Set;for(const s of a){if(!v7(s)){i.push(s);continue}const d=i.find(f=>s.value.routeConfig===f.value.routeConfig);void 0!==d?(d.children.push(...s.children),e.add(d)):i.push(s)}for(const s of e){const d=tV(s.children);i.push(new uc(s.value,d))}return i.filter(s=>!e.has(s))}function Sk(a){let i=a;for(;i._sourceSegment;)i=i._sourceSegment;return i}function ny(a){var i;let e=a,s=null!==(i=e._segmentIndexShift)&&void 0!==i?i:0;for(;e._sourceSegment;){var d;e=e._sourceSegment,s+=null!==(d=e._segmentIndexShift)&&void 0!==d?d:0}return s-1}function Lm(a){return a.data||{}}function nV(a){return a.resolve||{}}function iV(a){return"string"==typeof a.title||null===a.title}function Mk(a){return Qi(i=>{const e=a(i);return e?Wi(e).pipe(gt(()=>i)):je(i)})}const Pf=new _e("ROUTES");let Rf=(()=>{class a{constructor(e,s){this.injector=e,this.compiler=s,this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return je(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);const s=xu(e.loadComponent()).pipe(gt(Du),Fi(f=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=f}),z_(()=>{this.componentLoaders.delete(e)})),d=new nk(s,()=>new Ue).pipe(tk());return this.componentLoaders.set(e,d),d}loadChildren(e,s){if(this.childrenLoaders.get(s))return this.childrenLoaders.get(s);if(s._loadedRoutes)return je({routes:s._loadedRoutes,injector:s._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(s);const f=this.loadModuleFactoryOrRoutes(s.loadChildren).pipe(gt(w=>{this.onLoadEndListener&&this.onLoadEndListener(s);let D,k,P=!1;Array.isArray(w)?k=w:(D=w.create(e).injector,k=oB(D.get(Pf,[],Rt.Self|Rt.Optional)));return{routes:k.map(K_),injector:D}}),z_(()=>{this.childrenLoaders.delete(s)})),_=new nk(f,()=>new Ue).pipe(tk());return this.childrenLoaders.set(s,_),_}loadModuleFactoryOrRoutes(e){return xu(e()).pipe(gt(Du),ze(d=>d instanceof JM||Array.isArray(d)?je(d):Wi(this.compiler.compileModuleAsync(d))))}}return a.\u0275fac=function(e){return new(e||a)(oe(Gi),oe(zw))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function Du(a){return function ay(a){return a&&"object"==typeof a&&"default"in a}(a)?a.default:a}let Nm=(()=>{class a{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new Ue,this.configLoader=Gt(Rf),this.environmentInjector=Gt(_s),this.urlSerializer=Gt(xm),this.rootContexts=Gt(km),this.navigationId=0,this.afterPreactivation=()=>je(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=d=>this.events.next(new fk(d)),this.configLoader.onLoadStartListener=d=>this.events.next(new ud(d))}complete(){var e;null===(e=this.transitions)||void 0===e||e.complete()}handleNavigationRequest(e){var s;const d=++this.navigationId;null===(s=this.transitions)||void 0===s||s.next({...this.transitions.value,...e,id:d})}setupNavigations(e){return this.transitions=new Qr({id:0,targetPageId:0,currentUrlTree:e.currentUrlTree,currentRawUrl:e.currentUrlTree,extractedUrl:e.urlHandlingStrategy.extract(e.currentUrlTree),urlAfterRedirects:e.urlHandlingStrategy.extract(e.currentUrlTree),rawUrl:e.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:gl,restoredState:null,currentSnapshot:e.routerState.snapshot,targetSnapshot:null,currentRouterState:e.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(fi(s=>0!==s.id),gt(s=>({...s,extractedUrl:e.urlHandlingStrategy.extract(s.rawUrl)})),Qi(s=>{let d=!1,f=!1;return je(s).pipe(Fi(_=>{this.currentNavigation={id:_.id,initialUrl:_.rawUrl,extractedUrl:_.extractedUrl,trigger:_.source,extras:_.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),Qi(_=>{var w;const D=e.browserUrlTree.toString(),k=!e.navigated||_.extractedUrl.toString()!==D||D!==e.currentUrlTree.toString(),P=null!==(w=_.extras.onSameUrlNavigation)&&void 0!==w?w:e.onSameUrlNavigation;if(!k&&"reload"!==P){const z="";return this.events.next(new wB(_.id,e.serializeUrl(s.rawUrl),z,0)),e.rawUrlTree=_.rawUrl,_.resolve(null),ni}if(e.urlHandlingStrategy.shouldProcessUrl(_.rawUrl))return Ak(_.source)&&(e.browserUrlTree=_.extractedUrl),je(_).pipe(Qi(z=>{var W,Z;const te=null===(W=this.transitions)||void 0===W?void 0:W.getValue();return this.events.next(new hk(z.id,this.urlSerializer.serialize(z.extractedUrl),z.source,z.restoredState)),te!==(null===(Z=this.transitions)||void 0===Z?void 0:Z.getValue())?ni:Promise.resolve(z)}),function m7(a,i,e,s){return Qi(d=>function f7(a,i,e,s,d){return new p7(a,i,e,s,d).apply()}(a,i,e,d.extractedUrl,s).pipe(gt(f=>({...d,urlAfterRedirects:f}))))}(this.environmentInjector,this.configLoader,this.urlSerializer,e.config),Fi(z=>{this.currentNavigation={...this.currentNavigation,finalUrl:z.urlAfterRedirects},s.urlAfterRedirects=z.urlAfterRedirects}),function _7(a,i,e,s,d){return ze(f=>function QB(a,i,e,s,d,f,_="emptyOnly"){return new JB(a,i,e,s,d,_,f).recognize().pipe(Qi(w=>null===w?function KB(a){return new Gn(i=>i.error(a))}(new Ck):je(w)))}(a,i,e,f.urlAfterRedirects,s.serialize(f.urlAfterRedirects),s,d).pipe(gt(_=>({...f,targetSnapshot:_}))))}(this.environmentInjector,this.rootComponentType,e.config,this.urlSerializer,e.paramsInheritanceStrategy),Fi(z=>{if(s.targetSnapshot=z.targetSnapshot,"eager"===e.urlUpdateStrategy){if(!z.extras.skipLocationChange){const Z=e.urlHandlingStrategy.merge(z.urlAfterRedirects,z.rawUrl);e.setBrowserUrl(Z,z)}e.browserUrlTree=z.urlAfterRedirects}const W=new Pj(z.id,this.urlSerializer.serialize(z.extractedUrl),this.urlSerializer.serialize(z.urlAfterRedirects),z.targetSnapshot);this.events.next(W)}));if(k&&e.urlHandlingStrategy.shouldProcessUrl(e.rawUrlTree)){const{id:z,extractedUrl:W,source:Z,restoredState:te,extras:re}=_,fe=new hk(z,this.urlSerializer.serialize(W),Z,te);this.events.next(fe);const pe=AB(W,this.rootComponentType).snapshot;return je(s={..._,targetSnapshot:pe,urlAfterRedirects:W,extras:{...re,skipLocationChange:!1,replaceUrl:!1}})}{const z="";return this.events.next(new wB(_.id,e.serializeUrl(s.extractedUrl),z,1)),e.rawUrlTree=_.rawUrl,_.resolve(null),ni}}),Fi(_=>{const w=new Rj(_.id,this.urlSerializer.serialize(_.extractedUrl),this.urlSerializer.serialize(_.urlAfterRedirects),_.targetSnapshot);this.events.next(w)}),gt(_=>s={..._,guards:zB(_.targetSnapshot,_.currentSnapshot,this.rootContexts)}),function i7(a,i){return ze(e=>{const{targetSnapshot:s,currentSnapshot:d,guards:{canActivateChecks:f,canDeactivateChecks:_}}=e;return 0===_.length&&0===f.length?je({...e,guardsResult:!0}):function r7(a,i,e,s){return Wi(a).pipe(ze(d=>function sC(a,i,e,s,d){const f=i&&i.routeConfig?i.routeConfig.canDeactivate:null;return f&&0!==f.length?je(f.map(w=>{var D;const k=null!==(D=Q_(i))&&void 0!==D?D:d,P=Im(w,k);return xu(function e7(a){return a&&J_(a.canDeactivate)}(P)?P.canDeactivate(a,i,e,s):k.runInContext(()=>P(a,i,e,s))).pipe(Ls())})).pipe(kf()):je(!0)}(d.component,d.route,e,i,s)),Ls(d=>!0!==d,!0))}(_,s,d,a).pipe(ze(w=>w&&function Ns(a){return"boolean"==typeof a}(w)?function a7(a,i,e,s){return Wi(i).pipe(sd(d=>Uo(function ey(a,i){return null!==a&&i&&i(new Fj(a)),je(!0)}(d.route.parent,s),function yk(a,i){return null!==a&&i&&i(new Bj(a)),je(!0)}(d.route,s),function bk(a,i,e){const s=i[i.length-1],f=i.slice(0,i.length-1).reverse().map(_=>function HB(a){const i=a.routeConfig?a.routeConfig.canActivateChild:null;return i&&0!==i.length?{node:a,guards:i}:null}(_)).filter(_=>null!==_).map(_=>_m(()=>je(_.guards.map(D=>{var k;const P=null!==(k=Q_(_.node))&&void 0!==k?k:e,z=Im(D,P);return xu(function Jj(a){return a&&J_(a.canActivateChild)}(z)?z.canActivateChild(s,a):P.runInContext(()=>z(s,a))).pipe(Ls())})).pipe(kf())));return je(f).pipe(kf())}(a,d.path,e),function jB(a,i,e){const s=i.routeConfig?i.routeConfig.canActivate:null;if(!s||0===s.length)return je(!0);const d=s.map(f=>_m(()=>{var _;const w=null!==(_=Q_(i))&&void 0!==_?_:e,D=Im(f,w);return xu(function Qj(a){return a&&J_(a.canActivate)}(D)?D.canActivate(i,a):w.runInContext(()=>D(i,a))).pipe(Ls())}));return je(d).pipe(kf())}(a,d.route,e))),Ls(d=>!0!==d,!0))}(s,f,a,i):je(w)),gt(w=>({...e,guardsResult:w})))})}(this.environmentInjector,_=>this.events.next(_)),Fi(_=>{if(s.guardsResult=_.guardsResult,Jr(_.guardsResult))throw OB(0,_.guardsResult);const w=new Oj(_.id,this.urlSerializer.serialize(_.extractedUrl),this.urlSerializer.serialize(_.urlAfterRedirects),_.targetSnapshot,!!_.guardsResult);this.events.next(w)}),fi(_=>!!_.guardsResult||(e.restoreHistory(_),this.cancelNavigationTransition(_,"",3,e),!1)),Mk(_=>{if(_.guards.canActivateChecks.length)return je(_).pipe(Fi(w=>{const D=new Lj(w.id,this.urlSerializer.serialize(w.extractedUrl),this.urlSerializer.serialize(w.urlAfterRedirects),w.targetSnapshot);this.events.next(D)}),Qi(w=>{let D=!1;return je(w).pipe(function y7(a,i){return ze(e=>{const{targetSnapshot:s,guards:{canActivateChecks:d}}=e;if(!d.length)return je(e);let f=0;return Wi(d).pipe(sd(_=>function iy(a,i,e,s){const d=a.routeConfig,f=a._resolve;return void 0!==(null==d?void 0:d.title)&&!iV(d)&&(f[bm]=d.title),function b7(a,i,e,s){const d=function hC(a){return[...Object.keys(a),...Object.getOwnPropertySymbols(a)]}(a);if(0===d.length)return je({});const f={};return Wi(d).pipe(ze(_=>function Dk(a,i,e,s){var d;const f=null!==(d=Q_(i))&&void 0!==d?d:s,_=Im(a,f);return xu(_.resolve?_.resolve(i,e):f.runInContext(()=>_(i,e)))}(a[_],i,e,s).pipe(Ls(),Fi(w=>{f[_]=w}))),Hx(1),iB(f),eo(_=>oC(_)?ni:bf(_)))}(f,a,i,s).pipe(gt(_=>(a._resolvedData=_,a.data=kB(a,e).resolve,d&&iV(d)&&(a.data[bm]=d.title),null)))}(_.route,s,a,i)),Fi(()=>f++),Hx(1),ze(_=>f===d.length?je(e):ni))})}(e.paramsInheritanceStrategy,this.environmentInjector),Fi({next:()=>D=!0,complete:()=>{D||(e.restoreHistory(w),this.cancelNavigationTransition(w,"",2,e))}}))}),Fi(w=>{const D=new q_(w.id,this.urlSerializer.serialize(w.extractedUrl),this.urlSerializer.serialize(w.urlAfterRedirects),w.targetSnapshot);this.events.next(D)}))}),Mk(_=>{const w=D=>{var k;const P=[];null!==(k=D.routeConfig)&&void 0!==k&&k.loadComponent&&!D.routeConfig._loadedComponent&&P.push(this.configLoader.loadComponent(D.routeConfig).pipe(Fi(z=>{D.component=z}),gt(()=>{})));for(const z of D.children)P.push(...w(z));return P};return wu(w(_.targetSnapshot.root)).pipe(ym(),Pn(1))}),Mk(()=>this.afterPreactivation()),gt(_=>{const w=function IB(a,i,e){const s=Am(a,i._root,e?e._root:void 0);return new TB(s,i)}(e.routeReuseStrategy,_.targetSnapshot,_.currentRouterState);return s={..._,targetRouterState:w}}),Fi(_=>{e.currentUrlTree=_.urlAfterRedirects,e.rawUrlTree=e.urlHandlingStrategy.merge(_.urlAfterRedirects,_.rawUrl),e.routerState=_.targetRouterState,"deferred"===e.urlUpdateStrategy&&(_.extras.skipLocationChange||e.setBrowserUrl(e.rawUrlTree,_),e.browserUrlTree=_.urlAfterRedirects)}),((a,i,e)=>gt(s=>(new Zj(i,s.targetRouterState,s.currentRouterState,e).activate(a),s)))(this.rootContexts,e.routeReuseStrategy,_=>this.events.next(_)),Fi({next:_=>{var w;d=!0,this.lastSuccessfulNavigation=this.currentNavigation,e.navigated=!0,this.events.next(new Mf(_.id,this.urlSerializer.serialize(_.extractedUrl),this.urlSerializer.serialize(e.currentUrlTree))),null===(w=e.titleStrategy)||void 0===w||w.updateTitle(_.targetRouterState.snapshot),_.resolve(!0)},complete:()=>{d=!0}}),z_(()=>{var _;d||f||this.cancelNavigationTransition(s,"",1,e),(null===(_=this.currentNavigation)||void 0===_?void 0:_.id)===s.id&&(this.currentNavigation=null)}),eo(_=>{if(f=!0,FB(_)){vk(_)||(e.navigated=!0,e.restoreHistory(s,!0));const D=new Jx(s.id,this.urlSerializer.serialize(s.extractedUrl),_.message,_.cancellationCode);if(this.events.next(D),vk(_)){const k=e.urlHandlingStrategy.merge(_.url,e.rawUrlTree),P={skipLocationChange:s.extras.skipLocationChange,replaceUrl:"eager"===e.urlUpdateStrategy||Ak(s.source)};e.scheduleNavigation(k,gl,null,P,{resolve:s.resolve,reject:s.reject,promise:s.promise})}else s.resolve(!1)}else{var w;e.restoreHistory(s,!0);const D=new xB(s.id,this.urlSerializer.serialize(s.extractedUrl),_,null!==(w=s.targetSnapshot)&&void 0!==w?w:void 0);this.events.next(D);try{s.resolve(e.errorHandler(_))}catch(k){s.reject(k)}}return ni}))}))}cancelNavigationTransition(e,s,d,f){const _=new Jx(e.id,this.urlSerializer.serialize(e.extractedUrl),s,d);this.events.next(_),e.resolve(!1)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function Ak(a){return a!==gl}let rV=(()=>{class a{buildTitle(e){let s,d=e.root;for(;void 0!==d;){var f;s=null!==(f=this.getResolvedTitleForRoute(d))&&void 0!==f?f:s,d=d.children.find(_=>_.outlet===_n)}return s}getResolvedTitleForRoute(e){return e.data[bm]}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(){return Gt(fC)},providedIn:"root"}),a})(),fC=(()=>{class a extends rV{constructor(e){super(),this.title=e}updateTitle(e){const s=this.buildTitle(e);void 0!==s&&this.title.setTitle(s)}}return a.\u0275fac=function(e){return new(e||a)(oe(EN))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),_a=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(){return Gt(aV)},providedIn:"root"}),a})();class w7{shouldDetach(i){return!1}store(i,e){}shouldAttach(i){return!1}retrieve(i){return null}shouldReuseRoute(i,e){return i.routeConfig===e.routeConfig}}let aV=(()=>{class a extends w7{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const oy=new _e("",{providedIn:"root",factory:()=>({})});let C7=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:function(){return Gt(oV)},providedIn:"root"}),a})(),oV=(()=>{class a{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,s){return e}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function kk(a){throw a}function S7(a,i,e){return i.parse("/")}const Ek={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},D7={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let ea=(()=>{class a{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){var e;return null===(e=this.location.getState())||void 0===e?void 0:e.\u0275routerPageId}get events(){return this.navigationTransitions.events}constructor(){var e;this.disposed=!1,this.currentPageId=0,this.console=Gt(fF),this.isNgZoneEnabled=!1,this.options=Gt(oy,{optional:!0})||{},this.errorHandler=this.options.errorHandler||kk,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||S7,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=Gt(C7),this.routeReuseStrategy=Gt(_a),this.urlCreationStrategy=Gt(MB),this.titleStrategy=Gt(rV),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=oB(null!==(e=Gt(Pf,{optional:!0}))&&void 0!==e?e:[]),this.navigationTransitions=Gt(Nm),this.urlSerializer=Gt(xm),this.location=Gt(uf),this.isNgZoneEnabled=Gt(Je)instanceof Je&&Je.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new xf,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=AB(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe(s=>{this.lastSuccessfulId=s.id,this.currentPageId=s.targetPageId},s=>{this.console.warn(`Unhandled Navigation Error: ${s}`)})}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const e=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),gl,e)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(e=>{const s="popstate"===e.type?"popstate":"hashchange";"popstate"===s&&setTimeout(()=>{this.navigateToSyncWithBrowser(e.url,s,e.state)},0)}))}navigateToSyncWithBrowser(e,s,d){const f={replaceUrl:!0},_=null!=d&&d.navigationId?d:null;if(d){const D={...d};delete D.navigationId,delete D.\u0275routerPageId,0!==Object.keys(D).length&&(f.state=D)}const w=this.parseUrl(e);this.scheduleNavigation(w,s,_,f)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(e){this.config=e.map(K_),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(e,s={}){const{relativeTo:d,queryParams:f,fragment:_,queryParamsHandling:w,preserveFragment:D}=s,k=D?this.currentUrlTree.fragment:_;let P=null;switch(w){case"merge":P={...this.currentUrlTree.queryParams,...f};break;case"preserve":P=this.currentUrlTree.queryParams;break;default:P=f||null}return null!==P&&(P=this.removeEmptyProps(P)),this.urlCreationStrategy.createUrlTree(d,this.routerState,this.currentUrlTree,e,P,k??null)}navigateByUrl(e,s={skipLocationChange:!1}){const d=Jr(e)?e:this.parseUrl(e),f=this.urlHandlingStrategy.merge(d,this.rawUrlTree);return this.scheduleNavigation(f,gl,null,s)}navigate(e,s={skipLocationChange:!1}){return function pC(a){for(let i=0;i{const f=e[d];return null!=f&&(s[d]=f),s},{})}scheduleNavigation(e,s,d,f,_){if(this.disposed)return Promise.resolve(!1);let w,D,k,P;if(_?(w=_.resolve,D=_.reject,k=_.promise):k=new Promise((Z,te)=>{w=Z,D=te}),"computed"===this.canceledNavigationResolution)if(d&&d.\u0275routerPageId)P=d.\u0275routerPageId;else if(f.replaceUrl||f.skipLocationChange){var z;P=null!==(z=this.browserPageId)&&void 0!==z?z:0}else{var W;P=(null!==(W=this.browserPageId)&&void 0!==W?W:0)+1}else P=0;return this.navigationTransitions.handleNavigationRequest({targetPageId:P,source:s,restoredState:d,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:f,resolve:w,reject:D,promise:k,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),k.catch(Z=>Promise.reject(Z))}setBrowserUrl(e,s){const d=this.urlSerializer.serialize(e),f={...s.extras.state,...this.generateNgRouterState(s.id,s.targetPageId)};this.location.isCurrentPathEqualTo(d)||s.extras.replaceUrl?this.location.replaceState(d,"",f):this.location.go(d,"",f)}restoreHistory(e,s=!1){if("computed"===this.canceledNavigationResolution){var d,f;const _=this.currentPageId-e.targetPageId;"popstate"!==e.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==(null===(d=this.getCurrentNavigation())||void 0===d?void 0:d.finalUrl)||0===_?this.currentUrlTree===(null===(f=this.getCurrentNavigation())||void 0===f?void 0:f.finalUrl)&&0===_&&(this.resetState(e),this.browserUrlTree=e.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(_)}else"replace"===this.canceledNavigationResolution&&(s&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=e.currentRouterState,this.currentUrlTree=e.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,s){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:s}:{navigationId:e}}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),jo=(()=>{class a{constructor(e,s,d,f,_,w){this.router=e,this.route=s,this.tabIndexAttribute=d,this.renderer=f,this.el=_,this.locationStrategy=w,this._preserveFragment=!1,this._skipLocationChange=!1,this._replaceUrl=!1,this.href=null,this.commands=null,this.onChanges=new Ue;const D=_.nativeElement.tagName;this.isAnchorElement="A"===D||"AREA"===D,this.isAnchorElement?this.subscription=e.events.subscribe(k=>{k instanceof Mf&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}set preserveFragment(e){this._preserveFragment=lm(e)}get preserveFragment(){return this._preserveFragment}set skipLocationChange(e){this._skipLocationChange=lm(e)}get skipLocationChange(){return this._skipLocationChange}set replaceUrl(e){this._replaceUrl=lm(e)}get replaceUrl(){return this._replaceUrl}setTabIndexIfNotOnNativeEl(e){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(e){null!=e?(this.commands=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(e,s,d,f,_){return!!(null===this.urlTree||this.isAnchorElement&&(0!==e||s||d||f||_||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(this.urlTree,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state}),!this.isAnchorElement)}ngOnDestroy(){var e;null===(e=this.subscription)||void 0===e||e.unsubscribe()}updateHref(){var e;this.href=null!==this.urlTree&&this.locationStrategy?null===(e=this.locationStrategy)||void 0===e?void 0:e.prepareExternalUrl(this.router.serializeUrl(this.urlTree)):null;const s=null===this.href?null:function C0(a,i,e){return function U2(a,i){return"src"===i&&("embed"===a||"frame"===a||"iframe"===a||"media"===a||"script"===a)||"href"===i&&("base"===a||"link"===a)?kD:tn}(i,e)(a)}(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",s)}applyAttributeValue(e,s){const d=this.renderer,f=this.el.nativeElement;null!==s?d.setAttribute(f,e,s):d.removeAttribute(f,e)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}}return a.\u0275fac=function(e){return new(e||a)(F(ea),F(xi),hs("tabindex"),F(Yl),F(Be),F(fu))},a.\u0275dir=me({type:a,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(e,s){1&e&&J("click",function(f){return s.onClick(f.button,f.ctrlKey,f.shiftKey,f.altKey,f.metaKey)}),2&e&&He("target",s.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",relativeTo:"relativeTo",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",routerLink:"routerLink"},standalone:!0,features:[$n]}),a})();class cV{}let M7=(()=>{class a{constructor(e,s,d,f,_){this.router=e,this.injector=d,this.preloadingStrategy=f,this.loader=_}setUpPreloading(){this.subscription=this.router.events.pipe(fi(e=>e instanceof Mf),sd(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,s){const d=[];for(const D of s){var f,_;D.providers&&!D._injector&&(D._injector=s_(D.providers,e,`Route: ${D.path}`));const k=null!==(f=D._injector)&&void 0!==f?f:e,P=null!==(_=D._loadedInjector)&&void 0!==_?_:k;if(D.loadChildren&&!D._loadedRoutes&&void 0===D.canLoad||D.loadComponent&&!D._loadedComponent)d.push(this.preloadConfig(k,D));else if(D.children||D._loadedRoutes){var w;d.push(this.processRoutes(P,null!==(w=D.children)&&void 0!==w?w:D._loadedRoutes))}}return Wi(d).pipe(Md())}preloadConfig(e,s){return this.preloadingStrategy.preload(s,()=>{let d;d=s.loadChildren&&void 0===s.canLoad?this.loader.loadChildren(e,s):je(null);const f=d.pipe(ze(_=>{var w;return null===_?je(void 0):(s._loadedRoutes=_.routes,s._loadedInjector=_.injector,this.processRoutes(null!==(w=_.injector)&&void 0!==w?w:e,_.routes))}));return s.loadComponent&&!s._loadedComponent?Wi([f,this.loader.loadComponent(s)]).pipe(Md()):f})}}return a.\u0275fac=function(e){return new(e||a)(oe(ea),oe(zw),oe(_s),oe(cV),oe(Rf))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const mC=new _e("");let dV=(()=>{class a{constructor(e,s,d,f,_={}){this.urlSerializer=e,this.transitions=s,this.viewportScroller=d,this.zone=f,this.options=_,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},_.scrollPositionRestoration=_.scrollPositionRestoration||"disabled",_.anchorScrolling=_.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof hk?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Mf&&(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof X_&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,s){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new X_(e,"popstate"===this.lastSource?this.store[this.restoredId]:null,s))})},0)})}ngOnDestroy(){var e,s;null===(e=this.routerEventsSubscription)||void 0===e||e.unsubscribe(),null===(s=this.scrollEventsSubscription)||void 0===s||s.unsubscribe()}}return a.\u0275fac=function(e){xs()},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();function Of(a,i){return{\u0275kind:a,\u0275providers:i}}function Pk(){const a=Gt(Gi);return i=>{var e,s;const d=a.get(cf);if(i!==d.components[0])return;const f=a.get(ea),_=a.get(hV);1===a.get(Rk)&&f.initialNavigation(),null===(e=a.get(_C,null,Rt.Optional))||void 0===e||e.setUpPreloading(),null===(s=a.get(mC,null,Rt.Optional))||void 0===s||s.init(),f.resetRootComponentType(d.componentTypes[0]),_.closed||(_.next(),_.unsubscribe())}}const hV=new _e("",{factory:()=>new Ue}),Rk=new _e("",{providedIn:"root",factory:()=>1});const _C=new _e("");function yC(a){return Of(0,[{provide:_C,useExisting:M7},{provide:cV,useExisting:a}])}const fV=new _e("ROUTER_FORROOT_GUARD"),Ok=[uf,{provide:xm,useClass:ok},ea,km,{provide:xi,useFactory:function uV(a){return a.routerState.root},deps:[ea]},Rf,[]];function P7(){return new yF("Router",ea)}let pV=(()=>{class a{constructor(e){}static forRoot(e,s){return{ngModule:a,providers:[Ok,[],{provide:Pf,multi:!0,useValue:e},{provide:fV,useFactory:R7,deps:[[ea,new yi,new co]]},{provide:oy,useValue:s||{}},null!=s&&s.useHash?{provide:fu,useClass:KT}:{provide:fu,useClass:cl},{provide:mC,useFactory:()=>{const a=Gt(WU),i=Gt(Je),e=Gt(oy),s=Gt(Nm),d=Gt(xm);return e.scrollOffset&&a.setOffset(e.scrollOffset),new dV(d,s,a,i,e)}},null!=s&&s.preloadingStrategy?yC(s.preloadingStrategy).\u0275providers:[],{provide:yF,multi:!0,useFactory:P7},null!=s&&s.initialNavigation?sy(s):[],[{provide:zm,useFactory:Pk},{provide:CT,multi:!0,useExisting:zm}]]}}static forChild(e){return{ngModule:a,providers:[{provide:Pf,multi:!0,useValue:e}]}}}return a.\u0275fac=function(e){return new(e||a)(oe(fV,8))},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[rC]}),a})();function R7(a){return"guarded"}function sy(a){return["disabled"===a.initialNavigation?Of(3,[{provide:Br,multi:!0,useFactory:()=>{const i=Gt(ea);return()=>{i.setUpLocationChangeListener()}}},{provide:Rk,useValue:2}]).\u0275providers:[],"enabledBlocking"===a.initialNavigation?Of(2,[{provide:Rk,useValue:0},{provide:Br,multi:!0,deps:[Gi],useFactory:i=>{const e=i.get(rx,Promise.resolve());return()=>e.then(()=>new Promise(d=>{const f=i.get(ea),_=i.get(hV);(function s(d){i.get(ea).events.pipe(fi(_=>_ instanceof Mf||_ instanceof Jx||_ instanceof xB),gt(_=>_ instanceof Mf||_ instanceof Jx&&(0===_.code||1===_.code)&&null),fi(_=>null!==_),Pn(1)).subscribe(()=>{d()})})(()=>{d(!0)}),i.get(Nm).afterPreactivation=()=>(d(!0),_.closed?je(void 0):_),f.initialNavigation()}))}}]).\u0275providers:[]]}const zm=new _e("");class Nk{constructor(i){this.user=i.user,this.role=i.role,this.admin=i.admin}get isStaff(){return"staff"===this.role||"admin"===this.role}get isAdmin(){return"admin"===this.role}get isLogged(){return null!=this.user}}function _V(a,i,e,s,d,f,_){try{var w=a[f](_),D=w.value}catch(k){return void e(k)}w.done?i(D):Promise.resolve(D).then(s,d)}function Xe(a){return function(){var i=this,e=arguments;return new Promise(function(s,d){var f=a.apply(i,e);function _(D){_V(f,s,d,_,w,"next",D)}function w(D){_V(f,s,d,_,w,"throw",D)}_(void 0)})}}function We(a){return null!=a&&"false"!=`${a}`}function er(a,i=0){return yV(a)?Number(a):i}function yV(a){return!isNaN(parseFloat(a))&&!isNaN(Number(a))}function wC(a){return Array.isArray(a)?a:[a]}function wr(a){return null==a?"":"string"==typeof a?a:`${a}px`}function hd(a){return a instanceof Be?a.nativeElement:a}function Bk(a,i=/\s+/){const e=[];if(null!=a){const s=Array.isArray(a)?a:`${a}`.split(i);for(const d of s){const f=`${d}`.trim();f&&e.push(f)}}return e}const Vk=["addListener","removeListener"],bV=["addEventListener","removeEventListener"],WK=["on","off"];function Bs(a,i,e,s){if(Wt(e)&&(s=e,e=void 0),s)return Bs(a,i,e).pipe(Vx(s));const[d,f]=function xV(a){return Wt(a.addEventListener)&&Wt(a.removeEventListener)}(a)?bV.map(_=>w=>a[_](i,w,e)):function O7(a){return Wt(a.addListener)&&Wt(a.removeListener)}(a)?Vk.map(wV(a,i)):function zk(a){return Wt(a.on)&&Wt(a.off)}(a)?WK.map(wV(a,i)):[];if(!d&&Ye(a))return ze(_=>Bs(_,i,e))(Dr(a));if(!d)throw new TypeError("Invalid event target");return new Gn(_=>{const w=(...D)=>_.next(1f(w)})}function wV(a,i){return e=>s=>a[e](i,s)}class CV extends xt{constructor(i,e){super()}schedule(i,e=0){return this}}const xC={setInterval(a,i,...e){const{delegate:s}=xC;return null!=s&&s.setInterval?s.setInterval(a,i,...e):setInterval(a,i,...e)},clearInterval(a){const{delegate:i}=xC;return((null==i?void 0:i.clearInterval)||clearInterval)(a)},delegate:void 0};class ly extends CV{constructor(i,e){super(i,e),this.scheduler=i,this.work=e,this.pending=!1}schedule(i,e=0){var s;if(this.closed)return this;this.state=i;const d=this.id,f=this.scheduler;return null!=d&&(this.id=this.recycleAsyncId(f,d,e)),this.pending=!0,this.delay=e,this.id=null!==(s=this.id)&&void 0!==s?s:this.requestAsyncId(f,this.id,e),this}requestAsyncId(i,e,s=0){return xC.setInterval(i.flush.bind(i,this),s)}recycleAsyncId(i,e,s=0){if(null!=s&&this.delay===s&&!1===this.pending)return e;null!=e&&xC.clearInterval(e)}execute(i,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const s=this._execute(i,e);if(s)return s;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(i,e){let d,s=!1;try{this.work(i)}catch(f){s=!0,d=f||new Error("Scheduled action threw falsy error")}if(s)return this.unsubscribe(),d}unsubscribe(){if(!this.closed){const{id:i,scheduler:e}=this,{actions:s}=e;this.work=this.state=this.scheduler=null,this.pending=!1,js(s,this),null!=i&&(this.id=this.recycleAsyncId(e,i,null)),this.delay=null,super.unsubscribe()}}}const cy={schedule(a){let i=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:s}=cy;s&&(i=s.requestAnimationFrame,e=s.cancelAnimationFrame);const d=i(f=>{e=void 0,a(f)});return new xt(()=>null==e?void 0:e(d))},requestAnimationFrame(...a){const{delegate:i}=cy;return((null==i?void 0:i.requestAnimationFrame)||requestAnimationFrame)(...a)},cancelAnimationFrame(...a){const{delegate:i}=cy;return((null==i?void 0:i.cancelAnimationFrame)||cancelAnimationFrame)(...a)},delegate:void 0},SV={now:()=>(SV.delegate||Date).now(),delegate:void 0};class dy{constructor(i,e=dy.now){this.schedulerActionCtor=i,this.now=e}schedule(i,e=0,s){return new this.schedulerActionCtor(this,i).schedule(s,e)}}dy.now=SV.now;class CC extends dy{constructor(i,e=dy.now){super(i,e),this.actions=[],this._active=!1}flush(i){const{actions:e}=this;if(this._active)return void e.push(i);let s;this._active=!0;do{if(s=i.execute(i.state,i.delay))break}while(i=e.shift());if(this._active=!1,s){for(;i=e.shift();)i.unsubscribe();throw s}}}const Gk=new class DV extends CC{flush(i){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:s}=this;let d;i=i||s.shift();do{if(d=i.execute(i.state,i.delay))break}while((i=s[0])&&i.id===e&&s.shift());if(this._active=!1,d){for(;(i=s[0])&&i.id===e&&s.shift();)i.unsubscribe();throw d}}}(class Hk extends ly{constructor(i,e){super(i,e),this.scheduler=i,this.work=e}requestAsyncId(i,e,s=0){return null!==s&&s>0?super.requestAsyncId(i,e,s):(i.actions.push(this),i._scheduled||(i._scheduled=cy.requestAnimationFrame(()=>i.flush(void 0))))}recycleAsyncId(i,e,s=0){var d;if(null!=s?s>0:this.delay>0)return super.recycleAsyncId(i,e,s);const{actions:f}=i;null!=e&&(null===(d=f[f.length-1])||void 0===d?void 0:d.id)!==e&&(cy.cancelAnimationFrame(e),i._scheduled=void 0)}});let uy,Uk=1;const Hm={};function Lf(a){return a in Hm&&(delete Hm[a],!0)}const jk={setImmediate(a){const i=Uk++;return Hm[i]=!0,uy||(uy=Promise.resolve()),uy.then(()=>Lf(i)&&a()),i},clearImmediate(a){Lf(a)}},{setImmediate:TV,clearImmediate:$k}=jk,hy={setImmediate(...a){const{delegate:i}=hy;return((null==i?void 0:i.setImmediate)||TV)(...a)},clearImmediate(a){const{delegate:i}=hy;return((null==i?void 0:i.clearImmediate)||$k)(a)},delegate:void 0},Mu=new class N7 extends CC{flush(i){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:s}=this;let d;i=i||s.shift();do{if(d=i.execute(i.state,i.delay))break}while((i=s[0])&&i.id===e&&s.shift());if(this._active=!1,d){for(;(i=s[0])&&i.id===e&&s.shift();)i.unsubscribe();throw d}}}(class F7 extends ly{constructor(i,e){super(i,e),this.scheduler=i,this.work=e}requestAsyncId(i,e,s=0){return null!==s&&s>0?super.requestAsyncId(i,e,s):(i.actions.push(this),i._scheduled||(i._scheduled=hy.setImmediate(i.flush.bind(i,void 0))))}recycleAsyncId(i,e,s=0){var d;if(null!=s?s>0:this.delay>0)return super.recycleAsyncId(i,e,s);const{actions:f}=i;null!=e&&(null===(d=f[f.length-1])||void 0===d?void 0:d.id)!==e&&(hy.clearImmediate(e),i._scheduled=void 0)}}),Co=new CC(ly),AV=Co;function EV(a){return a instanceof Date&&!isNaN(a)}function Gm(a=0,i,e=AV){let s=-1;return null!=i&&(vS(i)?e=i:s=i),new Gn(d=>{let f=EV(a)?+a-e.now():a;f<0&&(f=0);let _=0;return e.schedule(function(){d.closed||(d.next(_++),0<=s?this.schedule(void 0,s):d.complete())},f)})}function Wk(a,i=Co){return function kV(a){return Un((i,e)=>{let s=!1,d=null,f=null,_=!1;const w=()=>{if(null==f||f.unsubscribe(),f=null,s){s=!1;const k=d;d=null,e.next(k)}_&&e.complete()},D=()=>{f=null,_&&e.complete()};i.subscribe(ci(e,k=>{s=!0,d=k,f||Dr(a(k)).subscribe(f=ci(e,w,D))},()=>{_=!0,(!s||!f||f.closed)&&e.complete()}))})}(()=>Gm(a,i))}function Tt(a){return Un((i,e)=>{Dr(a).subscribe(ci(e,()=>e.complete(),Dd)),!e.closed&&i.subscribe(e)})}let Yk;try{Yk=typeof Intl<"u"&&Intl.v8BreakIterator}catch{Yk=!1}let Um,si=(()=>{class a{constructor(e){this._platformId=e,this.isBrowser=this._platformId?function xx(a){return a===aN}(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!Yk)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return a.\u0275fac=function(e){return new(e||a)(oe(Vw))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const IV=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function PV(){if(Um)return Um;if("object"!=typeof document||!document)return Um=new Set(IV),Um;let a=document.createElement("input");return Um=new Set(IV.filter(i=>(a.setAttribute("type",i),a.type===i))),Um}let Tu,SC,Ff,qk;function Au(a){return function B7(){if(null==Tu&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Tu=!0}))}finally{Tu=Tu||!1}return Tu}()?a:!!a.capture}function RV(){if(null==Ff){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Ff=!1,Ff;if("scrollBehavior"in document.documentElement.style)Ff=!0;else{const a=Element.prototype.scrollTo;Ff=!!a&&!/\{\s*\[native code\]\s*\}/.test(a.toString())}}return Ff}function fy(){if("object"!=typeof document||!document)return 0;if(null==SC){const a=document.createElement("div"),i=a.style;a.dir="rtl",i.width="1px",i.overflow="auto",i.visibility="hidden",i.pointerEvents="none",i.position="absolute";const e=document.createElement("div"),s=e.style;s.width="2px",s.height="1px",a.appendChild(e),document.body.appendChild(a),SC=0,0===a.scrollLeft&&(a.scrollLeft=1,SC=0===a.scrollLeft?1:2),a.remove()}return SC}function py(){let a=typeof document<"u"&&document?document.activeElement:null;for(;a&&a.shadowRoot;){const i=a.shadowRoot.activeElement;if(i===a)break;a=i}return a}function fd(a){return a.composedPath?a.composedPath()[0]:a.target}function Xk(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const H7=new _e("cdk-dir-doc",{providedIn:"root",factory:function G7(){return Gt(bt)}}),U7=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let Ni=(()=>{class a{constructor(e){this.value="ltr",this.change=new ye,e&&(this.value=function j7(a){var i;const e=(null==a?void 0:a.toLowerCase())||"";return"auto"===e&&typeof navigator<"u"&&null!==(i=navigator)&&void 0!==i&&i.language?U7.test(navigator.language)?"rtl":"ltr":"rtl"===e?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return a.\u0275fac=function(e){return new(e||a)(oe(H7,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),my=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})();const OV=["contentWrapper"],LV=["*"],FV=new _e("VIRTUAL_SCROLL_STRATEGY");let gy=(()=>{class a{constructor(e,s,d){this._ngZone=e,this._platform=s,this._scrolled=new Ue,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=d}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const s=this.scrollContainers.get(e);s&&(s.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new Gn(s=>{this._globalSubscription||this._addGlobalListener();const d=e>0?this._scrolled.pipe(Wk(e)).subscribe(s):this._scrolled.subscribe(s);return this._scrolledCount++,()=>{d.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):je()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((e,s)=>this.deregister(s)),this._scrolled.complete()}ancestorScrolled(e,s){const d=this.getAncestorScrollContainers(e);return this.scrolled(s).pipe(fi(f=>!f||d.indexOf(f)>-1))}getAncestorScrollContainers(e){const s=[];return this.scrollContainers.forEach((d,f)=>{this._scrollableContainsElement(f,e)&&s.push(f)}),s}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,s){let d=hd(s),f=e.getElementRef().nativeElement;do{if(d==f)return!0}while(d=d.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>Bs(this._getWindow().document,"scroll").subscribe(()=>this._scrolled.next()))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return a.\u0275fac=function(e){return new(e||a)(oe(Je),oe(si),oe(bt,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),BV=(()=>{class a{constructor(e,s,d,f){this.elementRef=e,this.scrollDispatcher=s,this.ngZone=d,this.dir=f,this._destroyed=new Ue,this._elementScrolled=new Gn(_=>this.ngZone.runOutsideAngular(()=>Bs(this.elementRef.nativeElement,"scroll").pipe(Tt(this._destroyed)).subscribe(_)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const s=this.elementRef.nativeElement,d=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=d?e.end:e.start),null==e.right&&(e.right=d?e.start:e.end),null!=e.bottom&&(e.top=s.scrollHeight-s.clientHeight-e.bottom),d&&0!=fy()?(null!=e.left&&(e.right=s.scrollWidth-s.clientWidth-e.left),2==fy()?e.left=e.right:1==fy()&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=s.scrollWidth-s.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const s=this.elementRef.nativeElement;RV()?s.scrollTo(e):(null!=e.top&&(s.scrollTop=e.top),null!=e.left&&(s.scrollLeft=e.left))}measureScrollOffset(e){const s="left",d="right",f=this.elementRef.nativeElement;if("top"==e)return f.scrollTop;if("bottom"==e)return f.scrollHeight-f.clientHeight-f.scrollTop;const _=this.dir&&"rtl"==this.dir.value;return"start"==e?e=_?d:s:"end"==e&&(e=_?s:d),_&&2==fy()?e==s?f.scrollWidth-f.clientWidth-f.scrollLeft:f.scrollLeft:_&&1==fy()?e==s?f.scrollLeft+f.scrollWidth-f.clientWidth:-f.scrollLeft:e==s?f.scrollLeft:f.scrollWidth-f.clientWidth-f.scrollLeft}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(gy),F(Je),F(Ni,8))},a.\u0275dir=me({type:a,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),a})(),hc=(()=>{class a{constructor(e,s,d){this._platform=e,this._change=new Ue,this._changeListener=f=>{this._change.next(f)},this._document=d,s.runOutsideAngular(()=>{if(e.isBrowser){const f=this._getWindow();f.addEventListener("resize",this._changeListener),f.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:s,height:d}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+d,right:e.left+s,height:d,width:s}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,s=this._getWindow(),d=e.documentElement,f=d.getBoundingClientRect();return{top:-f.top||e.body.scrollTop||s.scrollY||d.scrollTop||0,left:-f.left||e.body.scrollLeft||s.scrollX||d.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(Wk(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}}return a.\u0275fac=function(e){return new(e||a)(oe(si),oe(Je),oe(bt,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const VV=new _e("VIRTUAL_SCROLLABLE");let Y7=(()=>{class a extends BV{constructor(e,s,d,f){super(e,s,d,f)}measureViewportSize(e){const s=this.elementRef.nativeElement;return"horizontal"===e?s.clientWidth:s.clientHeight}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(gy),F(Je),F(Ni,8))},a.\u0275dir=me({type:a,features:[Se]}),a})();const X7=typeof requestAnimationFrame<"u"?Gk:Mu;let Z7=(()=>{class a extends Y7{get orientation(){return this._orientation}set orientation(e){this._orientation!==e&&(this._orientation=e,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(e){this._appendOnly=We(e)}constructor(e,s,d,f,_,w,D,k){super(e,w,d,_),this.elementRef=e,this._changeDetectorRef=s,this._scrollStrategy=f,this.scrollable=k,this._platform=Gt(si),this._detachedSubject=new Ue,this._renderedRangeSubject=new Ue,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new Gn(P=>this._scrollStrategy.scrolledIndexChange.subscribe(z=>Promise.resolve().then(()=>this.ngZone.run(()=>P.next(z))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=xt.EMPTY,this._viewportChanges=D.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(Ji(null),Wk(0,X7)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(e){this.ngZone.runOutsideAngular(()=>{this._forOf=e,this._forOf.dataStream.pipe(Tt(this._detachedSubject)).subscribe(s=>{const d=s.length;d!==this._dataLength&&(this._dataLength=d,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(e){return this.getElementRef().nativeElement.getBoundingClientRect()[e]}setTotalContentSize(e){this._totalContentSize!==e&&(this._totalContentSize=e,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(e){(function q7(a,i){return a.start==i.start&&a.end==i.end})(this._renderedRange,e)||(this.appendOnly&&(e={start:0,end:Math.max(this._renderedRange.end,e.end)}),this._renderedRangeSubject.next(this._renderedRange=e),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(e,s="to-start"){e=this.appendOnly&&"to-start"===s?0:e;const f="horizontal"==this.orientation,_=f?"X":"Y";let D=`translate${_}(${Number((f&&this.dir&&"rtl"==this.dir.value?-1:1)*e)}px)`;this._renderedContentOffset=e,"to-end"===s&&(D+=` translate${_}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=D&&(this._renderedContentTransform=D,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(e,s="auto"){const d={behavior:s};"horizontal"===this.orientation?d.start=e:d.top=e,this.scrollable.scrollTo(d)}scrollToIndex(e,s="auto"){this._scrollStrategy.scrollToIndex(e,s)}measureScrollOffset(e){let s;return s=this.scrollable==this?d=>super.measureScrollOffset(d):d=>this.scrollable.measureScrollOffset(d),Math.max(0,s(e??("horizontal"===this.orientation?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(e){var s;let d;const f="left",_="right",w="rtl"==(null===(s=this.dir)||void 0===s?void 0:s.value);d="start"==e?w?_:f:"end"==e?w?f:_:e||("horizontal"===this.orientation?"left":"top");const D=this.scrollable.measureBoundingClientRectWithScrollOffset(d);return this.elementRef.nativeElement.getBoundingClientRect()[d]-D}measureRenderedContentSize(){const e=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?e.offsetWidth:e.offsetHeight}measureRangeSize(e){return this._forOf?this._forOf.measureRangeSize(e,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(e){e&&this._runAfterChangeDetection.push(e),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const e=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const s of e)s()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Je),F(FV,8),F(Ni,8),F(gy),F(hc),F(VV,8))},a.\u0275cmp=we({type:a,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(e,s){if(1&e&&ot(OV,7),2&e){let d;Ee(d=Oe())&&(s._contentWrapper=d.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(e,s){2&e&&at("cdk-virtual-scroll-orientation-horizontal","horizontal"===s.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==s.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[et([{provide:BV,useFactory:(i,e)=>i||e,deps:[[new yi,new a0(VV)],a]}]),Se,eT],ngContentSelectors:LV,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(e,s){1&e&&(Fn(),I(0,"div",0,1),ht(2),O(),he(3,"div",2)),2&e&&(N(3),Ra("width",s._totalContentWidth)("height",s._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),a})(),Nf=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})(),Zk=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[my,Nf,Z7,my,Nf]}),a})();class _y{attach(i){return this._attachedHost=i,i.attach(this)}detach(){let i=this._attachedHost;null!=i&&(this._attachedHost=null,i.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(i){this._attachedHost=i}}class pd extends _y{constructor(i,e,s,d,f){super(),this.component=i,this.viewContainerRef=e,this.injector=s,this.componentFactoryResolver=d,this.projectableNodes=f}}class fc extends _y{constructor(i,e,s,d){super(),this.templateRef=i,this.viewContainerRef=e,this.context=s,this.injector=d}get origin(){return this.templateRef.elementRef}attach(i,e=this.context){return this.context=e,super.attach(i)}detach(){return this.context=void 0,super.detach()}}class GV extends _y{constructor(i){super(),this.element=i instanceof Be?i.nativeElement:i}}class DC{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(i){return i instanceof pd?(this._attachedPortal=i,this.attachComponentPortal(i)):i instanceof fc?(this._attachedPortal=i,this.attachTemplatePortal(i)):this.attachDomPortal&&i instanceof GV?(this._attachedPortal=i,this.attachDomPortal(i)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(i){this._disposeFn=i}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class UV extends DC{constructor(i,e,s,d,f){super(),this.outletElement=i,this._componentFactoryResolver=e,this._appRef=s,this._defaultInjector=d,this.attachDomPortal=_=>{const w=_.element,D=this._document.createComment("dom-portal");w.parentNode.insertBefore(D,w),this.outletElement.appendChild(w),this._attachedPortal=_,super.setDisposeFn(()=>{D.parentNode&&D.parentNode.replaceChild(w,D)})},this._document=f}attachComponentPortal(i){const s=(i.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(i.component);let d;return i.viewContainerRef?(d=i.viewContainerRef.createComponent(s,i.viewContainerRef.length,i.injector||i.viewContainerRef.injector,i.projectableNodes||void 0),this.setDisposeFn(()=>d.destroy())):(d=s.create(i.injector||this._defaultInjector||Gi.NULL),this._appRef.attachView(d.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(d.hostView),d.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(d)),this._attachedPortal=i,d}attachTemplatePortal(i){let e=i.viewContainerRef,s=e.createEmbeddedView(i.templateRef,i.context,{injector:i.injector});return s.rootNodes.forEach(d=>this.outletElement.appendChild(d)),s.detectChanges(),this.setDisposeFn(()=>{let d=e.indexOf(s);-1!==d&&e.remove(d)}),this._attachedPortal=i,s}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(i){return i.hostView.rootNodes[0]}}let MC=(()=>{class a extends fc{constructor(e,s){super(e,s)}}return a.\u0275fac=function(e){return new(e||a)(F(hi),F(Hn))},a.\u0275dir=me({type:a,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[Se]}),a})(),pc=(()=>{class a extends DC{constructor(e,s,d){super(),this._componentFactoryResolver=e,this._viewContainerRef=s,this._isInitialized=!1,this.attached=new ye,this.attachDomPortal=f=>{const _=f.element,w=this._document.createComment("dom-portal");f.setAttachedHost(this),_.parentNode.insertBefore(w,_),this._getRootNode().appendChild(_),this._attachedPortal=f,super.setDisposeFn(()=>{w.parentNode&&w.parentNode.replaceChild(_,w)})},this._document=d}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const s=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,f=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),_=s.createComponent(f,s.length,e.injector||s.injector,e.projectableNodes||void 0);return s!==this._viewContainerRef&&this._getRootNode().appendChild(_.hostView.rootNodes[0]),super.setDisposeFn(()=>_.destroy()),this._attachedPortal=e,this._attachedRef=_,this.attached.emit(_),_}attachTemplatePortal(e){e.setAttachedHost(this);const s=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=s,this.attached.emit(s),s}_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}}return a.\u0275fac=function(e){return new(e||a)(F(ca),F(Hn),F(bt))},a.\u0275dir=me({type:a,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[Se]}),a})(),ku=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})();function pr(a,...i){return i.length?i.some(e=>a[e]):a.altKey||a.shiftKey||a.ctrlKey||a.metaKey}const a3=RV();class w${constructor(i,e){this._viewportRuler=i,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const i=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=i.style.left||"",this._previousHTMLStyles.top=i.style.top||"",i.style.left=wr(-this._previousScrollPosition.left),i.style.top=wr(-this._previousScrollPosition.top),i.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const i=this._document.documentElement,s=i.style,d=this._document.body.style,f=s.scrollBehavior||"",_=d.scrollBehavior||"";this._isEnabled=!1,s.left=this._previousHTMLStyles.left,s.top=this._previousHTMLStyles.top,i.classList.remove("cdk-global-scrollblock"),a3&&(s.scrollBehavior=d.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),a3&&(s.scrollBehavior=f,d.scrollBehavior=_)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.body,s=this._viewportRuler.getViewportSize();return e.scrollHeight>s.height||e.scrollWidth>s.width}}class s3{constructor(i,e,s,d){this._scrollDispatcher=i,this._ngZone=e,this._viewportRuler=s,this._config=d,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(i){this._overlayRef=i}enable(){if(this._scrollSubscription)return;const i=this._scrollDispatcher.scrolled(0);this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=i.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=i.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class EC{enable(){}disable(){}attach(){}}function tE(a,i){return i.some(e=>a.bottome.bottom||a.righte.right)}function l3(a,i){return i.some(e=>a.tope.bottom||a.lefte.right)}class nE{constructor(i,e,s,d){this._scrollDispatcher=i,this._viewportRuler=e,this._ngZone=s,this._config=d,this._scrollSubscription=null}attach(i){this._overlayRef=i}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:s,height:d}=this._viewportRuler.getViewportSize();tE(e,[{width:s,height:d,bottom:d,right:s,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let c3=(()=>{class a{constructor(e,s,d,f){this._scrollDispatcher=e,this._viewportRuler=s,this._ngZone=d,this.noop=()=>new EC,this.close=_=>new s3(this._scrollDispatcher,this._ngZone,this._viewportRuler,_),this.block=()=>new w$(this._viewportRuler,this._document),this.reposition=_=>new nE(this._scrollDispatcher,this._viewportRuler,this._ngZone,_),this._document=f}}return a.\u0275fac=function(e){return new(e||a)(oe(gy),oe(hc),oe(Je),oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();class md{constructor(i){if(this.scrollStrategy=new EC,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,i){const e=Object.keys(i);for(const s of e)void 0!==i[s]&&(this[s]=i[s])}}}class C${constructor(i,e){this.connectionPair=i,this.scrollableViewProperties=e}}let d3=(()=>{class a{constructor(e){this._attachedOverlays=[],this._document=e}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const s=this._attachedOverlays.indexOf(e);s>-1&&this._attachedOverlays.splice(s,1),0===this._attachedOverlays.length&&this.detach()}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),S$=(()=>{class a extends d3{constructor(e,s){super(e),this._ngZone=s,this._keydownListener=d=>{const f=this._attachedOverlays;for(let _=f.length-1;_>-1;_--)if(f[_]._keydownEvents.observers.length>0){const w=f[_]._keydownEvents;this._ngZone?this._ngZone.run(()=>w.next(d)):w.next(d);break}}}add(e){super.add(e),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return a.\u0275fac=function(e){return new(e||a)(oe(bt),oe(Je,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),D$=(()=>{class a extends d3{constructor(e,s,d){super(e),this._platform=s,this._ngZone=d,this._cursorStyleIsSet=!1,this._pointerDownListener=f=>{this._pointerDownEventTarget=fd(f)},this._clickListener=f=>{const _=fd(f),w="click"===f.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:_;this._pointerDownEventTarget=null;const D=this._attachedOverlays.slice();for(let k=D.length-1;k>-1;k--){const P=D[k];if(P._outsidePointerEvents.observers.length<1||!P.hasAttached())continue;if(P.overlayElement.contains(_)||P.overlayElement.contains(w))break;const z=P._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>z.next(f)):z.next(f)}}}add(e){if(super.add(e),!this._isAttached){const s=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(s)):this._addEventListeners(s),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=s.style.cursor,s.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const e=this._document.body;e.removeEventListener("pointerdown",this._pointerDownListener,!0),e.removeEventListener("click",this._clickListener,!0),e.removeEventListener("auxclick",this._clickListener,!0),e.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(e.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(e){e.addEventListener("pointerdown",this._pointerDownListener,!0),e.addEventListener("click",this._clickListener,!0),e.addEventListener("auxclick",this._clickListener,!0),e.addEventListener("contextmenu",this._clickListener,!0)}}return a.\u0275fac=function(e){return new(e||a)(oe(bt),oe(si),oe(Je,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),IC=(()=>{class a{constructor(e,s){this._platform=s,this._document=e}ngOnDestroy(){var e;null===(e=this._containerElement)||void 0===e||e.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||Xk()){const d=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let f=0;fthis._backdropClick.next(z),this._backdropTransitionendHandler=z=>{this._disposeBackdrop(z.target)},this._keydownEvents=new Ue,this._outsidePointerEvents=new Ue,d.scrollStrategy&&(this._scrollStrategy=d.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=d.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(i){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const e=this._portalOutlet.attach(i);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(Pn(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof(null==e?void 0:e.onDestroy)&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const i=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),i}dispose(){var i;const e=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),null===(i=this._host)||void 0===i||i.remove(),this._previousHostParent=this._pane=this._host=null,e&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(i){i!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=i,this.hasAttached()&&(i.attach(this),this.updatePosition()))}updateSize(i){this._config={...this._config,...i},this._updateElementSize()}setDirection(i){this._config={...this._config,direction:i},this._updateElementDirection()}addPanelClass(i){this._pane&&this._toggleClasses(this._pane,i,!0)}removePanelClass(i){this._pane&&this._toggleClasses(this._pane,i,!1)}getDirection(){const i=this._config.direction;return i?"string"==typeof i?i:i.value:"ltr"}updateScrollStrategy(i){i!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=i,this.hasAttached()&&(i.attach(this),i.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const i=this._pane.style;i.width=wr(this._config.width),i.height=wr(this._config.height),i.minWidth=wr(this._config.minWidth),i.minHeight=wr(this._config.minHeight),i.maxWidth=wr(this._config.maxWidth),i.maxHeight=wr(this._config.maxHeight)}_togglePointerEvents(i){this._pane.style.pointerEvents=i?"":"none"}_attachBackdrop(){const i="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(i)})}):this._backdropElement.classList.add(i)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const i=this._backdropElement;if(i){if(this._animationsDisabled)return void this._disposeBackdrop(i);i.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{i.addEventListener("transitionend",this._backdropTransitionendHandler)}),i.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(i)},500))}}_toggleClasses(i,e,s){const d=wC(e||[]).filter(f=>!!f);d.length&&(s?i.classList.add(...d):i.classList.remove(...d))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const i=this._ngZone.onStable.pipe(Tt(Mi(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),i.unsubscribe())})})}_disposeScrollStrategy(){const i=this._scrollStrategy;i&&(i.disable(),i.detach&&i.detach())}_disposeBackdrop(i){i&&(i.removeEventListener("click",this._backdropClickHandler),i.removeEventListener("transitionend",this._backdropTransitionendHandler),i.remove(),this._backdropElement===i&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const u3="cdk-overlay-connected-position-bounding-box",M$=/([A-Za-z%]+)$/;class iE{get positions(){return this._preferredPositions}constructor(i,e,s,d,f){this._viewportRuler=e,this._document=s,this._platform=d,this._overlayContainer=f,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new Ue,this._resizeSubscription=xt.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(i)}attach(i){this._validatePositions(),i.hostElement.classList.add(u3),this._overlayRef=i,this._boundingBox=i.hostElement,this._pane=i.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const i=this._originRect,e=this._overlayRect,s=this._viewportRect,d=this._containerRect,f=[];let _;for(let w of this._preferredPositions){let D=this._getOriginPoint(i,d,w),k=this._getOverlayPoint(D,e,w),P=this._getOverlayFit(k,e,s,w);if(P.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(w,D);this._canFitWithFlexibleDimensions(P,k,s)?f.push({position:w,origin:D,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(D,w)}):(!_||_.overlayFit.visibleAreaD&&(D=P,w=k)}return this._isPushed=!1,void this._applyPosition(w.position,w.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(_.position,_.originPoint);this._applyPosition(_.position,_.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Gf(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(u3),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const i=this._lastPosition;if(i){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const e=this._getOriginPoint(this._originRect,this._containerRect,i);this._applyPosition(i,e)}else this.apply()}withScrollableContainers(i){return this._scrollables=i,this}withPositions(i){return this._preferredPositions=i,-1===i.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(i){return this._viewportMargin=i,this}withFlexibleDimensions(i=!0){return this._hasFlexibleDimensions=i,this}withGrowAfterOpen(i=!0){return this._growAfterOpen=i,this}withPush(i=!0){return this._canPush=i,this}withLockedPosition(i=!0){return this._positionLocked=i,this}setOrigin(i){return this._origin=i,this}withDefaultOffsetX(i){return this._offsetX=i,this}withDefaultOffsetY(i){return this._offsetY=i,this}withTransformOriginOn(i){return this._transformOriginSelector=i,this}_getOriginPoint(i,e,s){let d,f;if("center"==s.originX)d=i.left+i.width/2;else{const _=this._isRtl()?i.right:i.left,w=this._isRtl()?i.left:i.right;d="start"==s.originX?_:w}return e.left<0&&(d-=e.left),f="center"==s.originY?i.top+i.height/2:"top"==s.originY?i.top:i.bottom,e.top<0&&(f-=e.top),{x:d,y:f}}_getOverlayPoint(i,e,s){let d,f;return d="center"==s.overlayX?-e.width/2:"start"===s.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,f="center"==s.overlayY?-e.height/2:"top"==s.overlayY?0:-e.height,{x:i.x+d,y:i.y+f}}_getOverlayFit(i,e,s,d){const f=f3(e);let{x:_,y:w}=i,D=this._getOffset(d,"x"),k=this._getOffset(d,"y");D&&(_+=D),k&&(w+=k);let W=0-w,Z=w+f.height-s.height,te=this._subtractOverflows(f.width,0-_,_+f.width-s.width),re=this._subtractOverflows(f.height,W,Z),fe=te*re;return{visibleArea:fe,isCompletelyWithinViewport:f.width*f.height===fe,fitsInViewportVertically:re===f.height,fitsInViewportHorizontally:te==f.width}}_canFitWithFlexibleDimensions(i,e,s){if(this._hasFlexibleDimensions){const d=s.bottom-e.y,f=s.right-e.x,_=h3(this._overlayRef.getConfig().minHeight),w=h3(this._overlayRef.getConfig().minWidth);return(i.fitsInViewportVertically||null!=_&&_<=d)&&(i.fitsInViewportHorizontally||null!=w&&w<=f)}return!1}_pushOverlayOnScreen(i,e,s){if(this._previousPushAmount&&this._positionLocked)return{x:i.x+this._previousPushAmount.x,y:i.y+this._previousPushAmount.y};const d=f3(e),f=this._viewportRect,_=Math.max(i.x+d.width-f.width,0),w=Math.max(i.y+d.height-f.height,0),D=Math.max(f.top-s.top-i.y,0),k=Math.max(f.left-s.left-i.x,0);let P=0,z=0;return P=d.width<=f.width?k||-_:i.xte&&!this._isInitialRender&&!this._growAfterOpen&&(_=i.y-te/2)}if("end"===e.overlayX&&!d||"start"===e.overlayX&&d)W=s.width-i.x+this._viewportMargin,P=i.x-this._viewportMargin;else if("start"===e.overlayX&&!d||"end"===e.overlayX&&d)z=i.x,P=s.right-i.x;else{const Z=Math.min(s.right-i.x+s.left,i.x),te=this._lastBoundingBoxSize.width;P=2*Z,z=i.x-Z,P>te&&!this._isInitialRender&&!this._growAfterOpen&&(z=i.x-te/2)}return{top:_,left:z,bottom:w,right:W,width:P,height:f}}_setBoundingBoxStyles(i,e){const s=this._calculateBoundingBoxRect(i,e);!this._isInitialRender&&!this._growAfterOpen&&(s.height=Math.min(s.height,this._lastBoundingBoxSize.height),s.width=Math.min(s.width,this._lastBoundingBoxSize.width));const d={};if(this._hasExactPosition())d.top=d.left="0",d.bottom=d.right=d.maxHeight=d.maxWidth="",d.width=d.height="100%";else{const f=this._overlayRef.getConfig().maxHeight,_=this._overlayRef.getConfig().maxWidth;d.height=wr(s.height),d.top=wr(s.top),d.bottom=wr(s.bottom),d.width=wr(s.width),d.left=wr(s.left),d.right=wr(s.right),d.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",d.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",f&&(d.maxHeight=wr(f)),_&&(d.maxWidth=wr(_))}this._lastBoundingBoxSize=s,Gf(this._boundingBox.style,d)}_resetBoundingBoxStyles(){Gf(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Gf(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(i,e){const s={},d=this._hasExactPosition(),f=this._hasFlexibleDimensions,_=this._overlayRef.getConfig();if(d){const P=this._viewportRuler.getViewportScrollPosition();Gf(s,this._getExactOverlayY(e,i,P)),Gf(s,this._getExactOverlayX(e,i,P))}else s.position="static";let w="",D=this._getOffset(e,"x"),k=this._getOffset(e,"y");D&&(w+=`translateX(${D}px) `),k&&(w+=`translateY(${k}px)`),s.transform=w.trim(),_.maxHeight&&(d?s.maxHeight=wr(_.maxHeight):f&&(s.maxHeight="")),_.maxWidth&&(d?s.maxWidth=wr(_.maxWidth):f&&(s.maxWidth="")),Gf(this._pane.style,s)}_getExactOverlayY(i,e,s){let d={top:"",bottom:""},f=this._getOverlayPoint(e,this._overlayRect,i);return this._isPushed&&(f=this._pushOverlayOnScreen(f,this._overlayRect,s)),"bottom"===i.overlayY?d.bottom=this._document.documentElement.clientHeight-(f.y+this._overlayRect.height)+"px":d.top=wr(f.y),d}_getExactOverlayX(i,e,s){let _,d={left:"",right:""},f=this._getOverlayPoint(e,this._overlayRect,i);return this._isPushed&&(f=this._pushOverlayOnScreen(f,this._overlayRect,s)),_=this._isRtl()?"end"===i.overlayX?"left":"right":"end"===i.overlayX?"right":"left","right"===_?d.right=this._document.documentElement.clientWidth-(f.x+this._overlayRect.width)+"px":d.left=wr(f.x),d}_getScrollVisibility(){const i=this._getOriginRect(),e=this._pane.getBoundingClientRect(),s=this._scrollables.map(d=>d.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:l3(i,s),isOriginOutsideView:tE(i,s),isOverlayClipped:l3(e,s),isOverlayOutsideView:tE(e,s)}}_subtractOverflows(i,...e){return e.reduce((s,d)=>s-Math.max(d,0),i)}_getNarrowedViewportRect(){const i=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,s=this._viewportRuler.getViewportScrollPosition();return{top:s.top+this._viewportMargin,left:s.left+this._viewportMargin,right:s.left+i-this._viewportMargin,bottom:s.top+e-this._viewportMargin,width:i-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(i,e){return"x"===e?null==i.offsetX?this._offsetX:i.offsetX:null==i.offsetY?this._offsetY:i.offsetY}_validatePositions(){}_addPanelClasses(i){this._pane&&wC(i).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(i=>{this._pane.classList.remove(i)}),this._appliedPanelClasses=[])}_getOriginRect(){const i=this._origin;if(i instanceof Be)return i.nativeElement.getBoundingClientRect();if(i instanceof Element)return i.getBoundingClientRect();const e=i.width||0,s=i.height||0;return{top:i.y,bottom:i.y+s,left:i.x,right:i.x+e,height:s,width:e}}}function Gf(a,i){for(let e in i)i.hasOwnProperty(e)&&(a[e]=i[e]);return a}function h3(a){if("number"!=typeof a&&null!=a){const[i,e]=a.split(M$);return e&&"px"!==e?null:parseFloat(i)}return a||null}function f3(a){return{top:Math.floor(a.top),right:Math.floor(a.right),bottom:Math.floor(a.bottom),left:Math.floor(a.left),width:Math.floor(a.width),height:Math.floor(a.height)}}const p3="cdk-global-overlay-wrapper";class A${constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(i){const e=i.getConfig();this._overlayRef=i,this._width&&!e.width&&i.updateSize({width:this._width}),this._height&&!e.height&&i.updateSize({height:this._height}),i.hostElement.classList.add(p3),this._isDisposed=!1}top(i=""){return this._bottomOffset="",this._topOffset=i,this._alignItems="flex-start",this}left(i=""){return this._xOffset=i,this._xPosition="left",this}bottom(i=""){return this._topOffset="",this._bottomOffset=i,this._alignItems="flex-end",this}right(i=""){return this._xOffset=i,this._xPosition="right",this}start(i=""){return this._xOffset=i,this._xPosition="start",this}end(i=""){return this._xOffset=i,this._xPosition="end",this}width(i=""){return this._overlayRef?this._overlayRef.updateSize({width:i}):this._width=i,this}height(i=""){return this._overlayRef?this._overlayRef.updateSize({height:i}):this._height=i,this}centerHorizontally(i=""){return this.left(i),this._xPosition="center",this}centerVertically(i=""){return this.top(i),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const i=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,s=this._overlayRef.getConfig(),{width:d,height:f,maxWidth:_,maxHeight:w}=s,D=!("100%"!==d&&"100vw"!==d||_&&"100%"!==_&&"100vw"!==_),k=!("100%"!==f&&"100vh"!==f||w&&"100%"!==w&&"100vh"!==w),P=this._xPosition,z=this._xOffset,W="rtl"===this._overlayRef.getConfig().direction;let Z="",te="",re="";D?re="flex-start":"center"===P?(re="center",W?te=z:Z=z):W?"left"===P||"end"===P?(re="flex-end",Z=z):("right"===P||"start"===P)&&(re="flex-start",te=z):"left"===P||"start"===P?(re="flex-start",Z=z):("right"===P||"end"===P)&&(re="flex-end",te=z),i.position=this._cssPosition,i.marginLeft=D?"0":Z,i.marginTop=k?"0":this._topOffset,i.marginBottom=this._bottomOffset,i.marginRight=D?"0":te,e.justifyContent=re,e.alignItems=k?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const i=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,s=e.style;e.classList.remove(p3),s.justifyContent=s.alignItems=i.marginTop=i.marginBottom=i.marginLeft=i.marginRight=i.position="",this._overlayRef=null,this._isDisposed=!0}}let k$=(()=>{class a{constructor(e,s,d,f){this._viewportRuler=e,this._document=s,this._platform=d,this._overlayContainer=f}global(){return new A$}flexibleConnectedTo(e){return new iE(e,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return a.\u0275fac=function(e){return new(e||a)(oe(hc),oe(bt),oe(si),oe(IC))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),E$=0,ta=(()=>{class a{constructor(e,s,d,f,_,w,D,k,P,z,W,Z){this.scrollStrategies=e,this._overlayContainer=s,this._componentFactoryResolver=d,this._positionBuilder=f,this._keyboardDispatcher=_,this._injector=w,this._ngZone=D,this._document=k,this._directionality=P,this._location=z,this._outsideClickDispatcher=W,this._animationsModuleType=Z}create(e){const s=this._createHostElement(),d=this._createPaneElement(s),f=this._createPortalOutlet(d),_=new md(e);return _.direction=_.direction||this._directionality.value,new wy(f,s,d,_,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(e){const s=this._document.createElement("div");return s.id="cdk-overlay-"+E$++,s.classList.add("cdk-overlay-pane"),e.appendChild(s),s}_createHostElement(){const e=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(e),e}_createPortalOutlet(e){return this._appRef||(this._appRef=this._injector.get(cf)),new UV(e,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return a.\u0275fac=function(e){return new(e||a)(oe(c3),oe(IC),oe(ca),oe(k$),oe(S$),oe(Gi),oe(Je),oe(bt),oe(Ni),oe(uf),oe(D$),oe(ki,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const I$=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],m3=new _e("cdk-connected-overlay-scroll-strategy");let PC=(()=>{class a{constructor(e){this.elementRef=e}}return a.\u0275fac=function(e){return new(e||a)(F(Be))},a.\u0275dir=me({type:a,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),a})(),g3=(()=>{class a{get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(e){this._hasBackdrop=We(e)}get lockPosition(){return this._lockPosition}set lockPosition(e){this._lockPosition=We(e)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(e){this._flexibleDimensions=We(e)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(e){this._growAfterOpen=We(e)}get push(){return this._push}set push(e){this._push=We(e)}constructor(e,s,d,f,_){this._overlay=e,this._dir=_,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=xt.EMPTY,this._attachSubscription=xt.EMPTY,this._detachSubscription=xt.EMPTY,this._positionSubscription=xt.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new ye,this.positionChange=new ye,this.attach=new ye,this.detach=new ye,this.overlayKeydown=new ye,this.overlayOutsideClick=new ye,this._templatePortal=new fc(s,d),this._scrollStrategyFactory=f,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=I$);const e=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(s=>{this.overlayKeydown.next(s),27===s.keyCode&&!this.disableClose&&!pr(s)&&(s.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(s=>{this.overlayOutsideClick.next(s)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),s=new md({direction:this._dir,positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(s.width=this.width),(this.height||0===this.height)&&(s.height=this.height),(this.minWidth||0===this.minWidth)&&(s.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(s.minHeight=this.minHeight),this.backdropClass&&(s.backdropClass=this.backdropClass),this.panelClass&&(s.panelClass=this.panelClass),s}_updatePositionStrategy(e){const s=this.positions.map(d=>({originX:d.originX,originY:d.originY,overlayX:d.overlayX,overlayY:d.overlayY,offsetX:d.offsetX||this.offsetX,offsetY:d.offsetY||this.offsetY,panelClass:d.panelClass||void 0}));return e.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(s).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const e=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(e),e}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof PC?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(e=>{this.backdropClick.emit(e)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(nB(()=>this.positionChange.observers.length>0)).subscribe(e=>{this.positionChange.emit(e),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return a.\u0275fac=function(e){return new(e||a)(F(ta),F(hi),F(Hn),F(m3),F(Ni,8))},a.\u0275dir=me({type:a,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[$n]}),a})();const P$={provide:m3,deps:[ta],useFactory:function v3(a){return()=>a.scrollStrategies.reposition()}};let Iu=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[ta,P$],imports:[my,ku,Zk,Zk]}),a})();function rE(a,i=Co){return Un((e,s)=>{let d=null,f=null,_=null;const w=()=>{if(d){d.unsubscribe(),d=null;const k=f;f=null,s.next(k)}};function D(){const k=_+a,P=i.now();if(P{f=k,_=i.now(),d||(d=i.schedule(D,a),s.add(d))},()=>{w(),s.complete()},void 0,()=>{f=d=null}))})}function aE(a){return fi((i,e)=>a<=e)}function oE(a,i=Ku){return a=a??R$,Un((e,s)=>{let d,f=!0;e.subscribe(ci(s,_=>{const w=i(_);(f||!a(d,w))&&(f=!1,d=w,s.next(_))}))})}function R$(a,i){return a===i}let sE=(()=>{class a{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),O$=(()=>{class a{constructor(e){this._mutationObserverFactory=e,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((e,s)=>this._cleanupObserver(s))}observe(e){const s=hd(e);return new Gn(d=>{const _=this._observeElement(s).subscribe(d);return()=>{_.unsubscribe(),this._unobserveElement(s)}})}_observeElement(e){if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const s=new Ue,d=this._mutationObserverFactory.create(f=>s.next(f));d&&d.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:d,stream:s,count:1})}return this._observedElements.get(e).stream}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:s,stream:d}=this._observedElements.get(e);s&&s.disconnect(),d.complete(),this._observedElements.delete(e)}}}return a.\u0275fac=function(e){return new(e||a)(oe(sE))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),_3=(()=>{class a{get disabled(){return this._disabled}set disabled(e){this._disabled=We(e),this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(e){this._debounce=er(e),this._subscribe()}constructor(e,s,d){this._contentObserver=e,this._elementRef=s,this._ngZone=d,this.event=new ye,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?e.pipe(rE(this.debounce)):e).subscribe(this.event)})}_unsubscribe(){var e;null===(e=this._currentSubscription)||void 0===e||e.unsubscribe()}}return a.\u0275fac=function(e){return new(e||a)(F(O$),F(Be),F(Je))},a.\u0275dir=me({type:a,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),a})(),lE=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[sE]}),a})();const cE=new Set;let Xm,L$=(()=>{class a{constructor(e){this._platform=e,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):F$}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function RC(a){if(!cE.has(a))try{Xm||(Xm=document.createElement("style"),Xm.setAttribute("type","text/css"),document.head.appendChild(Xm)),Xm.sheet&&(Xm.sheet.insertRule(`@media ${a} {body{ }}`,0),cE.add(a))}catch(i){console.error(i)}}(e),this._matchMedia(e)}}return a.\u0275fac=function(e){return new(e||a)(oe(si))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function F$(a){return{matches:"all"===a||""===a,media:a,addListener:()=>{},removeListener:()=>{}}}let dE=(()=>{class a{constructor(e,s){this._mediaMatcher=e,this._zone=s,this._queries=new Map,this._destroySubject=new Ue}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return y3(wC(e)).some(d=>this._registerQuery(d).mql.matches)}observe(e){let f=wu(y3(wC(e)).map(_=>this._registerQuery(_).observable));return f=Uo(f.pipe(Pn(1)),f.pipe(aE(1),rE(0))),f.pipe(gt(_=>{const w={matches:!1,breakpoints:{}};return _.forEach(({matches:D,query:k})=>{w.matches=w.matches||D,w.breakpoints[k]=D}),w}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const s=this._mediaMatcher.matchMedia(e),f={observable:new Gn(_=>{const w=D=>this._zone.run(()=>_.next(D));return s.addListener(w),()=>{s.removeListener(w)}}).pipe(Ji(s),gt(({matches:_})=>({query:e,matches:_})),Tt(this._destroySubject)),mql:s};return this._queries.set(e,f),f}}return a.\u0275fac=function(e){return new(e||a)(oe(L$),oe(Je))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function y3(a){return a.map(i=>i.split(",")).reduce((i,e)=>i.concat(e)).map(i=>i.trim())}function OC(a,i){return(a.getAttribute(i)||"").match(/\S+/g)||[]}const w3="cdk-describedby-message",LC="cdk-describedby-host";let uE=0,x3=(()=>{class a{constructor(e,s){this._platform=s,this._messageRegistry=new Map,this._messagesContainer=null,this._id=""+uE++,this._document=e,this._id=Gt(du)+"-"+uE++}describe(e,s,d){if(!this._canBeDescribed(e,s))return;const f=hE(s,d);"string"!=typeof s?(C3(s,this._id),this._messageRegistry.set(f,{messageElement:s,referenceCount:0})):this._messageRegistry.has(f)||this._createMessageElement(s,d),this._isElementDescribedByMessage(e,f)||this._addMessageReference(e,f)}removeDescription(e,s,d){var f;if(!s||!this._isElementNode(e))return;const _=hE(s,d);if(this._isElementDescribedByMessage(e,_)&&this._removeMessageReference(e,_),"string"==typeof s){const w=this._messageRegistry.get(_);w&&0===w.referenceCount&&this._deleteMessageElement(_)}0===(null===(f=this._messagesContainer)||void 0===f?void 0:f.childNodes.length)&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){var e;const s=this._document.querySelectorAll(`[${LC}="${this._id}"]`);for(let d=0;d0!=d.indexOf(w3));e.setAttribute("aria-describedby",s.join(" "))}_addMessageReference(e,s){const d=this._messageRegistry.get(s);(function B$(a,i,e){const s=OC(a,i);s.some(d=>d.trim()==e.trim())||(s.push(e.trim()),a.setAttribute(i,s.join(" ")))})(e,"aria-describedby",d.messageElement.id),e.setAttribute(LC,this._id),d.referenceCount++}_removeMessageReference(e,s){const d=this._messageRegistry.get(s);d.referenceCount--,function V$(a,i,e){const d=OC(a,i).filter(f=>f!=e.trim());d.length?a.setAttribute(i,d.join(" ")):a.removeAttribute(i)}(e,"aria-describedby",d.messageElement.id),e.removeAttribute(LC)}_isElementDescribedByMessage(e,s){const d=OC(e,"aria-describedby"),f=this._messageRegistry.get(s),_=f&&f.messageElement.id;return!!_&&-1!=d.indexOf(_)}_canBeDescribed(e,s){if(!this._isElementNode(e))return!1;if(s&&"object"==typeof s)return!0;const d=null==s?"":`${s}`.trim(),f=e.getAttribute("aria-label");return!(!d||f&&f.trim()===d)}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}}return a.\u0275fac=function(e){return new(e||a)(oe(bt),oe(si))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function hE(a,i){return"string"==typeof a?`${i||""}/${a}`:a}function C3(a,i){a.id||(a.id=`${w3}-${i}-${uE++}`)}class fE{constructor(i){this._items=i,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new Ue,this._typeaheadSubscription=xt.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=e=>e.disabled,this._pressedLetters=[],this.tabOut=new Ue,this.change=new Ue,i instanceof lu&&(this._itemChangesSubscription=i.changes.subscribe(e=>{if(this._activeItem){const d=e.toArray().indexOf(this._activeItem);d>-1&&d!==this._activeItemIndex&&(this._activeItemIndex=d)}}))}skipPredicate(i){return this._skipPredicateFn=i,this}withWrap(i=!0){return this._wrap=i,this}withVerticalOrientation(i=!0){return this._vertical=i,this}withHorizontalOrientation(i){return this._horizontal=i,this}withAllowedModifierKeys(i){return this._allowedModifierKeys=i,this}withTypeAhead(i=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(Fi(e=>this._pressedLetters.push(e)),rE(i),fi(()=>this._pressedLetters.length>0),gt(()=>this._pressedLetters.join(""))).subscribe(e=>{const s=this._getItemsArray();for(let d=1;d!i[f]||this._allowedModifierKeys.indexOf(f)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&d){this.setNextItemActive();break}return;case 38:if(this._vertical&&d){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&d){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&d){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&d){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&d){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&d){const f=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(f>0?f:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&d){const f=this._activeItemIndex+this._pageUpAndDown.delta,_=this._getItemsArray().length;this._setActiveItemByIndex(f<_?f:_-1,-1);break}return;default:return void((d||pr(i,"shiftKey"))&&(i.key&&1===i.key.length?this._letterKeyStream.next(i.key.toLocaleUpperCase()):(e>=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))))}this._pressedLetters=[],i.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(i){const e=this._getItemsArray(),s="number"==typeof i?i:e.indexOf(i);this._activeItem=e[s]??null,this._activeItemIndex=s}destroy(){var i;this._typeaheadSubscription.unsubscribe(),null===(i=this._itemChangesSubscription)||void 0===i||i.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(i){this._wrap?this._setActiveInWrapMode(i):this._setActiveInDefaultMode(i)}_setActiveInWrapMode(i){const e=this._getItemsArray();for(let s=1;s<=e.length;s++){const d=(this._activeItemIndex+i*s+e.length)%e.length;if(!this._skipPredicateFn(e[d]))return void this.setActiveItem(d)}}_setActiveInDefaultMode(i){this._setActiveItemByIndex(this._activeItemIndex+i,i)}_setActiveItemByIndex(i,e){const s=this._getItemsArray();if(s[i]){for(;this._skipPredicateFn(s[i]);)if(!s[i+=e])return;this.setActiveItem(i)}}_getItemsArray(){return this._items instanceof lu?this._items.toArray():this._items}}class FC extends fE{setActiveItem(i){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(i),this.activeItem&&this.activeItem.setActiveStyles()}}class pE extends fE{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(i){return this._origin=i,this}setActiveItem(i){super.setActiveItem(i),this.activeItem&&this.activeItem.focus(this._origin)}}let NC=(()=>{class a{constructor(e){this._platform=e}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function G$(a){return!!(a.offsetWidth||a.offsetHeight||"function"==typeof a.getClientRects&&a.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const s=function mE(a){try{return a.frameElement}catch{return null}}(function W$(a){return a.ownerDocument&&a.ownerDocument.defaultView||window}(e));if(s&&(-1===vE(s)||!this.isVisible(s)))return!1;let d=e.nodeName.toLowerCase(),f=vE(e);return e.hasAttribute("contenteditable")?-1!==f:!("iframe"===d||"object"===d||this._platform.WEBKIT&&this._platform.IOS&&!function T3(a){let i=a.nodeName.toLowerCase(),e="input"===i&&a.type;return"text"===e||"password"===e||"select"===i||"textarea"===i}(e))&&("audio"===d?!!e.hasAttribute("controls")&&-1!==f:"video"===d?-1!==f&&(null!==f||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,s){return function $$(a){return!function j$(a){return function D3(a){return"input"==a.nodeName.toLowerCase()}(a)&&"hidden"==a.type}(a)&&(function U$(a){let i=a.nodeName.toLowerCase();return"input"===i||"select"===i||"button"===i||"textarea"===i}(a)||function S3(a){return function M3(a){return"a"==a.nodeName.toLowerCase()}(a)&&a.hasAttribute("href")}(a)||a.hasAttribute("contenteditable")||gE(a))}(e)&&!this.isDisabled(e)&&((null==s?void 0:s.ignoreVisibility)||this.isVisible(e))}}return a.\u0275fac=function(e){return new(e||a)(oe(si))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();function gE(a){if(!a.hasAttribute("tabindex")||void 0===a.tabIndex)return!1;let i=a.getAttribute("tabindex");return!(!i||isNaN(parseInt(i,10)))}function vE(a){if(!gE(a))return null;const i=parseInt(a.getAttribute("tabindex")||"",10);return isNaN(i)?-1:i}class A3{get enabled(){return this._enabled}set enabled(i){this._enabled=i,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(i,this._startAnchor),this._toggleAnchorTabIndex(i,this._endAnchor))}constructor(i,e,s,d,f=!1){this._element=i,this._checker=e,this._ngZone=s,this._document=d,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,f||this.attachAnchors()}destroy(){const i=this._startAnchor,e=this._endAnchor;i&&(i.removeEventListener("focus",this.startAnchorListener),i.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(i){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(i)))})}focusFirstTabbableElementWhenReady(i){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(i)))})}focusLastTabbableElementWhenReady(i){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(i)))})}_getRegionBoundary(i){const e=this._element.querySelectorAll(`[cdk-focus-region-${i}], [cdkFocusRegion${i}], [cdk-focus-${i}]`);return"start"==i?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(i){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const s=this._getFirstTabbableElement(e);return null==s||s.focus(i),!!s}return e.focus(i),!0}return this.focusFirstTabbableElement(i)}focusFirstTabbableElement(i){const e=this._getRegionBoundary("start");return e&&e.focus(i),!!e}focusLastTabbableElement(i){const e=this._getRegionBoundary("end");return e&&e.focus(i),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(i){if(this._checker.isFocusable(i)&&this._checker.isTabbable(i))return i;const e=i.children;for(let s=0;s=0;s--){const d=e[s].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[s]):null;if(d)return d}return null}_createAnchor(){const i=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,i),i.classList.add("cdk-visually-hidden"),i.classList.add("cdk-focus-trap-anchor"),i.setAttribute("aria-hidden","true"),i}_toggleAnchorTabIndex(i,e){i?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(i){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(i,this._startAnchor),this._toggleAnchorTabIndex(i,this._endAnchor))}_executeOnStable(i){this._ngZone.isStable?i():this._ngZone.onStable.pipe(Pn(1)).subscribe(i)}}let BC=(()=>{class a{constructor(e,s,d){this._checker=e,this._ngZone=s,this._document=d}create(e,s=!1){return new A3(e,this._checker,this._ngZone,this._document,s)}}return a.\u0275fac=function(e){return new(e||a)(oe(NC),oe(Je),oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),k3=(()=>{class a{get enabled(){return this.focusTrap.enabled}set enabled(e){this.focusTrap.enabled=We(e)}get autoCapture(){return this._autoCapture}set autoCapture(e){this._autoCapture=We(e)}constructor(e,s,d){this._elementRef=e,this._focusTrapFactory=s,this._previouslyFocusedElement=null,this.focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement,!0)}ngOnDestroy(){this.focusTrap.destroy(),this._previouslyFocusedElement&&(this._previouslyFocusedElement.focus(),this._previouslyFocusedElement=null)}ngAfterContentInit(){this.focusTrap.attachAnchors(),this.autoCapture&&this._captureFocus()}ngDoCheck(){this.focusTrap.hasAttached()||this.focusTrap.attachAnchors()}ngOnChanges(e){const s=e.autoCapture;s&&!s.firstChange&&this.autoCapture&&this.focusTrap.hasAttached()&&this._captureFocus()}_captureFocus(){this._previouslyFocusedElement=py(),this.focusTrap.focusInitialElementWhenReady()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(BC),F(bt))},a.\u0275dir=me({type:a,selectors:[["","cdkTrapFocus",""]],inputs:{enabled:["cdkTrapFocus","enabled"],autoCapture:["cdkTrapFocusAutoCapture","autoCapture"]},exportAs:["cdkTrapFocus"],features:[$n]}),a})();function _E(a){return 0===a.buttons||0===a.offsetX&&0===a.offsetY}function yE(a){const i=a.touches&&a.touches[0]||a.changedTouches&&a.changedTouches[0];return!(!i||-1!==i.identifier||null!=i.radiusX&&1!==i.radiusX||null!=i.radiusY&&1!==i.radiusY)}const Z$=new _e("cdk-input-modality-detector-options"),K$={ignoreKeys:[18,17,224,91,16]},Zm=Au({passive:!0,capture:!0});let Q$=(()=>{class a{get mostRecentModality(){return this._modality.value}constructor(e,s,d,f){this._platform=e,this._mostRecentTarget=null,this._modality=new Qr(null),this._lastTouchMs=0,this._onKeydown=_=>{var w,D;null!==(w=this._options)&&void 0!==w&&null!==(D=w.ignoreKeys)&&void 0!==D&&D.some(k=>k===_.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=fd(_))},this._onMousedown=_=>{Date.now()-this._lastTouchMs<650||(this._modality.next(_E(_)?"keyboard":"mouse"),this._mostRecentTarget=fd(_))},this._onTouchstart=_=>{yE(_)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=fd(_))},this._options={...K$,...f},this.modalityDetected=this._modality.pipe(aE(1)),this.modalityChanged=this.modalityDetected.pipe(oE()),e.isBrowser&&s.runOutsideAngular(()=>{d.addEventListener("keydown",this._onKeydown,Zm),d.addEventListener("mousedown",this._onMousedown,Zm),d.addEventListener("touchstart",this._onTouchstart,Zm)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,Zm),document.removeEventListener("mousedown",this._onMousedown,Zm),document.removeEventListener("touchstart",this._onTouchstart,Zm))}}return a.\u0275fac=function(e){return new(e||a)(oe(si),oe(Je),oe(bt),oe(Z$,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const bE=new _e("liveAnnouncerElement",{providedIn:"root",factory:function J$(){return null}}),eW=new _e("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let tW=0,VC=(()=>{class a{constructor(e,s,d,f){this._ngZone=s,this._defaultOptions=f,this._document=d,this._liveElement=e||this._createLiveElement()}announce(e,...s){const d=this._defaultOptions;let f,_;return 1===s.length&&"number"==typeof s[0]?_=s[0]:[f,_]=s,this.clear(),clearTimeout(this._previousTimeout),f||(f=d&&d.politeness?d.politeness:"polite"),null==_&&d&&(_=d.duration),this._liveElement.setAttribute("aria-live",f),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(w=>this._currentResolve=w)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=e,"number"==typeof _&&(this._previousTimeout=setTimeout(()=>this.clear(),_)),this._currentResolve(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){var e,s;clearTimeout(this._previousTimeout),null===(e=this._liveElement)||void 0===e||e.remove(),this._liveElement=null,null===(s=this._currentResolve)||void 0===s||s.call(this),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const e="cdk-live-announcer-element",s=this._document.getElementsByClassName(e),d=this._document.createElement("div");for(let f=0;f .cdk-overlay-container [aria-modal="true"]');for(let d=0;d{class a{constructor(e,s,d,f,_){this._ngZone=e,this._platform=s,this._inputModalityDetector=d,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new Ue,this._rootNodeFocusAndBlurListener=w=>{for(let k=fd(w);k;k=k.parentElement)"focus"===w.type?this._onFocus(w,k):this._onBlur(w,k)},this._document=f,this._detectionMode=(null==_?void 0:_.detectionMode)||0}monitor(e,s=!1){const d=hd(e);if(!this._platform.isBrowser||1!==d.nodeType)return je(null);const f=function z7(a){if(function V7(){if(null==qk){const a=typeof document<"u"?document.head:null;qk=!(!a||!a.createShadowRoot&&!a.attachShadow)}return qk}()){const i=a.getRootNode?a.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&i instanceof ShadowRoot)return i}return null}(d)||this._getDocument(),_=this._elementInfo.get(d);if(_)return s&&(_.checkChildren=!0),_.subject;const w={checkChildren:s,subject:new Ue,rootNode:f};return this._elementInfo.set(d,w),this._registerGlobalListeners(w),w.subject}stopMonitoring(e){const s=hd(e),d=this._elementInfo.get(s);d&&(d.subject.complete(),this._setClasses(s),this._elementInfo.delete(s),this._removeGlobalListeners(d))}focusVia(e,s,d){const f=hd(e);f===this._getDocument().activeElement?this._getClosestElementsInfo(f).forEach(([w,D])=>this._originChanged(w,s,D)):(this._setOrigin(s),"function"==typeof f.focus&&f.focus(d))}ngOnDestroy(){this._elementInfo.forEach((e,s)=>this.stopMonitoring(s))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return 1===this._detectionMode||!(null==e||!e.contains(this._inputModalityDetector._mostRecentTarget))}_setClasses(e,s){e.classList.toggle("cdk-focused",!!s),e.classList.toggle("cdk-touch-focused","touch"===s),e.classList.toggle("cdk-keyboard-focused","keyboard"===s),e.classList.toggle("cdk-mouse-focused","mouse"===s),e.classList.toggle("cdk-program-focused","program"===s)}_setOrigin(e,s=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&s,0===this._detectionMode&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,s){const d=this._elementInfo.get(s),f=fd(e);!d||!d.checkChildren&&s!==f||this._originChanged(s,this._getFocusOrigin(f),d)}_onBlur(e,s){const d=this._elementInfo.get(s);!d||d.checkChildren&&e.relatedTarget instanceof Node&&s.contains(e.relatedTarget)||(this._setClasses(s),this._emitOrigin(d,null))}_emitOrigin(e,s){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(s))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const s=e.rootNode,d=this._rootNodeFocusListenerCount.get(s)||0;d||this._ngZone.runOutsideAngular(()=>{s.addEventListener("focus",this._rootNodeFocusAndBlurListener,zC),s.addEventListener("blur",this._rootNodeFocusAndBlurListener,zC)}),this._rootNodeFocusListenerCount.set(s,d+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(Tt(this._stopInputModalityDetector)).subscribe(f=>{this._setOrigin(f,!0)}))}_removeGlobalListeners(e){const s=e.rootNode;if(this._rootNodeFocusListenerCount.has(s)){const d=this._rootNodeFocusListenerCount.get(s);d>1?this._rootNodeFocusListenerCount.set(s,d-1):(s.removeEventListener("focus",this._rootNodeFocusAndBlurListener,zC),s.removeEventListener("blur",this._rootNodeFocusAndBlurListener,zC),this._rootNodeFocusListenerCount.delete(s))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,s,d){this._setClasses(e,s),this._emitOrigin(d,s),this._lastFocusOrigin=s}_getClosestElementsInfo(e){const s=[];return this._elementInfo.forEach((d,f)=>{(f===e||d.checkChildren&&f.contains(e))&&s.push([f,d])}),s}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:s,mostRecentModality:d}=this._inputModalityDetector;if("mouse"!==d||!s||s===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const f=e.labels;if(f)for(let _=0;_{class a{constructor(e,s){this._elementRef=e,this._focusMonitor=s,this._focusOrigin=null,this.cdkFocusChange=new ye}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(s=>{this._focusOrigin=s,this.cdkFocusChange.emit(s)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Wo))},a.\u0275dir=me({type:a,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]}),a})();const wE="cdk-high-contrast-black-on-white",HC="cdk-high-contrast-white-on-black",GC="cdk-high-contrast-active";let R3=(()=>{class a{constructor(e,s){this._platform=e,this._document=s,this._breakpointSubscription=Gt(dE).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return 0;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const s=this._document.defaultView||window,d=s&&s.getComputedStyle?s.getComputedStyle(e):null,f=(d&&d.backgroundColor||"").replace(/ /g,"");switch(e.remove(),f){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return 2;case"rgb(255,255,255)":case"rgb(255,250,239)":return 1}return 0}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(GC,wE,HC),this._hasCheckedHighContrastMode=!0;const s=this.getHighContrastMode();1===s?e.add(GC,wE):2===s&&e.add(GC,HC)}}}return a.\u0275fac=function(e){return new(e||a)(oe(si),oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),UC=(()=>{class a{constructor(e){e._applyBodyHighContrastModeCssClasses()}}return a.\u0275fac=function(e){return new(e||a)(oe(R3))},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[lE]}),a})();function iW(a,i){}class jC{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0}}let xE=(()=>{class a extends DC{constructor(e,s,d,f,_,w,D,k){super(),this._elementRef=e,this._focusTrapFactory=s,this._config=f,this._interactivityChecker=_,this._ngZone=w,this._overlayRef=D,this._focusMonitor=k,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this.attachDomPortal=P=>{this._portalOutlet.hasAttached();const z=this._portalOutlet.attachDomPortal(P);return this._contentAttached(),z},this._ariaLabelledBy=this._config.ariaLabelledBy||null,this._document=d}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const s=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),s}attachTemplatePortal(e){this._portalOutlet.hasAttached();const s=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),s}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,s){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const d=()=>{e.removeEventListener("blur",d),e.removeEventListener("mousedown",d),e.removeAttribute("tabindex")};e.addEventListener("blur",d),e.addEventListener("mousedown",d)})),e.focus(s)}_focusByCssSelector(e,s){let d=this._elementRef.nativeElement.querySelector(e);d&&this._forceFocus(d,s)}_trapFocus(){const e=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||e.focus();break;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(s=>{s||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus)}}_restoreFocus(){const e=this._config.restoreFocus;let s=null;if("string"==typeof e?s=this._document.querySelector(e):"boolean"==typeof e?s=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(s=e),this._config.restoreFocus&&s&&"function"==typeof s.focus){const d=py(),f=this._elementRef.nativeElement;(!d||d===this._document.body||d===f||f.contains(d))&&(this._focusMonitor?(this._focusMonitor.focusVia(s,this._closeInteractionType),this._closeInteractionType=null):s.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){const e=this._elementRef.nativeElement,s=py();return e===s||e.contains(s)}_initializeFocusTrap(){this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=py())}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(BC),F(bt,8),F(jC),F(NC),F(Je),F(wy),F(Wo))},a.\u0275cmp=we({type:a,selectors:[["cdk-dialog-container"]],viewQuery:function(e,s){if(1&e&&ot(pc,7),2&e){let d;Ee(d=Oe())&&(s._portalOutlet=d.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(e,s){2&e&&He("id",s._config.id||null)("role",s._config.role)("aria-modal",s._config.ariaModal)("aria-labelledby",s._config.ariaLabel?null:s._ariaLabelledBy)("aria-label",s._config.ariaLabel)("aria-describedby",s._config.ariaDescribedBy||null)},features:[Se],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(e,s){1&e&&Q(0,iW,0,0,"ng-template",0)},dependencies:[pc],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2}),a})();class CE{constructor(i,e){this.overlayRef=i,this.config=e,this.closed=new Ue,this.disableClose=e.disableClose,this.backdropClick=i.backdropClick(),this.keydownEvents=i.keydownEvents(),this.outsidePointerEvents=i.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(s=>{27===s.keyCode&&!this.disableClose&&!pr(s)&&(s.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})})}close(i,e){if(this.containerInstance){const s=this.closed;this.containerInstance._closeInteractionType=(null==e?void 0:e.focusOrigin)||"program",this.overlayRef.dispose(),s.next(i),s.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(i="",e=""){return this.overlayRef.updateSize({width:i,height:e}),this}addPanelClass(i){return this.overlayRef.addPanelClass(i),this}removePanelClass(i){return this.overlayRef.removePanelClass(i),this}}const SE=new _e("DialogScrollStrategy"),rW=new _e("DialogData"),O3=new _e("DefaultDialogConfig"),oW={provide:SE,deps:[ta],useFactory:function aW(a){return()=>a.scrollStrategies.block()}};let sW=0,DE=(()=>{class a{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(e,s,d,f,_,w){this._overlay=e,this._injector=s,this._defaultOptions=d,this._parentDialog=f,this._overlayContainer=_,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new Ue,this._afterOpenedAtThisLevel=new Ue,this._ariaHiddenElements=new Map,this.afterAllClosed=_m(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(Ji(void 0))),this._scrollStrategy=w}open(e,s){(s={...this._defaultOptions||new jC,...s}).id=s.id||"cdk-dialog-"+sW++,s.id&&this.getDialogById(s.id);const f=this._getOverlayConfig(s),_=this._overlay.create(f),w=new CE(_,s),D=this._attachContainer(_,w,s);return w.containerInstance=D,this._attachDialogContent(e,w,D,s),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(w),w.closed.subscribe(()=>this._removeOpenDialog(w,!0)),this.afterOpened.next(w),w}closeAll(){ME(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(s=>s.id===e)}ngOnDestroy(){ME(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),ME(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const s=new md({positionStrategy:e.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation});return e.backdropClass&&(s.backdropClass=e.backdropClass),s}_attachContainer(e,s,d){var f;const _=d.injector||(null===(f=d.viewContainerRef)||void 0===f?void 0:f.injector),w=[{provide:jC,useValue:d},{provide:CE,useValue:s},{provide:wy,useValue:e}];let D;d.container?"function"==typeof d.container?D=d.container:(D=d.container.type,w.push(...d.container.providers(d))):D=xE;const k=new pd(D,d.viewContainerRef,Gi.create({parent:_||this._injector,providers:w}),d.componentFactoryResolver);return e.attach(k).instance}_attachDialogContent(e,s,d,f){if(e instanceof hi){const _=this._createInjector(f,s,d,void 0);let w={$implicit:f.data,dialogRef:s};f.templateContext&&(w={...w,..."function"==typeof f.templateContext?f.templateContext():f.templateContext}),d.attachTemplatePortal(new fc(e,null,w,_))}else{const _=this._createInjector(f,s,d,this._injector),w=d.attachComponentPortal(new pd(e,f.viewContainerRef,_,f.componentFactoryResolver));s.componentInstance=w.instance}}_createInjector(e,s,d,f){var _;const w=e.injector||(null===(_=e.viewContainerRef)||void 0===_?void 0:_.injector),D=[{provide:rW,useValue:e.data},{provide:CE,useValue:s}];return e.providers&&("function"==typeof e.providers?D.push(...e.providers(s,e,d)):D.push(...e.providers)),e.direction&&(!w||!w.get(Ni,null,{optional:!0}))&&D.push({provide:Ni,useValue:{value:e.direction,change:je()}}),Gi.create({parent:w||f,providers:D})}_removeOpenDialog(e,s){const d=this.openDialogs.indexOf(e);d>-1&&(this.openDialogs.splice(d,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((f,_)=>{f?_.setAttribute("aria-hidden",f):_.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),s&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){const e=this._overlayContainer.getContainerElement();if(e.parentElement){const s=e.parentElement.children;for(let d=s.length-1;d>-1;d--){const f=s[d];f!==e&&"SCRIPT"!==f.nodeName&&"STYLE"!==f.nodeName&&!f.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(f,f.getAttribute("aria-hidden")),f.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}}return a.\u0275fac=function(e){return new(e||a)(oe(ta),oe(Gi),oe(O3,8),oe(a,12),oe(IC),oe(SE))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();function ME(a,i){let e=a.length;for(;e--;)i(a[e])}let gd=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[DE,oW],imports:[Iu,ku,UC,ku]}),a})();const lW=["text"];function cW(a,i){if(1&a&&he(0,"mat-pseudo-checkbox",5),2&a){const e=q();V("state",e.selected?"checked":"unchecked")("disabled",e.disabled)}}function dW(a,i){if(1&a&&(I(0,"span",6),Y(1),O()),2&a){const e=q();N(1),Re("(",e.group.label,")")}}const uW=[[["mat-icon"]],"*"],hW=["mat-icon","*"];let fW=(()=>{class a{}return a.STANDARD_CURVE="cubic-bezier(0.4,0.0,0.2,1)",a.DECELERATION_CURVE="cubic-bezier(0.0,0.0,0.2,1)",a.ACCELERATION_CURVE="cubic-bezier(0.4,0.0,1,1)",a.SHARP_CURVE="cubic-bezier(0.4,0.0,0.6,1)",a})(),pW=(()=>{class a{}return a.COMPLEX="375ms",a.ENTERING="225ms",a.EXITING="195ms",a})();const N3=new _e("mat-sanity-checks",{providedIn:"root",factory:function wJ(){return!0}});let Qt=(()=>{class a{constructor(e,s,d){this._sanityChecks=s,this._document=d,this._hasDoneGlobalChecks=!1,e._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(e){return!Xk()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[e])}}return a.\u0275fac=function(e){return new(e||a)(oe(R3),oe(N3,8),oe(bt))},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[my,my]}),a})();function mc(a){return class extends a{get disabled(){return this._disabled}set disabled(i){this._disabled=We(i)}constructor(...i){super(...i),this._disabled=!1}}}function gc(a,i){return class extends a{get color(){return this._color}set color(e){const s=e||this.defaultColor;s!==this._color&&(this._color&&this._elementRef.nativeElement.classList.remove(`mat-${this._color}`),s&&this._elementRef.nativeElement.classList.add(`mat-${s}`),this._color=s)}constructor(...e){super(...e),this.defaultColor=i,this.color=i}}}function vc(a){return class extends a{get disableRipple(){return this._disableRipple}set disableRipple(i){this._disableRipple=We(i)}constructor(...i){super(...i),this._disableRipple=!1}}}function Cy(a,i=0){return class extends a{get tabIndex(){return this.disabled?-1:this._tabIndex}set tabIndex(e){this._tabIndex=null!=e?er(e):this.defaultTabIndex}constructor(...e){super(...e),this._tabIndex=i,this.defaultTabIndex=i}}}function B3(a){return class extends a{updateErrorState(){const i=this.errorState,f=(this.errorStateMatcher||this._defaultErrorStateMatcher).isErrorState(this.ngControl?this.ngControl.control:null,this._parentFormGroup||this._parentForm);f!==i&&(this.errorState=f,this.stateChanges.next())}constructor(...i){super(...i),this.errorState=!1}}}function Sy(a){return class extends a{constructor(...i){super(...i),this._isInitialized=!1,this._pendingSubscribers=[],this.initialized=new Gn(e=>{this._isInitialized?this._notifySubscriber(e):this._pendingSubscribers.push(e)})}_markInitialized(){this._isInitialized=!0,this._pendingSubscribers.forEach(this._notifySubscriber),this._pendingSubscribers=null}_notifySubscriber(i){i.next(),i.complete()}}}const Uf=new _e("MAT_DATE_LOCALE",{providedIn:"root",factory:function TE(){return Gt(Za)}});class mr{constructor(){this._localeChanges=new Ue,this.localeChanges=this._localeChanges}getValidDateOrNull(i){return this.isDateInstance(i)&&this.isValid(i)?i:null}deserialize(i){return null==i||this.isDateInstance(i)&&this.isValid(i)?i:this.invalid()}setLocale(i){this.locale=i,this._localeChanges.next()}compareDate(i,e){return this.getYear(i)-this.getYear(e)||this.getMonth(i)-this.getMonth(e)||this.getDate(i)-this.getDate(e)}sameDate(i,e){if(i&&e){let s=this.isValid(i),d=this.isValid(e);return s&&d?!this.compareDate(i,e):s==d}return i==e}clampDate(i,e,s){return e&&this.compareDate(i,e)<0?e:s&&this.compareDate(i,s)>0?s:i}}const Pu=new _e("mat-date-formats"),$C=/^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;function vd(a,i){const e=Array(a);for(let s=0;s{class a extends mr{constructor(e,s){super(),this.useUtcForDisplay=!1,super.setLocale(e)}getYear(e){return e.getFullYear()}getMonth(e){return e.getMonth()}getDate(e){return e.getDate()}getDayOfWeek(e){return e.getDay()}getMonthNames(e){const s=new Intl.DateTimeFormat(this.locale,{month:e,timeZone:"utc"});return vd(12,d=>this._format(s,new Date(2017,d,1)))}getDateNames(){const e=new Intl.DateTimeFormat(this.locale,{day:"numeric",timeZone:"utc"});return vd(31,s=>this._format(e,new Date(2017,0,s+1)))}getDayOfWeekNames(e){const s=new Intl.DateTimeFormat(this.locale,{weekday:e,timeZone:"utc"});return vd(7,d=>this._format(s,new Date(2017,0,d+1)))}getYearName(e){const s=new Intl.DateTimeFormat(this.locale,{year:"numeric",timeZone:"utc"});return this._format(s,e)}getFirstDayOfWeek(){return 0}getNumDaysInMonth(e){return this.getDate(this._createDateWithOverflow(this.getYear(e),this.getMonth(e)+1,0))}clone(e){return new Date(e.getTime())}createDate(e,s,d){let f=this._createDateWithOverflow(e,s,d);return f.getMonth(),f}today(){return new Date}parse(e,s){return"number"==typeof e?new Date(e):e?new Date(Date.parse(e)):null}format(e,s){if(!this.isValid(e))throw Error("NativeDateAdapter: Cannot format invalid date.");const d=new Intl.DateTimeFormat(this.locale,{...s,timeZone:"utc"});return this._format(d,e)}addCalendarYears(e,s){return this.addCalendarMonths(e,12*s)}addCalendarMonths(e,s){let d=this._createDateWithOverflow(this.getYear(e),this.getMonth(e)+s,this.getDate(e));return this.getMonth(d)!=((this.getMonth(e)+s)%12+12)%12&&(d=this._createDateWithOverflow(this.getYear(d),this.getMonth(d),0)),d}addCalendarDays(e,s){return this._createDateWithOverflow(this.getYear(e),this.getMonth(e),this.getDate(e)+s)}toIso8601(e){return[e.getUTCFullYear(),this._2digit(e.getUTCMonth()+1),this._2digit(e.getUTCDate())].join("-")}deserialize(e){if("string"==typeof e){if(!e)return null;if($C.test(e)){let s=new Date(e);if(this.isValid(s))return s}}return super.deserialize(e)}isDateInstance(e){return e instanceof Date}isValid(e){return!isNaN(e.getTime())}invalid(){return new Date(NaN)}_createDateWithOverflow(e,s,d){const f=new Date;return f.setFullYear(e,s,d),f.setHours(0,0,0,0),f}_2digit(e){return("00"+e).slice(-2)}_format(e,s){const d=new Date;return d.setUTCFullYear(s.getFullYear(),s.getMonth(),s.getDate()),d.setUTCHours(s.getHours(),s.getMinutes(),s.getSeconds(),s.getMilliseconds()),e.format(d)}}return a.\u0275fac=function(e){return new(e||a)(oe(Uf,8),oe(si))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();const yW={parse:{dateInput:null},display:{dateInput:{year:"numeric",month:"numeric",day:"numeric"},monthYearLabel:{year:"numeric",month:"short"},dateA11yLabel:{year:"numeric",month:"long",day:"numeric"},monthYearA11yLabel:{year:"numeric",month:"long"}}};let bW=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[{provide:mr,useClass:_W}]}),a})(),_c=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[{provide:Pu,useValue:yW}],imports:[bW]}),a})(),AE=(()=>{class a{isErrorState(e,s){return!!(e&&e.invalid&&(e.touched||s&&s.submitted))}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();class xW{constructor(i,e,s,d=!1){this._renderer=i,this.element=e,this.config=s,this._animationForciblyDisabledThroughCss=d,this.state=3}fadeOut(){this._renderer.fadeOutRipple(this)}}const V3=Au({passive:!0,capture:!0});class CW{constructor(){this._events=new Map,this._delegateEventHandler=i=>{const e=fd(i);var s;e&&(null===(s=this._events.get(i.type))||void 0===s||s.forEach((d,f)=>{(f===e||f.contains(e))&&d.forEach(_=>_.handleEvent(i))}))}}addHandler(i,e,s,d){const f=this._events.get(e);if(f){const _=f.get(s);_?_.add(d):f.set(s,new Set([d]))}else this._events.set(e,new Map([[s,new Set([d])]])),i.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,V3)})}removeHandler(i,e,s){const d=this._events.get(i);if(!d)return;const f=d.get(e);f&&(f.delete(s),0===f.size&&d.delete(e),0===d.size&&(this._events.delete(i),document.removeEventListener(i,this._delegateEventHandler,V3)))}}const SW={enterDuration:225,exitDuration:150},H3=Au({passive:!0,capture:!0}),kE=["mousedown","touchstart"],Dy=["mouseup","mouseleave","touchend","touchcancel"];class Yo{constructor(i,e,s,d){this._target=i,this._ngZone=e,this._platform=d,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,d.isBrowser&&(this._containerElement=hd(s))}fadeInRipple(i,e,s={}){const d=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),f={...SW,...s.animation};s.centered&&(i=d.left+d.width/2,e=d.top+d.height/2);const _=s.radius||function Ru(a,i,e){const s=Math.max(Math.abs(a-e.left),Math.abs(a-e.right)),d=Math.max(Math.abs(i-e.top),Math.abs(i-e.bottom));return Math.sqrt(s*s+d*d)}(i,e,d),w=i-d.left,D=e-d.top,k=f.enterDuration,P=document.createElement("div");P.classList.add("mat-ripple-element"),P.style.left=w-_+"px",P.style.top=D-_+"px",P.style.height=2*_+"px",P.style.width=2*_+"px",null!=s.color&&(P.style.backgroundColor=s.color),P.style.transitionDuration=`${k}ms`,this._containerElement.appendChild(P);const z=window.getComputedStyle(P),Z=z.transitionDuration,te="none"===z.transitionProperty||"0s"===Z||"0s, 0s"===Z||0===d.width&&0===d.height,re=new xW(this,P,s,te);P.style.transform="scale3d(1, 1, 1)",re.state=0,s.persistent||(this._mostRecentTransientRipple=re);let fe=null;return!te&&(k||f.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const pe=()=>this._finishRippleTransition(re),Te=()=>this._destroyRipple(re);P.addEventListener("transitionend",pe),P.addEventListener("transitioncancel",Te),fe={onTransitionEnd:pe,onTransitionCancel:Te}}),this._activeRipples.set(re,fe),(te||!k)&&this._finishRippleTransition(re),re}fadeOutRipple(i){if(2===i.state||3===i.state)return;const e=i.element,s={...SW,...i.config.animation};e.style.transitionDuration=`${s.exitDuration}ms`,e.style.opacity="0",i.state=2,(i._animationForciblyDisabledThroughCss||!s.exitDuration)&&this._finishRippleTransition(i)}fadeOutAll(){this._getActiveRipples().forEach(i=>i.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(i=>{i.config.persistent||i.fadeOut()})}setupTriggerEvents(i){const e=hd(i);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,kE.forEach(s=>{Yo._eventManager.addHandler(this._ngZone,s,e,this)}))}handleEvent(i){"mousedown"===i.type?this._onMousedown(i):"touchstart"===i.type?this._onTouchStart(i):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{Dy.forEach(e=>{this._triggerElement.addEventListener(e,this,H3)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(i){0===i.state?this._startFadeOutTransition(i):2===i.state&&this._destroyRipple(i)}_startFadeOutTransition(i){const e=i===this._mostRecentTransientRipple,{persistent:s}=i.config;i.state=1,!s&&(!e||!this._isPointerDown)&&i.fadeOut()}_destroyRipple(i){var e;const s=null!==(e=this._activeRipples.get(i))&&void 0!==e?e:null;this._activeRipples.delete(i),this._activeRipples.size||(this._containerRect=null),i===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),i.state=3,null!==s&&(i.element.removeEventListener("transitionend",s.onTransitionEnd),i.element.removeEventListener("transitioncancel",s.onTransitionCancel)),i.element.remove()}_onMousedown(i){const e=_E(i),s=this._lastTouchStartEvent&&Date.now(){!i.config.persistent&&(1===i.state||i.config.terminateOnPointerUp&&0===i.state)&&i.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const i=this._triggerElement;i&&(kE.forEach(e=>Yo._eventManager.removeHandler(e,i,this)),this._pointerUpEventsRegistered&&Dy.forEach(e=>i.removeEventListener(e,this,H3)))}}Yo._eventManager=new CW;const My=new _e("mat-ripple-global-options");let Ur=(()=>{class a{get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}constructor(e,s,d,f,_){this._elementRef=e,this._animationMode=_,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=f||{},this._rippleRenderer=new Yo(this,s,e,d)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,s=0,d){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,s,{...this.rippleConfig,...d}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Je),F(si),F(My,8),F(ki,8))},a.\u0275dir=me({type:a,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(e,s){2&e&&at("mat-ripple-unbounded",s.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"]}),a})(),io=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,Qt]}),a})(),EE=(()=>{class a{constructor(e){this._animationMode=e,this.state="unchecked",this.disabled=!1}}return a.\u0275fac=function(e){return new(e||a)(F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:8,hostBindings:function(e,s){2&e&&at("mat-pseudo-checkbox-indeterminate","indeterminate"===s.state)("mat-pseudo-checkbox-checked","checked"===s.state)("mat-pseudo-checkbox-disabled",s.disabled)("_mat-animation-noopable","NoopAnimations"===s._animationMode)},inputs:{state:"state",disabled:"disabled"},decls:0,vars:0,template:function(e,s){},styles:['.mat-pseudo-checkbox{border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}.mat-pseudo-checkbox-checked::after{top:2.7px;width:10px;height:4px}'],encapsulation:2,changeDetection:0}),a})(),IE=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt]}),a})();const PE=new _e("MAT_OPTION_PARENT_COMPONENT"),Ty=new _e("MatOptgroup");let DW=0;class U3{constructor(i,e=!1){this.source=i,this.isUserInput=e}}let MW=(()=>{class a{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(e){this._disabled=We(e)}get disableRipple(){return!(!this._parent||!this._parent.disableRipple)}constructor(e,s,d,f){this._element=e,this._changeDetectorRef=s,this._parent=d,this.group=f,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id="mat-option-"+DW++,this.onSelectionChange=new ye,this._stateChanges=new Ue}get active(){return this._active}get viewValue(){var e;return((null===(e=this._text)||void 0===e?void 0:e.nativeElement.textContent)||"").trim()}select(){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}deselect(){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}focus(e,s){const d=this._getHostElement();"function"==typeof d.focus&&d.focus(s)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!pr(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getAriaSelected(){return this.selected||!this.multiple&&null}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new U3(this,e))}}return a.\u0275fac=function(e){xs()},a.\u0275dir=me({type:a,viewQuery:function(e,s){if(1&e&&ot(lW,7),2&e){let d;Ee(d=Oe())&&(s._text=d.first)}},inputs:{value:"value",id:"id",disabled:"disabled"},outputs:{onSelectionChange:"onSelectionChange"}}),a})(),$i=(()=>{class a extends MW{constructor(e,s,d,f){super(e,s,d,f)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(PE,8),F(Ty,8))},a.\u0275cmp=we({type:a,selectors:[["mat-option"]],hostAttrs:["role","option",1,"mat-mdc-option","mat-mdc-focus-indicator","mdc-list-item"],hostVars:12,hostBindings:function(e,s){1&e&&J("click",function(){return s._selectViaInteraction()})("keydown",function(f){return s._handleKeydown(f)}),2&e&&(Oa("id",s.id),He("tabindex",s._getTabIndex())("aria-selected",s._getAriaSelected())("aria-disabled",s.disabled.toString()),at("mdc-list-item--selected",s.selected)("mat-mdc-option-multiple",s.multiple)("mat-mdc-option-active",s.active)("mdc-list-item--disabled",s.disabled))},exportAs:["matOption"],features:[Se],ngContentSelectors:hW,decls:7,vars:4,consts:[["class","mat-mdc-option-pseudo-checkbox",3,"state","disabled",4,"ngIf"],[1,"mdc-list-item__primary-text"],["text",""],["class","cdk-visually-hidden",4,"ngIf"],["mat-ripple","",1,"mat-mdc-option-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mat-mdc-option-pseudo-checkbox",3,"state","disabled"],[1,"cdk-visually-hidden"]],template:function(e,s){1&e&&(Fn(uW),Q(0,cW,1,2,"mat-pseudo-checkbox",0),ht(1),I(2,"span",1,2),ht(4,1),O(),Q(5,dW,2,1,"span",3),he(6,"div",4)),2&e&&(V("ngIf",s.multiple),N(5),V("ngIf",s.group&&s.group._inert),N(1),V("matRippleTrigger",s._getHostElement())("matRippleDisabled",s.disabled||s.disableRipple))},dependencies:[Ur,zt,EE],styles:['.mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox{margin-right:0;margin-left:16px}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active::before{content:""}'],encapsulation:2,changeDetection:0}),a})();function WC(a,i,e){if(e.length){let s=i.toArray(),d=e.toArray(),f=0;for(let _=0;_e+s?Math.max(0,a-s+i):e}let YC=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[io,zr,Qt,IE]}),a})();class j3{}class $3{}const _d="*";function tr(a,i){return{type:7,name:a,definitions:i,options:{}}}function Tn(a,i=null){return{type:4,styles:i,timings:a}}function qC(a,i=null){return{type:3,steps:a,options:i}}function W3(a,i=null){return{type:2,steps:a,options:i}}function ft(a){return{type:6,styles:a,offset:null}}function Bn(a,i,e){return{type:0,name:a,styles:i,options:e}}function yd(a){return{type:5,steps:a}}function Mn(a,i,e=null){return{type:1,expr:a,animation:i,options:e}}function XC(a=null){return{type:9,options:a}}function Ay(a,i,e=null){return{type:11,selector:a,animation:i,options:e}}function Y3(a){Promise.resolve().then(a)}class Qm{constructor(i=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=i+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(i=>i()),this._onDoneFns=[])}onStart(i){this._originalOnStartFns.push(i),this._onStartFns.push(i)}onDone(i){this._originalOnDoneFns.push(i),this._onDoneFns.push(i)}onDestroy(i){this._onDestroyFns.push(i)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){Y3(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(i=>i()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(i=>i()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(i){this._position=this.totalTime?i*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(i){const e="start"==i?this._onStartFns:this._onDoneFns;e.forEach(s=>s()),e.length=0}}class q3{constructor(i){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=i;let e=0,s=0,d=0;const f=this.players.length;0==f?Y3(()=>this._onFinish()):this.players.forEach(_=>{_.onDone(()=>{++e==f&&this._onFinish()}),_.onDestroy(()=>{++s==f&&this._onDestroy()}),_.onStart(()=>{++d==f&&this._onStart()})}),this.totalTime=this.players.reduce((_,w)=>Math.max(_,w.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(i=>i()),this._onDoneFns=[])}init(){this.players.forEach(i=>i.init())}onStart(i){this._onStartFns.push(i)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(i=>i()),this._onStartFns=[])}onDone(i){this._onDoneFns.push(i)}onDestroy(i){this._onDestroyFns.push(i)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(i=>i.play())}pause(){this.players.forEach(i=>i.pause())}restart(){this.players.forEach(i=>i.restart())}finish(){this._onFinish(),this.players.forEach(i=>i.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(i=>i.destroy()),this._onDestroyFns.forEach(i=>i()),this._onDestroyFns=[])}reset(){this.players.forEach(i=>i.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(i){const e=i*this.totalTime;this.players.forEach(s=>{const d=s.totalTime?Math.min(1,e/s.totalTime):1;s.setPosition(d)})}getPosition(){const i=this.players.reduce((e,s)=>null===e||s.totalTime>e.totalTime?s:e,null);return null!=i?i.getPosition():0}beforeDestroy(){this.players.forEach(i=>{i.beforeDestroy&&i.beforeDestroy()})}triggerCallback(i){const e="start"==i?this._onStartFns:this._onDoneFns;e.forEach(s=>s()),e.length=0}}function jf(a,i){}class ky{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}}const Ey="mdc-dialog--open",X3="mdc-dialog--opening",LE="mdc-dialog--closing";let FE=(()=>{class a extends xE{constructor(e,s,d,f,_,w,D,k){super(e,s,d,f,_,w,D,k),this._animationStateChanged=new ye}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(BC),F(bt,8),F(ky),F(NC),F(Je),F(wy),F(Wo))},a.\u0275cmp=we({type:a,selectors:[["ng-component"]],features:[Se],decls:0,vars:0,template:function(e,s){},encapsulation:2}),a})();const NE="--mat-dialog-transition-duration";function ZC(a){return null==a?null:"number"==typeof a?a:a.endsWith("ms")?er(a.substring(0,a.length-2)):a.endsWith("s")?1e3*er(a.substring(0,a.length-1)):"0"===a?0:null}let BE=(()=>{class a extends FE{constructor(e,s,d,f,_,w,D,k,P){var z,W;super(e,s,d,f,_,w,D,P),this._animationMode=k,this._animationsEnabled="NoopAnimations"!==this._animationMode,this._hostElement=this._elementRef.nativeElement,this._openAnimationDuration=this._animationsEnabled?null!==(z=ZC(this._config.enterAnimationDuration))&&void 0!==z?z:150:0,this._closeAnimationDuration=this._animationsEnabled?null!==(W=ZC(this._config.exitAnimationDuration))&&void 0!==W?W:75:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._openAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._closeAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._openAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(NE,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(X3),this._hostElement.classList.add(Ey),this._waitForAnimationToComplete(this._openAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(Ey),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._closeAnimationDuration}),this._hostElement.classList.remove(Ey),this._animationsEnabled?(this._hostElement.style.setProperty(NE,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(LE),this._waitForAnimationToComplete(this._closeAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_clearAnimationClasses(){this._hostElement.classList.remove(X3),this._hostElement.classList.remove(LE)}_waitForAnimationToComplete(e,s){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(s,e)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(BC),F(bt,8),F(ky),F(NC),F(Je),F(wy),F(ki,8),F(Wo))},a.\u0275cmp=we({type:a,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:8,hostBindings:function(e,s){2&e&&(Oa("id",s._config.id),He("aria-modal",s._config.ariaModal)("role",s._config.role)("aria-labelledby",s._config.ariaLabel?null:s._ariaLabelledBy)("aria-label",s._config.ariaLabel)("aria-describedby",s._config.ariaDescribedBy||null),at("_mat-animation-noopable",!s._animationsEnabled))},features:[Se],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(e,s){1&e&&(I(0,"div",0)(1,"div",1),Q(2,jf,0,0,"ng-template",2),O()())},dependencies:[pc],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 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-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, var(--mdc-shape-medium, 4px))}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title,.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__actions,.mat-mdc-dialog-container.mdc-dialog--scrollable.mdc-dialog-scroll-divider-footer .mdc-dialog__actions{border-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title{border-bottom-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, "Arial");line-height:var(--mdc-dialog-subhead-line-height, 14px);font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500);letter-spacing:var(--mdc-dialog-subhead-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, black)}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, "Arial");line-height:var(--mdc-dialog-supporting-text-line-height, 14px);font-size:var(--mdc-dialog-supporting-text-size, 14px);font-weight:var(--mdc-dialog-supporting-text-weight, 500);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, black)}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2}),a})();class Ci{constructor(i,e,s){this._ref=i,this._containerInstance=s,this._afterOpened=new Ue,this._beforeClosed=new Ue,this._state=0,this.disableClose=e.disableClose,this.id=i.id,s._animationStateChanged.pipe(fi(d=>"opened"===d.state),Pn(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),s._animationStateChanged.pipe(fi(d=>"closed"===d.state),Pn(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),i.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Mi(this.backdropClick(),this.keydownEvents().pipe(fi(d=>27===d.keyCode&&!this.disableClose&&!pr(d)))).subscribe(d=>{this.disableClose||(d.preventDefault(),Q3(this,"keydown"===d.type?"keyboard":"mouse"))})}close(i){this._result=i,this._containerInstance._animationStateChanged.pipe(fi(e=>"closing"===e.state),Pn(1)).subscribe(e=>{this._beforeClosed.next(i),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),e.totalTime+100)}),this._state=1,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(i){let e=this._ref.config.positionStrategy;return i&&(i.left||i.right)?i.left?e.left(i.left):e.right(i.right):e.centerHorizontally(),i&&(i.top||i.bottom)?i.top?e.top(i.top):e.bottom(i.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(i="",e=""){return this._ref.updateSize(i,e),this}addPanelClass(i){return this._ref.addPanelClass(i),this}removePanelClass(i){return this._ref.removePanelClass(i),this}getState(){return this._state}_finishDialogClose(){this._state=2,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function Q3(a,i,e){return a._closeInteractionType=i,a.close(e)}const Bi=new _e("MatMdcDialogData"),VE=new _e("mat-mdc-dialog-default-options"),zE=new _e("mat-mdc-dialog-scroll-strategy"),J3={provide:zE,deps:[ta],useFactory:function HE(a){return()=>a.scrollStrategies.block()}};let kW=0,e5=(()=>{class a{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(e,s,d,f,_,w,D,k,P,z){this._overlay=e,this._defaultOptions=d,this._parentDialog=f,this._dialogRefConstructor=D,this._dialogContainerType=k,this._dialogDataToken=P,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new Ue,this._afterOpenedAtThisLevel=new Ue,this._idPrefix="mat-dialog-",this.dialogConfigClass=ky,this.afterAllClosed=_m(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(Ji(void 0))),this._scrollStrategy=w,this._dialog=s.get(DE)}open(e,s){let d;(s={...this._defaultOptions||new ky,...s}).id=s.id||`${this._idPrefix}${kW++}`,s.scrollStrategy=s.scrollStrategy||this._scrollStrategy();const f=this._dialog.open(e,{...s,positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:s},{provide:jC,useValue:s}]},templateContext:()=>({dialogRef:d}),providers:(_,w,D)=>{var k;return d=new this._dialogRefConstructor(_,s,D),d.updatePosition(null===(k=s)||void 0===k?void 0:k.position),[{provide:this._dialogContainerType,useValue:D},{provide:this._dialogDataToken,useValue:w.data},{provide:this._dialogRefConstructor,useValue:d}]}});return d.componentInstance=f.componentInstance,this.openDialogs.push(d),this.afterOpened.next(d),d.afterClosed().subscribe(()=>{const _=this.openDialogs.indexOf(d);_>-1&&(this.openDialogs.splice(_,1),this.openDialogs.length||this._getAfterAllClosed().next())}),d}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(s=>s.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let s=e.length;for(;s--;)e[s].close()}}return a.\u0275fac=function(e){xs()},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),KC=(()=>{class a extends e5{constructor(e,s,d,f,_,w,D,k){super(e,s,f,w,D,_,Ci,BE,Bi,k),this._idPrefix="mat-mdc-dialog-"}}return a.\u0275fac=function(e){return new(e||a)(oe(ta),oe(Gi),oe(uf,8),oe(VE,8),oe(zE),oe(a,12),oe(IC),oe(ki,8))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),t5=0,qo=(()=>{class a{constructor(e,s,d){this.dialogRef=e,this._elementRef=s,this._dialog=d,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=n5(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){const s=e._matDialogClose||e._matDialogCloseResult;s&&(this.dialogResult=s.currentValue)}_onButtonClick(e){Q3(this.dialogRef,0===e.screenX&&0===e.screenY?"keyboard":"mouse",this.dialogResult)}}return a.\u0275fac=function(e){return new(e||a)(F(Ci,8),F(Be),F(KC))},a.\u0275dir=me({type:a,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(e,s){1&e&&J("click",function(f){return s._onButtonClick(f)}),2&e&&He("aria-label",s.ariaLabel||null)("type",s.type)},inputs:{ariaLabel:["aria-label","ariaLabel"],type:"type",dialogResult:["mat-dialog-close","dialogResult"],_matDialogClose:["matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[$n]}),a})(),nr=(()=>{class a{constructor(e,s,d){this._dialogRef=e,this._elementRef=s,this._dialog=d,this.id="mat-mdc-dialog-title-"+t5++}ngOnInit(){this._dialogRef||(this._dialogRef=n5(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{const e=this._dialogRef._containerInstance;e&&!e._ariaLabelledBy&&(e._ariaLabelledBy=this.id)})}}return a.\u0275fac=function(e){return new(e||a)(F(Ci,8),F(Be),F(KC))},a.\u0275dir=me({type:a,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(e,s){2&e&&Oa("id",s.id)},inputs:{id:"id"},exportAs:["matDialogTitle"]}),a})(),ir=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"]}),a})(),Kn=(()=>{class a{constructor(){this.align="start"}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:4,hostBindings:function(e,s){2&e&&at("mat-mdc-dialog-actions-align-center","center"===s.align)("mat-mdc-dialog-actions-align-end","end"===s.align)},inputs:{align:"align"}}),a})();function n5(a,i){let e=a.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?i.find(s=>s.id===e.id):null}let r5=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[KC,J3],imports:[gd,Iu,ku,Qt,Qt]}),a})();const o5=is(a=>function(e=null){a(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=e});function GE(a){throw new o5(a)}function s5(a,i){const e="object"==typeof i;return new Promise((s,d)=>{const f=new Zu({next:_=>{s(_),f.unsubscribe()},error:d,complete:()=>{e?s(i.defaultValue):d(new vm)}});a.subscribe(f)})}var l5;const UE=[django.gettext("Sunday"),django.gettext("Monday"),django.gettext("Tuesday"),django.gettext("Wednesday"),django.gettext("Thursday"),django.gettext("Friday"),django.gettext("Saturday")],jE=[django.gettext("January"),django.gettext("February"),django.gettext("March"),django.gettext("April"),django.gettext("May"),django.gettext("June"),django.gettext("July"),django.gettext("August"),django.gettext("September"),django.gettext("October"),django.gettext("November"),django.gettext("December")],c5=a=>{const i=[];return a.forEach(e=>{i.push(e.substring(0,3))}),i},Jm=(a,i,e)=>(typeof i>"u"&&(i=new Date),bd(a,i,e)),bd=(a,i,e,s)=>{s=s||{},i=i||new Date;const d=e||WE;d.formats=d.formats||{};const f=i.getTime();return(s.utc||"number"==typeof s.timezone)&&(i=d5(i)),"number"==typeof s.timezone&&(i=new Date(i.getTime()+6e4*s.timezone)),a.replace(/%([-_0]?.)/g,(_,w)=>{let D,k,P,z,W,Z,te,re;if(P=null,W=null,2===w.length){if(P=w[0],"-"===P)W="";else if("_"===P)W=" ";else{if("0"!==P)return _;W="0"}w=w[1]}switch(w){case"A":return d.days[i.getDay()];case"a":return d.shortDays[i.getDay()];case"B":return d.months[i.getMonth()];case"b":case"h":return d.shortMonths[i.getMonth()];case"C":return na(Math.floor(i.getFullYear()/100),W);case"D":return bd(d.formats.D||"%m/%d/%y",i,d);case"d":return na(i.getDate(),W);case"e":return i.getDate();case"F":return bd(d.formats.F||"%Y-%m-%d",i,d);case"H":return na(i.getHours(),W);case"I":return na(eg(i),W);case"j":return te=new Date(i.getFullYear(),0,1),D=Math.ceil((i.getTime()-te.getTime())/864e5),na(D,3);case"k":return na(i.getHours(),void 0===W?" ":W);case"L":return na(Math.floor(f%1e3),3);case"l":return na(eg(i),void 0===W?" ":W);case"M":return na(i.getMinutes(),W);case"m":return na(i.getMonth()+1,W);case"n":return"\n";case"o":return String(i.getDate())+RW(i.getDate());case"P":case"p":return"";case"R":return bd(d.formats.R||"%H:%M",i,d);case"r":return bd(d.formats.r||"%I:%M:%S %p",i,d);case"S":return na(i.getSeconds(),W);case"s":return Math.floor(f/1e3);case"T":return bd(d.formats.T||"%H:%M:%S",i,d);case"t":return"\t";case"U":return na(u5(i,"sunday"),W);case"u":return k=i.getDay(),0===k?7:k;case"v":return bd(d.formats.v||"%e-%b-%Y",i,d);case"W":return na(u5(i,"monday"),W);case"w":return i.getDay();case"Y":return i.getFullYear();case"y":return re=String(i.getFullYear()),re.slice(re.length-2);case"Z":return s.utc?"GMT":(Z=i.toString().match(/\((\w+)\)/),Z&&Z[1]||"");case"z":return s.utc?"+0000":(z="number"==typeof s.timezone?s.timezone:-i.getTimezoneOffset(),(z<0?"-":"+")+na(Math.abs(z/60))+na(z%60));default:return w}})},d5=a=>{const i=6e4*(a.getTimezoneOffset()||0);return new Date(a.getTime()+i)},na=(a,i,e)=>{"number"==typeof i&&(e=i,i="0"),i=i??"0",e=e??2;let s=String(a);if(i)for(;s.length{let i;return i=a.getHours(),0===i?i=12:i>12&&(i-=12),i},RW=a=>{const i=a%10,e=a%100;if(e>=11&&e<=13||0===i||i>=4)return"th";switch(i){case 1:return"st";case 2:return"nd";case 3:return"rd"}return"th"},u5=(a,i)=>{i=i||"sunday";let e=a.getDay();"monday"===i&&(0===e?e=6:e--);const s=new Date(a.getFullYear(),0,1),d=Math.floor((a.getTime()-s.getTime())/864e5);return Math.floor((d+7-e)/7)},h5=a=>a.replace(/./g,i=>{switch(i){case"a":case"A":return"%p";case"b":case"d":case"m":case"w":case"W":case"y":case"Y":return"%"+i;case"c":return"%FT%TZ";case"D":return"%a";case"e":case"O":return"%z";case"f":return"%I:%M";case"F":return"%F";case"h":case"g":return"%I";case"H":case"G":return"%H";case"i":return"%M";case"I":case"L":case"S":case"t":case"U":return"";case"j":return"%d";case"l":return"%A";case"M":case"N":return"%b";case"n":return"%m";case"o":return"%W";case"P":return"%R %p";case"r":return"%a, %d %b %Y %T %z";case"s":return"%S";case"T":return"%Z";case"u":return"0";case"z":return"%j";case"Z":return"z";default:return i}}),zs=(a,i,e=null)=>{let s;if("None"===i||null==i)i=7226578800,s=django.gettext("Never");else{let d=django.get_format(a);e&&(d+=e),s=Jm(h5(d),new Date(1e3*i))}return s},$E=a=>"yes"===a||!0===a||"true"===a||1===a,WE={days:UE,shortDays:c5(UE),months:jE,shortMonths:c5(jE),AM:"AM",PM:"PM",am:"am",pm:"pm"},Ou=(a,i)=>{let e;if(a instanceof Promise)e=a;else if(a instanceof wl)e=a;else{if(i)return s5(a.pipe(function IW(a,i){const{first:e,each:s,with:d=GE,scheduler:f=i??Co,meta:_=null}=EV(a)?{first:a}:"number"==typeof a?{each:a}:a;if(null==e&&null==s)throw new TypeError("No timeout provided.");return Un((w,D)=>{let k,P,z=null,W=0;const Z=te=>{P=To(D,f,()=>{try{k.unsubscribe(),Dr(d({meta:_,lastValue:z,seen:W})).subscribe(D)}catch(re){D.error(re)}},te)};k=w.subscribe(ci(D,te=>{null==P||P.unsubscribe(),W++,D.next(z=te),s>0&&Z(s)},void 0,void 0,()=>{null!=P&&P.closed||null==P||P.unsubscribe(),z=null})),!W&&Z(null!=e?"number"==typeof e?e:+e-f.now():s)})}(i)));e=s5(a)}return e};class wl{constructor(){this[l5]="Future",this.resolve=()=>{},this.reject=()=>{},this.promise=new Promise((i,e)=>{this.resolve=i,this.reject=e})}then(i,e){return this.promise.then(i,e)}catch(i){return this.promise.catch(i)}finally(i){return this.promise.finally(i)}}l5=Symbol.toStringTag;const QC=["mat-button",""],YE=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],qE=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],ZE=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",f5=["mat-icon-button",""],BW=["*"],HW=[{selector:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{selector:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{selector:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{selector:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{selector:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{selector:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{selector:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],GW=gc(mc(vc(class{constructor(a){this._elementRef=a}})));let KE=(()=>{class a extends GW{constructor(e,s,d,f){super(e),this._platform=s,this._ngZone=d,this._animationMode=f,this._focusMonitor=Gt(Wo),this._isFab=!1;const _=e.nativeElement.classList;for(const w of HW)this._hasHostAttributes(w.selector)&&w.mdcClasses.forEach(D=>{_.add(D)})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}focus(e="program",s){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,s):this._elementRef.nativeElement.focus(s)}_hasHostAttributes(...e){return e.some(s=>this._elementRef.nativeElement.hasAttribute(s))}_isRippleDisabled(){return this.disableRipple||this.disabled}}return a.\u0275fac=function(e){xs()},a.\u0275dir=me({type:a,viewQuery:function(e,s){if(1&e&&ot(Ur,5),2&e){let d;Ee(d=Oe())&&(s.ripple=d.first)}},features:[Se]}),a})(),JE=(()=>{class a extends KE{constructor(e,s,d,f){super(e,s,d,f),this._haltDisabledEvents=_=>{this.disabled&&(_.preventDefault(),_.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}}return a.\u0275fac=function(e){xs()},a.\u0275dir=me({type:a,features:[Se]}),a})(),pi=(()=>{class a extends KE{constructor(e,s,d,f){super(e,s,d,f)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(si),F(Je),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:7,hostBindings:function(e,s){2&e&&(He("disabled",s.disabled||null),at("_mat-animation-noopable","NoopAnimations"===s._animationMode)("mat-unthemed",!s.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[Se],attrs:QC,ngContentSelectors:qE,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,s){1&e&&(Fn(YE),he(0,"span",0),ht(1),I(2,"span",1),ht(3,1),O(),ht(4,2),he(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(at("mdc-button__ripple",!s._isFab)("mdc-fab__ripple",s._isFab),N(6),V("matRippleDisabled",s._isRippleDisabled())("matRippleTrigger",s._elementRef.nativeElement))},dependencies:[Ur],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),a})(),e1=(()=>{class a extends JE{constructor(e,s,d,f){super(e,s,d,f)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(si),F(Je),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:9,hostBindings:function(e,s){2&e&&(He("disabled",s.disabled||null)("tabindex",s.disabled?-1:s.tabIndex)("aria-disabled",s.disabled.toString()),at("_mat-animation-noopable","NoopAnimations"===s._animationMode)("mat-unthemed",!s.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[Se],attrs:QC,ngContentSelectors:qE,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,s){1&e&&(Fn(YE),he(0,"span",0),ht(1),I(2,"span",1),ht(3,1),O(),ht(4,2),he(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(at("mdc-button__ripple",!s._isFab)("mdc-fab__ripple",s._isFab),N(6),V("matRippleDisabled",s._isRippleDisabled())("matRippleTrigger",s._elementRef.nativeElement))},dependencies:[Ur],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',ZE],encapsulation:2,changeDetection:0}),a})(),yc=(()=>{class a extends KE{constructor(e,s,d,f){super(e,s,d,f)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(si),F(Je),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["button","mat-icon-button",""]],hostVars:7,hostBindings:function(e,s){2&e&&(He("disabled",s.disabled||null),at("_mat-animation-noopable","NoopAnimations"===s._animationMode)("mat-unthemed",!s.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[Se],attrs:f5,ngContentSelectors:BW,decls:5,vars:3,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,s){1&e&&(Fn(),he(0,"span",0),ht(1),he(2,"span",1)(3,"span",2)(4,"span",3)),2&e&&(N(3),V("matRippleDisabled",s._isRippleDisabled())("matRippleCentered",!0)("matRippleTrigger",s._elementRef.nativeElement))},dependencies:[Ur],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',ZE],encapsulation:2,changeDetection:0}),a})(),p5=(()=>{class a extends JE{constructor(e,s,d,f){super(e,s,d,f)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(si),F(Je),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["a","mat-icon-button",""]],hostVars:9,hostBindings:function(e,s){2&e&&(He("disabled",s.disabled||null)("tabindex",s.disabled?-1:s.tabIndex)("aria-disabled",s.disabled.toString()),at("_mat-animation-noopable","NoopAnimations"===s._animationMode)("mat-unthemed",!s.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[Se],attrs:f5,ngContentSelectors:qE,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,s){1&e&&(Fn(YE),he(0,"span",0),ht(1),I(2,"span",1),ht(3,1),O(),ht(4,2),he(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(at("mdc-button__ripple",!s._isFab)("mdc-fab__ripple",s._isFab),N(6),V("matRippleDisabled",s._isRippleDisabled())("matRippleTrigger",s._elementRef.nativeElement))},dependencies:[Ur],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',ZE],encapsulation:2,changeDetection:0}),a})(),Iy=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,io,Qt]}),a})();class xn{constructor(i){this.el=i}ngOnInit(){this.el.nativeElement.innerHTML=django.gettext(this.el.nativeElement.innerHTML.trim().replaceAll("&","&"))}}xn.\u0275fac=function(i){return new(i||xn)(F(Be))},xn.\u0275dir=me({type:xn,selectors:[["uds-translate"]]});class tg{constructor(i){this.sanitizer=i}transform(i,e){return i=(i=(i=i.replace(/<\s*script\s*/gi,"")).replace(/onclick|onmouseover|onmouseout|onmousemove|onmouseenter|onmouseleave|onmouseup|onmousedown|onkeyup|onkeydown|onkeypress|onkeydown|onkeypress|onkeyup|onchange|onfocus|onblur|onload|onunload|onabort|onerror|onresize|onscroll/gi,"")).replace(/javascript\s*\:/gi,""),this.sanitizer.bypassSecurityTrustHtml(i)}}function $W(a,i){if(1&a){const e=Pe();I(0,"button",4),J("click",function(){return ae(e),se(q().resolveAndClose(!1))}),I(1,"uds-translate"),Y(2,"Close"),O(),Y(3),O()}if(2&a){const e=q();N(3),In(e.extra)}}function WW(a,i){if(1&a){const e=Pe();I(0,"button",5),J("click",function(){return ae(e),se(q().resolveAndClose(!0))}),I(1,"uds-translate"),Y(2,"Yes"),O()()}2&a&&V("color",q().yesColor)}function YW(a,i){if(1&a){const e=Pe();I(0,"button",5),J("click",function(){return ae(e),se(q().resolveAndClose(!1))}),I(1,"uds-translate"),Y(2,"No"),O()()}2&a&&V("color",q().noColor)}tg.\u0275fac=function(i){return new(i||tg)(F(F_,16))},tg.\u0275pipe=it({name:"safeHtml",type:tg,pure:!0});var Lu=(()=>{return(a=Lu||(Lu={}))[a.alert=0]="alert",a[a.question=1]="question",Lu;var a})();class ng{constructor(i,e){this.dialogRef=i,this.data=e,this.yesColor="primary",this.noColor="warn",this.extra="",this.subscription={},this.acceptance=new wl}resolveAndClose(i){this.acceptance.resolve(i),this.close()}close(){this.dialogRef.close()}closed(){null!==this.subscription&&this.subscription.unsubscribe()}setExtra(i){this.extra=" ("+Math.floor(i/1e3)+" "+django.gettext("seconds")+") "}initAlert(){var i=this;return Xe(function*(){const e=i.data.autoclose||0;e>0&&(i.dialogRef.afterClosed().subscribe(s=>{i.closed()}),i.setExtra(e),i.subscription=function EW(a=0,i=Co){return a<0&&(a=0),Gm(a,a,i)}(1e3).subscribe(s=>{const d=e-1e3*(s+1);i.setExtra(d),d<=0&&i.close()}))})()}ngOnInit(){!0===this.data.warnOnYes&&(this.yesColor="warn",this.noColor="primary"),this.data.type===Lu.alert&&this.initAlert()}}ng.\u0275fac=function(i){return new(i||ng)(F(Ci),F(Bi))},ng.\u0275cmp=we({type:ng,selectors:[["uds-modal"]],decls:8,vars:9,consts:[["mat-dialog-title","",3,"innerHtml"],[3,"innerHTML"],["mat-raised-button","","mat-dialog-close","",3,"click",4,"ngIf"],["mat-raised-button","","mat-dialog-close","",3,"color","click",4,"ngIf"],["mat-raised-button","","mat-dialog-close","",3,"click"],["mat-raised-button","","mat-dialog-close","",3,"color","click"]],template:function(i,e){1&i&&(he(0,"h4",0),Yc(1,"safeHtml"),he(2,"mat-dialog-content",1),Yc(3,"safeHtml"),I(4,"mat-dialog-actions"),Q(5,$W,4,1,"button",2),Q(6,WW,3,1,"button",3),Q(7,YW,3,1,"button",3),O()),2&i&&(V("innerHtml",Jp(1,5,e.data.title),Rr),N(2),V("innerHTML",Jp(3,7,e.data.body),Rr),N(3),V("ngIf",0===e.data.type),N(1),V("ngIf",1===e.data.type),N(1),V("ngIf",1===e.data.type))},dependencies:[zt,pi,qo,nr,ir,Kn,xn,tg],styles:[".uds-modal-footer[_ngcontent-%COMP%]{display:flex;justify-content:left}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});var Xo=(()=>{return(a=Xo||(Xo={})).TEXT="text",a.TEXT_AUTOCOMPLETE="text-autocomplete",a.TEXTBOX="textbox",a.NUMERIC="numeric",a.PASSWORD="password",a.HIDDEN="hidden",a.CHOICE="choice",a.MULTI_CHOICE="multichoice",a.EDITLIST="editlist",a.CHECKBOX="checkbox",a.IMAGECHOICE="imgchoice",a.DATE="date",a.DATETIME="datetime",a.TAGLIST="taglist",Xo;var a})();class m5{static locateChoice(i,e){const s=e.gui.values;if(void 0===s)return{id:"",img:"",text:""};let d=s.find(f=>f.id===i);if(void 0===d)try{d=s[0]}catch{d={id:"",img:"",text:""}}return d}}function g5(...a){const i=th(a),{args:e,keys:s}=JA(a),d=new Gn(f=>{const{length:_}=e;if(!_)return void f.complete();const w=new Array(_);let D=_,k=_;for(let P=0;P<_;P++){let z=!1;Dr(e[P]).subscribe(ci(f,W=>{z||(z=!0,k--),w[P]=W},()=>D--,void 0,()=>{(!D||!z)&&(k||f.next(s?ek(s,w):w),f.complete())}))}});return i?d.pipe(Vx(i)):d}let v5=(()=>{class a{constructor(e,s){this._renderer=e,this._elementRef=s,this.onChange=d=>{},this.onTouched=()=>{}}setProperty(e,s){this._renderer.setProperty(this._elementRef.nativeElement,e,s)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}}return a.\u0275fac=function(e){return new(e||a)(F(Yl),F(Be))},a.\u0275dir=me({type:a}),a})(),Fu=(()=>{class a extends v5{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,features:[Se]}),a})();const jr=new _e("NgValueAccessor"),y5={provide:jr,useExisting:nn(()=>rr),multi:!0},b5=new _e("CompositionEventMode");let rr=(()=>{class a extends v5{constructor(e,s,d){super(e,s),this._compositionMode=d,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function XW(){const a=ac()?ac().getUserAgent():"";return/android (\d+)/.test(a.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}}return a.\u0275fac=function(e){return new(e||a)(F(Yl),F(Be),F(b5,8))},a.\u0275dir=me({type:a,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(e,s){1&e&&J("input",function(f){return s._handleInput(f.target.value)})("blur",function(){return s.onTouched()})("compositionstart",function(){return s._compositionStart()})("compositionend",function(f){return s._compositionEnd(f.target.value)})},features:[et([y5]),Se]}),a})();function Nu(a){return null==a||("string"==typeof a||Array.isArray(a))&&0===a.length}function w5(a){return null!=a&&"number"==typeof a.length}const xr=new _e("NgValidators"),Bu=new _e("NgAsyncValidators"),KW=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class t1{static min(i){return function Py(a){return i=>{if(Nu(i.value)||Nu(a))return null;const e=parseFloat(i.value);return!isNaN(e)&&e{if(Nu(i.value)||Nu(a))return null;const e=parseFloat(i.value);return!isNaN(e)&&e>a?{max:{max:a,actual:i.value}}:null}}(i)}static required(i){return x5(i)}static requiredTrue(i){return C5(i)}static email(i){return function S5(a){return Nu(a.value)||KW.test(a.value)?null:{email:!0}}(i)}static minLength(i){return function D5(a){return i=>Nu(i.value)||!w5(i.value)?null:i.value.length{if(Nu(s.value))return null;const d=s.value;return i.test(d)?null:{pattern:{requiredPattern:e,actualValue:d}}}}(i)}static nullValidator(i){return null}static compose(i){return E5(i)}static composeAsync(i){return I5(i)}}function x5(a){return Nu(a.value)?{required:!0}:null}function C5(a){return!0===a.value?null:{required:!0}}function eI(a){return i=>w5(i.value)&&i.value.length>a?{maxlength:{requiredLength:a,actualLength:i.value.length}}:null}function r1(a){return null}function T5(a){return null!=a}function a1(a){return Uv(a)?Wi(a):a}function A5(a){let i={};return a.forEach(e=>{i=null!=e?{...i,...e}:i}),0===Object.keys(i).length?null:i}function tI(a,i){return i.map(e=>e(a))}function k5(a){return a.map(i=>function QW(a){return!a.validate}(i)?i:e=>i.validate(e))}function E5(a){if(!a)return null;const i=a.filter(T5);return 0==i.length?null:function(e){return A5(tI(e,i))}}function o1(a){return null!=a?E5(k5(a)):null}function I5(a){if(!a)return null;const i=a.filter(T5);return 0==i.length?null:function(e){return g5(tI(e,i).map(a1)).pipe(gt(A5))}}function s1(a){return null!=a?I5(k5(a)):null}function P5(a,i){return null===a?[i]:Array.isArray(a)?[...a,i]:[a,i]}function Ry(a){return a._rawValidators}function R5(a){return a._rawAsyncValidators}function nI(a){return a?Array.isArray(a)?a:[a]:[]}function Oy(a,i){return Array.isArray(a)?a.includes(i):a===i}function Zo(a,i){const e=nI(i);return nI(a).forEach(d=>{Oy(e,d)||e.push(d)}),e}function O5(a,i){return nI(i).filter(e=>!Oy(a,e))}class l1{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(i){this._rawValidators=i||[],this._composedValidatorFn=o1(this._rawValidators)}_setAsyncValidators(i){this._rawAsyncValidators=i||[],this._composedAsyncValidatorFn=s1(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(i){this._onDestroyCallbacks.push(i)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(i=>i()),this._onDestroyCallbacks=[]}reset(i){this.control&&this.control.reset(i)}hasError(i,e){return!!this.control&&this.control.hasError(i,e)}getError(i,e){return this.control?this.control.getError(i,e):null}}class Na extends l1{get formDirective(){return null}get path(){return null}}class So extends l1{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class iI{constructor(i){this._cd=i}get isTouched(){var i,e;return!(null===(i=this._cd)||void 0===i||null===(e=i.control)||void 0===e||!e.touched)}get isUntouched(){var i,e;return!(null===(i=this._cd)||void 0===i||null===(e=i.control)||void 0===e||!e.untouched)}get isPristine(){var i,e;return!(null===(i=this._cd)||void 0===i||null===(e=i.control)||void 0===e||!e.pristine)}get isDirty(){var i,e;return!(null===(i=this._cd)||void 0===i||null===(e=i.control)||void 0===e||!e.dirty)}get isValid(){var i,e;return!(null===(i=this._cd)||void 0===i||null===(e=i.control)||void 0===e||!e.valid)}get isInvalid(){var i,e;return!(null===(i=this._cd)||void 0===i||null===(e=i.control)||void 0===e||!e.invalid)}get isPending(){var i,e;return!(null===(i=this._cd)||void 0===i||null===(e=i.control)||void 0===e||!e.pending)}get isSubmitted(){var i;return!(null===(i=this._cd)||void 0===i||!i.submitted)}}let Qn=(()=>{class a extends iI{constructor(e){super(e)}}return a.\u0275fac=function(e){return new(e||a)(F(So,2))},a.\u0275dir=me({type:a,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(e,s){2&e&&at("ng-untouched",s.isUntouched)("ng-touched",s.isTouched)("ng-pristine",s.isPristine)("ng-dirty",s.isDirty)("ng-valid",s.isValid)("ng-invalid",s.isInvalid)("ng-pending",s.isPending)},features:[Se]}),a})(),c1=(()=>{class a extends iI{constructor(e){super(e)}}return a.\u0275fac=function(e){return new(e||a)(F(Na,10))},a.\u0275dir=me({type:a,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(e,s){2&e&&at("ng-untouched",s.isUntouched)("ng-touched",s.isTouched)("ng-pristine",s.isPristine)("ng-dirty",s.isDirty)("ng-valid",s.isValid)("ng-invalid",s.isInvalid)("ng-pending",s.isPending)("ng-submitted",s.isSubmitted)},features:[Se]}),a})();const ig="VALID",h1="INVALID",rg="PENDING",Ly="DISABLED";function oI(a){return(ag(a)?a.validators:a)||null}function sI(a,i){return(ag(i)?i.asyncValidators:a)||null}function ag(a){return null!=a&&!Array.isArray(a)&&"object"==typeof a}class lI{constructor(i,e){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(i),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(i){this._rawValidators=this._composedValidatorFn=i}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(i){this._rawAsyncValidators=this._composedAsyncValidatorFn=i}get parent(){return this._parent}get valid(){return this.status===ig}get invalid(){return this.status===h1}get pending(){return this.status==rg}get disabled(){return this.status===Ly}get enabled(){return this.status!==Ly}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(i){this._assignValidators(i)}setAsyncValidators(i){this._assignAsyncValidators(i)}addValidators(i){this.setValidators(Zo(i,this._rawValidators))}addAsyncValidators(i){this.setAsyncValidators(Zo(i,this._rawAsyncValidators))}removeValidators(i){this.setValidators(O5(i,this._rawValidators))}removeAsyncValidators(i){this.setAsyncValidators(O5(i,this._rawAsyncValidators))}hasValidator(i){return Oy(this._rawValidators,i)}hasAsyncValidator(i){return Oy(this._rawAsyncValidators,i)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(i={}){this.touched=!0,this._parent&&!i.onlySelf&&this._parent.markAsTouched(i)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(i=>i.markAllAsTouched())}markAsUntouched(i={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(e=>{e.markAsUntouched({onlySelf:!0})}),this._parent&&!i.onlySelf&&this._parent._updateTouched(i)}markAsDirty(i={}){this.pristine=!1,this._parent&&!i.onlySelf&&this._parent.markAsDirty(i)}markAsPristine(i={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(e=>{e.markAsPristine({onlySelf:!0})}),this._parent&&!i.onlySelf&&this._parent._updatePristine(i)}markAsPending(i={}){this.status=rg,!1!==i.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!i.onlySelf&&this._parent.markAsPending(i)}disable(i={}){const e=this._parentMarkedDirty(i.onlySelf);this.status=Ly,this.errors=null,this._forEachChild(s=>{s.disable({...i,onlySelf:!0})}),this._updateValue(),!1!==i.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...i,skipPristineCheck:e}),this._onDisabledChange.forEach(s=>s(!0))}enable(i={}){const e=this._parentMarkedDirty(i.onlySelf);this.status=ig,this._forEachChild(s=>{s.enable({...i,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:i.emitEvent}),this._updateAncestors({...i,skipPristineCheck:e}),this._onDisabledChange.forEach(s=>s(!1))}_updateAncestors(i){this._parent&&!i.onlySelf&&(this._parent.updateValueAndValidity(i),i.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(i){this._parent=i}getRawValue(){return this.value}updateValueAndValidity(i={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===ig||this.status===rg)&&this._runAsyncValidator(i.emitEvent)),!1!==i.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!i.onlySelf&&this._parent.updateValueAndValidity(i)}_updateTreeValidity(i={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(i)),this.updateValueAndValidity({onlySelf:!0,emitEvent:i.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Ly:ig}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(i){if(this.asyncValidator){this.status=rg,this._hasOwnPendingAsyncValidator=!0;const e=a1(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(s=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(s,{emitEvent:i})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(i,e={}){this.errors=i,this._updateControlsErrors(!1!==e.emitEvent)}get(i){let e=i;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((s,d)=>s&&s._find(d),this)}getError(i,e){const s=e?this.get(e):this;return s&&s.errors?s.errors[i]:null}hasError(i,e){return!!this.getError(i,e)}get root(){let i=this;for(;i._parent;)i=i._parent;return i}_updateControlsErrors(i){this.status=this._calculateStatus(),i&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(i)}_initObservables(){this.valueChanges=new ye,this.statusChanges=new ye}_calculateStatus(){return this._allControlsDisabled()?Ly:this.errors?h1:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(rg)?rg:this._anyControlsHaveStatus(h1)?h1:ig}_anyControlsHaveStatus(i){return this._anyControls(e=>e.status===i)}_anyControlsDirty(){return this._anyControls(i=>i.dirty)}_anyControlsTouched(){return this._anyControls(i=>i.touched)}_updatePristine(i={}){this.pristine=!this._anyControlsDirty(),this._parent&&!i.onlySelf&&this._parent._updatePristine(i)}_updateTouched(i={}){this.touched=this._anyControlsTouched(),this._parent&&!i.onlySelf&&this._parent._updateTouched(i)}_registerOnCollectionChange(i){this._onCollectionChange=i}_setUpdateStrategy(i){ag(i)&&null!=i.updateOn&&(this._updateOn=i.updateOn)}_parentMarkedDirty(i){return!i&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(i){return null}_assignValidators(i){this._rawValidators=Array.isArray(i)?i.slice():i,this._composedValidatorFn=function r9(a){return Array.isArray(a)?o1(a):a||null}(this._rawValidators)}_assignAsyncValidators(i){this._rawAsyncValidators=Array.isArray(i)?i.slice():i,this._composedAsyncValidatorFn=function B5(a){return Array.isArray(a)?s1(a):a||null}(this._rawAsyncValidators)}}class Hu extends lI{constructor(i,e,s){super(oI(e),sI(s,e)),this.controls=i,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(i,e){return this.controls[i]?this.controls[i]:(this.controls[i]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(i,e,s={}){this.registerControl(i,e),this.updateValueAndValidity({emitEvent:s.emitEvent}),this._onCollectionChange()}removeControl(i,e={}){this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),delete this.controls[i],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(i,e,s={}){this.controls[i]&&this.controls[i]._registerOnCollectionChange(()=>{}),delete this.controls[i],e&&this.registerControl(i,e),this.updateValueAndValidity({emitEvent:s.emitEvent}),this._onCollectionChange()}contains(i){return this.controls.hasOwnProperty(i)&&this.controls[i].enabled}setValue(i,e={}){(function Ko(a,i,e){a._forEachChild((s,d)=>{if(void 0===e[d])throw new Ce(1002,"")})})(this,0,i),Object.keys(i).forEach(s=>{(function V5(a,i,e){const s=a.controls;if(!(i?Object.keys(s):s).length)throw new Ce(1e3,"");if(!s[e])throw new Ce(1001,"")})(this,!0,s),this.controls[s].setValue(i[s],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(i,e={}){null!=i&&(Object.keys(i).forEach(s=>{const d=this.controls[s];d&&d.patchValue(i[s],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(i={},e={}){this._forEachChild((s,d)=>{s.reset(i[d],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(i,e,s)=>(i[s]=e.getRawValue(),i))}_syncPendingControls(){let i=this._reduceChildren(!1,(e,s)=>!!s._syncPendingControls()||e);return i&&this.updateValueAndValidity({onlySelf:!0}),i}_forEachChild(i){Object.keys(this.controls).forEach(e=>{const s=this.controls[e];s&&i(s,e)})}_setUpControls(){this._forEachChild(i=>{i.setParent(this),i._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(i){for(const[e,s]of Object.entries(this.controls))if(this.contains(e)&&i(s))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,s,d)=>((s.enabled||this.disabled)&&(e[d]=s.value),e))}_reduceChildren(i,e){let s=i;return this._forEachChild((d,f)=>{s=e(s,d,f)}),s}_allControlsDisabled(){for(const i of Object.keys(this.controls))if(this.controls[i].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(i){return this.controls.hasOwnProperty(i)?this.controls[i]:null}}const $f=new _e("CallSetDisabledState",{providedIn:"root",factory:()=>f1}),f1="always";function Fy(a,i,e=f1){var s,d;H5(a,i),i.valueAccessor.writeValue(a.value),(a.disabled||"always"===e)&&(null===(s=(d=i.valueAccessor).setDisabledState)||void 0===s||s.call(d,a.disabled)),function s9(a,i){i.valueAccessor.registerOnChange(e=>{a._pendingValue=e,a._pendingChange=!0,a._pendingDirty=!0,"change"===a.updateOn&&dI(a,i)})}(a,i),function c9(a,i){const e=(s,d)=>{i.valueAccessor.writeValue(s),d&&i.viewToModelUpdate(s)};a.registerOnChange(e),i._registerOnDestroy(()=>{a._unregisterOnChange(e)})}(a,i),function l9(a,i){i.valueAccessor.registerOnTouched(()=>{a._pendingTouched=!0,"blur"===a.updateOn&&a._pendingChange&&dI(a,i),"submit"!==a.updateOn&&a.markAsTouched()})}(a,i),function z5(a,i){if(i.valueAccessor.setDisabledState){const e=s=>{i.valueAccessor.setDisabledState(s)};a.registerOnDisabledChange(e),i._registerOnDestroy(()=>{a._unregisterOnDisabledChange(e)})}}(a,i)}function m1(a,i,e=!0){const s=()=>{};i.valueAccessor&&(i.valueAccessor.registerOnChange(s),i.valueAccessor.registerOnTouched(s)),cI(a,i),a&&(i._invokeOnDestroyCallbacks(),a._registerOnCollectionChange(()=>{}))}function g1(a,i){a.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(i)})}function H5(a,i){const e=Ry(a);null!==i.validator?a.setValidators(P5(e,i.validator)):"function"==typeof e&&a.setValidators([e]);const s=R5(a);null!==i.asyncValidator?a.setAsyncValidators(P5(s,i.asyncValidator)):"function"==typeof s&&a.setAsyncValidators([s]);const d=()=>a.updateValueAndValidity();g1(i._rawValidators,d),g1(i._rawAsyncValidators,d)}function cI(a,i){let e=!1;if(null!==a){if(null!==i.validator){const d=Ry(a);if(Array.isArray(d)&&d.length>0){const f=d.filter(_=>_!==i.validator);f.length!==d.length&&(e=!0,a.setValidators(f))}}if(null!==i.asyncValidator){const d=R5(a);if(Array.isArray(d)&&d.length>0){const f=d.filter(_=>_!==i.asyncValidator);f.length!==d.length&&(e=!0,a.setAsyncValidators(f))}}}const s=()=>{};return g1(i._rawValidators,s),g1(i._rawAsyncValidators,s),e}function dI(a,i){a._pendingDirty&&a.markAsDirty(),a.setValue(a._pendingValue,{emitModelToViewChange:!1}),i.viewToModelUpdate(a._pendingValue),a._pendingChange=!1}function Ny(a,i){H5(a,i)}function fI(a,i){if(!a.hasOwnProperty("model"))return!1;const e=a.model;return!!e.isFirstChange()||!Object.is(i,e.currentValue)}function G5(a,i){a._syncPendingControls(),i.forEach(e=>{const s=e.control;"submit"===s.updateOn&&s._pendingChange&&(e.viewToModelUpdate(s._pendingValue),s._pendingChange=!1)})}function mI(a,i){if(!i)return null;let e,s,d;return Array.isArray(i),i.forEach(f=>{f.constructor===rr?e=f:function pI(a){return Object.getPrototypeOf(a.constructor)===Fu}(f)?s=f:d=f}),d||s||e||null}const h9={provide:Na,useExisting:nn(()=>wd)},By=(()=>Promise.resolve())();let wd=(()=>{class a extends Na{constructor(e,s,d){super(),this.callSetDisabledState=d,this.submitted=!1,this._directives=new Set,this.ngSubmit=new ye,this.form=new Hu({},o1(e),s1(s))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){By.then(()=>{const s=this._findContainer(e.path);e.control=s.registerControl(e.name,e.control),Fy(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){By.then(()=>{const s=this._findContainer(e.path);s&&s.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){By.then(()=>{const s=this._findContainer(e.path),d=new Hu({});Ny(d,e),s.registerControl(e.name,d),d.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){By.then(()=>{const s=this._findContainer(e.path);s&&s.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,s){By.then(()=>{this.form.get(e.path).setValue(s)})}setValue(e){this.control.setValue(e)}onSubmit(e){var s;return this.submitted=!0,G5(this.form,this._directives),this.ngSubmit.emit(e),"dialog"===(null==e||null===(s=e.target)||void 0===s?void 0:s.method)}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}}return a.\u0275fac=function(e){return new(e||a)(F(xr,10),F(Bu,10),F($f,8))},a.\u0275dir=me({type:a,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(e,s){1&e&&J("submit",function(f){return s.onSubmit(f)})("reset",function(){return s.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[et([h9]),Se]}),a})();function gI(a,i){const e=a.indexOf(i);e>-1&&a.splice(e,1)}function U5(a){return"object"==typeof a&&null!==a&&2===Object.keys(a).length&&"value"in a&&"disabled"in a}const vI=class extends lI{constructor(i=null,e,s){super(oI(e),sI(s,e)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(i),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),ag(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=U5(i)?i.value:i)}setValue(i,e={}){this.value=this._pendingValue=i,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(s=>s(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(i,e={}){this.setValue(i,e)}reset(i=this.defaultValue,e={}){this._applyFormState(i),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(i){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(i){this._onChange.push(i)}_unregisterOnChange(i){gI(this._onChange,i)}registerOnDisabledChange(i){this._onDisabledChange.push(i)}_unregisterOnDisabledChange(i){gI(this._onDisabledChange,i)}_forEachChild(i){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(i){U5(i)?(this.value=this._pendingValue=i.value,i.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=i}},p9={provide:So,useExisting:nn(()=>Yn)},bI=(()=>Promise.resolve())();let Yn=(()=>{class a extends So{constructor(e,s,d,f,_,w){super(),this._changeDetectorRef=_,this.callSetDisabledState=w,this.control=new vI,this._registered=!1,this.update=new ye,this._parent=e,this._setValidators(s),this._setAsyncValidators(d),this.valueAccessor=mI(0,f)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const s=e.name.previousValue;this.formDirective.removeControl({name:s,path:this._getPath(s)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),fI(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){Fy(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(e){bI.then(()=>{var s;this.control.setValue(e,{emitViewToModelChange:!1}),null===(s=this._changeDetectorRef)||void 0===s||s.markForCheck()})}_updateDisabled(e){const s=e.isDisabled.currentValue,d=0!==s&&lm(s);bI.then(()=>{var f;d&&!this.control.disabled?this.control.disable():!d&&this.control.disabled&&this.control.enable(),null===(f=this._changeDetectorRef)||void 0===f||f.markForCheck()})}_getPath(e){return this._parent?function p1(a,i){return[...i.path,a]}(e,this._parent):[e]}}return a.\u0275fac=function(e){return new(e||a)(F(Na,9),F(xr,10),F(Bu,10),F(jr,10),F(Zt,8),F($f,8))},a.\u0275dir=me({type:a,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[et([p9]),Se,$n]}),a})(),Vy=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]}),a})();const j5={provide:jr,useExisting:nn(()=>xd),multi:!0};let xd=(()=>{class a extends Fu{writeValue(e){this.setProperty("value",e??"")}registerOnChange(e){this.onChange=s=>{e(""==s?null:parseFloat(s))}}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(e,s){1&e&&J("input",function(f){return s.onChange(f.target.value)})("blur",function(){return s.onTouched()})},features:[et([j5]),Se]}),a})(),wI=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})();const CI=new _e("NgModelWithFormControlWarning"),v9={provide:So,useExisting:nn(()=>zy)};let zy=(()=>{class a extends So{set isDisabled(e){}constructor(e,s,d,f,_){super(),this._ngModelWarningConfig=f,this.callSetDisabledState=_,this.update=new ye,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(s),this.valueAccessor=mI(0,d)}ngOnChanges(e){if(this._isControlChanged(e)){const s=e.form.previousValue;s&&m1(s,this,!1),Fy(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}fI(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&m1(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}}return a._ngModelWarningSentOnce=!1,a.\u0275fac=function(e){return new(e||a)(F(xr,10),F(Bu,10),F(jr,10),F(CI,8),F($f,8))},a.\u0275dir=me({type:a,selectors:[["","formControl",""]],inputs:{form:["formControl","form"],isDisabled:["disabled","isDisabled"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[et([v9]),Se,$n]}),a})();const _9={provide:Na,useExisting:nn(()=>sg)};let sg=(()=>{class a extends Na{constructor(e,s,d){super(),this.callSetDisabledState=d,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new ye,this._setValidators(e),this._setAsyncValidators(s)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(cI(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){const s=this.form.get(e.path);return Fy(s,e,this.callSetDisabledState),s.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),s}getControl(e){return this.form.get(e.path)}removeControl(e){m1(e.control||null,e,!1),function u9(a,i){const e=a.indexOf(i);e>-1&&a.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,s){this.form.get(e.path).setValue(s)}onSubmit(e){var s;return this.submitted=!0,G5(this.form,this.directives),this.ngSubmit.emit(e),"dialog"===(null==e||null===(s=e.target)||void 0===s?void 0:s.method)}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_updateDomValue(){this.directives.forEach(e=>{const s=e.control,d=this.form.get(e.path);s!==d&&(m1(s||null,e),(a=>a instanceof vI)(d)&&(Fy(d,e,this.callSetDisabledState),e.control=d))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const s=this.form.get(e.path);Ny(s,e),s.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){const s=this.form.get(e.path);s&&function og(a,i){return cI(a,i)}(s,e)&&s.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){H5(this.form,this),this._oldForm&&cI(this._oldForm,this)}_checkFormPresent(){}}return a.\u0275fac=function(e){return new(e||a)(F(xr,10),F(Bu,10),F($f,8))},a.\u0275dir=me({type:a,selectors:[["","formGroup",""]],hostBindings:function(e,s){1&e&&J("submit",function(f){return s.onSubmit(f)})("reset",function(){return s.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[et([_9]),Se,$n]}),a})();let Wf=(()=>{class a{constructor(){this._validator=r1}ngOnChanges(e){if(this.inputName in e){const s=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(s),this._validator=this._enabled?this.createValidator(s):r1,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,features:[$n]}),a})();const Z5={provide:xr,useExisting:nn(()=>Hs),multi:!0},T9={provide:xr,useExisting:nn(()=>b1),multi:!0};let Hs=(()=>{class a extends Wf{constructor(){super(...arguments),this.inputName="required",this.normalizeInput=lm,this.createValidator=e=>x5}enabled(e){return e}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(e,s){2&e&&He("required",s._enabled?"":null)},inputs:{required:"required"},features:[et([Z5]),Se]}),a})(),b1=(()=>{class a extends Hs{constructor(){super(...arguments),this.createValidator=e=>C5}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["input","type","checkbox","required","","formControlName",""],["input","type","checkbox","required","","formControl",""],["input","type","checkbox","required","","ngModel",""]],hostVars:1,hostBindings:function(e,s){2&e&&He("required",s._enabled?"":null)},features:[et([T9]),Se]}),a})();const k9={provide:xr,useExisting:nn(()=>lg),multi:!0};let lg=(()=>{class a extends Wf{constructor(){super(...arguments),this.inputName="maxlength",this.normalizeInput=e=>function q5(a){return"number"==typeof a?a:parseInt(a,10)}(e),this.createValidator=e=>eI(e)}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(e,s){2&e&&He("maxlength",s._enabled?s.maxlength:null)},inputs:{maxlength:"maxlength"},features:[et([k9]),Se]}),a})(),J5=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[wI]}),a})(),nz=(()=>{class a{static withConfig(e){var s;return{ngModule:a,providers:[{provide:$f,useValue:null!==(s=e.callSetDisabledState)&&void 0!==s?s:f1}]}}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[J5]}),a})(),cg=(()=>{class a{static withConfig(e){var s,d;return{ngModule:a,providers:[{provide:CI,useValue:null!==(s=e.warnOnNgModelWithFormControl)&&void 0!==s?s:"always"},{provide:$f,useValue:null!==(d=e.callSetDisabledState)&&void 0!==d?d:f1}]}}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[J5]}),a})();function fee(a,i){}const iz=function(a){return{animationDuration:a}},OI=function(a,i){return{value:a,params:i}};function LI(a,i){1&a&&ht(0)}const FI=["*"],O9=["tabListContainer"],L9=["tabList"],F9=["tabListInner"],rz=["nextPaginator"],N9=["previousPaginator"],B9=["tabBodyWrapper"],az=["tabHeader"];function V9(a,i){}function z9(a,i){1&a&&Q(0,V9,0,0,"ng-template",14),2&a&&V("cdkPortalOutlet",q().$implicit.templateLabel)}function H9(a,i){1&a&&Y(0),2&a&&In(q().$implicit.textLabel)}function G9(a,i){if(1&a){const e=Pe();I(0,"div",6,7),J("click",function(){const d=ae(e),f=d.$implicit,_=d.index,w=q(),D=on(1);return se(w._handleClick(f,D,_))})("cdkFocusChange",function(d){const _=ae(e).index;return se(q()._tabFocusChanged(d,_))}),he(2,"span",8)(3,"div",9),I(4,"span",10)(5,"span",11),Q(6,z9,1,1,"ng-template",12),Q(7,H9,1,1,"ng-template",null,13,Nr),O()()()}if(2&a){const e=i.$implicit,s=i.index,d=on(1),f=on(8),_=q();at("mdc-tab--active",_.selectedIndex===s),V("id",_._getTabLabelId(s))("ngClass",e.labelClass)("disabled",e.disabled)("fitInkBarToContent",_.fitInkBarToContent),He("tabIndex",_._getTabIndex(s))("aria-posinset",s+1)("aria-setsize",_._tabs.length)("aria-controls",_._getTabContentId(s))("aria-selected",_.selectedIndex===s)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),N(3),V("matRippleTrigger",d)("matRippleDisabled",e.disabled||_.disableRipple),N(3),V("ngIf",e.templateLabel)("ngIfElse",f)}}function oz(a,i){if(1&a){const e=Pe();I(0,"mat-tab-body",15),J("_onCentered",function(){return ae(e),se(q()._removeTabBodyWrapperHeight())})("_onCentering",function(d){return ae(e),se(q()._setTabBodyWrapperHeight(d))}),O()}if(2&a){const e=i.$implicit,s=i.index,d=q();at("mat-mdc-tab-body-active",d.selectedIndex===s),V("id",d._getTabContentId(s))("ngClass",e.bodyClass)("content",e.content)("position",e.position)("origin",e.origin)("animationDuration",d.animationDuration)("preserveContent",d.preserveContent),He("tabindex",null!=d.contentTabIndex&&d.selectedIndex===s?d.contentTabIndex:null)("aria-labelledby",d._getTabLabelId(s))}}const U9={translateTab:tr("translateTab",[Bn("center, void, left-origin-center, right-origin-center",ft({transform:"none"})),Bn("left",ft({transform:"translate3d(-100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),Bn("right",ft({transform:"translate3d(100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),Mn("* => left, * => right, left => center, right => center",Tn("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),Mn("void => left-origin-center",[ft({transform:"translate3d(-100%, 0, 0)",visibility:"hidden"}),Tn("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),Mn("void => right-origin-center",[ft({transform:"translate3d(100%, 0, 0)",visibility:"hidden"}),Tn("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])])};let j9=(()=>{class a extends pc{constructor(e,s,d,f){super(e,s,f),this._host=d,this._centeringSub=xt.EMPTY,this._leavingSub=xt.EMPTY}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(Ji(this._host._isCenterPosition(this._host._position))).subscribe(e=>{e&&!this.hasAttached()&&this.attach(this._host._content)}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this.detach()})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}}return a.\u0275fac=function(e){return new(e||a)(F(ca),F(Hn),F(nn(()=>sz)),F(bt))},a.\u0275dir=me({type:a,selectors:[["","matTabBodyHost",""]],features:[Se]}),a})(),$9=(()=>{class a{set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(e,s,d){this._elementRef=e,this._dir=s,this._dirChangeSubscription=xt.EMPTY,this._translateTabComplete=new Ue,this._onCentering=new ye,this._beforeCentering=new ye,this._afterLeavingCenter=new ye,this._onCentered=new ye(!0),this.animationDuration="500ms",this.preserveContent=!1,s&&(this._dirChangeSubscription=s.change.subscribe(f=>{this._computePositionAnimationState(f),d.markForCheck()})),this._translateTabComplete.pipe(oE((f,_)=>f.fromState===_.fromState&&f.toState===_.toState)).subscribe(f=>{this._isCenterPosition(f.toState)&&this._isCenterPosition(this._position)&&this._onCentered.emit(),this._isCenterPosition(f.fromState)&&!this._isCenterPosition(this._position)&&this._afterLeavingCenter.emit()})}ngOnInit(){"center"==this._position&&null!=this.origin&&(this._position=this._computePositionFromOrigin(this.origin))}ngOnDestroy(){this._dirChangeSubscription.unsubscribe(),this._translateTabComplete.complete()}_onTranslateTabStarted(e){const s=this._isCenterPosition(e.toState);this._beforeCentering.emit(s),s&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(e){return"center"==e||"left-origin-center"==e||"right-origin-center"==e}_computePositionAnimationState(e=this._getLayoutDirection()){this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center"}_computePositionFromOrigin(e){const s=this._getLayoutDirection();return"ltr"==s&&e<=0||"rtl"==s&&e>0?"left-origin-center":"right-origin-center"}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Ni,8),F(Zt))},a.\u0275dir=me({type:a,inputs:{_content:["content","_content"],origin:"origin",animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_afterLeavingCenter:"_afterLeavingCenter",_onCentered:"_onCentered"}}),a})(),sz=(()=>{class a extends $9{constructor(e,s,d){super(e,s,d)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Ni,8),F(Zt))},a.\u0275cmp=we({type:a,selectors:[["mat-tab-body"]],viewQuery:function(e,s){if(1&e&&ot(pc,5),2&e){let d;Ee(d=Oe())&&(s._portalHost=d.first)}},hostAttrs:[1,"mat-mdc-tab-body"],features:[Se],decls:3,vars:6,consts:[["cdkScrollable","",1,"mat-mdc-tab-body-content"],["content",""],["matTabBodyHost",""]],template:function(e,s){1&e&&(I(0,"div",0,1),J("@translateTab.start",function(f){return s._onTranslateTabStarted(f)})("@translateTab.done",function(f){return s._translateTabComplete.next(f)}),Q(2,fee,0,0,"ng-template",2),O()),2&e&&V("@translateTab",Iw(3,OI,s._position,su(1,iz,s.animationDuration)))},dependencies:[j9],styles:['.mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-mdc-tab-body-content[style*="visibility: hidden"]{display:none}'],encapsulation:2,data:{animation:[U9.translateTab]}}),a})();const W9=new _e("MatTabContent");let Y9=(()=>{class a{constructor(e){this.template=e}}return a.\u0275fac=function(e){return new(e||a)(F(hi))},a.\u0275dir=me({type:a,selectors:[["","matTabContent",""]],features:[et([{provide:W9,useExisting:a}])]}),a})();const q9=new _e("MatTabLabel"),NI=new _e("MAT_TAB");let Qo=(()=>{class a extends MC{constructor(e,s,d){super(e,s),this._closestTab=d}}return a.\u0275fac=function(e){return new(e||a)(F(hi),F(Hn),F(NI,8))},a.\u0275dir=me({type:a,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[et([{provide:q9,useExisting:a}]),Se]}),a})();const BI="mdc-tab-indicator--active",lz="mdc-tab-indicator--no-transition";class X9{constructor(i){this._items=i}hide(){this._items.forEach(i=>i.deactivateInkBar())}alignToElement(i){const e=this._items.find(_=>_.elementRef.nativeElement===i),s=this._currentItem;if(null==s||s.deactivateInkBar(),e){var d,f;const _=null==s||null===(d=(f=s.elementRef.nativeElement).getBoundingClientRect)||void 0===d?void 0:d.call(f);e.activateInkBar(_),this._currentItem=e}}}function Z9(a){return class extends a{constructor(...i){super(...i),this._fitToContent=!1}get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(i){const e=We(i);this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(i){const e=this.elementRef.nativeElement;if(!i||!e.getBoundingClientRect||!this._inkBarContentElement)return void e.classList.add(BI);const s=e.getBoundingClientRect(),d=i.width/s.width,f=i.left-s.left;e.classList.add(lz),this._inkBarContentElement.style.setProperty("transform",`translateX(${f}px) scaleX(${d})`),e.getBoundingClientRect(),e.classList.remove(lz),e.classList.add(BI),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this.elementRef.nativeElement.classList.remove(BI)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){var i;null===(i=this._inkBarElement)||void 0===i||i.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const i=this.elementRef.nativeElement.ownerDocument||document;this._inkBarElement=i.createElement("span"),this._inkBarContentElement=i.createElement("span"),this._inkBarElement.className="mdc-tab-indicator",this._inkBarContentElement.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",this._inkBarElement.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this.elementRef.nativeElement.querySelector(".mdc-tab__content"):this.elementRef.nativeElement).appendChild(this._inkBarElement)}}}const dz=mc(class{}),Q9=Z9((()=>{class a extends dz{constructor(e){super(),this.elementRef=e}focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}}return a.\u0275fac=function(e){return new(e||a)(F(Be))},a.\u0275dir=me({type:a,features:[Se]}),a})());let uz=(()=>{class a extends Q9{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(e,s){2&e&&(He("aria-disabled",!!s.disabled),at("mat-mdc-tab-disabled",s.disabled))},inputs:{disabled:"disabled",fitInkBarToContent:"fitInkBarToContent"},features:[Se]}),a})();const J9=mc(class{}),VI=new _e("MAT_TAB_GROUP");let hz=(()=>{class a extends J9{get content(){return this._contentPortal}constructor(e,s){super(),this._viewContainerRef=e,this._closestTabGroup=s,this.textLabel="",this._contentPortal=null,this._stateChanges=new Ue,this.position=null,this.origin=null,this.isActive=!1}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new fc(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(VI,8))},a.\u0275dir=me({type:a,viewQuery:function(e,s){if(1&e&&ot(hi,7),2&e){let d;Ee(d=Oe())&&(s._implicitContent=d.first)}},inputs:{textLabel:["label","textLabel"],ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass"},features:[Se,$n]}),a})(),Gs=(()=>{class a extends hz{get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-tab"]],contentQueries:function(e,s,d){if(1&e&&(hn(d,Y9,7,hi),hn(d,Qo,5)),2&e){let f;Ee(f=Oe())&&(s._explicitContent=f.first),Ee(f=Oe())&&(s.templateLabel=f.first)}},inputs:{disabled:"disabled"},exportAs:["matTab"],features:[et([{provide:NI,useExisting:a}]),Se],ngContentSelectors:FI,decls:1,vars:0,template:function(e,s){1&e&&(Fn(),Q(0,LI,1,0,"ng-template"))},encapsulation:2}),a})();const fz=Au({passive:!0});let Yf=(()=>{class a{get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=We(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){e=er(e),this._selectedIndex!=e&&(this._selectedIndexChanged=!0,this._selectedIndex=e,this._keyManager&&this._keyManager.updateActiveItem(e))}constructor(e,s,d,f,_,w,D){this._elementRef=e,this._changeDetectorRef=s,this._viewportRuler=d,this._dir=f,this._ngZone=_,this._platform=w,this._animationMode=D,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new Ue,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new Ue,this._disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new ye,this.indexFocused=new ye,_.runOutsideAngular(()=>{Bs(e.nativeElement,"mouseleave").pipe(Tt(this._destroyed)).subscribe(()=>{this._stopInterval()})})}ngAfterViewInit(){Bs(this._previousPaginator.nativeElement,"touchstart",fz).pipe(Tt(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("before")}),Bs(this._nextPaginator.nativeElement,"touchstart",fz).pipe(Tt(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("after")})}ngAfterContentInit(){const e=this._dir?this._dir.change:je("ltr"),s=this._viewportRuler.change(150),d=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new pE(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(this._selectedIndex),this._ngZone.onStable.pipe(Pn(1)).subscribe(d),Mi(e,s,this._items.changes,this._itemsResized()).pipe(Tt(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),d()})}),this._keyManager.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(f=>{this.indexFocused.emit(f),this._setTabFocus(f)})}_itemsResized(){return"function"!=typeof ResizeObserver?ni:this._items.changes.pipe(Ji(this._items),Qi(e=>new Gn(s=>this._ngZone.runOutsideAngular(()=>{const d=new ResizeObserver(f=>s.next(f));return e.forEach(f=>d.observe(f.elementRef.nativeElement)),()=>{d.disconnect()}}))),aE(1),fi(e=>e.some(s=>s.contentRect.width>0&&s.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!pr(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const s=this._items.get(this.focusIndex);s&&!s.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const s=this._tabListContainer.nativeElement;s.scrollLeft="ltr"==this._getLayoutDirection()?0:s.scrollWidth-s.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,s="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(s)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const s=this._items?this._items.toArray()[e]:null;if(!s)return;const d=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:f,offsetWidth:_}=s.elementRef.nativeElement;let w,D;"ltr"==this._getLayoutDirection()?(w=f,D=w+_):(D=this._tabListInner.nativeElement.offsetWidth-f,w=D-_);const k=this.scrollDistance,P=this.scrollDistance+d;wP&&(this.scrollDistance+=D-P+60)}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const e=this._tabListInner.nativeElement.scrollWidth>this._elementRef.nativeElement.offsetWidth;e||(this.scrollDistance=0),e!==this._showPaginationControls&&this._changeDetectorRef.markForCheck(),this._showPaginationControls=e}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,s=e?e.elementRef.nativeElement:null;s?this._inkBar.alignToElement(s):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,s){s&&null!=s.button&&0!==s.button||(this._stopInterval(),Gm(650,100).pipe(Tt(Mi(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:d,distance:f}=this._scrollHeader(e);(0===f||f>=d)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const s=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(s,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:s,distance:this._scrollDistance}}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(hc),F(Ni,8),F(Je),F(si),F(ki,8))},a.\u0275dir=me({type:a,inputs:{disablePagination:"disablePagination"}}),a})(),tY=(()=>{class a extends Yf{get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=We(e)}constructor(e,s,d,f,_,w,D){super(e,s,d,f,_,w,D),this._disableRipple=!1}_itemSelected(e){e.preventDefault()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(hc),F(Ni,8),F(Je),F(si),F(ki,8))},a.\u0275dir=me({type:a,inputs:{disableRipple:"disableRipple"},features:[Se]}),a})(),zI=(()=>{class a extends tY{constructor(e,s,d,f,_,w,D){super(e,s,d,f,_,w,D)}ngAfterContentInit(){this._inkBar=new X9(this._items),super.ngAfterContentInit()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(hc),F(Ni,8),F(Je),F(si),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["mat-tab-header"]],contentQueries:function(e,s,d){if(1&e&&hn(d,uz,4),2&e){let f;Ee(f=Oe())&&(s._items=f)}},viewQuery:function(e,s){if(1&e&&(ot(O9,7),ot(L9,7),ot(F9,7),ot(rz,5),ot(N9,5)),2&e){let d;Ee(d=Oe())&&(s._tabListContainer=d.first),Ee(d=Oe())&&(s._tabList=d.first),Ee(d=Oe())&&(s._tabListInner=d.first),Ee(d=Oe())&&(s._nextPaginator=d.first),Ee(d=Oe())&&(s._previousPaginator=d.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(e,s){2&e&&at("mat-mdc-tab-header-pagination-controls-enabled",s._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==s._getLayoutDirection())},inputs:{selectedIndex:"selectedIndex"},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[Se],ngContentSelectors:FI,decls:13,vars:10,consts:[["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"matRippleDisabled","disabled","click","mousedown","touchend"],["previousPaginator",""],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["tabListContainer",""],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],["tabList",""],[1,"mat-mdc-tab-labels"],["tabListInner",""],["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"matRippleDisabled","disabled","mousedown","click","touchend"],["nextPaginator",""]],template:function(e,s){1&e&&(Fn(),I(0,"button",0,1),J("click",function(){return s._handlePaginatorClick("before")})("mousedown",function(f){return s._handlePaginatorPress("before",f)})("touchend",function(){return s._stopInterval()}),he(2,"div",2),O(),I(3,"div",3,4),J("keydown",function(f){return s._handleKeydown(f)}),I(5,"div",5,6),J("cdkObserveContent",function(){return s._onContentChanges()}),I(7,"div",7,8),ht(9),O()()(),I(10,"button",9,10),J("mousedown",function(f){return s._handlePaginatorPress("after",f)})("click",function(){return s._handlePaginatorClick("after")})("touchend",function(){return s._stopInterval()}),he(12,"div",2),O()),2&e&&(at("mat-mdc-tab-header-pagination-disabled",s._disableScrollBefore),V("matRippleDisabled",s._disableScrollBefore||s.disableRipple)("disabled",s._disableScrollBefore||null),N(3),at("_mat-animation-noopable","NoopAnimations"===s._animationMode),N(7),at("mat-mdc-tab-header-pagination-disabled",s._disableScrollAfter),V("matRippleDisabled",s._disableScrollAfter||s.disableRipple)("disabled",s._disableScrollAfter||null))},dependencies:[Ur,_3],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}._mat-animation-noopable span.mdc-tab-indicator__content,._mat-animation-noopable span.mdc-tab__text-label{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"],encapsulation:2}),a})();const Gy=new _e("MAT_TABS_CONFIG");let w1=0;const gz=gc(vc(class{constructor(a){this._elementRef=a}}),"primary");let Uu=(()=>{class a extends gz{get dynamicHeight(){return this._dynamicHeight}set dynamicHeight(e){this._dynamicHeight=We(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=er(e,null)}get animationDuration(){return this._animationDuration}set animationDuration(e){this._animationDuration=/^\d+$/.test(e+"")?e+"ms":e}get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=er(e,null)}get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=We(e)}get preserveContent(){return this._preserveContent}set preserveContent(e){this._preserveContent=We(e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const s=this._elementRef.nativeElement.classList;s.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&s.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}constructor(e,s,d,f){var _;super(e),this._changeDetectorRef=s,this._animationMode=f,this._tabs=new lu,this._indexToSelect=0,this._lastFocusedTabIndex=null,this._tabBodyWrapperHeight=0,this._tabsSubscription=xt.EMPTY,this._tabLabelSubscription=xt.EMPTY,this._dynamicHeight=!1,this._selectedIndex=null,this.headerPosition="above",this._disablePagination=!1,this._preserveContent=!1,this.selectedIndexChange=new ye,this.focusChange=new ye,this.animationDone=new ye,this.selectedTabChange=new ye(!0),this._groupId=w1++,this.animationDuration=d&&d.animationDuration?d.animationDuration:"500ms",this.disablePagination=!(!d||null==d.disablePagination)&&d.disablePagination,this.dynamicHeight=!(!d||null==d.dynamicHeight)&&d.dynamicHeight,this.contentTabIndex=null!==(_=null==d?void 0:d.contentTabIndex)&&void 0!==_?_:null,this.preserveContent=!(null==d||!d.preserveContent)}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const s=null==this._selectedIndex;if(!s){this.selectedTabChange.emit(this._createChangeEvent(e));const d=this._tabBodyWrapper.nativeElement;d.style.minHeight=d.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((d,f)=>d.isActive=f===e),s||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((s,d)=>{s.position=d-e,null!=this._selectedIndex&&0==s.position&&!s.origin&&(s.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const s=this._tabs.toArray();let d;for(let f=0;f{s[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(Ji(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(s=>s._closestTabGroup===this||!s._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const s=this._tabHeader;s&&(s.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const s=new nY;return s.index=e,this._tabs&&this._tabs.length&&(s.tab=this._tabs.toArray()[e]),s}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Mi(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e){return`mat-tab-label-${this._groupId}-${e}`}_getTabContentId(e){return`mat-tab-content-${this._groupId}-${e}`}_setTabBodyWrapperHeight(e){if(!this._dynamicHeight||!this._tabBodyWrapperHeight)return;const s=this._tabBodyWrapper.nativeElement;s.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(s.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this.animationDone.emit()}_handleClick(e,s,d){s.focusIndex=d,e.disabled||(this.selectedIndex=d)}_getTabIndex(e){var s;return e===(null!==(s=this._lastFocusedTabIndex)&&void 0!==s?s:this.selectedIndex)?0:-1}_tabFocusChanged(e,s){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=s)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Gy,8),F(ki,8))},a.\u0275dir=me({type:a,inputs:{dynamicHeight:"dynamicHeight",selectedIndex:"selectedIndex",headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:"contentTabIndex",disablePagination:"disablePagination",preserveContent:"preserveContent",backgroundColor:"backgroundColor"},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},features:[Se]}),a})(),xl=(()=>{class a extends Uu{get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=We(e),this._changeDetectorRef.markForCheck()}get stretchTabs(){return this._stretchTabs}set stretchTabs(e){this._stretchTabs=We(e)}constructor(e,s,d,f){super(e,s,d,f),this._fitInkBarToContent=!1,this._stretchTabs=!0,this.fitInkBarToContent=!(!d||null==d.fitInkBarToContent)&&d.fitInkBarToContent}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Gy,8),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["mat-tab-group"]],contentQueries:function(e,s,d){if(1&e&&hn(d,Gs,5),2&e){let f;Ee(f=Oe())&&(s._allTabs=f)}},viewQuery:function(e,s){if(1&e&&(ot(B9,5),ot(az,5)),2&e){let d;Ee(d=Oe())&&(s._tabBodyWrapper=d.first),Ee(d=Oe())&&(s._tabHeader=d.first)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:6,hostBindings:function(e,s){2&e&&at("mat-mdc-tab-group-dynamic-height",s.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===s.headerPosition)("mat-mdc-tab-group-stretch-tabs",s.stretchTabs)},inputs:{color:"color",disableRipple:"disableRipple",fitInkBarToContent:"fitInkBarToContent",stretchTabs:["mat-stretch-tabs","stretchTabs"]},exportAs:["matTabGroup"],features:[et([{provide:VI,useExisting:a}]),Se],decls:6,vars:6,consts:[[3,"selectedIndex","disableRipple","indexFocused","selectFocusedIndex"],["tabHeader",""],["class","mdc-tab mat-mdc-tab mat-mdc-focus-indicator","role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",3,"id","mdc-tab--active","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange",4,"ngFor","ngForOf"],[1,"mat-mdc-tab-body-wrapper"],["tabBodyWrapper",""],["role","tabpanel",3,"id","mat-mdc-tab-body-active","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering",4,"ngFor","ngForOf"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"id","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange"],["tabNode",""],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"ngIf","ngIfElse"],["tabTextLabel",""],[3,"cdkPortalOutlet"],["role","tabpanel",3,"id","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering"]],template:function(e,s){1&e&&(I(0,"mat-tab-header",0,1),J("indexFocused",function(f){return s._focusChanged(f)})("selectFocusedIndex",function(f){return s.selectedIndex=f}),Q(2,G9,9,17,"div",2),O(),I(3,"div",3,4),Q(5,oz,1,11,"mat-tab-body",5),O()),2&e&&(V("selectedIndex",s.selectedIndex||0)("disableRipple",s.disableRipple),N(2),V("ngForOf",s._tabs),N(1),at("_mat-animation-noopable","NoopAnimations"===s._animationMode),N(2),V("ngForOf",s._tabs))},dependencies:[Ps,oi,zt,pc,Ur,P3,sz,uz,zI],styles:['.mdc-tab{min-width:90px;padding-right:24px;padding-left:24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab[hidden]{display:none}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab__icon{transition:150ms color linear;z-index:2}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:center}.mdc-tab--stacked .mdc-tab__text-label{padding-top:6px;padding-bottom:4px}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:2px}.mdc-tab-indicator .mdc-tab-indicator__content--icon{height:34px;font-size:34px}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition-delay:100ms}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-tab.mdc-tab{height:48px;flex-grow:0}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none}.mat-mdc-tab .mdc-tab__text-label{display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-disabled{opacity:.4}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-mdc-tab-header-with-background-background-color, transparent)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}'],encapsulation:2}),a})();class nY{}let rY=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[zr,Qt,ku,io,lE,UC,Qt]}),a})();function yz(a,i){if(1&a){const e=Pe();I(0,"uds-field-text",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function GI(a,i){if(1&a){const e=Pe();I(0,"uds-field-autocomplete",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function UI(a,i){if(1&a){const e=Pe();I(0,"uds-field-textbox",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function aY(a,i){if(1&a){const e=Pe();I(0,"uds-field-numeric",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function jI(a,i){if(1&a){const e=Pe();I(0,"uds-field-password",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function bz(a,i){if(1&a){const e=Pe();I(0,"uds-field-hidden",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function oY(a,i){if(1&a){const e=Pe();I(0,"uds-field-choice",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function sY(a,i){if(1&a){const e=Pe();I(0,"uds-field-multichoice",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function lY(a,i){if(1&a){const e=Pe();I(0,"uds-field-editlist",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function cY(a,i){if(1&a){const e=Pe();I(0,"uds-field-checkbox",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function dY(a,i){if(1&a){const e=Pe();I(0,"uds-field-imgchoice",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function uY(a,i){if(1&a){const e=Pe();I(0,"uds-field-date",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}function S1(a,i){if(1&a){const e=Pe();I(0,"uds-field-tags",2),J("changed",function(d){return ae(e),se(q().changed.emit(d))}),O()}2&a&&V("field",q().field)}class dg{constructor(){this.field={},this.changed=new ye,this.udsGuiFieldType=Xo}ngOnInit(){}}function D1(a,i){1&a&&Y(0),2&a&&Re(" ",q().$implicit," ")}function wz(a,i){if(1&a){const e=Pe();I(0,"uds-field",8),J("changed",function(d){return ae(e),se(q(3).changed.emit(d))}),O()}2&a&&V("field",i.$implicit)}function hY(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,D1,1,1,"ng-template",4),I(2,"div",5)(3,"div",6),Q(4,wz,1,1,"uds-field",7),O()()()),2&a){const e=i.$implicit,s=q(2);N(4),V("ngForOf",s.fieldsByTab[e])}}function $I(a,i){if(1&a&&(I(0,"mat-tab-group",2),Q(1,hY,5,1,"mat-tab",3),O()),2&a){const e=q();V("disableRipple",!0)("@.disabled",!0),N(1),V("ngForOf",e.tabs)}}function fY(a,i){if(1&a){const e=Pe();I(0,"div")(1,"uds-field",8),J("changed",function(d){return ae(e),se(q(2).changed.emit(d))}),O()()}if(2&a){const e=i.$implicit;N(1),V("field",e)}}function pY(a,i){if(1&a&&(I(0,"div",5),Q(1,fY,2,1,"div",3),O()),2&a){const e=q();N(1),V("ngForOf",e.fields)}}dg.\u0275fac=function(i){return new(i||dg)},dg.\u0275cmp=we({type:dg,selectors:[["uds-field"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:14,vars:15,consts:[["matTooltipShowDelay","1000",1,"field",3,"ngSwitch","matTooltip"],[3,"field","changed",4,"ngSwitchCase"],[3,"field","changed"]],template:function(i,e){1&i&&(I(0,"div",0),Q(1,yz,1,1,"uds-field-text",1),Q(2,GI,1,1,"uds-field-autocomplete",1),Q(3,UI,1,1,"uds-field-textbox",1),Q(4,aY,1,1,"uds-field-numeric",1),Q(5,jI,1,1,"uds-field-password",1),Q(6,bz,1,1,"uds-field-hidden",1),Q(7,oY,1,1,"uds-field-choice",1),Q(8,sY,1,1,"uds-field-multichoice",1),Q(9,lY,1,1,"uds-field-editlist",1),Q(10,cY,1,1,"uds-field-checkbox",1),Q(11,dY,1,1,"uds-field-imgchoice",1),Q(12,uY,1,1,"uds-field-date",1),Q(13,S1,1,1,"uds-field-tags",1),O()),2&i&&(V("ngSwitch",e.field.gui.type)("matTooltip",e.field.gui.tooltip),N(1),V("ngSwitchCase",e.udsGuiFieldType.TEXT),N(1),V("ngSwitchCase",e.udsGuiFieldType.TEXT_AUTOCOMPLETE),N(1),V("ngSwitchCase",e.udsGuiFieldType.TEXTBOX),N(1),V("ngSwitchCase",e.udsGuiFieldType.NUMERIC),N(1),V("ngSwitchCase",e.udsGuiFieldType.PASSWORD),N(1),V("ngSwitchCase",e.udsGuiFieldType.HIDDEN),N(1),V("ngSwitchCase",e.udsGuiFieldType.CHOICE),N(1),V("ngSwitchCase",e.udsGuiFieldType.MULTI_CHOICE),N(1),V("ngSwitchCase",e.udsGuiFieldType.EDITLIST),N(1),V("ngSwitchCase",e.udsGuiFieldType.CHECKBOX),N(1),V("ngSwitchCase",e.udsGuiFieldType.IMAGECHOICE),N(1),V("ngSwitchCase",e.udsGuiFieldType.DATE),N(1),V("ngSwitchCase",e.udsGuiFieldType.TAGLIST))},styles:["uds-field[_ngcontent-%COMP%]{flex:1 50%} .mat-mdc-form-field{width:calc(100% - 1px)} .mat-form-field-flex{padding-top:0!important} .mat-mdc-tooltip{font-size:.9rem!important;margin:0!important;max-width:26em!important}"]});const mY=django.gettext("Main");class Uy{constructor(){this.fields=[],this.changed=new ye,this.tabs=new Array,this.fieldsByTab={}}ngOnInit(){this.fieldsByTab={};for(const i of this.fields){const e=void 0===i.gui.tab?mY:i.gui.tab;this.tabs.includes(e)||(this.tabs.push(e),this.fieldsByTab[e]=new Array),this.fieldsByTab[e].push(i)}}}function gY(a,i){if(1&a){const e=Pe();I(0,"button",10),J("click",function(){return ae(e),se(q().customButtonClicked())}),Y(1),O()}if(2&a){const e=q();N(1),In(e.data.customButton)}}Uy.\u0275fac=function(i){return new(i||Uy)},Uy.\u0275cmp=we({type:Uy,selectors:[["uds-form"]],inputs:{fields:"fields"},outputs:{changed:"changed"},decls:3,vars:2,consts:[[3,"disableRipple",4,"ngIf","ngIfElse"],["onlyone",""],[3,"disableRipple"],[4,"ngFor","ngForOf"],["mat-tab-label",""],[1,"form-content"],[1,"content"],[3,"field","changed",4,"ngFor","ngForOf"],[3,"field","changed"]],template:function(i,e){if(1&i&&(Q(0,$I,2,3,"mat-tab-group",0),Q(1,pY,2,1,"ng-template",null,1,Nr)),2&i){const s=on(2);V("ngIf",e.tabs.length>1)("ngIfElse",s)}},dependencies:[oi,zt,Qo,Gs,xl,dg],styles:[".content[_ngcontent-%COMP%]{margin-top:.5rem;display:flex;flex-wrap:wrap}.form-content[_ngcontent-%COMP%]{padding-top:1rem} .mat-mdc-form-field-infix{min-height:3rem}"]});class jy{constructor(i,e){this.dialogRef=i,this.data=e,this.onEvent=new ye(!0),this.saving=!1}ngOnInit(){this.onEvent.emit({type:"init",data:null,dialog:this.dialogRef})}changed(i){this.onEvent.emit({type:"changed",data:i,dialog:this.dialogRef})}getFields(){const i={},e=[];return this.data.guiFields.forEach(s=>{let d=void 0!==s.values?s.values:s.value;if(s.gui.required&&0!==d&&(!d||d instanceof Array&&0===d.length)&&e.push(s.gui.label),"number"==typeof d){const f=parseInt((s.gui.minValue||987654321).toString(),10),_=parseInt((s.gui.maxValue||987654321).toString(),10);987654321!==f&&d= "+s.gui.minValue),987654321!==_&&d>_&&e.push(s.gui.label+" <= "+s.gui.maxValue),d=d.toString()}i[s.name]=d}),{data:i,errors:e}}save(){const i=this.getFields();i.errors.length>0?this.data.gui.alert(django.gettext("Error"),django.gettext("Please, fill in require fields: ")+i.errors.join(", ")):this.onEvent.emit({data:i.data,type:"save",dialog:this.dialogRef})}cancel(){this.onEvent.emit({data:null,type:"cancel",dialog:this.dialogRef})}customButtonClicked(){const i=this.getFields();this.onEvent.emit({data:i.data,type:this.data.customButton||"",errors:i.errors,dialog:this.dialogRef})}}jy.\u0275fac=function(i){return new(i||jy)(F(Ci),F(Bi))},jy.\u0275cmp=we({type:jy,selectors:[["uds-modal-form"]],decls:17,vars:7,consts:[["mat-dialog-title","",3,"innerHtml"],["vc",""],["autocomplete","off"],[3,"fields","changed"],[1,"buttons"],[1,"group1"],["ngClass","custom","mat-raised-button","",3,"click",4,"ngIf"],[1,"group2"],["mat-raised-button","",3,"disabled","click"],["mat-raised-button","","color","primary",3,"disabled","click"],["ngClass","custom","mat-raised-button","",3,"click"]],template:function(i,e){1&i&&(he(0,"h4",0),Yc(1,"safeHtml"),I(2,"mat-dialog-content",null,1)(4,"form",2)(5,"uds-form",3),J("changed",function(d){return e.changed(d)}),O()()(),I(6,"mat-dialog-actions")(7,"div",4)(8,"div",5),Q(9,gY,2,1,"button",6),O(),I(10,"div",7)(11,"button",8),J("click",function(){return e.dialogRef.close()})("click",function(){return e.cancel()}),I(12,"uds-translate"),Y(13,"Discard & close"),O()(),I(14,"button",9),J("click",function(){return e.save()}),I(15,"uds-translate"),Y(16,"Save"),O()()()()()),2&i&&(V("innerHtml",Jp(1,5,e.data.title),Rr),N(5),V("fields",e.data.guiFields),N(4),V("ngIf",void 0!==e.data.customButton),N(2),V("disabled",e.saving),N(3),V("disabled",e.saving))},dependencies:[Ps,zt,Vy,c1,wd,pi,nr,ir,Kn,xn,Uy,tg],styles:["h4[_ngcontent-%COMP%]{margin-bottom:0}.buttons[_ngcontent-%COMP%]{display:flex;justify-content:space-between;width:100%} uds-field{flex:1 100%}button.custom[_ngcontent-%COMP%]{background-color:#4682b4;color:#fff}.modal-form[_ngcontent-%COMP%]{padding-top:1.5rem}"]});class M1{constructor(i){this.gui=i}modalForm(i,e,s=null,d){e.sort((D,k)=>D.gui.order>k.gui.order?1:-1);const f=null!=s;s=f?s:{},e.forEach(D=>{(!1===f||void 0===D.gui.rdonly)&&(D.gui.rdonly=!1),D.gui.type===Xo.TEXT&&D.gui.multiline&&(D.gui.type=Xo.TEXTBOX);const k=s[D.name];if(void 0!==k)if(k instanceof Array){const P=new Array;k.forEach(z=>P.push(z)),D.values=P}else D.value=k});const _=window.innerWidth<800?"80%":"50%";return this.gui.dialog.open(jy,{position:{top:"64px"},width:_,data:{title:i,guiFields:e,customButton:d,gui:this.gui},disableClose:!0}).componentInstance.onEvent}typedForm(i,e,s,d,f,_,w){var D=this;return Xe(function*(){const k=w||{},P=k.callback||(()=>{}),z=d||[],W=s?django.gettext("Test"):void 0,Z={},te={},re=pe=>{te.hasOwnProperty(pe.name)&&""!==pe.value&&void 0!==pe.value&&D.executeCallback(i,pe,Z)},fe=k.snack||D.gui.snackbar.open(django.gettext("Loading data..."),django.gettext("dismiss"));i.table.rest.gui(_).then(pe=>{fe.dismiss(),void 0!==z&&z.forEach(Te=>{pe.push(Te)}),pe.forEach(Te=>{Z[Te.name]=Te,void 0!==Te.gui.fills&&(te[Te.name]=Te.gui.fills)}),D.modalForm(e,pe,f,W).subscribe(function(){var Te=Xe(function*(ue){switch(ue.data&&(ue.data.data_type=_),ue.type){case W:if(ue.errors&&ue.errors.length>0)return void D.gui.alert(django.gettext("Error"),django.gettext("Please, fill in require fields: ")+ue.errors.join(", "));D.gui.snackbar.open(django.gettext("Testing..."),django.gettext("dismiss")),i.table.rest.test(_,ue.data).then(Fe=>{"ok"!==Fe?D.gui.snackbar.open(django.gettext("Test failed:")+" "+Fe,django.gettext("dismiss")):D.gui.snackbar.open(django.gettext("Test passed successfully"),django.gettext("dismiss"),{duration:2e3})});break;case"changed":case"init":if(null===ue.data)for(const Fe of pe)re(Fe);else re(ue.data.field);P({on:ue.data,all:Z});break;case"save":if(void 0===k.save){ue.dialog.componentInstance.saving=!0;try{f?yield i.table.rest.save(ue.data,f.id):yield i.table.rest.create(ue.data),D.gui.snackbar.open(django.gettext("Successfully saved"),django.gettext("dismiss"),{duration:2e3}),ue.dialog.close(),i.table.overview()}finally{ue.dialog.componentInstance.saving=!1}}else ue.dialog.close(),k.save.resolve(ue.data);break;case"cancel":ue.dialog.close()}});return function(ue){return Te.apply(this,arguments)}}())})})()}typedEditForm(i,e,s=!1,d,f=(()=>{})){var _=this;return Xe(function*(){const w=i.table.selection.selected[0],D=w.type,P=(new ye,_.gui.snackbar.open(django.gettext("Loading data..."),django.gettext("dismiss"))),z=yield i.table.rest.get(w.id);return _.typedForm(i,e,s,d,z,D,{snack:P,callback:f})})()}typedNewForm(i,e,s=!1,d,f=(()=>{})){var _=this;return Xe(function*(){return _.typedForm(i,e,s,d,null,i.param?i.param.type:void 0,{callback:f})})()}deleteForm(i,e){var s=this;return Xe(function*(){const d=new Array,f=new Array;for(const D of i.table.selection.selected){let k=D.name||D.friendly_name;k.changingThisBreaksApplicationSecurity&&(k=k.changingThisBreaksApplicationSecurity),d.push(k),f.push(D.id)}const _=django.gettext("Are you sure do you want to delete the following items?")+"
"+d.join(", ")+"";if(yield s.gui.questionDialog(e,_,!0)){for(const k of f)try{yield i.table.rest.delete(k)}catch(P){console.warn("Error deleting item",k,P)}s.gui.snackbar.open(django.gettext("Deletion finished"),django.gettext("dismiss"),{duration:2e3}),i.table.overview()}})()}executeCallback(i,e,s,d={}){var f=this;return Xe(function*(){const _=new Array;if(!e.gui.fills)return;for(const k of e.gui.fills.parameters)_.push(k+"="+encodeURIComponent(s[k].value));const w=yield i.table.rest.callback(e.gui.fills.callbackName,_.join("&")),D=new Array;for(const k of w){const P=s[k.name];if(void 0!==P){void 0!==P.gui.fills&&D.push(P);const z=new Array;k.values.forEach(W=>z.push(W)),P.gui.values=z,P.value||(P.value=k.values.length>0?k.values[0].id:"")}}for(const k of D)void 0===d[k.name]&&(d[k.name]=!0,f.executeCallback(i,k,s,d))})()}}class T1{constructor(i,e){this.dialog=i,this.snackbar=e,this.forms=new M1(this)}alert(i,e,s=0,d){var f=this;return Xe(function*(){const _=d||(window.innerWidth<800?"80%":"40%");return f.dialog.open(ng,{width:_,data:{title:i,body:e,autoclose:s,type:Lu.alert},disableClose:!0}).componentInstance.acceptance})()}questionDialog(i,e,s=!1){var d=this;return Xe(function*(){const f=window.innerWidth<800?"80%":"40%",_=d.dialog.open(ng,{width:f,data:{title:i,body:e,type:Lu.question,warnOnYes:s},disableClose:!0});return Ou(_.componentInstance.acceptance)})()}icon(i,e="24px"){return''}}var Cr=(()=>{return(a=Cr||(Cr={})).NUMERIC="numeric",a.ALPHANUMERIC="alphanumeric",a.DATETIME="datetime",a.DATETIMESEC="datetimesec",a.DATE="date",a.TIME="time",a.ICON="iconType",a.CALLBACK="callback",a.DICTIONARY="dict",a.IMAGE="image",Cr;var a})(),Jn=(()=>{return(a=Jn||(Jn={}))[a.ALWAYS=0]="ALWAYS",a[a.SINGLE_SELECT=1]="SINGLE_SELECT",a[a.MULTI_SELECT=2]="MULTI_SELECT",a[a.ONLY_MENU=3]="ONLY_MENU",a[a.ACCELERATOR=4]="ACCELERATOR",Jn;var a})();const YI="provider",xz="service",qI="pool",XI="user",Sz="transport",A1="osmanager",ju="calendar",k1="poolgroup",E1={provider:django.gettext("provider"),service:django.gettext("service"),pool:django.gettext("service pool"),authenticator:django.gettext("authenticator"),mfa:django.gettext("MFA"),user:django.gettext("user"),group:django.gettext("group"),transport:django.gettext("transport"),osmanager:django.gettext("OS manager"),calendar:django.gettext("calendar"),poolgroup:django.gettext("pool group")};class Jo{constructor(i){this.router=i}static getGotoButton(i,e,s){return{id:i,html:'link'+django.gettext("Go to")+" "+E1[i]+"",type:Jn.ACCELERATOR,acceleratorProperties:[e,s||""]}}gotoProvider(i){this.router.navigate(void 0!==i?["providers",i]:["providers"])}gotoService(i,e){this.router.navigate(void 0!==e?["providers",i,"detail",e]:["providers",i,"detail"])}gotoServicePool(i){this.router.navigate(["pools","service-pools",i])}gotoServicePoolDetail(i){this.router.navigate(["pools","service-pools",i,"detail"])}gotoMetapool(i){this.router.navigate(["pools","meta-pools",i])}gotoMetapoolDetail(i){this.router.navigate(["pools","meta-pools",i,"detail"])}gotoCalendar(i){this.router.navigate(["pools","calendars",i])}gotoCalendarDetail(i){this.router.navigate(["pools","calendars",i,"detail"])}gotoAccount(i){this.router.navigate(["pools","accounts",i])}gotoAccountDetail(i){this.router.navigate(["pools","accounts",i,"detail"])}gotoPoolGroup(i){this.router.navigate(["pools","pool-groups",i=i||""])}gotoAuthenticator(i){this.router.navigate(["authenticators",i])}gotoAuthenticatorDetail(i){this.router.navigate(["authenticators",i,"detail"])}gotoMFA(i){this.router.navigate(["mfas",i])}gotoUser(i,e){this.router.navigate(["authenticators",i,"detail","users",e])}gotoGroup(i,e){this.router.navigate(["authenticators",i,"detail","groups",e])}gotoTransport(i){this.router.navigate(["transports",i])}gotoOSManager(i){this.router.navigate(["osmanagers",i])}goto(i,e,s){const d=f=>{let _=e;if(s[f].split(".").forEach(w=>_=_[w]),!_)throw new Error("not going :)");return _};try{switch(i){case YI:this.gotoProvider(d(0));break;case xz:this.gotoService(d(0),d(1));break;case qI:this.gotoServicePool(d(0));break;case"authenticator":this.gotoAuthenticator(d(0));break;case XI:this.gotoUser(d(0),d(1));break;case"group":this.gotoGroup(d(0),d(1));break;case Sz:this.gotoTransport(d(0));break;case A1:this.gotoOSManager(d(0));break;case ju:this.gotoCalendar(d(0));break;case k1:this.gotoPoolGroup(d(0))}}catch{}}}function yY(a,i){if(1&a){const e=Pe();I(0,"div",2)(1,"button",3),J("click",function(){return ae(e),se(q().action())}),Y(2),O()()}if(2&a){const e=q();N(2),Re(" ",e.data.action," ")}}const bY=["label"];function Dz(a,i){}const Mz=Math.pow(2,31)-1;class $y{constructor(i,e){this._overlayRef=e,this._afterDismissed=new Ue,this._afterOpened=new Ue,this._onAction=new Ue,this._dismissedByAction=!1,this.containerInstance=i,i._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(i){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(i,Mz))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const I1=new _e("MatSnackBarData");class Wy{constructor(){this.politeness="assertive",this.announcementMessage="",this.duration=0,this.data=null,this.horizontalPosition="center",this.verticalPosition="bottom"}}let wY=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]}),a})(),Yy=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]}),a})(),xY=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]}),a})(),Tz=(()=>{class a{constructor(e,s){this.snackBarRef=e,this.data=s}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}}return a.\u0275fac=function(e){return new(e||a)(F($y),F(I1))},a.\u0275cmp=we({type:a,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions","",4,"ngIf"],["matSnackBarActions",""],["mat-button","","matSnackBarAction","",3,"click"]],template:function(e,s){1&e&&(I(0,"div",0),Y(1),O(),Q(2,yY,3,1,"div",1)),2&e&&(N(1),Re(" ",s.data.message,"\n"),N(1),V("ngIf",s.hasAction))},dependencies:[zt,pi,wY,Yy,xY],styles:[".mat-mdc-simple-snack-bar{display:flex}"],encapsulation:2,changeDetection:0}),a})();const CY={snackBarState:tr("state",[Bn("void, hidden",ft({transform:"scale(0.8)",opacity:0})),Bn("visible",ft({transform:"scale(1)",opacity:1})),Mn("* => visible",Tn("150ms cubic-bezier(0, 0, 0.2, 1)")),Mn("* => void, * => hidden",Tn("75ms cubic-bezier(0.4, 0.0, 1, 1)",ft({opacity:0})))])};let Az=(()=>{class a extends DC{constructor(e,s,d,f,_){super(),this._ngZone=e,this._elementRef=s,this._changeDetectorRef=d,this._platform=f,this.snackBarConfig=_,this._announceDelay=150,this._destroyed=!1,this._onAnnounce=new Ue,this._onExit=new Ue,this._onEnter=new Ue,this._animationState="void",this.attachDomPortal=w=>{this._assertNotAttached();const D=this._portalOutlet.attachDomPortal(w);return this._afterPortalAttached(),D},this._live="assertive"!==_.politeness||_.announcementMessage?"off"===_.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();const s=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),s}attachTemplatePortal(e){this._assertNotAttached();const s=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),s}onAnimationEnd(e){const{fromState:s,toState:d}=e;if(("void"===d&&"void"!==s||"hidden"===d)&&this._completeExit(),"visible"===d){const f=this._onEnter;this._ngZone.run(()=>{f.next(),f.complete()})}}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce())}exit(){return this._ngZone.run(()=>{this._animationState="hidden",this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId)}),this._onExit}ngOnDestroy(){this._destroyed=!0,this._completeExit()}_completeExit(){this._ngZone.onMicrotaskEmpty.pipe(Pn(1)).subscribe(()=>{this._ngZone.run(()=>{this._onExit.next(),this._onExit.complete()})})}_afterPortalAttached(){const e=this._elementRef.nativeElement,s=this.snackBarConfig.panelClass;s&&(Array.isArray(s)?s.forEach(d=>e.classList.add(d)):e.classList.add(s))}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{const e=this._elementRef.nativeElement.querySelector("[aria-hidden]"),s=this._elementRef.nativeElement.querySelector("[aria-live]");if(e&&s){var d;let f=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&e.contains(document.activeElement)&&(f=document.activeElement),e.removeAttribute("aria-hidden"),s.appendChild(e),null===(d=f)||void 0===d||d.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}}return a.\u0275fac=function(e){return new(e||a)(F(Je),F(Be),F(Zt),F(si),F(Wy))},a.\u0275dir=me({type:a,viewQuery:function(e,s){if(1&e&&ot(pc,7),2&e){let d;Ee(d=Oe())&&(s._portalOutlet=d.first)}},features:[Se]}),a})(),SY=(()=>{class a extends Az{_afterPortalAttached(){super._afterPortalAttached();const e=this._label.nativeElement,s="mdc-snackbar__label";e.classList.toggle(s,!e.querySelector(`.${s}`))}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-snack-bar-container"]],viewQuery:function(e,s){if(1&e&&ot(bY,7),2&e){let d;Ee(d=Oe())&&(s._label=d.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container","mdc-snackbar--open"],hostVars:1,hostBindings:function(e,s){1&e&&jv("@state.done",function(f){return s.onAnimationEnd(f)}),2&e&&qv("@state",s._animationState)},features:[Se],decls:6,vars:2,consts:[[1,"mdc-snackbar__surface"],[1,"mat-mdc-snack-bar-label"],["label",""],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(e,s){1&e&&(I(0,"div",0)(1,"div",1,2)(3,"div",3),Q(4,Dz,0,0,"ng-template",4),O(),he(5,"div"),O()()),2&e&&(N(5),He("aria-live",s._live)("role",s._role))},dependencies:[pc],styles:['.mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{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-mdc-snack-bar-container .mdc-snackbar__dismiss .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, var(--mdc-snackbar-icon-size, 24px))}.mat-mdc-snack-bar-container .mdc-snackbar__dismiss svg,.mat-mdc-snack-bar-container .mdc-snackbar__dismiss img{width:var(--mdc-icon-button-icon-size, var(--mdc-snackbar-icon-size, 24px));height:var(--mdc-icon-button-icon-size, var(--mdc-snackbar-icon-size, 24px))}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color, inherit)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color, inherit)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size, inherit);font-family:var(--mdc-snackbar-supporting-text-font, inherit);font-weight:var(--mdc-snackbar-supporting-text-weight, inherit);line-height:var(--mdc-snackbar-supporting-text-line-height, inherit)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-mdc-snack-bar-button-color, transparent);--mat-mdc-button-persistent-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{background-color:currentColor;opacity:.1}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}'],encapsulation:2,data:{animation:[CY.snackBarState]}}),a})(),ZI=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Iu,ku,zr,Iy,Qt,Qt]}),a})();const P1=new _e("mat-snack-bar-default-options",{providedIn:"root",factory:function KI(){return new Wy}});let DY=(()=>{class a{get _openedSnackBarRef(){const e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(e,s,d,f,_,w){this._overlay=e,this._live=s,this._injector=d,this._breakpointObserver=f,this._parentSnackBar=_,this._defaultConfig=w,this._snackBarRefAtThisLevel=null}openFromComponent(e,s){return this._attach(e,s)}openFromTemplate(e,s){return this._attach(e,s)}open(e,s="",d){const f={...this._defaultConfig,...d};return f.data={message:e,action:s},f.announcementMessage===e&&(f.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,f)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,s){const f=Gi.create({parent:s&&s.viewContainerRef&&s.viewContainerRef.injector||this._injector,providers:[{provide:Wy,useValue:s}]}),_=new pd(this.snackBarContainerComponent,s.viewContainerRef,f),w=e.attach(_);return w.instance.snackBarConfig=s,w.instance}_attach(e,s){const d={...new Wy,...this._defaultConfig,...s},f=this._createOverlay(d),_=this._attachSnackBarContainer(f,d),w=new $y(_,f);if(e instanceof hi){const D=new fc(e,null,{$implicit:d.data,snackBarRef:w});w.instance=_.attachTemplatePortal(D)}else{const D=this._createInjector(d,w),k=new pd(e,void 0,D),P=_.attachComponentPortal(k);w.instance=P.instance}return this._breakpointObserver.observe("(max-width: 599.98px) and (orientation: portrait)").pipe(Tt(f.detachments())).subscribe(D=>{f.overlayElement.classList.toggle(this.handsetCssClass,D.matches)}),d.announcementMessage&&_._onAnnounce.subscribe(()=>{this._live.announce(d.announcementMessage,d.politeness)}),this._animateSnackBar(w,d),this._openedSnackBarRef=w,this._openedSnackBarRef}_animateSnackBar(e,s){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),s.announcementMessage&&this._live.clear()}),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter(),s.duration&&s.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(s.duration))}_createOverlay(e){const s=new md;s.direction=e.direction;let d=this._overlay.position().global();const f="rtl"===e.direction,_="left"===e.horizontalPosition||"start"===e.horizontalPosition&&!f||"end"===e.horizontalPosition&&f,w=!_&&"center"!==e.horizontalPosition;return _?d.left("0"):w?d.right("0"):d.centerHorizontally(),"top"===e.verticalPosition?d.top("0"):d.bottom("0"),s.positionStrategy=d,this._overlay.create(s)}_createInjector(e,s){return Gi.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:$y,useValue:s},{provide:I1,useValue:e.data}]})}}return a.\u0275fac=function(e){return new(e||a)(oe(ta),oe(VC),oe(Gi),oe(dE),oe(a,12),oe(P1))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),MY=(()=>{class a extends DY{constructor(e,s,d,f,_,w){super(e,s,d,f,_,w),this.simpleSnackBarComponent=Tz,this.snackBarContainerComponent=SY,this.handsetCssClass="mat-mdc-snack-bar-handset"}}return a.\u0275fac=function(e){return new(e||a)(oe(ta),oe(VC),oe(Gi),oe(dE),oe(a,12),oe(P1))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:ZI}),a})();const kz="dark-theme",Ez="light-theme";class pt{constructor(i,e,s,d,f,_){this.http=i,this.router=e,this.dialog=s,this.snackbar=d,this.sanitizer=f,this.dateAdapter=_,this.user=new Nk(udsData.profile),this.navigation=new Jo(this.router),this.gui=new T1(this.dialog,this.snackbar),this.dateAdapter.setLocale(this.config.language)}get config(){return udsData.config}get csrfField(){return csrf.csrfField}get csrfToken(){return csrf.csrfToken}get notices(){return udsData.errors}restPath(i){return this.config.urls.rest+i}staticURL(i){return this.config.urls.static+i}logout(){window.location.href=this.config.urls.logout}gotoUser(){window.location.href=this.config.urls.user}putOnStorage(i,e){void 0!==typeof Storage&&sessionStorage.setItem(i,e)}getFromStorage(i){return void 0!==typeof Storage?sessionStorage.getItem(i):null}safeString(i){return this.sanitizer.bypassSecurityTrustHtml(i)}boolAsHumanString(i){return i?django.gettext("yes"):django.gettext("no")}switchTheme(i){const e=document.getElementsByTagName("html")[0];[kz,Ez].forEach(s=>{e.classList.contains(s)&&e.classList.remove(s)}),e.classList.add(i?kz:Ez)}}pt.\u0275fac=function(i){return new(i||pt)(oe(cd),oe(ea),oe(KC),oe(MY),oe(F_),oe(mr))},pt.\u0275prov=ke({token:pt,factory:pt.\u0275fac,providedIn:"root"});class ug{constructor(i){this.api=i}canActivate(i,e){return!!this.api.user.isStaff||(window.location.href=this.api.config.urls.user,!1)}}ug.\u0275fac=function(i){return new(i||ug)(oe(pt))},ug.\u0275prov=ke({token:ug,factory:ug.\u0275fac,providedIn:"root"});const hg=3e4;var Cl=(()=>{return(a=Cl||(Cl={}))[a.NONE=0]="NONE",a[a.READ=32]="READ",a[a.MANAGEMENT=64]="MANAGEMENT",a[a.ALL=96]="ALL",Cl;var a})();class $r{constructor(i,e,s){this.api=i,void 0===s&&(s={}),void 0===s.base&&(s.base=e);const d=(f,_)=>void 0===f?_:f;this.id=e,this.paths={base:s.base,get:d(s.get,s.base),log:d(s.log,s.base),put:d(s.put,s.base),test:d(s.test,s.base+"/test"),delete:d(s.delete,s.base),types:d(s.types,s.base+"/types"),gui:d(s.gui,s.base+"/gui"),tableInfo:d(s.tableInfo,s.base+"/tableinfo")},this.headers=(new pl).set("Content-Type","application/json; charset=utf8").set(this.api.config.auth_header,this.api.config.auth_token)}get(i){return this.typedGet(i)}getLogs(i){return this.doGet(this.getPath(this.paths.log,i)+"/log")}overview(i){return this.typedGet("overview"+(void 0!==i?"?filter="+i:""))}summary(i){return this.typedGet("overview?summarize"+(void 0!==i?"&filter="+i:""))}put(i,e){return this.typedPut(i,e)}create(i){return this.typedPut(i)}save(i,e){return this.typedPut(i,e=void 0!==e?e:i.id)}test(i,e){return Ou(this.api.http.post(this.getPath(this.paths.test,i),e,{headers:this.headers}).pipe(eo(s=>this.handleError(s))),hg)}delete(i){return Ou(this.api.http.delete(this.getPath(this.paths.delete,i),{headers:this.headers}).pipe(eo(e=>this.handleError(e))),hg)}permision(){return this.api.user.isAdmin?Cl.ALL:Cl.NONE}getPermissions(i){return this.doGet(this.getPath("permissions/"+this.paths.base+"/"+i))}addPermission(i,e,s,d){const f=this.getPath("permissions/"+this.paths.base+"/"+i+"/"+e+"/add/"+s);return Ou(this.api.http.put(f,{perm:d},{headers:this.headers}).pipe(eo(w=>this.handleError(w))),hg)}revokePermission(i){const e=this.getPath("permissions/revoke");return Ou(this.api.http.put(e,{items:i},{headers:this.headers}).pipe(eo(d=>this.handleError(d))),hg)}types(){return this.doGet(this.getPath(this.paths.types))}gui(i){const e=this.getPath(this.paths.gui+(void 0!==i?"/"+i:""));return this.doGet(e)}callback(i,e){const s=this.getPath("gui/callback/"+i+"?"+e);return this.doGet(s)}tableInfo(){return this.doGet(this.getPath(this.paths.tableInfo))}detail(i,e){return new TY(this,i,e)}invoke(i,e){return this.typedGet(i+e?"?"+e:"")}getPath(i,e){if(void 0===i)throw new Error("Path is undefined");return this.api.restPath(i+(void 0!==e?"/"+e:""))}doGet(i){return Ou(this.api.http.get(i,{headers:this.headers}).pipe(eo(e=>this.handleError(e))),hg)}typedGet(i){return this.doGet(this.getPath(this.paths.get,i))}typedPut(i,e){return Ou(this.api.http.put(this.getPath(this.paths.put,e),i,{headers:this.headers}).pipe(eo(s=>this.handleError(s,!0))),hg)}handleError(i,e=!1){let s="";return s=i.error instanceof ErrorEvent?i.error.message:e?django.gettext("Error saving: ")+i.error:`Error ${i.status}: ${i.error}`,this.api.gui.alert(e?django.gettext("Error saving element"):django.gettext("Error handling your request"),s),bf(()=>new Error(s))}}class TY extends $r{constructor(i,e,s,d){super(i.api,[i.paths.base,e,s].join("/")),this.parentModel=i,this.parentId=e,this.model=s,this.perm=d}permision(){return this.perm||Cl.ALL}}class Iz extends $r{constructor(i){super(i,"providers"),this.api=i}allServices(){return this.get("allservices")}service(i){return this.get("service/"+i)}maintenance(i){return this.get(i+"/maintenance")}}class AY extends $r{constructor(i){super(i,"authenticators"),this.api=i}search(i,e,s,d=12){return this.get(i+"/search?type="+encodeURIComponent(e)+"&term="+encodeURIComponent(s)+"&limit="+d)}}class kY extends $r{constructor(i){super(i,"osmanagers"),this.api=i}}class EY extends $r{constructor(i){super(i,"transports"),this.api=i}}class IY extends $r{constructor(i){super(i,"networks"),this.api=i}}class PY extends $r{constructor(i){super(i,"servicespools"),this.api=i}setFallbackAccess(i,e){return this.get(i+"/setFallbackAccess?fallbackAccess="+e)}getFallbackAccess(i){return this.get(i+"/getFallbackAccess")}actionsList(i){return this.get(i+"/actionsList")}listAssignables(i){return this.get(i+"/listAssignables")}createFromAssignable(i,e,s){return this.get(i+"/createFromAssignable?user_id="+encodeURIComponent(e)+"&assignable_id="+encodeURIComponent(s))}}class RY extends $r{constructor(i){super(i,"metapools"),this.api=i}setFallbackAccess(i,e){return this.get(i+"/setFallbackAccess?fallbackAccess="+e)}getFallbackAccess(i){return this.get(i+"/getFallbackAccess")}}class QI extends $r{constructor(i){super(i,"config"),this.api=i}}class Pz extends $r{constructor(i){super(i,"gallery/images"),this.api=i}}class JI extends $r{constructor(i){super(i,"gallery/servicespoolgroups"),this.api=i}}class OY extends $r{constructor(i){super(i,"system"),this.api=i}information(){return this.get("overview")}stats(i,e){let s="stats/"+i;return e&&(s+="/"+e),this.get(s)}flushCache(){return this.doGet(this.getPath("cache","flush"))}}class Rz extends $r{constructor(i){super(i,"reports"),this.api=i}types(){return Ou(je([]))}}class LY extends $r{constructor(i){super(i,"calendars"),this.api=i}}class FY extends $r{constructor(i){super(i,"accounts"),this.api=i}timemark(i){return this.get(i+"/timemark")}}class qy extends $r{constructor(i){super(i,"actortokens"),this.api=i}}class Oz extends $r{constructor(i){super(i,"tunneltokens"),this.api=i}}class NY extends $r{constructor(i){super(i,"mfa"),this.api=i}}class eP extends $r{constructor(i){super(i,"messaging/notifiers"),this.api=i}}class Ot{constructor(i){this.api=i,this.providers=new Iz(i),this.authenticators=new AY(i),this.mfas=new NY(i),this.osManagers=new kY(i),this.transports=new EY(i),this.networks=new IY(i),this.servicesPools=new PY(i),this.metaPools=new RY(i),this.gallery=new Pz(i),this.servicesPoolGroups=new JI(i),this.calendars=new LY(i),this.accounts=new FY(i),this.system=new OY(i),this.configuration=new QI(i),this.actorToken=new qy(i),this.tunnelToken=new Oz(i),this.reports=new Rz(i),this.notifiers=new eP(i)}}Ot.\u0275fac=function(i){return new(i||Ot)(oe(pt))},Ot.\u0275prov=ke({token:Ot,factory:Ot.\u0275fac,providedIn:"root"});const fg={leading:!0,trailing:!1};class tP{constructor(i){this.changes=i}static of(i){return new tP(i)}notEmpty(i){if(this.changes[i]){const e=this.changes[i].currentValue;if(null!=e)return je(e)}return ni}has(i){return this.changes[i]?je(this.changes[i].currentValue):ni}notFirst(i){return this.changes[i]&&!this.changes[i].isFirstChange()?je(this.changes[i].currentValue):ni}notFirstAndEmpty(i){if(this.changes[i]&&!this.changes[i].isFirstChange()){const e=this.changes[i].currentValue;if(null!=e)return je(e)}return ni}}const Fz=new _e("NGX_ECHARTS_CONFIG");let Nz=(()=>{class a{constructor(e,s,d){this.el=s,this.ngZone=d,this.autoResize=!0,this.loadingType="default",this.chartInit=new ye,this.optionsError=new ye,this.chartClick=this.createLazyEvent("click"),this.chartDblClick=this.createLazyEvent("dblclick"),this.chartMouseDown=this.createLazyEvent("mousedown"),this.chartMouseMove=this.createLazyEvent("mousemove"),this.chartMouseUp=this.createLazyEvent("mouseup"),this.chartMouseOver=this.createLazyEvent("mouseover"),this.chartMouseOut=this.createLazyEvent("mouseout"),this.chartGlobalOut=this.createLazyEvent("globalout"),this.chartContextMenu=this.createLazyEvent("contextmenu"),this.chartLegendSelectChanged=this.createLazyEvent("legendselectchanged"),this.chartLegendSelected=this.createLazyEvent("legendselected"),this.chartLegendUnselected=this.createLazyEvent("legendunselected"),this.chartLegendScroll=this.createLazyEvent("legendscroll"),this.chartDataZoom=this.createLazyEvent("datazoom"),this.chartDataRangeSelected=this.createLazyEvent("datarangeselected"),this.chartTimelineChanged=this.createLazyEvent("timelinechanged"),this.chartTimelinePlayChanged=this.createLazyEvent("timelineplaychanged"),this.chartRestore=this.createLazyEvent("restore"),this.chartDataViewChanged=this.createLazyEvent("dataviewchanged"),this.chartMagicTypeChanged=this.createLazyEvent("magictypechanged"),this.chartPieSelectChanged=this.createLazyEvent("pieselectchanged"),this.chartPieSelected=this.createLazyEvent("pieselected"),this.chartPieUnselected=this.createLazyEvent("pieunselected"),this.chartMapSelectChanged=this.createLazyEvent("mapselectchanged"),this.chartMapSelected=this.createLazyEvent("mapselected"),this.chartMapUnselected=this.createLazyEvent("mapunselected"),this.chartAxisAreaSelected=this.createLazyEvent("axisareaselected"),this.chartFocusNodeAdjacency=this.createLazyEvent("focusnodeadjacency"),this.chartUnfocusNodeAdjacency=this.createLazyEvent("unfocusnodeadjacency"),this.chartBrush=this.createLazyEvent("brush"),this.chartBrushEnd=this.createLazyEvent("brushend"),this.chartBrushSelected=this.createLazyEvent("brushselected"),this.chartRendered=this.createLazyEvent("rendered"),this.chartFinished=this.createLazyEvent("finished"),this.animationFrameID=null,this.resize$=new Ue,this.echarts=e.echarts}ngOnChanges(e){const s=tP.of(e);s.notFirstAndEmpty("options").subscribe(d=>this.onOptionsChange(d)),s.notFirstAndEmpty("merge").subscribe(d=>this.setOption(d)),s.has("loading").subscribe(d=>this.toggleLoading(!!d)),s.notFirst("theme").subscribe(()=>this.refreshChart())}ngOnInit(){if(!window.ResizeObserver)throw new Error("please install a polyfill for ResizeObserver");this.resizeSub=this.resize$.pipe(function BY(a,i=Co,e=fg){const s=Gm(a,i);return function Lz(a,i=fg){return Un((e,s)=>{const{leading:d,trailing:f}=i;let _=!1,w=null,D=null,k=!1;const P=()=>{null==D||D.unsubscribe(),D=null,f&&(Z(),k&&s.complete())},z=()=>{D=null,k&&s.complete()},W=te=>D=Dr(a(te)).subscribe(ci(s,P,z)),Z=()=>{if(_){_=!1;const te=w;w=null,s.next(te),!k&&W(te)}};e.subscribe(ci(s,te=>{_=!0,w=te,(!D||D.closed)&&(d?Z():W(te))},()=>{k=!0,(!(f&&_&&D)||D.closed)&&s.complete()}))})}(()=>s,e)}(100,Co,{leading:!1,trailing:!0})).subscribe(()=>this.resize()),this.autoResize&&(this.resizeOb=this.ngZone.runOutsideAngular(()=>new window.ResizeObserver(()=>{this.animationFrameID=window.requestAnimationFrame(()=>this.resize$.next())})),this.resizeOb.observe(this.el.nativeElement))}ngOnDestroy(){window.clearTimeout(this.initChartTimer),this.resizeSub&&this.resizeSub.unsubscribe(),this.animationFrameID&&window.cancelAnimationFrame(this.animationFrameID),this.resizeOb&&this.resizeOb.unobserve(this.el.nativeElement),this.dispose()}ngAfterViewInit(){this.initChartTimer=window.setTimeout(()=>this.initChart())}dispose(){this.chart&&(this.chart.isDisposed()||this.chart.dispose(),this.chart=null)}resize(){this.chart&&this.chart.resize()}toggleLoading(e){this.chart&&(e?this.chart.showLoading(this.loadingType,this.loadingOpts):this.chart.hideLoading())}setOption(e,s){if(this.chart)try{this.chart.setOption(e,s)}catch(d){console.error(d),this.optionsError.emit(d)}}refreshChart(){var e=this;return Xe(function*(){e.dispose(),yield e.initChart()})()}createChart(){const e=this.el.nativeElement;if(window&&window.getComputedStyle){const s=window.getComputedStyle(e,null).getPropertyValue("height");(!s||"0px"===s)&&(!e.style.height||"0px"===e.style.height)&&(e.style.height="400px")}return this.ngZone.runOutsideAngular(()=>("function"==typeof this.echarts?this.echarts:()=>Promise.resolve(this.echarts))().then(({init:d})=>d(e,this.theme,this.initOpts)))}initChart(){var e=this;return Xe(function*(){yield e.onOptionsChange(e.options),e.merge&&e.chart&&e.setOption(e.merge)})()}onOptionsChange(e){var s=this;return Xe(function*(){e&&(s.chart||(s.chart=yield s.createChart(),s.chartInit.emit(s.chart)),s.setOption(s.options,!0))})()}createLazyEvent(e){return this.chartInit.pipe(Qi(s=>new Gn(d=>(s.on(e,f=>this.ngZone.run(()=>d.next(f))),()=>{this.chart&&(this.chart.isDisposed()||s.off(e))}))))}}return a.\u0275fac=function(e){return new(e||a)(F(Fz),F(Be),F(Je))},a.\u0275dir=me({type:a,selectors:[["echarts"],["","echarts",""]],inputs:{options:"options",theme:"theme",loading:"loading",initOpts:"initOpts",merge:"merge",autoResize:"autoResize",loadingType:"loadingType",loadingOpts:"loadingOpts"},outputs:{chartInit:"chartInit",optionsError:"optionsError",chartClick:"chartClick",chartDblClick:"chartDblClick",chartMouseDown:"chartMouseDown",chartMouseMove:"chartMouseMove",chartMouseUp:"chartMouseUp",chartMouseOver:"chartMouseOver",chartMouseOut:"chartMouseOut",chartGlobalOut:"chartGlobalOut",chartContextMenu:"chartContextMenu",chartLegendSelectChanged:"chartLegendSelectChanged",chartLegendSelected:"chartLegendSelected",chartLegendUnselected:"chartLegendUnselected",chartLegendScroll:"chartLegendScroll",chartDataZoom:"chartDataZoom",chartDataRangeSelected:"chartDataRangeSelected",chartTimelineChanged:"chartTimelineChanged",chartTimelinePlayChanged:"chartTimelinePlayChanged",chartRestore:"chartRestore",chartDataViewChanged:"chartDataViewChanged",chartMagicTypeChanged:"chartMagicTypeChanged",chartPieSelectChanged:"chartPieSelectChanged",chartPieSelected:"chartPieSelected",chartPieUnselected:"chartPieUnselected",chartMapSelectChanged:"chartMapSelectChanged",chartMapSelected:"chartMapSelected",chartMapUnselected:"chartMapUnselected",chartAxisAreaSelected:"chartAxisAreaSelected",chartFocusNodeAdjacency:"chartFocusNodeAdjacency",chartUnfocusNodeAdjacency:"chartUnfocusNodeAdjacency",chartBrush:"chartBrush",chartBrushEnd:"chartBrushEnd",chartBrushSelected:"chartBrushSelected",chartRendered:"chartRendered",chartFinished:"chartFinished"},exportAs:["echarts"],features:[$n]}),a})(),VY=(()=>{class a{static forRoot(e){return{ngModule:a,providers:[{provide:Fz,useValue:e}]}}static forChild(){return{ngModule:a}}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[[]]}),a})();function Bz(a,i){if(1&a&&(I(0,"div",21)(1,"div",11),he(2,"img",3),I(3,"div",12),Y(4),O()(),I(5,"div",13)(6,"a",15)(7,"uds-translate"),Y(8,"View service pools"),O()()()()),2&a){const e=q(2);N(2),V("src",e.api.staticURL("admin/img/icons/logs.png"),tn),N(2),Re(" ",e.data.restrained," ")}}function zY(a,i){if(1&a){const e=Pe();I(0,"div")(1,"div",8)(2,"div",9)(3,"div",10)(4,"div",11),he(5,"img",3),I(6,"div",12),Y(7),O()(),I(8,"div",13)(9,"a",14)(10,"uds-translate"),Y(11,"View authenticators"),O()()()(),I(12,"div",10)(13,"div",11),he(14,"img",3),I(15,"div",12),Y(16),O()(),I(17,"div",13)(18,"a",15)(19,"uds-translate"),Y(20,"View service pools"),O()()()(),I(21,"div",10)(22,"div",11),he(23,"img",3),I(24,"div",12),Y(25),O()(),I(26,"div",13)(27,"a",15)(28,"uds-translate"),Y(29,"View service pools"),O()()()(),Q(30,Bz,9,2,"div",16),O(),I(31,"div",17)(32,"div",18)(33,"div",19)(34,"uds-translate"),Y(35,"Assigned services chart"),O()(),I(36,"div",20),J("chartInit",function(d){return ae(e),se(q().chartInit("assigned",d))}),O()(),I(37,"div",18)(38,"div",19)(39,"uds-translate"),Y(40,"In use services chart"),O()(),I(41,"div",20),J("chartInit",function(d){return ae(e),se(q().chartInit("inuse",d))}),O()()()()()}if(2&a){const e=q();N(5),V("src",e.api.staticURL("admin/img/icons/authenticators.png"),tn),N(2),Re(" ",e.data.users," "),N(7),V("src",e.api.staticURL("admin/img/icons/pools.png"),tn),N(2),Re(" ",e.data.pools," "),N(7),V("src",e.api.staticURL("admin/img/icons/services.png"),tn),N(2),Re(" ",e.data.user_services," "),N(5),V("ngIf",e.data.restrained),N(6),V("options",e.assignedChartOpts),N(5),V("options",e.inuseChartOpts)}}function Vz(a,i){1&a&&(I(0,"div",22)(1,"div",23)(2,"div",24)(3,"uds-translate"),Y(4,"UDS Administration"),O()(),I(5,"div",25)(6,"p")(7,"uds-translate"),Y(8,"You are accessing UDS Administration as staff member."),O()(),I(9,"p")(10,"uds-translate"),Y(11,"This means that you have restricted access to elements."),O()(),I(12,"p")(13,"uds-translate"),Y(14,"In order to increase your access privileges, please contact your local UDS administrator. "),O()(),he(15,"br"),I(16,"p")(17,"uds-translate"),Y(18,"Thank you."),O()()()()())}class Xy{constructor(i,e){this.api=i,this.rest=e,this.data={},this.assignedChartInstance=null,this.assignedChartOpts={},this.inuseChartOpts={},this.inuseChartInstance=null}onResize(i){this.assignedChartInstance&&this.assignedChartInstance.resize(),this.inuseChartInstance&&this.inuseChartInstance.resize()}ngOnInit(){if(this.api.user.isAdmin){this.rest.system.information().then(i=>{this.data={users:django.gettext("#USR_NUMBER# users, #GRP_NUMBER# groups").replace("#USR_NUMBER#",i.users).replace("#GRP_NUMBER#",i.groups),pools:django.gettext("#POOLS_NUMBER# service pools").replace("#POOLS_NUMBER#",i.service_pools),user_services:django.gettext("#SERVICES_NUMBER# user services").replace("#SERVICES_NUMBER#",i.user_services)},i.restrained_services_pools>0&&(this.data.restrained=django.gettext("#RESTRAINED_NUMBER# restrained services!").replace("#RESTRAINED_NUMBER#",i.restrained_services_pools))});for(const i of["assigned","inuse"])this.rest.system.stats(i).then(e=>{const s={tooltip:{trigger:"axis"},toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{}}},xAxis:{type:"category",data:e.map(d=>zs("SHORT_DATE_FORMAT",new Date(d.stamp))),boundaryGap:!1},yAxis:{type:"value",boundaryGap:!1},series:[{name:"assigned"===i?django.gettext("Assigned services"):django.gettext("Services in use"),type:"line",smooth:!0,areaStyle:{},data:e.map(d=>d.value)}]};"assigned"===i?this.assignedChartOpts=s:this.inuseChartOpts=s})}}chartInit(i,e){"assigned"===i?this.assignedChartInstance=e:this.inuseChartInstance=e}}Xy.\u0275fac=function(i){return new(i||Xy)(F(pt),F(Ot))},Xy.\u0275cmp=we({type:Xy,selectors:[["uds-summary"]],hostBindings:function(i,e){1&i&&J("resize",function(d){return e.onResize(d)},0,E0)},decls:11,vars:3,consts:[[1,"card"],[1,"card-header"],[1,"card-title"],[3,"src"],[1,"card-subtitle"],[1,"card-content"],[4,"ngIf","ngIfElse"],["noAdmin",""],[1,"admin"],[1,"information"],[1,"info-panel"],[1,"info-panel-data"],[1,"info-text"],[1,"info-panel-link"],["mat-button","","routerLink","/authenticators"],["mat-button","","routerLink","/pools/service-pools"],["class","info-panel info-danger",4,"ngIf"],[1,"statistics"],[1,"statistics-chart"],[1,"statistics-title"],["echarts","","theme","dark-digerati",3,"options","chartInit"],[1,"info-panel","info-danger"],[1,"staff-container"],[1,"staff","mat-elevation-z8"],[1,"staff-header"],[1,"staff-content"]],template:function(i,e){if(1&i&&(I(0,"div",0)(1,"div",1)(2,"div",2),he(3,"img",3),I(4,"uds-translate"),Y(5,"Dashboard"),O()(),he(6,"div",4),O(),I(7,"div",5),Q(8,zY,42,9,"div",6),Q(9,Vz,19,0,"ng-template",null,7,Nr),O()()),2&i){const s=on(10);N(3),V("src",e.api.staticURL("admin/img/icons/dashboard-monitor.png"),tn),N(5),V("ngIf",e.api.user.isAdmin)("ngIfElse",s)}},dependencies:[zt,jo,e1,Nz,xn],styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}.staff-container[_ngcontent-%COMP%]{margin-top:2rem;display:flex;justify-content:center}.staff[_ngcontent-%COMP%]{border:#337ab7;border-width:1px;border-style:solid}.staff-header[_ngcontent-%COMP%]{display:flex;justify-content:center;background-color:#337ab7;color:#fff;font-weight:700;padding:.5rem 1rem}.staff-content[_ngcontent-%COMP%]{padding:.5rem 1rem}.admin[_ngcontent-%COMP%]{display:flex;flex-direction:column}.information[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-around;width:100%}.info-panel[_ngcontent-%COMP%]{border-color:#333;background-image:linear-gradient(135deg,#fdfcfb 0%,#e2d1c3 100%);box-shadow:#00000024 0 1px 4px;box-sizing:border-box;color:#333;display:flex;flex-direction:column;margin:2rem 1rem;width:100%}.info-danger[_ngcontent-%COMP%]{background-image:linear-gradient(to right,#f83600 0%,#f9d423 100%);color:#fff;font-weight:700;font-size:1.5em}.info-panel-data[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;padding:1rem}.info-panel-data[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:1rem;width:5rem}.info-text[_ngcontent-%COMP%]{width:100%;text-align:center}.info-panel-link[_ngcontent-%COMP%]{background:steelblue}.info-panel-link[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{width:100%;color:#fff}.statistics[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-around;width:100%}.statistics-title[_ngcontent-%COMP%]{background:steelblue;width:100%;color:#fff;padding:1rem 0rem;text-align:center}.statistics-chart[_ngcontent-%COMP%]{border-color:#333;box-shadow:#00000024 0 1px 4px;box-sizing:border-box;color:#333;display:flex;flex-direction:column;margin:2rem 1rem;width:100%;height:400px} .dark-theme .staff{border:#337ab7} .dark-theme .staff-header{color:#fff} .dark-theme .info-panel{border-color:lightned(#303030,60%);background-image:linear-gradient(135deg,#fdfcfb 0%,#e2d1c3 100%);box-shadow:#00000024 0 1px 4px;color:#b3b3b3} .dark-theme .info-danger{background-image:linear-gradient(to right,#f83600 0%,#f9d423 100%);color:#fff} .dark-theme .info-panel-link{background:steelblue} .dark-theme .info-panel-link a{color:#fff} .dark-theme .statistics-title{color:#fff} .dark-theme .statistics-chart{border-color:#333;box-shadow:#00000024 0 1px 4px;color:#333}']});class HY{}function nP(a){return a&&"function"==typeof a.connect&&!(a instanceof nk)}class iP{applyChanges(i,e,s,d,f){i.forEachOperation((_,w,D)=>{let k,P;if(null==_.previousIndex){const W=s(_,w,D);k=e.createEmbeddedView(W.templateRef,W.context,W.index),P=1}else null==D?(e.remove(w),P=3):(k=e.get(w),e.move(k,D),P=2);var z;f&&f({context:null===(z=k)||void 0===z?void 0:z.context,operation:P,record:_})})}detach(){}}class Zy{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(i=!1,e,s=!0,d){this._multiple=i,this._emitChanges=s,this.compareWith=d,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new Ue,e&&e.length&&(i?e.forEach(f=>this._markSelected(f)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...i){this._verifyValueAssignment(i),i.forEach(s=>this._markSelected(s));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...i){this._verifyValueAssignment(i),i.forEach(s=>this._unmarkSelected(s));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...i){this._verifyValueAssignment(i);const e=this.selected,s=new Set(i);i.forEach(f=>this._markSelected(f)),e.filter(f=>!s.has(f)).forEach(f=>this._unmarkSelected(f));const d=this._hasQueuedChanges();return this._emitChangeEvent(),d}toggle(i){return this.isSelected(i)?this.deselect(i):this.select(i)}clear(i=!0){this._unmarkAll();const e=this._hasQueuedChanges();return i&&this._emitChangeEvent(),e}isSelected(i){if(this.compareWith){for(const e of this._selection)if(this.compareWith(e,i))return!0;return!1}return this._selection.has(i)}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(i){this._multiple&&this.selected&&this._selected.sort(i)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(i){this.isSelected(i)||(this._multiple||this._unmarkAll(),this.isSelected(i)||this._selection.add(i),this._emitChanges&&this._selectedToEmit.push(i))}_unmarkSelected(i){this.isSelected(i)&&(this._selection.delete(i),this._emitChanges&&this._deselectedToEmit.push(i))}_unmarkAll(){this.isEmpty()||this._selection.forEach(i=>this._unmarkSelected(i))}_verifyValueAssignment(i){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}}const Ky=new _e("_ViewRepeater"),jY=["matFormFieldNotchedOutline",""],R1=["*"],Hz=["textField"],$Y=["iconPrefixContainer"],Gz=["textPrefixContainer"];function WY(a,i){1&a&&he(0,"span",19)}function YY(a,i){if(1&a){const e=Pe();I(0,"label",17),J("cdkObserveContent",function(){return ae(e),se(q(2)._refreshOutlineNotchWidth())}),ht(1,1),Q(2,WY,1,0,"span",18),O()}if(2&a){const e=q(2);V("floating",e._shouldLabelFloat())("cdkObserveContentDisabled",!e._hasOutline())("id",e._labelId),He("for",e._control.id)("aria-owns",e._control.id),N(2),V("ngIf",!e.hideRequiredMarker&&e._control.required)}}function Uz(a,i){1&a&&Q(0,YY,3,6,"label",16),2&a&&V("ngIf",q()._hasFloatingLabel())}function jz(a,i){1&a&&he(0,"div",20)}function $z(a,i){}function O1(a,i){1&a&&Q(0,$z,0,0,"ng-template",22),2&a&&(q(2),V("ngTemplateOutlet",on(1)))}function bc(a,i){if(1&a&&(I(0,"div",21),Q(1,O1,1,1,"ng-template",9),O()),2&a){const e=q();V("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat())("matFormFieldNotchedOutlineLabelWidth",e._labelWidth),N(1),V("ngIf",!e._forceDisplayInfixLabel())}}function qY(a,i){1&a&&(I(0,"div",23,24),ht(2,2),O())}function Wz(a,i){1&a&&(I(0,"div",25,26),ht(2,3),O())}function rP(a,i){}function XY(a,i){1&a&&Q(0,rP,0,0,"ng-template",22),2&a&&(q(),V("ngTemplateOutlet",on(1)))}function ZY(a,i){1&a&&(I(0,"div",27),ht(1,4),O())}function KY(a,i){1&a&&(I(0,"div",28),ht(1,5),O())}function Yz(a,i){1&a&&he(0,"div",29)}function QY(a,i){1&a&&(I(0,"div",30),ht(1,6),O()),2&a&&V("@transitionMessages",q()._subscriptAnimationState)}function qz(a,i){if(1&a&&(I(0,"mat-hint",34),Y(1),O()),2&a){const e=q(2);V("id",e._hintLabelId),N(1),In(e.hintLabel)}}function Xz(a,i){if(1&a&&(I(0,"div",31),Q(1,qz,2,2,"mat-hint",32),ht(2,7),he(3,"div",33),ht(4,8),O()),2&a){const e=q();V("@transitionMessages",e._subscriptAnimationState),N(1),V("ngIf",e.hintLabel)}}const JY=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],eq=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];let vi=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["mat-label"]]}),a})();const tq=new _e("MatError");let iq=0,qf=(()=>{class a{constructor(){this.align="start",this.id="mat-mdc-hint-"+iq++}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(e,s){2&e&&(Oa("id",s.id),He("align",null),at("mat-mdc-form-field-hint-end","end"===s.align))},inputs:{align:"align",id:"id"}}),a})();const Zz=new _e("MatPrefix"),aP=new _e("MatSuffix");let pg=(()=>{class a{constructor(){this._isText=!1}set _isTextSelector(e){this._isText=!0}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:["matTextSuffix","_isTextSelector"]},features:[et([{provide:aP,useExisting:a}])]}),a})(),Kz=(()=>{class a{constructor(e){this._elementRef=e,this.floating=!1}getWidth(){return function Qz(a){if(null!==a.offsetParent)return a.scrollWidth;const e=a.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const s=e.scrollWidth;return e.remove(),s}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}}return a.\u0275fac=function(e){return new(e||a)(F(Be))},a.\u0275dir=me({type:a,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(e,s){2&e&&at("mdc-floating-label--float-above",s.floating)},inputs:{floating:"floating"}}),a})();const Jz="mdc-line-ripple--active",L1="mdc-line-ripple--deactivating";let e4=(()=>{class a{constructor(e,s){this._elementRef=e,this._handleTransitionEnd=d=>{const f=this._elementRef.nativeElement.classList,_=f.contains(L1);"opacity"===d.propertyName&&_&&f.remove(Jz,L1)},s.runOutsideAngular(()=>{e.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(L1),e.add(Jz)}deactivate(){this._elementRef.nativeElement.classList.add(L1)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Je))},a.\u0275dir=me({type:a,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]}),a})(),oP=(()=>{class a{constructor(e,s){this._elementRef=e,this._ngZone=s,this.labelWidth=0,this.open=!1}ngAfterViewInit(){const e=this._elementRef.nativeElement.querySelector(".mdc-floating-label");e?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(e.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>e.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_getNotchWidth(){return this.open?this.labelWidth>0?`calc(${this.labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:"0px":null}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Je))},a.\u0275cmp=we({type:a,selectors:[["div","matFormFieldNotchedOutline",""]],hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(e,s){2&e&&at("mdc-notched-outline--notched",s.open)},inputs:{labelWidth:["matFormFieldNotchedOutlineLabelWidth","labelWidth"],open:["matFormFieldNotchedOutlineOpen","open"]},attrs:jY,ngContentSelectors:R1,decls:4,vars:2,consts:[[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(e,s){1&e&&(Fn(),he(0,"div",0),I(1,"div",1),ht(2),O(),he(3,"div",2)),2&e&&(N(1),Ra("width",s._getNotchWidth()))},encapsulation:2,changeDetection:0}),a})();const aq={transitionMessages:tr("transitionMessages",[Bn("enter",ft({opacity:1,transform:"translateY(0%)"})),Mn("void => enter",[ft({opacity:0,transform:"translateY(-5px)"}),Tn("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let F1=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a}),a})();const mg=new _e("MatFormField"),t4=new _e("MAT_FORM_FIELD_DEFAULT_OPTIONS");let sP=0,ei=(()=>{class a{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=We(e)}get floatLabel(){var e;return this._floatLabel||(null===(e=this._defaults)||void 0===e?void 0:e.floatLabel)||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(e){var s;const d=this._appearance,f=e||(null===(s=this._defaults)||void 0===s?void 0:s.appearance)||"fill";this._appearance=f,"outline"===this._appearance&&this._appearance!==d&&(this._refreshOutlineNotchWidth(),this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){var e;return this._subscriptSizing||(null===(e=this._defaults)||void 0===e?void 0:e.subscriptSizing)||"fixed"}set subscriptSizing(e){var s;this._subscriptSizing=e||(null===(s=this._defaults)||void 0===s?void 0:s.subscriptSizing)||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}constructor(e,s,d,f,_,w,D,k){this._elementRef=e,this._changeDetectorRef=s,this._ngZone=d,this._dir=f,this._platform=_,this._defaults=w,this._animationMode=D,this._document=k,this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+sP++,this._hintLabelId="mat-mdc-hint-"+sP++,this._subscriptAnimationState="",this._labelWidth=0,this._destroyed=new Ue,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,w&&(w.appearance&&(this.appearance=w.appearance),this._hideRequiredMarker=Boolean(null==w?void 0:w.hideRequiredMarker),w.color&&(this.color=w.color))}ngAfterViewInit(){var e,s;this._updateFocusState(),this._refreshOutlineNotchWidth(),null!==(e=this._document)&&void 0!==e&&null!==(s=e.fonts)&&void 0!==s&&s.ready?this._document.fonts.ready.then(()=>{this._refreshOutlineNotchWidth(),this._changeDetectorRef.markForCheck()}):setTimeout(()=>this._refreshOutlineNotchWidth(),100),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){const e=this._control;e.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${e.controlType}`),e.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),e.ngControl&&e.ngControl.valueChanges&&e.ngControl.valueChanges.pipe(Tt(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Mi(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){var e,s;if(this._control.focused&&!this._isFocused)this._isFocused=!0,null===(s=this._lineRipple)||void 0===s||s.activate();else if(!this._control.focused&&(this._isFocused||null===this._isFocused)){var d;this._isFocused=!1,null===(d=this._lineRipple)||void 0===d||d.deactivate()}null===(e=this._textField)||void 0===e||e.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(Tt(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe(Tt(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(e){const s=this._control?this._control.ngControl:null;return s&&s[e]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||(this._labelWidth=this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const s=this._hintChildren?this._hintChildren.find(f=>"start"===f.align):null,d=this._hintChildren?this._hintChildren.find(f=>"end"===f.align):null;s?e.push(s.id):this._hintLabel&&e.push(this._hintLabelId),d&&e.push(d.id)}else this._errorChildren&&e.push(...this._errorChildren.map(s=>s.id));this._control.setDescribedByIds(e)}}_updateOutlineLabelOffset(){var e,s,d,f;if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;const _=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(_.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdateOnStable=!0);const w=null===(e=this._iconPrefixContainer)||void 0===e?void 0:e.nativeElement,D=null===(s=this._textPrefixContainer)||void 0===s?void 0:s.nativeElement,k=null!==(d=null==w?void 0:w.getBoundingClientRect().width)&&void 0!==d?d:0,P=null!==(f=null==D?void 0:D.getBoundingClientRect().width)&&void 0!==f?f:0;_.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${k+P}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const s=e.getRootNode();return s&&s!==e}return document.documentElement.contains(e)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Je),F(Ni),F(si),F(t4,8),F(ki,8),F(bt))},a.\u0275cmp=we({type:a,selectors:[["mat-form-field"]],contentQueries:function(e,s,d){if(1&e&&(hn(d,vi,5),hn(d,vi,7),hn(d,F1,5),hn(d,Zz,5),hn(d,aP,5),hn(d,tq,5),hn(d,qf,5)),2&e){let f;Ee(f=Oe())&&(s._labelChildNonStatic=f.first),Ee(f=Oe())&&(s._labelChildStatic=f.first),Ee(f=Oe())&&(s._formFieldControl=f.first),Ee(f=Oe())&&(s._prefixChildren=f),Ee(f=Oe())&&(s._suffixChildren=f),Ee(f=Oe())&&(s._errorChildren=f),Ee(f=Oe())&&(s._hintChildren=f)}},viewQuery:function(e,s){if(1&e&&(ot(Hz,5),ot($Y,5),ot(Gz,5),ot(Kz,5),ot(oP,5),ot(e4,5)),2&e){let d;Ee(d=Oe())&&(s._textField=d.first),Ee(d=Oe())&&(s._iconPrefixContainer=d.first),Ee(d=Oe())&&(s._textPrefixContainer=d.first),Ee(d=Oe())&&(s._floatingLabel=d.first),Ee(d=Oe())&&(s._notchedOutline=d.first),Ee(d=Oe())&&(s._lineRipple=d.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(e,s){2&e&&at("mat-mdc-form-field-label-always-float",s._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",s._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",s._hasIconSuffix)("mat-form-field-invalid",s._control.errorState)("mat-form-field-disabled",s._control.disabled)("mat-form-field-autofilled",s._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===s._animationMode)("mat-form-field-appearance-fill","fill"==s.appearance)("mat-form-field-appearance-outline","outline"==s.appearance)("mat-form-field-hide-placeholder",s._hasFloatingLabel()&&!s._shouldLabelFloat())("mat-focused",s._control.focused)("mat-primary","accent"!==s.color&&"warn"!==s.color)("mat-accent","accent"===s.color)("mat-warn","warn"===s.color)("ng-untouched",s._shouldForward("untouched"))("ng-touched",s._shouldForward("touched"))("ng-pristine",s._shouldForward("pristine"))("ng-dirty",s._shouldForward("dirty"))("ng-valid",s._shouldForward("valid"))("ng-invalid",s._shouldForward("invalid"))("ng-pending",s._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[et([{provide:mg,useExisting:a}])],ngContentSelectors:eq,decls:18,vars:23,consts:[["labelTemplate",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],["textField",""],["class","mat-mdc-form-field-focus-overlay",4,"ngIf"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth",4,"ngIf"],["class","mat-mdc-form-field-icon-prefix",4,"ngIf"],["class","mat-mdc-form-field-text-prefix",4,"ngIf"],[1,"mat-mdc-form-field-infix"],[3,"ngIf"],["class","mat-mdc-form-field-text-suffix",4,"ngIf"],["class","mat-mdc-form-field-icon-suffix",4,"ngIf"],["matFormFieldLineRipple","",4,"ngIf"],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align",3,"ngSwitch"],["class","mat-mdc-form-field-error-wrapper",4,"ngSwitchCase"],["class","mat-mdc-form-field-hint-wrapper",4,"ngSwitchCase"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent",4,"ngIf"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent"],["aria-hidden","true","class","mat-mdc-form-field-required-marker mdc-floating-label--required",4,"ngIf"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-focus-overlay"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-icon-prefix"],["iconPrefixContainer",""],[1,"mat-mdc-form-field-text-prefix"],["textPrefixContainer",""],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id",4,"ngIf"],[1,"mat-mdc-form-field-hint-spacer"],[3,"id"]],template:function(e,s){1&e&&(Fn(JY),Q(0,Uz,1,1,"ng-template",null,0,Nr),I(2,"div",1,2),J("click",function(f){return s._control.onContainerClick&&s._control.onContainerClick(f)}),Q(4,jz,1,0,"div",3),I(5,"div",4),Q(6,bc,2,3,"div",5),Q(7,qY,3,0,"div",6),Q(8,Wz,3,0,"div",7),I(9,"div",8),Q(10,XY,1,1,"ng-template",9),ht(11),O(),Q(12,ZY,2,0,"div",10),Q(13,KY,2,0,"div",11),O(),Q(14,Yz,1,0,"div",12),O(),I(15,"div",13),Q(16,QY,2,1,"div",14),Q(17,Xz,5,2,"div",15),O()),2&e&&(N(2),at("mdc-text-field--filled",!s._hasOutline())("mdc-text-field--outlined",s._hasOutline())("mdc-text-field--no-label",!s._hasFloatingLabel())("mdc-text-field--disabled",s._control.disabled)("mdc-text-field--invalid",s._control.errorState),N(2),V("ngIf",!s._hasOutline()&&!s._control.disabled),N(2),V("ngIf",s._hasOutline()),N(1),V("ngIf",s._hasIconPrefix),N(1),V("ngIf",s._hasTextPrefix),N(2),V("ngIf",!s._hasOutline()||s._forceDisplayInfixLabel()),N(2),V("ngIf",s._hasTextSuffix),N(1),V("ngIf",s._hasIconSuffix),N(1),V("ngIf",!s._hasOutline()),N(1),at("mat-mdc-form-field-subscript-dynamic-size","dynamic"===s.subscriptSizing),V("ngSwitch",s._getDisplayedMessages()),N(1),V("ngSwitchCase","error"),N(1),V("ngSwitchCase","hint"))},dependencies:[zt,Wn,id,oc,_3,qf,Kz,oP,e4],styles:['.mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal;pointer-events:all}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}'],encapsulation:2,data:{animation:[aq.transitionMessages]},changeDetection:0}),a})(),N1=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,zr,lE,Qt]}),a})();const lP=["trigger"],a4=["panel"];function cq(a,i){if(1&a&&(I(0,"span",10),Y(1),O()),2&a){const e=q();N(1),In(e.placeholder)}}function dq(a,i){if(1&a&&(I(0,"span",14),Y(1),O()),2&a){const e=q(2);N(1),In(e.triggerValue)}}function o4(a,i){1&a&&ht(0,0,["*ngSwitchCase","true"])}function uq(a,i){1&a&&(I(0,"span",11),Q(1,dq,2,1,"span",12),Q(2,o4,1,0,"ng-content",13),O()),2&a&&(V("ngSwitch",!!q().customTrigger),N(2),V("ngSwitchCase",!0))}function hq(a,i){if(1&a){const e=Pe();Pr(),Ll(),I(0,"div",15,16),J("@transformPanel.done",function(d){return ae(e),se(q()._panelDoneAnimatingStream.next(d.toState))})("keydown",function(d){return ae(e),se(q()._handleKeydown(d))}),ht(2,1),O()}if(2&a){const e=q();sw("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",e._getPanelTheme(),""),V("ngClass",e.panelClass)("@transformPanel","showing"),He("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}const fq=[[["mat-select-trigger"]],"*"],Cee=["mat-select-trigger","*"],pq={transformPanelWrap:tr("transformPanelWrap",[Mn("* => void",Ay("@transformPanel",[XC()],{optional:!0}))]),transformPanel:tr("transformPanel",[Bn("void",ft({opacity:0,transform:"scale(1, 0.8)"})),Mn("void => showing",Tn("120ms cubic-bezier(0, 0, 0.2, 1)",ft({opacity:1,transform:"scale(1, 1)"}))),Mn("* => void",Tn("100ms linear",ft({opacity:0})))])};let s4=0;const Sl=new _e("mat-select-scroll-strategy"),cP=new _e("MAT_SELECT_CONFIG"),dP={provide:Sl,deps:[ta],useFactory:function gg(a){return()=>a.scrollStrategies.reposition()}},l4=new _e("MatSelectTrigger");class c4{constructor(i,e){this.source=i,this.value=e}}const d4=vc(Cy(mc(B3(class{constructor(a,i,e,s,d){this._elementRef=a,this._defaultErrorStateMatcher=i,this._parentForm=e,this._parentFormGroup=s,this.ngControl=d,this.stateChanges=new Ue}}))));let mq=(()=>{class a extends d4{get focused(){return this._focused||this._panelOpen}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get required(){var e,s,d,f;return null!==(e=null!==(s=this._required)&&void 0!==s?s:null===(d=this.ngControl)||void 0===d||null===(f=d.control)||void 0===f?void 0:f.hasValidator(t1.required))&&void 0!==e&&e}set required(e){this._required=We(e),this.stateChanges.next()}get multiple(){return this._multiple}set multiple(e){this._multiple=We(e)}get disableOptionCentering(){return this._disableOptionCentering}set disableOptionCentering(e){this._disableOptionCentering=We(e)}get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}get typeaheadDebounceInterval(){return this._typeaheadDebounceInterval}set typeaheadDebounceInterval(e){this._typeaheadDebounceInterval=er(e)}get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}constructor(e,s,d,f,_,w,D,k,P,z,W,Z,te,re){var fe,pe,Te;super(_,f,D,k,z),this._viewportRuler=e,this._changeDetectorRef=s,this._ngZone=d,this._dir=w,this._parentFormField=P,this._liveAnnouncer=te,this._defaultOptions=re,this._panelOpen=!1,this._compareWith=(ue,Fe)=>ue===Fe,this._uid="mat-select-"+s4++,this._triggerAriaLabelledBy=null,this._destroy=new Ue,this._onChange=()=>{},this._onTouched=()=>{},this._valueId="mat-select-value-"+s4++,this._panelDoneAnimatingStream=new Ue,this._overlayPanelClass=(null===(fe=this._defaultOptions)||void 0===fe?void 0:fe.overlayPanelClass)||"",this._focused=!1,this.controlType="mat-select",this._multiple=!1,this._disableOptionCentering=null!==(pe=null===(Te=this._defaultOptions)||void 0===Te?void 0:Te.disableOptionCentering)&&void 0!==pe&&pe,this.ariaLabel="",this.optionSelectionChanges=_m(()=>{const ue=this.options;return ue?ue.changes.pipe(Ji(ue),Qi(()=>Mi(...ue.map(Fe=>Fe.onSelectionChange)))):this._ngZone.onStable.pipe(Pn(1),Qi(()=>this.optionSelectionChanges))}),this.openedChange=new ye,this._openedStream=this.openedChange.pipe(fi(ue=>ue),gt(()=>{})),this._closedStream=this.openedChange.pipe(fi(ue=>!ue),gt(()=>{})),this.selectionChange=new ye,this.valueChange=new ye,this.ngControl&&(this.ngControl.valueAccessor=this),null!=(null==re?void 0:re.typeaheadDebounceInterval)&&(this._typeaheadDebounceInterval=re.typeaheadDebounceInterval),this._scrollStrategyFactory=Z,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(W)||0,this.id=this.id}ngOnInit(){this._selectionModel=new Zy(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe(oE(),Tt(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen))}ngAfterContentInit(){this._initKeyManager(),this._selectionModel.changed.pipe(Tt(this._destroy)).subscribe(e=>{e.added.forEach(s=>s.select()),e.removed.forEach(s=>s.deselect())}),this.options.changes.pipe(Ji(null),Tt(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const e=this._getTriggerAriaLabelledby(),s=this.ngControl;if(e!==this._triggerAriaLabelledBy){const d=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?d.setAttribute("aria-labelledby",e):d.removeAttribute("aria-labelledby")}s&&(this._previousControl!==s.control&&(void 0!==this._previousControl&&null!==s.disabled&&s.disabled!==this.disabled&&(this.disabled=s.disabled),this._previousControl=s.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this._typeaheadDebounceInterval)}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck())}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched())}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){var e,s;return this.multiple?(null===(e=this._selectionModel)||void 0===e?void 0:e.selected)||[]:null===(s=this._selectionModel)||void 0===s?void 0:s.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const e=this._selectionModel.selected.map(s=>s.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){const s=e.keyCode,d=40===s||38===s||37===s||39===s,f=13===s||32===s,_=this._keyManager;if(!_.isTyping()&&f&&!pr(e)||(this.multiple||e.altKey)&&d)e.preventDefault(),this.open();else if(!this.multiple){const w=this.selected;_.onKeydown(e);const D=this.selected;D&&w!==D&&this._liveAnnouncer.announce(D.viewValue,1e4)}}_handleOpenKeydown(e){const s=this._keyManager,d=e.keyCode,f=40===d||38===d,_=s.isTyping();if(f&&e.altKey)e.preventDefault(),this.close();else if(_||13!==d&&32!==d||!s.activeItem||pr(e))if(!_&&this._multiple&&65===d&&e.ctrlKey){e.preventDefault();const w=this.options.some(D=>!D.disabled&&!D.selected);this.options.forEach(D=>{D.disabled||(w?D.select():D.deselect())})}else{const w=s.activeItemIndex;s.onKeydown(e),this._multiple&&f&&e.shiftKey&&s.activeItem&&s.activeItemIndex!==w&&s.activeItem._selectViaInteraction()}else e.preventDefault(),s.activeItem._selectViaInteraction()}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){var e;this._focused=!1,null===(e=this._keyManager)||void 0===e||e.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe(Pn(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this._selectionModel.selected.forEach(s=>s.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(s=>this._selectOptionByValue(s)),this._sortValues();else{const s=this._selectOptionByValue(e);s?this._keyManager.updateActiveItem(s):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){const s=this.options.find(d=>{if(this._selectionModel.isSelected(d))return!1;try{return null!=d.value&&this._compareWith(d.value,e)}catch{return!1}});return s&&this._selectionModel.select(s),s}_assignValue(e){return!!(e!==this._value||this._multiple&&Array.isArray(e))&&(this.options&&this._setSelectionByValue(e),this._value=e,!0)}_initKeyManager(){this._keyManager=new FC(this.options).withTypeAhead(this._typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const e=Mi(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(Tt(e)).subscribe(s=>{this._onSelect(s.source,s.isUserInput),s.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Mi(...this.options.map(s=>s._stateChanges)).pipe(Tt(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,s){const d=this._selectionModel.isSelected(e);null!=e.value||this._multiple?(d!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),s&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),s&&this.focus())):(e.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(e.value)),d!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const e=this.options.toArray();this._selectionModel.sort((s,d)=>this.sortComparator?this.sortComparator(s,d,e):e.indexOf(s)-e.indexOf(d)),this.stateChanges.next()}}_propagateChanges(e){let s=null;s=this.multiple?this.selected.map(d=>d.value):this.selected?this.selected.value:e,this._value=s,this.valueChange.emit(s),this._onChange(s),this.selectionChange.emit(this._getChangeEvent(s)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){this._keyManager&&(this.empty?this._keyManager.setFirstItemActive():this._keyManager.setActiveItem(this._selectionModel.selected[0]))}_canOpen(){var e;return!this._panelOpen&&!this.disabled&&(null===(e=this.options)||void 0===e?void 0:e.length)>0}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){var e;if(this.ariaLabel)return null;const s=null===(e=this._parentFormField)||void 0===e?void 0:e.getLabelId();return this.ariaLabelledby?(s?s+" ":"")+this.ariaLabelledby:s}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){var e;if(this.ariaLabel)return null;const s=null===(e=this._parentFormField)||void 0===e?void 0:e.getLabelId();let d=(s?s+" ":"")+this._valueId;return this.ariaLabelledby&&(d+=" "+this.ariaLabelledby),d}_panelDoneAnimating(e){this.openedChange.emit(e)}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this._panelOpen||!this.empty||this._focused&&!!this._placeholder}}return a.\u0275fac=function(e){return new(e||a)(F(hc),F(Zt),F(Je),F(AE),F(Be),F(Ni,8),F(wd,8),F(sg,8),F(mg,8),F(So,10),hs("tabindex"),F(Sl),F(VC),F(cP,8))},a.\u0275dir=me({type:a,viewQuery:function(e,s){if(1&e&&(ot(lP,5),ot(a4,5),ot(g3,5)),2&e){let d;Ee(d=Oe())&&(s.trigger=d.first),Ee(d=Oe())&&(s.panel=d.first),Ee(d=Oe())&&(s._overlayDir=d.first)}},inputs:{userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",placeholder:"placeholder",required:"required",multiple:"multiple",disableOptionCentering:"disableOptionCentering",compareWith:"compareWith",value:"value",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:"typeaheadDebounceInterval",sortComparator:"sortComparator",id:"id"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},features:[Se,$n]}),a})(),uP=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["mat-select-trigger"]],features:[et([{provide:l4,useExisting:a}])]}),a})(),ya=(()=>{class a extends mq{constructor(){super(...arguments),this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}]}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}ngOnInit(){super.ngOnInit(),this._viewportRuler.change().pipe(Tt(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(),this._changeDetectorRef.detectChanges())})}ngAfterViewInit(){this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin())}open(){this._overlayWidth=this._getOverlayWidth(),super.open(),this.stateChanges.next()}close(){super.close(),this.stateChanges.next()}_scrollOptionIntoView(e){const s=this.options.toArray()[e];if(s){const d=this.panel.nativeElement,f=WC(e,this.options,this.optionGroups),_=s._getHostElement();d.scrollTop=0===e&&1===f?0:RE(_.offsetTop,_.offsetHeight,d.scrollTop,d.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new c4(this,e)}_getOverlayWidth(){return(this._preferredOverlayOrigin instanceof PC?this._preferredOverlayOrigin.elementRef:this._preferredOverlayOrigin||this._elementRef).nativeElement.getBoundingClientRect().width}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-select"]],contentQueries:function(e,s,d){if(1&e&&(hn(d,l4,5),hn(d,$i,5),hn(d,Ty,5)),2&e){let f;Ee(f=Oe())&&(s.customTrigger=f.first),Ee(f=Oe())&&(s.options=f),Ee(f=Oe())&&(s.optionGroups=f)}},hostAttrs:["role","combobox","aria-autocomplete","none","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(e,s){1&e&&J("keydown",function(f){return s._handleKeydown(f)})("focus",function(){return s._onFocus()})("blur",function(){return s._onBlur()}),2&e&&(He("id",s.id)("tabindex",s.tabIndex)("aria-controls",s.panelOpen?s.id+"-panel":null)("aria-expanded",s.panelOpen)("aria-label",s.ariaLabel||null)("aria-required",s.required.toString())("aria-disabled",s.disabled.toString())("aria-invalid",s.errorState)("aria-activedescendant",s._getAriaActiveDescendant()),at("mat-mdc-select-disabled",s.disabled)("mat-mdc-select-invalid",s.errorState)("mat-mdc-select-required",s.required)("mat-mdc-select-empty",s.empty)("mat-mdc-select-multiple",s.multiple))},inputs:{disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex"},exportAs:["matSelect"],features:[et([{provide:F1,useExisting:a},{provide:PE,useExisting:a}]),Se],ngContentSelectors:Cee,decls:11,vars:11,consts:[["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],[1,"mat-mdc-select-value",3,"ngSwitch"],["class","mat-mdc-select-placeholder mat-mdc-select-min-line",4,"ngSwitchCase"],["class","mat-mdc-select-value-text",3,"ngSwitch",4,"ngSwitchCase"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","backdropClick","attach","detach"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text",3,"ngSwitch"],["class","mat-mdc-select-min-line",4,"ngSwitchDefault"],[4,"ngSwitchCase"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"ngClass","keydown"],["panel",""]],template:function(e,s){if(1&e&&(Fn(fq),I(0,"div",0,1),J("click",function(){return s.toggle()}),I(3,"div",2),Q(4,cq,2,1,"span",3),Q(5,uq,3,2,"span",4),O(),I(6,"div",5)(7,"div",6),Pr(),I(8,"svg",7),he(9,"path",8),O()()()(),Q(10,hq,3,9,"ng-template",9),J("backdropClick",function(){return s.close()})("attach",function(){return s._onAttached()})("detach",function(){return s.close()})),2&e){const d=on(1);He("aria-owns",s.panelOpen?s.id+"-panel":null),N(3),V("ngSwitch",s.empty),He("id",s._valueId),N(1),V("ngSwitchCase",!0),N(1),V("ngSwitchCase",!1),N(5),V("cdkConnectedOverlayPanelClass",s._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",s._scrollStrategy)("cdkConnectedOverlayOrigin",s._preferredOverlayOrigin||d)("cdkConnectedOverlayOpen",s.panelOpen)("cdkConnectedOverlayPositions",s._positions)("cdkConnectedOverlayWidth",s._overlayWidth)}},dependencies:[Ps,id,oc,gx,g3,PC],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}.mat-mdc-select{display:inline-block;width:100%;outline:none}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:translateY(-8px)}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-select-arrow{width:10px;height:5px;position:relative}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}.mdc-menu-surface.mat-mdc-select-panel{width:100%;max-height:275px;position:static;outline:0;margin:0;padding:8px 0;list-style-type:none}.mdc-menu-surface.mat-mdc-select-panel:focus{outline:none}.cdk-high-contrast-active .mdc-menu-surface.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) .mdc-menu-surface.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above .mdc-menu-surface.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}'],encapsulation:2,data:{animation:[pq.transformPanel]},changeDetection:0}),a})(),u4=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[dP],imports:[zr,Iu,YC,Qt,Nf,N1,YC,Qt]}),a})();const vg=["tooltip"],Qy=new _e("mat-tooltip-scroll-strategy"),yq={provide:Qy,deps:[ta],useFactory:function _q(a){return()=>a.scrollStrategies.reposition({scrollThrottle:20})}},wq=new _e("mat-tooltip-default-options",{providedIn:"root",factory:function bq(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}}),hP="tooltip-panel",h4=Au({passive:!0});let Aee=(()=>{class a{get position(){return this._position}set position(e){var s;e!==this._position&&(this._position=e,this._overlayRef)&&(this._updatePosition(this._overlayRef),null===(s=this._tooltipInstance)||void 0===s||s.show(0),this._overlayRef.updatePosition())}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=We(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){this._disabled=We(e),this._disabled?this.hide(0):this._setupPointerEnterEventsIfNeeded()}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=er(e)}get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=er(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(e){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message,"tooltip"),this._message=null!=e?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(e,s,d,f,_,w,D,k,P,z,W,Z){this._overlay=e,this._elementRef=s,this._scrollDispatcher=d,this._viewContainerRef=f,this._ngZone=_,this._platform=w,this._ariaDescriber=D,this._focusMonitor=k,this._dir=z,this._defaultOptions=W,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._viewportMargin=8,this._cssClassPrefix="mat",this._showDelay=this._defaultOptions.showDelay,this._hideDelay=this._defaultOptions.hideDelay,this.touchGestures="auto",this._message="",this._passiveListeners=[],this._destroyed=new Ue,this._scrollStrategy=P,this._document=Z,W&&(W.position&&(this.position=W.position),W.positionAtOrigin&&(this.positionAtOrigin=W.positionAtOrigin),W.touchGestures&&(this.touchGestures=W.touchGestures)),z.change.pipe(Tt(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(Tt(this._destroyed)).subscribe(e=>{e?"keyboard"===e&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const e=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([s,d])=>{e.removeEventListener(s,d,h4)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,s){var d;if(this.disabled||!this.message||this._isTooltipVisible())return void(null===(d=this._tooltipInstance)||void 0===d||d._cancelPendingAnimations());const f=this._createOverlay(s);this._detach(),this._portal=this._portal||new pd(this._tooltipComponent,this._viewContainerRef);const _=this._tooltipInstance=f.attach(this._portal).instance;_._triggerElement=this._elementRef.nativeElement,_._mouseLeaveHideDelay=this._hideDelay,_.afterHidden().pipe(Tt(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),_.show(e)}hide(e=this.hideDelay){const s=this._tooltipInstance;s&&(s.isVisible()?s.hide(e):(s._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){var s;if(this._overlayRef){const _=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&_._origin instanceof Be)return this._overlayRef;this._detach()}const d=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),f=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin&&e||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(d);return f.positionChanges.pipe(Tt(this._destroyed)).subscribe(_=>{this._updateCurrentPositionClass(_.connectionPair),this._tooltipInstance&&_.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:f,panelClass:`${this._cssClassPrefix}-${hP}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(Tt(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(Tt(this._destroyed)).subscribe(()=>{var _;return null===(_=this._tooltipInstance)||void 0===_?void 0:_._handleBodyInteraction()}),this._overlayRef.keydownEvents().pipe(Tt(this._destroyed)).subscribe(_=>{this._isTooltipVisible()&&27===_.keyCode&&!pr(_)&&(_.preventDefault(),_.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),null!==(s=this._defaultOptions)&&void 0!==s&&s.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){const s=e.getConfig().positionStrategy,d=this._getOrigin(),f=this._getOverlayPosition();s.withPositions([this._addOffset({...d.main,...f.main}),this._addOffset({...d.fallback,...f.fallback})])}_addOffset(e){return e}_getOrigin(){const e=!this._dir||"ltr"==this._dir.value,s=this.position;let d;"above"==s||"below"==s?d={originX:"center",originY:"above"==s?"top":"bottom"}:"before"==s||"left"==s&&e||"right"==s&&!e?d={originX:"start",originY:"center"}:("after"==s||"right"==s&&e||"left"==s&&!e)&&(d={originX:"end",originY:"center"});const{x:f,y:_}=this._invertPosition(d.originX,d.originY);return{main:d,fallback:{originX:f,originY:_}}}_getOverlayPosition(){const e=!this._dir||"ltr"==this._dir.value,s=this.position;let d;"above"==s?d={overlayX:"center",overlayY:"bottom"}:"below"==s?d={overlayX:"center",overlayY:"top"}:"before"==s||"left"==s&&e||"right"==s&&!e?d={overlayX:"end",overlayY:"center"}:("after"==s||"right"==s&&e||"left"==s&&!e)&&(d={overlayX:"start",overlayY:"center"});const{x:f,y:_}=this._invertPosition(d.overlayX,d.overlayY);return{main:d,fallback:{overlayX:f,overlayY:_}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),this._ngZone.onMicrotaskEmpty.pipe(Pn(1),Tt(this._destroyed)).subscribe(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e,this._tooltipInstance._markForCheck())}_invertPosition(e,s){return"above"===this.position||"below"===this.position?"top"===s?s="bottom":"bottom"===s&&(s="top"):"end"===e?e="start":"start"===e&&(e="end"),{x:e,y:s}}_updateCurrentPositionClass(e){const{overlayY:s,originX:d,originY:f}=e;let _;if(_="center"===s?this._dir&&"rtl"===this._dir.value?"end"===d?"left":"right":"start"===d?"left":"right":"bottom"===s&&"top"===f?"above":"below",_!==this._currentPosition){const w=this._overlayRef;if(w){const D=`${this._cssClassPrefix}-${hP}-`;w.removePanelClass(D+this._currentPosition),w.addPanelClass(D+_)}this._currentPosition=_}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",e=>{let s;this._setupPointerExitEventsIfNeeded(),void 0!==e.x&&void 0!==e.y&&(s=e),this.show(void 0,s)}]):"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",e=>{var s;const d=null===(s=e.targetTouches)||void 0===s?void 0:s[0],f=d?{x:d.clientX,y:d.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>this.show(void 0,f),500)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;const e=[];if(this._platformSupportsMouseEvents())e.push(["mouseleave",s=>{var d;const f=s.relatedTarget;(!f||null===(d=this._overlayRef)||void 0===d||!d.overlayElement.contains(f))&&this.hide()}],["wheel",s=>this._wheelListener(s)]);else if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const s=()=>{clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};e.push(["touchend",s],["touchcancel",s])}this._addListeners(e),this._passiveListeners.push(...e)}_addListeners(e){e.forEach(([s,d])=>{this._elementRef.nativeElement.addEventListener(s,d,h4)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(e){if(this._isTooltipVisible()){const s=this._document.elementFromPoint(e.clientX,e.clientY),d=this._elementRef.nativeElement;s!==d&&!d.contains(s)&&this.hide()}}_disableNativeGesturesIfNecessary(){const e=this.touchGestures;if("off"!==e){const s=this._elementRef.nativeElement,d=s.style;("on"===e||"INPUT"!==s.nodeName&&"TEXTAREA"!==s.nodeName)&&(d.userSelect=d.msUserSelect=d.webkitUserSelect=d.MozUserSelect="none"),("on"===e||!s.draggable)&&(d.webkitUserDrag="none"),d.touchAction="none",d.webkitTapHighlightColor="transparent"}}}return a.\u0275fac=function(e){xs()},a.\u0275dir=me({type:a,inputs:{position:["matTooltipPosition","position"],positionAtOrigin:["matTooltipPositionAtOrigin","positionAtOrigin"],disabled:["matTooltipDisabled","disabled"],showDelay:["matTooltipShowDelay","showDelay"],hideDelay:["matTooltipHideDelay","hideDelay"],touchGestures:["matTooltipTouchGestures","touchGestures"],message:["matTooltip","message"],tooltipClass:["matTooltipClass","tooltipClass"]}}),a})(),Jy=(()=>{class a extends Aee{constructor(e,s,d,f,_,w,D,k,P,z,W,Z){super(e,s,d,f,_,w,D,k,P,z,W,Z),this._tooltipComponent=eb,this._cssClassPrefix="mat-mdc",this._viewportMargin=8}_addOffset(e){const d=!this._dir||"ltr"==this._dir.value;return"top"===e.originY?e.offsetY=-8:"bottom"===e.originY?e.offsetY=8:"start"===e.originX?e.offsetX=d?-8:8:"end"===e.originX&&(e.offsetX=d?8:-8),e}}return a.\u0275fac=function(e){return new(e||a)(F(ta),F(Be),F(gy),F(Hn),F(Je),F(si),F(x3),F(Wo),F(Qy),F(Ni,8),F(wq,8),F(bt))},a.\u0275dir=me({type:a,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],exportAs:["matTooltip"],features:[Se]}),a})(),V1=(()=>{class a{constructor(e,s){this._changeDetectorRef=e,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new Ue,this._animationsDisabled="NoopAnimations"===s}show(e){clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){clearTimeout(this._showTimeoutId),clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){const s=this._tooltip.nativeElement,d=this._showAnimation,f=this._hideAnimation;if(s.classList.remove(e?f:d),s.classList.add(e?d:f),this._isVisible=e,e&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const _=getComputedStyle(s);("0s"===_.getPropertyValue("animation-duration")||"none"===_.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(s.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}}return a.\u0275fac=function(e){return new(e||a)(F(Zt),F(ki,8))},a.\u0275dir=me({type:a}),a})(),eb=(()=>{class a extends V1{constructor(e,s,d){super(e,d),this._elementRef=s,this._isMultiline=!1,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide"}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>24&&e.width>=200}}return a.\u0275fac=function(e){return new(e||a)(F(Zt),F(Be),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["mat-tooltip-component"]],viewQuery:function(e,s){if(1&e&&ot(vg,7),2&e){let d;Ee(d=Oe())&&(s._tooltip=d.first)}},hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(e,s){1&e&&J("mouseleave",function(f){return s._handleMouseLeave(f)}),2&e&&Ra("zoom",s.isVisible()?1:null)},features:[Se],decls:4,vars:4,consts:[[1,"mdc-tooltip","mdc-tooltip--shown","mat-mdc-tooltip",3,"ngClass","animationend"],["tooltip",""],[1,"mdc-tooltip__surface","mdc-tooltip__surface-animation"]],template:function(e,s){1&e&&(I(0,"div",0,1),J("animationend",function(f){return s._handleAnimationEnd(f)}),I(2,"div",2),Y(3),O()()),2&e&&(at("mdc-tooltip--multiline",s._isMultiline),V("ngClass",s.tooltipClass),N(3),In(s.message))},dependencies:[Ps],styles:['.mdc-tooltip__surface{word-break:var(--mdc-tooltip-word-break, normal);overflow-wrap:anywhere}.mdc-tooltip{position:fixed;display:none;z-index:9}.mdc-tooltip-wrapper--rich{position:relative}.mdc-tooltip--shown,.mdc-tooltip--showing,.mdc-tooltip--hide{display:inline-flex}.mdc-tooltip--shown.mdc-tooltip--rich,.mdc-tooltip--showing.mdc-tooltip--rich,.mdc-tooltip--hide.mdc-tooltip--rich{display:inline-block;left:-320px;position:absolute}.mdc-tooltip__surface{line-height:16px;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center}.mdc-tooltip__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-tooltip__surface::before{border-color:CanvasText}}.mdc-tooltip--rich .mdc-tooltip__surface{align-items:flex-start;display:flex;flex-direction:column;min-height:24px;min-width:40px;max-width:320px;position:relative}.mdc-tooltip--multiline .mdc-tooltip__surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mdc-tooltip__surface,.mdc-tooltip--multiline .mdc-tooltip__surface[dir=rtl]{text-align:right}.mdc-tooltip__surface .mdc-tooltip__title{margin:0 8px}.mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(200px - (2 * 8px));margin:8px;text-align:left}[dir=rtl] .mdc-tooltip__surface .mdc-tooltip__content,.mdc-tooltip__surface .mdc-tooltip__content[dir=rtl]{text-align:right}.mdc-tooltip--rich .mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(320px - (2 * 8px));align-self:stretch}.mdc-tooltip__surface .mdc-tooltip__content-link{text-decoration:none}.mdc-tooltip--rich-actions,.mdc-tooltip__content,.mdc-tooltip__title{z-index:1}.mdc-tooltip__surface-animation{opacity:0;transform:scale(0.8);will-change:transform,opacity}.mdc-tooltip--shown .mdc-tooltip__surface-animation{transform:scale(1);opacity:1}.mdc-tooltip--hide .mdc-tooltip__surface-animation{transform:scale(1)}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{position:absolute;height:24px;width:24px;transform:rotate(35deg) skewY(20deg) scaleX(0.9396926208)}.mdc-tooltip__caret-surface-top .mdc-elevation-overlay,.mdc-tooltip__caret-surface-bottom .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-tooltip__caret-surface-bottom{outline:1px solid rgba(0,0,0,0);z-index:-1}@media screen and (forced-colors: active){.mdc-tooltip__caret-surface-bottom{outline-color:CanvasText}}.mdc-tooltip__surface{background-color:var(--mdc-plain-tooltip-container-color, #fff)}.mdc-tooltip__surface{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__surface{color:var(--mdc-plain-tooltip-supporting-text-color, #000)}.mdc-tooltip__surface{font-family:var(--mdc-plain-tooltip-supporting-text-font, inherit);font-size:var(--mdc-plain-tooltip-supporting-text-size, inherit);font-weight:var(--mdc-plain-tooltip-supporting-text-weight, inherit);letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, inherit)}.mat-mdc-tooltip{position:relative;transform:scale(0)}.mat-mdc-tooltip::before{content:"";top:-8px;right:-8px;bottom:-8px;left:-8px;z-index:-1;position:absolute}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0}),a})(),z1=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[yq],imports:[UC,zr,Iu,Qt,Qt,Nf]}),a})();function fP(a,i){if(1&a&&(I(0,"mat-option",19),Y(1),O()),2&a){const e=i.$implicit;V("value",e),N(1),Re(" ",e," ")}}function Mq(a,i){if(1&a){const e=Pe();I(0,"mat-form-field",16)(1,"mat-select",17),J("selectionChange",function(d){return ae(e),se(q(2)._changePageSize(d.value))}),Q(2,fP,2,2,"mat-option",18),O()()}if(2&a){const e=q(2);V("appearance",e._formFieldAppearance)("color",e.color),N(1),V("value",e.pageSize)("disabled",e.disabled)("aria-labelledby",e._pageSizeLabelId)("panelClass",e.selectConfig.panelClass||"")("disableOptionCentering",e.selectConfig.disableOptionCentering),N(1),V("ngForOf",e._displayedPageSizeOptions)}}function H1(a,i){if(1&a&&(I(0,"div",20),Y(1),O()),2&a){const e=q(2);N(1),In(e.pageSize)}}function p4(a,i){if(1&a&&(I(0,"div",12)(1,"div",13),Y(2),O(),Q(3,Mq,3,8,"mat-form-field",14),Q(4,H1,2,1,"div",15),O()),2&a){const e=q();N(1),jc("id",e._pageSizeLabelId),N(1),Re(" ",e._intl.itemsPerPageLabel," "),N(1),V("ngIf",e._displayedPageSizeOptions.length>1),N(1),V("ngIf",e._displayedPageSizeOptions.length<=1)}}function pP(a,i){if(1&a){const e=Pe();I(0,"button",21),J("click",function(){return ae(e),se(q().firstPage())}),Pr(),I(1,"svg",7),he(2,"path",22),O()()}if(2&a){const e=q();V("matTooltip",e._intl.firstPageLabel)("matTooltipDisabled",e._previousButtonsDisabled())("matTooltipPosition","above")("disabled",e._previousButtonsDisabled()),He("aria-label",e._intl.firstPageLabel)}}function Tq(a,i){if(1&a){const e=Pe();Pr(),Ll(),I(0,"button",23),J("click",function(){return ae(e),se(q().lastPage())}),Pr(),I(1,"svg",7),he(2,"path",24),O()()}if(2&a){const e=q();V("matTooltip",e._intl.lastPageLabel)("matTooltipDisabled",e._nextButtonsDisabled())("matTooltipPosition","above")("disabled",e._nextButtonsDisabled()),He("aria-label",e._intl.lastPageLabel)}}let _g=(()=>{class a{constructor(){this.changes=new Ue,this.itemsPerPageLabel="Items per page:",this.nextPageLabel="Next page",this.previousPageLabel="Previous page",this.firstPageLabel="First page",this.lastPageLabel="Last page",this.getRangeLabel=(e,s,d)=>{if(0==d||0==s)return`0 of ${d}`;const f=e*s;return`${f+1} \u2013 ${f<(d=Math.max(d,0))?Math.min(f+s,d):f+s} of ${d}`}}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const g4={provide:_g,deps:[[new yi,new co,_g]],useFactory:function m4(a){return a||new _g}},Xf=new _e("MAT_PAGINATOR_DEFAULT_OPTIONS"),_4=mc(Sy(class{}));let kq=(()=>{class a extends _4{get pageIndex(){return this._pageIndex}set pageIndex(e){this._pageIndex=Math.max(er(e),0),this._changeDetectorRef.markForCheck()}get length(){return this._length}set length(e){this._length=er(e),this._changeDetectorRef.markForCheck()}get pageSize(){return this._pageSize}set pageSize(e){this._pageSize=Math.max(er(e),0),this._updateDisplayedPageSizeOptions()}get pageSizeOptions(){return this._pageSizeOptions}set pageSizeOptions(e){this._pageSizeOptions=(e||[]).map(s=>er(s)),this._updateDisplayedPageSizeOptions()}get hidePageSize(){return this._hidePageSize}set hidePageSize(e){this._hidePageSize=We(e)}get showFirstLastButtons(){return this._showFirstLastButtons}set showFirstLastButtons(e){this._showFirstLastButtons=We(e)}constructor(e,s,d){if(super(),this._intl=e,this._changeDetectorRef=s,this._pageIndex=0,this._length=0,this._pageSizeOptions=[],this._hidePageSize=!1,this._showFirstLastButtons=!1,this.selectConfig={},this.page=new ye,this._intlChanges=e.changes.subscribe(()=>this._changeDetectorRef.markForCheck()),d){const{pageSize:f,pageSizeOptions:_,hidePageSize:w,showFirstLastButtons:D}=d;null!=f&&(this._pageSize=f),null!=_&&(this._pageSizeOptions=_),null!=w&&(this._hidePageSize=w),null!=D&&(this._showFirstLastButtons=D)}}ngOnInit(){this._initialized=!0,this._updateDisplayedPageSizeOptions(),this._markInitialized()}ngOnDestroy(){this._intlChanges.unsubscribe()}nextPage(){if(!this.hasNextPage())return;const e=this.pageIndex;this.pageIndex=this.pageIndex+1,this._emitPageEvent(e)}previousPage(){if(!this.hasPreviousPage())return;const e=this.pageIndex;this.pageIndex=this.pageIndex-1,this._emitPageEvent(e)}firstPage(){if(!this.hasPreviousPage())return;const e=this.pageIndex;this.pageIndex=0,this._emitPageEvent(e)}lastPage(){if(!this.hasNextPage())return;const e=this.pageIndex;this.pageIndex=this.getNumberOfPages()-1,this._emitPageEvent(e)}hasPreviousPage(){return this.pageIndex>=1&&0!=this.pageSize}hasNextPage(){const e=this.getNumberOfPages()-1;return this.pageIndexe-s),this._changeDetectorRef.markForCheck())}_emitPageEvent(e){this.page.emit({previousPageIndex:e,pageIndex:this.pageIndex,pageSize:this.pageSize,length:this.length})}}return a.\u0275fac=function(e){xs()},a.\u0275dir=me({type:a,inputs:{color:"color",pageIndex:"pageIndex",length:"length",pageSize:"pageSize",pageSizeOptions:"pageSizeOptions",hidePageSize:"hidePageSize",showFirstLastButtons:"showFirstLastButtons",selectConfig:"selectConfig"},outputs:{page:"page"},features:[Se]}),a})(),Eq=0,tb=(()=>{class a extends kq{constructor(e,s,d){super(e,s,d),this._pageSizeLabelId="mat-paginator-page-size-label-"+Eq++,this._formFieldAppearance=(null==d?void 0:d.formFieldAppearance)||"outline"}}return a.\u0275fac=function(e){return new(e||a)(F(_g),F(Zt),F(Xf,8))},a.\u0275cmp=we({type:a,selectors:[["mat-paginator"]],hostAttrs:["role","group",1,"mat-mdc-paginator"],inputs:{disabled:"disabled"},exportAs:["matPaginator"],features:[Se],decls:14,vars:14,consts:[[1,"mat-mdc-paginator-outer-container"],[1,"mat-mdc-paginator-container"],["class","mat-mdc-paginator-page-size",4,"ngIf"],[1,"mat-mdc-paginator-range-actions"],["aria-live","polite",1,"mat-mdc-paginator-range-label"],["mat-icon-button","","type","button","class","mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click",4,"ngIf"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-previous",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["viewBox","0 0 24 24","focusable","false",1,"mat-mdc-paginator-icon"],["d","M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-next",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"],["mat-icon-button","","type","button","class","mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click",4,"ngIf"],[1,"mat-mdc-paginator-page-size"],[1,"mat-mdc-paginator-page-size-label",3,"id"],["class","mat-mdc-paginator-page-size-select",3,"appearance","color",4,"ngIf"],["class","mat-mdc-paginator-page-size-value",4,"ngIf"],[1,"mat-mdc-paginator-page-size-select",3,"appearance","color"],[3,"value","disabled","aria-labelledby","panelClass","disableOptionCentering","selectionChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[1,"mat-mdc-paginator-page-size-value"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"]],template:function(e,s){1&e&&(I(0,"div",0)(1,"div",1),Q(2,p4,5,4,"div",2),I(3,"div",3)(4,"div",4),Y(5),O(),Q(6,pP,3,5,"button",5),I(7,"button",6),J("click",function(){return s.previousPage()}),Pr(),I(8,"svg",7),he(9,"path",8),O()(),Ll(),I(10,"button",9),J("click",function(){return s.nextPage()}),Pr(),I(11,"svg",7),he(12,"path",10),O()(),Q(13,Tq,3,5,"button",11),O()()()),2&e&&(N(2),V("ngIf",!s.hidePageSize),N(3),Re(" ",s._intl.getRangeLabel(s.pageIndex,s.pageSize,s.length)," "),N(1),V("ngIf",s.showFirstLastButtons),N(1),V("matTooltip",s._intl.previousPageLabel)("matTooltipDisabled",s._previousButtonsDisabled())("matTooltipPosition","above")("disabled",s._previousButtonsDisabled()),He("aria-label",s._intl.previousPageLabel),N(3),V("matTooltip",s._intl.nextPageLabel)("matTooltipDisabled",s._nextButtonsDisabled())("matTooltipPosition","above")("disabled",s._nextButtonsDisabled()),He("aria-label",s._intl.nextPageLabel),N(3),V("ngIf",s.showFirstLastButtons))},dependencies:[oi,zt,yc,ei,ya,$i,Jy],styles:[".mat-mdc-paginator{display:block}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap-reverse;width:100%}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:84px}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}.cdk-high-contrast-active .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon,.cdk-high-contrast-active .mat-mdc-paginator-icon{fill:currentColor;fill:CanvasText}.cdk-high-contrast-active .mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),a})(),mP=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[g4],imports:[zr,Iy,u4,z1]}),a})();const gP=["mat-sort-header",""];function yg(a,i){if(1&a){const e=Pe();I(0,"div",3),J("@arrowPosition.start",function(){return ae(e),se(q()._disableViewStateAnimation=!0)})("@arrowPosition.done",function(){return ae(e),se(q()._disableViewStateAnimation=!1)}),he(1,"div",4),I(2,"div",5),he(3,"div",6)(4,"div",7)(5,"div",8),O()()}if(2&a){const e=q();V("@arrowOpacity",e._getArrowViewState())("@arrowPosition",e._getArrowViewState())("@allowChildren",e._getArrowDirectionState()),N(2),V("@indicator",e._getArrowDirectionState()),N(1),V("@leftPointer",e._getArrowDirectionState()),N(1),V("@rightPointer",e._getArrowDirectionState())}}const Iq=["*"],Cd=new _e("MAT_SORT_DEFAULT_OPTIONS"),Lq=Sy(mc(class{}));let bg=(()=>{class a extends Lq{get direction(){return this._direction}set direction(e){this._direction=e}get disableClear(){return this._disableClear}set disableClear(e){this._disableClear=We(e)}constructor(e){super(),this._defaultOptions=e,this.sortables=new Map,this._stateChanges=new Ue,this.start="asc",this._direction="",this.sortChange=new ye}register(e){this.sortables.set(e.id,e)}deregister(e){this.sortables.delete(e.id)}sort(e){this.active!=e.id?(this.active=e.id,this.direction=e.start?e.start:this.start):this.direction=this.getNextSortDirection(e),this.sortChange.emit({active:this.active,direction:this.direction})}getNextSortDirection(e){var s,d,f;if(!e)return"";const _=null!==(s=null!==(d=null==e?void 0:e.disableClear)&&void 0!==d?d:this.disableClear)&&void 0!==s?s:!(null===(f=this._defaultOptions)||void 0===f||!f.disableClear);let w=function Fq(a,i){let e=["asc","desc"];return"desc"==a&&e.reverse(),i||e.push(""),e}(e.start||this.start,_),D=w.indexOf(this.direction)+1;return D>=w.length&&(D=0),w[D]}ngOnInit(){this._markInitialized()}ngOnChanges(){this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}}return a.\u0275fac=function(e){return new(e||a)(F(Cd,8))},a.\u0275dir=me({type:a,selectors:[["","matSort",""]],hostAttrs:[1,"mat-sort"],inputs:{disabled:["matSortDisabled","disabled"],active:["matSortActive","active"],start:["matSortStart","start"],direction:["matSortDirection","direction"],disableClear:["matSortDisableClear","disableClear"]},outputs:{sortChange:"matSortChange"},exportAs:["matSort"],features:[Se,$n]}),a})();const $u=pW.ENTERING+" "+fW.STANDARD_CURVE,r={indicator:tr("indicator",[Bn("active-asc, asc",ft({transform:"translateY(0px)"})),Bn("active-desc, desc",ft({transform:"translateY(10px)"})),Mn("active-asc <=> active-desc",Tn($u))]),leftPointer:tr("leftPointer",[Bn("active-asc, asc",ft({transform:"rotate(-45deg)"})),Bn("active-desc, desc",ft({transform:"rotate(45deg)"})),Mn("active-asc <=> active-desc",Tn($u))]),rightPointer:tr("rightPointer",[Bn("active-asc, asc",ft({transform:"rotate(45deg)"})),Bn("active-desc, desc",ft({transform:"rotate(-45deg)"})),Mn("active-asc <=> active-desc",Tn($u))]),arrowOpacity:tr("arrowOpacity",[Bn("desc-to-active, asc-to-active, active",ft({opacity:1})),Bn("desc-to-hint, asc-to-hint, hint",ft({opacity:.54})),Bn("hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void",ft({opacity:0})),Mn("* => asc, * => desc, * => active, * => hint, * => void",Tn("0ms")),Mn("* <=> *",Tn($u))]),arrowPosition:tr("arrowPosition",[Mn("* => desc-to-hint, * => desc-to-active",Tn($u,yd([ft({transform:"translateY(-25%)"}),ft({transform:"translateY(0)"})]))),Mn("* => hint-to-desc, * => active-to-desc",Tn($u,yd([ft({transform:"translateY(0)"}),ft({transform:"translateY(25%)"})]))),Mn("* => asc-to-hint, * => asc-to-active",Tn($u,yd([ft({transform:"translateY(25%)"}),ft({transform:"translateY(0)"})]))),Mn("* => hint-to-asc, * => active-to-asc",Tn($u,yd([ft({transform:"translateY(0)"}),ft({transform:"translateY(-25%)"})]))),Bn("desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active",ft({transform:"translateY(0)"})),Bn("hint-to-desc, active-to-desc, desc",ft({transform:"translateY(-25%)"})),Bn("hint-to-asc, active-to-asc, asc",ft({transform:"translateY(25%)"}))]),allowChildren:tr("allowChildren",[Mn("* <=> *",[Ay("@*",XC(),{optional:!0})])])};let n=(()=>{class a{constructor(){this.changes=new Ue}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();const o={provide:n,deps:[[new yi,new co,n]],useFactory:function t(a){return a||new n}},l=mc(class{});let c=(()=>{class a extends l{get sortActionDescription(){return this._sortActionDescription}set sortActionDescription(e){this._updateSortActionDescription(e)}get disableClear(){return this._disableClear}set disableClear(e){this._disableClear=We(e)}constructor(e,s,d,f,_,w,D,k){super(),this._intl=e,this._changeDetectorRef=s,this._sort=d,this._columnDef=f,this._focusMonitor=_,this._elementRef=w,this._ariaDescriber=D,this._showIndicatorHint=!1,this._viewState={},this._arrowDirection="",this._disableViewStateAnimation=!1,this.arrowPosition="after",this._sortActionDescription="Sort",null!=k&&k.arrowPosition&&(this.arrowPosition=null==k?void 0:k.arrowPosition),this._handleStateChanges()}ngOnInit(){!this.id&&this._columnDef&&(this.id=this._columnDef.name),this._updateArrowDirection(),this._setAnimationTransitionState({toState:this._isSorted()?"active":this._arrowDirection}),this._sort.register(this),this._sortButton=this._elementRef.nativeElement.querySelector(".mat-sort-header-container"),this._updateSortActionDescription(this._sortActionDescription)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{const s=!!e;s!==this._showIndicatorHint&&(this._setIndicatorHintVisible(s),this._changeDetectorRef.markForCheck())})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._sort.deregister(this),this._rerenderSubscription.unsubscribe()}_setIndicatorHintVisible(e){this._isDisabled()&&e||(this._showIndicatorHint=e,this._isSorted()||(this._updateArrowDirection(),this._setAnimationTransitionState(this._showIndicatorHint?{fromState:this._arrowDirection,toState:"hint"}:{fromState:"hint",toState:this._arrowDirection})))}_setAnimationTransitionState(e){this._viewState=e||{},this._disableViewStateAnimation&&(this._viewState={toState:e.toState})}_toggleOnInteraction(){this._sort.sort(this),("hint"===this._viewState.toState||"active"===this._viewState.toState)&&(this._disableViewStateAnimation=!0)}_handleClick(){this._isDisabled()||this._sort.sort(this)}_handleKeydown(e){!this._isDisabled()&&(32===e.keyCode||13===e.keyCode)&&(e.preventDefault(),this._toggleOnInteraction())}_isSorted(){return this._sort.active==this.id&&("asc"===this._sort.direction||"desc"===this._sort.direction)}_getArrowDirectionState(){return`${this._isSorted()?"active-":""}${this._arrowDirection}`}_getArrowViewState(){const e=this._viewState.fromState;return(e?`${e}-to-`:"")+this._viewState.toState}_updateArrowDirection(){this._arrowDirection=this._isSorted()?this._sort.direction:this.start||this._sort.start}_isDisabled(){return this._sort.disabled||this.disabled}_getAriaSortAttribute(){return this._isSorted()?"asc"==this._sort.direction?"ascending":"descending":"none"}_renderArrow(){return!this._isDisabled()||this._isSorted()}_updateSortActionDescription(e){var s,d;this._sortButton&&(null===(s=this._ariaDescriber)||void 0===s||s.removeDescription(this._sortButton,this._sortActionDescription),null===(d=this._ariaDescriber)||void 0===d||d.describe(this._sortButton,e)),this._sortActionDescription=e}_handleStateChanges(){this._rerenderSubscription=Mi(this._sort.sortChange,this._sort._stateChanges,this._intl.changes).subscribe(()=>{this._isSorted()&&(this._updateArrowDirection(),("hint"===this._viewState.toState||"active"===this._viewState.toState)&&(this._disableViewStateAnimation=!0),this._setAnimationTransitionState({fromState:this._arrowDirection,toState:"active"}),this._showIndicatorHint=!1),!this._isSorted()&&this._viewState&&"active"===this._viewState.toState&&(this._disableViewStateAnimation=!1,this._setAnimationTransitionState({fromState:"active",toState:this._arrowDirection})),this._changeDetectorRef.markForCheck()})}}return a.\u0275fac=function(e){return new(e||a)(F(n),F(Zt),F(bg,8),F("MAT_SORT_HEADER_COLUMN_DEF",8),F(Wo),F(Be),F(x3,8),F(Cd,8))},a.\u0275cmp=we({type:a,selectors:[["","mat-sort-header",""]],hostAttrs:[1,"mat-sort-header"],hostVars:3,hostBindings:function(e,s){1&e&&J("click",function(){return s._handleClick()})("keydown",function(f){return s._handleKeydown(f)})("mouseenter",function(){return s._setIndicatorHintVisible(!0)})("mouseleave",function(){return s._setIndicatorHintVisible(!1)}),2&e&&(He("aria-sort",s._getAriaSortAttribute()),at("mat-sort-header-disabled",s._isDisabled()))},inputs:{disabled:"disabled",id:["mat-sort-header","id"],arrowPosition:"arrowPosition",start:"start",sortActionDescription:"sortActionDescription",disableClear:"disableClear"},exportAs:["matSortHeader"],features:[Se],attrs:gP,ngContentSelectors:Iq,decls:4,vars:7,consts:[[1,"mat-sort-header-container","mat-focus-indicator"],[1,"mat-sort-header-content"],["class","mat-sort-header-arrow",4,"ngIf"],[1,"mat-sort-header-arrow"],[1,"mat-sort-header-stem"],[1,"mat-sort-header-indicator"],[1,"mat-sort-header-pointer-left"],[1,"mat-sort-header-pointer-right"],[1,"mat-sort-header-pointer-middle"]],template:function(e,s){1&e&&(Fn(),I(0,"div",0)(1,"div",1),ht(2),O(),Q(3,yg,6,6,"div",2),O()),2&e&&(at("mat-sort-header-sorted",s._isSorted())("mat-sort-header-position-before","before"===s.arrowPosition),He("tabindex",s._isDisabled()?null:0)("role",s._isDisabled()?null:"button"),N(3),V("ngIf",s._renderArrow()))},dependencies:[zt],styles:[".mat-sort-header-container{display:flex;cursor:pointer;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-container::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-sort-header-content{text-align:center;display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.cdk-high-contrast-active .mat-sort-header-stem{width:0;border-left:solid 2px}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.cdk-high-contrast-active .mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.cdk-high-contrast-active .mat-sort-header-pointer-left,.cdk-high-contrast-active .mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}"],encapsulation:2,data:{animation:[r.indicator,r.leftPointer,r.rightPointer,r.arrowOpacity,r.arrowPosition,r.allowChildren]},changeDetection:0}),a})(),u=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[o],imports:[zr,Qt]}),a})();const p=[[["caption"]],[["colgroup"],["col"]]],m=["caption","colgroup, col"];function y(a){return class extends a{get sticky(){return this._sticky}set sticky(i){const e=this._sticky;this._sticky=We(i),this._hasStickyChanged=e!==this._sticky}hasStickyChanged(){const i=this._hasStickyChanged;return this._hasStickyChanged=!1,i}resetStickyChanged(){this._hasStickyChanged=!1}constructor(...i){super(...i),this._sticky=!1,this._hasStickyChanged=!1}}}const b=new _e("CDK_TABLE");let C=(()=>{class a{constructor(e){this.template=e}}return a.\u0275fac=function(e){return new(e||a)(F(hi))},a.\u0275dir=me({type:a,selectors:[["","cdkCellDef",""]]}),a})(),S=(()=>{class a{constructor(e){this.template=e}}return a.\u0275fac=function(e){return new(e||a)(F(hi))},a.\u0275dir=me({type:a,selectors:[["","cdkHeaderCellDef",""]]}),a})(),M=(()=>{class a{constructor(e){this.template=e}}return a.\u0275fac=function(e){return new(e||a)(F(hi))},a.\u0275dir=me({type:a,selectors:[["","cdkFooterCellDef",""]]}),a})();class T{}const A=y(T);let E=(()=>{class a extends A{get name(){return this._name}set name(e){this._setNameInput(e)}get stickyEnd(){return this._stickyEnd}set stickyEnd(e){const s=this._stickyEnd;this._stickyEnd=We(e),this._hasStickyChanged=s!==this._stickyEnd}constructor(e){super(),this._table=e,this._stickyEnd=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}}return a.\u0275fac=function(e){return new(e||a)(F(b,8))},a.\u0275dir=me({type:a,selectors:[["","cdkColumnDef",""]],contentQueries:function(e,s,d){if(1&e&&(hn(d,C,5),hn(d,S,5),hn(d,M,5)),2&e){let f;Ee(f=Oe())&&(s.cell=f.first),Ee(f=Oe())&&(s.headerCell=f.first),Ee(f=Oe())&&(s.footerCell=f.first)}},inputs:{sticky:"sticky",name:["cdkColumnDef","name"],stickyEnd:"stickyEnd"},features:[et([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:a}]),Se]}),a})();class L{constructor(i,e){e.nativeElement.classList.add(...i._columnCssClassName)}}let R=(()=>{class a extends L{constructor(e,s){super(e,s)}}return a.\u0275fac=function(e){return new(e||a)(F(E),F(Be))},a.\u0275dir=me({type:a,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],features:[Se]}),a})(),H=(()=>{class a extends L{constructor(e,s){var d;if(super(e,s),1===(null===(d=e._table)||void 0===d?void 0:d._elementRef.nativeElement.nodeType)){const f=e._table._elementRef.nativeElement.getAttribute("role");s.nativeElement.setAttribute("role","grid"===f||"treegrid"===f?"gridcell":"cell")}}}return a.\u0275fac=function(e){return new(e||a)(F(E),F(Be))},a.\u0275dir=me({type:a,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],features:[Se]}),a})();class G{constructor(){this.tasks=[],this.endTasks=[]}}const j=new _e("_COALESCED_STYLE_SCHEDULER");let $=(()=>{class a{constructor(e){this._ngZone=e,this._currentSchedule=null,this._destroyed=new Ue}schedule(e){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(e)}scheduleEnd(e){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(e)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new G,this._getScheduleObservable().pipe(Tt(this._destroyed)).subscribe(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){const e=this._currentSchedule;this._currentSchedule=new G;for(const s of e.tasks)s();for(const s of e.endTasks)s()}this._currentSchedule=null}))}_getScheduleObservable(){return this._ngZone.isStable?Wi(Promise.resolve(void 0)):this._ngZone.onStable.pipe(Pn(1))}}return a.\u0275fac=function(e){return new(e||a)(oe(Je))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),K=(()=>{class a{constructor(e,s){this.template=e,this._differs=s}ngOnChanges(e){if(!this._columnsDiffer){const s=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(s).create(),this._columnsDiffer.diff(s)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof ie?e.headerCell.template:this instanceof ve?e.footerCell.template:e.cell.template}}return a.\u0275fac=function(e){return new(e||a)(F(hi),F(Qc))},a.\u0275dir=me({type:a,features:[$n]}),a})();class ee extends K{}const ne=y(ee);let ie=(()=>{class a extends ne{constructor(e,s,d){super(e,s),this._table=d}ngOnChanges(e){super.ngOnChanges(e)}}return a.\u0275fac=function(e){return new(e||a)(F(hi),F(Qc),F(b,8))},a.\u0275dir=me({type:a,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:["cdkHeaderRowDef","columns"],sticky:["cdkHeaderRowDefSticky","sticky"]},features:[Se,$n]}),a})();class de extends K{}const ce=y(de);let ve=(()=>{class a extends ce{constructor(e,s,d){super(e,s),this._table=d}ngOnChanges(e){super.ngOnChanges(e)}}return a.\u0275fac=function(e){return new(e||a)(F(hi),F(Qc),F(b,8))},a.\u0275dir=me({type:a,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:["cdkFooterRowDef","columns"],sticky:["cdkFooterRowDefSticky","sticky"]},features:[Se,$n]}),a})(),De=(()=>{class a extends K{constructor(e,s,d){super(e,s),this._table=d}}return a.\u0275fac=function(e){return new(e||a)(F(hi),F(Qc),F(b,8))},a.\u0275dir=me({type:a,selectors:[["","cdkRowDef",""]],inputs:{columns:["cdkRowDefColumns","columns"],when:["cdkRowDefWhen","when"]},features:[Se]}),a})(),Ae=(()=>{class a{constructor(e){this._viewContainer=e,a.mostRecentCellOutlet=this}ngOnDestroy(){a.mostRecentCellOutlet===this&&(a.mostRecentCellOutlet=null)}}return a.mostRecentCellOutlet=null,a.\u0275fac=function(e){return new(e||a)(F(Hn))},a.\u0275dir=me({type:a,selectors:[["","cdkCellOutlet",""]]}),a})(),Ge=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275cmp=we({type:a,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,s){1&e&&mo(0,0)},dependencies:[Ae],encapsulation:2}),a})(),nt=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275cmp=we({type:a,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,s){1&e&&mo(0,0)},dependencies:[Ae],encapsulation:2}),a})(),Lt=(()=>{class a{constructor(e){this.templateRef=e,this._contentClassName="cdk-no-data-row"}}return a.\u0275fac=function(e){return new(e||a)(F(hi))},a.\u0275dir=me({type:a,selectors:[["ng-template","cdkNoDataRow",""]]}),a})();const fn=["top","bottom","left","right"];class Ht{constructor(i,e,s,d,f=!0,_=!0,w){this._isNativeHtmlTable=i,this._stickCellCss=e,this.direction=s,this._coalescedStyleScheduler=d,this._isBrowser=f,this._needsPositionStickyOnElement=_,this._positionListener=w,this._cachedCellWidths=[],this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(i,e){const s=[];for(const d of i)if(d.nodeType===d.ELEMENT_NODE){s.push(d);for(let f=0;f{for(const d of s)this._removeStickyStyle(d,e)})}updateStickyColumns(i,e,s,d=!0){if(!i.length||!this._isBrowser||!e.some(W=>W)&&!s.some(W=>W))return void(this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]})));const f=i[0],_=f.children.length,w=this._getCellWidths(f,d),D=this._getStickyStartColumnPositions(w,e),k=this._getStickyEndColumnPositions(w,s),P=e.lastIndexOf(!0),z=s.indexOf(!0);this._coalescedStyleScheduler.schedule(()=>{const W="rtl"===this.direction,Z=W?"right":"left",te=W?"left":"right";for(const re of i)for(let fe=0;fe<_;fe++){const pe=re.children[fe];e[fe]&&this._addStickyStyle(pe,Z,D[fe],fe===P),s[fe]&&this._addStickyStyle(pe,te,k[fe],fe===z)}this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:-1===P?[]:w.slice(0,P+1).map((re,fe)=>e[fe]?re:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:-1===z?[]:w.slice(z).map((re,fe)=>s[fe+z]?re:null).reverse()}))})}stickRows(i,e,s){if(!this._isBrowser)return;const d="bottom"===s?i.slice().reverse():i,f="bottom"===s?e.slice().reverse():e,_=[],w=[],D=[];for(let P=0,z=0;P{for(let W=0;W{e.some(d=>!d)?this._removeStickyStyle(s,["bottom"]):this._addStickyStyle(s,"bottom",0,!1)})}_removeStickyStyle(i,e){for(const d of e)i.style[d]="",i.classList.remove(this._borderCellCss[d]);fn.some(d=>-1===e.indexOf(d)&&i.style[d])?i.style.zIndex=this._getCalculatedZIndex(i):(i.style.zIndex="",this._needsPositionStickyOnElement&&(i.style.position=""),i.classList.remove(this._stickCellCss))}_addStickyStyle(i,e,s,d){i.classList.add(this._stickCellCss),d&&i.classList.add(this._borderCellCss[e]),i.style[e]=`${s}px`,i.style.zIndex=this._getCalculatedZIndex(i),this._needsPositionStickyOnElement&&(i.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(i){const e={top:100,bottom:10,left:1,right:1};let s=0;for(const d of fn)i.style[d]&&(s+=e[d]);return s?`${s}`:""}_getCellWidths(i,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;const s=[],d=i.children;for(let f=0;f0;f--)e[f]&&(s[f]=d,d+=i[f]);return s}}const Si=new _e("CDK_SPL");let Us=(()=>{class a{constructor(e,s){this.viewContainer=e,this.elementRef=s}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(Be))},a.\u0275dir=me({type:a,selectors:[["","rowOutlet",""]]}),a})(),ba=(()=>{class a{constructor(e,s){this.viewContainer=e,this.elementRef=s}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(Be))},a.\u0275dir=me({type:a,selectors:[["","headerRowOutlet",""]]}),a})(),Zf=(()=>{class a{constructor(e,s){this.viewContainer=e,this.elementRef=s}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(Be))},a.\u0275dir=me({type:a,selectors:[["","footerRowOutlet",""]]}),a})(),Dl=(()=>{class a{constructor(e,s){this.viewContainer=e,this.elementRef=s}}return a.\u0275fac=function(e){return new(e||a)(F(Hn),F(Be))},a.\u0275dir=me({type:a,selectors:[["","noDataRowOutlet",""]]}),a})(),b4=(()=>{class a{get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=We(e),this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(e){this._fixedLayout=We(e),this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(e,s,d,f,_,w,D,k,P,z,W,Z){this._differs=e,this._changeDetectorRef=s,this._elementRef=d,this._dir=_,this._platform=D,this._viewRepeater=k,this._coalescedStyleScheduler=P,this._viewportRuler=z,this._stickyPositioningListener=W,this._ngZone=Z,this._onDestroy=new Ue,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new ye,this.viewChange=new Qr({start:0,end:Number.MAX_VALUE}),f||this._elementRef.nativeElement.setAttribute("role","table"),this._document=w,this._isNativeHtmlTable="TABLE"===this._elementRef.nativeElement.nodeName}ngOnInit(){this._setupStickyStyler(),this._isNativeHtmlTable&&this._applyNativeTableSections(),this._dataDiffer=this._differs.find([]).create((e,s)=>this.trackBy?this.trackBy(s.dataIndex,s.data):s),this._viewportRuler.change().pipe(Tt(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentChecked(){this._cacheRowDefs(),this._cacheColumnDefs();const s=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||s,this._forceRecalculateCellWidths=s,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}ngOnDestroy(){[this._rowOutlet.viewContainer,this._headerRowOutlet.viewContainer,this._footerRowOutlet.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),nP(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();const e=this._dataDiffer.diff(this._renderRows);if(!e)return this._updateNoDataRow(),void this.contentChanged.next();const s=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,s,(d,f,_)=>this._getEmbeddedViewArgs(d.item,_),d=>d.item.data,d=>{1===d.operation&&d.context&&this._renderCellTemplateForItem(d.record.item.rowDef,d.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(d=>{s.get(d.currentIndex).context.$implicit=d.item.data}),this._updateNoDataRow(),this._ngZone&&Je.isInAngularZone()?this._ngZone.onStable.pipe(Pn(1),Tt(this._onDestroy)).subscribe(()=>{this.updateStickyColumnStyles()}):this.updateStickyColumnStyles(),this.contentChanged.next()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){const e=this._getRenderedRows(this._headerRowOutlet),d=this._elementRef.nativeElement.querySelector("thead");d&&(d.style.display=e.length?"":"none");const f=this._headerRowDefs.map(_=>_.sticky);this._stickyStyler.clearStickyPositioning(e,["top"]),this._stickyStyler.stickRows(e,f,"top"),this._headerRowDefs.forEach(_=>_.resetStickyChanged())}updateStickyFooterRowStyles(){const e=this._getRenderedRows(this._footerRowOutlet),d=this._elementRef.nativeElement.querySelector("tfoot");d&&(d.style.display=e.length?"":"none");const f=this._footerRowDefs.map(_=>_.sticky);this._stickyStyler.clearStickyPositioning(e,["bottom"]),this._stickyStyler.stickRows(e,f,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,f),this._footerRowDefs.forEach(_=>_.resetStickyChanged())}updateStickyColumnStyles(){const e=this._getRenderedRows(this._headerRowOutlet),s=this._getRenderedRows(this._rowOutlet),d=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...s,...d],["left","right"]),this._stickyColumnStylesNeedReset=!1),e.forEach((f,_)=>{this._addStickyColumnStyles([f],this._headerRowDefs[_])}),this._rowDefs.forEach(f=>{const _=[];for(let w=0;w{this._addStickyColumnStyles([f],this._footerRowDefs[_])}),Array.from(this._columnDefsByName.values()).forEach(f=>f.resetStickyChanged())}_getAllRenderRows(){const e=[],s=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let d=0;d{const w=d&&d.has(_)?d.get(_):[];if(w.length){const D=w.shift();return D.dataIndex=s,D}return{data:e,rowDef:_,dataIndex:s}})}_cacheColumnDefs(){this._columnDefsByName.clear(),w4(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(s=>{this._columnDefsByName.has(s.name),this._columnDefsByName.set(s.name,s)})}_cacheRowDefs(){this._headerRowDefs=w4(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=w4(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=w4(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);const e=this._rowDefs.filter(s=>!s.when);this._defaultRowDef=e[0]}_renderUpdatedColumns(){const e=(_,w)=>_||!!w.getColumnsDiff(),s=this._rowDefs.reduce(e,!1);s&&this._forceRenderDataRows();const d=this._headerRowDefs.reduce(e,!1);d&&this._forceRenderHeaderRows();const f=this._footerRowDefs.reduce(e,!1);return f&&this._forceRenderFooterRows(),s||d||f}_switchDataSource(e){this._data=[],nP(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;nP(this.dataSource)?e=this.dataSource.connect(this):function h(a){return!!a&&(a instanceof Gn||Wt(a.lift)&&Wt(a.subscribe))}(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=je(this.dataSource)),this._renderChangeSubscription=e.pipe(Tt(this._onDestroy)).subscribe(s=>{this._data=s||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,s)=>this._renderRow(this._headerRowOutlet,e,s)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,s)=>this._renderRow(this._footerRowOutlet,e,s)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,s){const d=Array.from(s.columns||[]).map(w=>this._columnDefsByName.get(w)),f=d.map(w=>w.sticky),_=d.map(w=>w.stickyEnd);this._stickyStyler.updateStickyColumns(e,f,_,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){const s=[];for(let d=0;d!f.when||f.when(s,e));else{let f=this._rowDefs.find(_=>_.when&&_.when(s,e))||this._defaultRowDef;f&&d.push(f)}return d}_getEmbeddedViewArgs(e,s){return{templateRef:e.rowDef.template,context:{$implicit:e.data},index:s}}_renderRow(e,s,d,f={}){const _=e.viewContainer.createEmbeddedView(s.template,f,d);return this._renderCellTemplateForItem(s,f),_}_renderCellTemplateForItem(e,s){for(let d of this._getCellTemplates(e))Ae.mostRecentCellOutlet&&Ae.mostRecentCellOutlet._viewContainer.createEmbeddedView(d,s);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){const e=this._rowOutlet.viewContainer;for(let s=0,d=e.length;s{const d=this._columnDefsByName.get(s);return e.extractCellTemplate(d)}):[]}_applyNativeTableSections(){const e=this._document.createDocumentFragment(),s=[{tag:"thead",outlets:[this._headerRowOutlet]},{tag:"tbody",outlets:[this._rowOutlet,this._noDataRowOutlet]},{tag:"tfoot",outlets:[this._footerRowOutlet]}];for(const d of s){const f=this._document.createElement(d.tag);f.setAttribute("role","rowgroup");for(const _ of d.outlets)f.appendChild(_.elementRef.nativeElement);e.appendChild(f)}this._elementRef.nativeElement.appendChild(e)}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){const e=(s,d)=>s||d.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){this._stickyStyler=new Ht(this._isNativeHtmlTable,this.stickyCssClass,this._dir?this._dir.value:"ltr",this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:je()).pipe(Tt(this._onDestroy)).subscribe(s=>{this._stickyStyler.direction=s,this.updateStickyColumnStyles()})}_getOwnDefs(e){return e.filter(s=>!s._table||s._table===this)}_updateNoDataRow(){const e=this._customNoDataRow||this._noDataRow;if(!e)return;const s=0===this._rowOutlet.viewContainer.length;if(s===this._isShowingNoDataRow)return;const d=this._noDataRowOutlet.viewContainer;if(s){const f=d.createEmbeddedView(e.templateRef),_=f.rootNodes[0];1===f.rootNodes.length&&(null==_?void 0:_.nodeType)===this._document.ELEMENT_NODE&&(_.setAttribute("role","row"),_.classList.add(e._contentClassName))}else d.clear();this._isShowingNoDataRow=s}}return a.\u0275fac=function(e){return new(e||a)(F(Qc),F(Zt),F(Be),hs("role"),F(Ni,8),F(bt),F(si),F(Ky),F(j),F(hc),F(Si,12),F(Je,8))},a.\u0275cmp=we({type:a,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(e,s,d){if(1&e&&(hn(d,Lt,5),hn(d,E,5),hn(d,De,5),hn(d,ie,5),hn(d,ve,5)),2&e){let f;Ee(f=Oe())&&(s._noDataRow=f.first),Ee(f=Oe())&&(s._contentColumnDefs=f),Ee(f=Oe())&&(s._contentRowDefs=f),Ee(f=Oe())&&(s._contentHeaderRowDefs=f),Ee(f=Oe())&&(s._contentFooterRowDefs=f)}},viewQuery:function(e,s){if(1&e&&(ot(Us,7),ot(ba,7),ot(Zf,7),ot(Dl,7)),2&e){let d;Ee(d=Oe())&&(s._rowOutlet=d.first),Ee(d=Oe())&&(s._headerRowOutlet=d.first),Ee(d=Oe())&&(s._footerRowOutlet=d.first),Ee(d=Oe())&&(s._noDataRowOutlet=d.first)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(e,s){2&e&&at("cdk-table-fixed-layout",s.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:"multiTemplateDataRows",fixedLayout:"fixedLayout"},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],features:[et([{provide:b,useExisting:a},{provide:Ky,useClass:iP},{provide:j,useClass:$},{provide:Si,useValue:null}])],ngContentSelectors:m,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,s){1&e&&(Fn(p),ht(0),ht(1,1),mo(2,0)(3,1)(4,2)(5,3))},dependencies:[Us,ba,Zf,Dl],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2}),a})();function w4(a,i){return a.concat(Array.from(i))}let Zne=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Zk]}),a})();const Kne=[[["caption"]],[["colgroup"],["col"]]],Qne=["caption","colgroup, col"];let Bq=(()=>{class a extends b4{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}ngOnInit(){super.ngOnInit(),this._isNativeHtmlTable&&this._elementRef.nativeElement.querySelector("tbody").classList.add("mdc-data-table__content")}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(e,s){2&e&&at("mdc-table-fixed-layout",s.fixedLayout)},exportAs:["matTable"],features:[et([{provide:b4,useExisting:a},{provide:b,useExisting:a},{provide:j,useClass:$},{provide:Ky,useClass:iP},{provide:Si,useValue:null}]),Se],ngContentSelectors:Qne,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,s){1&e&&(Fn(Kne),ht(0),ht(1,1),mo(2,0)(3,1)(4,2)(5,3))},dependencies:[Us,ba,Zf,Dl],styles:[".mdc-data-table{border-radius:var(--mdc-shape-medium, 4px);border-width:1px;border-style:solid}.mdc-data-table .mdc-data-table__header-cell:first-child{border-top-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:first-child,.mdc-data-table .mdc-data-table__header-cell:first-child[dir=rtl]{border-top-right-radius:var(--mdc-shape-medium, 4px);border-top-left-radius:0}.mdc-data-table .mdc-data-table__header-cell:last-child{border-top-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:last-child,.mdc-data-table .mdc-data-table__header-cell:last-child[dir=rtl]{border-top-left-radius:var(--mdc-shape-medium, 4px);border-top-right-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child{border-bottom-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child[dir=rtl]{border-bottom-right-radius:var(--mdc-shape-medium, 4px);border-bottom-left-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child{border-bottom-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child[dir=rtl]{border-bottom-left-radius:var(--mdc-shape-medium, 4px);border-bottom-right-radius:0}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-width:1px;border-bottom-style:solid}.mdc-data-table__pagination{border-top-width:1px;border-top-style:solid}.mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:none}.mdc-data-table__row{height:52px}.mdc-data-table__pagination{min-height:52px}.mdc-data-table__header-row{height:56px}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px 0 16px}.mdc-data-table__header-cell--checkbox,.mdc-data-table__cell--checkbox{padding-left:4px;padding-right:0}[dir=rtl] .mdc-data-table__header-cell--checkbox,[dir=rtl] .mdc-data-table__cell--checkbox,.mdc-data-table__header-cell--checkbox[dir=rtl],.mdc-data-table__cell--checkbox[dir=rtl]{padding-left:0;padding-right:4px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table--sticky-header .mdc-data-table__header-cell{position:sticky;top:0;z-index:1}.mdc-data-table{-webkit-overflow-scrolling:touch;display:inline-flex;flex-direction:column;box-sizing:border-box;position:relative}.mdc-data-table__table-container{-webkit-overflow-scrolling:touch;overflow-x:auto;width:100%}.mdc-data-table__table{min-width:100%;border:0;white-space:nowrap;border-spacing:0;table-layout:fixed}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__pagination{box-sizing:border-box;display:flex;justify-content:flex-end}.mdc-data-table__pagination-trailing{margin-left:4px;margin-right:0;align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end}[dir=rtl] .mdc-data-table__pagination-trailing,.mdc-data-table__pagination-trailing[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__pagination-navigation{align-items:center;display:flex}.mdc-data-table__pagination-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__pagination-button .mdc-button__icon,.mdc-data-table__pagination-button .mdc-button__icon[dir=rtl]{transform:rotate(180deg)}[dir=rtl] .mdc-data-table__pagination-button,.mdc-data-table__pagination-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__pagination-total{margin-left:14px;margin-right:36px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-total,.mdc-data-table__pagination-total[dir=rtl]{margin-left:36px;margin-right:14px}.mdc-data-table__pagination-rows-per-page{margin-left:0;margin-right:22px;align-items:center;display:inline-flex}[dir=rtl] .mdc-data-table__pagination-rows-per-page,.mdc-data-table__pagination-rows-per-page[dir=rtl]{margin-left:22px;margin-right:0}.mdc-data-table__pagination-rows-per-page-label{margin-left:0;margin-right:12px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__pagination-rows-per-page-label[dir=rtl]{margin-left:12px;margin-right:0}.mdc-data-table__pagination-rows-per-page-select{min-width:var(--mdc-menu-min-width, 80px);margin:8px 0}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{width:100%;min-width:80px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{height:36px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{font-size:.75rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__dropdown-icon{width:20px;height:20px}.mdc-data-table__pagination-rows-per-page-select.mdc-select--outlined .mdc-select__anchor :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 56px)}.mdc-data-table__pagination-rows-per-page-select .mdc-list-item.mdc-list-item--with-one-line{height:36px}.mdc-data-table__progress-indicator{display:none;position:absolute;width:100%}.mdc-data-table--in-progress .mdc-data-table__progress-indicator{display:block}.mdc-data-table__scrim{background-color:var(--mdc-theme-surface, #fff);height:100%;opacity:.32;position:absolute;top:0;width:100%}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table-sticky{position:sticky !important}.mat-mdc-table{table-layout:auto;white-space:normal}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table .mat-mdc-row:hover,.mat-mdc-table .mat-mdc-footer-row:hover{background-color:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2}),a})(),x4=(()=>{class a extends C{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","matCellDef",""]],features:[et([{provide:C,useExisting:a}]),Se]}),a})(),C4=(()=>{class a extends S{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","matHeaderCellDef",""]],features:[et([{provide:S,useExisting:a}]),Se]}),a})(),S4=(()=>{class a extends E{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","matColumnDef",""]],inputs:{sticky:"sticky",name:["matColumnDef","name"]},features:[et([{provide:E,useExisting:a},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:a}]),Se]}),a})(),D4=(()=>{class a extends R{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],features:[Se]}),a})(),M4=(()=>{class a extends H{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],features:[Se]}),a})(),Vq=(()=>{class a extends ie{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","matHeaderRowDef",""]],inputs:{columns:["matHeaderRowDef","columns"],sticky:["matHeaderRowDefSticky","sticky"]},features:[et([{provide:ie,useExisting:a}]),Se]}),a})(),zq=(()=>{class a extends De{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","matRowDef",""]],inputs:{columns:["matRowDefColumns","columns"],when:["matRowDefWhen","when"]},features:[et([{provide:De,useExisting:a}]),Se]}),a})(),Hq=(()=>{class a extends Ge{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],features:[et([{provide:Ge,useExisting:a}]),Se],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,s){1&e&&mo(0,0)},dependencies:[Ae],encapsulation:2}),a})(),Gq=(()=>{class a extends nt{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],features:[et([{provide:nt,useExisting:a}]),Se],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,s){1&e&&mo(0,0)},dependencies:[Ae],encapsulation:2}),a})(),lie=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,Zne,Qt]}),a})();class die extends HY{get data(){return this._data.value}set data(i){i=Array.isArray(i)?i:[],this._data.next(i),this._renderChangesSubscription||this._filterData(i)}get filter(){return this._filter.value}set filter(i){this._filter.next(i),this._renderChangesSubscription||this._filterData(this.data)}get sort(){return this._sort}set sort(i){this._sort=i,this._updateChangeSubscription()}get paginator(){return this._paginator}set paginator(i){this._paginator=i,this._updateChangeSubscription()}constructor(i=[]){super(),this._renderData=new Qr([]),this._filter=new Qr(""),this._internalPageChanges=new Ue,this._renderChangesSubscription=null,this.sortingDataAccessor=(e,s)=>{const d=e[s];if(yV(d)){const f=Number(d);return f<9007199254740991?f:d}return d},this.sortData=(e,s)=>{const d=s.active,f=s.direction;return d&&""!=f?e.sort((_,w)=>{let D=this.sortingDataAccessor(_,d),k=this.sortingDataAccessor(w,d);const P=typeof D,z=typeof k;P!==z&&("number"===P&&(D+=""),"number"===z&&(k+=""));let W=0;return null!=D&&null!=k?D>k?W=1:D{const d=Object.keys(e).reduce((_,w)=>_+e[w]+"\u25ec","").toLowerCase(),f=s.trim().toLowerCase();return-1!=d.indexOf(f)},this._data=new Qr(i),this._updateChangeSubscription()}_updateChangeSubscription(){var i;const e=this._sort?Mi(this._sort.sortChange,this._sort.initialized):je(null),s=this._paginator?Mi(this._paginator.page,this._internalPageChanges,this._paginator.initialized):je(null),f=wu([this._data,this._filter]).pipe(gt(([D])=>this._filterData(D))),_=wu([f,e]).pipe(gt(([D])=>this._orderData(D))),w=wu([_,s]).pipe(gt(([D])=>this._pageData(D)));null===(i=this._renderChangesSubscription)||void 0===i||i.unsubscribe(),this._renderChangesSubscription=w.subscribe(D=>this._renderData.next(D))}_filterData(i){return this.filteredData=null==this.filter||""===this.filter?i:i.filter(e=>this.filterPredicate(e,this.filter)),this.paginator&&this._updatePaginator(this.filteredData.length),this.filteredData}_orderData(i){return this.sort?this.sortData(i.slice(),this.sort):i}_pageData(i){if(!this.paginator)return i;const e=this.paginator.pageIndex*this.paginator.pageSize;return i.slice(e,e+this.paginator.pageSize)}_updatePaginator(i){Promise.resolve().then(()=>{const e=this.paginator;if(e&&(e.length=i,e.pageIndex>0)){const s=Math.ceil(e.length/e.pageSize)-1||0,d=Math.min(e.pageIndex,s);d!==e.pageIndex&&(e.pageIndex=d,this._internalPageChanges.next())}})}connect(){return this._renderChangesSubscription||this._updateChangeSubscription(),this._renderData}disconnect(){var i;null===(i=this._renderChangesSubscription)||void 0===i||i.unsubscribe(),this._renderChangesSubscription=null}}class Iee extends die{}function Pee(a,i){return i?e=>Uo(i.pipe(Pn(1),function uie(){return Un((a,i)=>{a.subscribe(ci(i,Dd))})}()),e.pipe(Pee(a))):ze((e,s)=>Dr(a(e,s)).pipe(Pn(1),iB(e)))}function T4(a,i=Co){const e=Gm(a,i);return Pee(()=>e)}const hie=["input"],fie=["label"],pie=["*"],mie=new _e("mat-checkbox-default-options",{providedIn:"root",factory:Ree});function Ree(){return{color:"accent",clickAction:"check-indeterminate"}}const gie={provide:jr,useExisting:nn(()=>Lee),multi:!0};class vie{}let _ie=0;const Oee=Ree(),yie=Cy(gc(vc(mc(class{constructor(a){this._elementRef=a}}))));let bie=(()=>{class a extends yie{get inputId(){return`${this.id||this._uniqueId}-input`}get required(){return this._required}set required(e){this._required=We(e)}constructor(e,s,d,f,_,w,D){super(s),this._changeDetectorRef=d,this._ngZone=f,this._animationMode=w,this._options=D,this.ariaLabel="",this.ariaLabelledby=null,this.labelPosition="after",this.name=null,this.change=new ye,this.indeterminateChange=new ye,this._onTouched=()=>{},this._currentAnimationClass="",this._currentCheckState=0,this._controlValueAccessorChangeFn=()=>{},this._checked=!1,this._disabled=!1,this._indeterminate=!1,this._options=this._options||Oee,this.color=this.defaultColor=this._options.color||Oee.color,this.tabIndex=parseInt(_)||0,this.id=this._uniqueId=`${e}${++_ie}`}ngAfterViewInit(){this._syncIndeterminate(this._indeterminate)}get checked(){return this._checked}set checked(e){const s=We(e);s!=this.checked&&(this._checked=s,this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(e){const s=We(e);s!==this.disabled&&(this._disabled=s,this._changeDetectorRef.markForCheck())}get indeterminate(){return this._indeterminate}set indeterminate(e){const s=e!=this._indeterminate;this._indeterminate=We(e),s&&(this._transitionCheckState(this._indeterminate?3:this.checked?1:2),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_getAriaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"}_transitionCheckState(e){let s=this._currentCheckState,d=this._getAnimationTargetElement();if(s!==e&&d&&(this._currentAnimationClass&&d.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(s,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){d.classList.add(this._currentAnimationClass);const f=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{d.classList.remove(f)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){var e;const s=null===(e=this._options)||void 0===e?void 0:e.clickAction;this.disabled||"noop"===s?!this.disabled&&"noop"===s&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==s&&Promise.resolve().then(()=>{this._indeterminate=!1,this.indeterminateChange.emit(this._indeterminate)}),this._checked=!this._checked,this._transitionCheckState(this._checked?1:2),this._emitChangeEvent())}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,s){if("NoopAnimations"===this._animationMode)return"";switch(e){case 0:if(1===s)return this._animationClasses.uncheckedToChecked;if(3==s)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case 2:return 1===s?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case 1:return 2===s?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case 3:return 1===s?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){const s=this._inputElement;s&&(s.nativeElement.indeterminate=e)}}return a.\u0275fac=function(e){xs()},a.\u0275dir=me({type:a,viewQuery:function(e,s){if(1&e&&(ot(hie,5),ot(fie,5),ot(Ur,5)),2&e){let d;Ee(d=Oe())&&(s._inputElement=d.first),Ee(d=Oe())&&(s._labelElement=d.first),Ee(d=Oe())&&(s.ripple=d.first)}},inputs:{ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],id:"id",required:"required",labelPosition:"labelPosition",name:"name",value:"value",checked:"checked",disabled:"disabled",indeterminate:"indeterminate"},outputs:{change:"change",indeterminateChange:"indeterminateChange"},features:[Se]}),a})(),Lee=(()=>{class a extends bie{constructor(e,s,d,f,_,w){super("mat-mdc-checkbox-",e,s,d,f,_,w),this._animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"}}focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){const s=new vie;return s.source=this,s.checked=e,s}_getAnimationTargetElement(){var e;return null===(e=this._inputElement)||void 0===e?void 0:e.nativeElement}_onInputClick(){super._handleInputClick()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Je),hs("tabindex"),F(ki,8),F(mie,8))},a.\u0275cmp=we({type:a,selectors:[["mat-checkbox"]],hostAttrs:[1,"mat-mdc-checkbox"],hostVars:12,hostBindings:function(e,s){2&e&&(Oa("id",s.id),He("tabindex",null)("aria-label",null)("aria-labelledby",null),at("_mat-animation-noopable","NoopAnimations"===s._animationMode)("mdc-checkbox--disabled",s.disabled)("mat-mdc-checkbox-disabled",s.disabled)("mat-mdc-checkbox-checked",s.checked))},inputs:{disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matCheckbox"],features:[et([gie]),Se],ngContentSelectors:pie,decls:15,vars:19,consts:[[1,"mdc-form-field",3,"click"],[1,"mdc-checkbox"],["checkbox",""],[1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"checked","disabled","id","required","tabIndex","blur","click","change"],["input",""],[1,"mdc-checkbox__ripple"],[1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24","aria-hidden","true",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","",1,"mat-mdc-checkbox-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[3,"for"],["label",""]],template:function(e,s){if(1&e&&(Fn(),I(0,"div",0),J("click",function(f){return s._preventBubblingFromLabel(f)}),I(1,"div",1,2)(3,"div",3),J("click",function(){return s._onInputClick()}),O(),I(4,"input",4,5),J("blur",function(){return s._onBlur()})("click",function(){return s._onInputClick()})("change",function(f){return s._onInteractionEvent(f)}),O(),he(6,"div",6),I(7,"div",7),Pr(),I(8,"svg",8),he(9,"path",9),O(),Ll(),he(10,"div",10),O(),he(11,"div",11),O(),I(12,"label",12,13),ht(14),O()()),2&e){const d=on(2);at("mdc-form-field--align-end","before"==s.labelPosition),N(4),at("mdc-checkbox--selected",s.checked),V("checked",s.checked)("disabled",s.disabled)("id",s.inputId)("required",s.required)("tabIndex",s.tabIndex),He("aria-checked",s._getAriaChecked())("aria-label",s.ariaLabel||null)("aria-labelledby",s.ariaLabelledby)("aria-describedby",s.ariaDescribedby)("name",s.name)("value",s.value),N(7),V("matRippleTrigger",d)("matRippleDisabled",s.disableRipple||s.disabled)("matRippleCentered",!0),N(1),V("for",s.inputId)}},dependencies:[Ur],styles:['.mdc-touch-target-wrapper{display:inline}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}.mdc-checkbox[hidden]{display:none}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{border-color:CanvasText}}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{border-color:CanvasText}}@media all and (-ms-high-contrast: none){.mdc-checkbox .mdc-checkbox__focus-ring{display:none}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox--touch{margin:calc((var(--mdc-checkbox-state-layer-size, 48px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mdc-checkbox--touch .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);width:var(--mdc-checkbox-state-layer-size, 48px);height:var(--mdc-checkbox-state-layer-size, 48px)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none}.mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color, rgba(0, 0, 0, 0.38));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:transparent;background-color:var(--mdc-checkbox-disabled-selected-icon-color, rgba(0, 0, 0, 0.38))}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);width:var(--mdc-checkbox-state-layer-size, 40px);height:var(--mdc-checkbox-state-layer-size, 40px)}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple{opacity:.04;transform:scale(1);transition:opacity 80ms 0 cubic-bezier(0, 0, 0.2, 1),transform 80ms 0 cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:not([disabled]):focus~.mdc-checkbox__ripple{opacity:.16}.mat-mdc-checkbox .mdc-checkbox__background{-webkit-print-color-adjust:exact;color-adjust:exact}.mat-mdc-checkbox._mat-animation-noopable *,.mat-mdc-checkbox._mat-animation-noopable *::before{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__native-control:focus:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, black)}.cdk-high-contrast-active .mat-mdc-checkbox.mat-mdc-checkbox-disabled{opacity:.5}.cdk-high-contrast-active .mat-mdc-checkbox .mdc-checkbox__checkmark{--mdc-checkbox-selected-checkmark-color: CanvasText;--mdc-checkbox-disabled-selected-checkmark-color: CanvasText}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),a})(),Fee=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})(),Nee=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,io,Fee,Qt,Fee]}),a})();const Cie=["*"];let A4;function vP(a){var i;return(null===(i=function Sie(){if(void 0===A4&&(A4=null,typeof window<"u")){const a=window;void 0!==a.trustedTypes&&(A4=a.trustedTypes.createPolicy("angular#components",{createHTML:i=>i}))}return A4}())||void 0===i?void 0:i.createHTML(a))||a}function Bee(a){return Error(`Unable to find icon with the name "${a}"`)}function Vee(a){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${a}".`)}function zee(a){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${a}".`)}class nb{constructor(i,e,s){this.url=i,this.svgText=e,this.options=s}}let k4=(()=>{class a{constructor(e,s,d,f){this._httpClient=e,this._sanitizer=s,this._errorHandler=f,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=d}addSvgIcon(e,s,d){return this.addSvgIconInNamespace("",e,s,d)}addSvgIconLiteral(e,s,d){return this.addSvgIconLiteralInNamespace("",e,s,d)}addSvgIconInNamespace(e,s,d,f){return this._addSvgIconConfig(e,s,new nb(d,null,f))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,s,d,f){const _=this._sanitizer.sanitize(Vn.HTML,d);if(!_)throw zee(d);const w=vP(_);return this._addSvgIconConfig(e,s,new nb("",w,f))}addSvgIconSet(e,s){return this.addSvgIconSetInNamespace("",e,s)}addSvgIconSetLiteral(e,s){return this.addSvgIconSetLiteralInNamespace("",e,s)}addSvgIconSetInNamespace(e,s,d){return this._addSvgIconSetConfig(e,new nb(s,null,d))}addSvgIconSetLiteralInNamespace(e,s,d){const f=this._sanitizer.sanitize(Vn.HTML,s);if(!f)throw zee(s);const _=vP(f);return this._addSvgIconSetConfig(e,new nb("",_,d))}registerFontClassAlias(e,s=e){return this._fontCssClassesByAlias.set(e,s),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const s=this._sanitizer.sanitize(Vn.RESOURCE_URL,e);if(!s)throw Vee(e);const d=this._cachedIconsByUrl.get(s);return d?je(E4(d)):this._loadSvgIconFromConfig(new nb(e,null)).pipe(Fi(f=>this._cachedIconsByUrl.set(s,f)),gt(f=>E4(f)))}getNamedSvgIcon(e,s=""){const d=Hee(s,e);let f=this._svgIconConfigs.get(d);if(f)return this._getSvgFromConfig(f);if(f=this._getIconConfigFromResolvers(s,e),f)return this._svgIconConfigs.set(d,f),this._getSvgFromConfig(f);const _=this._iconSetConfigs.get(s);return _?this._getSvgFromIconSetConfigs(e,_):bf(Bee(d))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?je(E4(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(gt(s=>E4(s)))}_getSvgFromIconSetConfigs(e,s){const d=this._extractIconWithNameFromAnySet(e,s);return d?je(d):g5(s.filter(_=>!_.svgText).map(_=>this._loadSvgIconSetFromConfig(_).pipe(eo(w=>{const k=`Loading icon set URL: ${this._sanitizer.sanitize(Vn.RESOURCE_URL,_.url)} failed: ${w.message}`;return this._errorHandler.handleError(new Error(k)),je(null)})))).pipe(gt(()=>{const _=this._extractIconWithNameFromAnySet(e,s);if(!_)throw Bee(e);return _}))}_extractIconWithNameFromAnySet(e,s){for(let d=s.length-1;d>=0;d--){const f=s[d];if(f.svgText&&f.svgText.toString().indexOf(e)>-1){const _=this._svgElementFromConfig(f),w=this._extractSvgIconFromSet(_,e,f.options);if(w)return w}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(Fi(s=>e.svgText=s),gt(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?je(null):this._fetchIcon(e).pipe(Fi(s=>e.svgText=s))}_extractSvgIconFromSet(e,s,d){const f=e.querySelector(`[id="${s}"]`);if(!f)return null;const _=f.cloneNode(!0);if(_.removeAttribute("id"),"svg"===_.nodeName.toLowerCase())return this._setSvgAttributes(_,d);if("symbol"===_.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(_),d);const w=this._svgElementFromString(vP(""));return w.appendChild(_),this._setSvgAttributes(w,d)}_svgElementFromString(e){const s=this._document.createElement("DIV");s.innerHTML=e;const d=s.querySelector("svg");if(!d)throw Error(" tag not found");return d}_toSvgElement(e){const s=this._svgElementFromString(vP("")),d=e.attributes;for(let f=0;fvP(P)),z_(()=>this._inProgressUrlFetches.delete(w)),_S());return this._inProgressUrlFetches.set(w,k),k}_addSvgIconConfig(e,s,d){return this._svgIconConfigs.set(Hee(e,s),d),this}_addSvgIconSetConfig(e,s){const d=this._iconSetConfigs.get(e);return d?d.push(s):this._iconSetConfigs.set(e,[s]),this}_svgElementFromConfig(e){if(!e.svgElement){const s=this._svgElementFromString(e.svgText);this._setSvgAttributes(s,e.options),e.svgElement=s}return e.svgElement}_getIconConfigFromResolvers(e,s){for(let d=0;di?i.pathname+i.search:""}}}),Gee=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],Pie=Gee.map(a=>`[${a}]`).join(", "),Rie=/^url\(['"]?#(.*?)['"]?\)$/;let Oie=(()=>{class a extends Aie{get inline(){return this._inline}set inline(e){this._inline=We(e)}get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}get fontSet(){return this._fontSet}set fontSet(e){const s=this._cleanupFontValue(e);s!==this._fontSet&&(this._fontSet=s,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(e){const s=this._cleanupFontValue(e);s!==this._fontIcon&&(this._fontIcon=s,this._updateFontIconClasses())}constructor(e,s,d,f,_,w){super(e),this._iconRegistry=s,this._location=f,this._errorHandler=_,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=xt.EMPTY,w&&(w.color&&(this.color=this.defaultColor=w.color),w.fontSet&&(this.fontSet=w.fontSet)),d||e.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const s=e.split(":");switch(s.length){case 1:return["",s[0]];case 2:return s;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const s=this._location.getPathname();s!==this._previousPath&&(this._previousPath=s,this._prependPathToReferences(s))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const s=this._location.getPathname();this._previousPath=s,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(s),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let s=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();s--;){const d=e.childNodes[s];(1!==d.nodeType||"svg"===d.nodeName.toLowerCase())&&d.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,s=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(d=>d.length>0);this._previousFontSetClass.forEach(d=>e.classList.remove(d)),s.forEach(d=>e.classList.add(d)),this._previousFontSetClass=s,this.fontIcon!==this._previousFontIconClass&&!s.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const s=this._elementsWithExternalReferences;s&&s.forEach((d,f)=>{d.forEach(_=>{f.setAttribute(_.name,`url('${e}#${_.value}')`)})})}_cacheChildrenWithExternalReferences(e){const s=e.querySelectorAll(Pie),d=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let f=0;f{const w=s[f],D=w.getAttribute(_),k=D?D.match(Rie):null;if(k){let P=d.get(w);P||(P=[],d.set(w,P)),P.push({name:_,value:k[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[s,d]=this._splitIconName(e);s&&(this._svgNamespace=s),d&&(this._svgName=d),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(d,s).pipe(Pn(1)).subscribe(f=>this._setSvgElement(f),f=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${s}:${d}! ${f.message}`))})}}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(k4),hs("aria-hidden"),F(Eie),F(Hc),F(kie,8))},a.\u0275cmp=we({type:a,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function(e,s){2&e&&(He("data-mat-icon-type",s._usingFontIcon()?"font":"svg")("data-mat-icon-name",s._svgName||s.fontIcon)("data-mat-icon-namespace",s._svgNamespace||s.fontSet)("fontIcon",s._usingFontIcon()?s.fontIcon:null),at("mat-icon-inline",s.inline)("mat-icon-no-color","primary"!==s.color&&"accent"!==s.color&&"warn"!==s.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[Se],ngContentSelectors:Cie,decls:1,vars:0,template:function(e,s){1&e&&(Fn(),ht(0))},styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0}),a})(),Lie=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,Qt]}),a})();const Fie=["determinateSpinner"];function Nie(a,i){if(1&a&&(Pr(),I(0,"svg",11),he(1,"circle",12),O()),2&a){const e=q();He("viewBox",e._viewBox()),N(1),Ra("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),He("r",e._circleRadius())}}const Bie=gc(class{constructor(a){this._elementRef=a}},"primary"),Vie=new _e("mat-progress-spinner-default-options",{providedIn:"root",factory:function zie(){return{diameter:Uee}}}),Uee=100;let jee=(()=>{class a extends Bie{constructor(e,s,d){super(e),this.mode="mat-spinner"===this._elementRef.nativeElement.nodeName.toLowerCase()?"indeterminate":"determinate",this._value=0,this._diameter=Uee,this._noopAnimations="NoopAnimations"===s&&!!d&&!d._forceAnimations,d&&(d.color&&(this.color=this.defaultColor=d.color),d.diameter&&(this.diameter=d.diameter),d.strokeWidth&&(this.strokeWidth=d.strokeWidth))}get value(){return"determinate"===this.mode?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,er(e)))}get diameter(){return this._diameter}set diameter(e){this._diameter=er(e)}get strokeWidth(){var e;return null!==(e=this._strokeWidth)&&void 0!==e?e:this.diameter/10}set strokeWidth(e){this._strokeWidth=er(e)}_circleRadius(){return(this.diameter-10)/2}_viewBox(){const e=2*this._circleRadius()+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return"determinate"===this.mode?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(ki,8),F(Vie))},a.\u0275cmp=we({type:a,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(e,s){if(1&e&&ot(Fie,5),2&e){let d;Ee(d=Oe())&&(s._determinateCircle=d.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:12,hostBindings:function(e,s){2&e&&(He("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow","determinate"===s.mode?s.value:null)("mode",s.mode),Ra("width",s.diameter,"px")("height",s.diameter,"px"),at("_mat-animation-noopable",s._noopAnimations)("mdc-circular-progress--indeterminate","indeterminate"===s.mode))},inputs:{color:"color",mode:"mode",value:"value",diameter:"diameter",strokeWidth:"strokeWidth"},exportAs:["matProgressSpinner"],features:[Se],decls:14,vars:11,consts:[["circle",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["determinateSpinner",""],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(e,s){if(1&e&&(Q(0,Nie,2,8,"ng-template",null,0,Nr),I(2,"div",1,2),Pr(),I(4,"svg",3),he(5,"circle",4),O()(),Ll(),I(6,"div",5)(7,"div",6)(8,"div",7),mo(9,8),O(),I(10,"div",9),mo(11,8),O(),I(12,"div",10),mo(13,8),O()()()),2&e){const d=on(1);N(4),He("viewBox",s._viewBox()),N(1),Ra("stroke-dasharray",s._strokeCircumference(),"px")("stroke-dashoffset",s._strokeDashOffset(),"px")("stroke-width",s._circleStrokeWidth(),"%"),He("r",s._circleRadius()),N(4),V("ngTemplateOutlet",d),N(2),V("ngTemplateOutlet",d),N(2),V("ngTemplateOutlet",d)}},dependencies:[Wn],styles:["@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-color-1-fade-in-out{from{opacity:.99}25%{opacity:.99}26%{opacity:0}89%{opacity:0}90%{opacity:.99}to{opacity:.99}}@keyframes mdc-circular-progress-color-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:.99}50%{opacity:.99}51%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:.99}75%{opacity:.99}76%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:.99}90%{opacity:.99}to{opacity:0}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}.mdc-circular-progress{display:inline-flex;position:relative;direction:ltr;line-height:0;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{animation:mdc-circular-progress-container-rotate 1568.2352941176ms linear infinite}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-1{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-2{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-3{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-4{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--closed{opacity:0}.mat-mdc-progress-spinner{display:block;overflow:hidden;line-height:0}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mdc-circular-progress-active-indicator-color, transparent)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-1 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-2 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-3 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-4 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}"],encapsulation:2,changeDetection:0}),a})(),$ee=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[zr,Qt]}),a})(),Wee=(()=>{class a{constructor(){this._vertical=!1,this._inset=!1}get vertical(){return this._vertical}set vertical(e){this._vertical=We(e)}get inset(){return this._inset}set inset(e){this._inset=We(e)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275cmp=we({type:a,selectors:[["mat-divider"]],hostAttrs:["role","separator",1,"mat-divider"],hostVars:7,hostBindings:function(e,s){2&e&&(He("aria-orientation",s.vertical?"vertical":"horizontal"),at("mat-divider-vertical",s.vertical)("mat-divider-horizontal",!s.vertical)("mat-divider-inset",s.inset))},inputs:{vertical:"vertical",inset:"inset"},decls:0,vars:0,template:function(e,s){},styles:[".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}"],encapsulation:2,changeDetection:0}),a})(),Yee=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,Qt]}),a})();const Gie=["searchSelectInput"],Uie=["innerSelectSearch"];function jie(a,i){if(1&a){const e=Pe();I(0,"mat-checkbox",9),J("change",function(d){return ae(e),se(q()._emitSelectAllBooleanToParent(d.checked))}),O()}if(2&a){const e=q();V("color",null==e.matFormField?null:e.matFormField.color)("checked",e.toggleAllCheckboxChecked)("indeterminate",e.toggleAllCheckboxIndeterminate)("matTooltip",e.toggleAllCheckboxTooltipMessage)("matTooltipPosition",e.toggleAllCheckboxTooltipPosition)}}function $ie(a,i){1&a&&he(0,"mat-spinner",10)}function Wie(a,i){1&a&&ht(0,1,["*ngIf","clearIcon; else defaultIcon"])}function Yie(a,i){if(1&a&&(I(0,"mat-icon",14),Y(1),O()),2&a){const e=q(2);V("svgIcon",e.closeSvgIcon),N(1),Re(" ",e.closeSvgIcon?null:e.closeIcon," ")}}function qie(a,i){if(1&a){const e=Pe();I(0,"button",11),J("click",function(){return ae(e),se(q()._reset(!0))}),Q(1,Wie,1,0,"ng-content",12),Q(2,Yie,2,2,"ng-template",null,13,Nr),O()}if(2&a){const e=on(3),s=q();N(1),V("ngIf",s.clearIcon)("ngIfElse",e)}}function Xie(a,i){1&a&&ht(0,2,["*ngIf","noEntriesFound; else defaultNoEntriesFound"])}function Zie(a,i){1&a&&Y(0),2&a&&In(q(2).noEntriesFoundLabel)}function Kie(a,i){if(1&a&&(I(0,"div",15),Q(1,Xie,1,0,"ng-content",12),Q(2,Zie,1,1,"ng-template",null,16,Nr),O()),2&a){const e=on(3),s=q();N(1),V("ngIf",s.noEntriesFound)("ngIfElse",e)}}const Qie=[[["",8,"mat-select-search-custom-header-content"]],[["","ngxMatSelectSearchClear",""]],[["","ngxMatSelectNoEntriesFound",""]]],Jie=function(a,i){return{"mat-select-search-inner-multiple":a,"mat-select-search-inner-toggle-all":i}},ere=[".mat-select-search-custom-header-content","[ngxMatSelectSearchClear]","[ngxMatSelectNoEntriesFound]"];let tre=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","ngxMatSelectSearchClear",""]]}),a})();const nre=["ariaLabel","clearSearchInput","closeIcon","closeSvgIcon","disableInitialFocus","disableScrollToActiveOnOptionsChanged","enableClearOnEscapePressed","hideClearSearchButton","noEntriesFoundLabel","placeholderLabel","preventHomeEndKeyPropagation","searching"],ire=new _e("mat-selectsearch-default-options");let rre=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","ngxMatSelectNoEntriesFound",""]]}),a})(),are=(()=>{class a{constructor(e,s,d,f=null,_=null,w){this.matSelect=e,this.changeDetectorRef=s,this._viewportRuler=d,this.matOption=f,this.matFormField=_,this.placeholderLabel="Suche",this.type="text",this.closeIcon="close",this.noEntriesFoundLabel="Keine Optionen gefunden",this.clearSearchInput=!0,this.searching=!1,this.disableInitialFocus=!1,this.enableClearOnEscapePressed=!1,this.preventHomeEndKeyPropagation=!1,this.disableScrollToActiveOnOptionsChanged=!1,this.ariaLabel="dropdown search",this.showToggleAllCheckbox=!1,this.toggleAllCheckboxChecked=!1,this.toggleAllCheckboxIndeterminate=!1,this.toggleAllCheckboxTooltipMessage="",this.toggleAllCheckboxTooltipPosition="below",this.hideClearSearchButton=!1,this.alwaysRestoreSelectedOptionsMulti=!1,this.toggleAll=new ye,this.onTouched=D=>{},this._options$=new Qr(null),this.optionsList$=this._options$.pipe(Qi(D=>D?D.changes.pipe(gt(k=>k.toArray()),Ji(D.toArray())):je(null))),this.optionsLength$=this.optionsList$.pipe(gt(D=>D?D.length:0)),this._formControl=new vI(""),this._showNoEntriesFound$=wu([this._formControl.valueChanges,this.optionsLength$]).pipe(gt(([D,k])=>this.noEntriesFoundLabel&&D&&k===this.getOptionsLengthOffset())),this._onDestroy=new Ue,this.applyDefaultOptions(w)}get value(){return this._formControl.value}set _options(e){this._options$.next(e)}get _options(){return this._options$.getValue()}applyDefaultOptions(e){if(e)for(const s of nre)e.hasOwnProperty(s)&&(this[s]=e[s])}ngOnInit(){this.matOption?(this.matOption.disabled=!0,this.matOption._getHostElement().classList.add("contains-mat-select-search"),this.matOption._getHostElement().setAttribute("aria-hidden","true")):console.error(" must be placed inside a element"),this.matSelect.openedChange.pipe(T4(1),Tt(this._onDestroy)).subscribe(e=>{e?(this.updateInputWidth(),this.disableInitialFocus||this._focus()):this.clearSearchInput&&this._reset()}),this.matSelect.openedChange.pipe(Pn(1),Qi(e=>{this._options=this.matSelect.options;let s=this._options.toArray()[this.getOptionsLengthOffset()];return this._options.changes.pipe(Fi(()=>{setTimeout(()=>{const d=this._options.toArray(),f=d[this.getOptionsLengthOffset()],_=this.matSelect._keyManager;_&&this.matSelect.panelOpen&&((!this.matSelect.compareWith(s,f)||!_.activeItem||!d.find(D=>this.matSelect.compareWith(D,_.activeItem)))&&_.setFirstItemActive(),setTimeout(()=>{this.updateInputWidth()})),s=f})}))})).pipe(Tt(this._onDestroy)).subscribe(),this._showNoEntriesFound$.pipe(Tt(this._onDestroy)).subscribe(e=>{this.matOption&&(e?this.matOption._getHostElement().classList.add("mat-select-search-no-entries-found"):this.matOption._getHostElement().classList.remove("mat-select-search-no-entries-found"))}),this._viewportRuler.change().pipe(Tt(this._onDestroy)).subscribe(()=>{this.matSelect.panelOpen&&this.updateInputWidth()}),this.initMultipleHandling(),this.optionsList$.pipe(Tt(this._onDestroy)).subscribe(()=>{this.changeDetectorRef.markForCheck()})}_emitSelectAllBooleanToParent(e){this.toggleAll.emit(e)}ngOnDestroy(){this._onDestroy.next(),this._onDestroy.complete()}_isToggleAllCheckboxVisible(){return this.matSelect.multiple&&this.showToggleAllCheckbox}_handleKeydown(e){(e.key&&1===e.key.length||e.keyCode>=65&&e.keyCode<=90||e.keyCode>=48&&e.keyCode<=57||32===e.keyCode||this.preventHomeEndKeyPropagation&&(36===e.keyCode||35===e.keyCode))&&e.stopPropagation(),this.matSelect.multiple&&e.key&&13===e.keyCode&&setTimeout(()=>this._focus()),!0===this.enableClearOnEscapePressed&&27===e.keyCode&&this.value&&(this._reset(!0),e.stopPropagation())}_handleKeyup(e){if(38===e.keyCode||40===e.keyCode){const s=this.matSelect._getAriaActiveDescendant(),d=this._options.toArray().findIndex(f=>f.id===s);-1!==d&&(this.unselectActiveDescendant(),this.activeDescendant=this._options.toArray()[d]._getHostElement(),this.activeDescendant.setAttribute("aria-selected","true"),this.searchSelectInput.nativeElement.setAttribute("aria-activedescendant",s))}}writeValue(e){this._lastExternalInputValue=e,this._formControl.setValue(e),this.changeDetectorRef.markForCheck()}onBlur(){this.unselectActiveDescendant(),this.onTouched()}registerOnChange(e){this._formControl.valueChanges.pipe(fi(s=>s!==this._lastExternalInputValue),Fi(()=>this._lastExternalInputValue=void 0),Tt(this._onDestroy)).subscribe(e)}registerOnTouched(e){this.onTouched=e}_focus(){if(!this.searchSelectInput||!this.matSelect.panel)return;const e=this.matSelect.panel.nativeElement,s=e.scrollTop;this.searchSelectInput.nativeElement.focus(),e.scrollTop=s}_reset(e){this._formControl.setValue(""),e&&this._focus()}initMultipleHandling(){this.matSelect.ngControl?(this.previousSelectedValues=this.matSelect.ngControl.value,this.matSelect.ngControl.valueChanges.pipe(Tt(this._onDestroy)).subscribe(e=>{let s=!1;if(this.matSelect.multiple&&(this.alwaysRestoreSelectedOptionsMulti||this._formControl.value&&this._formControl.value.length)&&this.previousSelectedValues&&Array.isArray(this.previousSelectedValues)){(!e||!Array.isArray(e))&&(e=[]);const d=this.matSelect.options.map(f=>f.value);this.previousSelectedValues.forEach(f=>{!e.some(_=>this.matSelect.compareWith(_,f))&&!d.some(_=>this.matSelect.compareWith(_,f))&&(e.push(f),s=!0)})}this.previousSelectedValues=e,s&&this.matSelect._onChange(e)})):this.matSelect.multiple&&console.error("the mat-select containing ngx-mat-select-search must have a ngModel or formControl directive when multiple=true")}updateInputWidth(){if(!this.innerSelectSearch||!this.innerSelectSearch.nativeElement)return;let s,e=this.innerSelectSearch.nativeElement;for(;e=e.parentElement;)if(e.classList.contains("mat-select-panel")){s=e;break}s&&(this.innerSelectSearch.nativeElement.style.width=s.clientWidth+"px")}getOptionsLengthOffset(){return this.matOption?1:0}unselectActiveDescendant(){var e;null===(e=this.activeDescendant)||void 0===e||e.removeAttribute("aria-selected"),this.searchSelectInput.nativeElement.removeAttribute("aria-activedescendant")}}return a.\u0275fac=function(e){return new(e||a)(F(ya),F(Zt),F(hc),F($i,8),F(ei,8),F(ire,8))},a.\u0275cmp=we({type:a,selectors:[["ngx-mat-select-search"]],contentQueries:function(e,s,d){if(1&e&&(hn(d,tre,5),hn(d,rre,5)),2&e){let f;Ee(f=Oe())&&(s.clearIcon=f.first),Ee(f=Oe())&&(s.noEntriesFound=f.first)}},viewQuery:function(e,s){if(1&e&&(ot(Gie,7,Be),ot(Uie,7,Be)),2&e){let d;Ee(d=Oe())&&(s.searchSelectInput=d.first),Ee(d=Oe())&&(s.innerSelectSearch=d.first)}},inputs:{placeholderLabel:"placeholderLabel",type:"type",closeIcon:"closeIcon",closeSvgIcon:"closeSvgIcon",noEntriesFoundLabel:"noEntriesFoundLabel",clearSearchInput:"clearSearchInput",searching:"searching",disableInitialFocus:"disableInitialFocus",enableClearOnEscapePressed:"enableClearOnEscapePressed",preventHomeEndKeyPropagation:"preventHomeEndKeyPropagation",disableScrollToActiveOnOptionsChanged:"disableScrollToActiveOnOptionsChanged",ariaLabel:"ariaLabel",showToggleAllCheckbox:"showToggleAllCheckbox",toggleAllCheckboxChecked:"toggleAllCheckboxChecked",toggleAllCheckboxIndeterminate:"toggleAllCheckboxIndeterminate",toggleAllCheckboxTooltipMessage:"toggleAllCheckboxTooltipMessage",toggleAllCheckboxTooltipPosition:"toggleAllCheckboxTooltipPosition",hideClearSearchButton:"hideClearSearchButton",alwaysRestoreSelectedOptionsMulti:"alwaysRestoreSelectedOptionsMulti"},outputs:{toggleAll:"toggleAll"},features:[et([{provide:jr,useExisting:nn(()=>a),multi:!0}])],ngContentSelectors:ere,decls:12,vars:14,consts:[["matInput","",1,"mat-select-search-input","mat-select-search-hidden"],[1,"mat-select-search-inner","mat-typography","mat-datepicker-content","mat-tab-header",3,"ngClass"],["innerSelectSearch",""],["class","mat-select-search-toggle-all-checkbox","matTooltipClass","ngx-mat-select-search-toggle-all-tooltip",3,"color","checked","indeterminate","matTooltip","matTooltipPosition","change",4,"ngIf"],["autocomplete","off",1,"mat-select-search-input",3,"type","formControl","placeholder","keydown","keyup","blur"],["searchSelectInput",""],["class","mat-select-search-spinner","diameter","16",4,"ngIf"],["mat-icon-button","","aria-label","Clear","class","mat-select-search-clear",3,"click",4,"ngIf"],["class","mat-select-search-no-entries-found",4,"ngIf"],["matTooltipClass","ngx-mat-select-search-toggle-all-tooltip",1,"mat-select-search-toggle-all-checkbox",3,"color","checked","indeterminate","matTooltip","matTooltipPosition","change"],["diameter","16",1,"mat-select-search-spinner"],["mat-icon-button","","aria-label","Clear",1,"mat-select-search-clear",3,"click"],[4,"ngIf","ngIfElse"],["defaultIcon",""],[3,"svgIcon"],[1,"mat-select-search-no-entries-found"],["defaultNoEntriesFound",""]],template:function(e,s){1&e&&(Fn(Qie),he(0,"input",0),I(1,"div",1,2),Q(3,jie,1,5,"mat-checkbox",3),I(4,"input",4,5),J("keydown",function(f){return s._handleKeydown(f)})("keyup",function(f){return s._handleKeyup(f)})("blur",function(){return s.onBlur()}),O(),Q(6,$ie,1,0,"mat-spinner",6),Q(7,qie,4,2,"button",7),ht(8),he(9,"mat-divider"),O(),Q(10,Kie,4,2,"div",8),Yc(11,"async")),2&e&&(N(1),V("ngClass",Iw(11,Jie,s.matSelect.multiple,s._isToggleAllCheckboxVisible())),N(2),V("ngIf",s._isToggleAllCheckboxVisible()),N(1),V("type",s.type)("formControl",s._formControl)("placeholder",s.placeholderLabel),He("aria-label",s.ariaLabel),N(2),V("ngIf",s.searching),N(1),V("ngIf",!s.hideClearSearchButton&&s.value&&!s.searching),N(3),V("ngIf",Jp(11,9,s._showNoEntriesFound$)))},dependencies:[Ps,zt,rr,Qn,zy,yc,Lee,Oie,jee,Jy,Wee,pA],styles:[".mat-select-search-hidden[_ngcontent-%COMP%]{visibility:hidden}.mat-select-search-inner[_ngcontent-%COMP%]{position:absolute;top:0;left:0;width:100%;z-index:100;font-size:inherit;box-shadow:none}.mat-select-search-inner.mat-select-search-inner-multiple.mat-select-search-inner-toggle-all[_ngcontent-%COMP%]{display:flex;align-items:center}.mat-select-search-input[_ngcontent-%COMP%]{box-sizing:border-box;width:100%;border:none;font-family:inherit;font-size:inherit;color:currentColor;outline:none;background:none;padding:0 44px 0 16px;height:calc(3em - 1px);line-height:calc(3em - 1px)}[dir=rtl][_nghost-%COMP%] .mat-select-search-input[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-input[_ngcontent-%COMP%]{padding-right:16px;padding-left:44px}.mat-select-search-inner-toggle-all[_ngcontent-%COMP%] .mat-select-search-input[_ngcontent-%COMP%]{padding-left:5px}.mat-select-search-no-entries-found[_ngcontent-%COMP%]{padding-top:8px}.mat-select-search-clear[_ngcontent-%COMP%]{position:absolute;right:4px;top:0}[dir=rtl][_nghost-%COMP%] .mat-select-search-clear[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-clear[_ngcontent-%COMP%]{right:auto;left:4px}.mat-select-search-spinner[_ngcontent-%COMP%]{position:absolute;right:16px;top:calc(50% - 8px)}[dir=rtl][_nghost-%COMP%] .mat-select-search-spinner[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-spinner[_ngcontent-%COMP%]{right:auto;left:16px} .mat-mdc-option[aria-disabled=true].contains-mat-select-search{position:sticky;top:-8px;z-index:1;opacity:1;margin-top:-8px} .mat-mdc-option[aria-disabled=true].contains-mat-select-search .mat-icon{margin-right:0;margin-left:0} .mat-mdc-option[aria-disabled=true].contains-mat-select-search mat-pseudo-checkbox{display:none}.mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%]{padding-left:5px}[dir=rtl][_nghost-%COMP%] .mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%]{padding-left:0;padding-right:5px}"],changeDetection:0}),a})(),ore=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[zr,cg,Iy,Nee,Lie,$ee,z1,Yee]}),a})();function sre(a,i){if(1&a){const e=Pe();I(0,"mat-option")(1,"ngx-mat-select-search",1),J("ngModelChange",function(d){return ae(e),se(q().changed.emit(d))}),O()()}if(2&a){const e=q();N(1),V("placeholderLabel",e.placeholderLabel)("noEntriesFoundLabel",e.noEntriesFoundLabel)}}class es{constructor(){this.placeholderLabel=django.gettext("Filter"),this.noEntriesFoundLabel=django.gettext("No entries found"),this.changed=new ye,this.notIfLessThan=7}}function lre(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New user permission for"),O())}function cre(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New group permission for"),O())}function dre(a,i){if(1&a&&(I(0,"mat-option",11),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),In(e.text)}}function ure(a,i){if(1&a&&(I(0,"mat-option",11),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),In(e.text)}}function hre(a,i){if(1&a&&(I(0,"mat-option",11),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),In(e.text)}}es.\u0275fac=function(i){return new(i||es)},es.\u0275cmp=we({type:es,selectors:[["uds-cond-select-search"]],inputs:{placeholderLabel:"placeholderLabel",noEntriesFoundLabel:"noEntriesFoundLabel",options:"options",notIfLessThan:"notIfLessThan"},outputs:{changed:"changed"},decls:1,vars:1,consts:[[4,"ngIf"],["ngModel","",3,"placeholderLabel","noEntriesFoundLabel","ngModelChange"]],template:function(i,e){1&i&&Q(0,sre,2,2,"mat-option",0),2&i&&V("ngIf",e.options&&e.options.length>e.notIfLessThan)},dependencies:[zt,Qn,Yn,$i,are]});class ib{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.data=d,this.filterUser="",this.authenticators=[],this.entities=[],this.permissions=[{id:"1",text:django.gettext("Read only")},{id:"2",text:django.gettext("Full Access")}],this.authenticator="",this.entity="",this.permission="1",this.done=new wl}static launch(i,e,s){return Xe(function*(){const d=window.innerWidth<800?"80%":"50%";return i.gui.dialog.open(ib,{width:d,data:{type:e,item:s},disableClose:!0}).componentInstance.done})()}ngOnInit(){var i=this;return Xe(function*(){const e=yield i.rest.authenticators.summary();for(const s of e)i.authenticators.push({id:s.id,text:s.name})})()}changeAuth(i){var e=this;return Xe(function*(){e.entities.length=0,e.entity="";const s=yield e.rest.authenticators.detail(i,e.data.type+"s").summary();for(const d of s)e.entities.push({id:d.id,text:d.name})})()}save(){this.done.resolve({authenticator:this.authenticator,entity:this.entity,permissision:this.permission}),this.dialogRef.close()}cancel(){this.done.resolve(null),this.dialogRef.close()}filteredEntities(){const i=new Array;return this.entities.forEach(e=>{(!this.filterUser||e.text.toLocaleLowerCase().includes(this.filterUser.toLocaleLowerCase()))&&i.push(e)}),i}getFieldLabel(i){return"user"===i?django.gettext("User"):"group"===i?django.gettext("Group"):"auth"===i?django.gettext("Authenticator"):django.gettext("Permission")}}function fre(a,i){if(1&a){const e=Pe();I(0,"div",11)(1,"div",12),Y(2),O(),I(3,"div",13),Y(4),I(5,"a",14),J("click",function(){const f=ae(e).$implicit;return se(q(2).revokePermission(f))}),I(6,"i",15),Y(7,"close"),O()()()()}if(2&a){const e=i.$implicit;N(2),Oi(" ",e.entity_name,"@",e.auth_name," "),N(2),Re(" ",e.perm_name," \xa0")}}function pre(a,i){if(1&a){const e=Pe();I(0,"div",7)(1,"div",8)(2,"div",9),J("click",function(d){const _=ae(e).$implicit;return q().newPermission(_),se(d.preventDefault())}),I(3,"uds-translate"),Y(4,"New permission..."),O()(),Q(5,fre,8,3,"div",10),O()()}if(2&a){const e=i.$implicit;N(5),V("ngForOf",e)}}ib.\u0275fac=function(i){return new(i||ib)(F(pt),F(Ot),F(Ci),F(Bi))},ib.\u0275cmp=we({type:ib,selectors:[["uds-new-permission"]],decls:24,vars:13,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],[3,"innerHTML"],["titleGroup",""],[1,"container"],[3,"placeholder","ngModel","valueChange","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[3,"placeholder","ngModel","ngModelChange"],[3,"options","changed"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"]],template:function(i,e){if(1&i&&(I(0,"h4",0),Q(1,lre,2,0,"uds-translate",1),he(2,"b",2),Q(3,cre,2,0,"ng-template",null,3,Nr),O(),I(5,"mat-dialog-content")(6,"div",4)(7,"mat-form-field")(8,"mat-select",5),J("valueChange",function(d){return e.changeAuth(d)})("ngModelChange",function(d){return e.authenticator=d}),Q(9,dre,2,2,"mat-option",6),O()(),I(10,"mat-form-field")(11,"mat-select",7),J("ngModelChange",function(d){return e.entity=d}),I(12,"uds-cond-select-search",8),J("changed",function(d){return e.filterUser=d}),O(),Q(13,ure,2,2,"mat-option",6),O()(),I(14,"mat-form-field")(15,"mat-select",7),J("ngModelChange",function(d){return e.permission=d}),Q(16,hre,2,2,"mat-option",6),O()()()(),I(17,"mat-dialog-actions")(18,"button",9),J("click",function(){return e.cancel()}),I(19,"uds-translate"),Y(20,"Cancel"),O()(),I(21,"button",10),J("click",function(){return e.save()}),I(22,"uds-translate"),Y(23,"Ok"),O()()()),2&i){const s=on(4);N(1),V("ngIf","user"===e.data.type)("ngIfElse",s),N(1),V("innerHTML",e.data.item.name,Rr),N(6),V("placeholder",e.getFieldLabel("auth"))("ngModel",e.authenticator),N(1),V("ngForOf",e.authenticators),N(2),V("placeholder",e.getFieldLabel(e.data.type))("ngModel",e.entity),N(1),V("options",e.entities),N(1),V("ngForOf",e.filteredEntities()),N(2),V("placeholder",e.getFieldLabel("perm"))("ngModel",e.permission),N(1),V("ngForOf",e.permissions)}},dependencies:[oi,zt,Qn,Yn,pi,nr,ir,Kn,ei,ya,$i,xn,es],styles:[".container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.container[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{width:100%}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});const mre=function(a,i){return[a,i]};class rb{constructor(i,e,s){this.api=i,this.dialogRef=e,this.data=s,this.userPermissions=[],this.groupPermissions=[]}static launch(i,e,s){const d=window.innerWidth<800?"90%":"60%";i.gui.dialog.open(rb,{width:d,data:{rest:e,item:s},disableClose:!1})}ngOnInit(){var i=this;return Xe(function*(){yield i.reload()})()}reload(){var i=this;return Xe(function*(){const e=yield i.data.rest.getPermissions(i.data.item.id);i.updatePermissions(e)})()}updatePermissions(i){this.userPermissions.length=0,this.groupPermissions.length=0;for(const e of i)"user"===e.type?this.userPermissions.push(e):this.groupPermissions.push(e)}revokePermission(i){var e=this;return Xe(function*(){(yield e.api.gui.questionDialog(django.gettext("Remove"),django.gettext("Confirm revokation of permission")+" "+i.entity_name+"@"+i.auth_name+" "+i.perm_name+""))&&(yield e.data.rest.revokePermission([i.id]),e.reload())})()}newPermission(i){var e=this;return Xe(function*(){const s=i===e.userPermissions?"user":"group",d=yield ib.launch(e.api,s,e.data.item);d&&(yield e.data.rest.addPermission(e.data.item.id,s+"s",d.entity,d.permissision),e.reload())})()}}rb.\u0275fac=function(i){return new(i||rb)(F(pt),F(Ci),F(Bi))},rb.\u0275cmp=we({type:rb,selectors:[["uds-permissions-form"]],decls:17,vars:5,consts:[["mat-dialog-title",""],[3,"innerHTML"],[1,"titles"],[1,"title"],[1,"permissions"],["class","content",4,"ngFor","ngForOf"],["mat-raised-button","","mat-dialog-close","","color","primary"],[1,"content"],[1,"perms"],[1,"perm","new",3,"click"],["class","perm",4,"ngFor","ngForOf"],[1,"perm"],[1,"owner"],[1,"permission"],[3,"click"],[1,"material-icons"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Permissions for"),O(),Y(3,"\xa0"),he(4,"b",1),O(),I(5,"mat-dialog-content")(6,"div",2)(7,"uds-translate",3),Y(8,"Users"),O(),I(9,"uds-translate",3),Y(10,"Groups"),O()(),I(11,"div",4),Q(12,pre,6,1,"div",5),O()(),I(13,"mat-dialog-actions")(14,"button",6)(15,"uds-translate"),Y(16,"Ok"),O()()()),2&i&&(N(4),V("innerHTML",e.data.item.name,Rr),N(8),V("ngForOf",Iw(2,mre,e.userPermissions,e.groupPermissions)))},dependencies:[oi,pi,qo,nr,ir,Kn,xn],styles:[".titles[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-around;margin-bottom:.4rem}.title[_ngcontent-%COMP%]{font-size:1.4rem}.permissions[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:flex-start}.perms[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:16rem;overflow-y:auto;border-color:#333;border-radius:1px;box-shadow:#00000024 0 1px 4px;margin-bottom:1rem;margin-right:1rem;padding:.5rem}.perm[_ngcontent-%COMP%]{font-family:Courier New,Courier,monospace;font-size:1.2rem;display:flex;justify-content:space-between;white-space:nowrap;flex-wrap:nowrap;margin-right:.4rem}.perm[_ngcontent-%COMP%]:hover:not(.new){background-color:#333;color:#fff;cursor:default}.owner[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:.2rem}.new[_ngcontent-%COMP%]{color:#00f;justify-content:center}.new[_ngcontent-%COMP%]:hover{color:#fff;background-color:#00f;cursor:pointer}.content[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;justify-content:space-between}.material-icons[_ngcontent-%COMP%]{font-size:1em;padding-bottom:1px}.material-icons[_ngcontent-%COMP%]:hover{cursor:pointer;color:red}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});var Uq=kn(900);const Zee=a=>(void 0!==a.changingThisBreaksApplicationSecurity&&(a=a.changingThisBreaksApplicationSecurity.replace(/<.*>/g,"")),'"'+(a=""+a).replace('"','""')+'"'),Kee=a=>{let i="";a.columns.forEach(d=>{i+=Zee(d.title)+","}),i=i.slice(0,-1)+"\r\n";const e=a.dataSource.data;for(const d of e){for(const f of a.columns){let _=d[f.name];switch(f.type){case Cr.DATE:_=zs("SHORT_DATE_FORMAT",_);break;case Cr.DATETIME:_=zs("SHORT_DATETIME_FORMAT",_);break;case Cr.DATETIMESEC:_=zs("SHORT_DATE_FORMAT",_," H:i:s");break;case Cr.TIME:_=zs("TIME_FORMAT",_)}i+=Zee(_)+","}i=i.slice(0,-1)+"\r\n"}const s=new Blob([i],{type:"text/csv"});setTimeout(()=>{(0,Uq.saveAs)(s,a.title+".csv")})};class vre{constructor(i,e){this._document=e;const s=this._textarea=this._document.createElement("textarea"),d=s.style;d.position="fixed",d.top=d.opacity="0",d.left="-999em",s.setAttribute("aria-hidden","true"),s.value=i,s.readOnly=!0,this._document.body.appendChild(s)}copy(){const i=this._textarea;let e=!1;try{if(i){const s=this._document.activeElement;i.select(),i.setSelectionRange(0,i.value.length),e=this._document.execCommand("copy"),s&&s.focus()}}catch{}return e}destroy(){const i=this._textarea;i&&(i.remove(),this._textarea=void 0)}}let _re=(()=>{class a{constructor(e){this._document=e}copy(e){const s=this.beginCopy(e),d=s.copy();return s.destroy(),d}beginCopy(e){return new vre(e,this._document)}}return a.\u0275fac=function(e){return new(e||a)(oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),yre=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})();const bre=["mat-menu-item",""];function wre(a,i){1&a&&(Pr(),I(0,"svg",3),he(1,"polygon",4),O())}const xre=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],Cre=["mat-icon, [matMenuItemIcon]","*"];function Sre(a,i){if(1&a){const e=Pe();I(0,"div",0),J("keydown",function(d){return ae(e),se(q()._handleKeydown(d))})("click",function(){return ae(e),se(q().closed.emit("click"))})("@transformMenu.start",function(d){return ae(e),se(q()._onAnimationStart(d))})("@transformMenu.done",function(d){return ae(e),se(q()._onAnimationDone(d))}),I(1,"div",1),ht(2),O()()}if(2&a){const e=q();V("id",e.panelId)("ngClass",e._classList)("@transformMenu",e._panelAnimationState),He("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}const Dre=["*"],jq=new _e("MAT_MENU_PANEL"),Mre=vc(mc(class{}));let _P=(()=>{class a extends Mre{constructor(e,s,d,f,_){var w;super(),this._elementRef=e,this._document=s,this._focusMonitor=d,this._parentMenu=f,this._changeDetectorRef=_,this.role="menuitem",this._hovered=new Ue,this._focused=new Ue,this._highlighted=!1,this._triggersSubmenu=!1,null==f||null===(w=f.addItem)||void 0===w||w.call(f,this)}focus(e,s){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,s):this._getHostElement().focus(s),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){var e;const s=this._elementRef.nativeElement.cloneNode(!0),d=s.querySelectorAll("mat-icon, .material-icons");for(let f=0;f{class a{constructor(e,s,d,f,_,w,D){this._template=e,this._componentFactoryResolver=s,this._appRef=d,this._injector=f,this._viewContainerRef=_,this._document=w,this._changeDetectorRef=D,this._attached=new Ue}attach(e={}){var s;this._portal||(this._portal=new fc(this._template,this._viewContainerRef)),this.detach(),this._outlet||(this._outlet=new UV(this._document.createElement("div"),this._componentFactoryResolver,this._appRef,this._injector));const d=this._template.elementRef.nativeElement;d.parentNode.insertBefore(this._outlet.outletElement,d),null===(s=this._changeDetectorRef)||void 0===s||s.markForCheck(),this._portal.attach(this._outlet,e),this._attached.next()}detach(){this._portal.isAttached&&this._portal.detach()}ngOnDestroy(){this._outlet&&this._outlet.dispose()}}return a.\u0275fac=function(e){return new(e||a)(F(hi),F(ca),F(cf),F(Gi),F(Hn),F(bt),F(Zt))},a.\u0275dir=me({type:a}),a})(),Are=(()=>{class a extends Tre{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["ng-template","matMenuContent",""]],features:[et([{provide:Qee,useExisting:a}]),Se]}),a})();const I4={transformMenu:tr("transformMenu",[Bn("void",ft({opacity:0,transform:"scale(0.8)"})),Mn("void => enter",Tn("120ms cubic-bezier(0, 0, 0.2, 1)",ft({opacity:1,transform:"scale(1)"}))),Mn("* => void",Tn("100ms 25ms linear",ft({opacity:0})))]),fadeInItems:tr("fadeInItems",[Bn("showing",ft({opacity:1})),Mn("void => *",[ft({opacity:0}),Tn("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let kre=0;const Jee=new _e("mat-menu-default-options",{providedIn:"root",factory:function Ere(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}});let yP=(()=>{class a{get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}get overlapTrigger(){return this._overlapTrigger}set overlapTrigger(e){this._overlapTrigger=We(e)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(e){this._hasBackdrop=We(e)}set panelClass(e){const s=this._previousPanelClass;s&&s.length&&s.split(" ").forEach(d=>{this._classList[d]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(d=>{this._classList[d]=!0}),this._elementRef.nativeElement.className="")}get classList(){return this.panelClass}set classList(e){this.panelClass=e}constructor(e,s,d,f){this._elementRef=e,this._ngZone=s,this._defaultOptions=d,this._changeDetectorRef=f,this._xPosition=this._defaultOptions.xPosition,this._yPosition=this._defaultOptions.yPosition,this._directDescendantItems=new lu,this._classList={},this._panelAnimationState="void",this._animationDone=new Ue,this.overlayPanelClass=this._defaultOptions.overlayPanelClass||"",this.backdropClass=this._defaultOptions.backdropClass,this._overlapTrigger=this._defaultOptions.overlapTrigger,this._hasBackdrop=this._defaultOptions.hasBackdrop,this.closed=new ye,this.close=this.closed,this.panelId="mat-menu-panel-"+kre++}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new pE(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(Ji(this._directDescendantItems),Qi(e=>Mi(...e.map(s=>s._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{var s;const d=this._keyManager;if("enter"===this._panelAnimationState&&null!==(s=d.activeItem)&&void 0!==s&&s._hasFocus()){const f=e.toArray(),_=Math.max(0,Math.min(f.length-1,d.activeItemIndex||0));f[_]&&!f[_].disabled?d.setActiveItem(_):d.setNextItemActive()}})}ngOnDestroy(){var e,s;null===(e=this._keyManager)||void 0===e||e.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),null===(s=this._firstItemFocusSubscription)||void 0===s||s.unsubscribe()}_hovered(){return this._directDescendantItems.changes.pipe(Ji(this._directDescendantItems),Qi(s=>Mi(...s.map(d=>d._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){const s=e.keyCode,d=this._keyManager;switch(s){case 27:pr(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case 39:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(38===s||40===s)&&d.setFocusOrigin("keyboard"),void d.onKeydown(e)}e.stopPropagation()}focusFirstItem(e="program"){var s;null===(s=this._firstItemFocusSubscription)||void 0===s||s.unsubscribe(),this._firstItemFocusSubscription=this._ngZone.onStable.pipe(Pn(1)).subscribe(()=>{let d=null;if(this._directDescendantItems.length&&(d=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!d||!d.contains(document.activeElement)){const f=this._keyManager;f.setFocusOrigin(e).setFirstItemActive(),!f.activeItem&&d&&d.focus()}})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){const s=Math.min(this._baseElevation+e,24),d=`${this._elevationPrefix}${s}`,f=Object.keys(this._classList).find(_=>_.startsWith(this._elevationPrefix));(!f||f===this._previousElevation)&&(this._previousElevation&&(this._classList[this._previousElevation]=!1),this._classList[d]=!0,this._previousElevation=d)}setPositionClasses(e=this.xPosition,s=this.yPosition){var d;const f=this._classList;f["mat-menu-before"]="before"===e,f["mat-menu-after"]="after"===e,f["mat-menu-above"]="above"===s,f["mat-menu-below"]="below"===s,null===(d=this._changeDetectorRef)||void 0===d||d.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(e){this._animationDone.next(e),this._isAnimating=!1}_onAnimationStart(e){this._isAnimating=!0,"enter"===e.toState&&0===this._keyManager.activeItemIndex&&(e.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe(Ji(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(s=>s._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Je),F(Jee),F(Zt))},a.\u0275dir=me({type:a,contentQueries:function(e,s,d){if(1&e&&(hn(d,Qee,5),hn(d,_P,5),hn(d,_P,4)),2&e){let f;Ee(f=Oe())&&(s.lazyContent=f.first),Ee(f=Oe())&&(s._allItems=f),Ee(f=Oe())&&(s.items=f)}},viewQuery:function(e,s){if(1&e&&ot(hi,5),2&e){let d;Ee(d=Oe())&&(s.templateRef=d.first)}},inputs:{backdropClass:"backdropClass",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:"overlapTrigger",hasBackdrop:"hasBackdrop",panelClass:["class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"}}),a})(),ete=(()=>{class a extends yP{constructor(e,s,d,f){super(e,s,d,f),this._elevationPrefix="mat-elevation-z",this._baseElevation=8}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Je),F(Jee),F(Zt))},a.\u0275cmp=we({type:a,selectors:[["mat-menu"]],hostVars:3,hostBindings:function(e,s){2&e&&He("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},exportAs:["matMenu"],features:[et([{provide:jq,useExisting:a}]),Se],ngContentSelectors:Dre,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mdc-menu-surface","mdc-menu-surface--open","mat-mdc-elevation-specific",3,"id","ngClass","keydown","click"],[1,"mat-mdc-menu-content","mdc-list"]],template:function(e,s){1&e&&(Fn(),Q(0,Sre,3,6,"ng-template"))},dependencies:[Ps],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item.mdc-list-item{align-items:center}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[I4.transformMenu,I4.fadeInItems]},changeDetection:0}),a})();const tte=new _e("mat-menu-scroll-strategy"),Pre={provide:tte,deps:[ta],useFactory:function Ire(a){return()=>a.scrollStrategies.reposition()}},nte=Au({passive:!0});let Rre=(()=>{class a{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){var s;e!==this._menu&&(this._menu=e,this._menuCloseSubscription.unsubscribe(),e&&(this._menuCloseSubscription=e.close.subscribe(d=>{this._destroyMenu(d),("click"===d||"tab"===d)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(d)})),null===(s=this._menuItemInstance)||void 0===s||s._setTriggersSubmenu(this.triggersSubmenu()))}constructor(e,s,d,f,_,w,D,k,P){this._overlay=e,this._element=s,this._viewContainerRef=d,this._menuItemInstance=w,this._dir=D,this._focusMonitor=k,this._ngZone=P,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=xt.EMPTY,this._hoverSubscription=xt.EMPTY,this._menuCloseSubscription=xt.EMPTY,this._changeDetectorRef=Gt(Zt),this._handleTouchStart=z=>{yE(z)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new ye,this.onMenuOpen=this.menuOpened,this.menuClosed=new ye,this.onMenuClose=this.menuClosed,this._scrollStrategy=f,this._parentMaterialMenu=_ instanceof yP?_:void 0,s.nativeElement.addEventListener("touchstart",this._handleTouchStart,nte)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,nte),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){const e=this.menu;if(this._menuOpen||!e)return;const s=this._createOverlay(e),d=s.getConfig(),f=d.positionStrategy;this._setPosition(e,f),d.hasBackdrop=null==e.hasBackdrop?!this.triggersSubmenu():e.hasBackdrop,s.attach(this._getPortal(e)),e.lazyContent&&e.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(e),e instanceof yP&&(e._startAnimation(),e._directDescendantItems.changes.pipe(Tt(e.close)).subscribe(()=>{f.withLockedPosition(!1).reapplyLastPosition(),f.withLockedPosition(!0)}))}closeMenu(){var e;null===(e=this.menu)||void 0===e||e.close.emit()}focus(e,s){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,s):this._element.nativeElement.focus(s)}updatePosition(){var e;null===(e=this._overlayRef)||void 0===e||e.updatePosition()}_destroyMenu(e){if(!this._overlayRef||!this.menuOpen)return;const s=this.menu;var d;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&("keydown"===e||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,s instanceof yP?(s._resetAnimation(),s.lazyContent?s._animationDone.pipe(fi(f=>"void"===f.toState),Pn(1),Tt(s.lazyContent._attached)).subscribe({next:()=>s.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),null==s||null===(d=s.lazyContent)||void 0===d||d.detach())}_initMenu(e){e.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,e.direction=this.dir,this._setMenuElevation(e),e.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(e){if(e.setElevation){let s=0,d=e.parentMenu;for(;d;)s++,d=d.parentMenu;e.setElevation(s)}}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){const s=this._getOverlayConfig(e);this._subscribeToPositions(e,s.positionStrategy),this._overlayRef=this._overlay.create(s),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(e){return new md({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(e,s){e.setPositionClasses&&s.positionChanges.subscribe(d=>{const f="start"===d.connectionPair.overlayX?"after":"before",_="top"===d.connectionPair.overlayY?"below":"above";this._ngZone?this._ngZone.run(()=>e.setPositionClasses(f,_)):e.setPositionClasses(f,_)})}_setPosition(e,s){let[d,f]="before"===e.xPosition?["end","start"]:["start","end"],[_,w]="above"===e.yPosition?["bottom","top"]:["top","bottom"],[D,k]=[_,w],[P,z]=[d,f],W=0;if(this.triggersSubmenu()){if(z=d="before"===e.xPosition?"start":"end",f=P="end"===d?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const Z=this._parentMaterialMenu.items.first;this._parentInnerPadding=Z?Z._getHostElement().offsetTop:0}W="bottom"===_?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(D="top"===_?"bottom":"top",k="top"===w?"bottom":"top");s.withPositions([{originX:d,originY:D,overlayX:P,overlayY:_,offsetY:W},{originX:f,originY:D,overlayX:z,overlayY:_,offsetY:W},{originX:d,originY:k,overlayX:P,overlayY:w,offsetY:-W},{originX:f,originY:k,overlayX:z,overlayY:w,offsetY:-W}])}_menuClosingActions(){const e=this._overlayRef.backdropClick(),s=this._overlayRef.detachments();return Mi(e,this._parentMaterialMenu?this._parentMaterialMenu.closed:je(),this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(fi(_=>_!==this._menuItemInstance),fi(()=>this._menuOpen)):je(),s)}_handleMousedown(e){_E(e)||(this._openedBy=0===e.button?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){const s=e.keyCode;(13===s||32===s)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(39===s&&"ltr"===this.dir||37===s&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe(fi(e=>e===this._menuItemInstance&&!e.disabled),T4(0,Mu)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof yP&&this.menu._isAnimating?this.menu._animationDone.pipe(Pn(1),T4(0,Mu),Tt(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new fc(e.templateRef,this._viewContainerRef)),this._portal}}return a.\u0275fac=function(e){return new(e||a)(F(ta),F(Be),F(Hn),F(tte),F(jq,8),F(_P,10),F(Ni,8),F(Wo),F(Je))},a.\u0275dir=me({type:a,hostVars:3,hostBindings:function(e,s){1&e&&J("click",function(f){return s._handleClick(f)})("mousedown",function(f){return s._handleMousedown(f)})("keydown",function(f){return s._handleKeydown(f)}),2&e&&He("aria-haspopup",s.menu?"menu":null)("aria-expanded",s.menuOpen)("aria-controls",s.menuOpen?s.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:["mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:["matMenuTriggerFor","menu"],menuData:["matMenuTriggerData","menuData"],restoreFocus:["matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"}}),a})(),ite=(()=>{class a extends Rre{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],exportAs:["matMenuTrigger"],features:[Se]}),a})(),Ore=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[Pre],imports:[zr,io,Qt,Iu,Nf,Qt]}),a})();const rte=Au({passive:!0});let Lre=(()=>{class a{constructor(e,s){this._platform=e,this._ngZone=s,this._monitoredElements=new Map}monitor(e){if(!this._platform.isBrowser)return ni;const s=hd(e),d=this._monitoredElements.get(s);if(d)return d.subject;const f=new Ue,_="cdk-text-field-autofilled",w=D=>{"cdk-text-field-autofill-start"!==D.animationName||s.classList.contains(_)?"cdk-text-field-autofill-end"===D.animationName&&s.classList.contains(_)&&(s.classList.remove(_),this._ngZone.run(()=>f.next({target:D.target,isAutofilled:!1}))):(s.classList.add(_),this._ngZone.run(()=>f.next({target:D.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{s.addEventListener("animationstart",w,rte),s.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(s,{subject:f,unlisten:()=>{s.removeEventListener("animationstart",w,rte)}}),f}stopMonitoring(e){const s=hd(e),d=this._monitoredElements.get(s);d&&(d.unlisten(),d.subject.complete(),s.classList.remove("cdk-text-field-autofill-monitored"),s.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(s))}ngOnDestroy(){this._monitoredElements.forEach((e,s)=>this.stopMonitoring(s))}}return a.\u0275fac=function(e){return new(e||a)(oe(si),oe(Je))},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})(),Fre=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})();const ate=new _e("MAT_INPUT_VALUE_ACCESSOR"),Nre=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let Bre=0;const Vre=B3(class{constructor(a,i,e,s){this._defaultErrorStateMatcher=a,this._parentForm=i,this._parentFormGroup=e,this.ngControl=s,this.stateChanges=new Ue}});let wa=(()=>{class a extends Vre{get disabled(){return this._disabled}set disabled(e){this._disabled=We(e),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(e){this._id=e||this._uid}get required(){var e,s,d,f;return null!==(e=null!==(s=this._required)&&void 0!==s?s:null===(d=this.ngControl)||void 0===d||null===(f=d.control)||void 0===f?void 0:f.hasValidator(t1.required))&&void 0!==e&&e}set required(e){this._required=We(e)}get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&PV().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get value(){return this._inputValueAccessor.value}set value(e){e!==this.value&&(this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=We(e)}constructor(e,s,d,f,_,w,D,k,P,z){super(w,f,_,d),this._elementRef=e,this._platform=s,this._autofillMonitor=k,this._formField=z,this._uid="mat-input-"+Bre++,this.focused=!1,this.stateChanges=new Ue,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(te=>PV().has(te)),this._iOSKeyupListener=te=>{const re=te.target;!re.value&&0===re.selectionStart&&0===re.selectionEnd&&(re.setSelectionRange(1,1),re.setSelectionRange(0,0))};const W=this._elementRef.nativeElement,Z=W.nodeName.toLowerCase();this._inputValueAccessor=D||W,this._previousNativeValue=this.value,this.id=this.id,s.IOS&&P.runOutsideAngular(()=>{e.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===Z,this._isTextarea="textarea"===Z,this._isInFormField=!!z,this._isNativeSelect&&(this.controlType=W.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}_focusChanged(e){e!==this.focused&&(this.focused=e,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const s=this._elementRef.nativeElement;this._previousPlaceholder=e,e?s.setAttribute("placeholder",e):s.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){Nre.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,s=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&s&&s.label)}return this.focused||!this.empty}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(si),F(So,10),F(wd,8),F(sg,8),F(AE),F(ate,10),F(Lre),F(Je),F(mg,8))},a.\u0275dir=me({type:a,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(e,s){1&e&&J("focus",function(){return s._focusChanged(!0)})("blur",function(){return s._focusChanged(!1)})("input",function(){return s._onInput()}),2&e&&(Oa("id",s.id)("disabled",s.disabled)("required",s.required),He("name",s.name||null)("readonly",s.readonly&&!s._isNativeSelect||null)("aria-invalid",s.empty&&s.required?null:s.errorState)("aria-required",s.required)("id",s.id),at("mat-input-server",s._isServer)("mat-mdc-form-field-textarea-control",s._isInFormField&&s._isTextarea)("mat-mdc-form-field-input-control",s._isInFormField)("mdc-text-field__input",s._isInFormField)("mat-mdc-native-select-inline",s._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],features:[et([{provide:F1,useExisting:a}]),Se,$n]}),a})(),zre=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,N1,N1,Fre,Qt]}),a})();class bP{transform(i,e){let s;return s=void 0===e?(d,f)=>d>f?1:-1:(d,f)=>d[e]>f[e]?1:-1,i.sort(s)}}bP.\u0275fac=function(i){return new(i||bP)},bP.\u0275pipe=it({name:"sort",type:bP,pure:!0});const Hre=["trigger"];function Gre(a,i){1&a&&he(0,"img",36),2&a&&V("src",q().icon,tn)}function Ure(a,i){if(1&a){const e=Pe();I(0,"button",46),J("click",function(){const f=ae(e).$implicit,_=q(5);return se(_.newAction.emit({param:f,table:_}))}),O()}if(2&a){const e=i.$implicit,s=q(5);V("innerHTML",s.api.safeString(s.api.gui.icon(e.icon)+e.name),Rr)}}function jre(a,i){if(1&a&&(gn(0),I(1,"button",42),Y(2),O(),I(3,"mat-menu",43,44),Q(5,Ure,1,1,"button",45),Yc(6,"sort"),O(),vn()),2&a){const e=i.$implicit,s=on(4);N(1),V("matMenuTriggerFor",s),N(1),In(e.key),N(1),V("overlapTrigger",!1),N(2),V("ngForOf",pa(6,4,e.value,"name"))}}function $re(a,i){if(1&a&&(gn(0),I(1,"mat-menu",37,38),Q(3,jre,7,7,"ng-container",39),Yc(4,"keyvalue"),O(),I(5,"a",40)(6,"i",17),Y(7,"insert_drive_file"),O(),I(8,"span",41)(9,"uds-translate"),Y(10,"New"),O()(),I(11,"i",17),Y(12,"arrow_drop_down"),O()(),vn()),2&a){const e=on(2),s=q(3);N(1),V("overlapTrigger",!1),N(2),V("ngForOf",Jp(4,3,s.grpTypes)),N(2),V("matMenuTriggerFor",e)}}function Wre(a,i){if(1&a){const e=Pe();I(0,"button",46),J("click",function(){const f=ae(e).$implicit,_=q(4);return se(_.newAction.emit({param:f,table:_}))}),O()}if(2&a){const e=i.$implicit,s=q(4);V("innerHTML",s.api.safeString(s.api.gui.icon(e.icon)+e.name),Rr)}}function Yre(a,i){if(1&a&&(gn(0),I(1,"mat-menu",37,38),Q(3,Wre,1,1,"button",45),Yc(4,"sort"),O(),I(5,"a",40)(6,"i",17),Y(7,"insert_drive_file"),O(),I(8,"span",41)(9,"uds-translate"),Y(10,"New"),O()(),I(11,"i",17),Y(12,"arrow_drop_down"),O()(),vn()),2&a){const e=on(2),s=q(3);N(1),V("overlapTrigger",!1),N(2),V("ngForOf",pa(4,3,s.oTypes,"name")),N(2),V("matMenuTriggerFor",e)}}function qre(a,i){if(1&a&&(gn(0),Q(1,$re,13,5,"ng-container",8),Q(2,Yre,13,6,"ng-container",8),vn()),2&a){const e=q(2);N(1),V("ngIf",e.newGrouped),N(1),V("ngIf",!e.newGrouped)}}function Xre(a,i){if(1&a){const e=Pe();gn(0),I(1,"a",47),J("click",function(){ae(e);const d=q(2);return se(d.newAction.emit({param:void 0,table:d}))}),I(2,"i",17),Y(3,"insert_drive_file"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"New"),O()()(),vn()}}function Zre(a,i){if(1&a&&(gn(0),Q(1,qre,3,2,"ng-container",8),Q(2,Xre,7,0,"ng-container",8),vn()),2&a){const e=q();N(1),V("ngIf",void 0!==e.oTypes&&0!==e.oTypes.length),N(1),V("ngIf",void 0!==e.oTypes&&0===e.oTypes.length)}}function Kre(a,i){if(1&a){const e=Pe();gn(0),I(1,"a",48),J("click",function(){ae(e);const d=q();return se(d.emitIfSelection(d.editAction))}),I(2,"i",17),Y(3,"edit"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Edit"),O()()(),vn()}if(2&a){const e=q();N(1),V("disabled",1!==e.selection.selected.length)}}function Qre(a,i){if(1&a){const e=Pe();gn(0),I(1,"a",48),J("click",function(){return ae(e),se(q().permissions())}),I(2,"i",17),Y(3,"perm_identity"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Permissions"),O()()(),vn()}if(2&a){const e=q();N(1),V("disabled",1!==e.selection.selected.length)}}function Jre(a,i){if(1&a){const e=Pe();I(0,"a",50),J("click",function(){const f=ae(e).$implicit;return se(q(2).emitCustom(f))}),O()}if(2&a){const e=i.$implicit;V("disabled",q(2).isCustomDisabled(e))("innerHTML",e.html,Rr)}}function eae(a,i){if(1&a&&(gn(0),Q(1,Jre,1,2,"a",49),vn()),2&a){const e=q();N(1),V("ngForOf",e.getcustomButtons())}}function tae(a,i){if(1&a){const e=Pe();gn(0),I(1,"a",51),J("click",function(){return ae(e),se(q().export())}),I(2,"i",17),Y(3,"import_export"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Export"),O()()(),vn()}}function nae(a,i){if(1&a){const e=Pe();gn(0),I(1,"a",52),J("click",function(){ae(e);const d=q();return se(d.emitIfSelection(d.deleteAction,!0))}),I(2,"i",17),Y(3,"delete_forever"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Delete"),O()()(),vn()}if(2&a){const e=q();N(1),V("disabled",e.selection.isEmpty())}}function iae(a,i){if(1&a){const e=Pe();I(0,"button",53),J("click",function(){ae(e);const d=q();return d.filterText="",se(d.applyFilter())}),I(1,"i",17),Y(2,"clear"),O()()}}function rae(a,i){1&a&&he(0,"mat-header-cell")}function aae(a,i){1&a&&(I(0,"i",59),Y(1,"check_box"),O())}function oae(a,i){1&a&&(I(0,"i",60),Y(1,"check_box_outline_blank"),O())}function sae(a,i){if(1&a){const e=Pe();I(0,"mat-cell",56),J("click",function(d){const _=ae(e).$implicit;return se(q(2).clickRow(_,d))}),Q(1,aae,2,0,"i",57),Q(2,oae,2,0,"ng-template",null,58,Nr),O()}if(2&a){const e=i.$implicit,s=on(3),d=q(2);N(1),V("ngIf",d.selection.isSelected(e))("ngIfElse",s)}}function lae(a,i){1&a&&(gn(0,54),Q(1,rae,1,0,"mat-header-cell",22),Q(2,sae,4,2,"mat-cell",55),vn())}function cae(a,i){1&a&&he(0,"mat-header-cell")}function dae(a,i){if(1&a){const e=Pe();I(0,"mat-cell")(1,"div",61),J("click",function(d){const _=ae(e).$implicit,w=q();return w.detailAction.emit({param:_,table:w}),se(d.stopPropagation())}),I(2,"i",17),Y(3,"subdirectory_arrow_right"),O()()()}}function uae(a,i){if(1&a&&(I(0,"mat-header-cell",65),Y(1),O()),2&a){const e=q().$implicit;N(1),In(e.title)}}function hae(a,i){if(1&a){const e=Pe();I(0,"mat-cell",66),J("click",function(d){const _=ae(e).$implicit;return se(q(2).clickRow(_,d))})("contextmenu",function(d){const _=ae(e).$implicit,w=q().$implicit;return se(q().onContextMenu(_,w,d))}),he(1,"div",67),O()}if(2&a){const e=i.$implicit,s=q().$implicit,d=q();N(1),V("innerHtml",d.getRowColumn(e,s),Rr)}}function fae(a,i){1&a&&(gn(0,62),Q(1,uae,2,1,"mat-header-cell",63),Q(2,hae,2,1,"mat-cell",64),vn()),2&a&&jc("matColumnDef",i.$implicit.name)}function pae(a,i){1&a&&he(0,"mat-header-row")}function mae(a,i){if(1&a&&he(0,"mat-row",68),2&a){const e=i.$implicit;V("ngClass",q().rowClass(e))}}function gae(a,i){if(1&a&&(I(0,"div",69),Y(1),I(2,"uds-translate"),Y(3,"Selected items"),O()()),2&a){const e=q();N(1),Re(" ",e.selection.selected.length," ")}}function vae(a,i){if(1&a){const e=Pe();I(0,"button",73),J("click",function(){return ae(e),se(q(2).copyToClipboard())}),I(1,"i",74),Y(2,"content_copy"),O(),I(3,"uds-translate"),Y(4,"Copy"),O()()}}function _ae(a,i){if(1&a){const e=Pe();I(0,"button",73),J("click",function(){ae(e);const d=q().item,f=q();return se(f.detailAction.emit({param:d,table:f}))}),I(1,"i",74),Y(2,"subdirectory_arrow_right"),O(),I(3,"uds-translate"),Y(4,"Detail"),O()()}}function yae(a,i){if(1&a){const e=Pe();I(0,"button",73),J("click",function(){ae(e);const d=q(2);return se(d.emitIfSelection(d.editAction))}),I(1,"i",74),Y(2,"edit"),O(),I(3,"uds-translate"),Y(4,"Edit"),O()()}}function bae(a,i){if(1&a){const e=Pe();I(0,"button",73),J("click",function(){return ae(e),se(q(2).permissions())}),I(1,"i",74),Y(2,"perm_identity"),O(),I(3,"uds-translate"),Y(4,"Permissions"),O()()}}function wae(a,i){if(1&a){const e=Pe();I(0,"button",75),J("click",function(){const f=ae(e).$implicit;return se(q(2).emitCustom(f))}),O()}if(2&a){const e=i.$implicit;V("disabled",q(2).isCustomDisabled(e))("innerHTML",e.html,Rr)}}function xae(a,i){if(1&a){const e=Pe();I(0,"button",76),J("click",function(){ae(e);const d=q(2);return se(d.emitIfSelection(d.deleteAction))}),I(1,"i",74),Y(2,"delete_forever"),O(),I(3,"uds-translate"),Y(4,"Delete"),O()()}}function Cae(a,i){if(1&a){const e=Pe();I(0,"button",75),J("click",function(){const f=ae(e).$implicit;return se(q(3).emitCustom(f))}),O()}if(2&a){const e=i.$implicit;V("disabled",q(3).isCustomDisabled(e))("innerHTML",e.html,Rr)}}function Sae(a,i){if(1&a&&(gn(0),he(1,"mat-divider"),Q(2,Cae,1,2,"button",71),vn()),2&a){const e=q(2);N(2),V("ngForOf",e.getCustomAccelerators())}}function Dae(a,i){if(1&a&&(Q(0,vae,5,0,"button",70),Q(1,_ae,5,0,"button",70),Q(2,yae,5,0,"button",70),Q(3,bae,5,0,"button",70),Q(4,wae,1,2,"button",71),Q(5,xae,5,0,"button",72),Q(6,Sae,3,1,"ng-container",8)),2&a){const e=q();V("ngIf",!0===e.allowCopy),N(1),V("ngIf",e.detailAction.observed),N(1),V("ngIf",e.editAction.observed),N(1),V("ngIf",!0===e.hasPermissions),N(1),V("ngForOf",e.getCustomMenu()),N(1),V("ngIf",e.deleteAction.observed),N(1),V("ngIf",e.hasAccelerators)}}const Mae=function(){return[5,10,25,100,1e3]};class mi{constructor(i,e){this.api=i,this.clipboard=e,this.contextMenu={},this.paginator={},this.sort={},this.rest={},this.tableId="",this.pageSize=10,this.newGrouped=!1,this.allowCopy=!0,this.loaded=new ye,this.rowSelected=new ye,this.newAction=new ye,this.editAction=new ye,this.deleteAction=new ye,this.customButtonAction=new ye,this.detailAction=new ye,this.title="",this.subtitle="",this.displayedColumns=[],this.columns=[],this.types=new Map,this.oTypes=[],this.grpTypes=new Map,this.rowStyleInfo=null,this.selection=new Zy(!0,[]),this.lastSel=null,this.dataSource=new Iee([]),this.firstLoad=!0,this.loading=!1,this.lastClickInfo={time:0,x:-1e4,y:-1e4},this.clipValue="",this.contextMenuPosition={x:"0px",y:"0px"},this.filterText="",this.hasCustomButtons=!1,this.hasButtons=!1,this.hasActions=!1,this.hasAccelerators=!1}ngOnInit(){var i=this;return Xe(function*(){i.hasCustomButtons=!(void 0===i.customButtons||0===i.customButtons.length||!i.customButtonAction.observed)&&i.getcustomButtons().length>0,i.hasAccelerators=i.getCustomAccelerators().length>0,i.hasButtons=i.hasCustomButtons||i.detailAction.observed||i.editAction.observed||i.hasPermissions||i.deleteAction.observed,i.hasActions=i.hasButtons||void 0!==i.customButtons&&i.customButtons.length>0,i.tableId=i.tableId||i.rest.id,i.dataSource.paginator=i.paginator,i.dataSource.sort=i.sort,i.dataSource.sortingDataAccessor=(f,_)=>{if(!(_ in f))return"";let w=f[_];return"number"==typeof w?w:"string"==typeof w?w.toLocaleLowerCase():(null===w&&(w=7226578800),w.changingThisBreaksApplicationSecurity&&(w=w.changingThisBreaksApplicationSecurity),(""+w).replace(/<(span|\/span)[^>]*>/g,"").toLocaleLowerCase())},i.dataSource.filterPredicate=(f,_)=>{try{i.columns.forEach(w=>{if((""+f[w.name]).replace(/<(span|\/span)[^>]*>/g,"").toLocaleLowerCase().includes(_))throw Error()})}catch{return!0}return!1},i.dataSource.sort.active=i.api.getFromStorage(i.tableId+"sort-column")||"name",i.dataSource.sort.direction=i.api.getFromStorage(i.tableId+"sort-direction")||"asc",i.filterText=i.api.getFromStorage(i.tableId+"filterValue")||"",i.applyFilter(),i.selection=new Zy(!0===i.multiSelect,[]);const e=i.rest.permision();e&Cl.MANAGEMENT||(i.newAction.unsubscribe(),i.editAction.unsubscribe(),i.deleteAction.unsubscribe(),i.customButtonAction.unsubscribe()),e!==Cl.ALL&&(i.hasPermissions=!1),void 0!==i.icon&&(i.icon=i.api.staticURL("admin/img/icons/"+i.icon+".png"));const s=yield i.rest.types(),d=yield i.rest.tableInfo();yield i.initialize(d,s)})()}initialize(i,e){var s=this;return Xe(function*(){s.oTypes=e,s.types=new Map,s.grpTypes=new Map;for(const f of e)if(s.types.set(f.type,f),void 0!==f.group){s.grpTypes.has(f.group)||s.grpTypes.set(f.group,[]);const _=s.grpTypes.get(f.group);void 0!==_&&_.push(f)}s.rowStyleInfo=void 0!==i["row-style"]&&void 0!==i["row-style"].field?i["row-style"]:null,s.title=i.title,s.subtitle=i.subtitle||"",s.hasButtons&&s.displayedColumns.push("selection-column");const d=[];for(const f of i.fields)for(const _ in f)if(f.hasOwnProperty(_)){const w=f[_];d.push({name:_,title:w.title,type:void 0===w.type?Cr.ALPHANUMERIC:w.type,dict:w.dict}),(void 0===w.visible||w.visible)&&s.displayedColumns.push(_)}s.columns=d,s.detailAction.observed&&s.displayedColumns.push("detail-column"),yield s.overview()})()}overview(){var i=this;return Xe(function*(){if(!i.loading){i.selection.clear(),i.dataSource.data=[],i.loading=!0;try{const e=yield i.rest.overview();if(i.onItem)for(const s of e)i.onItem(s);i.dataSource.data=e,i.loaded.emit({param:i.firstLoad,table:i}),i.firstLoad=!1}finally{i.loading=!1}}})()}getcustomButtons(){return this.customButtons?this.customButtons.filter(i=>i.type!==Jn.ONLY_MENU&&i.type!==Jn.ACCELERATOR):[]}getCustomMenu(){return this.customButtons?this.customButtons.filter(i=>i.type!==Jn.ACCELERATOR):[]}getCustomAccelerators(){return this.customButtons?this.customButtons.filter(i=>i.type===Jn.ACCELERATOR):[]}getRowColumn(i,e){let s=i[e.name];switch(e.type){case Cr.IMAGE:return this.api.safeString(this.api.gui.icon(s,"48px"));case Cr.DATE:s=zs("SHORT_DATE_FORMAT",s);break;case Cr.DATETIME:s=zs("SHORT_DATETIME_FORMAT",s);break;case Cr.TIME:s=zs("TIME_FORMAT",s);break;case Cr.DATETIMESEC:s=zs("SHORT_DATE_FORMAT",s," H:i:s");break;case Cr.ICON:try{s=this.api.gui.icon(this.types.get(i.type).icon)+s}catch{}return this.api.safeString(s);case Cr.CALLBACK:break;case Cr.DICTIONARY:try{s=e.dict[s]}catch{s=""}}return s}applyFilter(){this.api.putOnStorage(this.tableId+"filterValue",this.filterText),this.dataSource.filter=this.filterText.trim().toLowerCase()}sortChanged(i){this.api.putOnStorage(this.tableId+"sort-column",i.active),this.api.putOnStorage(this.tableId+"sort-direction",i.direction)}copyToClipboard(){this.clipboard.copy(this.clipValue||"")}rowClass(i){const e=[];return this.selection.isSelected(i)&&e.push("selected"),null!==this.rowStyleInfo&&e.push(this.rowStyleInfo.prefix+i[this.rowStyleInfo.field]),e}emitIfSelection(i,e=!1){const s=this.selection.selected.length;s>0&&(!0===e||1===s)&&i.emit({table:this,param:s})}isCustomDisabled(i){switch(i.type){case void 0:case Jn.SINGLE_SELECT:return 1!==this.selection.selected.length||!0===i.disabled;case Jn.MULTI_SELECT:return this.selection.isEmpty()||!0===i.disabled;default:return!1}}emitCustom(i){!this.selection.selected.length&&i.type!==Jn.ALWAYS||(i.type===Jn.ACCELERATOR?this.api.navigation.goto(i.id,this.selection.selected[0],i.acceleratorProperties||[]):this.customButtonAction.emit({param:i,table:this}))}clickRow(i,e){const s=(new Date).getTime();if((this.detailAction.observed||this.editAction.observed)&&Math.abs(this.lastClickInfo.x-e.x)<16&&Math.abs(this.lastClickInfo.y-e.y)<16&&s-this.lastClickInfo.time<250)return this.selection.clear(),this.selection.select(i),void(this.detailAction.observed?this.detailAction.emit({param:i,table:this}):this.emitIfSelection(this.editAction,!1));this.lastClickInfo={time:s,x:e.x,y:e.y},this.doSelect(i,e)}doSelect(i,e){if(e.ctrlKey)this.lastSel=i,this.selection.toggle(i);else if(e.shiftKey){if(this.selection.isEmpty())this.selection.toggle(i);else if(this.selection.clear(),this.lastSel!==i){let s=!1;const d=this.dataSource.sort?this.dataSource.sortData(this.dataSource.data,this.dataSource.sort):this.dataSource.data;for(const f of d){if((f===i||f===this.lastSel)&&(s=!s,!1===s)){this.selection.select(f);break}s&&this.selection.select(f)}}}else this.lastSel!==i&&this.selection.clear(),this.lastSel=i,this.selection.toggle(i);this.rowSelected.emit({param:null,table:this})}onContextMenu(i,e,s){s.preventDefault();let d=i[e.name];d.changingThisBreaksApplicationSecurity&&(d=d.changingThisBreaksApplicationSecurity.replace(/.*<\/span>/,"")),this.clipValue=""+d,this.hasActions&&(this.selection.clear(),this.selection.select(i),this.contextMenuPosition.x=s.clientX+"px",this.contextMenuPosition.y=s.clientY+"px",this.contextMenu.menuData={item:i},this.contextMenu.openMenu())}selectElement(i,e){(this.dataSource.sort?this.dataSource.sortData(this.dataSource.data,this.dataSource.sort):this.dataSource.data).forEach((d,f)=>{if(d[i]===e){const _=Math.floor(f/this.paginator.pageSize);this.selection.select(d),this.paginator.pageIndex=_,this.paginator.page.next({pageIndex:_,pageSize:this.paginator.pageSize,length:this.paginator.length})}})}export(){Kee(this)}permissions(){this.selection.selected.length&&rb.launch(this.api,this.rest,this.selection.selected[0])}keyDown(i){switch(i.keyCode){case 36:this.paginator.firstPage(),i.preventDefault();break;case 35:this.paginator.lastPage(),i.preventDefault();break;case 39:this.paginator.nextPage(),i.preventDefault();break;case 37:this.paginator.previousPage(),i.preventDefault()}}}mi.\u0275fac=function(i){return new(i||mi)(F(pt),F(_re))},mi.\u0275cmp=we({type:mi,selectors:[["uds-table"]],viewQuery:function(i,e){if(1&i&&(ot(Hre,7),ot(tb,7),ot(bg,7)),2&i){let s;Ee(s=Oe())&&(e.contextMenu=s.first),Ee(s=Oe())&&(e.paginator=s.first),Ee(s=Oe())&&(e.sort=s.first)}},inputs:{rest:"rest",onItem:"onItem",icon:"icon",multiSelect:"multiSelect",allowExport:"allowExport",hasPermissions:"hasPermissions",customButtons:"customButtons",tableId:"tableId",pageSize:"pageSize",newGrouped:"newGrouped",allowCopy:"allowCopy"},outputs:{loaded:"loaded",rowSelected:"rowSelected",newAction:"newAction",editAction:"editAction",deleteAction:"deleteAction",customButtonAction:"customButtonAction",detailAction:"detailAction"},decls:50,vars:28,consts:[[1,"card"],[1,"card-header"],[1,"card-title"],[3,"src",4,"ngIf"],[1,"card-subtitle"],[1,"card-content"],[1,"header"],[1,"buttons"],[4,"ngIf"],[1,"navigation"],[1,"filter"],["matInput","",3,"ngModel","keyup","ngModelChange"],["matSuffix","","mat-icon-button","","aria-label","Clear",3,"click",4,"ngIf"],[1,"paginator"],[3,"pageSize","hidePageSize","pageSizeOptions","showFirstLastButtons"],[1,"reload"],["mat-icon-button","",3,"click"],[1,"material-icons"],["tabindex","0",1,"table",3,"keydown"],["matSort","",3,"dataSource","matSortChange"],["matColumnDef","selection-column",4,"ngIf"],["matColumnDef","detail-column"],[4,"matHeaderCellDef"],[4,"matCellDef"],[3,"matColumnDef",4,"ngFor","ngForOf"],[4,"matHeaderRowDef"],[3,"ngClass",4,"matRowDef","matRowDefColumns"],[3,"hidden"],[1,"loading"],["mode","indeterminate"],[1,"footer"],["class","selection",4,"ngIf"],[2,"position","fixed",3,"matMenuTriggerFor"],["trigger","matMenuTrigger"],["contextMenu","matMenu"],["matMenuContent",""],[3,"src"],[1,"wide-menu",3,"overlapTrigger"],["newMenu","matMenu"],[4,"ngFor","ngForOf"],["mat-raised-button","","color","primary",3,"matMenuTriggerFor"],[1,"button-text"],["mat-menu-item","",3,"matMenuTriggerFor"],[3,"overlapTrigger"],["sub_menu","matMenu"],["mat-menu-item","",3,"innerHTML","click",4,"ngFor","ngForOf"],["mat-menu-item","",3,"innerHTML","click"],["mat-raised-button","","color","primary",3,"click"],["mat-raised-button","",3,"disabled","click"],["mat-raised-button","",3,"disabled","innerHTML","click",4,"ngFor","ngForOf"],["mat-raised-button","",3,"disabled","innerHTML","click"],["mat-raised-button","",3,"click"],["mat-raised-button","","color","warn",3,"disabled","click"],["matSuffix","","mat-icon-button","","aria-label","Clear",3,"click"],["matColumnDef","selection-column"],[3,"click",4,"matCellDef"],[3,"click"],["class","material-icons check checked",4,"ngIf","ngIfElse"],["uncheck",""],[1,"material-icons","check","checked"],[1,"material-icons","check"],[1,"detail-launcher",3,"click"],[3,"matColumnDef"],["mat-sort-header","",4,"matHeaderCellDef"],[3,"click","contextmenu",4,"matCellDef"],["mat-sort-header",""],[3,"click","contextmenu"],[3,"innerHtml"],[3,"ngClass"],[1,"selection"],["mat-menu-item","",3,"click",4,"ngIf"],["mat-menu-item","",3,"disabled","innerHTML","click",4,"ngFor","ngForOf"],["mat-menu-item","","class","menu-warn",3,"click",4,"ngIf"],["mat-menu-item","",3,"click"],[1,"material-icons","spaced"],["mat-menu-item","",3,"disabled","innerHTML","click"],["mat-menu-item","",1,"menu-warn",3,"click"]],template:function(i,e){if(1&i&&(I(0,"div",0)(1,"div",1)(2,"div",2),Q(3,Gre,1,1,"img",3),Y(4),O(),I(5,"div",4),Y(6),O()(),I(7,"div",5)(8,"div",6)(9,"div",7),Q(10,Zre,3,2,"ng-container",8),Q(11,Kre,7,1,"ng-container",8),Q(12,Qre,7,1,"ng-container",8),Q(13,eae,2,1,"ng-container",8),Q(14,tae,7,0,"ng-container",8),Q(15,nae,7,1,"ng-container",8),O(),I(16,"div",9)(17,"div",10)(18,"mat-form-field")(19,"mat-label")(20,"uds-translate"),Y(21,"Filter"),O()(),I(22,"input",11),J("keyup",function(){return e.applyFilter()})("ngModelChange",function(d){return e.filterText=d}),O(),Q(23,iae,3,0,"button",12),O()(),I(24,"div",13),he(25,"mat-paginator",14),O(),I(26,"div",15)(27,"a",16),J("click",function(){return e.overview()}),I(28,"i",17),Y(29,"autorenew"),O()()()()(),I(30,"div",18),J("keydown",function(d){return e.keyDown(d)}),I(31,"mat-table",19),J("matSortChange",function(d){return e.sortChanged(d)}),Q(32,lae,3,0,"ng-container",20),gn(33,21),Q(34,cae,1,0,"mat-header-cell",22),Q(35,dae,4,0,"mat-cell",23),vn(),Q(36,fae,3,1,"ng-container",24),Q(37,pae,1,0,"mat-header-row",25),Q(38,mae,1,1,"mat-row",26),O(),I(39,"div",27)(40,"div",28),he(41,"mat-progress-spinner",29),O()()(),I(42,"div",30),Y(43," \xa0 "),Q(44,gae,4,1,"div",31),O()(),he(45,"div",32,33),I(47,"mat-menu",null,34),Q(49,Dae,7,7,"ng-template",35),O()()),2&i){const s=on(48);N(3),V("ngIf",void 0!==e.icon),N(1),Re(" ",e.title," "),N(2),Re(" ",e.subtitle," "),N(4),V("ngIf",e.newAction.observed),N(1),V("ngIf",e.editAction.observed),N(1),V("ngIf",!0===e.hasPermissions),N(1),V("ngIf",e.hasCustomButtons),N(1),V("ngIf",!0===e.allowExport),N(1),V("ngIf",e.deleteAction.observed),N(7),V("ngModel",e.filterText),N(1),V("ngIf",e.filterText),N(2),V("pageSize",e.pageSize)("hidePageSize",!0)("pageSizeOptions",tf(27,Mae))("showFirstLastButtons",!0),N(6),V("dataSource",e.dataSource),N(1),V("ngIf",e.hasButtons),N(4),V("ngForOf",e.columns),N(1),V("matHeaderRowDef",e.displayedColumns),N(1),V("matRowDefColumns",e.displayedColumns),N(1),V("hidden",!e.loading),N(5),V("ngIf",e.hasButtons&&e.selection.selected.length>0),N(1),Ra("left",e.contextMenuPosition.x)("top",e.contextMenuPosition.y),V("matMenuTriggerFor",s)}},dependencies:[Ps,oi,zt,rr,Qn,Yn,e1,p5,yc,ete,_P,Are,ite,ei,vi,pg,wa,Bq,C4,Vq,S4,x4,zq,D4,M4,Hq,Gq,tb,bg,c,jee,Wee,xn,wo,bP],styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}.header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;flex-wrap:wrap;margin:1rem 1rem 0rem}.buttons[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}.buttons[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{margin-right:1rem;margin-bottom:1rem}.buttons[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%]{margin-right:.1rem}.buttons[_ngcontent-%COMP%] .mat-mdc-raised-button[_ngcontent-%COMP%]:hover:not([disabled]){background-color:#fafafa;color:#000}button.mat-mdc-menu-item[_ngcontent-%COMP%]{height:2rem;line-height:2rem}.navigation[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;flex-wrap:wrap}.reload[_ngcontent-%COMP%]{margin-top:.5rem}.table[_ngcontent-%COMP%]{margin:0rem 1rem;-webkit-user-select:none;-o-user-select:none;user-select:none}.footer[_ngcontent-%COMP%]{margin:1em;display:flex;justify-content:flex-end}mat-cell[_ngcontent-%COMP%]:first-of-type, mat-header-cell[_ngcontent-%COMP%]:first-of-type{padding-left:.5rem}mat-row[_ngcontent-%COMP%]:hover{background-color:#a0b0d0;cursor:pointer}.check[_ngcontent-%COMP%]{margin-left:.5rem;font-size:1.5rem;width:1.5rem}mat-table[_ngcontent-%COMP%]{width:100%;font-weight:300}.mat-column-detail-column[_ngcontent-%COMP%]{max-width:1.5rem;justify-content:center;color:#000!important;padding-right:.5rem}.detail-launcher[_ngcontent-%COMP%]{display:none}.mat-mdc-row[_ngcontent-%COMP%]:hover .detail-launcher[_ngcontent-%COMP%]{display:block}.mat-column-selection-column[_ngcontent-%COMP%]{max-width:2rem;justify-content:center;color:#000!important}.menu-warn[_ngcontent-%COMP%]{color:red}.menu-link[_ngcontent-%COMP%]{color:#00f}.loading[_ngcontent-%COMP%]{margin-top:2rem;margin-bottom:2rem;display:flex;justify-content:center} .mat-mdc-menu-panel{min-height:3rem} .mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:32rem} .mat-mdc-paginator-range-label{min-width:6em}.mat-mdc-menu-item[_ngcontent-%COMP%]{min-height:2.5rem} .dark-theme .mat-mdc-paginator-container{background-color:#303030} .dark-theme .buttons .mat-mdc-raised-button:hover:not([disabled]){background-color:#303030;color:#fff} .dark-theme .mat-column-detail-column{color:#fff!important} .dark-theme .mat-column-selection-column{color:#fff!important} .dark-theme .menu-warn{color:red} .dark-theme .menu-link{color:#00f}.filter[_ngcontent-%COMP%]{display:flex;align-items:center;width:16rem}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-infix{min-height:3rem;padding-top:1rem!important;padding-bottom:1rem!important}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{height:0px}']});const ote='pause'+django.gettext("Maintenance")+"",Tae='pause'+django.gettext("Exit maintenance mode")+"",Aae='pause'+django.gettext("Enter maintenance mode")+"";class G1{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.cButtons=[{id:"maintenance",html:ote,type:Jn.SINGLE_SELECT}]}get customButtons(){return this.api.user.isAdmin?this.cButtons:[]}ngOnInit(){}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New provider"),!0)}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit provider"),!0)}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete provider"))}onMaintenance(i){const e=i.table.selection.selected[0],s=e.maintenance_mode?django.gettext("Exit maintenance mode?"):django.gettext("Enter maintenance mode?");this.api.gui.questionDialog(django.gettext("Maintenance mode for")+" "+e.name,s).then(d=>{d&&this.rest.providers.maintenance(e.id).then(()=>{i.table.overview()})})}onRowSelect(i){const e=i.table;this.customButtons[0].html=e.selection.selected.length>1||0===e.selection.selected.length?ote:e.selection.selected[0].maintenance_mode?Tae:Aae}onDetail(i){this.api.navigation.gotoService(i.param.id)}processElement(i){i.maintenance_state=i.maintenance_mode?django.gettext("In Maintenance"):django.gettext("Active")}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("provider"))}}G1.\u0275fac=function(i){return new(i||G1)(F(xi),F(Ot),F(pt))},G1.\u0275cmp=we({type:G1,selectors:[["uds-services"]],decls:1,vars:7,consts:[["tableId","service-providers","icon","providers",3,"rest","onItem","multiSelect","allowExport","hasPermissions","customButtons","pageSize","customButtonAction","newAction","editAction","deleteAction","rowSelected","detailAction","loaded"]],template:function(i,e){1&i&&(I(0,"uds-table",0),J("customButtonAction",function(d){return e.onMaintenance(d)})("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("rowSelected",function(d){return e.onRowSelect(d)})("detailAction",function(d){return e.onDetail(d)})("loaded",function(d){return e.onLoad(d)}),O()),2&i&&V("rest",e.rest.providers)("onItem",e.processElement)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)},dependencies:[mi],styles:[".row-maintenance-true>mat-cell{color:orange!important} .mat-column-services_count, .mat-column-user_services_count, .mat-column-maintenance_state{max-width:7rem;justify-content:center}"]});class ab{constructor(i,e,s,d){this.title=i,this.data=e,this.columns=s,this.id=d,this.columnsDefinition=Array.from(s,f=>{const _={};return _[f.field]={visible:!0,title:f.title,type:void 0===f.type?Cr.ALPHANUMERIC:f.type},_})}get(i){return Promise.resolve({})}getLogs(i){return Promise.resolve([])}overview(i){return"function"==typeof this.data?this.data():Promise.resolve(this.data)}summary(i){return this.overview()}put(i,e){return Promise.resolve({})}create(i){return Promise.resolve({})}save(i,e){return Promise.resolve({})}test(i,e){return Promise.resolve({})}delete(i){return Promise.resolve({})}permision(){return Cl.ALL}getPermissions(i){return Promise.resolve([])}addPermission(i,e,s,d){return Promise.resolve({})}revokePermission(i){return Promise.resolve({})}types(){return Promise.resolve({})}gui(i){return Promise.resolve({})}callback(i,e){return Promise.resolve([])}tableInfo(){return Promise.resolve({fields:this.columnsDefinition,title:this.title})}detail(i,e){return null}invoke(i,e){return Promise.resolve({})}}function kae(a,i){if(1&a){const e=Pe();I(0,"button",24),J("click",function(){ae(e);const d=q();return d.filterText="",se(d.applyFilter())}),I(1,"i",8),Y(2,"close"),O()()}}function Eae(a,i){if(1&a&&(I(0,"mat-header-cell",28),Y(1),O()),2&a){const e=q().$implicit;N(1),In(e)}}function Iae(a,i){if(1&a&&(I(0,"mat-cell"),he(1,"div",29),O()),2&a){const e=i.$implicit,s=q().$implicit,d=q();N(1),V("innerHtml",d.getRowColumn(e,s),Rr)}}function Pae(a,i){1&a&&(gn(0,25),Q(1,Eae,2,1,"mat-header-cell",26),Q(2,Iae,2,1,"mat-cell",27),vn()),2&a&&V("matColumnDef",i.$implicit)}function Rae(a,i){1&a&&he(0,"mat-header-row")}function Oae(a,i){if(1&a&&he(0,"mat-row",30),2&a){const e=i.$implicit;V("ngClass",q().rowClass(e))}}const Lae=function(){return[5,10,25,100,1e3]};class Wu{constructor(i){this.api=i,this.rest={},this.itemId="",this.tableId="",this.pageSize=10,this.paginator={},this.sort={},this.filterText="",this.title="Logs",this.displayedColumns=["date","level","source","message"],this.columns=[],this.dataSource=new Iee([]),this.selection=new Zy}ngOnInit(){this.tableId=this.tableId||this.rest.id,this.dataSource.paginator=this.paginator,this.dataSource.sort=this.sort,this.dataSource.sort.active=this.api.getFromStorage("logs-sort-column")||"date",this.dataSource.sort.direction=this.api.getFromStorage("logs-sort-direction")||"desc";for(const i of this.displayedColumns)this.columns.push({name:i,title:i,type:"date"===i?Cr.DATETIMESEC:Cr.ALPHANUMERIC});this.filterText=this.api.getFromStorage(this.tableId+"filterValue")||"",this.applyFilter(),this.overview()}overview(){var i=this;return Xe(function*(){i.dataSource.data=yield i.rest.getLogs(i.itemId)})()}selectElement(i,e){}getRowColumn(i,e){let s=i[e];return"date"===e?s=zs("SHORT_DATE_FORMAT",s," H:i:s"):"level"===e&&(s={1e4:"OTHER",2e4:"DEBUG",3e4:"INFO",4e4:"WARN",5e4:"ERROR",6e4:"FATAL"}[s]||"OTHER"),s}rowClass(i){return["level-"+i.level]}applyFilter(){this.api.putOnStorage(this.tableId+"filterValue",this.filterText),this.dataSource.filter=this.filterText.trim().toLowerCase()}sortChanged(i){this.api.putOnStorage("logs-sort-column",i.active),this.api.putOnStorage("logs-sort-direction",i.direction)}export(){Kee(this)}keyDown(i){switch(i.keyCode){case 36:this.paginator.firstPage(),i.preventDefault();break;case 35:this.paginator.lastPage(),i.preventDefault();break;case 39:this.paginator.nextPage(),i.preventDefault();break;case 37:this.paginator.previousPage(),i.preventDefault()}}}function Fae(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Services pools"),O())}function Nae(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Logs"),O())}Wu.\u0275fac=function(i){return new(i||Wu)(F(pt))},Wu.\u0275cmp=we({type:Wu,selectors:[["uds-logs-table"]],viewQuery:function(i,e){if(1&i&&(ot(tb,7),ot(bg,7)),2&i){let s;Ee(s=Oe())&&(e.paginator=s.first),Ee(s=Oe())&&(e.sort=s.first)}},inputs:{rest:"rest",itemId:"itemId",tableId:"tableId",pageSize:"pageSize"},decls:36,vars:12,consts:[[1,"card"],[1,"card-header"],[1,"card-title"],[3,"src"],[1,"card-content"],[1,"header"],[1,"buttons"],["mat-raised-button","",3,"click"],[1,"material-icons"],[1,"button-text"],[1,"navigation"],[1,"filter"],["matInput","",3,"ngModel","keyup","ngModelChange"],["mat-button","","matSuffix","","mat-icon-button","","aria-label","Clear",3,"click",4,"ngIf"],[1,"paginator"],[3,"pageSize","hidePageSize","pageSizeOptions","showFirstLastButtons"],[1,"reload"],["mat-icon-button","",3,"click"],["tabindex","0",1,"table",3,"keydown"],["matSort","",3,"dataSource","matSortChange"],[3,"matColumnDef",4,"ngFor","ngForOf"],[4,"matHeaderRowDef"],[3,"ngClass",4,"matRowDef","matRowDefColumns"],[1,"footer"],["mat-button","","matSuffix","","mat-icon-button","","aria-label","Clear",3,"click"],[3,"matColumnDef"],["mat-sort-header","",4,"matHeaderCellDef"],[4,"matCellDef"],["mat-sort-header",""],[3,"innerHtml"],[3,"ngClass"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1)(2,"div",2),he(3,"img",3),Y(4," \xa0"),I(5,"uds-translate"),Y(6,"Logs"),O()()(),I(7,"div",4)(8,"div",5)(9,"div",6)(10,"a",7),J("click",function(){return e.export()}),I(11,"i",8),Y(12,"import_export"),O(),I(13,"span",9)(14,"uds-translate"),Y(15,"Export"),O()()()(),I(16,"div",10)(17,"div",11)(18,"uds-translate"),Y(19,"Filter"),O(),Y(20,"\xa0 "),I(21,"mat-form-field")(22,"input",12),J("keyup",function(){return e.applyFilter()})("ngModelChange",function(d){return e.filterText=d}),O(),Q(23,kae,3,0,"button",13),O()(),I(24,"div",14),he(25,"mat-paginator",15),O(),I(26,"div",16)(27,"a",17),J("click",function(){return e.overview()}),I(28,"i",8),Y(29,"autorenew"),O()()()()(),I(30,"div",18),J("keydown",function(d){return e.keyDown(d)}),I(31,"mat-table",19),J("matSortChange",function(d){return e.sortChanged(d)}),Q(32,Pae,3,1,"ng-container",20),Q(33,Rae,1,0,"mat-header-row",21),Q(34,Oae,1,1,"mat-row",22),O()(),he(35,"div",23),O()()),2&i&&(N(3),V("src",e.api.staticURL("admin/img/icons/logs.png"),tn),N(19),V("ngModel",e.filterText),N(1),V("ngIf",e.filterText),N(2),V("pageSize",e.pageSize)("hidePageSize",!0)("pageSizeOptions",tf(11,Lae))("showFirstLastButtons",!0),N(6),V("dataSource",e.dataSource),N(1),V("ngForOf",e.displayedColumns),N(1),V("matHeaderRowDef",e.displayedColumns),N(1),V("matRowDefColumns",e.displayedColumns))},dependencies:[Ps,oi,zt,rr,Qn,Yn,e1,pi,p5,yc,ei,pg,wa,Bq,C4,Vq,S4,x4,zq,D4,M4,Hq,Gq,tb,bg,c,xn],styles:[".header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;flex-wrap:wrap;margin:1rem 1rem 0rem}.navigation[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;flex-wrap:wrap}.reload[_ngcontent-%COMP%]{margin-top:.5rem}.table[_ngcontent-%COMP%]{margin:0rem 1rem;-webkit-user-select:none;-o-user-select:none;user-select:none}.mat-column-date[_ngcontent-%COMP%]{min-width:12rem;max-width:20rem}.mat-column-level[_ngcontent-%COMP%]{max-width:8rem;text-align:center}.mat-column-source[_ngcontent-%COMP%]{max-width:8rem} .level-60000>.mat-mdc-cell{color:#ff1e1e!important} .level-50000>.mat-mdc-cell{color:#ff1e1e!important} .level-40000>.mat-mdc-cell{color:#d65014!important}.filter[_ngcontent-%COMP%]{display:flex;align-items:center;width:16rem}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-infix{min-height:3rem;padding-top:1rem!important;padding-bottom:1rem!important}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{height:0px}"]});const Bae=[{field:"name",title:django.gettext("Pool")},{field:"state",title:django.gettext("State")},{field:"user_services_count",title:django.gettext("User Services")}];class ob{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.customButtons=[Jo.getGotoButton(qI,"id")],this.servicePools={},this.logs={},this.services=d.services,this.service=d.service}static launch(i,e,s){const d=window.innerWidth<800?"80%":"60%";i.gui.dialog.open(ob,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{service:s,services:e},disableClose:!1})}ngOnInit(){this.servicePools=new ab(django.gettext("Service pools"),()=>this.services.invoke(this.service.id+"/servicesPools"),Bae,this.service.id+"infopsls")}}function Vae(a,i){if(1&a&&(I(0,"div",3),he(1,"div",4)(2,"div",5),O()),2&a){const e=i.$implicit;N(1),V("innerHTML",e.gui.label,Rr),N(1),V("innerHTML",e.value,Rr)}}ob.\u0275fac=function(i){return new(i||ob)(F(pt),F(Ot),F(Ci),F(Bi))},ob.\u0275cmp=we({type:ob,selectors:[["uds-service-information"]],decls:17,vars:8,consts:[["mat-dialog-title",""],["mat-tab-label",""],[3,"rest","customButtons","pageSize"],[1,"content"],[3,"rest","itemId","tableId","pageSize"],["mat-raised-button","","mat-dialog-close","","color","primary"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Information for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"mat-tab-group")(6,"mat-tab"),Q(7,Fae,2,0,"ng-template",1),he(8,"uds-table",2),O(),I(9,"mat-tab"),Q(10,Nae,2,0,"ng-template",1),I(11,"div",3),he(12,"uds-logs-table",4),O()()()(),I(13,"mat-dialog-actions")(14,"button",5)(15,"uds-translate"),Y(16,"Ok"),O()()()),2&i&&(N(3),Re(" ",e.service.name,"\n"),N(5),V("rest",e.servicePools)("customButtons",e.customButtons)("pageSize",6),N(4),V("rest",e.services)("itemId",e.service.id)("tableId","serviceInfo-d-log"+e.service.id)("pageSize",5))},dependencies:[pi,qo,nr,ir,Kn,Qo,Gs,xl,xn,mi,Wu],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.mat-column-count[_ngcontent-%COMP%], .mat-column-image[_ngcontent-%COMP%], .mat-column-state[_ngcontent-%COMP%]{max-width:7rem;justify-content:center}.navigation[_ngcontent-%COMP%]{margin-top:1rem;display:flex;justify-content:flex-end;flex-wrap:wrap}.reload[_ngcontent-%COMP%]{margin-top:.5rem}"]});class wg{constructor(i){this.api=i,this.gui=[],this.displayables=[]}ngOnInit(){this.processFields()}processFields(){if(!this.gui||!this.value)return;const i=this.gui.filter(e=>e.gui.type!==Xo.HIDDEN);i.forEach(e=>{const s=this.value[e.name];switch(e.gui.type){case Xo.CHECKBOX:e.value=s?django.gettext("Yes"):django.gettext("No");break;case Xo.PASSWORD:e.value=django.gettext("(hidden)");break;case Xo.CHOICE:{const d=m5.locateChoice(s,e);e.value=d.text;break}case Xo.MULTI_CHOICE:e.value=django.gettext("Selected items :")+s.length;break;case Xo.IMAGECHOICE:{const d=m5.locateChoice(s,e);d.img&&(e.value=this.api.safeString(this.api.gui.icon(d.img)+" "+d.text));break}default:e.value=s}(""===e.value||null==e.value)&&(e.value="(empty)")}),this.displayables=i}}function zae(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function Hae(a,i){if(1&a&&he(0,"uds-information",15),2&a){const e=q(2);V("value",e.provider)("gui",e.gui)}}function Gae(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Services"),O())}function Uae(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Usage"),O())}function jae(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function $ae(a,i){if(1&a){const e=Pe();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),J("selectedIndexChange",function(d){return ae(e),se(q().selectedTab=d)}),I(3,"mat-tab"),Q(4,zae,2,0,"ng-template",9),I(5,"div",10),Q(6,Hae,1,2,"uds-information",11),O()(),I(7,"mat-tab"),Q(8,Gae,2,0,"ng-template",9),I(9,"div",10)(10,"uds-table",12),J("newAction",function(d){return ae(e),se(q().onNewService(d))})("editAction",function(d){return ae(e),se(q().onEditService(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteService(d))})("customButtonAction",function(d){return ae(e),se(q().onInformation(d))})("loaded",function(d){return ae(e),se(q().onLoad(d))}),O()()(),I(11,"mat-tab"),Q(12,Uae,2,0,"ng-template",9),I(13,"div",10)(14,"uds-table",13),J("deleteAction",function(d){return ae(e),se(q().onDeleteUsage(d))}),O()()(),I(15,"mat-tab"),Q(16,jae,2,0,"ng-template",9),I(17,"div",10),he(18,"uds-logs-table",14),O()()()()()}if(2&a){const e=q();N(2),V("selectedIndex",e.selectedTab)("@.disabled",!0),N(4),V("ngIf",e.provider&&e.gui),N(4),V("rest",e.services)("multiSelect",!0)("allowExport",!0)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)("tableId","providers-d-services"+e.provider.id),N(4),V("rest",e.usage)("multiSelect",!0)("allowExport",!0)("pageSize",e.api.config.admin.page_size)("tableId","providers-d-usage"+e.provider.id),N(4),V("rest",e.services.parentModel)("itemId",e.provider.id)("tableId","providers-d-log"+e.provider.id)}}wg.\u0275fac=function(i){return new(i||wg)(F(pt))},wg.\u0275cmp=we({type:wg,selectors:[["uds-information"]],inputs:{value:"value",gui:"gui"},decls:4,vars:1,consts:[[1,"card"],[1,"card-content"],["class","item",4,"ngFor","ngForOf"],[1,"item"],[1,"label",3,"innerHTML"],[1,"value",3,"innerHTML"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1),Q(2,Vae,3,2,"div",2),O(),he(3,"div"),O()),2&i&&(N(2),V("ngForOf",e.displayables))},dependencies:[oi],styles:[".card-content[_ngcontent-%COMP%]{padding:1rem;display:flex;flex-direction:column}.item[_ngcontent-%COMP%]{padding-bottom:.5rem;display:flex}.label[_ngcontent-%COMP%]{font-weight:700;width:32rem;overflow-x:hidden;text-overflow:ellipsis;text-align:end;margin-right:1rem;align-self:center}"]});const Wae=function(a){return["/providers",a]};class U1{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.customButtons=[{id:"info",html:'info '+django.gettext("Information")+"",type:Jn.ONLY_MENU}],this.provider=null,this.gui=[],this.services={},this.usage={},this.selectedTab=1}ngOnInit(){const i=this.route.snapshot.paramMap.get("provider");i&&(this.services=this.rest.providers.detail(i,"services"),this.usage=this.rest.providers.detail(i,"usage"),this.services.parentModel.get(i).then(e=>{this.provider=e,this.services.parentModel.gui(e.type).then(s=>{this.gui=s})}))}onInformation(i){ob.launch(this.api,this.services,i.table.selection.selected[0])}onNewService(i){this.api.gui.forms.typedNewForm(i,django.gettext("New service"),!1)}onEditService(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit service"),!1)}onDeleteService(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete service"))}onDeleteUsage(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete user service"))}onLoad(i){if(!0===i.param){const e=this.route.snapshot.paramMap.get("service");if(void 0!==e){this.selectedTab=1;const s=i.table;s.dataSource.data.forEach(d=>{d.id===e&&s.selection.select(d)})}}}}U1.\u0275fac=function(i){return new(i||U1)(F(xi),F(Ot),F(pt))},U1.\u0275cmp=we({type:U1,selectors:[["uds-services-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","providers",3,"rest","multiSelect","allowExport","customButtons","pageSize","tableId","newAction","editAction","deleteAction","customButtonAction","loaded"],["icon","usage",3,"rest","multiSelect","allowExport","pageSize","tableId","deleteAction"],[3,"rest","itemId","tableId"],[3,"value","gui"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),he(6,"img",4),Y(7),O(),Q(8,$ae,19,17,"div",5),O()),2&i&&(N(2),V("routerLink",su(4,Wae,e.services.parentId)),N(4),V("src",e.api.staticURL("admin/img/icons/services.png"),tn),N(1),Re(" \xa0",null==e.provider?null:e.provider.name," "),N(1),V("ngIf",null!==e.provider))},dependencies:[zt,jo,Qo,Gs,xl,xn,mi,Wu,wg]});class j1{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){var i=this;return Xe(function*(){i.route.snapshot.paramMap.get("authenticator")})()}onDetail(i){var e=this;return Xe(function*(){e.api.navigation.gotoAuthenticatorDetail(i.param.id)})()}onNew(i){var e=this;return Xe(function*(){e.api.gui.forms.typedNewForm(i,django.gettext("New Authenticator"),!0)})()}onEdit(i){var e=this;return Xe(function*(){e.api.gui.forms.typedEditForm(i,django.gettext("Edit Authenticator"),!0)})()}onDelete(i){var e=this;return Xe(function*(){e.api.gui.forms.deleteForm(i,django.gettext("Delete Authenticator"))})()}onLoad(i){var e=this;return Xe(function*(){!0===i.param&&i.table.selectElement("id",e.route.snapshot.paramMap.get("authenticator"))})()}processElement(i){i.visible=this.api.boolAsHumanString(i.visible)}}j1.\u0275fac=function(i){return new(i||j1)(F(pt),F(xi),F(Ot))},j1.\u0275cmp=we({type:j1,selectors:[["uds-authenticators"]],decls:2,vars:6,consts:[["icon","authenticators",3,"rest","multiSelect","allowExport","hasPermissions","onItem","pageSize","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("detailAction",function(d){return e.onDetail(d)})("loaded",function(d){return e.onLoad(d)}),O()()),2&i&&(N(1),V("rest",e.rest.authenticators)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("onItem",e.processElement)("pageSize",e.api.config.admin.page_size))},dependencies:[mi]});class $1{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){this.route.snapshot.paramMap.get("mfa")}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New MFA"))}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit MFA"))}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete MFA"))}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("mfa"))}}$1.\u0275fac=function(i){return new(i||$1)(F(pt),F(xi),F(Ot))},$1.\u0275cmp=we({type:$1,selectors:[["uds-mfas"]],decls:2,vars:5,consts:[["icon","mfas",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("loaded",function(d){return e.onLoad(d)}),O()()),2&i&&(N(1),V("rest",e.rest.mfas)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",e.api.config.admin.page_size))},dependencies:[mi]});const Yae=["panel"];function qae(a,i){if(1&a&&(I(0,"div",0,1),ht(2),O()),2&a){const e=i.id,s=q();V("id",s.id)("ngClass",s._classList)("@panelAnimation",s.isOpen?"visible":"hidden"),He("aria-label",s.ariaLabel||null)("aria-labelledby",s._getPanelAriaLabelledby(e))}}const Xae=["*"],Zae=tr("panelAnimation",[Bn("void, hidden",ft({opacity:0,transform:"scaleY(0.8)"})),Mn(":enter, hidden => visible",[qC([Tn("0.03s linear",ft({opacity:1})),Tn("0.12s cubic-bezier(0, 0, 0.2, 1)",ft({transform:"scaleY(1)"}))])]),Mn(":leave, visible => hidden",[Tn("0.075s linear",ft({opacity:0}))])]);let Kae=0;class Qae{constructor(i,e){this.source=i,this.option=e}}const Jae=vc(class{}),ste=new _e("mat-autocomplete-default-options",{providedIn:"root",factory:function eoe(){return{autoActiveFirstOption:!1,autoSelectActiveOption:!1}}});let toe=(()=>{class a extends Jae{get isOpen(){return this._isOpen&&this.showPanel}_setColor(e){this._color=e,this._setThemeClasses(this._classList)}get autoActiveFirstOption(){return this._autoActiveFirstOption}set autoActiveFirstOption(e){this._autoActiveFirstOption=We(e)}get autoSelectActiveOption(){return this._autoSelectActiveOption}set autoSelectActiveOption(e){this._autoSelectActiveOption=We(e)}set classList(e){this._classList=e&&e.length?Bk(e).reduce((s,d)=>(s[d]=!0,s),{}):{},this._setVisibilityClasses(this._classList),this._setThemeClasses(this._classList),this._elementRef.nativeElement.className=""}constructor(e,s,d,f){super(),this._changeDetectorRef=e,this._elementRef=s,this._activeOptionChanges=xt.EMPTY,this.showPanel=!1,this._isOpen=!1,this.displayWith=null,this.optionSelected=new ye,this.opened=new ye,this.closed=new ye,this.optionActivated=new ye,this._classList={},this.id="mat-autocomplete-"+Kae++,this.inertGroups=(null==f?void 0:f.SAFARI)||!1,this._autoActiveFirstOption=!!d.autoActiveFirstOption,this._autoSelectActiveOption=!!d.autoSelectActiveOption}ngAfterContentInit(){this._keyManager=new FC(this.options).withWrap(),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._activeOptionChanges.unsubscribe()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options.length,this._setVisibilityClasses(this._classList),this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){const s=new Qae(this,e);this.optionSelected.emit(s)}_getPanelAriaLabelledby(e){return this.ariaLabel?null:this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_setVisibilityClasses(e){e[this._visibleClass]=this.showPanel,e[this._hiddenClass]=!this.showPanel}_setThemeClasses(e){e["mat-primary"]="primary"===this._color,e["mat-warn"]="warn"===this._color,e["mat-accent"]="accent"===this._color}}return a.\u0275fac=function(e){return new(e||a)(F(Zt),F(Be),F(ste),F(si))},a.\u0275dir=me({type:a,viewQuery:function(e,s){if(1&e&&(ot(hi,7),ot(Yae,5)),2&e){let d;Ee(d=Oe())&&(s.template=d.first),Ee(d=Oe())&&(s.panel=d.first)}},inputs:{ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:"autoActiveFirstOption",autoSelectActiveOption:"autoSelectActiveOption",panelWidth:"panelWidth",classList:["class","classList"]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},features:[Se]}),a})(),$q=(()=>{class a extends toe{constructor(){super(...arguments),this._visibleClass="mat-mdc-autocomplete-visible",this._hiddenClass="mat-mdc-autocomplete-hidden"}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-autocomplete"]],contentQueries:function(e,s,d){if(1&e&&(hn(d,Ty,5),hn(d,$i,5)),2&e){let f;Ee(f=Oe())&&(s.optionGroups=f),Ee(f=Oe())&&(s.options=f)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{disableRipple:"disableRipple"},exportAs:["matAutocomplete"],features:[et([{provide:PE,useExisting:a}]),Se],ngContentSelectors:Xae,decls:1,vars:0,consts:[["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id","ngClass"],["panel",""]],template:function(e,s){1&e&&(Fn(),Q(0,qae,3,5,"ng-template"))},dependencies:[Ps],styles:[".mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}.mdc-menu-surface.mat-mdc-autocomplete-panel{width:100%;max-height:256px;position:static;visibility:hidden;transform-origin:center top;margin:0;padding:8px 0;list-style-type:none}.mdc-menu-surface.mat-mdc-autocomplete-panel:focus{outline:none}.cdk-high-contrast-active .mdc-menu-surface.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) .mdc-menu-surface.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above .mdc-menu-surface.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}.mdc-menu-surface.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}.mdc-menu-surface.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden}mat-autocomplete{display:none}"],encapsulation:2,data:{animation:[Zae]},changeDetection:0}),a})();const noe={provide:jr,useExisting:nn(()=>P4),multi:!0},lte=new _e("mat-autocomplete-scroll-strategy"),roe={provide:lte,deps:[ta],useFactory:function ioe(a){return()=>a.scrollStrategies.reposition()}};let aoe=(()=>{class a{get autocompleteDisabled(){return this._autocompleteDisabled}set autocompleteDisabled(e){this._autocompleteDisabled=We(e)}constructor(e,s,d,f,_,w,D,k,P,z,W){this._element=e,this._overlay=s,this._viewContainerRef=d,this._zone=f,this._changeDetectorRef=_,this._dir=D,this._formField=k,this._document=P,this._viewportRuler=z,this._defaults=W,this._componentDestroyed=!1,this._autocompleteDisabled=!1,this._manuallyFloatingLabel=!1,this._viewportSubscription=xt.EMPTY,this._canOpenOnNextFocus=!0,this._closeKeyEventStream=new Ue,this._windowBlurHandler=()=>{this._canOpenOnNextFocus=this._document.activeElement!==this._element.nativeElement||this.panelOpen},this._onChange=()=>{},this._onTouched=()=>{},this.position="auto",this.autocompleteAttribute="off",this._overlayAttached=!1,this.optionSelections=_m(()=>{const Z=this.autocomplete?this.autocomplete.options:null;return Z?Z.changes.pipe(Ji(Z),Qi(()=>Mi(...Z.map(te=>te.onSelectionChange)))):this._zone.onStable.pipe(Pn(1),Qi(()=>this.optionSelections))}),this._scrollStrategy=w}ngAfterViewInit(){const e=this._getWindow();typeof e<"u"&&this._zone.runOutsideAngular(()=>e.addEventListener("blur",this._windowBlurHandler))}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){const e=this._getWindow();typeof e<"u"&&e.removeEventListener("blur",this._windowBlurHandler),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}openPanel(){this._attachOverlay(),this._floatLabel()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._isOpen=this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._componentDestroyed||this._changeDetectorRef.detectChanges())}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return Mi(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe(fi(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe(fi(()=>this._overlayAttached)):je()).pipe(gt(e=>e instanceof U3?e:null))}get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return Mi(Bs(this._document,"click"),Bs(this._document,"auxclick"),Bs(this._document,"touchend")).pipe(fi(e=>{const s=fd(e),d=this._formField?this._formField._elementRef.nativeElement:null,f=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;return this._overlayAttached&&s!==this._element.nativeElement&&this._document.activeElement!==this._element.nativeElement&&(!d||!d.contains(s))&&(!f||!f.contains(s))&&!!this._overlayRef&&!this._overlayRef.overlayElement.contains(s)}))}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){const s=e.keyCode,d=pr(e);if(27===s&&!d&&e.preventDefault(),this.activeOption&&13===s&&this.panelOpen&&!d)this.activeOption._selectViaInteraction(),this._resetActiveItem(),e.preventDefault();else if(this.autocomplete){const f=this.autocomplete._keyManager.activeItem,_=38===s||40===s;9===s||_&&!d&&this.panelOpen?this.autocomplete._keyManager.onKeydown(e):_&&this._canOpen()&&this.openPanel(),(_||this.autocomplete._keyManager.activeItem!==f)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._element.nativeElement.value),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let s=e.target,d=s.value;"number"===s.type&&(d=""==d?null:parseFloat(d)),this._previousValue!==d&&(this._previousValue=d,this._pendingAutoselectedOption=null,this._onChange(d),this._canOpen()&&this._document.activeElement===e.target&&this.openPanel())}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this.openPanel()}_floatLabel(e=!1){this._formField&&"auto"===this._formField.floatLabel&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){return Mi(this._zone.onStable.pipe(Pn(1)),this.autocomplete.options.changes.pipe(Fi(()=>this._positionStrategy.reapplyLastPosition()),T4(0))).pipe(Qi(()=>(this._zone.run(()=>{const d=this.panelOpen;this._resetActiveItem(),this.autocomplete._setVisibility(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),d!==this.panelOpen&&(this.panelOpen?this.autocomplete.opened.emit():this.autocomplete.closed.emit())}),this.panelClosingActions)),Pn(1)).subscribe(d=>this._setValueAndClose(d))}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_assignOptionValue(e){const s=this.autocomplete&&this.autocomplete.displayWith?this.autocomplete.displayWith(e):e;this._updateNativeInputValue(s??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){const s=e?e.source:this._pendingAutoselectedOption;s&&(this._clearPreviousSelectedOption(s),this._assignOptionValue(s.value),this._onChange(s.value),this.autocomplete._emitSelectEvent(s),this._element.nativeElement.focus()),this.closePanel()}_clearPreviousSelectedOption(e){this.autocomplete.options.forEach(s=>{s!==e&&s.selected&&s.deselect()})}_attachOverlay(){var e;let s=this._overlayRef;var d;s?(this._positionStrategy.setOrigin(this._getConnectedElement()),s.updateSize({width:this._getPanelWidth()})):(this._portal=new fc(this.autocomplete.template,this._viewContainerRef,{id:null===(d=this._formField)||void 0===d?void 0:d.getLabelId()}),s=this._overlay.create(this._getOverlayConfig()),this._overlayRef=s,this._handleOverlayEvents(s),this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&s&&s.updateSize({width:this._getPanelWidth()})})),s&&!s.hasAttached()&&(s.attach(this._portal),this._closingActionsSubscription=this._subscribeToClosingActions());const f=this.panelOpen;this.autocomplete._setVisibility(),this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._setColor(null===(e=this._formField)||void 0===e?void 0:e.color),this.panelOpen&&f!==this.panelOpen&&this.autocomplete.opened.emit()}_getOverlayConfig(){var e,s;return new md({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:null!==(e=this._dir)&&void 0!==e?e:void 0,panelClass:null===(s=this._defaults)||void 0===s?void 0:s.overlayPanelClass})}_getOverlayPosition(){const e=this._overlay.position().flexibleConnectedTo(this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1);return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){const s=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],d=this._aboveClass,f=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:d},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:d}];let _;_="above"===this.position?f:"below"===this.position?s:[...s,...f],e.withPositions(_)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){const e=this.autocomplete;e.autoActiveFirstOption?e._keyManager.setFirstItemActive():e._keyManager.setActiveItem(-1)}_canOpen(){const e=this._element.nativeElement;return!e.readOnly&&!e.disabled&&!this._autocompleteDisabled}_getWindow(){var e;return(null===(e=this._document)||void 0===e?void 0:e.defaultView)||window}_scrollToOption(e){const s=this.autocomplete,d=WC(e,s.options,s.optionGroups);if(0===e&&1===d)s._setScrollTop(0);else if(s.panel){const f=s.options.toArray()[e];if(f){const _=f._getHostElement(),w=RE(_.offsetTop,_.offsetHeight,s._getScrollTop(),s.panel.nativeElement.offsetHeight);s._setScrollTop(w)}}}_handleOverlayEvents(e){e.keydownEvents().subscribe(s=>{var d;(27===s.keyCode&&!pr(s)||38===s.keyCode&&pr(s,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(null!==(d=this._valueBeforeAutoSelection)&&void 0!==d?d:""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),s.stopPropagation(),s.preventDefault())}),e.outsidePointerEvents().subscribe()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(ta),F(Hn),F(Je),F(Zt),F(lte),F(Ni,8),F(mg,9),F(bt,8),F(hc),F(ste,8))},a.\u0275dir=me({type:a,inputs:{autocomplete:["matAutocomplete","autocomplete"],position:["matAutocompletePosition","position"],connectedTo:["matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:["autocomplete","autocompleteAttribute"],autocompleteDisabled:["matAutocompleteDisabled","autocompleteDisabled"]},features:[$n]}),a})(),P4=(()=>{class a extends aoe{constructor(){super(...arguments),this._aboveClass="mat-mdc-autocomplete-panel-above"}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(e,s){1&e&&J("focusin",function(){return s._handleFocus()})("blur",function(){return s._onTouched()})("input",function(f){return s._handleInput(f)})("keydown",function(f){return s._handleKeydown(f)})("click",function(){return s._handleClick()}),2&e&&He("autocomplete",s.autocompleteAttribute)("role",s.autocompleteDisabled?null:"combobox")("aria-autocomplete",s.autocompleteDisabled?null:"list")("aria-activedescendant",s.panelOpen&&s.activeOption?s.activeOption.id:null)("aria-expanded",s.autocompleteDisabled?null:s.panelOpen.toString())("aria-owns",s.autocompleteDisabled||!s.panelOpen||null==s.autocomplete?null:s.autocomplete.id)("aria-haspopup",s.autocompleteDisabled?null:"listbox")},exportAs:["matAutocompleteTrigger"],features:[et([noe]),Se]}),a})(),ooe=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[roe],imports:[Iu,YC,Qt,zr,Nf,YC,Qt]}),a})();function soe(a,i){if(1&a&&(I(0,"div")(1,"uds-translate"),Y(2,"Edit user"),O(),Y(3),O()),2&a){const e=q();N(3),Re(" ",e.user.name," ")}}function loe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New user"),O())}function coe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",19),J("ngModelChange",function(d){return ae(e),se(q().user.name=d)}),O()()}if(2&a){const e=q();N(2),Re(" ",e.authenticator.type_info.userNameLabel," "),N(1),V("ngModel",e.user.name)("disabled",e.user.id)}}function doe(a,i){if(1&a&&(I(0,"mat-option",22),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Oi(" ",e.id," (",e.name,") ")}}function uoe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",20),J("ngModelChange",function(d){return ae(e),se(q().user.name=d)})("input",function(d){return ae(e),se(q().filterUser(d))}),O(),I(4,"mat-autocomplete",null,21),Q(6,doe,2,3,"mat-option",16),O()()}if(2&a){const e=on(5),s=q();N(2),Re(" ",s.authenticator.type_info.userNameLabel," "),N(1),V("ngModel",s.user.name)("matAutocomplete",e),N(3),V("ngForOf",s.users)}}function hoe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",23),J("ngModelChange",function(d){return ae(e),se(q().user.password=d)}),O()()}if(2&a){const e=q();N(2),Re(" ",e.authenticator.type_info.passwordLabel," "),N(1),V("ngModel",e.user.password)}}function foe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label")(2,"uds-translate"),Y(3,"MFA"),O()(),I(4,"input",24),J("ngModelChange",function(d){return ae(e),se(q().user.mfa_data=d)}),O()()}if(2&a){const e=q();N(4),V("ngModel",e.user.mfa_data)}}function poe(a,i){if(1&a&&(I(0,"mat-option",22),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}class xg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.groups=[],this.onSave=new ye(!0),this.users=[],this.authenticator=d.authenticator,this.user={id:void 0,name:"",real_name:"",comments:"",state:"A",is_admin:!1,staff_member:!1,password:"",role:"user",mfa:"",groups:[]},void 0!==d.user&&(this.user.id=d.user.id,this.user.name=d.user.name)}static launch(i,e,s){const d=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(xg,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{authenticator:e,user:s},disableClose:!1}).componentInstance.onSave}ngOnInit(){this.rest.authenticators.detail(this.authenticator.id,"groups").overview().then(i=>{this.groups=i}),this.user.id&&this.rest.authenticators.detail(this.authenticator.id,"users").get(this.user.id).then(i=>{this.user=i,this.user.role=i.is_admin?"admin":i.staff_member?"staff":"user"},i=>{this.dialogRef.close()})}roleChanged(i){this.user.is_admin="admin"===i,this.user.staff_member="admin"===i||"staff"===i}filterUser(i){this.rest.authenticators.search(this.authenticator.id,"user",i.target.value,100).then(s=>{this.users.length=0,s.forEach(d=>{this.users.push(d)})})}save(){this.rest.authenticators.detail(this.authenticator.id,"users").save(this.user).then(i=>{this.dialogRef.close(),this.onSave.emit(!0)})}}function moe(a,i){if(1&a&&(I(0,"div")(1,"uds-translate"),Y(2,"Edit group"),O(),Y(3),O()),2&a){const e=q();N(3),Re(" ",e.group.name," ")}}function goe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New group"),O())}function voe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",13),J("ngModelChange",function(d){return ae(e),se(q(2).group.name=d)}),O()()}if(2&a){const e=q(2);N(2),Re(" ",e.authenticator.type_info.groupNameLabel," "),N(1),V("ngModel",e.group.name)("disabled",e.group.id)}}function _oe(a,i){if(1&a&&(I(0,"mat-option",17),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Oi(" ",e.id," (",e.name,") ")}}function yoe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",14),J("ngModelChange",function(d){return ae(e),se(q(2).group.name=d)})("input",function(d){return ae(e),se(q(2).filterGroup(d))}),O(),I(4,"mat-autocomplete",null,15),Q(6,_oe,2,3,"mat-option",16),O()()}if(2&a){const e=on(5),s=q(2);N(2),Re(" ",s.authenticator.type_info.groupNameLabel," "),N(1),V("ngModel",s.group.name)("matAutocomplete",e),N(3),V("ngForOf",s.fltrGroup)}}function boe(a,i){if(1&a&&(gn(0),Q(1,voe,4,3,"mat-form-field",12),Q(2,yoe,7,4,"mat-form-field",12),vn()),2&a){const e=q();N(1),V("ngIf",!1===e.authenticator.type_info.canSearchGroups||e.group.id),N(1),V("ngIf",!0===e.authenticator.type_info.canSearchGroups&&!e.group.id)}}function woe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label")(2,"uds-translate"),Y(3,"Meta group name"),O()(),I(4,"input",13),J("ngModelChange",function(d){return ae(e),se(q().group.name=d)}),O()()}if(2&a){const e=q();N(4),V("ngModel",e.group.name)("disabled",e.group.id)}}function xoe(a,i){if(1&a&&(I(0,"mat-option",17),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function Coe(a,i){if(1&a){const e=Pe();gn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Service Pools"),O()(),I(5,"mat-select",18),J("ngModelChange",function(d){return ae(e),se(q().group.pools=d)}),Q(6,xoe,2,2,"mat-option",16),O()(),vn()}if(2&a){const e=q();N(5),V("ngModel",e.group.pools),N(1),V("ngForOf",e.servicePools)}}function Soe(a,i){if(1&a&&(I(0,"mat-option",17),Y(1),O()),2&a){const e=q().$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function Doe(a,i){if(1&a&&(gn(0),Q(1,Soe,2,2,"mat-option",20),vn()),2&a){const e=i.$implicit;N(1),V("ngIf","group"===e.type)}}function Moe(a,i){if(1&a){const e=Pe();I(0,"mat-form-field")(1,"mat-label")(2,"uds-translate"),Y(3,"Match mode"),O()(),I(4,"mat-select",6),J("ngModelChange",function(d){return ae(e),se(q().group.meta_if_any=d)}),I(5,"mat-option",17)(6,"uds-translate"),Y(7,"Any group"),O()(),I(8,"mat-option",17)(9,"uds-translate"),Y(10,"All groups"),O()()()(),I(11,"mat-form-field")(12,"mat-label")(13,"uds-translate"),Y(14,"Selected Groups"),O()(),I(15,"mat-select",18),J("ngModelChange",function(d){return ae(e),se(q().group.groups=d)}),Q(16,Doe,2,1,"ng-container",19),O()()}if(2&a){const e=q();N(4),V("ngModel",e.group.meta_if_any),N(1),V("value",!0),N(3),V("value",!1),N(7),V("ngModel",e.group.groups),N(1),V("ngForOf",e.groups)}}xg.\u0275fac=function(i){return new(i||xg)(F(pt),F(Ot),F(Ci),F(Bi))},xg.\u0275cmp=we({type:xg,selectors:[["uds-new-user"]],decls:61,vars:12,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],["nousertitle",""],[1,"content"],[4,"ngIf"],["type","text","matInput","","autocomplete","new-real_name",3,"ngModel","ngModelChange"],["type","text","matInput","","autocomplete","new-comments",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],["value","A"],["value","I"],["value","B"],[3,"ngModel","ngModelChange","valueChange"],["value","admin"],["value","staff"],["value","user"],["multiple","",3,"ngModel","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],["type","text","matInput","","autocomplete","new-username",3,"ngModel","disabled","ngModelChange"],["type","text","aria-label","Number","matInput","",3,"ngModel","matAutocomplete","ngModelChange","input"],["auto","matAutocomplete"],[3,"value"],["type","password","matInput","","autocomplete","new-password",3,"ngModel","ngModelChange"],["type","text","matInput","",3,"ngModel","ngModelChange"]],template:function(i,e){if(1&i&&(I(0,"h4",0),Q(1,soe,4,1,"div",1),Q(2,loe,2,0,"ng-template",null,2,Nr),O(),I(4,"mat-dialog-content")(5,"div",3),Q(6,coe,4,3,"mat-form-field",4),Q(7,uoe,7,4,"mat-form-field",4),I(8,"mat-form-field")(9,"mat-label")(10,"uds-translate"),Y(11,"Real name"),O()(),I(12,"input",5),J("ngModelChange",function(d){return e.user.real_name=d}),O()(),I(13,"mat-form-field")(14,"mat-label")(15,"uds-translate"),Y(16,"Comments"),O()(),I(17,"input",6),J("ngModelChange",function(d){return e.user.comments=d}),O()(),I(18,"mat-form-field")(19,"mat-label")(20,"uds-translate"),Y(21,"State"),O()(),I(22,"mat-select",7),J("ngModelChange",function(d){return e.user.state=d}),I(23,"mat-option",8)(24,"uds-translate"),Y(25,"Enabled"),O()(),I(26,"mat-option",9)(27,"uds-translate"),Y(28,"Disabled"),O()(),I(29,"mat-option",10)(30,"uds-translate"),Y(31,"Blocked"),O()()()(),I(32,"mat-form-field")(33,"mat-label")(34,"uds-translate"),Y(35,"Role"),O()(),I(36,"mat-select",11),J("ngModelChange",function(d){return e.user.role=d})("valueChange",function(d){return e.roleChanged(d)}),I(37,"mat-option",12)(38,"uds-translate"),Y(39,"Admin"),O()(),I(40,"mat-option",13)(41,"uds-translate"),Y(42,"Staff member"),O()(),I(43,"mat-option",14)(44,"uds-translate"),Y(45,"User"),O()()()(),Q(46,hoe,4,2,"mat-form-field",4),Q(47,foe,5,1,"mat-form-field",4),I(48,"mat-form-field")(49,"mat-label")(50,"uds-translate"),Y(51,"Groups"),O()(),I(52,"mat-select",15),J("ngModelChange",function(d){return e.user.groups=d}),Q(53,poe,2,2,"mat-option",16),O()()()(),I(54,"mat-dialog-actions")(55,"button",17)(56,"uds-translate"),Y(57,"Cancel"),O()(),I(58,"button",18),J("click",function(){return e.save()}),I(59,"uds-translate"),Y(60,"Ok"),O()()()),2&i){const s=on(3);N(1),V("ngIf",e.user.id)("ngIfElse",s),N(5),V("ngIf",!1===e.authenticator.type_info.canSearchUsers||e.user.id),N(1),V("ngIf",!0===e.authenticator.type_info.canSearchUsers&&!e.user.id),N(5),V("ngModel",e.user.real_name),N(5),V("ngModel",e.user.comments),N(5),V("ngModel",e.user.state),N(14),V("ngModel",e.user.role),N(10),V("ngIf",e.authenticator.type_info.needsPassword),N(1),V("ngIf",!e.authenticator.type_info.isExternal),N(5),V("ngModel",e.user.groups),N(1),V("ngForOf",e.groups)}},dependencies:[oi,zt,rr,Qn,Yn,pi,qo,nr,ir,Kn,ei,vi,wa,ya,$i,$q,P4,xn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class Cg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.onSave=new ye(!0),this.servicePools=[],this.groups=[],this.fltrGroup=[],this.authenticator=d.authenticator,this.group={id:void 0,type:d.groupType,name:"",comments:"",meta_if_any:!1,state:"A",groups:[],pools:[]},void 0!==d.group&&(this.group.id=d.group.id,this.group.type=d.group.type,this.group.name=d.group.name)}static launch(i,e,s,d){const f=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(Cg,{width:f,position:{top:window.innerWidth<800?"0px":"7rem"},data:{authenticator:e,groupType:s,group:d},disableClose:!0}).componentInstance.onSave}ngOnInit(){const i=this.rest.authenticators.detail(this.authenticator.id,"groups");void 0!==this.group.id&&i.get(this.group.id).then(e=>{this.group=e},e=>{this.dialogRef.close()}),"meta"===this.group.type?i.summary().then(e=>this.groups=e):this.rest.servicesPools.summary().then(e=>this.servicePools=e)}filterGroup(i){this.rest.authenticators.search(this.authenticator.id,"group",i.target.value,100).then(s=>{this.fltrGroup.length=0,s.forEach(d=>{this.fltrGroup.push(d)})})}getMatchValue(){return django.gettext("Match mode")+this.group.meta_if_any?django.gettext("Any"):django.gettext("All")}save(){this.rest.authenticators.detail(this.authenticator.id,"groups").save(this.group).then(i=>{this.dialogRef.close(),this.onSave.emit(!0)})}}function Toe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function Aoe(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,Toe,2,0,"ng-template",3),he(2,"uds-table",4),O()),2&a){const e=q();N(2),V("rest",e.group)("pageSize",6)}}function koe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Services Pools"),O())}function Eoe(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,koe,2,0,"ng-template",3),he(2,"uds-table",4),O()),2&a){const e=q();N(2),V("rest",e.servicesPools)("pageSize",6)}}function Ioe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Assigned Services"),O())}function Poe(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,Ioe,2,0,"ng-template",3),he(2,"uds-table",4),O()),2&a){const e=q();N(2),V("rest",e.userServices)("pageSize",6)}}Cg.\u0275fac=function(i){return new(i||Cg)(F(pt),F(Ot),F(Ci),F(Bi))},Cg.\u0275cmp=we({type:Cg,selectors:[["uds-new-group"]],decls:35,vars:8,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],["nousertitle",""],[1,"content"],["metafirst",""],["type","text","matInput","",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],["value","A"],["value","I"],["metasecond",""],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],[4,"ngIf"],["type","text","matInput","",3,"ngModel","disabled","ngModelChange"],["type","text","aria-label","Number","matInput","",3,"ngModel","matAutocomplete","ngModelChange","input"],["auto","matAutocomplete"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],["multiple","",3,"ngModel","ngModelChange"],[4,"ngFor","ngForOf"],[3,"value",4,"ngIf"]],template:function(i,e){if(1&i&&(I(0,"h4",0),Q(1,moe,4,1,"div",1),Q(2,goe,2,0,"ng-template",null,2,Nr),O(),I(4,"mat-dialog-content")(5,"div",3),Q(6,boe,3,2,"ng-container",1),Q(7,woe,5,2,"ng-template",null,4,Nr),I(9,"mat-form-field")(10,"mat-label")(11,"uds-translate"),Y(12,"Comments"),O()(),I(13,"input",5),J("ngModelChange",function(d){return e.group.comments=d}),O()(),I(14,"mat-form-field")(15,"mat-label")(16,"uds-translate"),Y(17,"State"),O()(),I(18,"mat-select",6),J("ngModelChange",function(d){return e.group.state=d}),I(19,"mat-option",7)(20,"uds-translate"),Y(21,"Enabled"),O()(),I(22,"mat-option",8)(23,"uds-translate"),Y(24,"Disabled"),O()()()(),Q(25,Coe,7,2,"ng-container",1),Q(26,Moe,17,5,"ng-template",null,9,Nr),O()(),I(28,"mat-dialog-actions")(29,"button",10)(30,"uds-translate"),Y(31,"Cancel"),O()(),I(32,"button",11),J("click",function(){return e.save()}),I(33,"uds-translate"),Y(34,"Ok"),O()()()),2&i){const s=on(3),d=on(8),f=on(27);N(1),V("ngIf",e.group.id)("ngIfElse",s),N(5),V("ngIf","group"===e.group.type)("ngIfElse",d),N(7),V("ngModel",e.group.comments),N(5),V("ngModel",e.group.state),N(7),V("ngIf","group"===e.group.type)("ngIfElse",f)}},dependencies:[oi,zt,rr,Qn,Yn,pi,qo,nr,ir,Kn,ei,vi,wa,ya,$i,$q,P4,xn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.label-match[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}"]});const Roe=[{field:"name",title:django.gettext("Group")},{field:"comments",title:django.gettext("Comments")}],Ooe=[{field:"name",title:django.gettext("Pool")},{field:"state",title:django.gettext("State")},{field:"user_services_count",title:django.gettext("User Services")}],Loe=[{field:"unique_id",title:django.gettext("Unique ID")},{field:"friendly_name",title:django.gettext("Friendly Name")},{field:"in_use",title:django.gettext("In Use")},{field:"ip",title:django.gettext("IP")},{field:"pool",title:django.gettext("Services Pool")}];class sb{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.group={},this.servicesPools={},this.userServices={},this.users=d.users,this.user=d.user}static launch(i,e,s){const d=window.innerWidth<800?"80%":"60%";i.gui.dialog.open(sb,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{users:e,user:s},disableClose:!1})}ngOnInit(){this.rest.authenticators.detail(this.users.parentId,"users").get(this.user.id).then(i=>{this.group=new ab(django.gettext("Groups"),()=>this.rest.authenticators.detail(this.users.parentId,"groups").overview().then(f=>f.filter(_=>i.groups.includes(_.id))),Roe,this.user.id+"infogrp"),this.servicesPools=new ab(django.gettext("Services Pools"),()=>this.users.invoke(this.user.id+"/servicesPools"),Ooe,this.user.id+"infopool"),this.userServices=new ab(django.gettext("Assigned services"),()=>this.users.invoke(this.user.id+"/userServices").then(f=>f.map(_=>(_.in_use=this.api.boolAsHumanString(_.in_use),_))),Loe,this.user.id+"userservpool")})}}function Foe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Services Pools"),O())}function Noe(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,Foe,2,0,"ng-template",3),he(2,"uds-table",4),O()),2&a){const e=q();N(2),V("rest",e.servicesPools)("pageSize",6)}}function Boe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Users"),O())}function Voe(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,Boe,2,0,"ng-template",3),he(2,"uds-table",4),O()),2&a){const e=q();N(2),V("rest",e.users)("pageSize",6)}}function zoe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function Hoe(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,zoe,2,0,"ng-template",3),he(2,"uds-table",4),O()),2&a){const e=q();N(2),V("rest",e.groups)("pageSize",6)}}sb.\u0275fac=function(i){return new(i||sb)(F(pt),F(Ot),F(Ci),F(Bi))},sb.\u0275cmp=we({type:sb,selectors:[["uds-user-information"]],decls:13,vars:4,consts:[["mat-dialog-title",""],[4,"ngIf"],["mat-raised-button","","mat-dialog-close","","color","primary"],["mat-tab-label",""],[3,"rest","pageSize"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Information for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"mat-tab-group"),Q(6,Aoe,3,2,"mat-tab",1),Q(7,Eoe,3,2,"mat-tab",1),Q(8,Poe,3,2,"mat-tab",1),O()(),I(9,"mat-dialog-actions")(10,"button",2)(11,"uds-translate"),Y(12,"Ok"),O()()()),2&i&&(N(3),Re(" ",e.user.name,"\n"),N(3),V("ngIf",e.group),N(1),V("ngIf",e.servicesPools),N(1),V("ngIf",e.userServices))},dependencies:[zt,pi,qo,nr,ir,Kn,Qo,Gs,xl,xn,mi],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});const Goe=[{field:"name",title:django.gettext("Pool")},{field:"state",title:django.gettext("State")},{field:"user_services_count",title:django.gettext("User Services")}],Uoe=[{field:"name",title:django.gettext("Name")},{field:"real_name",title:django.gettext("Real Name")},{field:"state",title:django.gettext("state")},{field:"last_access",title:django.gettext("Last access"),type:Cr.DATETIME}],joe=[{field:"name",title:django.gettext("Group")},{field:"comments",title:django.gettext("Comments")}];class lb{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.data=d,this.users={},this.groups={},this.servicesPools={}}static launch(i,e,s){const d=window.innerWidth<800?"80%":"60%";i.gui.dialog.open(lb,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{group:s,groups:e},disableClose:!1})}ngOnInit(){const i=this.rest.authenticators.detail(this.data.groups.parentId,"groups");if(this.servicesPools=new ab(django.gettext("Service pools"),()=>i.invoke(this.data.group.id+"/servicesPools"),Goe,this.data.group.id+"infopls"),this.users=new ab(django.gettext("Users"),()=>i.invoke(this.data.group.id+"/users").then(d=>d.map(f=>(f.state="A"===f.state?django.gettext("Enabled"):"I"===f.state?django.gettext("Disabled"):django.gettext("Blocked"),f))),Uoe,this.data.group.id+"infousr"),"meta"===this.data.group.type){const d=()=>i.overview().then(f=>f.filter(_=>this.data.group.groups.includes(_.id)));this.groups=new ab(django.gettext("Groups"),d,joe,this.data.group.id+"infogrps")}}}function $oe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function Woe(a,i){if(1&a&&he(0,"uds-information",16),2&a){const e=q(2);V("value",e.authenticator)("gui",e.gui)}}function Yoe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Users"),O())}function qoe(a,i){if(1&a){const e=Pe();I(0,"uds-table",17),J("loaded",function(d){return ae(e),se(q(2).onLoad(d))})("newAction",function(d){return ae(e),se(q(2).onNewUser(d))})("editAction",function(d){return ae(e),se(q(2).onEditUser(d))})("deleteAction",function(d){return ae(e),se(q(2).onDeleteUser(d))})("customButtonAction",function(d){return ae(e),se(q(2).onUserCustom(d))}),O()}if(2&a){const e=q(2);V("rest",e.users)("multiSelect",!0)("allowExport",!0)("tableId","authenticators-d-users"+e.authenticator.id)("customButtons",e.usersCustomButtons)("pageSize",e.api.config.admin.page_size)}}function Xoe(a,i){if(1&a){const e=Pe();I(0,"uds-table",18),J("loaded",function(d){return ae(e),se(q(2).onLoad(d))})("editAction",function(d){return ae(e),se(q(2).onEditUser(d))})("deleteAction",function(d){return ae(e),se(q(2).onDeleteUser(d))})("customButtonAction",function(d){return ae(e),se(q(2).onUserCustom(d))}),O()}if(2&a){const e=q(2);V("rest",e.users)("multiSelect",!0)("allowExport",!0)("tableId","authenticators-d-users"+e.authenticator.id)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)}}function Zoe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function Koe(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function Qoe(a,i){if(1&a){const e=Pe();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),J("selectedIndexChange",function(d){return ae(e),se(q().selectedTab=d)}),I(3,"mat-tab"),Q(4,$oe,2,0,"ng-template",9),I(5,"div",10),Q(6,Woe,1,2,"uds-information",11),O()(),I(7,"mat-tab"),Q(8,Yoe,2,0,"ng-template",9),I(9,"div",10),Q(10,qoe,1,6,"uds-table",12),Q(11,Xoe,1,6,"uds-table",13),O()(),I(12,"mat-tab"),Q(13,Zoe,2,0,"ng-template",9),I(14,"div",10)(15,"uds-table",14),J("loaded",function(d){return ae(e),se(q().onLoad(d))})("newAction",function(d){return ae(e),se(q().onNewGroup(d))})("editAction",function(d){return ae(e),se(q().onEditGroup(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteGroup(d))})("customButtonAction",function(d){return ae(e),se(q().onGroupInformation(d))}),O()()(),I(16,"mat-tab"),Q(17,Koe,2,0,"ng-template",9),I(18,"div",10),he(19,"uds-logs-table",15),O()()()()()}if(2&a){const e=q();N(2),V("selectedIndex",e.selectedTab)("@.disabled",!0),N(4),V("ngIf",e.authenticator&&e.gui),N(4),V("ngIf",e.authenticator.type_info.canCreateUsers),N(1),V("ngIf",!e.authenticator.type_info.canCreateUsers),N(4),V("rest",e.groups)("multiSelect",!0)("allowExport",!0)("customButtons",e.customButtons)("tableId","authenticators-d-groups"+e.authenticator.id)("pageSize",e.api.config.admin.page_size),N(4),V("rest",e.rest.authenticators)("itemId",e.authenticator.id)("tableId","authenticators-d-log"+e.authenticator.id)}}lb.\u0275fac=function(i){return new(i||lb)(F(pt),F(Ot),F(Ci),F(Bi))},lb.\u0275cmp=we({type:lb,selectors:[["uds-group-information"]],decls:12,vars:3,consts:[["mat-dialog-title",""],[4,"ngIf"],["mat-raised-button","","mat-dialog-close","","color","primary"],["mat-tab-label",""],[3,"rest","pageSize"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Information for"),O()(),I(3,"mat-dialog-content")(4,"mat-tab-group"),Q(5,Noe,3,2,"mat-tab",1),Q(6,Voe,3,2,"mat-tab",1),Q(7,Hoe,3,2,"mat-tab",1),O()(),I(8,"mat-dialog-actions")(9,"button",2)(10,"uds-translate"),Y(11,"Ok"),O()()()),2&i&&(N(5),V("ngIf",e.servicesPools),N(1),V("ngIf",e.users),N(1),V("ngIf",e.groups))},dependencies:[zt,pi,qo,nr,ir,Kn,Qo,Gs,xl,xn,mi],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});const Joe=function(a){return["/authenticators",a]};class cb{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.customButtons=[{id:"info",html:'info '+django.gettext("Information")+"",type:Jn.ONLY_MENU}],this.usersCustomButtons=[{id:"info",html:'info '+django.gettext("Information")+"",type:Jn.ONLY_MENU},{id:"clean-related",html:'clear_all '+django.gettext("Clean related (mfa,...)")+"",type:Jn.ONLY_MENU}],this.authenticator=null,this.gui=[],this.users={},this.groups={},this.selectedTab=1,this.selectedTab=this.route.snapshot.paramMap.get("group")?2:1}ngOnInit(){const i=this.route.snapshot.paramMap.get("authenticator");i&&(this.users=this.rest.authenticators.detail(i,"users"),this.groups=this.rest.authenticators.detail(i,"groups"),this.rest.authenticators.get(i).then(e=>{this.authenticator=e,this.rest.authenticators.gui(e.type).then(s=>{this.gui=s})}))}onLoad(i){if(!0===i.param){const e=this.route.snapshot.paramMap.get("user"),s=this.route.snapshot.paramMap.get("group");i.table.selectElement("id",e||s)}}processElement(i){i.maintenance_state=i.maintenance_mode?django.gettext("In Maintenance"):django.gettext("Active")}onNewUser(i){xg.launch(this.api,this.authenticator).subscribe(e=>i.table.overview())}onEditUser(i){xg.launch(this.api,this.authenticator,i.table.selection.selected[0]).subscribe(e=>i.table.overview())}onDeleteUser(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete user"))}onNewGroup(i){Cg.launch(this.api,this.authenticator,i.param.type).subscribe(e=>i.table.overview())}onEditGroup(i){Cg.launch(this.api,this.authenticator,i.param.type,i.table.selection.selected[0]).subscribe(e=>i.table.overview())}onDeleteGroup(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete group"))}onUserCustom(i){var e=this;"info"===i.param.id?sb.launch(this.api,this.users,i.table.selection.selected[0]):"clean-related"===i.param.id&&this.api.gui.questionDialog(django.gettext("Clean data"),django.gettext("Clean related data (mfa, ...)?"),!0).then(s=>Xe(function*(){s&&(yield e.users.invoke(i.table.selection.selected[0].id+"/cleanRelated"),e.api.gui.snackbar.open(django.gettext("Related data cleaned"),django.gettext("dismiss"),{duration:2e3}),i.table.overview())}))}onGroupInformation(i){lb.launch(this.api,this.groups,i.table.selection.selected[0])}}cb.\u0275fac=function(i){return new(i||cb)(F(xi),F(Ot),F(pt))},cb.\u0275cmp=we({type:cb,selectors:[["uds-authenticators-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","newAction","editAction","deleteAction","customButtonAction",4,"ngIf"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","editAction","deleteAction","customButtonAction",4,"ngIf"],["icon","groups",3,"rest","multiSelect","allowExport","customButtons","tableId","pageSize","loaded","newAction","editAction","deleteAction","customButtonAction"],[3,"rest","itemId","tableId"],[3,"value","gui"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","newAction","editAction","deleteAction","customButtonAction"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","editAction","deleteAction","customButtonAction"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),he(6,"img",4),Y(7),O(),Q(8,Qoe,20,14,"div",5),O()),2&i&&(N(2),V("routerLink",su(4,Joe,e.authenticator?e.authenticator.id:"")),N(4),V("src",e.api.staticURL("admin/img/icons/services.png"),tn),N(1),Re(" \xa0",null==e.authenticator?null:e.authenticator.name," "),N(1),V("ngIf",e.authenticator))},dependencies:[zt,jo,Qo,Gs,xl,xn,mi,Wu,wg]});class W1{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){this.route.snapshot.paramMap.get("osmanager")}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New OS Manager"),!1)}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit OS Manager"),!1)}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete OS Manager"))}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("osmanager"))}}W1.\u0275fac=function(i){return new(i||W1)(F(pt),F(xi),F(Ot))},W1.\u0275cmp=we({type:W1,selectors:[["uds-osmanagers"]],decls:2,vars:5,consts:[["icon","osmanagers",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("loaded",function(d){return e.onLoad(d)}),O()()),2&i&&(N(1),V("rest",e.rest.osManagers)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",e.api.config.admin.page_size))},dependencies:[mi]});class Y1{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){this.route.snapshot.paramMap.get("transport")}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New Transport"))}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit Transport"))}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete Transport"))}processElement(i){try{i.allowed_oss=i.allowed_oss.map(e=>e.id).join(", ")}catch{i.allowed_oss=""}}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("transport"))}}Y1.\u0275fac=function(i){return new(i||Y1)(F(pt),F(xi),F(Ot))},Y1.\u0275cmp=we({type:Y1,selectors:[["uds-transports"]],decls:2,vars:7,consts:[["icon","transports",3,"rest","multiSelect","allowExport","hasPermissions","newGrouped","onItem","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("loaded",function(d){return e.onLoad(d)}),O()()),2&i&&(N(1),V("rest",e.rest.transports)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("newGrouped",!0)("onItem",e.processElement)("pageSize",e.api.config.admin.page_size))},dependencies:[mi],styles:[".mat-column-priority{max-width:7rem;justify-content:center}"]});class q1{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){this.route.snapshot.paramMap.get("network")}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New Network"),!1)}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit Network"),!1)}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete Network"))}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("network"))}}q1.\u0275fac=function(i){return new(i||q1)(F(pt),F(xi),F(Ot))},q1.\u0275cmp=we({type:q1,selectors:[["uds-networks"]],decls:2,vars:5,consts:[["icon","networks",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("loaded",function(d){return e.onLoad(d)}),O()()),2&i&&(N(1),V("rest",e.rest.networks)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",e.api.config.admin.page_size))},dependencies:[mi]});class X1{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.customButtons=[Jo.getGotoButton(YI,"provider_id"),Jo.getGotoButton(xz,"provider_id","service_id"),Jo.getGotoButton(A1,"osmanager_id"),Jo.getGotoButton(k1,"pool_group_id")],this.editing=!1}ngOnInit(){return Xe(function*(){})()}onChange(i){var e=this;return Xe(function*(){const s=["initial_srvs","cache_l1_srvs","max_srvs"];if(null===i.on||"service_id"===i.on.field.name){if(""===i.all.service_id.value){i.all.osmanager_id.gui.values=[];for(const f of s)i.all[f].gui.rdonly=!0;return void(i.all.cache_l2_srvs.gui.rdonly=!0)}const d=yield e.rest.providers.service(i.all.service_id.value);if(i.all.allow_users_reset.gui.rdonly=!d.info.can_reset,i.all.osmanager_id.gui.values=[],e.editing||(i.all.osmanager_id.gui.rdonly=!d.info.needs_manager),!0===d.info.needs_manager){const f=yield e.rest.osManagers.overview(),_=[];for(const w of f)for(const D of w.servicesTypes)d.info.servicesTypeProvided.includes(D)&&_.push({id:w.id,text:w.name});i.all.osmanager_id.value=_.length>0?i.all.osmanager_id.value||_[0].id:"",i.all.osmanager_id.gui.values=_}else i.all.osmanager_id.gui.values=[{id:"",text:django.gettext("(This service does not requires an OS Manager)")}],i.all.osmanager_id.value="";for(const f of s)i.all[f].gui.rdonly=!d.info.uses_cache;i.all.cache_l2_srvs.gui.rdonly=!1===d.info.uses_cache||!1===d.info.uses_cache_l2,i.all.publish_on_save&&(i.all.publish_on_save.gui.rdonly=!d.info.needs_publication)}})()}onNew(i){var e=this;return Xe(function*(){e.editing=!1,yield e.api.gui.forms.typedNewForm(i,django.gettext("New service Pool"),!1,[{name:"publish_on_save",value:!0,gui:{label:django.gettext("Publish on creation"),tooltip:django.gettext("If selected, will initiate the publication inmediatly after creation"),type:Xo.CHECKBOX,order:150,defvalue:"true"}}],e.onChange.bind(e))})()}onEdit(i){var e=this;return Xe(function*(){return e.editing=!0,e.api.gui.forms.typedEditForm(i,django.gettext("Edit Service Pool"),!1,void 0,e.onChange.bind(e))})()}onDelete(i){var e=this;return Xe(function*(){return e.api.gui.forms.deleteForm(i,django.gettext("Delete service pool"))})()}processElement(i){i.visible=this.api.boolAsHumanString(i.visible),i.show_transports=this.api.boolAsHumanString(i.show_transports),i.restrained?(i.name='warning '+this.api.gui.icon(i.info.icon)+i.name,i.state="T"):(i.name=this.api.gui.icon(i.info.icon)+i.name,i.meta_member.length>0&&(i.state="V")),i.name=this.api.safeString(i.name),i.pool_group_name=this.api.safeString(this.api.gui.icon(i.pool_group_thumb)+i.pool_group_name)}onDetail(i){this.api.navigation.gotoServicePoolDetail(i.param.id)}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("pool"))}}function ese(a,i){if(1&a&&(I(0,"mat-option",8),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function tse(a,i){if(1&a&&(I(0,"mat-option",8),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}X1.\u0275fac=function(i){return new(i||X1)(F(xi),F(Ot),F(pt))},X1.\u0275cmp=we({type:X1,selectors:[["uds-service-pools"]],decls:1,vars:7,consts:[["icon","pools",3,"rest","multiSelect","allowExport","hasPermissions","onItem","customButtons","pageSize","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(i,e){1&i&&(I(0,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("detailAction",function(d){return e.onDetail(d)})("loaded",function(d){return e.onLoad(d)}),O()),2&i&&V("rest",e.rest.servicesPools)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("onItem",e.processElement)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)},dependencies:[mi],styles:[".mat-column-user_services_count, .mat-column-user_services_in_preparation, .mat-column-visible, .mat-column-state, .mat-column-usage{max-width:7rem;justify-content:center} .mat-column-show_transports{max-width:10rem;justify-content:center} .mat-column-pool_group_name{max-width:12rem} .row-state-T>.mat-mdc-cell{color:#d65014!important}"]});class Sg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.done=new wl,this.auths=[],this.users=[],this.userFilter="",this.authId="",this.userId="",this.userService=d.userService,this.userServices=d.userServices}static launch(i,e,s){const d=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(Sg,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{userService:e,userServices:s},disableClose:!1}).componentInstance.done}ngOnInit(){var i=this;return Xe(function*(){i.authId=i.userService.owner_info.auth_id||"",i.userId=i.userService.owner_info.user_id||"",i.auths=yield i.rest.authenticators.summary(),i.authChanged()})()}changeAuth(i){this.userId="",this.authChanged()}filteredUsers(){if(!this.userFilter)return this.users;const i=new Array;return this.users.forEach(e=>{(""===this.userFilter||e.name.toLocaleLowerCase().includes(this.userFilter.toLocaleLowerCase()))&&i.push(e)}),i}save(){""!==this.userId&&""!==this.authId?this.userServices.save({id:this.userService.id,auth_id:this.authId,user_id:this.userId}).then(()=>{this.dialogRef.close(),this.done.resolve(!0)}):this.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid user"))}cancel(){this.dialogRef.close(),this.done.resolve(!1)}authChanged(){var i=this;return Xe(function*(){i.users=i.authId?yield i.rest.authenticators.detail(i.authId,"users").summary():[]})()}}function nse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New access rule for"),O())}function ise(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Edit access rule for"),O())}function rse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Default fallback access for"),O())}function ase(a,i){if(1&a&&(I(0,"mat-option",11),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function ose(a,i){if(1&a){const e=Pe();gn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Priority"),O()(),I(5,"input",8),J("ngModelChange",function(d){return ae(e),se(q().accessRule.priority=d)}),O()(),I(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Calendar"),O()(),I(10,"mat-select",3),J("ngModelChange",function(d){return ae(e),se(q().accessRule.calendarId=d)}),I(11,"uds-cond-select-search",9),J("changed",function(d){return ae(e),se(q().calendarsFilter=d)}),O(),Q(12,ase,2,2,"mat-option",10),O()(),vn()}if(2&a){const e=q();N(5),V("ngModel",e.accessRule.priority),N(5),V("ngModel",e.accessRule.calendarId),N(1),V("options",e.calendars),N(1),V("ngForOf",e.filtered(e.calendars,e.calendarsFilter))}}Sg.\u0275fac=function(i){return new(i||Sg)(F(pt),F(Ot),F(Ci),F(Bi))},Sg.\u0275cmp=we({type:Sg,selectors:[["uds-change-assigned-service-owner"]],decls:25,vars:5,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange","selectionChange"],[3,"value",4,"ngFor","ngForOf"],[3,"ngModel","ngModelChange"],[3,"options","changed"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Change owner of assigned service"),O()(),I(3,"mat-dialog-content")(4,"div",1)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Authenticator"),O()(),I(9,"mat-select",2),J("ngModelChange",function(d){return e.authId=d})("selectionChange",function(d){return e.changeAuth(d)}),Q(10,ese,2,2,"mat-option",3),O()(),I(11,"mat-form-field")(12,"mat-label")(13,"uds-translate"),Y(14,"User"),O()(),I(15,"mat-select",4),J("ngModelChange",function(d){return e.userId=d}),I(16,"uds-cond-select-search",5),J("changed",function(d){return e.userFilter=d}),O(),Q(17,tse,2,2,"mat-option",3),O()()()(),I(18,"mat-dialog-actions")(19,"button",6),J("click",function(){return e.cancel()}),I(20,"uds-translate"),Y(21,"Cancel"),O()(),I(22,"button",7),J("click",function(){return e.save()}),I(23,"uds-translate"),Y(24,"Ok"),O()()()),2&i&&(N(9),V("ngModel",e.authId),N(1),V("ngForOf",e.auths),N(5),V("ngModel",e.userId),N(1),V("options",e.users),N(1),V("ngForOf",e.filteredUsers()))},dependencies:[oi,Qn,Yn,pi,nr,ir,Kn,ei,vi,ya,$i,xn,es],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class Yu{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.onSave=new ye(!0),this.calendars=[],this.calendarsFilter="",this.pool=d.pool,this.model=d.model,this.accessRule={id:void 0,priority:0,access:"ALLOW",calendarId:""},d.accessRule&&(this.accessRule.id=d.accessRule.id)}static launch(i,e,s,d){const f=window.innerWidth<800?"80%":"60%";return i.gui.dialog.open(Yu,{width:f,position:{top:window.innerWidth<800?"0px":"7rem"},data:{pool:e,model:s,accessRule:d},disableClose:!1}).componentInstance.onSave}ngOnInit(){this.rest.calendars.summary().then(i=>{this.calendars=i}),void 0!==this.accessRule.id&&-1!==this.accessRule.id?this.model.get(this.accessRule.id).then(i=>{this.accessRule=i}):-1===this.accessRule.id&&this.model.parentModel.getFallbackAccess(this.pool.id).then(i=>this.accessRule.access=i)}filtered(i,e){return e?i.filter(s=>s.name.toLocaleLowerCase().includes(e.toLocaleLowerCase())):i}save(){const i=()=>{this.dialogRef.close(),this.onSave.emit(!0)};-1!==this.accessRule.id?this.model.save(this.accessRule).then(i):this.model.parentModel.setFallbackAccess(this.pool.id,this.accessRule.access).then(i)}}function sse(a,i){if(1&a&&(I(0,"mat-option",8),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function lse(a,i){if(1&a&&(gn(0),Y(1),vn()),2&a){const e=q().$implicit;N(1),Re(" (",e.comments,")")}}function cse(a,i){if(1&a&&(I(0,"mat-option",8),Y(1),Q(2,lse,2,1,"ng-container",9),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name,""),N(1),V("ngIf",e.comments)}}Yu.\u0275fac=function(i){return new(i||Yu)(F(pt),F(Ot),F(Ci),F(Bi))},Yu.\u0275cmp=we({type:Yu,selectors:[["uds-service-pools-access-calendars"]],decls:24,vars:6,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],[3,"ngModel","ngModelChange"],["value","ALLOW"],["value","DENY"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],["matInput","","type","number",3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(i,e){1&i&&(I(0,"h4",0),Q(1,nse,2,0,"uds-translate",1),Q(2,ise,2,0,"uds-translate",1),Q(3,rse,2,0,"uds-translate",1),Y(4),O(),I(5,"mat-dialog-content")(6,"div",2),Q(7,ose,13,4,"ng-container",1),I(8,"mat-form-field")(9,"mat-label")(10,"uds-translate"),Y(11,"Action"),O()(),I(12,"mat-select",3),J("ngModelChange",function(d){return e.accessRule.access=d}),I(13,"mat-option",4),Y(14," ALLOW "),O(),I(15,"mat-option",5),Y(16," DENY "),O()()()()(),I(17,"mat-dialog-actions")(18,"button",6)(19,"uds-translate"),Y(20,"Cancel"),O()(),I(21,"button",7),J("click",function(){return e.save()}),I(22,"uds-translate"),Y(23,"Ok"),O()()()),2&i&&(N(1),V("ngIf",void 0===e.accessRule.id),N(1),V("ngIf",void 0!==e.accessRule.id&&-1!==e.accessRule.id),N(1),V("ngIf",-1===e.accessRule.id),N(1),Re(" ",e.pool.name,"\n"),N(3),V("ngIf",-1!==e.accessRule.id),N(5),V("ngModel",e.accessRule.access))},dependencies:[oi,zt,rr,xd,Qn,Yn,pi,qo,nr,ir,Kn,ei,vi,wa,ya,$i,xn,es],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class Dg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.done=new wl,this.model={},this.auths=[],this.authFilter="",this.groups=[],this.groupFilter="",this.authId="",this.groupId="",this.pool=d.pool,this.model=d.model}static launch(i,e,s){const d=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(Dg,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{pool:e,model:s},disableClose:!1}).componentInstance.done}ngOnInit(){var i=this;return Xe(function*(){i.auths=yield i.rest.authenticators.summary()})()}changeAuth(i){var e=this;return Xe(function*(){e.groupId="",e.authChanged()})()}filteredGroups(){return!this.groupFilter||this.groupFilter.length<3?this.groups:this.groups.filter(i=>(i.name+i.comments).toLocaleLowerCase().includes(this.groupFilter.toLocaleLowerCase()))}filteredAuths(){return!this.authFilter||this.authFilter.length<3?this.auths:this.auths.filter(i=>i.name.toLocaleLowerCase().includes(this.authFilter.toLocaleLowerCase()))}save(){var i=this;return Xe(function*(){""!==i.groupId&&""!==i.authId?(yield i.model.create({id:i.groupId}),i.dialogRef.close(),i.done.resolve(!0)):i.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid group"))})()}cancel(){var i=this;return Xe(function*(){i.dialogRef.close(),i.done.resolve(!1)})()}authChanged(){var i=this;return Xe(function*(){i.groups=i.authId?yield i.rest.authenticators.detail(i.authId,"groups").summary():[]})()}}function dse(a,i){if(1&a&&(gn(0),Y(1),vn()),2&a){const e=q().$implicit;N(1),Re(" (",e.comments,")")}}function use(a,i){if(1&a&&(I(0,"mat-option",7),Y(1),Q(2,dse,2,1,"ng-container",8),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name,""),N(1),V("ngIf",e.comments)}}Dg.\u0275fac=function(i){return new(i||Dg)(F(pt),F(Ot),F(Ci),F(Bi))},Dg.\u0275cmp=we({type:Dg,selectors:[["uds-service-pools-add-group"]],decls:27,vars:7,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange","selectionChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"ngModel","ngModelChange"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"],[4,"ngIf"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"New group for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"div",1)(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Authenticator"),O()(),I(10,"mat-select",2),J("ngModelChange",function(d){return e.authId=d})("selectionChange",function(d){return e.changeAuth(d)}),I(11,"uds-cond-select-search",3),J("changed",function(d){return e.authFilter=d}),O(),Q(12,sse,2,2,"mat-option",4),O()(),I(13,"mat-form-field")(14,"mat-label")(15,"uds-translate"),Y(16,"Group"),O()(),I(17,"mat-select",5),J("ngModelChange",function(d){return e.groupId=d}),I(18,"uds-cond-select-search",3),J("changed",function(d){return e.groupFilter=d}),O(),Q(19,cse,3,3,"mat-option",4),O()()()(),I(20,"mat-dialog-actions")(21,"button",6),J("click",function(){return e.cancel()}),I(22,"uds-translate"),Y(23,"Cancel"),O()(),I(24,"button",7),J("click",function(){return e.save()}),I(25,"uds-translate"),Y(26,"Ok"),O()()()),2&i&&(N(3),Re(" ",e.pool.name,""),N(7),V("ngModel",e.authId),N(1),V("options",e.auths),N(1),V("ngForOf",e.filteredAuths()),N(5),V("ngModel",e.groupId),N(1),V("options",e.groups),N(1),V("ngForOf",e.filteredGroups()))},dependencies:[oi,zt,Qn,Yn,pi,nr,ir,Kn,ei,vi,ya,$i,xn,es],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class db{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.done=new wl,this.transports=[],this.transportsFilter="",this.transportId="",this.servicePool=d.servicePool}static launch(i,e){const s=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(db,{width:s,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:e},disableClose:!1}).componentInstance.done}ngOnInit(){var i=this;return Xe(function*(){i.transports=(yield i.rest.transports.summary()).filter(e=>i.servicePool.info.allowedProtocols.includes(e.protocol))})()}filteredTransports(){return this.transportsFilter?this.transports.filter(i=>i.name.toLocaleLowerCase().includes(this.transportsFilter.toLocaleLowerCase())):this.transports}save(){var i=this;return Xe(function*(){""!==i.transportId?(yield i.rest.servicesPools.detail(i.servicePool.id,"transports").create({id:i.transportId}),i.done.resolve(!0),i.dialogRef.close()):i.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid transport"))})()}cancel(){var i=this;return Xe(function*(){i.done.resolve(!1),i.dialogRef.close()})()}}db.\u0275fac=function(i){return new(i||db)(F(pt),F(Ot),F(Ci),F(Bi))},db.\u0275cmp=we({type:db,selectors:[["uds-service-pools-add-transport"]],decls:20,vars:4,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"],[4,"ngIf"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"New transport for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"div",1)(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Transport"),O()(),I(10,"mat-select",2),J("ngModelChange",function(d){return e.transportId=d}),I(11,"uds-cond-select-search",3),J("changed",function(d){return e.transportsFilter=d}),O(),Q(12,use,3,3,"mat-option",4),O()()()(),I(13,"mat-dialog-actions")(14,"button",5),J("click",function(){return e.cancel()}),I(15,"uds-translate"),Y(16,"Cancel"),O()(),I(17,"button",6),J("click",function(){return e.save()}),I(18,"uds-translate"),Y(19,"Ok"),O()()()),2&i&&(N(3),Re(" ",e.servicePool.name,""),N(7),V("ngModel",e.transportId),N(1),V("options",e.transports),N(1),V("ngForOf",e.filteredTransports()))},dependencies:[oi,zt,Qn,Yn,pi,nr,ir,Kn,ei,vi,ya,$i,xn,es],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class ub{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.done=new wl,this.reason="",this.servicePool=d.servicePool}static launch(i,e){const s=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(ub,{width:s,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:e},disableClose:!1}).componentInstance.done}ngOnInit(){}save(){this.rest.servicesPools.detail(this.servicePool.id,"publications").invoke("publish","changelog="+encodeURIComponent(this.reason)).then(()=>{this.dialogRef.close(),this.done.resolve(!0)})}cancel(){this.dialogRef.close(),this.done.resolve(!1)}}ub.\u0275fac=function(i){return new(i||ub)(F(pt),F(Ot),F(Ci),F(Bi))},ub.\u0275cmp=we({type:ub,selectors:[["uds-service-pools-new-publication"]],decls:18,vars:2,consts:[["mat-dialog-title",""],[1,"content"],["matInput","","type","text",3,"ngModel","ngModelChange"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"New publication for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"div",1)(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Comments"),O()(),I(10,"input",2),J("ngModelChange",function(d){return e.reason=d}),O()()()(),I(11,"mat-dialog-actions")(12,"button",3),J("click",function(){return e.cancel()}),I(13,"uds-translate"),Y(14,"Cancel"),O()(),I(15,"button",4),J("click",function(){return e.save()}),I(16,"uds-translate"),Y(17,"Ok"),O()()()),2&i&&(N(3),Re(" ",e.servicePool.name,"\n"),N(7),V("ngModel",e.reason))},dependencies:[rr,Qn,Yn,pi,nr,ir,Kn,ei,vi,wa,xn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class hb{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.onSave=new ye(!0),this.changeLogPubs={},this.servicePool=d.servicePool}static launch(i,e){const s=window.innerWidth<800?"80%":"60%";i.gui.dialog.open(hb,{width:s,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:e},disableClose:!1})}ngOnInit(){this.changeLogPubs=this.rest.servicesPools.detail(this.servicePool.id,"changelog")}}hb.\u0275fac=function(i){return new(i||hb)(F(pt),F(Ot),F(Ci),F(Bi))},hb.\u0275cmp=we({type:hb,selectors:[["uds-service-pools-publications-changelog"]],decls:11,vars:4,consts:[["mat-dialog-title",""],["icon","publications",3,"rest","allowExport","tableId"],["changeLog",""],["mat-raised-button","","color","primary","mat-dialog-close",""]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Changelog of"),O(),Y(3),O(),I(4,"mat-dialog-content"),he(5,"uds-table",1,2),O(),I(7,"mat-dialog-actions")(8,"button",3)(9,"uds-translate"),Y(10,"Ok"),O()()()),2&i&&(N(3),Re(" ",e.servicePool.name,"\n"),N(2),V("rest",e.changeLogPubs)("allowExport",!0)("tableId","servicePools-d-changelog"+e.servicePool.id))},dependencies:[pi,qo,nr,ir,Kn,xn,mi],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});const hse=["switch"],fse=["*"],pse=new _e("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1})}),mse={provide:jr,useExisting:nn(()=>wP),multi:!0};class cte{constructor(i,e){this.source=i,this.checked=e}}let gse=0;const vse=Cy(gc(vc(mc(class{constructor(a){this._elementRef=a}}))));let _se=(()=>{class a extends vse{get required(){return this._required}set required(e){this._required=We(e)}get checked(){return this._checked}set checked(e){this._checked=We(e),this._changeDetectorRef.markForCheck()}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(e,s,d,f,_,w,D){super(e),this._focusMonitor=s,this._changeDetectorRef=d,this.defaults=_,this._onChange=k=>{},this._onTouched=()=>{},this._required=!1,this._checked=!1,this.name=null,this.labelPosition="after",this.ariaLabel=null,this.ariaLabelledby=null,this.change=new ye,this.toggleChange=new ye,this.tabIndex=parseInt(f)||0,this.color=this.defaultColor=_.color||"accent",this._noopAnimations="NoopAnimations"===w,this.id=this._uniqueId=`${D}${++gse}`}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{"keyboard"===e||"program"===e?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}}return a.\u0275fac=function(e){xs()},a.\u0275dir=me({type:a,inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],required:"required",checked:"checked"},outputs:{change:"change",toggleChange:"toggleChange"},features:[Se]}),a})(),wP=(()=>{class a extends _se{get buttonId(){return`${this.id||this._uniqueId}-button`}constructor(e,s,d,f,_,w){super(e,s,d,f,_,w,"mat-mdc-slide-toggle-"),this._labelId=this._uniqueId+"-label"}_handleClick(){this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new cte(this,this.checked)))}focus(){this._switchElement.nativeElement.focus()}_createChangeEvent(e){return new cte(this,e)}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Wo),F(Zt),hs("tabindex"),F(pse),F(ki,8))},a.\u0275cmp=we({type:a,selectors:[["mat-slide-toggle"]],viewQuery:function(e,s){if(1&e&&ot(hse,5),2&e){let d;Ee(d=Oe())&&(s._switchElement=d.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:11,hostBindings:function(e,s){2&e&&(Oa("id",s.id),He("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),at("mat-mdc-slide-toggle-focused",s._focused)("mat-mdc-slide-toggle-checked",s.checked)("_mat-animation-noopable",s._noopAnimations))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matSlideToggle"],features:[et([mse]),Se],ngContentSelectors:fse,decls:17,vars:24,consts:[[1,"mdc-form-field"],["role","switch","type","button",1,"mdc-switch",3,"tabIndex","disabled","click"],["switch",""],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],["viewBox","0 0 24 24",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"],[3,"for","click"]],template:function(e,s){if(1&e&&(Fn(),I(0,"div",0)(1,"button",1,2),J("click",function(){return s._handleClick()}),he(3,"div",3),I(4,"div",4)(5,"div",5)(6,"div",6),he(7,"div",7),O(),I(8,"div",8),he(9,"div",9),O(),I(10,"div",10),Pr(),I(11,"svg",11),he(12,"path",12),O(),I(13,"svg",13),he(14,"path",14),O()()()()(),Ll(),I(15,"label",15),J("click",function(f){return f.stopPropagation()}),ht(16),O()()),2&e){const d=on(2);at("mdc-form-field--align-end","before"==s.labelPosition),N(1),at("mdc-switch--selected",s.checked)("mdc-switch--unselected",!s.checked)("mdc-switch--checked",s.checked)("mdc-switch--disabled",s.disabled),V("tabIndex",s.tabIndex)("disabled",s.disabled),He("id",s.buttonId)("name",s.name)("aria-label",s.ariaLabel)("aria-labelledby",s._getAriaLabelledBy())("aria-describedby",s.ariaDescribedby)("aria-required",s.required||null)("aria-checked",s.checked),N(8),V("matRippleTrigger",d)("matRippleDisabled",s.disableRipple||s.disabled)("matRippleCentered",!0),N(6),V("for",s.buttonId),He("id",s._labelId)}},dependencies:[Ur],styles:['.mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--mdc-elevation-overlay-color, #fff)}.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative}.mdc-switch[hidden]{display:none}.mdc-switch:disabled{cursor:default;pointer-events:none}.mdc-switch__track{overflow:hidden;position:relative;width:100%}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%}@media screen and (forced-colors: active){.mdc-switch__track::before,.mdc-switch__track::after{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(-100%)}[dir=rtl] .mdc-switch__track::after,.mdc-switch__track[dir=rtl]::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track[dir=rtl]::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0)}[dir=rtl] .mdc-switch__handle-track,.mdc-switch__handle-track[dir=rtl]{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track,.mdc-switch--selected .mdc-switch__handle-track[dir=rtl]{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto}[dir=rtl] .mdc-switch__handle,.mdc-switch__handle[dir=rtl]{left:auto;right:0}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media screen and (forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-elevation-overlay{bottom:0;left:0;right:0;top:0}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1}.mdc-switch:disabled .mdc-switch__ripple{display:none}.mdc-switch__icons{height:100%;position:relative;width:100%;z-index:1}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mdc-switch{width:var(--mdc-switch-track-width, 36px)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-selected-handle-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-hover-handle-color, #310077)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-focus-handle-color, #310077)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-selected-pressed-handle-color, #310077)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-selected-handle-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-unselected-handle-color, #616161)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-hover-handle-color, #212121)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-focus-handle-color, #212121)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-unselected-pressed-handle-color, #212121)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-unselected-handle-color, #424242)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle::before{background:var(--mdc-switch-handle-surface-color, var(--mdc-theme-surface, #fff))}.mat-mdc-slide-toggle .mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation, 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-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation, 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-mdc-slide-toggle .mdc-switch .mdc-switch__focus-ring-wrapper,.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle{height:var(--mdc-switch-handle-height, 20px)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__handle::after{opacity:var(--mdc-switch-disabled-handle-opacity, 0.38)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle{border-radius:var(--mdc-switch-handle-shape, 10px)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle{width:var(--mdc-switch-handle-width, 20px)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle-track{width:calc(100% - var(--mdc-switch-handle-width, 20px))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled .mdc-switch__icon{fill:var(--mdc-switch-selected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-selected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled .mdc-switch__icon{fill:var(--mdc-switch-unselected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-unselected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-selected-icon-opacity, 0.38)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected .mdc-switch__icon{width:var(--mdc-switch-selected-icon-size, 18px);height:var(--mdc-switch-selected-icon-size, 18px)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected .mdc-switch__icon{width:var(--mdc-switch-unselected-icon-size, 18px);height:var(--mdc-switch-unselected-icon-size, 18px)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-hover-state-layer-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-focus-state-layer-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-pressed-state-layer-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-hover-state-layer-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-focus-state-layer-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-pressed-state-layer-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-selected-hover-state-layer-opacity, 0.04)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-selected-focus-state-layer-opacity, 0.12)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-selected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-selected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-unselected-hover-state-layer-opacity, 0.04)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-unselected-focus-state-layer-opacity, 0.12)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__ripple{height:var(--mdc-switch-state-layer-size, 48px);width:var(--mdc-switch-state-layer-size, 48px)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__track{height:var(--mdc-switch-track-height, 14px)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__track{opacity:var(--mdc-switch-disabled-track-opacity, 0.12)}.mat-mdc-slide-toggle .mdc-switch:enabled .mdc-switch__track::after{background:var(--mdc-switch-selected-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-hover-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-focus-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mdc-switch-selected-pressed-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__track::after{background:var(--mdc-switch-disabled-selected-track-color, #424242)}.mat-mdc-slide-toggle .mdc-switch:enabled .mdc-switch__track::before{background:var(--mdc-switch-unselected-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-hover-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-focus-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mdc-switch-unselected-pressed-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__track::before{background:var(--mdc-switch-disabled-unselected-track-color, #424242)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__track{border-radius:var(--mdc-switch-track-shape, 7px)}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle .mdc-switch__ripple::after{content:"";opacity:0}.mat-mdc-slide-toggle .mdc-switch:hover .mdc-switch__ripple::after{opacity:.04;transition:opacity 75ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mdc-switch .mdc-switch__ripple::after{opacity:.12}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-mdc-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-mdc-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-elevation-overlay,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}'],encapsulation:2,changeDetection:0}),a})();const yse={provide:xr,useExisting:nn(()=>dte),multi:!0};let dte=(()=>{class a extends b1{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["mat-slide-toggle","required","","formControlName",""],["mat-slide-toggle","required","","formControl",""],["mat-slide-toggle","required","","ngModel",""]],features:[et([yse]),Se]}),a})(),ute=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})(),bse=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[ute,Qt,io,zr,ute,Qt]}),a})();function wse(a,i){1&a&&(gn(0),I(1,"uds-translate"),Y(2,"Edit action for"),O(),vn())}function xse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New action for"),O())}function Cse(a,i){if(1&a&&(I(0,"mat-option",13),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function Sse(a,i){if(1&a&&(I(0,"mat-option",13),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.description," ")}}function Dse(a,i){if(1&a&&(I(0,"mat-option",13),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function Mse(a,i){if(1&a){const e=Pe();gn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Transport"),O()(),I(5,"mat-select",4),J("ngModelChange",function(d){return ae(e),se(q().paramValue=d)}),I(6,"uds-cond-select-search",5),J("changed",function(d){return ae(e),se(q().transportsFilter=d)}),O(),Q(7,Dse,2,2,"mat-option",6),O()(),vn()}if(2&a){const e=q();N(5),V("ngModel",e.paramValue),N(1),V("options",e.transports),N(1),V("ngForOf",e.filtered(e.transports,e.transportsFilter))}}function Tse(a,i){if(1&a&&(I(0,"mat-option",13),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function Ase(a,i){if(1&a&&(I(0,"mat-option",13),Y(1),O()),2&a){const e=i.$implicit;V("value",q(2).authenticator+"@"+e.id),N(1),Re(" ",e.name," ")}}function kse(a,i){if(1&a){const e=Pe();gn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Authenticator"),O()(),I(5,"mat-select",9),J("ngModelChange",function(d){return ae(e),se(q().authenticator=d)})("valueChange",function(d){return ae(e),se(q().authenticatorChangedTo(d))}),Q(6,Tse,2,2,"mat-option",6),O()(),I(7,"mat-form-field")(8,"mat-label")(9,"uds-translate"),Y(10,"Group"),O()(),I(11,"mat-select",4),J("ngModelChange",function(d){return ae(e),se(q().paramValue=d)}),I(12,"uds-cond-select-search",5),J("changed",function(d){return ae(e),se(q().groupsFilter=d)}),O(),Q(13,Ase,2,2,"mat-option",6),O()(),vn()}if(2&a){const e=q();N(5),V("ngModel",e.authenticator),N(1),V("ngForOf",e.authenticators),N(5),V("ngModel",e.paramValue),N(1),V("options",e.groups),N(1),V("ngForOf",e.filtered(e.groups,e.groupsFilter))}}function Ese(a,i){if(1&a){const e=Pe();gn(0),I(1,"div",14)(2,"span",15),Y(3),O(),Y(4,"\xa0 "),I(5,"mat-slide-toggle",4),J("ngModelChange",function(d){return ae(e),se(q().paramValue=d)}),O()(),vn()}if(2&a){const e=q();N(3),In(e.parameter.description),N(2),V("ngModel",e.paramValue)}}function Ise(a,i){if(1&a){const e=Pe();gn(0),I(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",16),J("ngModelChange",function(d){return ae(e),se(q().paramValue=d)}),O()(),vn()}if(2&a){const e=q();N(3),Re(" ",e.parameter.description," "),N(1),V("type",e.parameter.type)("ngModel",e.paramValue)}}const Pse=function(){return["transport","group","bool"]};class Mg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.onSave=new ye(!0),this.calendars=[],this.actionList=[],this.authenticators=[],this.transports=[],this.groups=[],this.paramsDict={},this.calendarsFilter="",this.groupsFilter="",this.transportsFilter="",this.authenticator="",this.parameter={},this.paramValue="",this.servicePool=d.servicePool,this.scheduledAction={id:void 0,action:"",calendar:"",calendarId:"",atStart:!0,eventsOffset:0,params:{}},void 0!==d.scheduledAction&&(this.scheduledAction.id=d.scheduledAction.id)}static launch(i,e,s){const d=window.innerWidth<800?"80%":"60%";return i.gui.dialog.open(Mg,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:e,scheduledAction:s},disableClose:!1}).componentInstance.onSave}ngOnInit(){this.rest.authenticators.summary().then(i=>this.authenticators=i),this.rest.transports.summary().then(i=>this.transports=i),this.rest.calendars.summary().then(i=>this.calendars=i),this.rest.servicesPools.actionsList(this.servicePool.id).then(i=>{this.actionList=i,this.actionList.forEach(e=>{this.paramsDict[e.id]=e.params[0]}),void 0!==this.scheduledAction.id&&this.rest.servicesPools.detail(this.servicePool.id,"actions").get(this.scheduledAction.id).then(e=>{this.scheduledAction=e,this.actionChangedTo(this.scheduledAction.action)})})}filtered(i,e){return e?i.filter(s=>s.name.toLocaleLowerCase().includes(e.toLocaleLowerCase())):i}actionChangedTo(i){if(this.parameter=this.paramsDict[i],void 0!==this.parameter&&(this.paramValue=this.scheduledAction.params[this.parameter.name],void 0===this.paramValue&&(this.paramValue=!1!==this.parameter.default&&(this.parameter.default||"")),"group"===this.parameter.type)){let e=this.paramValue.split("@");2!==e.length&&(e=["",""]),this.authenticator=e[0],this.authenticatorChangedTo(this.authenticator)}}authenticatorChangedTo(i){var e=this;return Xe(function*(){i&&(e.groups=yield e.rest.authenticators.detail(i,"groups").summary())})()}save(){var i=this;return Xe(function*(){i.scheduledAction.params={},i.parameter&&(i.scheduledAction.params[i.parameter.name]=i.paramValue),yield i.rest.servicesPools.detail(i.servicePool.id,"actions").save(i.scheduledAction),i.dialogRef.close(),i.onSave.emit(!0)})()}}Mg.\u0275fac=function(i){return new(i||Mg)(F(pt),F(Ot),F(Ci),F(Bi))},Mg.\u0275cmp=we({type:Mg,selectors:[["uds-service-pools-scheduled-action"]],decls:40,vars:15,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],["editTitle",""],[1,"content"],[3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],["matInput","","type","number",3,"ngModel","ngModelChange"],[1,"toggle"],[3,"ngModel","ngModelChange","valueChange"],[4,"ngIf"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],[3,"value"],[1,"mat-form-field-infix"],[1,"label"],["matInput","",3,"type","ngModel","ngModelChange"]],template:function(i,e){if(1&i&&(I(0,"h4",0),Q(1,wse,3,0,"ng-container",1),Q(2,xse,2,0,"ng-template",null,2,Nr),Y(4),O(),I(5,"mat-dialog-content")(6,"div",3)(7,"mat-form-field")(8,"mat-label")(9,"uds-translate"),Y(10,"Calendar"),O()(),I(11,"mat-select",4),J("ngModelChange",function(d){return e.scheduledAction.calendarId=d}),I(12,"uds-cond-select-search",5),J("changed",function(d){return e.calendarsFilter=d}),O(),Q(13,Cse,2,2,"mat-option",6),O()(),I(14,"mat-form-field")(15,"mat-label")(16,"uds-translate"),Y(17,"Events offset (minutes)"),O()(),I(18,"input",7),J("ngModelChange",function(d){return e.scheduledAction.eventsOffset=d}),O()(),I(19,"div",8)(20,"mat-slide-toggle",4),J("ngModelChange",function(d){return e.scheduledAction.atStart=d}),I(21,"uds-translate"),Y(22,"At the beginning of the interval?"),O()()(),I(23,"mat-form-field")(24,"mat-label")(25,"uds-translate"),Y(26,"Action"),O()(),I(27,"mat-select",9),J("ngModelChange",function(d){return e.scheduledAction.action=d})("valueChange",function(d){return e.actionChangedTo(d)}),Q(28,Sse,2,2,"mat-option",6),O()(),Q(29,Mse,8,3,"ng-container",10),Q(30,kse,14,5,"ng-container",10),Q(31,Ese,6,2,"ng-container",10),Q(32,Ise,5,3,"ng-container",10),O()(),I(33,"mat-dialog-actions")(34,"button",11)(35,"uds-translate"),Y(36,"Cancel"),O()(),I(37,"button",12),J("click",function(){return e.save()}),I(38,"uds-translate"),Y(39,"Ok"),O()()()),2&i){const s=on(3);N(1),V("ngIf",void 0!==e.scheduledAction.id)("ngIfElse",s),N(3),Re(" ",e.servicePool.name,"\n"),N(7),V("ngModel",e.scheduledAction.calendarId),N(1),V("options",e.calendars),N(1),V("ngForOf",e.filtered(e.calendars,e.calendarsFilter)),N(5),V("ngModel",e.scheduledAction.eventsOffset),N(2),V("ngModel",e.scheduledAction.atStart),N(7),V("ngModel",e.scheduledAction.action),N(1),V("ngForOf",e.actionList),N(1),V("ngIf","transport"===(null==e.parameter?null:e.parameter.type)),N(1),V("ngIf","group"===(null==e.parameter?null:e.parameter.type)),N(1),V("ngIf","bool"===(null==e.parameter?null:e.parameter.type)),N(1),V("ngIf",(null==e.parameter?null:e.parameter.type)&&!tf(14,Pse).includes(e.parameter.type))}},dependencies:[oi,zt,rr,xd,Qn,Yn,pi,qo,nr,ir,Kn,ei,vi,wa,ya,$i,wP,xn,es],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class Kf{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.onSave=new ye(!0),this.userService=d.userService,this.model=d.model}static launch(i,e,s){const d=window.innerWidth<800?"80%":"60%";i.gui.dialog.open(Kf,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{userService:e,model:s},disableClose:!1})}ngOnInit(){}}function Rse(a,i){if(1&a&&(I(0,"mat-option",8),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.text," ")}}function Ose(a,i){if(1&a&&(I(0,"mat-option",8),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}function Lse(a,i){if(1&a&&(I(0,"mat-option",8),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}Kf.\u0275fac=function(i){return new(i||Kf)(F(pt),F(Ot),F(Ci),F(Bi))},Kf.\u0275cmp=we({type:Kf,selectors:[["uds-service-pools-userservices-log"]],decls:10,vars:4,consts:[["mat-dialog-title",""],[3,"rest","itemId","tableId"],["mat-raised-button","","color","primary","mat-dialog-close",""]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Logs of"),O(),Y(3),O(),I(4,"mat-dialog-content"),he(5,"uds-logs-table",1),O(),I(6,"mat-dialog-actions")(7,"button",2)(8,"uds-translate"),Y(9,"Ok"),O()()()),2&i&&(N(3),Re(" ",e.userService.name,"\n"),N(2),V("rest",e.model)("itemId",e.userService.id)("tableId","servicePools-d-uslog"+e.userService.id))},dependencies:[pi,qo,nr,ir,Kn,xn,Wu],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});class fb{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.done=new wl,this.auths=[],this.assignablesServices=[],this.assignablesServicesFilter="",this.users=[],this.userFilter="",this.serviceId="",this.authId="",this.userId="",this.servicePool=d.servicePool}static launch(i,e){const s=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(fb,{width:s,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:e},disableClose:!1}).componentInstance.done}ngOnInit(){var i=this;return Xe(function*(){i.authId="",i.userId="";const e=yield i.rest.authenticators.summary(),s=yield i.rest.servicesPools.listAssignables(i.servicePool.id);i.auths=e,i.assignablesServices=s})()}changeAuth(i){var e=this;return Xe(function*(){e.userId="",e.authChanged()})()}filteredUsers(){if(!this.userFilter)return this.users;const i=new Array;return this.users.forEach(e=>{e.name.toLocaleLowerCase().includes(this.userFilter.toLocaleLowerCase())&&i.push(e)}),i}filteredAssignables(){if(!this.assignablesServicesFilter)return this.assignablesServices;const i=new Array;return this.assignablesServices.forEach(e=>{e.text.toLocaleLowerCase().includes(this.assignablesServicesFilter.toLocaleLowerCase())&&i.push(e)}),i}save(){var i=this;return Xe(function*(){""!==i.userId&&""!==i.authId?i.rest.servicesPools.createFromAssignable(i.servicePool.id,i.userId,i.serviceId).then(e=>{i.dialogRef.close(),i.done.resolve(!0)}):i.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid user"))})()}cancel(){this.dialogRef.close(),this.done.resolve(!1)}authChanged(){var i=this;return Xe(function*(){i.authId&&(i.users=yield i.rest.authenticators.detail(i.authId,"users").summary())})()}}fb.\u0275fac=function(i){return new(i||fb)(F(pt),F(Ot),F(Ci),F(Bi))},fb.\u0275cmp=we({type:fb,selectors:[["uds-assign-service-to-owner"]],decls:32,vars:8,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"ngModel","ngModelChange","selectionChange"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"]],template:function(i,e){1&i&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Assign service to user manually"),O()(),I(3,"mat-dialog-content")(4,"div",1)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Service"),O()(),I(9,"mat-select",2),J("ngModelChange",function(d){return e.serviceId=d}),I(10,"uds-cond-select-search",3),J("changed",function(d){return e.assignablesServicesFilter=d}),O(),Q(11,Rse,2,2,"mat-option",4),O()(),I(12,"mat-form-field")(13,"mat-label")(14,"uds-translate"),Y(15,"Authenticator"),O()(),I(16,"mat-select",5),J("ngModelChange",function(d){return e.authId=d})("selectionChange",function(d){return e.changeAuth(d)}),Q(17,Ose,2,2,"mat-option",4),O()(),I(18,"mat-form-field")(19,"mat-label")(20,"uds-translate"),Y(21,"User"),O()(),I(22,"mat-select",2),J("ngModelChange",function(d){return e.userId=d}),I(23,"uds-cond-select-search",3),J("changed",function(d){return e.userFilter=d}),O(),Q(24,Lse,2,2,"mat-option",4),O()()()(),I(25,"mat-dialog-actions")(26,"button",6),J("click",function(){return e.cancel()}),I(27,"uds-translate"),Y(28,"Cancel"),O()(),I(29,"button",7),J("click",function(){return e.save()}),I(30,"uds-translate"),Y(31,"Ok"),O()()()),2&i&&(N(9),V("ngModel",e.serviceId),N(1),V("options",e.assignablesServices),N(1),V("ngForOf",e.filteredAssignables()),N(5),V("ngModel",e.authId),N(1),V("ngForOf",e.auths),N(5),V("ngModel",e.userId),N(1),V("options",e.users),N(1),V("ngForOf",e.filteredUsers()))},dependencies:[oi,Qn,Yn,pi,nr,ir,Kn,ei,vi,ya,$i,xn,es],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});class xP{constructor(i){this.rest=i,this.poolUuid="",this.options={},this.chart=null}onResize(i){this.chart&&this.chart.resize()}ngOnInit(){var i=this;return Xe(function*(){const e=yield i.rest.system.stats("complete",i.poolUuid);i.options={tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}}},toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{}}},xAxis:{type:"category",data:e.assigned.map(s=>zs("SHORT_DATETIME_FORMAT",new Date(s.stamp))),boundaryGap:!1},yAxis:{type:"value",boundaryGap:!1},series:[{name:django.gettext("Assigned"),type:"line",stack:"services",smooth:!0,areaStyle:{},data:e.assigned.map(s=>s.value)},{name:django.gettext("Cached"),type:"line",stack:"services",smooth:!0,areaStyle:{},data:e.cached.map(s=>s.value)},{name:django.gettext("In use"),type:"line",smooth:!0,data:e.inuse.map(s=>s.value)}]}})()}chartInit(i){this.chart=i}}function Fse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function Nse(a,i){if(1&a&&he(0,"uds-information",21),2&a){const e=q(2);V("value",e.servicePool)("gui",e.gui)}}function Bse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Assigned services"),O())}function Vse(a,i){if(1&a){const e=Pe();I(0,"uds-table",22),J("customButtonAction",function(d){return ae(e),se(q(2).onCustomAssigned(d))})("deleteAction",function(d){return ae(e),se(q(2).onDeleteAssigned(d))}),O()}if(2&a){const e=q(2);V("rest",e.assignedServices)("multiSelect",!0)("allowExport",!0)("onItem",e.processsAssignedElement)("tableId","servicePools-d-services"+e.servicePool.id)("customButtons",e.customButtonsAssignedServices)("pageSize",e.api.config.admin.page_size)}}function zse(a,i){if(1&a){const e=Pe();I(0,"uds-table",23),J("customButtonAction",function(d){return ae(e),se(q(2).onCustomAssigned(d))})("newAction",function(d){return ae(e),se(q(2).onNewAssigned(d))})("deleteAction",function(d){return ae(e),se(q(2).onDeleteAssigned(d))}),O()}if(2&a){const e=q(2);V("rest",e.assignedServices)("multiSelect",!0)("allowExport",!0)("onItem",e.processsAssignedElement)("tableId","servicePools-d-services"+e.servicePool.id)("customButtons",e.customButtonsAssignedServices)("pageSize",e.api.config.admin.page_size)}}function Hse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Cache"),O())}function Gse(a,i){if(1&a){const e=Pe();I(0,"mat-tab"),Q(1,Hse,2,0,"ng-template",9),I(2,"div",10)(3,"uds-table",24),J("customButtonAction",function(d){return ae(e),se(q(2).onCustomCached(d))})("deleteAction",function(d){return ae(e),se(q(2).onDeleteCache(d))}),O()()()}if(2&a){const e=q(2);N(3),V("rest",e.cache)("multiSelect",!0)("allowExport",!0)("onItem",e.processsCacheElement)("tableId","servicePools-d-cache"+e.servicePool.id)("customButtons",e.customButtonsCachedServices)("pageSize",e.api.config.admin.page_size)}}function Use(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function jse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Transports"),O())}function $se(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Publications"),O())}function Wse(a,i){if(1&a){const e=Pe();I(0,"mat-tab"),Q(1,$se,2,0,"ng-template",9),I(2,"div",10)(3,"uds-table",25),J("customButtonAction",function(d){return ae(e),se(q(2).onCustomPublication(d))})("newAction",function(d){return ae(e),se(q(2).onNewPublication(d))})("rowSelected",function(d){return ae(e),se(q(2).onPublicationRowSelect(d))}),O()()()}if(2&a){const e=q(2);N(3),V("rest",e.publications)("multiSelect",!0)("allowExport",!0)("tableId","servicePools-d-publications"+e.servicePool.id)("customButtons",e.customButtonsPublication)("pageSize",e.api.config.admin.page_size)}}function Yse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Scheduled actions"),O())}function qse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Access calendars"),O())}function Xse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Charts"),O())}function Zse(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function Kse(a,i){if(1&a){const e=Pe();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),J("selectedIndexChange",function(d){return ae(e),se(q().selectedTab=d)}),I(3,"mat-tab"),Q(4,Fse,2,0,"ng-template",9),I(5,"div",10),Q(6,Nse,1,2,"uds-information",11),O()(),I(7,"mat-tab"),Q(8,Bse,2,0,"ng-template",9),I(9,"div",10),Q(10,Vse,1,7,"uds-table",12),Q(11,zse,1,7,"ng-template",null,13,Nr),O()(),Q(13,Gse,4,7,"mat-tab",14),I(14,"mat-tab"),Q(15,Use,2,0,"ng-template",9),I(16,"div",10)(17,"uds-table",15),J("newAction",function(d){return ae(e),se(q().onNewGroup(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteGroup(d))}),O()()(),I(18,"mat-tab"),Q(19,jse,2,0,"ng-template",9),I(20,"div",10)(21,"uds-table",16),J("newAction",function(d){return ae(e),se(q().onNewTransport(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteTransport(d))}),O()()(),Q(22,Wse,4,6,"mat-tab",14),I(23,"mat-tab"),Q(24,Yse,2,0,"ng-template",9),I(25,"div",10)(26,"uds-table",17),J("customButtonAction",function(d){return ae(e),se(q().onCustomScheduleAction(d))})("newAction",function(d){return ae(e),se(q().onNewScheduledAction(d))})("editAction",function(d){return ae(e),se(q().onEditScheduledAction(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteScheduledAction(d))}),O()()(),I(27,"mat-tab"),Q(28,qse,2,0,"ng-template",9),I(29,"div",10)(30,"uds-table",18),J("newAction",function(d){return ae(e),se(q().onNewAccessCalendar(d))})("editAction",function(d){return ae(e),se(q().onEditAccessCalendar(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteAccessCalendar(d))})("loaded",function(d){return ae(e),se(q().onAccessCalendarLoad(d))}),O()()(),I(31,"mat-tab"),Q(32,Xse,2,0,"ng-template",9),I(33,"div",10),he(34,"uds-service-pools-charts",19),O()(),I(35,"mat-tab"),Q(36,Zse,2,0,"ng-template",9),I(37,"div",10),he(38,"uds-logs-table",20),O()()()()()}if(2&a){const e=on(12),s=q();N(2),V("selectedIndex",s.selectedTab)("@.disabled",!0),N(4),V("ngIf",s.servicePool&&s.gui),N(4),V("ngIf",!1===s.servicePool.info.must_assign_manually)("ngIfElse",e),N(3),V("ngIf",s.cache),N(4),V("rest",s.groups)("multiSelect",!0)("allowExport",!0)("customButtons",s.customButtonsGroups)("tableId","servicePools-d-groups"+s.servicePool.id)("pageSize",s.api.config.admin.page_size),N(4),V("rest",s.transports)("multiSelect",!0)("allowExport",!0)("customButtons",s.customButtonsTransports)("tableId","servicePools-d-transports"+s.servicePool.id)("pageSize",s.api.config.admin.page_size),N(1),V("ngIf",s.publications),N(4),V("rest",s.scheduledActions)("multiSelect",!0)("allowExport",!0)("tableId","servicePools-d-actions"+s.servicePool.id)("customButtons",s.customButtonsScheduledAction)("onItem",s.processsCalendarOrScheduledElement)("pageSize",s.api.config.admin.page_size),N(4),V("rest",s.accessCalendars)("multiSelect",!0)("allowExport",!0)("customButtons",s.customButtonAccessCalendars)("tableId","servicePools-d-access"+s.servicePool.id)("onItem",s.processsCalendarOrScheduledElement)("pageSize",s.api.config.admin.page_size),N(4),V("poolUuid",s.servicePool.id),N(4),V("rest",s.rest.servicesPools)("itemId",s.servicePool.id)("tableId","servicePools-d-log"+s.servicePool.id)("pageSize",s.api.config.admin.page_size)}}xP.\u0275fac=function(i){return new(i||xP)(F(Ot))},xP.\u0275cmp=we({type:xP,selectors:[["uds-service-pools-charts"]],hostBindings:function(i,e){1&i&&J("resize",function(d){return e.onResize(d)},0,E0)},inputs:{poolUuid:"poolUuid"},decls:2,vars:1,consts:[[1,"statistics-chart"],["echarts","","theme","dark-digerati",3,"options","chartInit"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1),J("chartInit",function(d){return e.chartInit(d)}),O()()),2&i&&(N(1),V("options",e.options))},dependencies:[Nz]});const Qse=function(a){return["/pools","service-pools",a]},Wq='event'+django.gettext("Logs")+"",Jse='computer'+django.gettext("VNC")+"",ele='schedule'+django.gettext("Launch now")+"",hte='perm_identity'+django.gettext("Change owner")+"",tle='perm_identity'+django.gettext("Assign service")+"",nle='cancel'+django.gettext("Cancel")+"",ile='event'+django.gettext("Changelog")+"";class Qf{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.customButtonsScheduledAction=[{id:"launch-action",html:ele,type:Jn.SINGLE_SELECT},Jo.getGotoButton(ju,"calendarId")],this.customButtonAccessCalendars=[Jo.getGotoButton(ju,"calendarId")],this.customButtonsAssignedServices=[{id:"change-owner",html:hte,type:Jn.SINGLE_SELECT},{id:"log",html:Wq,type:Jn.SINGLE_SELECT},Jo.getGotoButton(XI,"owner_info.auth_id","owner_info.user_id")],this.customButtonsCachedServices=[{id:"log",html:Wq,type:Jn.SINGLE_SELECT}],this.customButtonsPublication=[{id:"cancel-publication",html:nle,type:Jn.SINGLE_SELECT},{id:"changelog",html:ile,type:Jn.ALWAYS}],this.customButtonsGroups=[Jo.getGotoButton("group","auth_id","id")],this.customButtonsTransports=[Jo.getGotoButton(Sz,"id")],this.servicePool=null,this.gui=[],this.assignedServices={},this.cache=null,this.groups={},this.transports={},this.publications=null,this.scheduledActions={},this.accessCalendars={},this.selectedTab=1}static cleanInvalidSelections(i){return i.table.selection.selected.filter(e=>["E","R","M","S","C"].includes(e.state)).forEach(e=>i.table.selection.deselect(e)),i.table.selection.isEmpty()}ngOnInit(){var i=this;return Xe(function*(){const e=i.route.snapshot.paramMap.get("pool");if(!e)return;i.assignedServices=i.rest.servicesPools.detail(e,"services"),i.groups=i.rest.servicesPools.detail(e,"groups"),i.transports=i.rest.servicesPools.detail(e,"transports"),i.scheduledActions=i.rest.servicesPools.detail(e,"actions"),i.accessCalendars=i.rest.servicesPools.detail(e,"access");const s=yield i.rest.servicesPools.get(e),d=(yield i.rest.servicesPools.gui()).filter(f=>!(!1===s.info.uses_cache&&["initial_srvs","cache_l1_srvs","cache_l2_srvs","max_srvs"].includes(f.name)||!1===s.info.uses_cache_l2&&"cache_l2_srvs"===f.name||!1===s.info.needs_manager&&"osmanager_id"===f.name));i.servicePool=s,i.gui=d,i.cache=s.info.uses_cache?i.rest.servicesPools.detail(e,"cache"):null,i.publications=s.info.needs_publication?i.rest.servicesPools.detail(e,"publications"):null,i.api.config.admin.vnc_userservices&&i.customButtonsAssignedServices.push({id:"vnc",html:Jse,type:Jn.ONLY_MENU}),i.servicePool.info.can_list_assignables&&i.customButtonsAssignedServices.push({id:"assign-service",html:tle,type:Jn.ALWAYS})})()}onNewAssigned(i){}vnc(i){const s=new Blob(["[connection]\nhost="+i.ip+"\nport=5900\n"],{type:"application/extension-vnc"});setTimeout(()=>{(0,Uq.saveAs)(s,i.ip+".vnc")},100)}onCustomAssigned(i){var e=this;return Xe(function*(){const s=i.table.selection.selected[0];if("change-owner"===i.param.id){if(["E","R","M","S","C"].includes(s.state))return;!0===(yield Sg.launch(e.api,s,e.assignedServices))&&i.table.overview()}else"log"===i.param.id?Kf.launch(e.api,s,e.assignedServices):"assign-service"===i.param.id?!0===(yield fb.launch(e.api,e.servicePool))&&i.table.overview():"vnc"===i.param.id&&e.vnc(s)})()}onCustomCached(i){"log"===i.param.id&&this.cache&&Kf.launch(this.api,i.table.selection.selected[0],this.cache)}processsAssignedElement(i){i.in_use=this.api.boolAsHumanString(i.in_use),i.origState=i.state,"U"===i.state&&(i.state=""!==i.os_state&&"U"!==i.os_state?"Z":"U")}onDeleteAssigned(i){Qf.cleanInvalidSelections(i)||this.api.gui.forms.deleteForm(i,django.gettext("Delete assigned service"))}onDeleteCache(i){Qf.cleanInvalidSelections(i)||this.api.gui.forms.deleteForm(i,django.gettext("Delete cached service"))}processsCacheElement(i){i.origState=i.state,"U"===i.state&&(i.state=""!==i.os_state&&"U"!==i.os_state?"Z":"U")}onNewGroup(i){var e=this;return Xe(function*(){!0===(yield Dg.launch(e.api,e.servicePool,e.groups))&&i.table.overview()})()}onDeleteGroup(i){var e=this;return Xe(function*(){e.api.gui.forms.deleteForm(i,django.gettext("Delete assigned group"))})()}onNewTransport(i){var e=this;return Xe(function*(){!0===(yield db.launch(e.api,e.servicePool))&&i.table.overview()})()}onDeleteTransport(i){var e=this;return Xe(function*(){e.api.gui.forms.deleteForm(i,django.gettext("Delete assigned transport"))})()}onNewPublication(i){var e=this;return Xe(function*(){!0===(yield ub.launch(e.api,e.servicePool))&&i.table.overview()})()}onPublicationRowSelect(i){1===i.table.selection.selected.length&&(this.customButtonsPublication[0].disabled=!["P","W","L","K"].includes(i.table.selection.selected[0].state))}onCustomPublication(i){"cancel-publication"===i.param.id?this.api.gui.questionDialog(django.gettext("Publication"),django.gettext("Cancel publication?"),!0).then(e=>{e&&this.publications&&this.publications.invoke(i.table.selection.selected[0].id+"/cancel").then(s=>{this.api.gui.snackbar.open(django.gettext("Publication canceled"),django.gettext("dismiss"),{duration:2e3}),i.table.overview()})}):"changelog"===i.param.id&&hb.launch(this.api,this.servicePool)}onNewScheduledAction(i){Mg.launch(this.api,this.servicePool).subscribe(e=>i.table.overview())}onEditScheduledAction(i){Mg.launch(this.api,this.servicePool,i.table.selection.selected[0]).subscribe(e=>i.table.overview())}onDeleteScheduledAction(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete scheduled action"))}onCustomScheduleAction(i){this.api.gui.questionDialog(django.gettext("Execute scheduled action"),django.gettext("Execute scheduled action right now?")).then(e=>{e&&this.scheduledActions.invoke(i.table.selection.selected[0].id+"/execute").then(()=>{this.api.gui.snackbar.open(django.gettext("Scheduled action executed"),django.gettext("dismiss"),{duration:2e3}),i.table.overview()})})}onNewAccessCalendar(i){Yu.launch(this.api,this.servicePool,this.accessCalendars).subscribe(e=>i.table.overview())}onEditAccessCalendar(i){Yu.launch(this.api,this.servicePool,this.accessCalendars,i.table.selection.selected[0]).subscribe(e=>i.table.overview())}onDeleteAccessCalendar(i){-1!==i.table.selection.selected[0].id?this.api.gui.forms.deleteForm(i,django.gettext("Delete calendar access rule")):this.onEditAccessCalendar(i)}onAccessCalendarLoad(i){this.rest.servicesPools.getFallbackAccess(this.servicePool.id).then(e=>{const s=i.table.dataSource.data.filter(d=>!0);s.push({id:-1,calendar:"-",priority:this.api.safeString('10000000FallBack'),access:e}),i.table.dataSource.data=s})}processsCalendarOrScheduledElement(i){i.name=i.calendar,i.atStart=this.api.boolAsHumanString(i.atStart)}}Qf.\u0275fac=function(i){return new(i||Qf)(F(xi),F(Ot),F(pt))},Qf.\u0275cmp=we({type:Qf,selectors:[["uds-service-pools-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","deleteAction",4,"ngIf","ngIfElse"],["manually_assigned",""],[4,"ngIf"],["icon","groups",3,"rest","multiSelect","allowExport","customButtons","tableId","pageSize","newAction","deleteAction"],["icon","transports",3,"rest","multiSelect","allowExport","customButtons","tableId","pageSize","newAction","deleteAction"],["icon","calendars",3,"rest","multiSelect","allowExport","tableId","customButtons","onItem","pageSize","customButtonAction","newAction","editAction","deleteAction"],["icon","calendars",3,"rest","multiSelect","allowExport","customButtons","tableId","onItem","pageSize","newAction","editAction","deleteAction","loaded"],[3,"poolUuid"],[3,"rest","itemId","tableId","pageSize"],[3,"value","gui"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","deleteAction"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","newAction","deleteAction"],["icon","cached",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","deleteAction"],["icon","publications",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","customButtonAction","newAction","rowSelected"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),he(6,"img",4),Y(7),O(),Q(8,Kse,39,38,"div",5),O()),2&i&&(N(2),V("routerLink",su(4,Qse,e.servicePool?e.servicePool.id:"")),N(4),V("src",e.api.staticURL("admin/img/icons/pools.png"),tn),N(1),Re(" \xa0",null==e.servicePool?null:e.servicePool.name," "),N(1),V("ngIf",null!==e.servicePool))},dependencies:[zt,jo,Qo,Gs,xl,xn,mi,Wu,wg,xP],styles:[".mat-column-state{max-width:10rem;justify-content:center} .mat-column-revision, .mat-column-cache_level, .mat-column-in_use, .mat-column-priority{max-width:7rem;justify-content:center} .mat-column-publish_date, .mat-column-state_date, .mat-column-creation_date{width:14rem} .mat-column-trans_type, .mat-column-access{max-width:9rem} .mat-column-owner{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word} .row-state-S>.mat-mdc-cell{color:gray!important} .row-state-C>.mat-mdc-cell{color:gray!important} .row-state-E>.mat-mdc-cell{color:red!important} .row-state-R>.mat-mdc-cell{color:orange!important}"]});class Z1{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New meta pool"))}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit meta pool"))}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete meta pool"))}onDetail(i){this.api.navigation.gotoMetapoolDetail(i.param.id)}processElement(i){i.visible=this.api.boolAsHumanString(i.visible),i.name=this.api.safeString(this.api.gui.icon(i.thumb)+i.name),i.pool_group_name=this.api.safeString(this.api.gui.icon(i.pool_group_thumb)+i.pool_group_name)}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("metapool"))}}function rle(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New member pool"),O())}function ale(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Edit member pool"),O())}function ole(a,i){if(1&a){const e=Pe();I(0,"uds-cond-select-search",11),J("changed",function(d){return ae(e),se(q().servicePoolsFilter=d)}),O()}}function sle(a,i){if(1&a&&(I(0,"mat-option",12),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.name," ")}}Z1.\u0275fac=function(i){return new(i||Z1)(F(pt),F(xi),F(Ot))},Z1.\u0275cmp=we({type:Z1,selectors:[["uds-meta-pools"]],decls:2,vars:6,consts:[["icon","metas",3,"rest","multiSelect","allowExport","onItem","hasPermissions","pageSize","detailAction","newAction","editAction","deleteAction","loaded"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("detailAction",function(d){return e.onDetail(d)})("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("loaded",function(d){return e.onLoad(d)}),O()()),2&i&&(N(1),V("rest",e.rest.metaPools)("multiSelect",!0)("allowExport",!0)("onItem",e.processElement)("hasPermissions",!0)("pageSize",e.api.config.admin.page_size))},dependencies:[mi],styles:[".mat-column-user_services_count, .mat-column-user_services_in_preparation, .mat-column-visible, .mat-column-pool_group_name{max-width:7rem;justify-content:center}"]});class Tg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.done=new wl,this.servicePools=[],this.servicePoolsFilter="",this.model=d.model,this.memberPool={id:void 0,priority:0,pool_id:"",enabled:!0},d.memberPool&&(this.memberPool.id=d.memberPool.id)}static launch(i,e,s){const d=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(Tg,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{memberPool:s,model:e},disableClose:!1}).componentInstance.done}ngOnInit(){var i=this;return Xe(function*(){i.servicePools=yield i.rest.servicesPools.summary(),i.memberPool.id&&(i.memberPool=yield i.model.get(i.memberPool.id))})()}filtered(i,e){return e?i.filter(s=>s.name.toLocaleLowerCase().includes(e.toLocaleLowerCase())):i}save(){var i=this;return Xe(function*(){i.memberPool.pool_id?(yield i.model.save(i.memberPool),i.dialogRef.close(),i.done.resolve(!0)):i.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid service pool"))})()}cancel(){this.dialogRef.close(),this.done.resolve(!1)}}function lle(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function cle(a,i){if(1&a&&he(0,"uds-information",17),2&a){const e=q(2);V("value",e.metaPool)("gui",e.gui)}}function dle(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Service pools"),O())}function ule(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Assigned services"),O())}function hle(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function fle(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Access calendars"),O())}function ple(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function mle(a,i){if(1&a){const e=Pe();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),J("selectedIndexChange",function(d){return ae(e),se(q().selectedTab=d)}),I(3,"mat-tab"),Q(4,lle,2,0,"ng-template",9),I(5,"div",10),Q(6,cle,1,2,"uds-information",11),O()(),I(7,"mat-tab"),Q(8,dle,2,0,"ng-template",9),I(9,"div",10)(10,"uds-table",12),J("newAction",function(d){return ae(e),se(q().onNewMemberPool(d))})("editAction",function(d){return ae(e),se(q().onEditMemberPool(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteMemberPool(d))}),O()()(),I(11,"mat-tab"),Q(12,ule,2,0,"ng-template",9),I(13,"div",10)(14,"uds-table",13),J("customButtonAction",function(d){return ae(e),se(q().onCustomAssigned(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteAssigned(d))}),O()()(),I(15,"mat-tab"),Q(16,hle,2,0,"ng-template",9),I(17,"div",10)(18,"uds-table",14),J("newAction",function(d){return ae(e),se(q().onNewGroup(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteGroup(d))}),O()()(),I(19,"mat-tab"),Q(20,fle,2,0,"ng-template",9),I(21,"div",10)(22,"uds-table",15),J("newAction",function(d){return ae(e),se(q().onNewAccessCalendar(d))})("editAction",function(d){return ae(e),se(q().onEditAccessCalendar(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteAccessCalendar(d))})("loaded",function(d){return ae(e),se(q().onAccessCalendarLoad(d))}),O()()(),I(23,"mat-tab"),Q(24,ple,2,0,"ng-template",9),I(25,"div",10),he(26,"uds-logs-table",16),O()()()()()}if(2&a){const e=q();N(2),V("selectedIndex",e.selectedTab)("@.disabled",!0),N(4),V("ngIf",e.metaPool&&e.gui),N(4),V("rest",e.memberPools)("multiSelect",!0)("allowExport",!0)("onItem",e.processElement)("customButtons",e.customButtons)("tableId","metaPools-d-members"+e.metaPool.id)("pageSize",e.api.config.admin.page_size),N(4),V("rest",e.memberUserServices)("multiSelect",!0)("allowExport",!0)("tableId","metaPools-d-services"+e.metaPool.id)("customButtons",e.customButtonsAssignedServices)("pageSize",e.api.config.admin.page_size),N(4),V("rest",e.groups)("multiSelect",!0)("allowExport",!0)("tableId","metaPools-d-groups"+e.metaPool.id)("pageSize",e.api.config.admin.page_size),N(4),V("rest",e.accessCalendars)("multiSelect",!0)("allowExport",!0)("tableId","metaPools-d-access"+e.metaPool.id)("pageSize",e.api.config.admin.page_size)("onItem",e.processsCalendarItem),N(4),V("rest",e.rest.metaPools)("itemId",e.metaPool.id)("tableId","metaPools-d-log"+e.metaPool.id)("pageSize",e.api.config.admin.page_size)}}Tg.\u0275fac=function(i){return new(i||Tg)(F(pt),F(Ot),F(Ci),F(Bi))},Tg.\u0275cmp=we({type:Tg,selectors:[["uds-meta-pools-service-pools"]],decls:30,vars:8,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],["matInput","","type","number",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],[3,"changed",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[1,"mat-form-field-infix"],[1,"label-enabled"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"changed"],[3,"value"]],template:function(i,e){1&i&&(I(0,"h4",0),Q(1,rle,2,0,"uds-translate",1),Q(2,ale,2,0,"uds-translate",1),O(),I(3,"mat-dialog-content")(4,"div",2)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Priority"),O()(),I(9,"input",3),J("ngModelChange",function(d){return e.memberPool.priority=d}),O()(),I(10,"mat-form-field")(11,"mat-label")(12,"uds-translate"),Y(13,"Service pool"),O()(),I(14,"mat-select",4),J("ngModelChange",function(d){return e.memberPool.pool_id=d}),Q(15,ole,1,0,"uds-cond-select-search",5),Q(16,sle,2,2,"mat-option",6),O()(),I(17,"div",7)(18,"span",8)(19,"uds-translate"),Y(20,"Enabled?"),O()(),I(21,"mat-slide-toggle",4),J("ngModelChange",function(d){return e.memberPool.enabled=d}),Y(22),O()()()(),I(23,"mat-dialog-actions")(24,"button",9),J("click",function(){return e.cancel()}),I(25,"uds-translate"),Y(26,"Cancel"),O()(),I(27,"button",10),J("click",function(){return e.save()}),I(28,"uds-translate"),Y(29,"Ok"),O()()()),2&i&&(N(1),V("ngIf",!(null!=e.memberPool&&e.memberPool.id)),N(1),V("ngIf",null==e.memberPool?null:e.memberPool.id),N(7),V("ngModel",e.memberPool.priority),N(5),V("ngModel",e.memberPool.pool_id),N(1),V("ngIf",e.servicePools.length>10),N(1),V("ngForOf",e.filtered(e.servicePools,e.servicePoolsFilter)),N(5),V("ngModel",e.memberPool.enabled),N(1),Re(" ",e.api.boolAsHumanString(e.memberPool.enabled)," "))},dependencies:[oi,zt,rr,xd,Qn,Yn,pi,nr,ir,Kn,ei,vi,wa,ya,$i,wP,xn,es],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.label-enabled[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}"]});const gle=function(a){return["/pools","meta-pools",a]};class CP{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.customButtons=[Jo.getGotoButton(qI,"pool_id")],this.customButtonsAssignedServices=[{id:"change-owner",html:hte,type:Jn.SINGLE_SELECT},{id:"log",html:Wq,type:Jn.SINGLE_SELECT},Jo.getGotoButton(XI,"owner_info.auth_id","owner_info.user_id")],this.metaPool=null,this.gui=null,this.selectedTab=1,this.memberPools={},this.memberUserServices={},this.groups={},this.accessCalendars={}}ngOnInit(){var i=this;return Xe(function*(){const e=i.route.snapshot.paramMap.get("metapool");if(!e)return;const s=yield i.rest.metaPools.get(e),d=yield i.rest.metaPools.gui();i.memberPools=i.rest.metaPools.detail(e,"pools"),i.memberUserServices=i.rest.metaPools.detail(e,"services"),i.groups=i.rest.metaPools.detail(e,"groups"),i.accessCalendars=i.rest.metaPools.detail(e,"access"),i.metaPool=s,i.gui=d})()}onNewMemberPool(i){var e=this;return Xe(function*(){!0===(yield Tg.launch(e.api,e.memberPools))&&i.table.overview()})()}onEditMemberPool(i){var e=this;return Xe(function*(){!0===(yield Tg.launch(e.api,e.memberPools,i.table.selection.selected[0]))&&i.table.overview()})()}onDeleteMemberPool(i){var e=this;return Xe(function*(){e.api.gui.forms.deleteForm(i,django.gettext("Remove member pool"))})()}onCustomAssigned(i){var e=this;return Xe(function*(){const s=i.table.selection.selected[0];if("change-owner"===i.param.id){if(["E","R","M","S","C"].includes(s.state))return;!0===(yield Sg.launch(e.api,s,e.memberUserServices))&&i.table.overview()}else"log"===i.param.id&&Kf.launch(e.api,s,e.memberUserServices)})()}onDeleteAssigned(i){var e=this;return Xe(function*(){Qf.cleanInvalidSelections(i)||e.api.gui.forms.deleteForm(i,django.gettext("Delete assigned service"))})()}onNewGroup(i){var e=this;return Xe(function*(){!0===(yield Dg.launch(e.api,e.metaPool.id,e.groups))&&i.table.overview()})()}onDeleteGroup(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete assigned group"))}onNewAccessCalendar(i){Yu.launch(this.api,this.metaPool,this.accessCalendars).subscribe(e=>i.table.overview())}onEditAccessCalendar(i){Yu.launch(this.api,this.metaPool,this.accessCalendars,i.table.selection.selected[0]).subscribe(e=>i.table.overview())}onDeleteAccessCalendar(i){-1!==i.table.selection.selected[0].id?this.api.gui.forms.deleteForm(i,django.gettext("Delete calendar access rule")):this.onEditAccessCalendar(i)}onAccessCalendarLoad(i){this.rest.metaPools.getFallbackAccess(this.metaPool.id).then(e=>{const s=i.table.dataSource.data.filter(d=>!0);s.push({id:-1,calendar:"-",priority:this.api.safeString('10000000FallBack'),access:e}),i.table.dataSource.data=s})}processElement(i){i.enabled=this.api.boolAsHumanString(i.enabled)}processsCalendarItem(i){i.name=i.calendar,i.atStart=this.api.boolAsHumanString(i.atStart)}}CP.\u0275fac=function(i){return new(i||CP)(F(xi),F(Ot),F(pt))},CP.\u0275cmp=we({type:CP,selectors:[["uds-meta-pools-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","customButtons","tableId","pageSize","newAction","editAction","deleteAction"],["icon","pools",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","customButtonAction","deleteAction"],["icon","groups",3,"rest","multiSelect","allowExport","tableId","pageSize","newAction","deleteAction"],["icon","calendars",3,"rest","multiSelect","allowExport","tableId","pageSize","onItem","newAction","editAction","deleteAction","loaded"],[3,"rest","itemId","tableId","pageSize"],[3,"value","gui"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),he(6,"img",4),Y(7),O(),Q(8,mle,27,31,"div",5),O()),2&i&&(N(2),V("routerLink",su(4,gle,e.metaPool?e.metaPool.id:"")),N(4),V("src",e.api.staticURL("admin/img/icons/metas.png"),tn),N(1),Re(" ",null==e.metaPool?null:e.metaPool.name," "),N(1),V("ngIf",e.metaPool))},dependencies:[zt,jo,Qo,Gs,xl,xn,mi,Wu,wg],styles:[".mat-column-enabled, .mat-column-priority{max-width:8rem;justify-content:center}"]});class K1{constructor(i,e,s){this.route=i,this.rest=e,this.api=s}ngOnInit(){}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New pool group"),!1).then(()=>i.table.overview())}onEdit(i){var e=this;return Xe(function*(){e.api.gui.forms.typedEditForm(i,django.gettext("Edit pool group"),!1)})()}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete pool group"))}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("poolgroup"))}}K1.\u0275fac=function(i){return new(i||K1)(F(xi),F(Ot),F(pt))},K1.\u0275cmp=we({type:K1,selectors:[["uds-pool-groups"]],decls:1,vars:5,consts:[["icon","spool-group",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(i,e){1&i&&(I(0,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("loaded",function(d){return e.onLoad(d)}),O()),2&i&&V("rest",e.rest.servicesPoolGroups)("multiSelect",!0)("allowExport",!0)("hasPermissions",!1)("pageSize",e.api.config.admin.page_size)},dependencies:[mi],styles:[".mat-column-priority, .mat-column-thumb{max-width:7rem;justify-content:center}"]});class Q1{constructor(i,e,s){this.route=i,this.rest=e,this.api=s}ngOnInit(){}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New calendar"))}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit calendar"))}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete calendar"))}onDetail(i){this.api.navigation.gotoCalendarDetail(i.param.id)}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("calendar"))}}Q1.\u0275fac=function(i){return new(i||Q1)(F(xi),F(Ot),F(pt))},Q1.\u0275cmp=we({type:Q1,selectors:[["uds-calendars"]],decls:1,vars:5,consts:[["icon","calendars",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(i,e){1&i&&(I(0,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("detailAction",function(d){return e.onDetail(d)})("loaded",function(d){return e.onLoad(d)}),O()),2&i&&V("rest",e.rest.calendars)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",e.api.config.admin.page_size)},dependencies:[mi]});const vle=["mat-calendar-body",""];function _le(a,i){if(1&a&&(I(0,"tr",3)(1,"td",4),Y(2),O()()),2&a){const e=q();N(1),Ra("padding-top",e._cellPadding)("padding-bottom",e._cellPadding),He("colspan",e.numCols),N(1),Re(" ",e.label," ")}}function yle(a,i){if(1&a&&(I(0,"td",4),Y(1),O()),2&a){const e=q(2);Ra("padding-top",e._cellPadding)("padding-bottom",e._cellPadding),He("colspan",e._firstRowOffset),N(1),Re(" ",e._firstRowOffset>=e.labelMinRequiredCells?e.label:""," ")}}function ble(a,i){if(1&a){const e=Pe();I(0,"td",8)(1,"button",9),J("click",function(d){const _=ae(e).$implicit;return se(q(2)._cellClicked(_,d))})("focus",function(d){const _=ae(e).$implicit;return se(q(2)._emitActiveDateChange(_,d))}),I(2,"div",10),Y(3),O(),he(4,"div",11),O()()}if(2&a){const e=i.$implicit,s=i.index,d=q().index,f=q();Ra("width",f._cellWidth)("padding-top",f._cellPadding)("padding-bottom",f._cellPadding),He("data-mat-row",d)("data-mat-col",s),N(1),at("mat-calendar-body-disabled",!e.enabled)("mat-calendar-body-active",f._isActiveCell(d,s))("mat-calendar-body-range-start",f._isRangeStart(e.compareValue))("mat-calendar-body-range-end",f._isRangeEnd(e.compareValue))("mat-calendar-body-in-range",f._isInRange(e.compareValue))("mat-calendar-body-comparison-bridge-start",f._isComparisonBridgeStart(e.compareValue,d,s))("mat-calendar-body-comparison-bridge-end",f._isComparisonBridgeEnd(e.compareValue,d,s))("mat-calendar-body-comparison-start",f._isComparisonStart(e.compareValue))("mat-calendar-body-comparison-end",f._isComparisonEnd(e.compareValue))("mat-calendar-body-in-comparison-range",f._isInComparisonRange(e.compareValue))("mat-calendar-body-preview-start",f._isPreviewStart(e.compareValue))("mat-calendar-body-preview-end",f._isPreviewEnd(e.compareValue))("mat-calendar-body-in-preview",f._isInPreview(e.compareValue)),V("ngClass",e.cssClasses)("tabindex",f._isActiveCell(d,s)?0:-1),He("aria-label",e.ariaLabel)("aria-disabled",!e.enabled||null)("aria-pressed",f._isSelected(e.compareValue))("aria-current",f.todayValue===e.compareValue?"date":null)("aria-describedby",f._getDescribedby(e.compareValue)),N(1),at("mat-calendar-body-selected",f._isSelected(e.compareValue))("mat-calendar-body-comparison-identical",f._isComparisonIdentical(e.compareValue))("mat-calendar-body-today",f.todayValue===e.compareValue),N(1),Re(" ",e.displayValue," ")}}function wle(a,i){if(1&a&&(I(0,"tr",5),Q(1,yle,2,6,"td",6),Q(2,ble,5,48,"td",7),O()),2&a){const e=i.$implicit,s=i.index,d=q();N(1),V("ngIf",0===s&&d._firstRowOffset),N(1),V("ngForOf",e)}}function xle(a,i){if(1&a&&(I(0,"th",5)(1,"span",6),Y(2),O(),I(3,"span",7),Y(4),O()()),2&a){const e=i.$implicit;N(2),In(e.long),N(2),In(e.narrow)}}const Cle=["*"];function Sle(a,i){}function Dle(a,i){if(1&a){const e=Pe();I(0,"mat-month-view",5),J("activeDateChange",function(d){return ae(e),se(q().activeDate=d)})("_userSelection",function(d){return ae(e),se(q()._dateSelected(d))})("dragStarted",function(d){return ae(e),se(q()._dragStarted(d))})("dragEnded",function(d){return ae(e),se(q()._dragEnded(d))}),O()}if(2&a){const e=q();V("activeDate",e.activeDate)("selected",e.selected)("dateFilter",e.dateFilter)("maxDate",e.maxDate)("minDate",e.minDate)("dateClass",e.dateClass)("comparisonStart",e.comparisonStart)("comparisonEnd",e.comparisonEnd)("startDateAccessibleName",e.startDateAccessibleName)("endDateAccessibleName",e.endDateAccessibleName)("activeDrag",e._activeDrag)}}function Mle(a,i){if(1&a){const e=Pe();I(0,"mat-year-view",6),J("activeDateChange",function(d){return ae(e),se(q().activeDate=d)})("monthSelected",function(d){return ae(e),se(q()._monthSelectedInYearView(d))})("selectedChange",function(d){return ae(e),se(q()._goToDateInView(d,"month"))}),O()}if(2&a){const e=q();V("activeDate",e.activeDate)("selected",e.selected)("dateFilter",e.dateFilter)("maxDate",e.maxDate)("minDate",e.minDate)("dateClass",e.dateClass)}}function Tle(a,i){if(1&a){const e=Pe();I(0,"mat-multi-year-view",7),J("activeDateChange",function(d){return ae(e),se(q().activeDate=d)})("yearSelected",function(d){return ae(e),se(q()._yearSelectedInMultiYearView(d))})("selectedChange",function(d){return ae(e),se(q()._goToDateInView(d,"year"))}),O()}if(2&a){const e=q();V("activeDate",e.activeDate)("selected",e.selected)("dateFilter",e.dateFilter)("maxDate",e.maxDate)("minDate",e.minDate)("dateClass",e.dateClass)}}function Ale(a,i){}const kle=["button"];function Ele(a,i){1&a&&(Pr(),I(0,"svg",3),he(1,"path",4),O())}const Ile=[[["","matDatepickerToggleIcon",""]]],Ple=["[matDatepickerToggleIcon]"];let SP=(()=>{class a{constructor(){this.changes=new Ue,this.calendarLabel="Calendar",this.openCalendarLabel="Open calendar",this.closeCalendarLabel="Close calendar",this.prevMonthLabel="Previous month",this.nextMonthLabel="Next month",this.prevYearLabel="Previous year",this.nextYearLabel="Next year",this.prevMultiYearLabel="Previous 24 years",this.nextMultiYearLabel="Next 24 years",this.switchToMonthViewLabel="Choose date",this.switchToMultiYearViewLabel="Choose month and year",this.startDateLabel="Start date",this.endDateLabel="End date"}formatYearRange(e,s){return`${e} \u2013 ${s}`}formatYearRangeLabel(e,s){return`${e} to ${s}`}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac,providedIn:"root"}),a})();class Yq{constructor(i,e,s,d,f={},_=i,w){this.value=i,this.displayValue=e,this.ariaLabel=s,this.enabled=d,this.cssClasses=f,this.compareValue=_,this.rawValue=w}}let Rle=1,J1=(()=>{class a{ngAfterViewChecked(){this._focusActiveCellAfterViewChecked&&(this._focusActiveCell(),this._focusActiveCellAfterViewChecked=!1)}constructor(e,s){this._elementRef=e,this._ngZone=s,this._focusActiveCellAfterViewChecked=!1,this.numCols=7,this.activeCell=0,this.isRange=!1,this.cellAspectRatio=1,this.previewStart=null,this.previewEnd=null,this.selectedValueChange=new ye,this.previewChange=new ye,this.activeDateChange=new ye,this.dragStarted=new ye,this.dragEnded=new ye,this._didDragSinceMouseDown=!1,this._enterHandler=d=>{if(this._skipNextFocus&&"focus"===d.type)this._skipNextFocus=!1;else if(d.target&&this.isRange){const f=this._getCellFromElement(d.target);f&&this._ngZone.run(()=>this.previewChange.emit({value:f.enabled?f:null,event:d}))}},this._touchmoveHandler=d=>{if(!this.isRange)return;const f=fte(d),_=f?this._getCellFromElement(f):null;f!==d.target&&(this._didDragSinceMouseDown=!0),Xq(d.target)&&d.preventDefault(),this._ngZone.run(()=>this.previewChange.emit({value:null!=_&&_.enabled?_:null,event:d}))},this._leaveHandler=d=>{null!==this.previewEnd&&this.isRange&&("blur"!==d.type&&(this._didDragSinceMouseDown=!0),d.target&&this._getCellFromElement(d.target)&&(!d.relatedTarget||!this._getCellFromElement(d.relatedTarget))&&this._ngZone.run(()=>this.previewChange.emit({value:null,event:d})))},this._mousedownHandler=d=>{if(!this.isRange)return;this._didDragSinceMouseDown=!1;const f=d.target&&this._getCellFromElement(d.target);!f||!this._isInRange(f.rawValue)||this._ngZone.run(()=>{this.dragStarted.emit({value:f.rawValue,event:d})})},this._mouseupHandler=d=>{if(!this.isRange)return;const f=Xq(d.target);f?f.closest(".mat-calendar-body")===this._elementRef.nativeElement&&this._ngZone.run(()=>{var _;const w=this._getCellFromElement(f);this.dragEnded.emit({value:null!==(_=null==w?void 0:w.rawValue)&&void 0!==_?_:null,event:d})}):this._ngZone.run(()=>{this.dragEnded.emit({value:null,event:d})})},this._touchendHandler=d=>{const f=fte(d);f&&this._mouseupHandler({target:f})},this._id="mat-calendar-body-"+Rle++,this._startDateLabelId=`${this._id}-start-date`,this._endDateLabelId=`${this._id}-end-date`,s.runOutsideAngular(()=>{const d=e.nativeElement;d.addEventListener("mouseenter",this._enterHandler,!0),d.addEventListener("touchmove",this._touchmoveHandler,!0),d.addEventListener("focus",this._enterHandler,!0),d.addEventListener("mouseleave",this._leaveHandler,!0),d.addEventListener("blur",this._leaveHandler,!0),d.addEventListener("mousedown",this._mousedownHandler),d.addEventListener("touchstart",this._mousedownHandler),window.addEventListener("mouseup",this._mouseupHandler),window.addEventListener("touchend",this._touchendHandler)})}_cellClicked(e,s){this._didDragSinceMouseDown||e.enabled&&this.selectedValueChange.emit({value:e.value,event:s})}_emitActiveDateChange(e,s){e.enabled&&this.activeDateChange.emit({value:e.value,event:s})}_isSelected(e){return this.startValue===e||this.endValue===e}ngOnChanges(e){const s=e.numCols,{rows:d,numCols:f}=this;(e.rows||s)&&(this._firstRowOffset=d&&d.length&&d[0].length?f-d[0].length:0),(e.cellAspectRatio||s||!this._cellPadding)&&(this._cellPadding=50*this.cellAspectRatio/f+"%"),(s||!this._cellWidth)&&(this._cellWidth=100/f+"%")}ngOnDestroy(){const e=this._elementRef.nativeElement;e.removeEventListener("mouseenter",this._enterHandler,!0),e.removeEventListener("touchmove",this._touchmoveHandler,!0),e.removeEventListener("focus",this._enterHandler,!0),e.removeEventListener("mouseleave",this._leaveHandler,!0),e.removeEventListener("blur",this._leaveHandler,!0),e.removeEventListener("mousedown",this._mousedownHandler),e.removeEventListener("touchstart",this._mousedownHandler),window.removeEventListener("mouseup",this._mouseupHandler),window.removeEventListener("touchend",this._touchendHandler)}_isActiveCell(e,s){let d=e*this.numCols+s;return e&&(d-=this._firstRowOffset),d==this.activeCell}_focusActiveCell(e=!0){this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(Pn(1)).subscribe(()=>{setTimeout(()=>{const s=this._elementRef.nativeElement.querySelector(".mat-calendar-body-active");s&&(e||(this._skipNextFocus=!0),s.focus())})})})}_scheduleFocusActiveCellAfterViewChecked(){this._focusActiveCellAfterViewChecked=!0}_isRangeStart(e){return Zq(e,this.startValue,this.endValue)}_isRangeEnd(e){return Kq(e,this.startValue,this.endValue)}_isInRange(e){return Qq(e,this.startValue,this.endValue,this.isRange)}_isComparisonStart(e){return Zq(e,this.comparisonStart,this.comparisonEnd)}_isComparisonBridgeStart(e,s,d){if(!this._isComparisonStart(e)||this._isRangeStart(e)||!this._isInRange(e))return!1;let f=this.rows[s][d-1];if(!f){const _=this.rows[s-1];f=_&&_[_.length-1]}return f&&!this._isRangeEnd(f.compareValue)}_isComparisonBridgeEnd(e,s,d){if(!this._isComparisonEnd(e)||this._isRangeEnd(e)||!this._isInRange(e))return!1;let f=this.rows[s][d+1];if(!f){const _=this.rows[s+1];f=_&&_[0]}return f&&!this._isRangeStart(f.compareValue)}_isComparisonEnd(e){return Kq(e,this.comparisonStart,this.comparisonEnd)}_isInComparisonRange(e){return Qq(e,this.comparisonStart,this.comparisonEnd,this.isRange)}_isComparisonIdentical(e){return this.comparisonStart===this.comparisonEnd&&e===this.comparisonStart}_isPreviewStart(e){return Zq(e,this.previewStart,this.previewEnd)}_isPreviewEnd(e){return Kq(e,this.previewStart,this.previewEnd)}_isInPreview(e){return Qq(e,this.previewStart,this.previewEnd,this.isRange)}_getDescribedby(e){return this.isRange?this.startValue===e&&this.endValue===e?`${this._startDateLabelId} ${this._endDateLabelId}`:this.startValue===e?this._startDateLabelId:this.endValue===e?this._endDateLabelId:null:null}_getCellFromElement(e){const s=Xq(e);if(s){const d=s.getAttribute("data-mat-row"),f=s.getAttribute("data-mat-col");if(d&&f)return this.rows[parseInt(d)][parseInt(f)]}return null}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Je))},a.\u0275cmp=we({type:a,selectors:[["","mat-calendar-body",""]],hostAttrs:[1,"mat-calendar-body"],inputs:{label:"label",rows:"rows",todayValue:"todayValue",startValue:"startValue",endValue:"endValue",labelMinRequiredCells:"labelMinRequiredCells",numCols:"numCols",activeCell:"activeCell",isRange:"isRange",cellAspectRatio:"cellAspectRatio",comparisonStart:"comparisonStart",comparisonEnd:"comparisonEnd",previewStart:"previewStart",previewEnd:"previewEnd",startDateAccessibleName:"startDateAccessibleName",endDateAccessibleName:"endDateAccessibleName"},outputs:{selectedValueChange:"selectedValueChange",previewChange:"previewChange",activeDateChange:"activeDateChange",dragStarted:"dragStarted",dragEnded:"dragEnded"},exportAs:["matCalendarBody"],features:[$n],attrs:vle,decls:6,vars:6,consts:[["aria-hidden","true",4,"ngIf"],["role","row",4,"ngFor","ngForOf"],[1,"mat-calendar-body-hidden-label",3,"id"],["aria-hidden","true"],[1,"mat-calendar-body-label"],["role","row"],["class","mat-calendar-body-label",3,"paddingTop","paddingBottom",4,"ngIf"],["role","gridcell","class","mat-calendar-body-cell-container",3,"width","paddingTop","paddingBottom",4,"ngFor","ngForOf"],["role","gridcell",1,"mat-calendar-body-cell-container"],["type","button",1,"mat-calendar-body-cell",3,"ngClass","tabindex","click","focus"],[1,"mat-calendar-body-cell-content","mat-focus-indicator"],["aria-hidden","true",1,"mat-calendar-body-cell-preview"]],template:function(e,s){1&e&&(Q(0,_le,3,6,"tr",0),Q(1,wle,3,2,"tr",1),I(2,"label",2),Y(3),O(),I(4,"label",2),Y(5),O()),2&e&&(V("ngIf",s._firstRowOffset=i&&a===e}function Qq(a,i,e,s){return s&&null!==i&&null!==e&&i!==e&&a>=i&&a<=e}function fte(a){const i=a.changedTouches[0];return document.elementFromPoint(i.clientX,i.clientY)}class ts{constructor(i,e){this.start=i,this.end=e}}let Ag=(()=>{class a{constructor(e,s){this.selection=e,this._adapter=s,this._selectionChanged=new Ue,this.selectionChanged=this._selectionChanged,this.selection=e}updateSelection(e,s){const d=this.selection;this.selection=e,this._selectionChanged.next({selection:e,source:s,oldValue:d})}ngOnDestroy(){this._selectionChanged.complete()}_isValidDateInstance(e){return this._adapter.isDateInstance(e)&&this._adapter.isValid(e)}}return a.\u0275fac=function(e){xs()},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),Ole=(()=>{class a extends Ag{constructor(e){super(null,e)}add(e){super.updateSelection(e,this)}isValid(){return null!=this.selection&&this._isValidDateInstance(this.selection)}isComplete(){return null!=this.selection}clone(){const e=new a(this._adapter);return e.updateSelection(this.selection,this),e}}return a.\u0275fac=function(e){return new(e||a)(oe(mr))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();const pte={provide:Ag,deps:[[new yi,new co,Ag],mr],useFactory:function Fle(a,i){return a||new Ole(i)}},R4=new _e("MAT_DATE_RANGE_SELECTION_STRATEGY");let mte=(()=>{class a{get activeDate(){return this._activeDate}set activeDate(e){const s=this._activeDate,d=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))||this._dateAdapter.today();this._activeDate=this._dateAdapter.clampDate(d,this.minDate,this.maxDate),this._hasSameMonthAndYear(s,this._activeDate)||this._init()}get selected(){return this._selected}set selected(e){this._selected=e instanceof ts?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e)),this._setRanges(this._selected)}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}constructor(e,s,d,f,_){this._changeDetectorRef=e,this._dateFormats=s,this._dateAdapter=d,this._dir=f,this._rangeStrategy=_,this._rerenderSubscription=xt.EMPTY,this.activeDrag=null,this.selectedChange=new ye,this._userSelection=new ye,this.dragStarted=new ye,this.dragEnded=new ye,this.activeDateChange=new ye,this._activeDate=this._dateAdapter.today()}ngAfterContentInit(){this._rerenderSubscription=this._dateAdapter.localeChanges.pipe(Ji(null)).subscribe(()=>this._init())}ngOnChanges(e){const s=e.comparisonStart||e.comparisonEnd;s&&!s.firstChange&&this._setRanges(this.selected),e.activeDrag&&!this.activeDrag&&this._clearPreview()}ngOnDestroy(){this._rerenderSubscription.unsubscribe()}_dateSelected(e){const s=e.value,d=this._getDateFromDayOfMonth(s);let f,_;this._selected instanceof ts?(f=this._getDateInCurrentMonth(this._selected.start),_=this._getDateInCurrentMonth(this._selected.end)):f=_=this._getDateInCurrentMonth(this._selected),(f!==s||_!==s)&&this.selectedChange.emit(d),this._userSelection.emit({value:d,event:e.event}),this._clearPreview(),this._changeDetectorRef.markForCheck()}_updateActiveDate(e){const d=this._activeDate;this.activeDate=this._getDateFromDayOfMonth(e.value),this._dateAdapter.compareDate(d,this.activeDate)&&this.activeDateChange.emit(this._activeDate)}_handleCalendarBodyKeydown(e){const s=this._activeDate,d=this._isRtl();switch(e.keyCode){case 37:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,d?1:-1);break;case 39:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,d?-1:1);break;case 38:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,-7);break;case 40:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,7);break;case 36:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,1-this._dateAdapter.getDate(this._activeDate));break;case 35:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,this._dateAdapter.getNumDaysInMonth(this._activeDate)-this._dateAdapter.getDate(this._activeDate));break;case 33:this.activeDate=e.altKey?this._dateAdapter.addCalendarYears(this._activeDate,-1):this._dateAdapter.addCalendarMonths(this._activeDate,-1);break;case 34:this.activeDate=e.altKey?this._dateAdapter.addCalendarYears(this._activeDate,1):this._dateAdapter.addCalendarMonths(this._activeDate,1);break;case 13:case 32:return this._selectionKeyPressed=!0,void(this._canSelect(this._activeDate)&&e.preventDefault());case 27:return void(null!=this._previewEnd&&!pr(e)&&(this._clearPreview(),this.activeDrag?this.dragEnded.emit({value:null,event:e}):(this.selectedChange.emit(null),this._userSelection.emit({value:null,event:e})),e.preventDefault(),e.stopPropagation()));default:return}this._dateAdapter.compareDate(s,this.activeDate)&&(this.activeDateChange.emit(this.activeDate),this._focusActiveCellAfterViewChecked()),e.preventDefault()}_handleCalendarBodyKeyup(e){(32===e.keyCode||13===e.keyCode)&&(this._selectionKeyPressed&&this._canSelect(this._activeDate)&&this._dateSelected({value:this._dateAdapter.getDate(this._activeDate),event:e}),this._selectionKeyPressed=!1)}_init(){this._setRanges(this.selected),this._todayDate=this._getCellCompareValue(this._dateAdapter.today()),this._monthLabel=this._dateFormats.display.monthLabel?this._dateAdapter.format(this.activeDate,this._dateFormats.display.monthLabel):this._dateAdapter.getMonthNames("short")[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();let e=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),this._dateAdapter.getMonth(this.activeDate),1);this._firstWeekOffset=(7+this._dateAdapter.getDayOfWeek(e)-this._dateAdapter.getFirstDayOfWeek())%7,this._initWeekdays(),this._createWeekCells(),this._changeDetectorRef.markForCheck()}_focusActiveCell(e){this._matCalendarBody._focusActiveCell(e)}_focusActiveCellAfterViewChecked(){this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked()}_previewChanged({event:e,value:s}){if(this._rangeStrategy){const _=s?s.rawValue:null,w=this._rangeStrategy.createPreview(_,this.selected,e);if(this._previewStart=this._getCellCompareValue(w.start),this._previewEnd=this._getCellCompareValue(w.end),this.activeDrag&&_){var d,f;const D=null===(d=(f=this._rangeStrategy).createDrag)||void 0===d?void 0:d.call(f,this.activeDrag.value,this.selected,_,e);D&&(this._previewStart=this._getCellCompareValue(D.start),this._previewEnd=this._getCellCompareValue(D.end))}this._changeDetectorRef.detectChanges()}}_dragEnded(e){if(this.activeDrag)if(e.value){var s,d;const f=null===(s=this._rangeStrategy)||void 0===s||null===(d=s.createDrag)||void 0===d?void 0:d.call(s,this.activeDrag.value,this.selected,e.value,e.event);this.dragEnded.emit({value:f??null,event:e.event})}else this.dragEnded.emit({value:null,event:e.event})}_getDateFromDayOfMonth(e){return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),this._dateAdapter.getMonth(this.activeDate),e)}_initWeekdays(){const e=this._dateAdapter.getFirstDayOfWeek(),s=this._dateAdapter.getDayOfWeekNames("narrow");let f=this._dateAdapter.getDayOfWeekNames("long").map((_,w)=>({long:_,narrow:s[w]}));this._weekdays=f.slice(e).concat(f.slice(0,e))}_createWeekCells(){const e=this._dateAdapter.getNumDaysInMonth(this.activeDate),s=this._dateAdapter.getDateNames();this._weeks=[[]];for(let d=0,f=this._firstWeekOffset;d=0)&&(!this.maxDate||this._dateAdapter.compareDate(e,this.maxDate)<=0)&&(!this.dateFilter||this.dateFilter(e))}_getDateInCurrentMonth(e){return e&&this._hasSameMonthAndYear(e,this.activeDate)?this._dateAdapter.getDate(e):null}_hasSameMonthAndYear(e,s){return!(!e||!s||this._dateAdapter.getMonth(e)!=this._dateAdapter.getMonth(s)||this._dateAdapter.getYear(e)!=this._dateAdapter.getYear(s))}_getCellCompareValue(e){if(e){const s=this._dateAdapter.getYear(e),d=this._dateAdapter.getMonth(e),f=this._dateAdapter.getDate(e);return new Date(s,d,f).getTime()}return null}_isRtl(){return this._dir&&"rtl"===this._dir.value}_setRanges(e){e instanceof ts?(this._rangeStart=this._getCellCompareValue(e.start),this._rangeEnd=this._getCellCompareValue(e.end),this._isRange=!0):(this._rangeStart=this._rangeEnd=this._getCellCompareValue(e),this._isRange=!1),this._comparisonRangeStart=this._getCellCompareValue(this.comparisonStart),this._comparisonRangeEnd=this._getCellCompareValue(this.comparisonEnd)}_canSelect(e){return!this.dateFilter||this.dateFilter(e)}_clearPreview(){this._previewStart=this._previewEnd=null}}return a.\u0275fac=function(e){return new(e||a)(F(Zt),F(Pu,8),F(mr,8),F(Ni,8),F(R4,8))},a.\u0275cmp=we({type:a,selectors:[["mat-month-view"]],viewQuery:function(e,s){if(1&e&&ot(J1,5),2&e){let d;Ee(d=Oe())&&(s._matCalendarBody=d.first)}},inputs:{activeDate:"activeDate",selected:"selected",minDate:"minDate",maxDate:"maxDate",dateFilter:"dateFilter",dateClass:"dateClass",comparisonStart:"comparisonStart",comparisonEnd:"comparisonEnd",startDateAccessibleName:"startDateAccessibleName",endDateAccessibleName:"endDateAccessibleName",activeDrag:"activeDrag"},outputs:{selectedChange:"selectedChange",_userSelection:"_userSelection",dragStarted:"dragStarted",dragEnded:"dragEnded",activeDateChange:"activeDateChange"},exportAs:["matMonthView"],features:[$n],decls:7,vars:15,consts:[["role","grid",1,"mat-calendar-table"],[1,"mat-calendar-table-header"],["scope","col",4,"ngFor","ngForOf"],["aria-hidden","true","colspan","7",1,"mat-calendar-table-header-divider"],["mat-calendar-body","",3,"label","rows","todayValue","startValue","endValue","comparisonStart","comparisonEnd","previewStart","previewEnd","isRange","labelMinRequiredCells","activeCell","startDateAccessibleName","endDateAccessibleName","selectedValueChange","activeDateChange","previewChange","dragStarted","dragEnded","keyup","keydown"],["scope","col"],[1,"cdk-visually-hidden"],["aria-hidden","true"]],template:function(e,s){1&e&&(I(0,"table",0)(1,"thead",1)(2,"tr"),Q(3,xle,5,2,"th",2),O(),I(4,"tr"),he(5,"th",3),O()(),I(6,"tbody",4),J("selectedValueChange",function(f){return s._dateSelected(f)})("activeDateChange",function(f){return s._updateActiveDate(f)})("previewChange",function(f){return s._previewChanged(f)})("dragStarted",function(f){return s.dragStarted.emit(f)})("dragEnded",function(f){return s._dragEnded(f)})("keyup",function(f){return s._handleCalendarBodyKeyup(f)})("keydown",function(f){return s._handleCalendarBodyKeydown(f)}),O()()),2&e&&(N(3),V("ngForOf",s._weekdays),N(3),V("label",s._monthLabel)("rows",s._weeks)("todayValue",s._todayDate)("startValue",s._rangeStart)("endValue",s._rangeEnd)("comparisonStart",s._comparisonRangeStart)("comparisonEnd",s._comparisonRangeEnd)("previewStart",s._previewStart)("previewEnd",s._previewEnd)("isRange",s._isRange)("labelMinRequiredCells",3)("activeCell",s._dateAdapter.getDate(s.activeDate)-1)("startDateAccessibleName",s.startDateAccessibleName)("endDateAccessibleName",s.endDateAccessibleName))},dependencies:[oi,J1],encapsulation:2,changeDetection:0}),a})(),gte=(()=>{class a{get activeDate(){return this._activeDate}set activeDate(e){let s=this._activeDate;const d=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))||this._dateAdapter.today();this._activeDate=this._dateAdapter.clampDate(d,this.minDate,this.maxDate),vte(this._dateAdapter,s,this._activeDate,this.minDate,this.maxDate)||this._init()}get selected(){return this._selected}set selected(e){this._selected=e instanceof ts?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e)),this._setSelectedYear(e)}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}constructor(e,s,d){this._changeDetectorRef=e,this._dateAdapter=s,this._dir=d,this._rerenderSubscription=xt.EMPTY,this.selectedChange=new ye,this.yearSelected=new ye,this.activeDateChange=new ye,this._activeDate=this._dateAdapter.today()}ngAfterContentInit(){this._rerenderSubscription=this._dateAdapter.localeChanges.pipe(Ji(null)).subscribe(()=>this._init())}ngOnDestroy(){this._rerenderSubscription.unsubscribe()}_init(){this._todayYear=this._dateAdapter.getYear(this._dateAdapter.today());const s=this._dateAdapter.getYear(this._activeDate)-DP(this._dateAdapter,this.activeDate,this.minDate,this.maxDate);this._years=[];for(let d=0,f=[];d<24;d++)f.push(s+d),4==f.length&&(this._years.push(f.map(_=>this._createCellForYear(_))),f=[]);this._changeDetectorRef.markForCheck()}_yearSelected(e){const s=e.value,d=this._dateAdapter.createDate(s,0,1),f=this._getDateFromYear(s);this.yearSelected.emit(d),this.selectedChange.emit(f)}_updateActiveDate(e){const d=this._activeDate;this.activeDate=this._getDateFromYear(e.value),this._dateAdapter.compareDate(d,this.activeDate)&&this.activeDateChange.emit(this.activeDate)}_handleCalendarBodyKeydown(e){const s=this._activeDate,d=this._isRtl();switch(e.keyCode){case 37:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,d?1:-1);break;case 39:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,d?-1:1);break;case 38:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,-4);break;case 40:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,4);break;case 36:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,-DP(this._dateAdapter,this.activeDate,this.minDate,this.maxDate));break;case 35:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,24-DP(this._dateAdapter,this.activeDate,this.minDate,this.maxDate)-1);break;case 33:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?-240:-24);break;case 34:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?240:24);break;case 13:case 32:this._selectionKeyPressed=!0;break;default:return}this._dateAdapter.compareDate(s,this.activeDate)&&this.activeDateChange.emit(this.activeDate),this._focusActiveCellAfterViewChecked(),e.preventDefault()}_handleCalendarBodyKeyup(e){(32===e.keyCode||13===e.keyCode)&&(this._selectionKeyPressed&&this._yearSelected({value:this._dateAdapter.getYear(this._activeDate),event:e}),this._selectionKeyPressed=!1)}_getActiveCell(){return DP(this._dateAdapter,this.activeDate,this.minDate,this.maxDate)}_focusActiveCell(){this._matCalendarBody._focusActiveCell()}_focusActiveCellAfterViewChecked(){this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked()}_getDateFromYear(e){const s=this._dateAdapter.getMonth(this.activeDate),d=this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(e,s,1));return this._dateAdapter.createDate(e,s,Math.min(this._dateAdapter.getDate(this.activeDate),d))}_createCellForYear(e){const s=this._dateAdapter.createDate(e,0,1),d=this._dateAdapter.getYearName(s),f=this.dateClass?this.dateClass(s,"multi-year"):void 0;return new Yq(e,d,d,this._shouldEnableYear(e),f)}_shouldEnableYear(e){if(null==e||this.maxDate&&e>this._dateAdapter.getYear(this.maxDate)||this.minDate&&e{class a{get activeDate(){return this._activeDate}set activeDate(e){let s=this._activeDate;const d=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))||this._dateAdapter.today();this._activeDate=this._dateAdapter.clampDate(d,this.minDate,this.maxDate),this._dateAdapter.getYear(s)!==this._dateAdapter.getYear(this._activeDate)&&this._init()}get selected(){return this._selected}set selected(e){this._selected=e instanceof ts?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e)),this._setSelectedMonth(e)}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}constructor(e,s,d,f){this._changeDetectorRef=e,this._dateFormats=s,this._dateAdapter=d,this._dir=f,this._rerenderSubscription=xt.EMPTY,this.selectedChange=new ye,this.monthSelected=new ye,this.activeDateChange=new ye,this._activeDate=this._dateAdapter.today()}ngAfterContentInit(){this._rerenderSubscription=this._dateAdapter.localeChanges.pipe(Ji(null)).subscribe(()=>this._init())}ngOnDestroy(){this._rerenderSubscription.unsubscribe()}_monthSelected(e){const s=e.value,d=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),s,1);this.monthSelected.emit(d);const f=this._getDateFromMonth(s);this.selectedChange.emit(f)}_updateActiveDate(e){const d=this._activeDate;this.activeDate=this._getDateFromMonth(e.value),this._dateAdapter.compareDate(d,this.activeDate)&&this.activeDateChange.emit(this.activeDate)}_handleCalendarBodyKeydown(e){const s=this._activeDate,d=this._isRtl();switch(e.keyCode){case 37:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,d?1:-1);break;case 39:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,d?-1:1);break;case 38:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,-4);break;case 40:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,4);break;case 36:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,-this._dateAdapter.getMonth(this._activeDate));break;case 35:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,11-this._dateAdapter.getMonth(this._activeDate));break;case 33:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?-10:-1);break;case 34:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?10:1);break;case 13:case 32:this._selectionKeyPressed=!0;break;default:return}this._dateAdapter.compareDate(s,this.activeDate)&&(this.activeDateChange.emit(this.activeDate),this._focusActiveCellAfterViewChecked()),e.preventDefault()}_handleCalendarBodyKeyup(e){(32===e.keyCode||13===e.keyCode)&&(this._selectionKeyPressed&&this._monthSelected({value:this._dateAdapter.getMonth(this._activeDate),event:e}),this._selectionKeyPressed=!1)}_init(){this._setSelectedMonth(this.selected),this._todayMonth=this._getMonthInCurrentYear(this._dateAdapter.today()),this._yearLabel=this._dateAdapter.getYearName(this.activeDate);let e=this._dateAdapter.getMonthNames("short");this._months=[[0,1,2,3],[4,5,6,7],[8,9,10,11]].map(s=>s.map(d=>this._createCellForMonth(d,e[d]))),this._changeDetectorRef.markForCheck()}_focusActiveCell(){this._matCalendarBody._focusActiveCell()}_focusActiveCellAfterViewChecked(){this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked()}_getMonthInCurrentYear(e){return e&&this._dateAdapter.getYear(e)==this._dateAdapter.getYear(this.activeDate)?this._dateAdapter.getMonth(e):null}_getDateFromMonth(e){const s=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),e,1),d=this._dateAdapter.getNumDaysInMonth(s);return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),e,Math.min(this._dateAdapter.getDate(this.activeDate),d))}_createCellForMonth(e,s){const d=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),e,1),f=this._dateAdapter.format(d,this._dateFormats.display.monthYearA11yLabel),_=this.dateClass?this.dateClass(d,"year"):void 0;return new Yq(e,s.toLocaleUpperCase(),f,this._shouldEnableMonth(e),_)}_shouldEnableMonth(e){const s=this._dateAdapter.getYear(this.activeDate);if(null==e||this._isYearAndMonthAfterMaxDate(s,e)||this._isYearAndMonthBeforeMinDate(s,e))return!1;if(!this.dateFilter)return!0;for(let f=this._dateAdapter.createDate(s,e,1);this._dateAdapter.getMonth(f)==e;f=this._dateAdapter.addCalendarDays(f,1))if(this.dateFilter(f))return!0;return!1}_isYearAndMonthAfterMaxDate(e,s){if(this.maxDate){const d=this._dateAdapter.getYear(this.maxDate),f=this._dateAdapter.getMonth(this.maxDate);return e>d||e===d&&s>f}return!1}_isYearAndMonthBeforeMinDate(e,s){if(this.minDate){const d=this._dateAdapter.getYear(this.minDate),f=this._dateAdapter.getMonth(this.minDate);return e{class a{constructor(e,s,d,f,_){this._intl=e,this.calendar=s,this._dateAdapter=d,this._dateFormats=f,this._id="mat-calendar-header-"+Hle++,this._periodButtonLabelId=`${this._id}-period-label`,this.calendar.stateChanges.subscribe(()=>_.markForCheck())}get periodButtonText(){return"month"==this.calendar.currentView?this._dateAdapter.format(this.calendar.activeDate,this._dateFormats.display.monthYearLabel).toLocaleUpperCase():"year"==this.calendar.currentView?this._dateAdapter.getYearName(this.calendar.activeDate):this._intl.formatYearRange(...this._formatMinAndMaxYearLabels())}get periodButtonDescription(){return"month"==this.calendar.currentView?this._dateAdapter.format(this.calendar.activeDate,this._dateFormats.display.monthYearLabel).toLocaleUpperCase():"year"==this.calendar.currentView?this._dateAdapter.getYearName(this.calendar.activeDate):this._intl.formatYearRangeLabel(...this._formatMinAndMaxYearLabels())}get periodButtonLabel(){return"month"==this.calendar.currentView?this._intl.switchToMultiYearViewLabel:this._intl.switchToMonthViewLabel}get prevButtonLabel(){return{month:this._intl.prevMonthLabel,year:this._intl.prevYearLabel,"multi-year":this._intl.prevMultiYearLabel}[this.calendar.currentView]}get nextButtonLabel(){return{month:this._intl.nextMonthLabel,year:this._intl.nextYearLabel,"multi-year":this._intl.nextMultiYearLabel}[this.calendar.currentView]}currentPeriodClicked(){this.calendar.currentView="month"==this.calendar.currentView?"multi-year":"month"}previousClicked(){this.calendar.activeDate="month"==this.calendar.currentView?this._dateAdapter.addCalendarMonths(this.calendar.activeDate,-1):this._dateAdapter.addCalendarYears(this.calendar.activeDate,"year"==this.calendar.currentView?-1:-24)}nextClicked(){this.calendar.activeDate="month"==this.calendar.currentView?this._dateAdapter.addCalendarMonths(this.calendar.activeDate,1):this._dateAdapter.addCalendarYears(this.calendar.activeDate,"year"==this.calendar.currentView?1:24)}previousEnabled(){return!this.calendar.minDate||!this.calendar.minDate||!this._isSameView(this.calendar.activeDate,this.calendar.minDate)}nextEnabled(){return!this.calendar.maxDate||!this._isSameView(this.calendar.activeDate,this.calendar.maxDate)}_isSameView(e,s){return"month"==this.calendar.currentView?this._dateAdapter.getYear(e)==this._dateAdapter.getYear(s)&&this._dateAdapter.getMonth(e)==this._dateAdapter.getMonth(s):"year"==this.calendar.currentView?this._dateAdapter.getYear(e)==this._dateAdapter.getYear(s):vte(this._dateAdapter,e,s,this.calendar.minDate,this.calendar.maxDate)}_formatMinAndMaxYearLabels(){const s=this._dateAdapter.getYear(this.calendar.activeDate)-DP(this._dateAdapter,this.calendar.activeDate,this.calendar.minDate,this.calendar.maxDate),d=s+24-1;return[this._dateAdapter.getYearName(this._dateAdapter.createDate(s,0,1)),this._dateAdapter.getYearName(this._dateAdapter.createDate(d,0,1))]}}return a.\u0275fac=function(e){return new(e||a)(F(SP),F(nn(()=>tX)),F(mr,8),F(Pu,8),F(Zt))},a.\u0275cmp=we({type:a,selectors:[["mat-calendar-header"]],exportAs:["matCalendarHeader"],ngContentSelectors:Cle,decls:13,vars:11,consts:[[1,"mat-calendar-header"],[1,"mat-calendar-controls"],["mat-button","","type","button","aria-live","polite",1,"mat-calendar-period-button",3,"click"],["aria-hidden","true"],["viewBox","0 0 10 5","focusable","false","aria-hidden","true",1,"mat-calendar-arrow"],["points","0,0 5,5 10,0"],[1,"mat-calendar-spacer"],["mat-icon-button","","type","button",1,"mat-calendar-previous-button",3,"disabled","click"],["mat-icon-button","","type","button",1,"mat-calendar-next-button",3,"disabled","click"],[1,"mat-calendar-hidden-label",3,"id"]],template:function(e,s){1&e&&(Fn(),I(0,"div",0)(1,"div",1)(2,"button",2),J("click",function(){return s.currentPeriodClicked()}),I(3,"span",3),Y(4),O(),Pr(),I(5,"svg",4),he(6,"polygon",5),O()(),Ll(),he(7,"div",6),ht(8),I(9,"button",7),J("click",function(){return s.previousClicked()}),O(),I(10,"button",8),J("click",function(){return s.nextClicked()}),O()()(),I(11,"label",9),Y(12),O()),2&e&&(N(2),He("aria-label",s.periodButtonLabel)("aria-describedby",s._periodButtonLabelId),N(2),In(s.periodButtonText),N(1),at("mat-calendar-invert","month"!==s.calendar.currentView),N(4),V("disabled",!s.previousEnabled()),He("aria-label",s.prevButtonLabel),N(1),V("disabled",!s.nextEnabled()),He("aria-label",s.nextButtonLabel),N(1),V("id",s._periodButtonLabelId),N(1),In(s.periodButtonDescription))},dependencies:[pi,yc],encapsulation:2,changeDetection:0}),a})(),tX=(()=>{class a{get startAt(){return this._startAt}set startAt(e){this._startAt=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get selected(){return this._selected}set selected(e){this._selected=e instanceof ts?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get activeDate(){return this._clampedActiveDate}set activeDate(e){this._clampedActiveDate=this._dateAdapter.clampDate(e,this.minDate,this.maxDate),this.stateChanges.next(),this._changeDetectorRef.markForCheck()}get currentView(){return this._currentView}set currentView(e){const s=this._currentView!==e?e:null;this._currentView=e,this._moveFocusOnNextTick=!0,this._changeDetectorRef.markForCheck(),s&&this.viewChanged.emit(s)}constructor(e,s,d,f){this._dateAdapter=s,this._dateFormats=d,this._changeDetectorRef=f,this._moveFocusOnNextTick=!1,this.startView="month",this.selectedChange=new ye,this.yearSelected=new ye,this.monthSelected=new ye,this.viewChanged=new ye(!0),this._userSelection=new ye,this._userDragDrop=new ye,this._activeDrag=null,this.stateChanges=new Ue,this._intlChanges=e.changes.subscribe(()=>{f.markForCheck(),this.stateChanges.next()})}ngAfterContentInit(){this._calendarHeaderPortal=new pd(this.headerComponent||Gle),this.activeDate=this.startAt||this._dateAdapter.today(),this._currentView=this.startView}ngAfterViewChecked(){this._moveFocusOnNextTick&&(this._moveFocusOnNextTick=!1,this.focusActiveCell())}ngOnDestroy(){this._intlChanges.unsubscribe(),this.stateChanges.complete()}ngOnChanges(e){const s=e.minDate&&!this._dateAdapter.sameDate(e.minDate.previousValue,e.minDate.currentValue)?e.minDate:void 0,d=e.maxDate&&!this._dateAdapter.sameDate(e.maxDate.previousValue,e.maxDate.currentValue)?e.maxDate:void 0,f=s||d||e.dateFilter;if(f&&!f.firstChange){const _=this._getCurrentViewComponent();_&&(this._changeDetectorRef.detectChanges(),_._init())}this.stateChanges.next()}focusActiveCell(){this._getCurrentViewComponent()._focusActiveCell(!1)}updateTodaysDate(){this._getCurrentViewComponent()._init()}_dateSelected(e){const s=e.value;(this.selected instanceof ts||s&&!this._dateAdapter.sameDate(s,this.selected))&&this.selectedChange.emit(s),this._userSelection.emit(e)}_yearSelectedInMultiYearView(e){this.yearSelected.emit(e)}_monthSelectedInYearView(e){this.monthSelected.emit(e)}_goToDateInView(e,s){this.activeDate=e,this.currentView=s}_dragStarted(e){this._activeDrag=e}_dragEnded(e){this._activeDrag&&(e.value&&this._userDragDrop.emit(e),this._activeDrag=null)}_getCurrentViewComponent(){return this.monthView||this.yearView||this.multiYearView}}return a.\u0275fac=function(e){return new(e||a)(F(SP),F(mr,8),F(Pu,8),F(Zt))},a.\u0275cmp=we({type:a,selectors:[["mat-calendar"]],viewQuery:function(e,s){if(1&e&&(ot(mte,5),ot(yte,5),ot(gte,5)),2&e){let d;Ee(d=Oe())&&(s.monthView=d.first),Ee(d=Oe())&&(s.yearView=d.first),Ee(d=Oe())&&(s.multiYearView=d.first)}},hostAttrs:[1,"mat-calendar"],inputs:{headerComponent:"headerComponent",startAt:"startAt",startView:"startView",selected:"selected",minDate:"minDate",maxDate:"maxDate",dateFilter:"dateFilter",dateClass:"dateClass",comparisonStart:"comparisonStart",comparisonEnd:"comparisonEnd",startDateAccessibleName:"startDateAccessibleName",endDateAccessibleName:"endDateAccessibleName"},outputs:{selectedChange:"selectedChange",yearSelected:"yearSelected",monthSelected:"monthSelected",viewChanged:"viewChanged",_userSelection:"_userSelection",_userDragDrop:"_userDragDrop"},exportAs:["matCalendar"],features:[et([pte]),$n],decls:5,vars:5,consts:[[3,"cdkPortalOutlet"],["cdkMonitorSubtreeFocus","","tabindex","-1",1,"mat-calendar-content",3,"ngSwitch"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","activeDrag","activeDateChange","_userSelection","dragStarted","dragEnded",4,"ngSwitchCase"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","monthSelected","selectedChange",4,"ngSwitchCase"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","yearSelected","selectedChange",4,"ngSwitchCase"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","activeDrag","activeDateChange","_userSelection","dragStarted","dragEnded"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","monthSelected","selectedChange"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","yearSelected","selectedChange"]],template:function(e,s){1&e&&(Q(0,Sle,0,0,"ng-template",0),I(1,"div",1),Q(2,Dle,1,11,"mat-month-view",2),Q(3,Mle,1,6,"mat-year-view",3),Q(4,Tle,1,6,"mat-multi-year-view",4),O()),2&e&&(V("cdkPortalOutlet",s._calendarHeaderPortal),N(1),V("ngSwitch",s.currentView),N(1),V("ngSwitchCase","month"),N(1),V("ngSwitchCase","year"),N(1),V("ngSwitchCase","multi-year"))},dependencies:[id,oc,P3,pc,mte,yte,gte],styles:['.mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:"";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:"";position:absolute;top:0;left:-8px;right:-8px;height:1px}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px) * -1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:""}.mat-calendar-hidden-label{display:none}'],encapsulation:2,changeDetection:0}),a})();const bte={transformPanel:tr("transformPanel",[Mn("void => enter-dropdown",Tn("120ms cubic-bezier(0, 0, 0.2, 1)",yd([ft({opacity:0,transform:"scale(1, 0.8)"}),ft({opacity:1,transform:"scale(1, 1)"})]))),Mn("void => enter-dialog",Tn("150ms cubic-bezier(0, 0, 0.2, 1)",yd([ft({opacity:0,transform:"scale(0.7)"}),ft({transform:"none",opacity:1})]))),Mn("* => void",Tn("100ms linear",ft({opacity:0})))]),fadeInCalendar:tr("fadeInCalendar",[Bn("void",ft({opacity:0})),Bn("enter",ft({opacity:1})),Mn("void => *",Tn("120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)"))])};let Ule=0;const wte=new _e("mat-datepicker-scroll-strategy"),$le={provide:wte,deps:[ta],useFactory:function jle(a){return()=>a.scrollStrategies.reposition()}},Wle=gc(class{constructor(a){this._elementRef=a}});let Yle=(()=>{class a extends Wle{constructor(e,s,d,f,_,w){super(e),this._changeDetectorRef=s,this._globalModel=d,this._dateAdapter=f,this._rangeSelectionStrategy=_,this._subscriptions=new xt,this._animationDone=new Ue,this._isAnimating=!1,this._actionsPortal=null,this._closeButtonText=w.closeCalendarLabel}ngOnInit(){this._animationState=this.datepicker.touchUi?"enter-dialog":"enter-dropdown"}ngAfterViewInit(){this._subscriptions.add(this.datepicker.stateChanges.subscribe(()=>{this._changeDetectorRef.markForCheck()})),this._calendar.focusActiveCell()}ngOnDestroy(){this._subscriptions.unsubscribe(),this._animationDone.complete()}_handleUserSelection(e){const s=this._model.selection,d=e.value,f=s instanceof ts;if(f&&this._rangeSelectionStrategy){const _=this._rangeSelectionStrategy.selectionFinished(d,s,e.event);this._model.updateSelection(_,this)}else d&&(f||!this._dateAdapter.sameDate(d,s))&&this._model.add(d);(!this._model||this._model.isComplete())&&!this._actionsPortal&&this.datepicker.close()}_handleUserDragDrop(e){this._model.updateSelection(e.value,this)}_startExitAnimation(){this._animationState="void",this._changeDetectorRef.markForCheck()}_handleAnimationEvent(e){this._isAnimating="start"===e.phaseName,this._isAnimating||this._animationDone.next()}_getSelected(){return this._model.selection}_applyPendingSelection(){this._model!==this._globalModel&&this._globalModel.updateSelection(this._model.selection,this)}_assignActions(e,s){this._model=e?this._globalModel.clone():this._globalModel,this._actionsPortal=e,s&&this._changeDetectorRef.detectChanges()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Ag),F(mr),F(R4,8),F(SP))},a.\u0275cmp=we({type:a,selectors:[["mat-datepicker-content"]],viewQuery:function(e,s){if(1&e&&ot(tX,5),2&e){let d;Ee(d=Oe())&&(s._calendar=d.first)}},hostAttrs:[1,"mat-datepicker-content"],hostVars:3,hostBindings:function(e,s){1&e&&jv("@transformPanel.start",function(f){return s._handleAnimationEvent(f)})("@transformPanel.done",function(f){return s._handleAnimationEvent(f)}),2&e&&(qv("@transformPanel",s._animationState),at("mat-datepicker-content-touch",s.datepicker.touchUi))},inputs:{color:"color"},exportAs:["matDatepickerContent"],features:[Se],decls:5,vars:26,consts:[["cdkTrapFocus","","role","dialog",1,"mat-datepicker-content-container"],[3,"id","ngClass","startAt","startView","minDate","maxDate","dateFilter","headerComponent","selected","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","yearSelected","monthSelected","viewChanged","_userSelection","_userDragDrop"],[3,"cdkPortalOutlet"],["type","button","mat-raised-button","",1,"mat-datepicker-close-button",3,"color","focus","blur","click"]],template:function(e,s){if(1&e&&(I(0,"div",0)(1,"mat-calendar",1),J("yearSelected",function(f){return s.datepicker._selectYear(f)})("monthSelected",function(f){return s.datepicker._selectMonth(f)})("viewChanged",function(f){return s.datepicker._viewChanged(f)})("_userSelection",function(f){return s._handleUserSelection(f)})("_userDragDrop",function(f){return s._handleUserDragDrop(f)}),O(),Q(2,Ale,0,0,"ng-template",2),I(3,"button",3),J("focus",function(){return s._closeButtonFocused=!0})("blur",function(){return s._closeButtonFocused=!1})("click",function(){return s.datepicker.close()}),Y(4),O()()),2&e){let d;at("mat-datepicker-content-container-with-custom-header",s.datepicker.calendarHeaderComponent)("mat-datepicker-content-container-with-actions",s._actionsPortal),He("aria-modal",!0)("aria-labelledby",null!==(d=s._dialogLabelId)&&void 0!==d?d:void 0),N(1),V("id",s.datepicker.id)("ngClass",s.datepicker.panelClass)("startAt",s.datepicker.startAt)("startView",s.datepicker.startView)("minDate",s.datepicker._getMinDate())("maxDate",s.datepicker._getMaxDate())("dateFilter",s.datepicker._getDateFilter())("headerComponent",s.datepicker.calendarHeaderComponent)("selected",s._getSelected())("dateClass",s.datepicker.dateClass)("comparisonStart",s.comparisonStart)("comparisonEnd",s.comparisonEnd)("@fadeInCalendar","enter")("startDateAccessibleName",s.startDateAccessibleName)("endDateAccessibleName",s.endDateAccessibleName),N(1),V("cdkPortalOutlet",s._actionsPortal),N(1),at("cdk-visually-hidden",!s._closeButtonFocused),V("color",s.color||"primary"),N(1),In(s._closeButtonText)}},dependencies:[Ps,pi,k3,pc,tX],styles:[".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}"],encapsulation:2,data:{animation:[bte.transformPanel,bte.fadeInCalendar]},changeDetection:0}),a})(),xte=(()=>{class a{get startAt(){return this._startAt||(this.datepickerInput?this.datepickerInput.getStartValue():null)}set startAt(e){this._startAt=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get color(){return this._color||(this.datepickerInput?this.datepickerInput.getThemePalette():void 0)}set color(e){this._color=e}get touchUi(){return this._touchUi}set touchUi(e){this._touchUi=We(e)}get disabled(){return void 0===this._disabled&&this.datepickerInput?this.datepickerInput.disabled:!!this._disabled}set disabled(e){const s=We(e);s!==this._disabled&&(this._disabled=s,this.stateChanges.next(void 0))}get restoreFocus(){return this._restoreFocus}set restoreFocus(e){this._restoreFocus=We(e)}get panelClass(){return this._panelClass}set panelClass(e){this._panelClass=Bk(e)}get opened(){return this._opened}set opened(e){We(e)?this.open():this.close()}_getMinDate(){return this.datepickerInput&&this.datepickerInput.min}_getMaxDate(){return this.datepickerInput&&this.datepickerInput.max}_getDateFilter(){return this.datepickerInput&&this.datepickerInput.dateFilter}constructor(e,s,d,f,_,w,D){this._overlay=e,this._ngZone=s,this._viewContainerRef=d,this._dateAdapter=_,this._dir=w,this._model=D,this._inputStateChanges=xt.EMPTY,this._document=Gt(bt),this.startView="month",this._touchUi=!1,this.xPosition="start",this.yPosition="below",this._restoreFocus=!0,this.yearSelected=new ye,this.monthSelected=new ye,this.viewChanged=new ye(!0),this.openedStream=new ye,this.closedStream=new ye,this._opened=!1,this.id="mat-datepicker-"+Ule++,this._focusedElementBeforeOpen=null,this._backdropHarnessClass=`${this.id}-backdrop`,this.stateChanges=new Ue,this._scrollStrategy=f}ngOnChanges(e){const s=e.xPosition||e.yPosition;if(s&&!s.firstChange&&this._overlayRef){const d=this._overlayRef.getConfig().positionStrategy;d instanceof iE&&(this._setConnectedPositions(d),this.opened&&this._overlayRef.updatePosition())}this.stateChanges.next(void 0)}ngOnDestroy(){this._destroyOverlay(),this.close(),this._inputStateChanges.unsubscribe(),this.stateChanges.complete()}select(e){this._model.add(e)}_selectYear(e){this.yearSelected.emit(e)}_selectMonth(e){this.monthSelected.emit(e)}_viewChanged(e){this.viewChanged.emit(e)}registerInput(e){return this._inputStateChanges.unsubscribe(),this.datepickerInput=e,this._inputStateChanges=e.stateChanges.subscribe(()=>this.stateChanges.next(void 0)),this._model}registerActions(e){var s;this._actionsPortal=e,null===(s=this._componentRef)||void 0===s||s.instance._assignActions(e,!0)}removeActions(e){var s;e===this._actionsPortal&&(this._actionsPortal=null,null===(s=this._componentRef)||void 0===s||s.instance._assignActions(null,!0))}open(){var e;this._opened||this.disabled||null!==(e=this._componentRef)&&void 0!==e&&e.instance._isAnimating||(this._focusedElementBeforeOpen=py(),this._openOverlay(),this._opened=!0,this.openedStream.emit())}close(){var e;if(!this._opened||null!==(e=this._componentRef)&&void 0!==e&&e.instance._isAnimating)return;const s=this._restoreFocus&&this._focusedElementBeforeOpen&&"function"==typeof this._focusedElementBeforeOpen.focus,d=()=>{this._opened&&(this._opened=!1,this.closedStream.emit())};if(this._componentRef){const{instance:f,location:_}=this._componentRef;f._startExitAnimation(),f._animationDone.pipe(Pn(1)).subscribe(()=>{const w=this._document.activeElement;s&&(!w||w===this._document.activeElement||_.nativeElement.contains(w))&&this._focusedElementBeforeOpen.focus(),this._focusedElementBeforeOpen=null,this._destroyOverlay()})}s?setTimeout(d):d()}_applyPendingSelection(){var e,s;null===(e=this._componentRef)||void 0===e||null===(s=e.instance)||void 0===s||s._applyPendingSelection()}_forwardContentValues(e){e.datepicker=this,e.color=this.color,e._dialogLabelId=this.datepickerInput.getOverlayLabelId(),e._assignActions(this._actionsPortal,!1)}_openOverlay(){this._destroyOverlay();const e=this.touchUi,s=new pd(Yle,this._viewContainerRef),d=this._overlayRef=this._overlay.create(new md({positionStrategy:e?this._getDialogStrategy():this._getDropdownStrategy(),hasBackdrop:!0,backdropClass:[e?"cdk-overlay-dark-backdrop":"mat-overlay-transparent-backdrop",this._backdropHarnessClass],direction:this._dir,scrollStrategy:e?this._overlay.scrollStrategies.block():this._scrollStrategy(),panelClass:"mat-datepicker-"+(e?"dialog":"popup")}));this._getCloseStream(d).subscribe(f=>{f&&f.preventDefault(),this.close()}),d.keydownEvents().subscribe(f=>{const _=f.keyCode;(38===_||40===_||37===_||39===_||33===_||34===_)&&f.preventDefault()}),this._componentRef=d.attach(s),this._forwardContentValues(this._componentRef.instance),e||this._ngZone.onStable.pipe(Pn(1)).subscribe(()=>d.updatePosition())}_destroyOverlay(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=this._componentRef=null)}_getDialogStrategy(){return this._overlay.position().global().centerHorizontally().centerVertically()}_getDropdownStrategy(){const e=this._overlay.position().flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin()).withTransformOriginOn(".mat-datepicker-content").withFlexibleDimensions(!1).withViewportMargin(8).withLockedPosition();return this._setConnectedPositions(e)}_setConnectedPositions(e){const s="end"===this.xPosition?"end":"start",d="start"===s?"end":"start",f="above"===this.yPosition?"bottom":"top",_="top"===f?"bottom":"top";return e.withPositions([{originX:s,originY:_,overlayX:s,overlayY:f},{originX:s,originY:f,overlayX:s,overlayY:_},{originX:d,originY:_,overlayX:d,overlayY:f},{originX:d,originY:f,overlayX:d,overlayY:_}])}_getCloseStream(e){const s=["ctrlKey","shiftKey","metaKey"];return Mi(e.backdropClick(),e.detachments(),e.keydownEvents().pipe(fi(d=>27===d.keyCode&&!pr(d)||this.datepickerInput&&pr(d,"altKey")&&38===d.keyCode&&s.every(f=>!pr(d,f)))))}}return a.\u0275fac=function(e){return new(e||a)(F(ta),F(Je),F(Hn),F(wte),F(mr,8),F(Ni,8),F(Ag))},a.\u0275dir=me({type:a,inputs:{calendarHeaderComponent:"calendarHeaderComponent",startAt:"startAt",startView:"startView",color:"color",touchUi:"touchUi",disabled:"disabled",xPosition:"xPosition",yPosition:"yPosition",restoreFocus:"restoreFocus",dateClass:"dateClass",panelClass:"panelClass",opened:"opened"},outputs:{yearSelected:"yearSelected",monthSelected:"monthSelected",viewChanged:"viewChanged",openedStream:"opened",closedStream:"closed"},features:[$n]}),a})(),Cte=(()=>{class a extends xte{}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275cmp=we({type:a,selectors:[["mat-datepicker"]],exportAs:["matDatepicker"],features:[et([pte,{provide:xte,useExisting:a}]),Se],decls:0,vars:0,template:function(e,s){},encapsulation:2,changeDetection:0}),a})();class O4{constructor(i,e){this.target=i,this.targetElement=e,this.value=this.target.value}}let qle=(()=>{class a{get value(){return this._model?this._getValueFromModel(this._model.selection):this._pendingValue}set value(e){this._assignValueProgrammatically(e)}get disabled(){return!!this._disabled||this._parentDisabled()}set disabled(e){const s=We(e),d=this._elementRef.nativeElement;this._disabled!==s&&(this._disabled=s,this.stateChanges.next(void 0)),s&&this._isInitialized&&d.blur&&d.blur()}_getValidators(){return[this._parseValidator,this._minValidator,this._maxValidator,this._filterValidator]}_registerModel(e){this._model=e,this._valueChangesSubscription.unsubscribe(),this._pendingValue&&this._assignValue(this._pendingValue),this._valueChangesSubscription=this._model.selectionChanged.subscribe(s=>{if(this._shouldHandleChangeEvent(s)){const d=this._getValueFromModel(s.selection);this._lastValueValid=this._isValidValue(d),this._cvaOnChange(d),this._onTouched(),this._formatValue(d),this.dateInput.emit(new O4(this,this._elementRef.nativeElement)),this.dateChange.emit(new O4(this,this._elementRef.nativeElement))}})}constructor(e,s,d){this._elementRef=e,this._dateAdapter=s,this._dateFormats=d,this.dateChange=new ye,this.dateInput=new ye,this.stateChanges=new Ue,this._onTouched=()=>{},this._validatorOnChange=()=>{},this._cvaOnChange=()=>{},this._valueChangesSubscription=xt.EMPTY,this._localeSubscription=xt.EMPTY,this._parseValidator=()=>this._lastValueValid?null:{matDatepickerParse:{text:this._elementRef.nativeElement.value}},this._filterValidator=f=>{const _=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(f.value));return!_||this._matchesFilter(_)?null:{matDatepickerFilter:!0}},this._minValidator=f=>{const _=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(f.value)),w=this._getMinDate();return!w||!_||this._dateAdapter.compareDate(w,_)<=0?null:{matDatepickerMin:{min:w,actual:_}}},this._maxValidator=f=>{const _=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(f.value)),w=this._getMaxDate();return!w||!_||this._dateAdapter.compareDate(w,_)>=0?null:{matDatepickerMax:{max:w,actual:_}}},this._lastValueValid=!1,this._localeSubscription=s.localeChanges.subscribe(()=>{this._assignValueProgrammatically(this.value)})}ngAfterViewInit(){this._isInitialized=!0}ngOnChanges(e){(function Xle(a,i){const e=Object.keys(a);for(let s of e){const{previousValue:d,currentValue:f}=a[s];if(!i.isDateInstance(d)||!i.isDateInstance(f))return!0;if(!i.sameDate(d,f))return!0}return!1})(e,this._dateAdapter)&&this.stateChanges.next(void 0)}ngOnDestroy(){this._valueChangesSubscription.unsubscribe(),this._localeSubscription.unsubscribe(),this.stateChanges.complete()}registerOnValidatorChange(e){this._validatorOnChange=e}validate(e){return this._validator?this._validator(e):null}writeValue(e){this._assignValueProgrammatically(e)}registerOnChange(e){this._cvaOnChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_onKeydown(e){pr(e,"altKey")&&40===e.keyCode&&["ctrlKey","shiftKey","metaKey"].every(f=>!pr(e,f))&&!this._elementRef.nativeElement.readOnly&&(this._openPopup(),e.preventDefault())}_onInput(e){const s=this._lastValueValid;let d=this._dateAdapter.parse(e,this._dateFormats.parse.dateInput);this._lastValueValid=this._isValidValue(d),d=this._dateAdapter.getValidDateOrNull(d);const f=!this._dateAdapter.sameDate(d,this.value);!d||f?this._cvaOnChange(d):(e&&!this.value&&this._cvaOnChange(d),s!==this._lastValueValid&&this._validatorOnChange()),f&&(this._assignValue(d),this.dateInput.emit(new O4(this,this._elementRef.nativeElement)))}_onChange(){this.dateChange.emit(new O4(this,this._elementRef.nativeElement))}_onBlur(){this.value&&this._formatValue(this.value),this._onTouched()}_formatValue(e){this._elementRef.nativeElement.value=null!=e?this._dateAdapter.format(e,this._dateFormats.display.dateInput):""}_assignValue(e){this._model?(this._assignValueToModel(e),this._pendingValue=null):this._pendingValue=e}_isValidValue(e){return!e||this._dateAdapter.isValid(e)}_parentDisabled(){return!1}_assignValueProgrammatically(e){e=this._dateAdapter.deserialize(e),this._lastValueValid=this._isValidValue(e),e=this._dateAdapter.getValidDateOrNull(e),this._assignValue(e),this._formatValue(e)}_matchesFilter(e){const s=this._getDateFilter();return!s||s(e)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(mr,8),F(Pu,8))},a.\u0275dir=me({type:a,inputs:{value:"value",disabled:"disabled"},outputs:{dateChange:"dateChange",dateInput:"dateInput"},features:[$n]}),a})();const Zle={provide:jr,useExisting:nn(()=>L4),multi:!0},Kle={provide:xr,useExisting:nn(()=>L4),multi:!0};let L4=(()=>{class a extends qle{set matDatepicker(e){e&&(this._datepicker=e,this._closedSubscription=e.closedStream.subscribe(()=>this._onTouched()),this._registerModel(e.registerInput(this)))}get min(){return this._min}set min(e){const s=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e));this._dateAdapter.sameDate(s,this._min)||(this._min=s,this._validatorOnChange())}get max(){return this._max}set max(e){const s=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e));this._dateAdapter.sameDate(s,this._max)||(this._max=s,this._validatorOnChange())}get dateFilter(){return this._dateFilter}set dateFilter(e){const s=this._matchesFilter(this.value);this._dateFilter=e,this._matchesFilter(this.value)!==s&&this._validatorOnChange()}constructor(e,s,d,f){super(e,s,d),this._formField=f,this._closedSubscription=xt.EMPTY,this._validator=t1.compose(super._getValidators())}getConnectedOverlayOrigin(){return this._formField?this._formField.getConnectedOverlayOrigin():this._elementRef}getOverlayLabelId(){return this._formField?this._formField.getLabelId():this._elementRef.nativeElement.getAttribute("aria-labelledby")}getThemePalette(){return this._formField?this._formField.color:void 0}getStartValue(){return this.value}ngOnDestroy(){super.ngOnDestroy(),this._closedSubscription.unsubscribe()}_openPopup(){this._datepicker&&this._datepicker.open()}_getValueFromModel(e){return e}_assignValueToModel(e){this._model&&this._model.updateSelection(e,this)}_getMinDate(){return this._min}_getMaxDate(){return this._max}_getDateFilter(){return this._dateFilter}_shouldHandleChangeEvent(e){return e.source!==this}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(mr,8),F(Pu,8),F(mg,8))},a.\u0275dir=me({type:a,selectors:[["input","matDatepicker",""]],hostAttrs:[1,"mat-datepicker-input"],hostVars:6,hostBindings:function(e,s){1&e&&J("input",function(f){return s._onInput(f.target.value)})("change",function(){return s._onChange()})("blur",function(){return s._onBlur()})("keydown",function(f){return s._onKeydown(f)}),2&e&&(Oa("disabled",s.disabled),He("aria-haspopup",s._datepicker?"dialog":null)("aria-owns",(null==s._datepicker?null:s._datepicker.opened)&&s._datepicker.id||null)("min",s.min?s._dateAdapter.toIso8601(s.min):null)("max",s.max?s._dateAdapter.toIso8601(s.max):null)("data-mat-calendar",s._datepicker?s._datepicker.id:null))},inputs:{matDatepicker:"matDatepicker",min:"min",max:"max",dateFilter:["matDatepickerFilter","dateFilter"]},exportAs:["matDatepickerInput"],features:[et([Zle,Kle,{provide:ate,useExisting:a}]),Se]}),a})(),Qle=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["","matDatepickerToggleIcon",""]]}),a})(),Ste=(()=>{class a{get disabled(){return void 0===this._disabled&&this.datepicker?this.datepicker.disabled:!!this._disabled}set disabled(e){this._disabled=We(e)}constructor(e,s,d){this._intl=e,this._changeDetectorRef=s,this._stateChanges=xt.EMPTY;const f=Number(d);this.tabIndex=f||0===f?f:null}ngOnChanges(e){e.datepicker&&this._watchStateChanges()}ngOnDestroy(){this._stateChanges.unsubscribe()}ngAfterContentInit(){this._watchStateChanges()}_open(e){this.datepicker&&!this.disabled&&(this.datepicker.open(),e.stopPropagation())}_watchStateChanges(){const e=this.datepicker?this.datepicker.stateChanges:je(),s=this.datepicker&&this.datepicker.datepickerInput?this.datepicker.datepickerInput.stateChanges:je(),d=this.datepicker?Mi(this.datepicker.openedStream,this.datepicker.closedStream):je();this._stateChanges.unsubscribe(),this._stateChanges=Mi(this._intl.changes,e,s,d).subscribe(()=>this._changeDetectorRef.markForCheck())}}return a.\u0275fac=function(e){return new(e||a)(F(SP),F(Zt),hs("tabindex"))},a.\u0275cmp=we({type:a,selectors:[["mat-datepicker-toggle"]],contentQueries:function(e,s,d){if(1&e&&hn(d,Qle,5),2&e){let f;Ee(f=Oe())&&(s._customIcon=f.first)}},viewQuery:function(e,s){if(1&e&&ot(kle,5),2&e){let d;Ee(d=Oe())&&(s._button=d.first)}},hostAttrs:[1,"mat-datepicker-toggle"],hostVars:8,hostBindings:function(e,s){1&e&&J("click",function(f){return s._open(f)}),2&e&&(He("tabindex",null)("data-mat-calendar",s.datepicker?s.datepicker.id:null),at("mat-datepicker-toggle-active",s.datepicker&&s.datepicker.opened)("mat-accent",s.datepicker&&"accent"===s.datepicker.color)("mat-warn",s.datepicker&&"warn"===s.datepicker.color))},inputs:{datepicker:["for","datepicker"],tabIndex:"tabIndex",ariaLabel:["aria-label","ariaLabel"],disabled:"disabled",disableRipple:"disableRipple"},exportAs:["matDatepickerToggle"],features:[$n],ngContentSelectors:Ple,decls:4,vars:6,consts:[["mat-icon-button","","type","button",3,"disabled","disableRipple"],["button",""],["class","mat-datepicker-toggle-default-icon","viewBox","0 0 24 24","width","24px","height","24px","fill","currentColor","focusable","false",4,"ngIf"],["viewBox","0 0 24 24","width","24px","height","24px","fill","currentColor","focusable","false",1,"mat-datepicker-toggle-default-icon"],["d","M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z"]],template:function(e,s){1&e&&(Fn(Ile),I(0,"button",0,1),Q(2,Ele,2,0,"svg",2),ht(3),O()),2&e&&(V("disabled",s.disabled)("disableRipple",s.disableRipple),He("aria-haspopup",s.datepicker?"dialog":null)("aria-label",s.ariaLabel||s._intl.openCalendarLabel)("tabindex",s.disabled?-1:s.tabIndex),N(2),V("ngIf",!s._customIcon))},dependencies:[zt,yc],styles:[".mat-datepicker-toggle{pointer-events:auto}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}"],encapsulation:2,changeDetection:0}),a})(),tce=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[SP,$le],imports:[zr,Iy,Iu,UC,ku,Qt,Nf]}),a})();const nce=["button"],ice=["*"],Mte=new _e("MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS"),Tte=new _e("MatButtonToggleGroup"),rce={provide:jr,useExisting:nn(()=>Ete),multi:!0};let Ate=0;class kte{constructor(i,e){this.source=i,this.value=e}}let Ete=(()=>{class a{get name(){return this._name}set name(e){this._name=e,this._markButtonsForCheck()}get vertical(){return this._vertical}set vertical(e){this._vertical=We(e)}get value(){const e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e.map(s=>s.value):e[0]?e[0].value:void 0}set value(e){this._setSelectionByValue(e),this.valueChange.emit(this.value)}get selected(){const e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e:e[0]||null}get multiple(){return this._multiple}set multiple(e){this._multiple=We(e),this._markButtonsForCheck()}get disabled(){return this._disabled}set disabled(e){this._disabled=We(e),this._markButtonsForCheck()}constructor(e,s){this._changeDetector=e,this._vertical=!1,this._multiple=!1,this._disabled=!1,this._controlValueAccessorChangeFn=()=>{},this._onTouched=()=>{},this._name="mat-button-toggle-group-"+Ate++,this.valueChange=new ye,this.change=new ye,this.appearance=s&&s.appearance?s.appearance:"standard"}ngOnInit(){this._selectionModel=new Zy(this.multiple,void 0,!1)}ngAfterContentInit(){this._selectionModel.select(...this._buttonToggles.filter(e=>e.checked))}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_emitChangeEvent(e){const s=new kte(e,this.value);this._controlValueAccessorChangeFn(s.value),this.change.emit(s)}_syncButtonToggle(e,s,d=!1,f=!1){!this.multiple&&this.selected&&!e.checked&&(this.selected.checked=!1),this._selectionModel?s?this._selectionModel.select(e):this._selectionModel.deselect(e):f=!0,f?Promise.resolve().then(()=>this._updateModelValue(e,d)):this._updateModelValue(e,d)}_isSelected(e){return this._selectionModel&&this._selectionModel.isSelected(e)}_isPrechecked(e){return!(typeof this._rawValue>"u")&&(this.multiple&&Array.isArray(this._rawValue)?this._rawValue.some(s=>null!=e.value&&s===e.value):e.value===this._rawValue)}_setSelectionByValue(e){this._rawValue=e,this._buttonToggles&&(this.multiple&&e?(Array.isArray(e),this._clearSelection(),e.forEach(s=>this._selectValue(s))):(this._clearSelection(),this._selectValue(e)))}_clearSelection(){this._selectionModel.clear(),this._buttonToggles.forEach(e=>e.checked=!1)}_selectValue(e){const s=this._buttonToggles.find(d=>null!=d.value&&d.value===e);s&&(s.checked=!0,this._selectionModel.select(s))}_updateModelValue(e,s){s&&this._emitChangeEvent(e),this.valueChange.emit(this.value)}_markButtonsForCheck(){var e;null===(e=this._buttonToggles)||void 0===e||e.forEach(s=>s._markForCheck())}}return a.\u0275fac=function(e){return new(e||a)(F(Zt),F(Mte,8))},a.\u0275dir=me({type:a,selectors:[["mat-button-toggle-group"]],contentQueries:function(e,s,d){if(1&e&&hn(d,Ite,5),2&e){let f;Ee(f=Oe())&&(s._buttonToggles=f)}},hostAttrs:["role","group",1,"mat-button-toggle-group"],hostVars:5,hostBindings:function(e,s){2&e&&(He("aria-disabled",s.disabled),at("mat-button-toggle-vertical",s.vertical)("mat-button-toggle-group-appearance-standard","standard"===s.appearance))},inputs:{appearance:"appearance",name:"name",vertical:"vertical",value:"value",multiple:"multiple",disabled:"disabled"},outputs:{valueChange:"valueChange",change:"change"},exportAs:["matButtonToggleGroup"],features:[et([rce,{provide:Tte,useExisting:a}])]}),a})();const ace=vc(class{});let Ite=(()=>{class a extends ace{get buttonId(){return`${this.id}-button`}get appearance(){return this.buttonToggleGroup?this.buttonToggleGroup.appearance:this._appearance}set appearance(e){this._appearance=e}get checked(){return this.buttonToggleGroup?this.buttonToggleGroup._isSelected(this):this._checked}set checked(e){const s=We(e);s!==this._checked&&(this._checked=s,this.buttonToggleGroup&&this.buttonToggleGroup._syncButtonToggle(this,this._checked),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled||this.buttonToggleGroup&&this.buttonToggleGroup.disabled}set disabled(e){this._disabled=We(e)}constructor(e,s,d,f,_,w){super(),this._changeDetectorRef=s,this._elementRef=d,this._focusMonitor=f,this._checked=!1,this.ariaLabelledby=null,this._disabled=!1,this.change=new ye;const D=Number(_);this.tabIndex=D||0===D?D:null,this.buttonToggleGroup=e,this.appearance=w&&w.appearance?w.appearance:"standard"}ngOnInit(){const e=this.buttonToggleGroup;this.id=this.id||"mat-button-toggle-"+Ate++,e&&(e._isPrechecked(this)?this.checked=!0:e._isSelected(this)!==this._checked&&e._syncButtonToggle(this,this._checked))}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){const e=this.buttonToggleGroup;this._focusMonitor.stopMonitoring(this._elementRef),e&&e._isSelected(this)&&e._syncButtonToggle(this,!1,!1,!0)}focus(e){this._buttonElement.nativeElement.focus(e)}_onButtonClick(){const e=!!this._isSingleSelector()||!this._checked;e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&(this.buttonToggleGroup._syncButtonToggle(this,this._checked,!0),this.buttonToggleGroup._onTouched())),this.change.emit(new kte(this,this.value))}_markForCheck(){this._changeDetectorRef.markForCheck()}_getButtonName(){return this._isSingleSelector()?this.buttonToggleGroup.name:this.name||null}_isSingleSelector(){return this.buttonToggleGroup&&!this.buttonToggleGroup.multiple}}return a.\u0275fac=function(e){return new(e||a)(F(Tte,8),F(Zt),F(Be),F(Wo),hs("tabindex"),F(Mte,8))},a.\u0275cmp=we({type:a,selectors:[["mat-button-toggle"]],viewQuery:function(e,s){if(1&e&&ot(nce,5),2&e){let d;Ee(d=Oe())&&(s._buttonElement=d.first)}},hostAttrs:["role","presentation",1,"mat-button-toggle"],hostVars:12,hostBindings:function(e,s){1&e&&J("focus",function(){return s.focus()}),2&e&&(He("aria-label",null)("aria-labelledby",null)("id",s.id)("name",null),at("mat-button-toggle-standalone",!s.buttonToggleGroup)("mat-button-toggle-checked",s.checked)("mat-button-toggle-disabled",s.disabled)("mat-button-toggle-appearance-standard","standard"===s.appearance))},inputs:{disableRipple:"disableRipple",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],id:"id",name:"name",value:"value",tabIndex:"tabIndex",appearance:"appearance",checked:"checked",disabled:"disabled"},outputs:{change:"change"},exportAs:["matButtonToggle"],features:[Se],ngContentSelectors:ice,decls:6,vars:9,consts:[["type","button",1,"mat-button-toggle-button","mat-focus-indicator",3,"id","disabled","click"],["button",""],[1,"mat-button-toggle-label-content"],[1,"mat-button-toggle-focus-overlay"],["matRipple","",1,"mat-button-toggle-ripple",3,"matRippleTrigger","matRippleDisabled"]],template:function(e,s){if(1&e&&(Fn(),I(0,"button",0,1),J("click",function(){return s._onButtonClick()}),I(2,"span",2),ht(3),O()(),he(4,"span",3)(5,"span",4)),2&e){const d=on(1);V("id",s.buttonId)("disabled",s.disabled||null),He("tabindex",s.disabled?-1:s.tabIndex)("aria-pressed",s.checked)("name",s._getButtonName())("aria-label",s.ariaLabel)("aria-labelledby",s.ariaLabelledby),N(5),V("matRippleTrigger",d)("matRippleDisabled",s.disableRipple||s.disabled)}},dependencies:[Ur],styles:[".mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;border-radius:2px;-webkit-tap-highlight-color:rgba(0,0,0,0);transform:translateZ(0)}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:4px}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:.04}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.12}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0}.cdk-high-contrast-active .mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 36px;opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}"],encapsulation:2,changeDetection:0}),a})(),oce=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,io,Qt]}),a})();function sce(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Edit rule"),O())}function lce(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New rule"),O())}function cce(a,i){if(1&a&&(I(0,"mat-option",22),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.value," ")}}function dce(a,i){if(1&a&&(I(0,"mat-option",22),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.value," ")}}function uce(a,i){if(1&a&&(I(0,"mat-button-toggle",22),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.value," ")}}function hce(a,i){if(1&a){const e=Pe();I(0,"div",23)(1,"span",24)(2,"uds-translate"),Y(3,"Weekdays"),O()(),I(4,"mat-button-toggle-group",25),J("ngModelChange",function(d){return ae(e),se(q().wDays=d)}),Q(5,uce,2,2,"mat-button-toggle",8),O()()}if(2&a){const e=q();N(4),V("ngModel",e.wDays),N(1),V("ngForOf",e.weekDays)}}function fce(a,i){if(1&a){const e=Pe();I(0,"mat-form-field",9)(1,"mat-label")(2,"uds-translate"),Y(3,"Repeat every"),O()(),I(4,"input",6),J("ngModelChange",function(d){return ae(e),se(q().rule.interval=d)}),O(),I(5,"div",26),Y(6),O()()}if(2&a){const e=q();N(4),V("ngModel",e.rule.interval),N(2),Re("\xa0",e.frequency(),"")}}const F4={DAILY:[django.gettext("day"),django.gettext("days"),django.gettext("Daily")],WEEKLY:[django.gettext("week"),django.gettext("weeks"),django.gettext("Weekly")],MONTHLY:[django.gettext("month"),django.gettext("months"),django.gettext("Monthly")],YEARLY:[django.gettext("year"),django.gettext("years"),django.gettext("Yearly")],WEEKDAYS:["","",django.gettext("Weekdays")]},N4={MINUTES:django.gettext("Minutes"),HOURS:django.gettext("Hours"),DAYS:django.gettext("Days"),WEEKS:django.gettext("Weeks")},Pte=[django.gettext("Sunday"),django.gettext("Monday"),django.gettext("Tuesday"),django.gettext("Wednesday"),django.gettext("Thursday"),django.gettext("Friday"),django.gettext("Saturday")],Rte=(a,i=!1)=>{const e=new Array;for(let s=0;s<7;s++)1&a&&e.push(Pte[s].substr(0,i?100:3)),a>>=1;return e.length?e.join(", "):django.gettext("(no days)")};class kg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.dunits=Object.keys(N4).map(f=>({id:f,value:N4[f]})),this.freqs=Object.keys(F4).map(f=>({id:f,value:F4[f][2]})),this.weekDays=Pte.map((f,_)=>({id:1<<_,value:f.substr(0,3)})),this.FOREVER_STRING=django.gettext("Forever"),this.onSave=new ye(!0),this.startDate=new Date,this.endDate=null,this.startTime="00:00",this.wDays=[],this.rules=d.rules,this.rule={id:void 0,name:"",comments:"",start:null,end:null,frequency:"DAILY",duration:0,duration_unit:"MINUTES",interval:1},d.rule&&(this.rule.id=d.rule.id)}static launch(i,e,s){const d=window.innerWidth<800?"75%":"50%";return i.gui.dialog.open(kg,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{rules:e,rule:s},disableClose:!0}).componentInstance.onSave}static getDateTime(){return 0}ngOnInit(){this.rule.id&&this.rules.get(this.rule.id).then(i=>{if(this.rule=i,this.startDate=new Date(1e3*this.rule.start),this.startTime=this.startDate.toTimeString().split(":").splice(0,2).join(":"),this.endDate=this.rule.end?new Date(1e3*this.rule.end):null,"WEEKDAYS"===this.rule.frequency){const e=[];for(let s=0;s<7;s++)this.rule.interval&1<this.rule.interval+=e),0===this.rule.interval)?django.gettext("Week days"):null}summary(){let i=django.gettext("Invalid or incomplete rule. Please, fix field $FIELD");const e=h5(django.get_format("SHORT_DATE_FORMAT")),s=this.updateRuleData();if(null===s){i=django.gettext("This rule will be valid every"),i+="WEEKDAYS"===this.rule.frequency?" "+Rte(this.rule.interval,!0)+" "+django.gettext("of any week"):" "+ +this.rule.interval+" "+this.frequency();const d=new Date(1e3*this.rule.start);i+=", "+django.gettext("from")+" "+Jm(e,d),i+=this.rule.end?" "+django.gettext("until")+" "+Jm(e,new Date(1e3*this.rule.end)):" "+django.gettext("onwards"),i+=", "+django.gettext("starting at")+" "+d.toTimeString().split(":").slice(0,2).join(":"),i+=+this.rule.duration>0?" "+django.gettext("and every event will be active for")+" "+this.rule.duration+" "+N4[this.rule.duration_unit]:django.gettext("with no duration")}return i.replace("$FIELD",s)}save(){this.rules.save(this.rule).then(()=>{this.dialogRef.close(),this.onSave.emit(!0)})}}function mce(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Rules"),O())}function gce(a,i){if(1&a){const e=Pe();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8)(3,"mat-tab"),Q(4,mce,2,0,"ng-template",9),I(5,"div",10)(6,"uds-table",11),J("newAction",function(d){return ae(e),se(q().onNewRule(d))})("editAction",function(d){return ae(e),se(q().onEditRule(d))})("deleteAction",function(d){return ae(e),se(q().onDeleteRule(d))}),O()()()()()()}if(2&a){const e=q();N(2),V("@.disabled",!0),N(4),V("rest",e.calendarRules)("multiSelect",!0)("allowExport",!0)("onItem",e.processElement)("tableId","calendars-d-rules"+e.calendar.id)("pageSize",e.api.config.admin.page_size)}}kg.\u0275fac=function(i){return new(i||kg)(F(pt),F(Ot),F(Ci),F(Bi))},kg.\u0275cmp=we({type:kg,selectors:[["uds-calendar-rule"]],decls:73,vars:21,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],["matInput","","type","text",3,"ngModel","ngModelChange"],[1,"oneThird"],["matInput","","type","time",3,"ngModel","ngModelChange"],["matInput","","type","number",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[1,"oneHalf"],["matInput","",3,"matDatepicker","ngModel","ngModelChange"],["matSuffix","",3,"for"],["startDatePicker",""],["matInput","",3,"matDatepicker","ngModel","placeholder","ngModelChange"],["endDatePicker",""],[1,"weekdays"],[3,"ngModel","ngModelChange","valueChange"],["class","oneHalf mat-form-field-infix",4,"ngIf"],["class","oneHalf",4,"ngIf"],[1,"info"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"disabled","click"],[3,"value"],[1,"oneHalf","mat-form-field-infix"],[1,"label-weekdays"],["multiple","",3,"ngModel","ngModelChange"],["matSuffix",""]],template:function(i,e){if(1&i&&(I(0,"h4",0),Q(1,sce,2,0,"uds-translate",1),Q(2,lce,2,0,"uds-translate",1),O(),I(3,"mat-dialog-content")(4,"div",2)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Name"),O()(),I(9,"input",3),J("ngModelChange",function(d){return e.rule.name=d}),O()(),I(10,"mat-form-field")(11,"mat-label")(12,"uds-translate"),Y(13,"Comments"),O()(),I(14,"input",3),J("ngModelChange",function(d){return e.rule.comments=d}),O()(),I(15,"h3")(16,"uds-translate"),Y(17,"Event"),O()(),I(18,"mat-form-field",4)(19,"mat-label")(20,"uds-translate"),Y(21,"Start time"),O()(),I(22,"input",5),J("ngModelChange",function(d){return e.startTime=d}),O()(),I(23,"mat-form-field",4)(24,"mat-label")(25,"uds-translate"),Y(26,"Duration"),O()(),I(27,"input",6),J("ngModelChange",function(d){return e.rule.duration=d}),O()(),I(28,"mat-form-field",4)(29,"mat-label")(30,"uds-translate"),Y(31,"Duration units"),O()(),I(32,"mat-select",7),J("ngModelChange",function(d){return e.rule.duration_unit=d}),Q(33,cce,2,2,"mat-option",8),O()(),I(34,"h3"),Y(35," Repetition "),O(),I(36,"mat-form-field",9)(37,"mat-label")(38,"uds-translate"),Y(39," Start date "),O()(),I(40,"input",10),J("ngModelChange",function(d){return e.startDate=d}),O(),he(41,"mat-datepicker-toggle",11)(42,"mat-datepicker",null,12),O(),I(44,"mat-form-field",9)(45,"mat-label")(46,"uds-translate"),Y(47," Repeat until date "),O()(),I(48,"input",13),J("ngModelChange",function(d){return e.endDate=d}),O(),he(49,"mat-datepicker-toggle",11)(50,"mat-datepicker",null,14),O(),I(52,"div",15)(53,"mat-form-field",9)(54,"mat-label")(55,"uds-translate"),Y(56,"Frequency"),O()(),I(57,"mat-select",16),J("ngModelChange",function(d){return e.rule.frequency=d})("valueChange",function(){return e.rule.interval=1}),Q(58,dce,2,2,"mat-option",8),O()(),Q(59,hce,6,2,"div",17),Q(60,fce,7,2,"mat-form-field",18),O(),I(61,"h3")(62,"uds-translate"),Y(63,"Summary"),O()(),I(64,"div",19),Y(65),O()()(),I(66,"mat-dialog-actions")(67,"button",20)(68,"uds-translate"),Y(69,"Cancel"),O()(),I(70,"button",21),J("click",function(){return e.save()}),I(71,"uds-translate"),Y(72,"Ok"),O()()()),2&i){const s=on(43),d=on(51);N(1),V("ngIf",e.rule.id),N(1),V("ngIf",!e.rule.id),N(7),V("ngModel",e.rule.name),N(5),V("ngModel",e.rule.comments),N(8),V("ngModel",e.startTime),N(5),V("ngModel",e.rule.duration),N(5),V("ngModel",e.rule.duration_unit),N(1),V("ngForOf",e.dunits),N(7),V("matDatepicker",s)("ngModel",e.startDate),N(1),V("for",s),N(7),V("matDatepicker",d)("ngModel",e.endDate)("placeholder",e.FOREVER_STRING),N(1),V("for",d),N(8),V("ngModel",e.rule.frequency),N(1),V("ngForOf",e.freqs),N(1),V("ngIf","WEEKDAYS"===e.rule.frequency),N(1),V("ngIf","WEEKDAYS"!==e.rule.frequency),N(5),Re(" ",e.summary()," "),N(5),V("disabled",null!==e.updateRuleData()||""===e.rule.name)}},dependencies:[oi,zt,rr,xd,Qn,Yn,pi,qo,nr,ir,Kn,ei,vi,pg,wa,ya,$i,Cte,L4,Ste,Ete,Ite,xn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]:not(.oneThird):not(.oneHalf){width:100%}.mat-mdc-form-field.oneThird[_ngcontent-%COMP%]{width:31%;margin-right:2%}.mat-mdc-form-field.oneHalf[_ngcontent-%COMP%]{width:48%;margin-right:2%}h3[_ngcontent-%COMP%]{width:100%;margin-top:.3rem;margin-bottom:1rem}.weekdays[_ngcontent-%COMP%]{width:100%;display:flex;align-items:flex-end}.label-weekdays[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}.mat-datepicker-toggle[_ngcontent-%COMP%]{color:#00f}.mat-button-toggle-checked[_ngcontent-%COMP%]{background-color:#23238580;color:#fff}"]});const vce=function(a){return["/pools","calendars",a]};class MP{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.calendarRules={}}ngOnInit(){const i=this.route.snapshot.paramMap.get("calendar");i&&this.rest.calendars.get(i).then(e=>{this.calendar=e,this.calendarRules=this.rest.calendars.detail(e.id,"rules")})}onNewRule(i){kg.launch(this.api,this.calendarRules).subscribe(()=>i.table.overview())}onEditRule(i){kg.launch(this.api,this.calendarRules,i.table.selection.selected[0]).subscribe(()=>i.table.overview())}onDeleteRule(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete calendar rule"))}processElement(i){var a;(a=i).interval="WEEKDAYS"===a.frequency?Rte(a.interval):a.interval+" "+F4[a.frequency][django.pluralidx(a.interval)],a.duration=a.duration+" "+N4[a.duration_unit]}}MP.\u0275fac=function(i){return new(i||MP)(F(xi),F(Ot),F(pt))},MP.\u0275cmp=we({type:MP,selectors:[["uds-calendars-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary"],["mat-tab-label",""],[1,"content"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","pageSize","newAction","editAction","deleteAction"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),he(6,"img",4),Y(7),O(),Q(8,gce,7,7,"div",5),O()),2&i&&(N(2),V("routerLink",su(4,vce,e.calendar?e.calendar.id:"")),N(4),V("src",e.api.staticURL("admin/img/icons/calendars.png"),tn),N(1),Re(" ",null==e.calendar?null:e.calendar.name," "),N(1),V("ngIf",e.calendar))},dependencies:[zt,jo,Qo,Gs,xl,xn,mi],styles:[".mat-column-start, .mat-column-end{max-width:9rem} .mat-column-frequency{max-width:9rem} .mat-column-interval, .mat-column-duration{max-width:11rem}"]});const _ce='event'+django.gettext("Set time mark")+"";class eS{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.cButtons=[{id:"timemark",html:_ce,type:Jn.SINGLE_SELECT}]}get customButtons(){return this.api.user.isAdmin?this.cButtons:[]}ngOnInit(){}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New account"))}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit account"))}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete account"))}onTimeMark(i){const e=i.table.selection.selected[0];this.api.gui.questionDialog(django.gettext("Time mark"),django.gettext("Set time mark for $NAME to current date/time?").replace("$NAME",e.name)).then(s=>{s&&this.rest.accounts.timemark(e.id).then(()=>{this.api.gui.snackbar.open(django.gettext("Time mark stablished"),django.gettext("dismiss"),{duration:2e3}),i.table.overview()})})}onDetail(i){this.api.navigation.gotoAccountDetail(i.param.id)}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("account"))}processElement(i){i.time_mark=78793200===i.time_mark?django.gettext("No time mark"):zs("SHORT_DATE_FORMAT",i.time_mark)}}function yce(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Account usage"),O())}function bce(a,i){if(1&a){const e=Pe();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8)(3,"mat-tab"),Q(4,yce,2,0,"ng-template",9),I(5,"div",10)(6,"uds-table",11),J("deleteAction",function(d){return ae(e),se(q().onDeleteUsage(d))}),O()()()()()()}if(2&a){const e=q();N(2),V("@.disabled",!0),N(4),V("rest",e.accountUsage)("multiSelect",!0)("allowExport",!0)("onItem",e.processElement)("tableId","account-d-usage"+e.account.id)}}eS.\u0275fac=function(i){return new(i||eS)(F(xi),F(Ot),F(pt))},eS.\u0275cmp=we({type:eS,selectors:[["uds-accounts"]],decls:1,vars:7,consts:[["icon","accounts",3,"rest","multiSelect","allowExport","hasPermissions","customButtons","pageSize","onItem","customButtonAction","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(i,e){1&i&&(I(0,"uds-table",0),J("customButtonAction",function(d){return e.onTimeMark(d)})("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("detailAction",function(d){return e.onDetail(d)})("loaded",function(d){return e.onLoad(d)}),O()),2&i&&V("rest",e.rest.accounts)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)("onItem",e.processElement)},dependencies:[mi]});const wce=function(a){return["/pools","accounts",a]};class TP{constructor(i,e,s){this.route=i,this.rest=e,this.api=s,this.accountUsage={}}ngOnInit(){const i=this.route.snapshot.paramMap.get("account");i&&this.rest.accounts.get(i).then(e=>{this.account=e,this.accountUsage=this.rest.accounts.detail(e.id,"usage")})}onDeleteUsage(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete account usage"))}processElement(i){i.running=this.api.boolAsHumanString(i.running)}}function xce(a,i){1&a&&(I(0,"uds-translate"),Y(1,"New image for"),O())}function Cce(a,i){1&a&&(I(0,"uds-translate"),Y(1,"Edit for"),O())}TP.\u0275fac=function(i){return new(i||TP)(F(xi),F(Ot),F(pt))},TP.\u0275cmp=we({type:TP,selectors:[["uds-accounts-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary"],["mat-tab-label",""],[1,"content"],["icon","accounts",3,"rest","multiSelect","allowExport","onItem","tableId","deleteAction"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),he(6,"img",4),Y(7),O(),Q(8,bce,7,6,"div",5),O()),2&i&&(N(2),V("routerLink",su(4,wce,e.account?e.account.id:"")),N(4),V("src",e.api.staticURL("admin/img/icons/accounts.png"),tn),N(1),Re(" ",null==e.account?null:e.account.name," "),N(1),V("ngIf",e.account))},dependencies:[zt,jo,Qo,Gs,xl,xn,mi]});class Eg{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.onSave=new ye(!0),this.preview="",this.image={id:void 0,data:"",name:""},d.image&&(this.image.id=d.image.id)}static launch(i,e=null){const s=window.innerWidth<800?"60%":"40%";return i.gui.dialog.open(Eg,{width:s,position:{top:window.innerWidth<800?"0px":"7rem"},data:{image:e},disableClose:!0}).componentInstance.onSave}onFileChanged(i){const e=i.target;if(!e.files||0===e.files.length)return;const s=e.files[0];if(s.size>262144)return void this.api.gui.alert(django.gettext("Error"),django.gettext("Image is too big (max. upload size is 256Kb)"));if(!["image/jpeg","image/png","image/gif"].includes(s.type))return void this.api.gui.alert(django.gettext("Error"),django.gettext("Invalid image type (only supports JPEG, PNG and GIF"));const d=new FileReader;d.onload=f=>{const _=d.result;this.preview=_,this.image.data=_.substr(_.indexOf("base64,")+7),this.image.name||(this.image.name=s.name)},d.readAsDataURL(s)}ngOnInit(){this.image.id&&this.rest.gallery.get(this.image.id).then(i=>{switch(this.image=i,this.image.data.substr(2)){case"iV":this.preview="data:image/png;base64,"+this.image.data;break;case"/9":this.preview="data:image/jpeg;base64,"+this.image.data;break;default:this.preview="data:image/gif;base64,"+this.image.data}})}background(){const i=this.api.config.image_size[0],e=this.api.config.image_size[1],s={"width.px":i,"height.px":e,"background-size":i+"px "+e+"px","background-image":"none"};return this.preview&&(s["background-image"]="url("+this.preview+")"),s}save(){this.image.name&&this.image.data?this.rest.gallery.save(this.image).then(()=>{this.api.gui.snackbar.open(django.gettext("Successfully saved"),django.gettext("dismiss"),{duration:2e3}),this.dialogRef.close(),this.onSave.emit(!0)}):this.api.gui.alert(django.gettext("Error"),django.gettext("Please, provide a name and a image"))}}Eg.\u0275fac=function(i){return new(i||Eg)(F(pt),F(Ot),F(Ci),F(Bi))},Eg.\u0275cmp=we({type:Eg,selectors:[["uds-gallery-image"]],decls:32,vars:7,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],["matInput","","type","text",3,"ngModel","ngModelChange"],["type","file",2,"display","none",3,"change"],["fileInput",""],["matInput","","type","text",3,"hidden","click"],[1,"preview",3,"click"],[1,"image-preview",3,"ngStyle"],[1,"help"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"]],template:function(i,e){if(1&i){const s=Pe();I(0,"h4",0),Q(1,xce,2,0,"uds-translate",1),Q(2,Cce,2,0,"uds-translate",1),O(),I(3,"mat-dialog-content")(4,"div",2)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Image name"),O()(),I(9,"input",3),J("ngModelChange",function(f){return e.image.name=f}),O()(),I(10,"input",4,5),J("change",function(f){return e.onFileChanged(f)}),O(),I(12,"mat-form-field")(13,"mat-label")(14,"uds-translate"),Y(15,"Image (click to change)"),O()(),I(16,"input",6),J("click",function(){return ae(s),se(on(11).click())}),O(),I(17,"div",7),J("click",function(){return ae(s),se(on(11).click())}),he(18,"div",8),O()(),I(19,"div",9)(20,"uds-translate"),Y(21,' For optimal results, use "squared" images. '),O(),I(22,"uds-translate"),Y(23," The image will be resized on upload to "),O(),Y(24),O()()(),I(25,"mat-dialog-actions")(26,"button",10)(27,"uds-translate"),Y(28,"Cancel"),O()(),I(29,"button",11),J("click",function(){return e.save()}),I(30,"uds-translate"),Y(31,"Ok"),O()()()}2&i&&(N(1),V("ngIf",!e.image.id),N(1),V("ngIf",e.image.id),N(7),V("ngModel",e.image.name),N(7),V("hidden",!0),N(2),V("ngStyle",e.background()),N(6),Oi(" ",e.api.config.image_size[0],"x",e.api.config.image_size[1]," "))},dependencies:[zt,Rs,rr,Qn,Yn,pi,qo,nr,ir,Kn,ei,vi,wa,xn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.preview[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;width:100%}.image-preview[_ngcontent-%COMP%]{background-color:#0000004d}"]});class tS{constructor(i,e,s){this.route=i,this.rest=e,this.api=s}ngOnInit(){}onNew(i){Eg.launch(this.api).subscribe(()=>i.table.overview())}onEdit(i){Eg.launch(this.api,i.table.selection.selected[0]).subscribe(()=>i.table.overview())}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete image"))}onLoad(i){!0===i.param&&i.table.selectElement("id",this.route.snapshot.paramMap.get("image"))}}tS.\u0275fac=function(i){return new(i||tS)(F(xi),F(Ot),F(pt))},tS.\u0275cmp=we({type:tS,selectors:[["uds-gallery"]],decls:1,vars:5,consts:[["icon","gallery",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(i,e){1&i&&(I(0,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)})("loaded",function(d){return e.onLoad(d)}),O()),2&i&&V("rest",e.rest.gallery)("multiSelect",!0)("allowExport",!0)("hasPermissions",!1)("pageSize",e.api.config.admin.page_size)},dependencies:[mi],styles:[".mat-column-thumb{max-width:7rem;justify-content:center} .mat-column-name{max-width:32rem}"]});const Sce='assessment'+django.gettext("Generate report")+"";class AP{constructor(i,e){this.rest=i,this.api=e,this.customButtons=[{id:"genreport",html:Sce,type:Jn.SINGLE_SELECT}]}ngOnInit(){}generateReport(i){var e=this;return Xe(function*(){const s=new wl;e.api.gui.forms.typedForm(i,django.gettext("Generate report"),!1,[],void 0,i.table.selection.selected[0].id,{save:s});const d=yield s;e.api.gui.snackbar.open(django.gettext("Generating report..."));const f=yield e.rest.reports.save(d,i.table.selection.selected[0].id),_=f.encoded?window.atob(f.data):f.data,w=_.length,D=new Uint8Array(w);for(let P=0;P{(0,Uq.saveAs)(k,f.filename)})})()}}AP.\u0275fac=function(i){return new(i||AP)(F(Ot),F(pt))},AP.\u0275cmp=we({type:AP,selectors:[["uds-reports"]],decls:1,vars:6,consts:[["icon","reports",3,"rest","multiSelect","allowExport","hasPermissions","customButtons","pageSize","customButtonAction"]],template:function(i,e){1&i&&(I(0,"uds-table",0),J("customButtonAction",function(d){return e.generateReport(d)}),O()),2&i&&V("rest",e.rest.reports)("multiSelect",!1)("allowExport",!1)("hasPermissions",!1)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)},dependencies:[mi],styles:[".mat-column-group{max-width:16rem} .mat-column-name{max-width:32rem}"]});class kP{constructor(i,e){this.api=i,this.rest=e}ngOnInit(){}onNew(i){this.api.gui.forms.typedNewForm(i,django.gettext("New Notifier"),!1)}onEdit(i){this.api.gui.forms.typedEditForm(i,django.gettext("Edit Notifier"),!1)}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete actor token - USE WITH EXTREME CAUTION!!!"))}}function Dce(a,i){1&a&&Y(0),2&a&&Re(" ",q().$implicit," ")}function Mce(a,i){if(1&a){const e=Pe();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",18),J("ngModelChange",function(d){ae(e);const f=q(2).$implicit,_=q().$implicit;return se(q(2).config[_][f].value=d)}),O()()()}if(2&a){const e=q(2).$implicit,s=q().$implicit,d=q(2);N(3),In(e),N(1),V("type",d.config[s][e].crypt?"password":"text")("ngModel",d.config[s][e].value)("matTooltip",d.config[s][e].help)}}function Tce(a,i){if(1&a){const e=Pe();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"textarea",19),J("ngModelChange",function(d){ae(e);const f=q(2).$implicit,_=q().$implicit;return se(q(2).config[_][f].value=d)}),O()()()}if(2&a){const e=q(2).$implicit,s=q().$implicit,d=q(2);N(3),In(e),N(1),V("ngModel",d.config[s][e].value)("matTooltip",d.config[s][e].help)}}function Ace(a,i){if(1&a){const e=Pe();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",20),J("ngModelChange",function(d){ae(e);const f=q(2).$implicit,_=q().$implicit;return se(q(2).config[_][f].value=d)}),O()()()}if(2&a){const e=q(2).$implicit,s=q().$implicit,d=q(2);N(3),In(e),N(1),V("ngModel",d.config[s][e].value)("matTooltip",d.config[s][e].help)}}function kce(a,i){if(1&a){const e=Pe();I(0,"div")(1,"div",21)(2,"mat-slide-toggle",22),J("ngModelChange",function(d){ae(e);const f=q(2).$implicit,_=q().$implicit;return se(q(2).config[_][f].value=d)}),Y(3),O()()()}if(2&a){const e=q(2).$implicit,s=q().$implicit,d=q(2);N(2),V("ngModel",d.config[s][e].value)("matTooltip",d.config[s][e].help),N(1),Re(" ",e," ")}}function Ece(a,i){if(1&a&&(I(0,"mat-option",24),Y(1),O()),2&a){const e=i.$implicit;V("value",e),N(1),Re(" ",e," ")}}function Ice(a,i){if(1&a){const e=Pe();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"mat-select",22),J("ngModelChange",function(d){ae(e);const f=q(2).$implicit,_=q().$implicit;return se(q(2).config[_][f].value=d)}),Q(5,Ece,2,2,"mat-option",23),O()()()}if(2&a){const e=q(2).$implicit,s=q().$implicit,d=q(2);N(3),Re(" ",e," "),N(1),V("ngModel",d.config[s][e].value)("matTooltip",d.config[s][e].help),N(1),V("ngForOf",d.config[s][e].params)}}function Pce(a,i){if(1&a){const e=Pe();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",25),J("ngModelChange",function(d){ae(e);const f=q(2).$implicit,_=q().$implicit;return se(q(2).config[_][f].value=d)}),O()()()}if(2&a){const e=q(2).$implicit,s=q().$implicit,d=q(2);N(3),In(e),N(1),V("ngModel",d.config[s][e].value)("matTooltip",d.config[s][e].help)}}function Rce(a,i){1&a&&mo(0)}function Oce(a,i){if(1&a){const e=Pe();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",26),J("ngModelChange",function(d){ae(e);const f=q(2).$implicit,_=q().$implicit;return se(q(2).config[_][f].value=d)}),O()()()}if(2&a){const e=q(2).$implicit,s=q().$implicit,d=q(2);N(3),In(e),N(1),V("ngModel",d.config[s][e].value)("matTooltip",d.config[s][e].help)}}function Lce(a,i){if(1&a&&(gn(0,15),Q(1,Mce,5,4,"div",16),Q(2,Tce,5,3,"div",16),Q(3,Ace,5,3,"div",16),Q(4,kce,4,3,"div",16),Q(5,Ice,6,4,"div",16),Q(6,Pce,5,3,"div",16),Q(7,Rce,1,0,"ng-container",16),Q(8,Oce,5,3,"div",17),vn()),2&a){const e=q().$implicit,s=q().$implicit;V("ngSwitch",q(2).config[s][e].type),N(1),V("ngSwitchCase",0),N(1),V("ngSwitchCase",1),N(1),V("ngSwitchCase",2),N(1),V("ngSwitchCase",3),N(1),V("ngSwitchCase",4),N(1),V("ngSwitchCase",5),N(1),V("ngSwitchCase",6)}}function Fce(a,i){if(1&a&&(I(0,"div",13),Q(1,Lce,9,8,"ng-container",14),O()),2&a){const e=i.$implicit,s=q().$implicit,d=q(2);N(1),V("ngIf",d.config[s][e])}}function Nce(a,i){if(1&a&&(I(0,"mat-tab"),Q(1,Dce,1,1,"ng-template",10),I(2,"div",11),Q(3,Fce,2,1,"div",12),O()()),2&a){const e=i.$implicit,s=q(2);N(3),V("ngForOf",s.configElements(e))}}function Bce(a,i){if(1&a){const e=Pe();I(0,"div",4)(1,"div",5)(2,"mat-tab-group",6),Q(3,Nce,4,1,"mat-tab",7),O(),I(4,"div",8)(5,"button",9),J("click",function(){return ae(e),se(q().save())}),I(6,"uds-translate"),Y(7,"Save"),O()()()()()}if(2&a){const e=q();N(2),V("@.disabled",!0),N(1),V("ngForOf",e.sections())}}kP.\u0275fac=function(i){return new(i||kP)(F(pt),F(Ot))},kP.\u0275cmp=we({type:kP,selectors:[["uds-notifiers"]],decls:2,vars:4,consts:[["icon","accounts",3,"rest","multiSelect","allowExport","pageSize","newAction","editAction","deleteAction"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("newAction",function(d){return e.onNew(d)})("editAction",function(d){return e.onEdit(d)})("deleteAction",function(d){return e.onDelete(d)}),O()()),2&i&&(N(1),V("rest",e.rest.notifiers)("multiSelect",!0)("allowExport",!0)("pageSize",e.api.config.admin.page_size))},dependencies:[mi]});const Ote=["UDS","Security"],Lte=["UDS ID"];class EP{constructor(i,e){this.rest=i,this.api=e}ngOnInit(){this.rest.configuration.overview().then(i=>{this.config=i;for(const e in this.config)if(this.config.hasOwnProperty(e))for(const s in this.config[e])if(this.config[e].hasOwnProperty(s)){const d=this.config[e][s];d.crypt?d.value='\u20acfa{}#42123~#||23|\xdf\xf0\u0111\xe6"':3===d.type&&(d.value=!!["1",1,!0].includes(d.value)),d.original_value=d.value}})}sections(){let i=[];for(const e in this.config)this.config.hasOwnProperty(e)&&!Ote.includes(e)&&i.push(e);return i=i.sort((e,s)=>e.localeCompare(s)),i.unshift.apply(i,Ote),i}configElements(i){let e=[];const s=this.config[i];if(s)for(const d in s)s.hasOwnProperty(d)&&("UDS"!==i||!Lte.includes(d))&&e.push(d);return e=e.sort((d,f)=>d.localeCompare(f)),"UDS"===i&&e.unshift.apply(e,Lte),e}save(){const i={};for(const e in this.config)if(this.config.hasOwnProperty(e))for(const s in this.config[e])if(this.config[e].hasOwnProperty(s)){const d=this.config[e][s];if(d.original_value!==d.value){d.original_value=d.value,i[e]||(i[e]={});let f=d.value;3===d.type&&(f=["1",1,!0].includes(d.value)?"1":"0"),i[e][s]={value:f}}}this.rest.configuration.save(i).then(()=>{this.api.gui.snackbar.open(django.gettext("Configuration saved"),django.gettext("dismiss"),{duration:2e3})})}}EP.\u0275fac=function(i){return new(i||EP)(F(Ot),F(pt))},EP.\u0275cmp=we({type:EP,selectors:[["uds-configuration"]],decls:7,vars:2,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary"],[4,"ngFor","ngForOf"],[1,"config-footer"],["mat-raised-button","","color","primary",3,"click"],["mat-tab-label",""],[1,"content"],["class","field",4,"ngFor","ngForOf"],[1,"field"],[3,"ngSwitch",4,"ngIf"],[3,"ngSwitch"],[4,"ngSwitchCase"],[4,"ngSwitchDefault"],["matInput","",3,"type","ngModel","matTooltip","ngModelChange"],["matInput","",3,"ngModel","matTooltip","ngModelChange"],["matInput","","type","number",3,"ngModel","matTooltip","ngModelChange"],[1,"toggle"],[3,"ngModel","matTooltip","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],["matInput","","type","text","readonly","readonly",3,"ngModel","matTooltip","ngModelChange"],["matInput","","type","text",3,"ngModel","matTooltip","ngModelChange"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"div",1),he(2,"img",2),Y(3,"\xa0"),I(4,"uds-translate"),Y(5,"UDS Configuration"),O()(),Q(6,Bce,8,2,"div",3),O()),2&i&&(N(2),V("src",e.api.staticURL("admin/img/icons/configuration.png"),tn),N(4),V("ngIf",e.config))},dependencies:[oi,zt,id,oc,gx,rr,xd,Qn,Yn,pi,Jy,ei,vi,wa,ya,$i,Qo,Gs,xl,wP,xn],styles:[".content[_ngcontent-%COMP%]{margin-top:2rem}.field[_ngcontent-%COMP%]{display:flex;justify-content:center;width:100%}.field[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:50%}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}input[readonly][_ngcontent-%COMP%]{background-color:#e0e0e0}.slider-label[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}.config-footer[_ngcontent-%COMP%]{display:flex;justify-content:center;width:100%;margin-top:2rem;margin-bottom:2rem}"]});class IP{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){}onDelete(i){var e=this;return Xe(function*(){yield e.api.gui.forms.deleteForm(i,django.gettext("Delete actor token - USE WITH EXTREME CAUTION!!!"))})()}}IP.\u0275fac=function(i){return new(i||IP)(F(pt),F(xi),F(Ot))},IP.\u0275cmp=we({type:IP,selectors:[["uds-actor-tokens"]],decls:2,vars:4,consts:[["icon","accounts",3,"rest","multiSelect","allowExport","pageSize","deleteAction"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("deleteAction",function(d){return e.onDelete(d)}),O()()),2&i&&(N(1),V("rest",e.rest.actorToken)("multiSelect",!0)("allowExport",!0)("pageSize",e.api.config.admin.page_size))},dependencies:[mi]});class PP{constructor(i,e,s){this.api=i,this.route=e,this.rest=s}ngOnInit(){}onDelete(i){this.api.gui.forms.deleteForm(i,django.gettext("Delete tunnel token - USE WITH EXTREME CAUTION!!!"))}}PP.\u0275fac=function(i){return new(i||PP)(F(pt),F(xi),F(Ot))},PP.\u0275cmp=we({type:PP,selectors:[["uds-tunnel-tokens"]],decls:2,vars:4,consts:[["icon","proxy",3,"rest","multiSelect","allowExport","pageSize","deleteAction"]],template:function(i,e){1&i&&(I(0,"div")(1,"uds-table",0),J("deleteAction",function(d){return e.onDelete(d)}),O()()),2&i&&(N(1),V("rest",e.rest.tunnelToken)("multiSelect",!0)("allowExport",!0)("pageSize",e.api.config.admin.page_size))},dependencies:[mi]});const Vce=[{path:"",canActivate:[ug],children:[{path:"",redirectTo:"summary",pathMatch:"full"},{path:"summary",component:Xy},{path:"providers",component:G1},{path:"providers/:provider/detail",component:U1},{path:"providers/:provider",component:G1},{path:"providers/:provider/detail/:service",component:U1},{path:"authenticators",component:j1},{path:"authenticators/:authenticator/detail",component:cb},{path:"authenticators/:authenticator",component:j1},{path:"authenticators/:authenticator/detail/groups/:group",component:cb},{path:"authenticators/:authenticator/detail/users/:user",component:cb},{path:"mfas",component:$1},{path:"mfas/:mfa",component:$1},{path:"osmanagers",component:W1},{path:"osmanagers/:osmanager",component:W1},{path:"transports",component:Y1},{path:"transports/:transport",component:Y1},{path:"networks",component:q1},{path:"networks/:network",component:q1},{path:"pools/service-pools",component:X1},{path:"pools/service-pools/:pool",component:X1},{path:"pools/service-pools/:pool/detail",component:Qf},{path:"pools/meta-pools",component:Z1},{path:"pools/meta-pools/:metapool",component:Z1},{path:"pools/meta-pools/:metapool/detail",component:CP},{path:"pools/pool-groups",component:K1},{path:"pools/pool-groups/:poolgroup",component:K1},{path:"pools/calendars",component:Q1},{path:"pools/calendars/:calendar",component:Q1},{path:"pools/calendars/:calendar/detail",component:MP},{path:"pools/accounts",component:eS},{path:"pools/accounts/:account",component:eS},{path:"pools/accounts/:account/detail",component:TP},{path:"tools/gallery",component:tS},{path:"tools/gallery/:image",component:tS},{path:"tools/reports",component:AP},{path:"tools/notifiers",component:kP},{path:"tools/tokens/actor",component:IP},{path:"tools/tokens/tunnel",component:PP},{path:"tools/configuration",component:EP}]},{path:"**",redirectTo:"summary"}];class nS{}function Fte(a){return new Ce(3e3,!1)}function bde(){return typeof window<"u"&&typeof window.document<"u"}function iX(){return typeof process<"u"&&"[object process]"==={}.toString.call(process)}function Ig(a){switch(a.length){case 0:return new Qm;case 1:return a[0];default:return new q3(a)}}function Nte(a,i,e,s,d=new Map,f=new Map){const _=[],w=[];let D=-1,k=null;if(s.forEach(P=>{const z=P.get("offset"),W=z==D,Z=W&&k||new Map;P.forEach((te,re)=>{let fe=re,pe=te;if("offset"!==re)switch(fe=i.normalizePropertyName(fe,_),pe){case"!":pe=d.get(re);break;case _d:pe=f.get(re);break;default:pe=i.normalizeStyleValue(re,fe,pe,_)}Z.set(fe,pe)}),W||w.push(Z),k=Z,D=z}),_.length)throw function lde(a){return new Ce(3502,!1)}();return w}function rX(a,i,e,s){switch(i){case"start":a.onStart(()=>s(e&&aX(e,"start",a)));break;case"done":a.onDone(()=>s(e&&aX(e,"done",a)));break;case"destroy":a.onDestroy(()=>s(e&&aX(e,"destroy",a)))}}function aX(a,i,e){const f=oX(a.element,a.triggerName,a.fromState,a.toState,i||a.phaseName,e.totalTime??a.totalTime,!!e.disabled),_=a._data;return null!=_&&(f._data=_),f}function oX(a,i,e,s,d="",f=0,_){return{element:a,triggerName:i,fromState:e,toState:s,phaseName:d,totalTime:f,disabled:!!_}}function Tl(a,i,e){let s=a.get(i);return s||a.set(i,s=e),s}function Bte(a){const i=a.indexOf(":");return[a.substring(1,i),a.slice(i+1)]}nS.\u0275fac=function(i){return new(i||nS)},nS.\u0275mod=dt({type:nS}),nS.\u0275inj=st({imports:[pV.forRoot(Vce,{}),pV]});let sX=(a,i)=>!1,Vte=(a,i,e)=>[],zte=null;function lX(a){const i=a.parentNode||a.host;return i===zte?null:i}(iX()||typeof Element<"u")&&(bde()?(zte=(()=>document.documentElement)(),sX=(a,i)=>{for(;i;){if(i===a)return!0;i=lX(i)}return!1}):sX=(a,i)=>a.contains(i),Vte=(a,i,e)=>{if(e)return Array.from(a.querySelectorAll(i));const s=a.querySelector(i);return s?[s]:[]});let pb=null,Hte=!1;const Gte=sX,Ute=Vte;let jte=(()=>{class a{validateStyleProperty(e){return function xde(a){pb||(pb=function Cde(){return typeof document<"u"?document.body:null}()||{},Hte=!!pb.style&&"WebkitAppearance"in pb.style);let i=!0;return pb.style&&!function wde(a){return"ebkit"==a.substring(1,6)}(a)&&(i=a in pb.style,!i&&Hte&&(i="Webkit"+a.charAt(0).toUpperCase()+a.slice(1)in pb.style)),i}(e)}matchesElement(e,s){return!1}containsElement(e,s){return Gte(e,s)}getParentElement(e){return lX(e)}query(e,s,d){return Ute(e,s,d)}computeStyle(e,s,d){return d||""}animate(e,s,d,f,_,w=[],D){return new Qm(d,f)}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})(),cX=(()=>{class a{}return a.NOOP=new jte,a})();const dX="ng-enter",B4="ng-leave",V4="ng-trigger",z4=".ng-trigger",Wte="ng-animating",uX=".ng-animating";function Jf(a){if("number"==typeof a)return a;const i=a.match(/^(-?[\.\d]+)(m?s)/);return!i||i.length<2?0:hX(parseFloat(i[1]),i[2])}function hX(a,i){return"s"===i?1e3*a:a}function H4(a,i,e){return a.hasOwnProperty("duration")?a:function Mde(a,i,e){let d,f=0,_="";if("string"==typeof a){const w=a.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===w)return i.push(Fte()),{duration:0,delay:0,easing:""};d=hX(parseFloat(w[1]),w[2]);const D=w[3];null!=D&&(f=hX(parseFloat(D),w[4]));const k=w[5];k&&(_=k)}else d=a;if(!e){let w=!1,D=i.length;d<0&&(i.push(function zce(){return new Ce(3100,!1)}()),w=!0),f<0&&(i.push(function Hce(){return new Ce(3101,!1)}()),w=!0),w&&i.splice(D,0,Fte())}return{duration:d,delay:f,easing:_}}(a,i,e)}function RP(a,i={}){return Object.keys(a).forEach(e=>{i[e]=a[e]}),i}function Yte(a){const i=new Map;return Object.keys(a).forEach(e=>{i.set(e,a[e])}),i}function Pg(a,i=new Map,e){if(e)for(let[s,d]of e)i.set(s,d);for(let[s,d]of a)i.set(s,d);return i}function Xte(a,i,e){return e?i+":"+e+";":""}function Zte(a){let i="";for(let e=0;e{const f=pX(d);e&&!e.has(d)&&e.set(d,a.style[f]),a.style[f]=s}),iX()&&Zte(a))}function mb(a,i){a.style&&(i.forEach((e,s)=>{const d=pX(s);a.style[d]=""}),iX()&&Zte(a))}function OP(a){return Array.isArray(a)?1==a.length?a[0]:W3(a):a}const fX=new RegExp("{{\\s*(.+?)\\s*}}","g");function Kte(a){let i=[];if("string"==typeof a){let e;for(;e=fX.exec(a);)i.push(e[1]);fX.lastIndex=0}return i}function LP(a,i,e){const s=a.toString(),d=s.replace(fX,(f,_)=>{let w=i[_];return null==w&&(e.push(function Uce(a){return new Ce(3003,!1)}()),w=""),w.toString()});return d==s?a:d}function G4(a){const i=[];let e=a.next();for(;!e.done;)i.push(e.value),e=a.next();return i}const kde=/-+([a-z0-9])/g;function pX(a){return a.replace(kde,(...i)=>i[1].toUpperCase())}function Ede(a){return a.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function Al(a,i,e){switch(i.type){case 7:return a.visitTrigger(i,e);case 0:return a.visitState(i,e);case 1:return a.visitTransition(i,e);case 2:return a.visitSequence(i,e);case 3:return a.visitGroup(i,e);case 4:return a.visitAnimate(i,e);case 5:return a.visitKeyframes(i,e);case 6:return a.visitStyle(i,e);case 8:return a.visitReference(i,e);case 9:return a.visitAnimateChild(i,e);case 10:return a.visitAnimateRef(i,e);case 11:return a.visitQuery(i,e);case 12:return a.visitStagger(i,e);default:throw function jce(a){return new Ce(3004,!1)}()}}function Qte(a,i){return window.getComputedStyle(a)[i]}function Fde(a,i){const e=[];return"string"==typeof a?a.split(/\s*,\s*/).forEach(s=>function Nde(a,i,e){if(":"==a[0]){const D=function Bde(a,i){switch(a){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,s)=>parseFloat(s)>parseFloat(e);case":decrement":return(e,s)=>parseFloat(s) *"}}(a,e);if("function"==typeof D)return void i.push(D);a=D}const s=a.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==s||s.length<4)return e.push(function ide(a){return new Ce(3015,!1)}()),i;const d=s[1],f=s[2],_=s[3];i.push(Jte(d,_));"<"==f[0]&&!("*"==d&&"*"==_)&&i.push(Jte(_,d))}(s,e,i)):e.push(a),e}const W4=new Set(["true","1"]),Y4=new Set(["false","0"]);function Jte(a,i){const e=W4.has(a)||Y4.has(a),s=W4.has(i)||Y4.has(i);return(d,f)=>{let _="*"==a||a==d,w="*"==i||i==f;return!_&&e&&"boolean"==typeof d&&(_=d?W4.has(a):Y4.has(a)),!w&&s&&"boolean"==typeof f&&(w=f?W4.has(i):Y4.has(i)),_&&w}}const Vde=new RegExp("s*:selfs*,?","g");function mX(a,i,e,s){return new zde(a).build(i,e,s)}class zde{constructor(i){this._driver=i}build(i,e,s){const d=new Ude(e);return this._resetContextStyleTimingState(d),Al(this,OP(i),d)}_resetContextStyleTimingState(i){i.currentQuerySelector="",i.collectedStyles=new Map,i.collectedStyles.set("",new Map),i.currentTime=0}visitTrigger(i,e){let s=e.queryCount=0,d=e.depCount=0;const f=[],_=[];return"@"==i.name.charAt(0)&&e.errors.push(function Wce(){return new Ce(3006,!1)}()),i.definitions.forEach(w=>{if(this._resetContextStyleTimingState(e),0==w.type){const D=w,k=D.name;k.toString().split(/\s*,\s*/).forEach(P=>{D.name=P,f.push(this.visitState(D,e))}),D.name=k}else if(1==w.type){const D=this.visitTransition(w,e);s+=D.queryCount,d+=D.depCount,_.push(D)}else e.errors.push(function Yce(){return new Ce(3007,!1)}())}),{type:7,name:i.name,states:f,transitions:_,queryCount:s,depCount:d,options:null}}visitState(i,e){const s=this.visitStyle(i.styles,e),d=i.options&&i.options.params||null;if(s.containsDynamicStyles){const f=new Set,_=d||{};s.styles.forEach(w=>{w instanceof Map&&w.forEach(D=>{Kte(D).forEach(k=>{_.hasOwnProperty(k)||f.add(k)})})}),f.size&&(G4(f.values()),e.errors.push(function qce(a,i){return new Ce(3008,!1)}()))}return{type:0,name:i.name,style:s,options:d?{params:d}:null}}visitTransition(i,e){e.queryCount=0,e.depCount=0;const s=Al(this,OP(i.animation),e);return{type:1,matchers:Fde(i.expr,e.errors),animation:s,queryCount:e.queryCount,depCount:e.depCount,options:gb(i.options)}}visitSequence(i,e){return{type:2,steps:i.steps.map(s=>Al(this,s,e)),options:gb(i.options)}}visitGroup(i,e){const s=e.currentTime;let d=0;const f=i.steps.map(_=>{e.currentTime=s;const w=Al(this,_,e);return d=Math.max(d,e.currentTime),w});return e.currentTime=d,{type:3,steps:f,options:gb(i.options)}}visitAnimate(i,e){const s=function $de(a,i){if(a.hasOwnProperty("duration"))return a;if("number"==typeof a)return gX(H4(a,i).duration,0,"");const e=a;if(e.split(/\s+/).some(f=>"{"==f.charAt(0)&&"{"==f.charAt(1))){const f=gX(0,0,"");return f.dynamic=!0,f.strValue=e,f}const d=H4(e,i);return gX(d.duration,d.delay,d.easing)}(i.timings,e.errors);e.currentAnimateTimings=s;let d,f=i.styles?i.styles:ft({});if(5==f.type)d=this.visitKeyframes(f,e);else{let _=i.styles,w=!1;if(!_){w=!0;const k={};s.easing&&(k.easing=s.easing),_=ft(k)}e.currentTime+=s.duration+s.delay;const D=this.visitStyle(_,e);D.isEmptyStep=w,d=D}return e.currentAnimateTimings=null,{type:4,timings:s,style:d,options:null}}visitStyle(i,e){const s=this._makeStyleAst(i,e);return this._validateStyleAst(s,e),s}_makeStyleAst(i,e){const s=[],d=Array.isArray(i.styles)?i.styles:[i.styles];for(let w of d)"string"==typeof w?w===_d?s.push(w):e.errors.push(new Ce(3002,!1)):s.push(Yte(w));let f=!1,_=null;return s.forEach(w=>{if(w instanceof Map&&(w.has("easing")&&(_=w.get("easing"),w.delete("easing")),!f))for(let D of w.values())if(D.toString().indexOf("{{")>=0){f=!0;break}}),{type:6,styles:s,easing:_,offset:i.offset,containsDynamicStyles:f,options:null}}_validateStyleAst(i,e){const s=e.currentAnimateTimings;let d=e.currentTime,f=e.currentTime;s&&f>0&&(f-=s.duration+s.delay),i.styles.forEach(_=>{"string"!=typeof _&&_.forEach((w,D)=>{const k=e.collectedStyles.get(e.currentQuerySelector),P=k.get(D);let z=!0;P&&(f!=d&&f>=P.startTime&&d<=P.endTime&&(e.errors.push(function Zce(a,i,e,s,d){return new Ce(3010,!1)}()),z=!1),f=P.startTime),z&&k.set(D,{startTime:f,endTime:d}),e.options&&function Ade(a,i,e){const s=i.params||{},d=Kte(a);d.length&&d.forEach(f=>{s.hasOwnProperty(f)||e.push(function Gce(a){return new Ce(3001,!1)}())})}(w,e.options,e.errors)})})}visitKeyframes(i,e){const s={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function Kce(){return new Ce(3011,!1)}()),s;let f=0;const _=[];let w=!1,D=!1,k=0;const P=i.steps.map(pe=>{const Te=this._makeStyleAst(pe,e);let ue=null!=Te.offset?Te.offset:function jde(a){if("string"==typeof a)return null;let i=null;if(Array.isArray(a))a.forEach(e=>{if(e instanceof Map&&e.has("offset")){const s=e;i=parseFloat(s.get("offset")),s.delete("offset")}});else if(a instanceof Map&&a.has("offset")){const e=a;i=parseFloat(e.get("offset")),e.delete("offset")}return i}(Te.styles),Fe=0;return null!=ue&&(f++,Fe=Te.offset=ue),D=D||Fe<0||Fe>1,w=w||Fe0&&f{const ue=W>0?Te==Z?1:W*Te:_[Te],Fe=ue*fe;e.currentTime=te+re.delay+Fe,re.duration=Fe,this._validateStyleAst(pe,e),pe.offset=ue,s.styles.push(pe)}),s}visitReference(i,e){return{type:8,animation:Al(this,OP(i.animation),e),options:gb(i.options)}}visitAnimateChild(i,e){return e.depCount++,{type:9,options:gb(i.options)}}visitAnimateRef(i,e){return{type:10,animation:this.visitReference(i.animation,e),options:gb(i.options)}}visitQuery(i,e){const s=e.currentQuerySelector,d=i.options||{};e.queryCount++,e.currentQuery=i;const[f,_]=function Hde(a){const i=!!a.split(/\s*,\s*/).find(e=>":self"==e);return i&&(a=a.replace(Vde,"")),a=a.replace(/@\*/g,z4).replace(/@\w+/g,e=>z4+"-"+e.slice(1)).replace(/:animating/g,uX),[a,i]}(i.selector);e.currentQuerySelector=s.length?s+" "+f:f,Tl(e.collectedStyles,e.currentQuerySelector,new Map);const w=Al(this,OP(i.animation),e);return e.currentQuery=null,e.currentQuerySelector=s,{type:11,selector:f,limit:d.limit||0,optional:!!d.optional,includeSelf:_,animation:w,originalSelector:i.selector,options:gb(i.options)}}visitStagger(i,e){e.currentQuery||e.errors.push(function tde(){return new Ce(3013,!1)}());const s="full"===i.timings?{duration:0,delay:0,easing:"full"}:H4(i.timings,e.errors,!0);return{type:12,animation:Al(this,OP(i.animation),e),timings:s,options:null}}}class Ude{constructor(i){this.errors=i,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function gb(a){return a?(a=RP(a)).params&&(a.params=function Gde(a){return a?RP(a):null}(a.params)):a={},a}function gX(a,i,e){return{duration:a,delay:i,easing:e}}function vX(a,i,e,s,d,f,_=null,w=!1){return{type:1,element:a,keyframes:i,preStyleProps:e,postStyleProps:s,duration:d,delay:f,totalTime:d+f,easing:_,subTimeline:w}}class q4{constructor(){this._map=new Map}get(i){return this._map.get(i)||[]}append(i,e){let s=this._map.get(i);s||this._map.set(i,s=[]),s.push(...e)}has(i){return this._map.has(i)}clear(){this._map.clear()}}const qde=new RegExp(":enter","g"),Zde=new RegExp(":leave","g");function _X(a,i,e,s,d,f=new Map,_=new Map,w,D,k=[]){return(new Kde).buildKeyframes(a,i,e,s,d,f,_,w,D,k)}class Kde{buildKeyframes(i,e,s,d,f,_,w,D,k,P=[]){k=k||new q4;const z=new yX(i,e,k,d,f,P,[]);z.options=D;const W=D.delay?Jf(D.delay):0;z.currentTimeline.delayNextStep(W),z.currentTimeline.setStyles([_],null,z.errors,D),Al(this,s,z);const Z=z.timelines.filter(te=>te.containsAnimation());if(Z.length&&w.size){let te;for(let re=Z.length-1;re>=0;re--){const fe=Z[re];if(fe.element===e){te=fe;break}}te&&!te.allowOnlyTimelineStyles()&&te.setStyles([w],null,z.errors,D)}return Z.length?Z.map(te=>te.buildKeyframes()):[vX(e,[],[],[],0,W,"",!1)]}visitTrigger(i,e){}visitState(i,e){}visitTransition(i,e){}visitAnimateChild(i,e){const s=e.subInstructions.get(e.element);if(s){const d=e.createSubContext(i.options),f=e.currentTimeline.currentTime,_=this._visitSubInstructions(s,d,d.options);f!=_&&e.transformIntoNewTimeline(_)}e.previousNode=i}visitAnimateRef(i,e){const s=e.createSubContext(i.options);s.transformIntoNewTimeline(),this._applyAnimationRefDelays([i.options,i.animation.options],e,s),this.visitReference(i.animation,s),e.transformIntoNewTimeline(s.currentTimeline.currentTime),e.previousNode=i}_applyAnimationRefDelays(i,e,s){for(const f of i){const _=null==f?void 0:f.delay;if(_){var d;const w="number"==typeof _?_:Jf(LP(_,null!==(d=null==f?void 0:f.params)&&void 0!==d?d:{},e.errors));s.delayNextStep(w)}}}_visitSubInstructions(i,e,s){let f=e.currentTimeline.currentTime;const _=null!=s.duration?Jf(s.duration):null,w=null!=s.delay?Jf(s.delay):null;return 0!==_&&i.forEach(D=>{const k=e.appendInstructionToTimeline(D,_,w);f=Math.max(f,k.duration+k.delay)}),f}visitReference(i,e){e.updateOptions(i.options,!0),Al(this,i.animation,e),e.previousNode=i}visitSequence(i,e){const s=e.subContextCount;let d=e;const f=i.options;if(f&&(f.params||f.delay)&&(d=e.createSubContext(f),d.transformIntoNewTimeline(),null!=f.delay)){6==d.previousNode.type&&(d.currentTimeline.snapshotCurrentStyles(),d.previousNode=X4);const _=Jf(f.delay);d.delayNextStep(_)}i.steps.length&&(i.steps.forEach(_=>Al(this,_,d)),d.currentTimeline.applyStylesToKeyframe(),d.subContextCount>s&&d.transformIntoNewTimeline()),e.previousNode=i}visitGroup(i,e){const s=[];let d=e.currentTimeline.currentTime;const f=i.options&&i.options.delay?Jf(i.options.delay):0;i.steps.forEach(_=>{const w=e.createSubContext(i.options);f&&w.delayNextStep(f),Al(this,_,w),d=Math.max(d,w.currentTimeline.currentTime),s.push(w.currentTimeline)}),s.forEach(_=>e.currentTimeline.mergeTimelineCollectedStyles(_)),e.transformIntoNewTimeline(d),e.previousNode=i}_visitTiming(i,e){if(i.dynamic){const s=i.strValue;return H4(e.params?LP(s,e.params,e.errors):s,e.errors)}return{duration:i.duration,delay:i.delay,easing:i.easing}}visitAnimate(i,e){const s=e.currentAnimateTimings=this._visitTiming(i.timings,e),d=e.currentTimeline;s.delay&&(e.incrementTime(s.delay),d.snapshotCurrentStyles());const f=i.style;5==f.type?this.visitKeyframes(f,e):(e.incrementTime(s.duration),this.visitStyle(f,e),d.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=i}visitStyle(i,e){const s=e.currentTimeline,d=e.currentAnimateTimings;!d&&s.hasCurrentStyleProperties()&&s.forwardFrame();const f=d&&d.easing||i.easing;i.isEmptyStep?s.applyEmptyStep(f):s.setStyles(i.styles,f,e.errors,e.options),e.previousNode=i}visitKeyframes(i,e){const s=e.currentAnimateTimings,d=e.currentTimeline.duration,f=s.duration,w=e.createSubContext().currentTimeline;w.easing=s.easing,i.styles.forEach(D=>{w.forwardTime((D.offset||0)*f),w.setStyles(D.styles,D.easing,e.errors,e.options),w.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(w),e.transformIntoNewTimeline(d+f),e.previousNode=i}visitQuery(i,e){const s=e.currentTimeline.currentTime,d=i.options||{},f=d.delay?Jf(d.delay):0;f&&(6===e.previousNode.type||0==s&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=X4);let _=s;const w=e.invokeQuery(i.selector,i.originalSelector,i.limit,i.includeSelf,!!d.optional,e.errors);e.currentQueryTotal=w.length;let D=null;w.forEach((k,P)=>{e.currentQueryIndex=P;const z=e.createSubContext(i.options,k);f&&z.delayNextStep(f),k===e.element&&(D=z.currentTimeline),Al(this,i.animation,z),z.currentTimeline.applyStylesToKeyframe(),_=Math.max(_,z.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(_),D&&(e.currentTimeline.mergeTimelineCollectedStyles(D),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=i}visitStagger(i,e){const s=e.parentContext,d=e.currentTimeline,f=i.timings,_=Math.abs(f.duration),w=_*(e.currentQueryTotal-1);let D=_*e.currentQueryIndex;switch(f.duration<0?"reverse":f.easing){case"reverse":D=w-D;break;case"full":D=s.currentStaggerTime}const P=e.currentTimeline;D&&P.delayNextStep(D);const z=P.currentTime;Al(this,i.animation,e),e.previousNode=i,s.currentStaggerTime=d.currentTime-z+(d.startTime-s.currentTimeline.startTime)}}const X4={};class yX{constructor(i,e,s,d,f,_,w,D){this._driver=i,this.element=e,this.subInstructions=s,this._enterClassName=d,this._leaveClassName=f,this.errors=_,this.timelines=w,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=X4,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=D||new Z4(this._driver,e,0),w.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(i,e){if(!i)return;const s=i;let d=this.options;null!=s.duration&&(d.duration=Jf(s.duration)),null!=s.delay&&(d.delay=Jf(s.delay));const f=s.params;if(f){let _=d.params;_||(_=this.options.params={}),Object.keys(f).forEach(w=>{(!e||!_.hasOwnProperty(w))&&(_[w]=LP(f[w],_,this.errors))})}}_copyOptions(){const i={};if(this.options){const e=this.options.params;if(e){const s=i.params={};Object.keys(e).forEach(d=>{s[d]=e[d]})}}return i}createSubContext(i=null,e,s){const d=e||this.element,f=new yX(this._driver,d,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(d,s||0));return f.previousNode=this.previousNode,f.currentAnimateTimings=this.currentAnimateTimings,f.options=this._copyOptions(),f.updateOptions(i),f.currentQueryIndex=this.currentQueryIndex,f.currentQueryTotal=this.currentQueryTotal,f.parentContext=this,this.subContextCount++,f}transformIntoNewTimeline(i){return this.previousNode=X4,this.currentTimeline=this.currentTimeline.fork(this.element,i),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(i,e,s){const d={duration:e??i.duration,delay:this.currentTimeline.currentTime+(s??0)+i.delay,easing:""},f=new Qde(this._driver,i.element,i.keyframes,i.preStyleProps,i.postStyleProps,d,i.stretchStartingKeyframe);return this.timelines.push(f),d}incrementTime(i){this.currentTimeline.forwardTime(this.currentTimeline.duration+i)}delayNextStep(i){i>0&&this.currentTimeline.delayNextStep(i)}invokeQuery(i,e,s,d,f,_){let w=[];if(d&&w.push(this.element),i.length>0){i=(i=i.replace(qde,"."+this._enterClassName)).replace(Zde,"."+this._leaveClassName);let k=this._driver.query(this.element,i,1!=s);0!==s&&(k=s<0?k.slice(k.length+s,k.length):k.slice(0,s)),w.push(...k)}return!f&&0==w.length&&_.push(function nde(a){return new Ce(3014,!1)}()),w}}class Z4{constructor(i,e,s,d){this._driver=i,this.element=e,this.startTime=s,this._elementTimelineStylesLookup=d,this.duration=0,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(i){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+i),e&&this.snapshotCurrentStyles()):this.startTime+=i}fork(i,e){return this.applyStylesToKeyframe(),new Z4(this._driver,i,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(i){this.applyStylesToKeyframe(),this.duration=i,this._loadKeyframe()}_updateStyle(i,e){this._localTimelineStyles.set(i,e),this._globalTimelineStyles.set(i,e),this._styleSummary.set(i,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(i){i&&this._previousKeyframe.set("easing",i);for(let[e,s]of this._globalTimelineStyles)this._backFill.set(e,s||_d),this._currentKeyframe.set(e,_d);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(i,e,s,d){e&&this._previousKeyframe.set("easing",e);const f=d&&d.params||{},_=function Jde(a,i){const e=new Map;let s;return a.forEach(d=>{if("*"===d){s=s||i.keys();for(let f of s)e.set(f,_d)}else Pg(d,e)}),e}(i,this._globalTimelineStyles);for(let[D,k]of _){const P=LP(k,f,s);var w;this._pendingStyles.set(D,P),this._localTimelineStyles.has(D)||this._backFill.set(D,null!==(w=this._globalTimelineStyles.get(D))&&void 0!==w?w:_d),this._updateStyle(D,P)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((i,e)=>{this._currentKeyframe.set(e,i)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((i,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,i)}))}snapshotCurrentStyles(){for(let[i,e]of this._localTimelineStyles)this._pendingStyles.set(i,e),this._updateStyle(i,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const i=[];for(let e in this._currentKeyframe)i.push(e);return i}mergeTimelineCollectedStyles(i){i._styleSummary.forEach((e,s)=>{const d=this._styleSummary.get(s);(!d||e.time>d.time)&&this._updateStyle(s,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const i=new Set,e=new Set,s=1===this._keyframes.size&&0===this.duration;let d=[];this._keyframes.forEach((w,D)=>{const k=Pg(w,new Map,this._backFill);k.forEach((P,z)=>{"!"===P?i.add(z):P===_d&&e.add(z)}),s||k.set("offset",D/this.duration),d.push(k)});const f=i.size?G4(i.values()):[],_=e.size?G4(e.values()):[];if(s){const w=d[0],D=new Map(w);w.set("offset",0),D.set("offset",1),d=[w,D]}return vX(this.element,d,f,_,this.duration,this.startTime,this.easing,!1)}}class Qde extends Z4{constructor(i,e,s,d,f,_,w=!1){super(i,e,_.delay),this.keyframes=s,this.preStyleProps=d,this.postStyleProps=f,this._stretchStartingKeyframe=w,this.timings={duration:_.duration,delay:_.delay,easing:_.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let i=this.keyframes,{delay:e,duration:s,easing:d}=this.timings;if(this._stretchStartingKeyframe&&e){const f=[],_=s+e,w=e/_,D=Pg(i[0]);D.set("offset",0),f.push(D);const k=Pg(i[0]);k.set("offset",nne(w)),f.push(k);const P=i.length-1;for(let z=1;z<=P;z++){let W=Pg(i[z]);const Z=W.get("offset");W.set("offset",nne((e+Z*s)/_)),f.push(W)}s=_,e=0,d="",i=f}return vX(this.element,i,this.preStyleProps,this.postStyleProps,s,e,d,!0)}}function nne(a,i=3){const e=Math.pow(10,i-1);return Math.round(a*e)/e}class bX{}const eue=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class tue extends bX{normalizePropertyName(i,e){return pX(i)}normalizeStyleValue(i,e,s,d){let f="";const _=s.toString().trim();if(eue.has(e)&&0!==s&&"0"!==s)if("number"==typeof s)f="px";else{const w=s.match(/^[+-]?[\d\.]+([a-z]*)$/);w&&0==w[1].length&&d.push(function $ce(a,i){return new Ce(3005,!1)}())}return _+f}}function ine(a,i,e,s,d,f,_,w,D,k,P,z,W){return{type:0,element:a,triggerName:i,isRemovalTransition:d,fromState:e,fromStyles:f,toState:s,toStyles:_,timelines:w,queriedElements:D,preStyleProps:k,postStyleProps:P,totalTime:z,errors:W}}const wX={};class rne{constructor(i,e,s){this._triggerName=i,this.ast=e,this._stateStyles=s}match(i,e,s,d){return function nue(a,i,e,s,d){return a.some(f=>f(i,e,s,d))}(this.ast.matchers,i,e,s,d)}buildStyles(i,e,s){let d=this._stateStyles.get("*");return void 0!==i&&(d=this._stateStyles.get(null==i?void 0:i.toString())||d),d?d.buildStyles(e,s):new Map}build(i,e,s,d,f,_,w,D,k,P){var z;const W=[],Z=this.ast.options&&this.ast.options.params||wX,re=this.buildStyles(s,w&&w.params||wX,W),fe=D&&D.params||wX,pe=this.buildStyles(d,fe,W),Te=new Set,ue=new Map,Fe=new Map,Cn="void"===d,ti={params:iue(fe,Z),delay:null===(z=this.ast.options)||void 0===z?void 0:z.delay},ns=P?[]:_X(i,e,this.ast.animation,f,_,re,pe,ti,k,W);let Cc=0;if(ns.forEach(Sd=>{Cc=Math.max(Sd.duration+Sd.delay,Cc)}),W.length)return ine(e,this._triggerName,s,d,Cn,re,pe,[],[],ue,Fe,Cc,W);ns.forEach(Sd=>{const tR=Sd.element,nR=Tl(ue,tR,new Set);Sd.preStyleProps.forEach(cS=>nR.add(cS));const iR=Tl(Fe,tR,new Set);Sd.postStyleProps.forEach(cS=>iR.add(cS)),tR!==e&&Te.add(tR)});const nH=G4(Te.values());return ine(e,this._triggerName,s,d,Cn,re,pe,ns,nH,ue,Fe,Cc)}}function iue(a,i){const e=RP(i);for(const s in a)a.hasOwnProperty(s)&&null!=a[s]&&(e[s]=a[s]);return e}class rue{constructor(i,e,s){this.styles=i,this.defaultParams=e,this.normalizer=s}buildStyles(i,e){const s=new Map,d=RP(this.defaultParams);return Object.keys(i).forEach(f=>{const _=i[f];null!==_&&(d[f]=_)}),this.styles.styles.forEach(f=>{"string"!=typeof f&&f.forEach((_,w)=>{_&&(_=LP(_,d,e));const D=this.normalizer.normalizePropertyName(w,e);_=this.normalizer.normalizeStyleValue(w,D,_,e),s.set(w,_)})}),s}}class oue{constructor(i,e,s){this.name=i,this.ast=e,this._normalizer=s,this.transitionFactories=[],this.states=new Map,e.states.forEach(d=>{this.states.set(d.name,new rue(d.style,d.options&&d.options.params||{},s))}),ane(this.states,"true","1"),ane(this.states,"false","0"),e.transitions.forEach(d=>{this.transitionFactories.push(new rne(i,d,this.states))}),this.fallbackTransition=function sue(a,i,e){return new rne(a,{type:1,animation:{type:2,steps:[],options:null},matchers:[(_,w)=>!0],options:null,queryCount:0,depCount:0},i)}(i,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(i,e,s,d){return this.transitionFactories.find(_=>_.match(i,e,s,d))||null}matchStyles(i,e,s){return this.fallbackTransition.buildStyles(i,e,s)}}function ane(a,i,e){a.has(i)?a.has(e)||a.set(e,a.get(i)):a.has(e)&&a.set(i,a.get(e))}const lue=new q4;class cue{constructor(i,e,s){this.bodyNode=i,this._driver=e,this._normalizer=s,this._animations=new Map,this._playersById=new Map,this.players=[]}register(i,e){const s=[],f=mX(this._driver,e,s,[]);if(s.length)throw function cde(a){return new Ce(3503,!1)}();this._animations.set(i,f)}_buildPlayer(i,e,s){const d=i.element,f=Nte(0,this._normalizer,0,i.keyframes,e,s);return this._driver.animate(d,f,i.duration,i.delay,i.easing,[],!0)}create(i,e,s={}){const d=[],f=this._animations.get(i);let _;const w=new Map;if(f?(_=_X(this._driver,e,f,dX,B4,new Map,new Map,s,lue,d),_.forEach(P=>{const z=Tl(w,P.element,new Map);P.postStyleProps.forEach(W=>z.set(W,null))})):(d.push(function dde(){return new Ce(3300,!1)}()),_=[]),d.length)throw function ude(a){return new Ce(3504,!1)}();w.forEach((P,z)=>{P.forEach((W,Z)=>{P.set(Z,this._driver.computeStyle(z,Z,_d))})});const k=Ig(_.map(P=>{const z=w.get(P.element);return this._buildPlayer(P,new Map,z)}));return this._playersById.set(i,k),k.onDestroy(()=>this.destroy(i)),this.players.push(k),k}destroy(i){const e=this._getPlayer(i);e.destroy(),this._playersById.delete(i);const s=this.players.indexOf(e);s>=0&&this.players.splice(s,1)}_getPlayer(i){const e=this._playersById.get(i);if(!e)throw function hde(a){return new Ce(3301,!1)}();return e}listen(i,e,s,d){const f=oX(e,"","","");return rX(this._getPlayer(i),s,f,d),()=>{}}command(i,e,s,d){if("register"==s)return void this.register(i,d[0]);if("create"==s)return void this.create(i,e,d[0]||{});const f=this._getPlayer(i);switch(s){case"play":f.play();break;case"pause":f.pause();break;case"reset":f.reset();break;case"restart":f.restart();break;case"finish":f.finish();break;case"init":f.init();break;case"setPosition":f.setPosition(parseFloat(d[0]));break;case"destroy":this.destroy(i)}}}const one="ng-animate-queued",xX="ng-animate-disabled",pue=[],sne={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},mue={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},wc="__ng_removed";class CX{get params(){return this.options.params}constructor(i,e=""){this.namespaceId=e;const s=i&&i.hasOwnProperty("value");if(this.value=function yue(a){return a??null}(s?i.value:i),s){const f=RP(i);delete f.value,this.options=f}else this.options={};this.options.params||(this.options.params={})}absorbOptions(i){const e=i.params;if(e){const s=this.options.params;Object.keys(e).forEach(d=>{null==s[d]&&(s[d]=e[d])})}}}const FP="void",SX=new CX(FP);class gue{constructor(i,e,s){this.id=i,this.hostElement=e,this._engine=s,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+i,xc(e,this._hostClassName)}listen(i,e,s,d){if(!this._triggers.has(e))throw function fde(a,i){return new Ce(3302,!1)}();if(null==s||0==s.length)throw function pde(a){return new Ce(3303,!1)}();if(!function bue(a){return"start"==a||"done"==a}(s))throw function mde(a,i){return new Ce(3400,!1)}();const f=Tl(this._elementListeners,i,[]),_={name:e,phase:s,callback:d};f.push(_);const w=Tl(this._engine.statesByElement,i,new Map);return w.has(e)||(xc(i,V4),xc(i,V4+"-"+e),w.set(e,SX)),()=>{this._engine.afterFlush(()=>{const D=f.indexOf(_);D>=0&&f.splice(D,1),this._triggers.has(e)||w.delete(e)})}}register(i,e){return!this._triggers.has(i)&&(this._triggers.set(i,e),!0)}_getTrigger(i){const e=this._triggers.get(i);if(!e)throw function gde(a){return new Ce(3401,!1)}();return e}trigger(i,e,s,d=!0){const f=this._getTrigger(e),_=new DX(this.id,e,i);let w=this._engine.statesByElement.get(i);w||(xc(i,V4),xc(i,V4+"-"+e),this._engine.statesByElement.set(i,w=new Map));let D=w.get(e);const k=new CX(s,this.id);if(!(s&&s.hasOwnProperty("value"))&&D&&k.absorbOptions(D.options),w.set(e,k),D||(D=SX),k.value!==FP&&D.value===k.value){if(!function Cue(a,i){const e=Object.keys(a),s=Object.keys(i);if(e.length!=s.length)return!1;for(let d=0;d{mb(i,fe),qu(i,pe)})}return}const W=Tl(this._engine.playersByElement,i,[]);W.forEach(re=>{re.namespaceId==this.id&&re.triggerName==e&&re.queued&&re.destroy()});let Z=f.matchTransition(D.value,k.value,i,k.params),te=!1;if(!Z){if(!d)return;Z=f.fallbackTransition,te=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:i,triggerName:e,transition:Z,fromState:D,toState:k,player:_,isFallbackTransition:te}),te||(xc(i,one),_.onStart(()=>{iS(i,one)})),_.onDone(()=>{let re=this.players.indexOf(_);re>=0&&this.players.splice(re,1);const fe=this._engine.playersByElement.get(i);if(fe){let pe=fe.indexOf(_);pe>=0&&fe.splice(pe,1)}}),this.players.push(_),W.push(_),_}deregister(i){this._triggers.delete(i),this._engine.statesByElement.forEach(e=>e.delete(i)),this._elementListeners.forEach((e,s)=>{this._elementListeners.set(s,e.filter(d=>d.name!=i))})}clearElementCache(i){this._engine.statesByElement.delete(i),this._elementListeners.delete(i);const e=this._engine.playersByElement.get(i);e&&(e.forEach(s=>s.destroy()),this._engine.playersByElement.delete(i))}_signalRemovalForInnerTriggers(i,e){const s=this._engine.driver.query(i,z4,!0);s.forEach(d=>{if(d[wc])return;const f=this._engine.fetchNamespacesByElement(d);f.size?f.forEach(_=>_.triggerLeaveAnimation(d,e,!1,!0)):this.clearElementCache(d)}),this._engine.afterFlushAnimationsDone(()=>s.forEach(d=>this.clearElementCache(d)))}triggerLeaveAnimation(i,e,s,d){const f=this._engine.statesByElement.get(i),_=new Map;if(f){const w=[];if(f.forEach((D,k)=>{if(_.set(k,D.value),this._triggers.has(k)){const P=this.trigger(i,k,FP,d);P&&w.push(P)}}),w.length)return this._engine.markElementAsRemoved(this.id,i,!0,e,_),s&&Ig(w).onDone(()=>this._engine.processLeaveNode(i)),!0}return!1}prepareLeaveAnimationListeners(i){const e=this._elementListeners.get(i),s=this._engine.statesByElement.get(i);if(e&&s){const d=new Set;e.forEach(f=>{const _=f.name;if(d.has(_))return;d.add(_);const D=this._triggers.get(_).fallbackTransition,k=s.get(_)||SX,P=new CX(FP),z=new DX(this.id,_,i);this._engine.totalQueuedPlayers++,this._queue.push({element:i,triggerName:_,transition:D,fromState:k,toState:P,player:z,isFallbackTransition:!0})})}}removeNode(i,e){const s=this._engine;if(i.childElementCount&&this._signalRemovalForInnerTriggers(i,e),this.triggerLeaveAnimation(i,e,!0))return;let d=!1;if(s.totalAnimations){const f=s.players.length?s.playersByQueriedElement.get(i):[];if(f&&f.length)d=!0;else{let _=i;for(;_=_.parentNode;)if(s.statesByElement.get(_)){d=!0;break}}}if(this.prepareLeaveAnimationListeners(i),d)s.markElementAsRemoved(this.id,i,!1,e);else{const f=i[wc];(!f||f===sne)&&(s.afterFlush(()=>this.clearElementCache(i)),s.destroyInnerAnimations(i),s._onRemovalComplete(i,e))}}insertNode(i,e){xc(i,this._hostClassName)}drainQueuedTransitions(i){const e=[];return this._queue.forEach(s=>{const d=s.player;if(d.destroyed)return;const f=s.element,_=this._elementListeners.get(f);_&&_.forEach(w=>{if(w.name==s.triggerName){const D=oX(f,s.triggerName,s.fromState.value,s.toState.value);D._data=i,rX(s.player,w.phase,D,w.callback)}}),d.markedForDestroy?this._engine.afterFlush(()=>{d.destroy()}):e.push(s)}),this._queue=[],e.sort((s,d)=>{const f=s.transition.ast.depCount,_=d.transition.ast.depCount;return 0==f||0==_?f-_:this._engine.driver.containsElement(s.element,d.element)?1:-1})}destroy(i){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,i)}elementContainsData(i){let e=!1;return this._elementListeners.has(i)&&(e=!0),e=!!this._queue.find(s=>s.element===i)||e,e}}class vue{_onRemovalComplete(i,e){this.onRemovalComplete(i,e)}constructor(i,e,s){this.bodyNode=i,this.driver=e,this._normalizer=s,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(d,f)=>{}}get queuedPlayers(){const i=[];return this._namespaceList.forEach(e=>{e.players.forEach(s=>{s.queued&&i.push(s)})}),i}createNamespace(i,e){const s=new gue(i,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(s,e):(this.newHostElements.set(e,s),this.collectEnterElement(e)),this._namespaceLookup[i]=s}_balanceNamespaceList(i,e){const s=this._namespaceList,d=this.namespacesByHostElement;if(s.length-1>=0){let _=!1,w=this.driver.getParentElement(e);for(;w;){const D=d.get(w);if(D){const k=s.indexOf(D);s.splice(k+1,0,i),_=!0;break}w=this.driver.getParentElement(w)}_||s.unshift(i)}else s.push(i);return d.set(e,i),i}register(i,e){let s=this._namespaceLookup[i];return s||(s=this.createNamespace(i,e)),s}registerTrigger(i,e,s){let d=this._namespaceLookup[i];d&&d.register(e,s)&&this.totalAnimations++}destroy(i,e){if(!i)return;const s=this._fetchNamespace(i);this.afterFlush(()=>{this.namespacesByHostElement.delete(s.hostElement),delete this._namespaceLookup[i];const d=this._namespaceList.indexOf(s);d>=0&&this._namespaceList.splice(d,1)}),this.afterFlushAnimationsDone(()=>s.destroy(e))}_fetchNamespace(i){return this._namespaceLookup[i]}fetchNamespacesByElement(i){const e=new Set,s=this.statesByElement.get(i);if(s)for(let d of s.values())if(d.namespaceId){const f=this._fetchNamespace(d.namespaceId);f&&e.add(f)}return e}trigger(i,e,s,d){if(K4(e)){const f=this._fetchNamespace(i);if(f)return f.trigger(e,s,d),!0}return!1}insertNode(i,e,s,d){if(!K4(e))return;const f=e[wc];if(f&&f.setForRemoval){f.setForRemoval=!1,f.setForMove=!0;const _=this.collectedLeaveElements.indexOf(e);_>=0&&this.collectedLeaveElements.splice(_,1)}if(i){const _=this._fetchNamespace(i);_&&_.insertNode(e,s)}d&&this.collectEnterElement(e)}collectEnterElement(i){this.collectedEnterElements.push(i)}markElementAsDisabled(i,e){e?this.disabledNodes.has(i)||(this.disabledNodes.add(i),xc(i,xX)):this.disabledNodes.has(i)&&(this.disabledNodes.delete(i),iS(i,xX))}removeNode(i,e,s,d){if(K4(e)){const f=i?this._fetchNamespace(i):null;if(f?f.removeNode(e,d):this.markElementAsRemoved(i,e,!1,d),s){const _=this.namespacesByHostElement.get(e);_&&_.id!==i&&_.removeNode(e,d)}}else this._onRemovalComplete(e,d)}markElementAsRemoved(i,e,s,d,f){this.collectedLeaveElements.push(e),e[wc]={namespaceId:i,setForRemoval:d,hasAnimation:s,removedBeforeQueried:!1,previousTriggersValues:f}}listen(i,e,s,d,f){return K4(e)?this._fetchNamespace(i).listen(e,s,d,f):()=>{}}_buildInstruction(i,e,s,d,f){return i.transition.build(this.driver,i.element,i.fromState.value,i.toState.value,s,d,i.fromState.options,i.toState.options,e,f)}destroyInnerAnimations(i){let e=this.driver.query(i,z4,!0);e.forEach(s=>this.destroyActiveAnimationsForElement(s)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(i,uX,!0),e.forEach(s=>this.finishActiveQueriedAnimationOnElement(s)))}destroyActiveAnimationsForElement(i){const e=this.playersByElement.get(i);e&&e.forEach(s=>{s.queued?s.markedForDestroy=!0:s.destroy()})}finishActiveQueriedAnimationOnElement(i){const e=this.playersByQueriedElement.get(i);e&&e.forEach(s=>s.finish())}whenRenderingDone(){return new Promise(i=>{if(this.players.length)return Ig(this.players).onDone(()=>i());i()})}processLeaveNode(i){var e;const s=i[wc];if(s&&s.setForRemoval){if(i[wc]=sne,s.namespaceId){this.destroyInnerAnimations(i);const d=this._fetchNamespace(s.namespaceId);d&&d.clearElementCache(i)}this._onRemovalComplete(i,s.setForRemoval)}null!==(e=i.classList)&&void 0!==e&&e.contains(xX)&&this.markElementAsDisabled(i,!1),this.driver.query(i,".ng-animate-disabled",!0).forEach(d=>{this.markElementAsDisabled(d,!1)})}flush(i=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((s,d)=>this._balanceNamespaceList(s,d)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let s=0;ss()),this._flushFns=[],this._whenQuietFns.length){const s=this._whenQuietFns;this._whenQuietFns=[],e.length?Ig(e).onDone(()=>{s.forEach(d=>d())}):s.forEach(d=>d())}}reportError(i){throw function vde(a){return new Ce(3402,!1)}()}_flushAnimations(i,e){const s=new q4,d=[],f=new Map,_=[],w=new Map,D=new Map,k=new Map,P=new Set;this.disabledNodes.forEach(mt=>{P.add(mt);const kt=this.driver.query(mt,".ng-animate-queued",!0);for(let Bt=0;Bt{const Bt=dX+re++;te.set(kt,Bt),mt.forEach(An=>xc(An,Bt))});const fe=[],pe=new Set,Te=new Set;for(let mt=0;mtpe.add(An)):Te.add(kt))}const ue=new Map,Fe=dne(W,Array.from(pe));Fe.forEach((mt,kt)=>{const Bt=B4+re++;ue.set(kt,Bt),mt.forEach(An=>xc(An,Bt))}),i.push(()=>{Z.forEach((mt,kt)=>{const Bt=te.get(kt);mt.forEach(An=>iS(An,Bt))}),Fe.forEach((mt,kt)=>{const Bt=ue.get(kt);mt.forEach(An=>iS(An,Bt))}),fe.forEach(mt=>{this.processLeaveNode(mt)})});const Cn=[],ti=[];for(let mt=this._namespaceList.length-1;mt>=0;mt--)this._namespaceList[mt].drainQueuedTransitions(e).forEach(Bt=>{const An=Bt.player,Sr=Bt.element;if(Cn.push(An),this.collectedEnterElements.length){const Do=Sr[wc];if(Do&&Do.setForMove){if(Do.previousTriggersValues&&Do.previousTriggersValues.has(Bt.triggerName)){const _b=Do.previousTriggersValues.get(Bt.triggerName),Sc=this.statesByElement.get(Bt.element);if(Sc&&Sc.has(Bt.triggerName)){const iH=Sc.get(Bt.triggerName);iH.value=_b,Sc.set(Bt.triggerName,iH)}}return void An.destroy()}}const Xu=!z||!this.driver.containsElement(z,Sr),kl=ue.get(Sr),Rg=te.get(Sr),gr=this._buildInstruction(Bt,s,Rg,kl,Xu);if(gr.errors&&gr.errors.length)return void ti.push(gr);if(Xu)return An.onStart(()=>mb(Sr,gr.fromStyles)),An.onDestroy(()=>qu(Sr,gr.toStyles)),void d.push(An);if(Bt.isFallbackTransition)return An.onStart(()=>mb(Sr,gr.fromStyles)),An.onDestroy(()=>qu(Sr,gr.toStyles)),void d.push(An);const Pne=[];gr.timelines.forEach(Do=>{Do.stretchStartingKeyframe=!0,this.disabledNodes.has(Do.element)||Pne.push(Do)}),gr.timelines=Pne,s.append(Sr,gr.timelines),_.push({instruction:gr,player:An,element:Sr}),gr.queriedElements.forEach(Do=>Tl(w,Do,[]).push(An)),gr.preStyleProps.forEach((Do,_b)=>{if(Do.size){let Sc=D.get(_b);Sc||D.set(_b,Sc=new Set),Do.forEach((iH,IX)=>Sc.add(IX))}}),gr.postStyleProps.forEach((Do,_b)=>{let Sc=k.get(_b);Sc||k.set(_b,Sc=new Set),Do.forEach((iH,IX)=>Sc.add(IX))})});if(ti.length){const mt=[];ti.forEach(kt=>{mt.push(function _de(a,i){return new Ce(3505,!1)}())}),Cn.forEach(kt=>kt.destroy()),this.reportError(mt)}const ns=new Map,Cc=new Map;_.forEach(mt=>{const kt=mt.element;s.has(kt)&&(Cc.set(kt,kt),this._beforeAnimationBuild(mt.player.namespaceId,mt.instruction,ns))}),d.forEach(mt=>{const kt=mt.element;this._getPreviousPlayers(kt,!1,mt.namespaceId,mt.triggerName,null).forEach(An=>{Tl(ns,kt,[]).push(An),An.destroy()})});const nH=fe.filter(mt=>hne(mt,D,k)),Sd=new Map;cne(Sd,this.driver,Te,k,_d).forEach(mt=>{hne(mt,D,k)&&nH.push(mt)});const nR=new Map;Z.forEach((mt,kt)=>{cne(nR,this.driver,new Set(mt),D,"!")}),nH.forEach(mt=>{var kt,Bt;const An=Sd.get(mt),Sr=nR.get(mt);Sd.set(mt,new Map([...Array.from(null!==(kt=null==An?void 0:An.entries())&&void 0!==kt?kt:[]),...Array.from(null!==(Bt=null==Sr?void 0:Sr.entries())&&void 0!==Bt?Bt:[])]))});const iR=[],cS=[],Ine={};_.forEach(mt=>{const{element:kt,player:Bt,instruction:An}=mt;if(s.has(kt)){if(P.has(kt))return Bt.onDestroy(()=>qu(kt,An.toStyles)),Bt.disabled=!0,Bt.overrideTotalTime(An.totalTime),void d.push(Bt);let Sr=Ine;if(Cc.size>1){let kl=kt;const Rg=[];for(;kl=kl.parentNode;){const gr=Cc.get(kl);if(gr){Sr=gr;break}Rg.push(kl)}Rg.forEach(gr=>Cc.set(gr,Sr))}const Xu=this._buildAnimation(Bt.namespaceId,An,ns,f,nR,Sd);if(Bt.setRealPlayer(Xu),Sr===Ine)iR.push(Bt);else{const kl=this.playersByElement.get(Sr);kl&&kl.length&&(Bt.parentPlayer=Ig(kl)),d.push(Bt)}}else mb(kt,An.fromStyles),Bt.onDestroy(()=>qu(kt,An.toStyles)),cS.push(Bt),P.has(kt)&&d.push(Bt)}),cS.forEach(mt=>{const kt=f.get(mt.element);if(kt&&kt.length){const Bt=Ig(kt);mt.setRealPlayer(Bt)}}),d.forEach(mt=>{mt.parentPlayer?mt.syncPlayerEvents(mt.parentPlayer):mt.destroy()});for(let mt=0;mt!Xu.destroyed);Sr.length?wue(this,kt,Sr):this.processLeaveNode(kt)}return fe.length=0,iR.forEach(mt=>{this.players.push(mt),mt.onDone(()=>{mt.destroy();const kt=this.players.indexOf(mt);this.players.splice(kt,1)}),mt.play()}),iR}elementContainsData(i,e){let s=!1;const d=e[wc];return d&&d.setForRemoval&&(s=!0),this.playersByElement.has(e)&&(s=!0),this.playersByQueriedElement.has(e)&&(s=!0),this.statesByElement.has(e)&&(s=!0),this._fetchNamespace(i).elementContainsData(e)||s}afterFlush(i){this._flushFns.push(i)}afterFlushAnimationsDone(i){this._whenQuietFns.push(i)}_getPreviousPlayers(i,e,s,d,f){let _=[];if(e){const w=this.playersByQueriedElement.get(i);w&&(_=w)}else{const w=this.playersByElement.get(i);if(w){const D=!f||f==FP;w.forEach(k=>{k.queued||!D&&k.triggerName!=d||_.push(k)})}}return(s||d)&&(_=_.filter(w=>!(s&&s!=w.namespaceId||d&&d!=w.triggerName))),_}_beforeAnimationBuild(i,e,s){const f=e.element,_=e.isRemovalTransition?void 0:i,w=e.isRemovalTransition?void 0:e.triggerName;for(const D of e.timelines){const k=D.element,P=k!==f,z=Tl(s,k,[]);this._getPreviousPlayers(k,P,_,w,e.toState).forEach(Z=>{const te=Z.getRealPlayer();te.beforeDestroy&&te.beforeDestroy(),Z.destroy(),z.push(Z)})}mb(f,e.fromStyles)}_buildAnimation(i,e,s,d,f,_){const w=e.triggerName,D=e.element,k=[],P=new Set,z=new Set,W=e.timelines.map(te=>{const re=te.element;P.add(re);const fe=re[wc];if(fe&&fe.removedBeforeQueried)return new Qm(te.duration,te.delay);const pe=re!==D,Te=function xue(a){const i=[];return une(a,i),i}((s.get(re)||pue).map(ns=>ns.getRealPlayer())).filter(ns=>!!ns.element&&ns.element===re),ue=f.get(re),Fe=_.get(re),Cn=Nte(0,this._normalizer,0,te.keyframes,ue,Fe),ti=this._buildPlayer(te,Cn,Te);if(te.subTimeline&&d&&z.add(re),pe){const ns=new DX(i,w,re);ns.setRealPlayer(ti),k.push(ns)}return ti});k.forEach(te=>{Tl(this.playersByQueriedElement,te.element,[]).push(te),te.onDone(()=>function _ue(a,i,e){let s=a.get(i);if(s){if(s.length){const d=s.indexOf(e);s.splice(d,1)}0==s.length&&a.delete(i)}return s}(this.playersByQueriedElement,te.element,te))}),P.forEach(te=>xc(te,Wte));const Z=Ig(W);return Z.onDestroy(()=>{P.forEach(te=>iS(te,Wte)),qu(D,e.toStyles)}),z.forEach(te=>{Tl(d,te,[]).push(Z)}),Z}_buildPlayer(i,e,s){return e.length>0?this.driver.animate(i.element,e,i.duration,i.delay,i.easing,s):new Qm(i.duration,i.delay)}}class DX{constructor(i,e,s){this.namespaceId=i,this.triggerName=e,this.element=s,this._player=new Qm,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(i){this._containsRealPlayer||(this._player=i,this._queuedCallbacks.forEach((e,s)=>{e.forEach(d=>rX(i,s,void 0,d))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(i.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(i){this.totalTime=i}syncPlayerEvents(i){const e=this._player;e.triggerCallback&&i.onStart(()=>e.triggerCallback("start")),i.onDone(()=>this.finish()),i.onDestroy(()=>this.destroy())}_queueEvent(i,e){Tl(this._queuedCallbacks,i,[]).push(e)}onDone(i){this.queued&&this._queueEvent("done",i),this._player.onDone(i)}onStart(i){this.queued&&this._queueEvent("start",i),this._player.onStart(i)}onDestroy(i){this.queued&&this._queueEvent("destroy",i),this._player.onDestroy(i)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(i){this.queued||this._player.setPosition(i)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(i){const e=this._player;e.triggerCallback&&e.triggerCallback(i)}}function K4(a){return a&&1===a.nodeType}function lne(a,i){const e=a.style.display;return a.style.display=i??"none",e}function cne(a,i,e,s,d){const f=[];e.forEach(D=>f.push(lne(D)));const _=[];s.forEach((D,k)=>{const P=new Map;D.forEach(z=>{const W=i.computeStyle(k,z,d);P.set(z,W),(!W||0==W.length)&&(k[wc]=mue,_.push(k))}),a.set(k,P)});let w=0;return e.forEach(D=>lne(D,f[w++])),_}function dne(a,i){const e=new Map;if(a.forEach(w=>e.set(w,[])),0==i.length)return e;const d=new Set(i),f=new Map;function _(w){if(!w)return 1;let D=f.get(w);if(D)return D;const k=w.parentNode;return D=e.has(k)?k:d.has(k)?1:_(k),f.set(w,D),D}return i.forEach(w=>{const D=_(w);1!==D&&e.get(D).push(w)}),e}function xc(a,i){var e;null===(e=a.classList)||void 0===e||e.add(i)}function iS(a,i){var e;null===(e=a.classList)||void 0===e||e.remove(i)}function wue(a,i,e){Ig(e).onDone(()=>a.processLeaveNode(i))}function une(a,i){for(let e=0;ed.add(f)):i.set(a,s),e.delete(a),!0}class Q4{constructor(i,e,s){this.bodyNode=i,this._driver=e,this._normalizer=s,this._triggerCache={},this.onRemovalComplete=(d,f)=>{},this._transitionEngine=new vue(i,e,s),this._timelineEngine=new cue(i,e,s),this._transitionEngine.onRemovalComplete=(d,f)=>this.onRemovalComplete(d,f)}registerTrigger(i,e,s,d,f){const _=i+"-"+d;let w=this._triggerCache[_];if(!w){const D=[],P=mX(this._driver,f,D,[]);if(D.length)throw function sde(a,i){return new Ce(3404,!1)}();w=function aue(a,i,e){return new oue(a,i,e)}(d,P,this._normalizer),this._triggerCache[_]=w}this._transitionEngine.registerTrigger(e,d,w)}register(i,e){this._transitionEngine.register(i,e)}destroy(i,e){this._transitionEngine.destroy(i,e)}onInsert(i,e,s,d){this._transitionEngine.insertNode(i,e,s,d)}onRemove(i,e,s,d){this._transitionEngine.removeNode(i,e,d||!1,s)}disableAnimations(i,e){this._transitionEngine.markElementAsDisabled(i,e)}process(i,e,s,d){if("@"==s.charAt(0)){const[f,_]=Bte(s);this._timelineEngine.command(f,e,_,d)}else this._transitionEngine.trigger(i,e,s,d)}listen(i,e,s,d,f){if("@"==s.charAt(0)){const[_,w]=Bte(s);return this._timelineEngine.listen(_,e,w,f)}return this._transitionEngine.listen(i,e,s,d,f)}flush(i=-1){this._transitionEngine.flush(i)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}let Due=(()=>{class a{constructor(e,s,d){this._element=e,this._startStyles=s,this._endStyles=d,this._state=0;let f=a.initialStylesByElement.get(e);f||a.initialStylesByElement.set(e,f=new Map),this._initialStyles=f}start(){this._state<1&&(this._startStyles&&qu(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(qu(this._element,this._initialStyles),this._endStyles&&(qu(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(a.initialStylesByElement.delete(this._element),this._startStyles&&(mb(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(mb(this._element,this._endStyles),this._endStyles=null),qu(this._element,this._initialStyles),this._state=3)}}return a.initialStylesByElement=new WeakMap,a})();function MX(a){let i=null;return a.forEach((e,s)=>{(function Mue(a){return"display"===a||"position"===a})(s)&&(i=i||new Map,i.set(s,e))}),i}class fne{constructor(i,e,s,d){this.element=i,this.keyframes=e,this.options=s,this._specialStyles=d,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=s.duration,this._delay=s.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(i=>i()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const i=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,i,this.options),this._finalKeyframe=i.length?i[i.length-1]:new Map,this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(i){const e=[];return i.forEach(s=>{e.push(Object.fromEntries(s))}),e}_triggerWebAnimation(i,e,s){return i.animate(this._convertKeyframesToObject(e),s)}onStart(i){this._originalOnStartFns.push(i),this._onStartFns.push(i)}onDone(i){this._originalOnDoneFns.push(i),this._onDoneFns.push(i)}onDestroy(i){this._onDestroyFns.push(i)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(i=>i()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(i=>i()),this._onDestroyFns=[])}setPosition(i){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=i*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const i=new Map;this.hasStarted()&&this._finalKeyframe.forEach((s,d)=>{"offset"!==d&&i.set(d,this._finished?s:Qte(this.element,d))}),this.currentSnapshot=i}triggerCallback(i){const e="start"===i?this._onStartFns:this._onDoneFns;e.forEach(s=>s()),e.length=0}}class Tue{validateStyleProperty(i){return!0}validateAnimatableStyleProperty(i){return!0}matchesElement(i,e){return!1}containsElement(i,e){return Gte(i,e)}getParentElement(i){return lX(i)}query(i,e,s){return Ute(i,e,s)}computeStyle(i,e,s){return window.getComputedStyle(i)[e]}animate(i,e,s,d,f,_=[]){const D={duration:s,delay:d,fill:0==d?"both":"forwards"};f&&(D.easing=f);const k=new Map,P=_.filter(Z=>Z instanceof fne);(function Ide(a,i){return 0===a||0===i})(s,d)&&P.forEach(Z=>{Z.currentSnapshot.forEach((te,re)=>k.set(re,te))});let z=function Tde(a){return a.length?a[0]instanceof Map?a:a.map(i=>Yte(i)):[]}(e).map(Z=>Pg(Z));z=function Pde(a,i,e){if(e.size&&i.length){let s=i[0],d=[];if(e.forEach((f,_)=>{s.has(_)||d.push(_),s.set(_,f)}),d.length)for(let f=1;f_.set(w,Qte(a,w)))}}return i}(i,z,k);const W=function Sue(a,i){let e=null,s=null;return Array.isArray(i)&&i.length?(e=MX(i[0]),i.length>1&&(s=MX(i[i.length-1]))):i instanceof Map&&(e=MX(i)),e||s?new Due(a,e,s):null}(i,z);return new fne(i,z,D,W)}}let Aue=(()=>{class a extends j3{constructor(e,s){super(),this._nextAnimationId=0,this._renderer=e.createRenderer(s.body,{id:"0",encapsulation:ko.None,styles:[],data:{animation:[]}})}build(e){const s=this._nextAnimationId.toString();this._nextAnimationId++;const d=Array.isArray(e)?W3(e):e;return pne(this._renderer,null,s,"register",[d]),new kue(s,this._renderer)}}return a.\u0275fac=function(e){return new(e||a)(oe(Ep),oe(bt))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();class kue extends $3{constructor(i,e){super(),this._id=i,this._renderer=e}create(i,e){return new Eue(this._id,i,e||{},this._renderer)}}class Eue{constructor(i,e,s,d){this.id=i,this.element=e,this._renderer=d,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",s)}_listen(i,e){return this._renderer.listen(this.element,`@@${this.id}:${i}`,e)}_command(i,...e){return pne(this._renderer,this.element,this.id,i,e)}onDone(i){this._listen("done",i)}onStart(i){this._listen("start",i)}onDestroy(i){this._listen("destroy",i)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(i){this._command("setPosition",i)}getPosition(){var i,e;return null!==(i=null===(e=this._renderer.engine.players[+this.id])||void 0===e?void 0:e.getPosition())&&void 0!==i?i:0}}function pne(a,i,e,s,d){return a.setProperty(i,`@@${e}:${s}`,d)}const mne="@.disabled";let Iue=(()=>{class a{constructor(e,s,d){this.delegate=e,this.engine=s,this._zone=d,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),s.onRemovalComplete=(f,_)=>{const w=null==_?void 0:_.parentNode(f);w&&_.removeChild(w,f)}}createRenderer(e,s){const f=this.delegate.createRenderer(e,s);if(!(e&&s&&s.data&&s.data.animation)){let P=this._rendererCache.get(f);return P||(P=new gne("",f,this.engine,()=>this._rendererCache.delete(f)),this._rendererCache.set(f,P)),P}const _=s.id,w=s.id+"-"+this._currentId;this._currentId++,this.engine.register(w,e);const D=P=>{Array.isArray(P)?P.forEach(D):this.engine.registerTrigger(_,w,e,P.name,P)};return s.data.animation.forEach(D),new Pue(this,w,f,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(e,s,d){e>=0&&es(d)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(f=>{const[_,w]=f;_(w)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([s,d]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return a.\u0275fac=function(e){return new(e||a)(oe(Ep),oe(Q4),oe(Je))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})();class gne{constructor(i,e,s,d){this.namespaceId=i,this.delegate=e,this.engine=s,this._onDestroy=d,this.destroyNode=this.delegate.destroyNode?f=>e.destroyNode(f):null}get data(){return this.delegate.data}destroy(){var i;this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy(),null===(i=this._onDestroy)||void 0===i||i.call(this)}createElement(i,e){return this.delegate.createElement(i,e)}createComment(i){return this.delegate.createComment(i)}createText(i){return this.delegate.createText(i)}appendChild(i,e){this.delegate.appendChild(i,e),this.engine.onInsert(this.namespaceId,e,i,!1)}insertBefore(i,e,s,d=!0){this.delegate.insertBefore(i,e,s),this.engine.onInsert(this.namespaceId,e,i,d)}removeChild(i,e,s){this.engine.onRemove(this.namespaceId,e,this.delegate,s)}selectRootElement(i,e){return this.delegate.selectRootElement(i,e)}parentNode(i){return this.delegate.parentNode(i)}nextSibling(i){return this.delegate.nextSibling(i)}setAttribute(i,e,s,d){this.delegate.setAttribute(i,e,s,d)}removeAttribute(i,e,s){this.delegate.removeAttribute(i,e,s)}addClass(i,e){this.delegate.addClass(i,e)}removeClass(i,e){this.delegate.removeClass(i,e)}setStyle(i,e,s,d){this.delegate.setStyle(i,e,s,d)}removeStyle(i,e,s){this.delegate.removeStyle(i,e,s)}setProperty(i,e,s){"@"==e.charAt(0)&&e==mne?this.disableAnimations(i,!!s):this.delegate.setProperty(i,e,s)}setValue(i,e){this.delegate.setValue(i,e)}listen(i,e,s){return this.delegate.listen(i,e,s)}disableAnimations(i,e){this.engine.disableAnimations(i,e)}}class Pue extends gne{constructor(i,e,s,d,f){super(e,s,d,f),this.factory=i,this.namespaceId=e}setProperty(i,e,s){"@"==e.charAt(0)?"."==e.charAt(1)&&e==mne?this.disableAnimations(i,s=void 0===s||!!s):this.engine.process(this.namespaceId,i,e.slice(1),s):this.delegate.setProperty(i,e,s)}listen(i,e,s){if("@"==e.charAt(0)){const d=function Rue(a){switch(a){case"body":return document.body;case"document":return document;case"window":return window;default:return a}}(i);let f=e.slice(1),_="";return"@"!=f.charAt(0)&&([f,_]=function Oue(a){const i=a.indexOf(".");return[a.substring(0,i),a.slice(i+1)]}(f)),this.engine.listen(this.namespaceId,d,f,_,w=>{this.factory.scheduleListenerCallback(w._data||-1,s,w)})}return this.delegate.listen(i,e,s)}}const vne=[{provide:j3,useClass:Aue},{provide:bX,useFactory:function Fue(){return new tue}},{provide:Q4,useClass:(()=>{class a extends Q4{constructor(e,s,d,f){super(e.body,s,d)}ngOnDestroy(){this.flush()}}return a.\u0275fac=function(e){return new(e||a)(oe(bt),oe(cX),oe(bX),oe(cf))},a.\u0275prov=ke({token:a,factory:a.\u0275fac}),a})()},{provide:Ep,useFactory:function Nue(a,i,e){return new Iue(a,i,e)},deps:[fl,Q4,Je]}],TX=[{provide:cX,useFactory:()=>new Tue},{provide:ki,useValue:"BrowserAnimations"},...vne],_ne=[{provide:cX,useClass:jte},{provide:ki,useValue:"NoopAnimations"},...vne];let Bue=(()=>{class a{static withConfig(e){return{ngModule:a,providers:e.disableAnimations?_ne:TX}}}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:TX,imports:[kN]}),a})();function Vue(a,i){1&a&&(I(0,"span",8),ht(1,1),O())}function zue(a,i){1&a&&(I(0,"span",9),ht(1,2),O())}const Hue=["*",[["mat-chip-avatar"],["","matChipAvatar",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],Gue=["*","mat-chip-avatar, [matChipAvatar]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function Wue(a,i){if(1&a&&(gn(0),he(1,"span",9)(2,"span",10),vn()),2&a){const e=q();N(1),V("matRippleDisabled",e._isRippleDisabled())("matRippleCentered",e._isRippleCentered)("matRippleTrigger",e._elementRef.nativeElement)}}function Yue(a,i){1&a&&(I(0,"span",11),ht(1),O())}function que(a,i){1&a&&(gn(0),ht(1,1),vn())}function Xue(a,i){1&a&&ht(0,2,["*ngIf","contentEditInput; else defaultMatChipEditInput"])}function Zue(a,i){1&a&&he(0,"span",14)}function Kue(a,i){if(1&a&&(gn(0),Q(1,Xue,1,0,"ng-content",12),Q(2,Zue,1,0,"ng-template",null,13,Nr),vn()),2&a){const e=on(3),s=q();N(1),V("ngIf",s.contentEditInput)("ngIfElse",e)}}function Que(a,i){1&a&&(I(0,"span",15),ht(1,3),O())}const Jue=[[["mat-chip-avatar"],["","matChipAvatar",""]],"*",[["","matChipEditInput",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],ehe=["mat-chip-avatar, [matChipAvatar]","*","[matChipEditInput]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"],AX=["*"],wne=new _e("mat-chips-default-options"),xne=new _e("MatChipAvatar"),Cne=new _e("MatChipTrailingIcon"),Sne=new _e("MatChipRemove"),eH=new _e("MatChip");class the{}const nhe=Cy(the,-1);let rS=(()=>{class a extends nhe{get disabled(){return this._disabled||this._parentChip.disabled}set disabled(e){this._disabled=We(e)}_getDisabledAttribute(){return this.disabled&&!this._allowFocusWhenDisabled?"":null}_getTabindex(){return this.disabled&&!this._allowFocusWhenDisabled||!this.isInteractive?null:this.tabIndex.toString()}constructor(e,s){super(),this._elementRef=e,this._parentChip=s,this.isInteractive=!0,this._isPrimary=!0,this._disabled=!1,this._allowFocusWhenDisabled=!1,"BUTTON"===e.nativeElement.nodeName&&e.nativeElement.setAttribute("type","button")}focus(){this._elementRef.nativeElement.focus()}_handleClick(e){!this.disabled&&this.isInteractive&&this._isPrimary&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!this.disabled&&this.isInteractive&&this._isPrimary&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(eH))},a.\u0275dir=me({type:a,selectors:[["","matChipAction",""]],hostAttrs:[1,"mdc-evolution-chip__action","mat-mdc-chip-action"],hostVars:9,hostBindings:function(e,s){1&e&&J("click",function(f){return s._handleClick(f)})("keydown",function(f){return s._handleKeydown(f)}),2&e&&(He("tabindex",s._getTabindex())("disabled",s._getDisabledAttribute())("aria-disabled",s.disabled),at("mdc-evolution-chip__action--primary",s._isPrimary)("mdc-evolution-chip__action--presentational",!s.isInteractive)("mdc-evolution-chip__action--trailing",!s._isPrimary))},inputs:{disabled:"disabled",tabIndex:"tabIndex",isInteractive:"isInteractive",_allowFocusWhenDisabled:"_allowFocusWhenDisabled"},features:[Se]}),a})(),Dne=(()=>{class a extends rS{constructor(){super(...arguments),this._isPrimary=!1}_handleClick(e){this.disabled||(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!this.disabled&&(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}}return a.\u0275fac=function(){let i;return function(s){return(i||(i=It(a)))(s||a)}}(),a.\u0275dir=me({type:a,selectors:[["","matChipRemove",""]],hostAttrs:["role","button",1,"mat-mdc-chip-remove","mat-mdc-chip-trailing-icon","mat-mdc-focus-indicator","mdc-evolution-chip__icon","mdc-evolution-chip__icon--trailing"],hostVars:1,hostBindings:function(e,s){2&e&&He("aria-hidden",null)},features:[et([{provide:Sne,useExisting:a}]),Se]}),a})(),ahe=0;const ohe=Cy(gc(vc(mc(class{constructor(a){this._elementRef=a}})),"primary"),-1);let aS=(()=>{class a extends ohe{_hasFocus(){return this._hasFocusInternal}get value(){return void 0!==this._value?this._value:this._textElement.textContent.trim()}set value(e){this._value=e}get removable(){return this._removable}set removable(e){this._removable=We(e)}get highlighted(){return this._highlighted}set highlighted(e){this._highlighted=We(e)}constructor(e,s,d,f,_,w,D,k){super(s),this._changeDetectorRef=e,this._ngZone=d,this._focusMonitor=f,this._globalRippleOptions=D,this._isRippleCentered=!1,this._onFocus=new Ue,this._onBlur=new Ue,this.role=null,this._hasFocusInternal=!1,this.id="mat-mdc-chip-"+ahe++,this.ariaLabel=null,this.ariaDescription=null,this._ariaDescriptionId=`${this.id}-aria-description`,this._removable=!0,this._highlighted=!1,this.removed=new ye,this.destroyed=new ye,this.basicChipAttrName="mat-basic-chip";const P=s.nativeElement;var z;this._document=_,this._animationsDisabled="NoopAnimations"===w,this._isBasicChip=P.hasAttribute(this.basicChipAttrName)||P.tagName.toLowerCase()===this.basicChipAttrName,null!=k&&(this.tabIndex=null!==(z=parseInt(k))&&void 0!==z?z:this.defaultTabIndex),this._monitorFocus()}ngAfterViewInit(){this._textElement=this._elementRef.nativeElement.querySelector(".mat-mdc-chip-action-label"),this._pendingFocus&&(this._pendingFocus=!1,this.focus())}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this.destroyed.emit({chip:this}),this.destroyed.complete()}remove(){this.removable&&this.removed.emit({chip:this})}_isRippleDisabled(){var e;return this.disabled||this.disableRipple||this._animationsDisabled||this._isBasicChip||!(null===(e=this._globalRippleOptions)||void 0===e||!e.disabled)}_hasTrailingIcon(){return!(!this.trailingIcon&&!this.removeIcon)}_handleKeydown(e){(8===e.keyCode||46===e.keyCode)&&(e.preventDefault(),this.remove())}focus(){this.disabled||(this.primaryAction?this.primaryAction.focus():this._pendingFocus=!0)}_getSourceAction(e){return this._getActions().find(s=>{const d=s._elementRef.nativeElement;return d===e||d.contains(e)})}_getActions(){const e=[];return this.primaryAction&&e.push(this.primaryAction),this.removeIcon&&e.push(this.removeIcon),this.trailingIcon&&e.push(this.trailingIcon),e}_handlePrimaryActionInteraction(){}_monitorFocus(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{const s=null!==e;s!==this._hasFocusInternal&&(this._hasFocusInternal=s,s?this._onFocus.next({chip:this}):this._ngZone.onStable.pipe(Pn(1)).subscribe(()=>this._ngZone.run(()=>this._onBlur.next({chip:this}))))})}}return a.\u0275fac=function(e){return new(e||a)(F(Zt),F(Be),F(Je),F(Wo),F(bt),F(ki,8),F(My,8),hs("tabindex"))},a.\u0275cmp=we({type:a,selectors:[["mat-basic-chip"],["mat-chip"]],contentQueries:function(e,s,d){if(1&e&&(hn(d,xne,5),hn(d,Cne,5),hn(d,Sne,5)),2&e){let f;Ee(f=Oe())&&(s.leadingIcon=f.first),Ee(f=Oe())&&(s.trailingIcon=f.first),Ee(f=Oe())&&(s.removeIcon=f.first)}},viewQuery:function(e,s){if(1&e&&(ot(Ur,5),ot(rS,5)),2&e){let d;Ee(d=Oe())&&(s.ripple=d.first),Ee(d=Oe())&&(s.primaryAction=d.first)}},hostAttrs:[1,"mat-mdc-chip"],hostVars:30,hostBindings:function(e,s){1&e&&J("keydown",function(f){return s._handleKeydown(f)}),2&e&&(Oa("id",s.id),He("role",s.role)("tabindex",s.role?s.tabIndex:null)("aria-label",s.ariaLabel),at("mdc-evolution-chip",!s._isBasicChip)("mdc-evolution-chip--disabled",s.disabled)("mdc-evolution-chip--with-trailing-action",s._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",s.leadingIcon)("mdc-evolution-chip--with-primary-icon",s.leadingIcon)("mdc-evolution-chip--with-avatar",s.leadingIcon)("mat-mdc-chip-with-avatar",s.leadingIcon)("mat-mdc-chip-highlighted",s.highlighted)("mat-mdc-chip-disabled",s.disabled)("mat-mdc-basic-chip",s._isBasicChip)("mat-mdc-standard-chip",!s._isBasicChip)("mat-mdc-chip-with-trailing-icon",s._hasTrailingIcon())("_mat-animation-noopable",s._animationsDisabled))},inputs:{color:"color",disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex",role:"role",id:"id",ariaLabel:["aria-label","ariaLabel"],ariaDescription:["aria-description","ariaDescription"],value:"value",removable:"removable",highlighted:"highlighted"},outputs:{removed:"removed",destroyed:"destroyed"},exportAs:["matChip"],features:[et([{provide:eH,useExisting:a}]),Se],ngContentSelectors:Gue,decls:9,vars:6,consts:[["matRipple","",1,"mat-mdc-chip-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"isInteractive"],["class","mdc-evolution-chip__graphic mat-mdc-chip-graphic",4,"ngIf"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],[1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],["class","mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing",4,"ngIf"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(e,s){1&e&&(Fn(Hue),he(0,"span",0)(1,"span",1),I(2,"span",2)(3,"span",3),Q(4,Vue,2,0,"span",4),I(5,"span",5),ht(6),he(7,"span",6),O()()(),Q(8,zue,2,0,"span",7)),2&e&&(V("matRippleDisabled",s._isRippleDisabled())("matRippleCentered",s._isRippleCentered)("matRippleTrigger",s._elementRef.nativeElement),N(3),V("isInteractive",!1),N(1),V("ngIf",s.leadingIcon),N(4),V("ngIf",s._hasTrailingIcon()))},dependencies:[zt,Ur,rS],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{overflow-x:hidden}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mdc-evolution-chip__action--primary:before{box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1}.mdc-evolution-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-evolution-chip__action-touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-evolution-chip__text-label{white-space:nowrap;user-select:none;text-overflow:ellipsis;overflow:hidden}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mdc-evolution-chip__checkmark-background{opacity:0}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__graphic{transition:width 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark{transition:opacity 50ms 0ms linear,transform 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-50%, -50%)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@keyframes mdc-evolution-chip-enter{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-evolution-chip--enter{animation:mdc-evolution-chip-enter 100ms 0ms cubic-bezier(0, 0, 0.2, 1)}@keyframes mdc-evolution-chip-exit{from{opacity:1}to{opacity:0}}.mdc-evolution-chip--exit{animation:mdc-evolution-chip-exit 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-evolution-chip--hidden{opacity:0;pointer-events:none;transition:width 150ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-standard-chip .mdc-evolution-chip__checkmark{height:20px;width:20px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__graphic{height:24px;width:24px;font-size:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__icon--primary{height:24px;width:24px;font-size:24px}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);height:var(--mdc-chip-container-height, 32px)}.mat-mdc-standard-chip .mdc-evolution-chip__ripple{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius, 14px 14px 14px 14px)}.mat-mdc-standard-chip.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{height:var(--mdc-chip-with-avatar-avatar-size, 28px);width:var(--mdc-chip-with-avatar-avatar-size, 28px);font-size:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-outline-width, 1px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-outline-width, 1px)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--selected) .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-unselected-outline-width, 1px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{height:var(--mdc-chip-with-icon-icon-size, 18px);width:var(--mdc-chip-with-icon-icon-size, 18px);font-size:var(--mdc-chip-with-icon-icon-size, 18px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, currentColor)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-standard-chip .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:.4}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary{width:100%}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{opacity:.04}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{opacity:.12}.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-chip-remove{opacity:.54}.mat-mdc-chip-remove:focus{opacity:1}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px) * -1);left:8px;right:8px}.mat-mdc-chip-remove .mat-icon{width:inherit;height:inherit;font-size:inherit;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),a})(),tH=(()=>{class a{constructor(e,s){this._elementRef=e,this._document=s}initialize(e){this.getNativeElement().focus(),this.setValue(e)}getNativeElement(){return this._elementRef.nativeElement}setValue(e){this.getNativeElement().textContent=e,this._moveCursorToEndOfInput()}getValue(){return this.getNativeElement().textContent||""}_moveCursorToEndOfInput(){const e=this._document.createRange();e.selectNodeContents(this.getNativeElement()),e.collapse(!1);const s=window.getSelection();s.removeAllRanges(),s.addRange(e)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(bt))},a.\u0275dir=me({type:a,selectors:[["span","matChipEditInput",""]],hostAttrs:["role","textbox","tabindex","-1","contenteditable","true",1,"mat-chip-edit-input"]}),a})(),kX=(()=>{class a extends aS{constructor(e,s,d,f,_,w,D,k){super(e,s,d,f,_,w,D,k),this.basicChipAttrName="mat-basic-chip-row",this._editStartPending=!1,this.editable=!1,this.edited=new ye,this._isEditing=!1,this.role="row",this._onBlur.pipe(Tt(this.destroyed)).subscribe(()=>{this._isEditing&&!this._editStartPending&&this._onEditFinish()})}_hasTrailingIcon(){return!this._isEditing&&super._hasTrailingIcon()}_mousedown(e){this._isEditing||(this.disabled||this.focus(),e.preventDefault())}_handleKeydown(e){13!==e.keyCode||this.disabled?this._isEditing?e.stopPropagation():super._handleKeydown(e):this._isEditing?(e.preventDefault(),this._onEditFinish()):this.editable&&this._startEditing(e)}_doubleclick(e){!this.disabled&&this.editable&&this._startEditing(e)}_startEditing(e){if(!this.primaryAction||this.removeIcon&&this._getSourceAction(e.target)===this.removeIcon)return;const s=this.value;this._isEditing=!0,this._editStartPending=!0,setTimeout(()=>{this._getEditInput().initialize(s),this._editStartPending=!1})}_onEditFinish(){this._isEditing=!1,this._editStartPending=!1,this.edited.emit({chip:this,value:this._getEditInput().getValue()}),(this._document.activeElement===this._getEditInput().getNativeElement()||this._document.activeElement===this._document.body)&&this.primaryAction.focus()}_getEditInput(){return this.contentEditInput||this.defaultEditInput}}return a.\u0275fac=function(e){return new(e||a)(F(Zt),F(Be),F(Je),F(Wo),F(bt),F(ki,8),F(My,8),hs("tabindex"))},a.\u0275cmp=we({type:a,selectors:[["mat-chip-row"],["mat-basic-chip-row"]],contentQueries:function(e,s,d){if(1&e&&hn(d,tH,5),2&e){let f;Ee(f=Oe())&&(s.contentEditInput=f.first)}},viewQuery:function(e,s){if(1&e&&ot(tH,5),2&e){let d;Ee(d=Oe())&&(s.defaultEditInput=d.first)}},hostAttrs:[1,"mat-mdc-chip","mat-mdc-chip-row","mdc-evolution-chip"],hostVars:27,hostBindings:function(e,s){1&e&&J("mousedown",function(f){return s._mousedown(f)})("dblclick",function(f){return s._doubleclick(f)}),2&e&&(Oa("id",s.id),He("tabindex",null)("aria-label",null)("aria-description",null)("role",s.role),at("mat-mdc-chip-with-avatar",s.leadingIcon)("mat-mdc-chip-disabled",s.disabled)("mat-mdc-chip-editing",s._isEditing)("mat-mdc-chip-editable",s.editable)("mdc-evolution-chip--disabled",s.disabled)("mdc-evolution-chip--with-trailing-action",s._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",s.leadingIcon)("mdc-evolution-chip--with-primary-icon",s.leadingIcon)("mdc-evolution-chip--with-avatar",s.leadingIcon)("mat-mdc-chip-highlighted",s.highlighted)("mat-mdc-chip-with-trailing-icon",s._hasTrailingIcon()))},inputs:{color:"color",disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex",editable:"editable"},outputs:{edited:"edited"},features:[et([{provide:aS,useExisting:a},{provide:eH,useExisting:a}]),Se],ngContentSelectors:ehe,decls:11,vars:13,consts:[[4,"ngIf"],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"tabIndex","disabled"],["class","mdc-evolution-chip__graphic mat-mdc-chip-graphic",4,"ngIf"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label",3,"ngSwitch"],[4,"ngSwitchCase"],[1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],["class","mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing","role","gridcell",4,"ngIf"],[1,"cdk-visually-hidden",3,"id"],["matRipple","",1,"mat-mdc-chip-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[4,"ngIf","ngIfElse"],["defaultMatChipEditInput",""],["matChipEditInput",""],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(e,s){1&e&&(Fn(Jue),Q(0,Wue,3,3,"ng-container",0),I(1,"span",1)(2,"span",2),Q(3,Yue,2,0,"span",3),I(4,"span",4),Q(5,que,2,0,"ng-container",5),Q(6,Kue,4,2,"ng-container",5),he(7,"span",6),O()()(),Q(8,Que,2,0,"span",7),I(9,"span",8),Y(10),O()),2&e&&(V("ngIf",!s._isEditing),N(2),V("tabIndex",s.tabIndex)("disabled",s.disabled),He("role",s.editable?"button":null)("aria-label",s.ariaLabel)("aria-describedby",s._ariaDescriptionId),N(1),V("ngIf",s.leadingIcon),N(1),V("ngSwitch",s._isEditing),N(1),V("ngSwitchCase",!1),N(1),V("ngSwitchCase",!0),N(2),V("ngIf",s._hasTrailingIcon()),N(1),V("id",s._ariaDescriptionId),N(1),In(s.ariaDescription))},dependencies:[zt,id,oc,Ur,rS,tH],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{overflow-x:hidden}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mdc-evolution-chip__action--primary:before{box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1}.mdc-evolution-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-evolution-chip__action-touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-evolution-chip__text-label{white-space:nowrap;user-select:none;text-overflow:ellipsis;overflow:hidden}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mdc-evolution-chip__checkmark-background{opacity:0}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__graphic{transition:width 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark{transition:opacity 50ms 0ms linear,transform 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-50%, -50%)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@keyframes mdc-evolution-chip-enter{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-evolution-chip--enter{animation:mdc-evolution-chip-enter 100ms 0ms cubic-bezier(0, 0, 0.2, 1)}@keyframes mdc-evolution-chip-exit{from{opacity:1}to{opacity:0}}.mdc-evolution-chip--exit{animation:mdc-evolution-chip-exit 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-evolution-chip--hidden{opacity:0;pointer-events:none;transition:width 150ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-standard-chip .mdc-evolution-chip__checkmark{height:20px;width:20px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__graphic{height:24px;width:24px;font-size:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__icon--primary{height:24px;width:24px;font-size:24px}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);height:var(--mdc-chip-container-height, 32px)}.mat-mdc-standard-chip .mdc-evolution-chip__ripple{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius, 14px 14px 14px 14px)}.mat-mdc-standard-chip.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{height:var(--mdc-chip-with-avatar-avatar-size, 28px);width:var(--mdc-chip-with-avatar-avatar-size, 28px);font-size:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-outline-width, 1px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-outline-width, 1px)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--selected) .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-unselected-outline-width, 1px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{height:var(--mdc-chip-with-icon-icon-size, 18px);width:var(--mdc-chip-with-icon-icon-size, 18px);font-size:var(--mdc-chip-with-icon-icon-size, 18px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, currentColor)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-standard-chip .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:.4}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary{width:100%}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{opacity:.04}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{opacity:.12}.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-chip-remove{opacity:.54}.mat-mdc-chip-remove:focus{opacity:1}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px) * -1);left:8px;right:8px}.mat-mdc-chip-remove .mat-icon{width:inherit;height:inherit;font-size:inherit;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),a})();class she{constructor(i){}}const lhe=Cy(she);let EX=(()=>{class a extends lhe{get chipFocusChanges(){return this._getChipStream(e=>e._onFocus)}get chipDestroyedChanges(){return this._getChipStream(e=>e.destroyed)}get disabled(){return this._disabled}set disabled(e){this._disabled=We(e),this._syncChipsState()}get empty(){return 0===this._chips.length}get role(){return this._explicitRole?this._explicitRole:this.empty?null:this._defaultRole}set role(e){this._explicitRole=e}get focused(){return this._hasFocusedChip()}constructor(e,s,d){super(e),this._elementRef=e,this._changeDetectorRef=s,this._dir=d,this._lastDestroyedFocusedChipIndex=null,this._destroyed=new Ue,this._defaultRole="presentation",this._disabled=!1,this._explicitRole=null,this._chipActions=new lu}ngAfterViewInit(){this._setUpFocusManagement(),this._trackChipSetChanges(),this._trackDestroyedFocusedChip()}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._chipActions.destroy(),this._destroyed.next(),this._destroyed.complete()}_hasFocusedChip(){return this._chips&&this._chips.some(e=>e._hasFocus())}_syncChipsState(){this._chips&&this._chips.forEach(e=>{e.disabled=this._disabled,e._changeDetectorRef.markForCheck()})}focus(){}_handleKeydown(e){this._originatesFromChip(e)&&this._keyManager.onKeydown(e)}_isValidIndex(e){return e>=0&&e{this.tabIndex=e,this._changeDetectorRef.markForCheck()}))}_getChipStream(e){return this._chips.changes.pipe(Ji(null),Qi(()=>Mi(...this._chips.map(e))))}_originatesFromChip(e){let s=e.target;for(;s&&s!==this._elementRef.nativeElement;){if(s.classList&&s.classList.contains("mdc-evolution-chip"))return!0;s=s.parentElement}return!1}_setUpFocusManagement(){var e;this._chips.changes.pipe(Ji(this._chips)).subscribe(s=>{const d=[];s.forEach(f=>f._getActions().forEach(_=>d.push(_))),this._chipActions.reset(d),this._chipActions.notifyOnChanges()}),this._keyManager=new pE(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir?this._dir.value:"ltr").withHomeAndEnd().skipPredicate(s=>this._skipPredicate(s)),this.chipFocusChanges.pipe(Tt(this._destroyed)).subscribe(({chip:s})=>{const d=s._getSourceAction(document.activeElement);d&&this._keyManager.updateActiveItem(d)}),null===(e=this._dir)||void 0===e||e.change.pipe(Tt(this._destroyed)).subscribe(s=>this._keyManager.withHorizontalOrientation(s))}_skipPredicate(e){return!e.isInteractive||e.disabled}_trackChipSetChanges(){this._chips.changes.pipe(Ji(null),Tt(this._destroyed)).subscribe(()=>{this.disabled&&Promise.resolve().then(()=>this._syncChipsState()),this._redirectDestroyedChipFocus()})}_trackDestroyedFocusedChip(){this.chipDestroyedChanges.pipe(Tt(this._destroyed)).subscribe(e=>{const d=this._chips.toArray().indexOf(e.chip);this._isValidIndex(d)&&e.chip._hasFocus()&&(this._lastDestroyedFocusedChipIndex=d)})}_redirectDestroyedChipFocus(){if(null!=this._lastDestroyedFocusedChipIndex){if(this._chips.length){const e=Math.min(this._lastDestroyedFocusedChipIndex,this._chips.length-1),s=this._chips.toArray()[e];s.disabled?1===this._chips.length?this.focus():this._keyManager.setPreviousItemActive():s.focus()}else this.focus();this._lastDestroyedFocusedChipIndex=null}}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Ni,8))},a.\u0275cmp=we({type:a,selectors:[["mat-chip-set"]],contentQueries:function(e,s,d){if(1&e&&hn(d,aS,5),2&e){let f;Ee(f=Oe())&&(s._chips=f)}},hostAttrs:[1,"mat-mdc-chip-set","mdc-evolution-chip-set"],hostVars:1,hostBindings:function(e,s){1&e&&J("keydown",function(f){return s._handleKeydown(f)}),2&e&&He("role",s.role)},inputs:{disabled:"disabled",role:"role"},features:[Se],ngContentSelectors:AX,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(e,s){1&e&&(Fn(),I(0,"span",0),ht(1),O())},styles:[".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0}),a})();class uhe{constructor(i,e){this.source=i,this.value=e}}class hhe extends EX{constructor(i,e,s,d,f,_,w){super(i,e,s),this._defaultErrorStateMatcher=d,this._parentForm=f,this._parentFormGroup=_,this.ngControl=w,this.stateChanges=new Ue}}const fhe=B3(hhe);let Ane=(()=>{class a extends fhe{get disabled(){return this.ngControl?!!this.ngControl.disabled:this._disabled}set disabled(e){this._disabled=We(e),this._syncChipsState()}get id(){return this._chipInput.id}get empty(){return(!this._chipInput||this._chipInput.empty)&&(!this._chips||0===this._chips.length)}get placeholder(){return this._chipInput?this._chipInput.placeholder:this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get focused(){return this._chipInput.focused||this._hasFocusedChip()}get required(){var e,s,d,f;return null!==(e=null!==(s=this._required)&&void 0!==s?s:null===(d=this.ngControl)||void 0===d||null===(f=d.control)||void 0===f?void 0:f.hasValidator(t1.required))&&void 0!==e&&e}set required(e){this._required=We(e),this.stateChanges.next()}get shouldLabelFloat(){return!this.empty||this.focused}get value(){return this._value}set value(e){this._value=e}get chipBlurChanges(){return this._getChipStream(e=>e._onBlur)}constructor(e,s,d,f,_,w,D){super(e,s,d,w,f,_,D),this.controlType="mat-chip-grid",this._defaultRole="grid",this._ariaDescribedbyIds=[],this._onTouched=()=>{},this._onChange=()=>{},this._value=[],this.change=new ye,this.valueChange=new ye,this.ngControl&&(this.ngControl.valueAccessor=this)}ngAfterContentInit(){this.chipBlurChanges.pipe(Tt(this._destroyed)).subscribe(()=>{this._blur(),this.stateChanges.next()}),Mi(this.chipFocusChanges,this._chips.changes).pipe(Tt(this._destroyed)).subscribe(()=>this.stateChanges.next())}ngAfterViewInit(){super.ngAfterViewInit()}ngDoCheck(){this.ngControl&&this.updateErrorState()}ngOnDestroy(){super.ngOnDestroy(),this.stateChanges.complete()}registerInput(e){this._chipInput=e,this._chipInput.setDescribedByIds(this._ariaDescribedbyIds)}onContainerClick(e){!this.disabled&&!this._originatesFromChip(e)&&this.focus()}focus(){this.disabled||this._chipInput.focused||(!this._chips.length||this._chips.first.disabled?Promise.resolve().then(()=>this._chipInput.focus()):this._chips.length&&this._keyManager.setFirstItemActive(),this.stateChanges.next())}setDescribedByIds(e){var s;this._ariaDescribedbyIds=e,null===(s=this._chipInput)||void 0===s||s.setDescribedByIds(e)}writeValue(e){this._value=e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this.stateChanges.next()}_blur(){this.disabled||setTimeout(()=>{this.focused||(this._propagateChanges(),this._markAsTouched())})}_allowFocusEscape(){this._chipInput.focused||super._allowFocusEscape()}_handleKeydown(e){9===e.keyCode?this._chipInput.focused&&pr(e,"shiftKey")&&this._chips.length&&!this._chips.last.disabled?(e.preventDefault(),this._keyManager.activeItem?this._keyManager.setActiveItem(this._keyManager.activeItem):this._focusLastChip()):super._allowFocusEscape():this._chipInput.focused||super._handleKeydown(e),this.stateChanges.next()}_focusLastChip(){this._chips.length&&this._chips.last.focus()}_propagateChanges(){const e=this._chips.length?this._chips.toArray().map(s=>s.value):[];this._value=e,this.change.emit(new uhe(this,e)),this.valueChange.emit(e),this._onChange(e),this._changeDetectorRef.markForCheck()}_markAsTouched(){this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next()}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(Zt),F(Ni,8),F(wd,8),F(sg,8),F(AE),F(So,10))},a.\u0275cmp=we({type:a,selectors:[["mat-chip-grid"]],contentQueries:function(e,s,d){if(1&e&&hn(d,kX,5),2&e){let f;Ee(f=Oe())&&(s._chips=f)}},hostAttrs:[1,"mat-mdc-chip-set","mat-mdc-chip-grid","mdc-evolution-chip-set"],hostVars:10,hostBindings:function(e,s){1&e&&J("focus",function(){return s.focus()})("blur",function(){return s._blur()}),2&e&&(Oa("tabIndex",s._chips&&0===s._chips.length?-1:s.tabIndex),He("role",s.role)("aria-disabled",s.disabled.toString())("aria-invalid",s.errorState),at("mat-mdc-chip-list-disabled",s.disabled)("mat-mdc-chip-list-invalid",s.errorState)("mat-mdc-chip-list-required",s.required))},inputs:{tabIndex:"tabIndex",disabled:"disabled",placeholder:"placeholder",required:"required",value:"value",errorStateMatcher:"errorStateMatcher"},outputs:{change:"change",valueChange:"valueChange"},features:[et([{provide:F1,useExisting:a}]),Se],ngContentSelectors:AX,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(e,s){1&e&&(Fn(),I(0,"span",0),ht(1),O())},styles:[".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0}),a})(),phe=0,kne=(()=>{class a{set chipGrid(e){e&&(this._chipGrid=e,this._chipGrid.registerInput(this))}get addOnBlur(){return this._addOnBlur}set addOnBlur(e){this._addOnBlur=We(e)}get disabled(){return this._disabled||this._chipGrid&&this._chipGrid.disabled}set disabled(e){this._disabled=We(e)}get empty(){return!this.inputElement.value}constructor(e,s,d){this._elementRef=e,this._defaultOptions=s,this.focused=!1,this._addOnBlur=!1,this.separatorKeyCodes=this._defaultOptions.separatorKeyCodes,this.chipEnd=new ye,this.placeholder="",this.id="mat-mdc-chip-list-input-"+phe++,this._disabled=!1,this.inputElement=this._elementRef.nativeElement,d&&this.inputElement.classList.add("mat-mdc-form-field-input-control")}ngOnChanges(){this._chipGrid.stateChanges.next()}ngOnDestroy(){this.chipEnd.complete()}ngAfterContentInit(){this._focusLastChipOnBackspace=this.empty}_keydown(e){if(e){if(8===e.keyCode&&this._focusLastChipOnBackspace)return this._chipGrid._focusLastChip(),void e.preventDefault();this._focusLastChipOnBackspace=!1}this._emitChipEnd(e)}_keyup(e){!this._focusLastChipOnBackspace&&8===e.keyCode&&this.empty&&(this._focusLastChipOnBackspace=!0,e.preventDefault())}_blur(){this.addOnBlur&&this._emitChipEnd(),this.focused=!1,this._chipGrid.focused||this._chipGrid._blur(),this._chipGrid.stateChanges.next()}_focus(){this.focused=!0,this._focusLastChipOnBackspace=this.empty,this._chipGrid.stateChanges.next()}_emitChipEnd(e){(!e||this._isSeparatorKey(e))&&(this.chipEnd.emit({input:this.inputElement,value:this.inputElement.value,chipInput:this}),null==e||e.preventDefault())}_onInput(){this._chipGrid.stateChanges.next()}focus(){this.inputElement.focus()}clear(){this.inputElement.value="",this._focusLastChipOnBackspace=!0}setDescribedByIds(e){const s=this._elementRef.nativeElement;e.length?s.setAttribute("aria-describedby",e.join(" ")):s.removeAttribute("aria-describedby")}_isSeparatorKey(e){return!pr(e)&&new Set(this.separatorKeyCodes).has(e.keyCode)}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(wne),F(mg,8))},a.\u0275dir=me({type:a,selectors:[["input","matChipInputFor",""]],hostAttrs:[1,"mat-mdc-chip-input","mat-mdc-input-element","mdc-text-field__input","mat-input-element"],hostVars:6,hostBindings:function(e,s){1&e&&J("keydown",function(f){return s._keydown(f)})("keyup",function(f){return s._keyup(f)})("blur",function(){return s._blur()})("focus",function(){return s._focus()})("input",function(){return s._onInput()}),2&e&&(Oa("id",s.id),He("disabled",s.disabled||null)("placeholder",s.placeholder||null)("aria-invalid",s._chipGrid&&s._chipGrid.ngControl?s._chipGrid.ngControl.invalid:null)("aria-required",s._chipGrid&&s._chipGrid.required||null)("required",s._chipGrid&&s._chipGrid.required||null))},inputs:{chipGrid:["matChipInputFor","chipGrid"],addOnBlur:["matChipInputAddOnBlur","addOnBlur"],separatorKeyCodes:["matChipInputSeparatorKeyCodes","separatorKeyCodes"],placeholder:"placeholder",id:"id",disabled:"disabled"},outputs:{chipEnd:"matChipInputTokenEnd"},exportAs:["matChipInput","matChipInputFor"],features:[$n]}),a})(),mhe=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({providers:[AE,{provide:wne,useValue:{separatorKeyCodes:[13]}}],imports:[Qt,zr,io,Qt]}),a})(),ghe=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({}),a})(),vhe=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[zr,Qt,ghe,ku]}),a})();const _he=["*",[["mat-toolbar-row"]]],yhe=["*","mat-toolbar-row"],bhe=gc(class{constructor(a){this._elementRef=a}});let whe=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275dir=me({type:a,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"]}),a})(),xhe=(()=>{class a extends bhe{constructor(e,s,d){super(e),this._platform=s,this._document=d}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){}}return a.\u0275fac=function(e){return new(e||a)(F(Be),F(si),F(bt))},a.\u0275cmp=we({type:a,selectors:[["mat-toolbar"]],contentQueries:function(e,s,d){if(1&e&&hn(d,whe,5),2&e){let f;Ee(f=Oe())&&(s._toolbarRows=f)}},hostAttrs:[1,"mat-toolbar"],hostVars:4,hostBindings:function(e,s){2&e&&at("mat-toolbar-multiple-rows",s._toolbarRows.length>0)("mat-toolbar-single-row",0===s._toolbarRows.length)},inputs:{color:"color"},exportAs:["matToolbar"],features:[Se],ngContentSelectors:yhe,decls:2,vars:0,template:function(e,s){1&e&&(Fn(_he),ht(0),ht(1,1))},styles:[".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color: inherit;--mdc-outlined-button-label-text-color: inherit}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}"],encapsulation:2,changeDetection:0}),a})(),Che=(()=>{class a{}return a.\u0275fac=function(e){return new(e||a)},a.\u0275mod=dt({type:a}),a.\u0275inj=st({imports:[Qt,Qt]}),a})();class oS{}function She(a,i){if(1&a){const e=Pe();I(0,"button",6),J("click",function(){const f=ae(e).$implicit;return se(q().changeLang(f))}),Y(1),O()}if(2&a){const e=i.$implicit;N(1),In(e.name)}}function Dhe(a,i){if(1&a&&(I(0,"button",12)(1,"i",7),Y(2,"face"),O(),Y(3),O()),2&a){const e=q();V("matMenuTriggerFor",on(7)),N(3),In(e.api.user.user)}}function Mhe(a,i){if(1&a&&(I(0,"button",18),Y(1),I(2,"i",7),Y(3,"arrow_drop_down"),O()()),2&a){const e=q();V("matMenuTriggerFor",on(7)),N(1),Re("",e.api.user.user," ")}}oS.\u0275fac=function(i){return new(i||oS)},oS.\u0275mod=dt({type:oS}),oS.\u0275inj=st({providers:[{provide:t4,useValue:{floatLabel:"always",appearance:"outline"}},{provide:Uf,useValue:udsData.language}],imports:[zr,nz,cg,Che,Iy,Ore,z1,vhe,r5,N1,zre,u4,tce,_c,lie,mP,u,$ee,Nee,rY,mhe,oce,bse,ooe,ZI,Yee,yre,ore]});class NP{constructor(i){this.api=i,this.lang={id:"",name:""},this.isNavbarCollapsed=!0;const e=i.config.language;this.langs=[];for(const s of i.config.available_languages)s.id===e?this.lang=s:this.langs.push(s)}ngOnInit(){}changeLang(i){this.lang=i;const e=document.getElementById("id_language");return e&&e.setAttribute("value",i.id),document.getElementById("form_language").submit(),!1}user(){this.api.gotoUser()}logout(){this.api.logout()}}NP.\u0275fac=function(i){return new(i||NP)(F(pt))},NP.\u0275cmp=we({type:NP,selectors:[["uds-navbar"]],decls:39,vars:13,consts:[["id","form_language","method","post",3,"action"],["type","hidden",3,"name","value"],["id","id_language","type","hidden","name","language",3,"value"],["appMenu","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["userMenu","matMenu"],["mat-menu-item","",3,"click"],[1,"material-icons"],[1,"material-icons","highlight"],["x-position","before"],["shrink","matMenu"],["mat-menu-item","",3,"matMenuTriggerFor",4,"ngIf"],["mat-menu-item","",3,"matMenuTriggerFor"],["color","primary",1,"uds-nav"],["mat-button","","routerLink","/"],["alt","Universal Desktop Services",1,"udsicon",3,"src"],[1,"fill-remaining-space"],[1,"expanded"],["mat-button","",3,"matMenuTriggerFor"],["mat-button","",3,"matMenuTriggerFor",4,"ngIf"],[1,"shrinked"],["mat-icon-button","",3,"matMenuTriggerFor"]],template:function(i,e){if(1&i&&(I(0,"form",0),he(1,"input",1)(2,"input",2),O(),I(3,"mat-menu",null,3),Q(5,She,2,1,"button",4),O(),I(6,"mat-menu",null,5)(8,"button",6),J("click",function(){return e.user()}),I(9,"i",7),Y(10,"home"),O(),I(11,"uds-translate"),Y(12,"User mode"),O()(),I(13,"button",6),J("click",function(){return e.logout()}),I(14,"i",8),Y(15,"exit_to_app"),O(),I(16,"uds-translate"),Y(17,"Logout"),O()()(),I(18,"mat-menu",9,10),Q(20,Dhe,4,2,"button",11),I(21,"button",12)(22,"i",7),Y(23,"language"),O(),Y(24),O()(),I(25,"mat-toolbar",13)(26,"button",14),he(27,"img",15),O(),he(28,"span",16),I(29,"div",17)(30,"button",18),Y(31),I(32,"i",7),Y(33,"arrow_drop_down"),O()(),Q(34,Mhe,4,2,"button",19),O(),I(35,"div",20)(36,"button",21)(37,"i",7),Y(38,"menu"),O()()()()),2&i){const s=on(4),d=on(19);jc("action",e.api.config.urls.changeLang,tn),N(1),jc("name",e.api.csrfField),jc("value",e.api.csrfToken),N(1),jc("value",e.lang.id),N(3),V("ngForOf",e.langs),N(15),V("ngIf",e.api.user.isLogged),N(1),V("matMenuTriggerFor",s),N(3),In(e.lang.name),N(3),V("src",e.api.staticURL("admin/img/udsicon.png"),tn),N(3),V("matMenuTriggerFor",s),N(1),Re("",e.lang.name," "),N(3),V("ngIf",e.api.user.isLogged),N(2),V("matMenuTriggerFor",d)}},dependencies:[oi,zt,jo,Vy,c1,wd,xhe,pi,yc,ete,_P,ite,xn],styles:[".uds-nav[_ngcontent-%COMP%]{position:fixed;top:0;z-index:1000}.fill-remaining-space[_ngcontent-%COMP%]{flex:1 1 auto}.material-icons[_ngcontent-%COMP%]{margin-right:.3rem}.udsicon[_ngcontent-%COMP%]{width:2rem}.mat-mdc-button[_ngcontent-%COMP%]{font-weight:300}@media only screen and (max-width: 744px){.expanded[_ngcontent-%COMP%]{display:none;visibility:hidden}.shrinked[_ngcontent-%COMP%]{visibility:visible}}@media only screen and (min-width: 745px){.expanded[_ngcontent-%COMP%]{visibility:visible}.shrinked[_ngcontent-%COMP%]{display:none;visibility:hidden}}"]});class BP{constructor(){}ngOnInit(){}}function The(a,i){if(1&a&&(gn(0),I(1,"a",26),he(2,"img",2),I(3,"uds-translate"),Y(4,"Proxies"),O()(),vn()),2&a){const e=q();N(2),V("src",e.icon("proxy"),tn)}}function Ahe(a,i){if(1&a&&(I(0,"a",27),he(1,"img",2),I(2,"uds-translate"),Y(3,"Groups"),O()()),2&a){const e=q();N(1),V("src",e.icon("groups"),tn)}}function khe(a,i){if(1&a){const e=Pe();I(0,"a",4),J("click",function(){return ae(e),se(q().toggleConfig())}),he(1,"img",2),I(2,"span")(3,"uds-translate"),Y(4,"Tools"),O(),I(5,"i",5),Y(6,"arrow_drop_down"),O()()()}if(2&a){const e=q();N(1),V("src",e.icon("tools"),tn)}}BP.\u0275fac=function(i){return new(i||BP)},BP.\u0275cmp=we({type:BP,selectors:[["uds-footer"]],decls:4,vars:0,consts:[["href","https://www.udsenterprise.com"]],template:function(i,e){1&i&&(I(0,"div"),Y(1,"\xa9 2012-2023 "),I(2,"a",0),Y(3,"Virtual Cable S.L.U."),O()())},styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}a[_ngcontent-%COMP%]{text-decoration:none}div[_ngcontent-%COMP%], a[_ngcontent-%COMP%]{color:#000} .dark-theme div, .dark-theme a{color:#fff}']});class VP{constructor(i,e){this.api=i,this.rest=e,this.connectivityShown=!1,this.poolsShown=!1,this.configShown=!1,this.tokensShown=!1,this.authsShown=!1}ngOnInit(){}icon(i){return this.api.staticURL("admin/img/icons/"+i+".png")}toggleConnectivity(){this.connectivityShown=!this.connectivityShown,this.poolsShown=!1,this.configShown=!1,this.authsShown=!1}togglePools(){this.connectivityShown=!1,this.poolsShown=!this.poolsShown,this.configShown=!1,this.authsShown=!1}toggleConfig(){this.connectivityShown=!1,this.poolsShown=!1,this.configShown=!this.configShown,this.authsShown=!1}toggleAuths(){this.connectivityShown=!1,this.poolsShown=!1,this.configShown=!1,this.authsShown=!this.authsShown}flushCache(){this.rest.system.flushCache().then(()=>{this.api.gui.snackbar.open(django.gettext("Cache flushed"),django.gettext("dismiss"),{duration:2e3})})}}function Ehe(a,i){1&a&&he(0,"div",1),2&a&&V("innerHTML",q().messages,Rr)}VP.\u0275fac=function(i){return new(i||VP)(F(pt),F(Ot))},VP.\u0275cmp=we({type:VP,selectors:[["uds-sidebar"]],decls:109,vars:30,consts:[[1,"sidebar","mat-toolbar","mat-primary"],["mat-button","","routerLink","/summary",1,"sidebar-link"],[1,"icon",3,"src"],["mat-button","","routerLink","/providers",1,"sidebar-link"],["mat-button","",1,"sidebar-link",3,"click"],[1,"material-icons"],[1,"submenu",3,"hidden"],["mat-button","","routerLink","/authenticators",1,"sidebar-link"],["mat-button","","routerLink","/mfas",1,"sidebar-link"],["mat-button","","routerLink","/osmanagers",1,"sidebar-link"],["mat-button","","routerLink","/transports",1,"sidebar-link"],["mat-button","","routerLink","/networks",1,"sidebar-link"],[4,"ngIf"],["mat-button","","routerLink","/pools/service-pools",1,"sidebar-link"],["mat-button","","routerLink","/pools/meta-pools",1,"sidebar-link"],["mat-button","","routerLink","/pools/pool-groups","class","sidebar-link",4,"ngIf"],["mat-button","","routerLink","/pools/calendars",1,"sidebar-link"],["mat-button","","routerLink","/pools/accounts",1,"sidebar-link"],["mat-button","","class","sidebar-link",3,"click",4,"ngIf"],["mat-button","","routerLink","/tools/gallery",1,"sidebar-link"],["mat-button","","routerLink","/tools/reports",1,"sidebar-link"],["mat-button","","routerLink","/tools/notifiers",1,"sidebar-link"],[1,"submenu2",3,"hidden"],["mat-button","","routerLink","/tools/tokens/actor",1,"sidebar-link"],["mat-button","","routerLink","/tools/tokens/tunnel",1,"sidebar-link"],["mat-button","","routerLink","/tools/configuration",1,"sidebar-link"],["mat-button","","routerLink","/proxies",1,"sidebar-link"],["mat-button","","routerLink","/pools/pool-groups",1,"sidebar-link"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"a",1),he(2,"img",2),I(3,"uds-translate"),Y(4,"Summary"),O()(),I(5,"a",3),he(6,"img",2),I(7,"uds-translate"),Y(8,"Services"),O()(),I(9,"a",4),J("click",function(){return e.toggleAuths()}),he(10,"img",2),I(11,"span")(12,"uds-translate"),Y(13,"Authentication"),O(),I(14,"i",5),Y(15,"arrow_drop_down"),O()()(),I(16,"div",6)(17,"a",7),he(18,"img",2),I(19,"uds-translate"),Y(20,"Authenticators"),O()(),I(21,"a",8),he(22,"img",2),I(23,"uds-translate"),Y(24,"Multi Factor"),O()()(),I(25,"a",9),he(26,"img",2),I(27,"uds-translate"),Y(28,"Os Managers"),O()(),I(29,"a",4),J("click",function(){return e.toggleConnectivity()}),he(30,"img",2),I(31,"span")(32,"uds-translate"),Y(33,"Connectivity"),O(),I(34,"i",5),Y(35,"arrow_drop_down"),O()()(),I(36,"div",6)(37,"a",10),he(38,"img",2),I(39,"uds-translate"),Y(40,"Transports"),O()(),I(41,"a",11),he(42,"img",2),I(43,"uds-translate"),Y(44,"Networks"),O()(),Q(45,The,5,1,"ng-container",12),O(),I(46,"a",4),J("click",function(){return e.togglePools()}),he(47,"img",2),I(48,"span")(49,"uds-translate"),Y(50,"Pools"),O(),I(51,"i",5),Y(52,"arrow_drop_down"),O()()(),I(53,"div",6)(54,"a",13),he(55,"img",2),I(56,"uds-translate"),Y(57,"Service pools"),O()(),I(58,"a",14),he(59,"img",2),I(60,"uds-translate"),Y(61,"Meta pools"),O()(),Q(62,Ahe,4,1,"a",15),I(63,"a",16),he(64,"img",2),I(65,"uds-translate"),Y(66,"Calendars"),O()(),I(67,"a",17),he(68,"img",2),I(69,"uds-translate"),Y(70,"Accounts"),O()()(),Q(71,khe,7,1,"a",18),I(72,"div",6)(73,"a",19),he(74,"img",2),I(75,"uds-translate"),Y(76,"Gallery"),O()(),I(77,"a",20),he(78,"img",2),I(79,"uds-translate"),Y(80,"Reports"),O()(),I(81,"a",21),he(82,"img",2),I(83,"uds-translate"),Y(84,"Notifiers"),O()(),I(85,"a",4),J("click",function(){return e.tokensShown=!e.tokensShown}),he(86,"img",2),I(87,"span")(88,"uds-translate"),Y(89,"Tokens"),O(),I(90,"i",5),Y(91,"arrow_drop_down"),O()()(),I(92,"div",22)(93,"a",23),he(94,"img",2),I(95,"uds-translate"),Y(96,"Actor"),O()(),I(97,"a",24),he(98,"img",2),I(99,"uds-translate"),Y(100,"Tunnel"),O()()(),I(101,"a",25),he(102,"img",2),I(103,"uds-translate"),Y(104,"Configuration"),O()(),I(105,"a",4),J("click",function(){return e.flushCache()}),he(106,"img",2),I(107,"uds-translate"),Y(108,"Flush Cache"),O()()()()),2&i&&(N(2),V("src",e.icon("dashboard-monitor"),tn),N(4),V("src",e.icon("providers"),tn),N(4),V("src",e.icon("authentication"),tn),N(6),V("hidden",!e.authsShown),N(2),V("src",e.icon("authenticators"),tn),N(4),V("src",e.icon("mfas"),tn),N(4),V("src",e.icon("osmanagers"),tn),N(4),V("src",e.icon("connectivity"),tn),N(6),V("hidden",!e.connectivityShown),N(2),V("src",e.icon("transports"),tn),N(4),V("src",e.icon("networks"),tn),N(3),V("ngIf",e.api.config.experimental_features),N(2),V("src",e.icon("miscellaneous"),tn),N(6),V("hidden",!e.poolsShown),N(2),V("src",e.icon("pools"),tn),N(4),V("src",e.icon("metas"),tn),N(3),V("ngIf",e.api.user.isAdmin),N(2),V("src",e.icon("calendars"),tn),N(4),V("src",e.icon("accounts"),tn),N(3),V("ngIf",e.api.user.isAdmin),N(1),V("hidden",!e.configShown),N(2),V("src",e.icon("gallery"),tn),N(4),V("src",e.icon("reports"),tn),N(4),V("src",e.icon("notifiers"),tn),N(4),V("src",e.icon("maleta"),tn),N(6),V("hidden",!e.tokensShown),N(2),V("src",e.icon("accounts"),tn),N(4),V("src",e.icon("proxy"),tn),N(4),V("src",e.icon("configuration"),tn),N(4),V("src",e.icon("flush-cache"),tn))},dependencies:[zt,jo,e1,xn],styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}.sidebar[_ngcontent-%COMP%]{position:fixed;top:4rem;padding-top:12px;bottom:0;display:flex;flex-direction:column;overflow-y:auto;width:3.7rem;transition:all .3s cubic-bezier(.86,0,.07,1);box-shadow:0 16px 38px -12px #fafafa8f,0 4px 25px #fafafa1f,0 8px 10px -5px #fafafa33;overflow-x:hidden;z-index:25}.sidebar-link[_ngcontent-%COMP%]{display:flex;width:15rem;color:transparent;transition:color .3s cubic-bezier(.86,0,.07,1);font-weight:300;font-size:1rem;justify-content:left;justify-items:center;padding-left:1rem;text-decoration:none}.sidebar[_ngcontent-%COMP%]:hover{width:15rem;transition:all .3s cubic-bezier(.86,0,.07,1)}.sidebar[_ngcontent-%COMP%]:hover .sidebar-link[_ngcontent-%COMP%]{color:#000}.submenu[_ngcontent-%COMP%] > .mat-mdc-button[_ngcontent-%COMP%]{padding-left:1.5rem}.submenu2[_ngcontent-%COMP%] > .mat-mdc-button[_ngcontent-%COMP%]{padding-left:1.8rem}.icon[_ngcontent-%COMP%]{width:24px;margin:0 1em -.5rem 0} .dark-theme .sidebar{box-shadow:0 16px 38px -12px #3030308f,0 4px 25px #3030301f,0 8px 10px -5px #30303033} .dark-theme .sidebar:hover .sidebar-link{color:#fff!important}']});class zP{constructor(i){this.api=i,this.messages="",this.visible=!1}ngOnInit(){const i=e=>e.replace(/ /gm," ").replace(/([A-Z]+[A-Z]+)/gm,"$1").replace(/([0-9]+)/gm,"$1");if(this.api.notices.length>0){const e='
';this.messages='
'+e+this.api.notices.map(i).join("
"+e)+"
",this.api.gui.alert("",this.messages,0,"80%").then(()=>{this.visible=!0})}}}zP.\u0275fac=function(i){return new(i||zP)(F(pt))},zP.\u0275cmp=we({type:zP,selectors:[["uds-notices"]],decls:1,vars:1,consts:[["class","notice",3,"innerHTML",4,"ngIf"],[1,"notice",3,"innerHTML"]],template:function(i,e){1&i&&Q(0,Ehe,1,1,"div",0),2&i&&V("ngIf",e.visible)},dependencies:[zt],styles:[".notice[_ngcontent-%COMP%]{display:block} .warn-notice-container{background:steelblue;border-radius:3px;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;box-sizing:border-box;color:#fff;margin:1rem 2rem 0rem;padding:15px;word-wrap:break-word;display:flex;flex-direction:column} .warn-notice{display:block;width:100%;text-align:center;font-size:1.1em;margin-bottom:.5rem}"]});class HP{constructor(i){this.api=i,this.title="UDS Admin"}get blackTheme(){return"true"===this.api.getFromStorage("blackTheme")}set blackTheme(i){this.api.putOnStorage("blackTheme",i.toString())}handleKeyboardEvent(i){i.altKey&&i.ctrlKey&&"b"===i.key&&(this.blackTheme=!this.blackTheme,this.api.switchTheme(this.blackTheme))}ngOnInit(){this.api.switchTheme(this.blackTheme)}}HP.\u0275fac=function(i){return new(i||HP)(F(pt))},HP.\u0275cmp=we({type:HP,selectors:[["uds-root"]],hostBindings:function(i,e){1&i&&J("keydown",function(d){return e.handleKeyboardEvent(d)},0,Y2)},decls:8,vars:0,consts:[[1,"page"],[1,"content"],[1,"footer"]],template:function(i,e){1&i&&(he(0,"uds-navbar")(1,"uds-sidebar"),I(2,"div",0)(3,"div",1),he(4,"uds-notices")(5,"router-outlet"),O(),I(6,"div",2),he(7,"uds-footer"),O()())},dependencies:[_k,NP,BP,VP,zP],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.footer[_ngcontent-%COMP%]{flex-shrink:0;margin:1em;height:1em;display:flex;flex-direction:row;justify-content:flex-end}.content[_ngcontent-%COMP%]{flex:1 0 auto;width:calc(100% - 64px);margin:4rem auto auto 56px;padding-left:8px;overflow-x:hidden}"]});class sS extends _g{constructor(){super(),this.itemsPerPageLabel=django.gettext("Items per page")}}sS.\u0275fac=function(i){return new(i||sS)},sS.\u0275prov=ke({token:sS,factory:sS.\u0275fac});class GP{constructor(){this.field={},this.changed=new ye}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue}}function Ihe(a,i){if(1&a&&(I(0,"mat-option",3),Y(1),O()),2&a){const e=i.$implicit;V("value",e),N(1),Re(" ",e," ")}}GP.\u0275fac=function(i){return new(i||GP)},GP.\u0275cmp=we({type:GP,selectors:[["uds-field-text"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:4,vars:7,consts:[["matInput","","type","text",3,"ngModel","placeholder","required","disabled","maxlength","autocomplete","ngModelChange","change"]],template:function(i,e){1&i&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",0),J("ngModelChange",function(d){return e.field.value=d})("change",function(){return e.changed.emit(e)}),O()()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("ngModel",e.field.value)("placeholder",e.field.gui.tooltip)("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly)("maxlength",e.field.gui.length||128)("autocomplete","new-"+e.field.name))},dependencies:[rr,Qn,Hs,lg,Yn,ei,vi,wa],styles:[".cdk-text-field-autofilled[_ngcontent-%COMP%]{background-color:red}"]});class UP{constructor(){this.field={},this.changed=new ye,this.values=[]}ngOnInit(){const i=this.field.gui.values||[];this.field.value=this.field.value||this.field.gui.defvalue,this.values=i.map(e=>e.text)}_filter(){const i=this.field.value.toLowerCase();return this.values.filter(e=>e.toLowerCase().includes(i))}}UP.\u0275fac=function(i){return new(i||UP)},UP.\u0275cmp=we({type:UP,selectors:[["uds-field-autocomplete"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:9,consts:[["auto","matAutocomplete"],[3,"value",4,"ngFor","ngForOf"],["matInput","","type","text",3,"ngModel","placeholder","required","disabled","maxlength","matAutocomplete","autocomplete","ngModelChange","change"],[3,"value"]],template:function(i,e){if(1&i&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-autocomplete",null,0),Q(5,Ihe,2,2,"mat-option",1),O(),I(6,"input",2),J("ngModelChange",function(d){return e.field.value=d})("change",function(){return e.changed.emit(e)}),O()()),2&i){const s=on(4);N(2),Re(" ",e.field.gui.label," "),N(3),V("ngForOf",e._filter()),N(1),V("ngModel",e.field.value)("placeholder",e.field.gui.tooltip)("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly)("maxlength",e.field.gui.length||128)("matAutocomplete",s)("autocomplete","new-"+e.field.name)}},dependencies:[oi,rr,Qn,Hs,lg,Yn,ei,vi,wa,$i,$q,P4],styles:[".cdk-text-field-autofilled[_ngcontent-%COMP%]{background-color:red}"]});class jP{constructor(){this.field={},this.changed=new ye}ngOnInit(){!this.field.value&&0!==this.field.value&&(this.field.value=this.field.gui.defvalue)}}jP.\u0275fac=function(i){return new(i||jP)},jP.\u0275cmp=we({type:jP,selectors:[["uds-field-numeric"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:4,vars:5,consts:[["floatLabel","always"],["matInput","","type","number",3,"ngModel","placeholder","required","disabled","ngModelChange","change"]],template:function(i,e){1&i&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"input",1),J("ngModelChange",function(d){return e.field.value=d})("change",function(){return e.changed.emit(e)}),O()()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("ngModel",e.field.value)("placeholder",e.field.gui.tooltip)("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly))},dependencies:[rr,xd,Qn,Hs,Yn,ei,vi,wa]});class $P{constructor(){this.field={},this.changed=new ye,this.passwordType="password"}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue}}$P.\u0275fac=function(i){return new(i||$P)},$P.\u0275cmp=we({type:$P,selectors:[["uds-field-password"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:7,consts:[["floatLabel","always"],["matInput","","autocomplete","new-password",3,"ngModel","placeholder","required","disabled","type","ngModelChange","change"],["matSuffix","","mat-icon-button","",3,"click"],[1,"material-icons"]],template:function(i,e){1&i&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"input",1),J("ngModelChange",function(d){return e.field.value=d})("change",function(){return e.changed.emit(e)}),O(),I(4,"button",2),J("click",function(){return e.passwordType="text"===e.passwordType?"password":"text"}),I(5,"i",3),Y(6),O()()()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("ngModel",e.field.value)("placeholder",e.field.gui.tooltip)("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly)("type",e.passwordType),N(3),In("text"===e.passwordType?"visibility_off":"visibility"))},dependencies:[rr,Qn,Hs,Yn,yc,ei,vi,pg,wa],styles:[".cdk-text-field-autofilled[_ngcontent-%COMP%]{background-color:red}"]});class WP{constructor(){this.field={}}ngOnInit(){(""===this.field.value||void 0===this.field.value)&&(this.field.value=this.field.gui.defvalue)}}WP.\u0275fac=function(i){return new(i||WP)},WP.\u0275cmp=we({type:WP,selectors:[["uds-field-hidden"]],inputs:{field:"field"},decls:0,vars:0,template:function(i,e){}});class YP{constructor(){this.field={}}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue}}function Phe(a,i){if(1&a&&(I(0,"mat-option",3),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.text," ")}}YP.\u0275fac=function(i){return new(i||YP)},YP.\u0275cmp=we({type:YP,selectors:[["uds-field-textbox"]],inputs:{field:"field",value:"value"},decls:4,vars:7,consts:[["floatLabel","auto"],["matInput","",3,"ngModel","placeholder","required","readonly","rows","maxlength","ngModelChange"]],template:function(i,e){1&i&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"textarea",1),J("ngModelChange",function(d){return e.field.value=d}),O()()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("ngModel",e.field.value)("placeholder",e.field.gui.tooltip)("required",!!e.field.gui.required)("readonly",!0===e.field.gui.rdonly)("rows",e.field.gui.multiline||3)("maxlength",e.field.gui.length||255))},dependencies:[rr,Qn,Hs,lg,Yn,ei,vi,wa]});class qP{constructor(){this.field={},this.changed=new ye,this.placeholderLabel=django.gettext("Search"),this.noEntriesFoundLabel=django.gettext("No entries found"),this.filter=""}ngOnInit(){const i=this.field.gui.values||[];this.field.value=this.field.value||this.field.gui.defvalue,""===this.field.value&&i.length>0&&(this.field.value=i[0].id),this.field.value=""+this.field.value}filteredValues(){const i=this.field.gui.values||[];if(!this.filter)return i;const e=this.filter.toLocaleLowerCase();return i.filter(s=>s.text.toLocaleLowerCase().includes(e))}}function Rhe(a,i){if(1&a&&(I(0,"mat-option",3),Y(1),O()),2&a){const e=i.$implicit;V("value",e.id),N(1),Re(" ",e.text," ")}}qP.\u0275fac=function(i){return new(i||qP)},qP.\u0275cmp=we({type:qP,selectors:[["uds-field-choice"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:6,vars:9,consts:[[3,"ngModel","placeholder","required","disabled","ngModelChange","valueChange"],[3,"options","placeholderLabel","noEntriesFoundLabel","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(i,e){1&i&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-select",0),J("ngModelChange",function(d){return e.field.value=d})("valueChange",function(){return e.changed.emit(e)}),I(4,"uds-cond-select-search",1),J("changed",function(d){return e.filter=d}),O(),Q(5,Phe,2,2,"mat-option",2),O()()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("ngModel",e.field.value)("placeholder",e.field.gui.tooltip)("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly),N(1),V("options",e.field.gui.values)("placeholderLabel",e.placeholderLabel)("noEntriesFoundLabel",e.noEntriesFoundLabel),N(1),V("ngForOf",e.filteredValues()))},dependencies:[oi,Qn,Hs,Yn,ei,vi,ya,$i,es]});class XP{constructor(){this.field={},this.changed=new ye,this.filter="",this.placeholderLabel=django.gettext("Search"),this.noEntriesFoundLabel=django.gettext("No entries found")}ngOnInit(){this.field.value=void 0,void 0!==this.field.values?this.field.values.forEach((i,e,s)=>{s[e]=""+i.id}):this.field.values=new Array}filteredValues(){const i=this.field.gui.values||[];if(!this.filter)return i;const e=this.filter.toLocaleLowerCase();return i.filter(s=>s.text.toLocaleLowerCase().includes(e))}selectTriggerString(){const i=this.field.values||[];let e="";0===i.length&&(e=this.field.gui.tooltip||django.gettext("Select"));for(const f of i){var s,d;""!==e&&(e+=", "),e+=(null===(s=this.field.gui.values)||void 0===s||null===(d=s.find(_=>_.id===f))||void 0===d?void 0:d.text)||f}return e}}function Ohe(a,i){if(1&a){const e=Pe();I(0,"div",12)(1,"div",13),Y(2),O(),I(3,"div",14),Y(4," \xa0"),I(5,"a",15),J("click",function(){const f=ae(e).index;return se(q().removeElement(f))}),I(6,"i",16),Y(7,"close"),O()()()()}if(2&a){const e=i.$implicit;N(2),Re(" ",e," ")}}XP.\u0275fac=function(i){return new(i||XP)},XP.\u0275cmp=we({type:XP,selectors:[["uds-field-multichoice"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:8,vars:8,consts:[["multiple","",3,"ngModel","placeholder","required","disabled","ngModelChange","valueChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(i,e){1&i&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-select",0),J("ngModelChange",function(d){return e.field.values=d})("valueChange",function(){return e.changed.emit(e)}),I(4,"mat-select-trigger"),Y(5),O(),I(6,"uds-cond-select-search",1),J("changed",function(d){return e.filter=d}),O(),Q(7,Rhe,2,2,"mat-option",2),O()()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("ngModel",e.field.values)("placeholder",e.selectTriggerString())("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly),N(2),Re(" ",e.selectTriggerString()," "),N(1),V("options",e.field.gui.values),N(1),V("ngForOf",e.filteredValues()))},dependencies:[oi,Qn,Hs,Yn,ei,vi,ya,uP,$i,es]});class vb{constructor(i,e,s,d){this.api=i,this.rest=e,this.dialogRef=s,this.data=d,this.values=[],this.input="",this.done=new wl,this.data.values.forEach(f=>this.values.push(f))}static launch(i,e,s){const d=window.innerWidth<800?"50%":"30%";return i.gui.dialog.open(vb,{width:d,data:{title:e,values:s},disableClose:!0}).componentInstance.done}addElements(){this.input.split(",").forEach(i=>{this.values.push(i)}),this.input=""}checkKey(i){"Enter"===i.code&&this.addElements()}removeAll(){this.values.length=0}removeElement(i){this.values.splice(i,1)}save(){this.data.values.length=0,this.values.forEach(i=>this.data.values.push(i)),this.dialogRef.close(),this.done.resolve(this.data.values)}cancel(){this.dialogRef.close(),this.done.resolve(null)}ngOnInit(){}}vb.\u0275fac=function(i){return new(i||vb)(F(pt),F(Ot),F(Ci),F(Bi))},vb.\u0275cmp=we({type:vb,selectors:[["uds-editlist-editor"]],decls:23,vars:3,consts:[["mat-dialog-title",""],[1,"content"],[1,"list"],["class","elem",4,"ngFor","ngForOf"],[1,"buttons"],["mat-raised-button","","color","warn",3,"click"],[1,"input"],[1,"example-full-width"],["type","text","matInput","",3,"ngModel","keyup","ngModelChange"],["matSuffix","","mat-icon-button","",3,"click"],["matSuffix","",1,"material-icons"],["mat-raised-button","","color","primary",3,"click"],[1,"elem"],[1,"val"],[1,"remove"],[3,"click"],[1,"material-icons"]],template:function(i,e){1&i&&(I(0,"h4",0),Y(1),O(),I(2,"mat-dialog-content")(3,"div",1)(4,"div",2),Q(5,Ohe,8,1,"div",3),O(),I(6,"div",4)(7,"button",5),J("click",function(){return e.removeAll()}),I(8,"uds-translate"),Y(9,"Remove all"),O()()(),I(10,"div",6)(11,"mat-form-field",7)(12,"input",8),J("keyup",function(d){return e.checkKey(d)})("ngModelChange",function(d){return e.input=d}),O(),I(13,"button",9),J("click",function(){return e.addElements()}),I(14,"i",10),Y(15,"add"),O()()()()()(),I(16,"mat-dialog-actions")(17,"button",5),J("click",function(){return e.cancel()}),I(18,"uds-translate"),Y(19,"Cancel"),O()(),I(20,"button",11),J("click",function(){return e.save()}),I(21,"uds-translate"),Y(22,"Ok"),O()()()),2&i&&(N(1),Re(" ",e.data.title,"\n"),N(4),V("ngForOf",e.values),N(7),V("ngModel",e.input))},dependencies:[oi,rr,Qn,Yn,pi,yc,nr,ir,Kn,ei,pg,wa,xn],styles:[".content[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;justify-content:space-between;justify-self:center}.list[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:1rem;height:16rem;overflow-y:auto;border-color:#333;border-radius:1px;box-shadow:#00000024 0 1px 4px;padding:.5rem}.buttons[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;margin-right:1rem;margin-bottom:1rem}.input[_ngcontent-%COMP%]{margin:0 1rem}.elem[_ngcontent-%COMP%]{font-family:Courier New,Courier,monospace;font-size:1.2rem;display:flex;justify-content:space-between;white-space:nowrap;flex-wrap:nowrap;margin-right:.4rem}.elem[_ngcontent-%COMP%]:hover{background-color:#333;color:#fff;cursor:default}.val[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:.2rem}.material-icons[_ngcontent-%COMP%]{font-size:1em;padding-bottom:1px}.material-icons[_ngcontent-%COMP%]:hover{cursor:pointer;color:red}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});class ZP{constructor(i){this.api=i,this.field={},this.changed=new ye}ngOnInit(){}launch(){var i=this;return Xe(function*(){void 0===i.field.values&&(i.field.values=[]),yield vb.launch(i.api,i.field.gui.label,i.field.values),i.changed.emit({field:i.field})})()}getValue(){if(void 0===this.field.values)return"";let i=this.field.values.filter((e,s,d)=>s<5).join(", ");return this.field.values.length>5&&(i+=django.gettext(", (%i more items)").replace("%i",""+(this.field.values.length-5))),i}}ZP.\u0275fac=function(i){return new(i||ZP)(F(pt))},ZP.\u0275cmp=we({type:ZP,selectors:[["uds-field-editlist"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:4,vars:5,consts:[["floatLabel","always",3,"click"],["matInput","","type","text",1,"editlist",3,"readonly","value","placeholder","disabled"]],template:function(i,e){1&i&&(I(0,"mat-form-field",0),J("click",function(){return e.launch()}),I(1,"mat-label"),Y(2),O(),he(3,"input",1),O()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("readonly",!0)("value",e.getValue())("placeholder",e.field.gui.tooltip)("disabled",!0===e.field.gui.rdonly))},dependencies:[ei,vi,wa],styles:[".editlist[_ngcontent-%COMP%]{cursor:pointer}"]});class KP{constructor(){this.field={},this.changed=new ye}ngOnInit(){var a;this.field.value=$E(""===(a=this.field.value)||null==a?this.field.gui.defvalue:this.field.value)}getValue(){return $E(this.field.value)?django.gettext("Yes"):django.gettext("No")}}function Lhe(a,i){if(1&a&&he(0,"div",5),2&a){const e=q().$implicit;V("innerHTML",q().asIcon(e),Rr)}}function Fhe(a,i){if(1&a&&(I(0,"div"),Q(1,Lhe,1,1,"div",4),O()),2&a){const e=i.$implicit,s=q();N(1),V("ngIf",e.id===s.field.value)}}function Nhe(a,i){if(1&a&&(I(0,"mat-option",6),he(1,"div",5),O()),2&a){const e=i.$implicit,s=q();V("value",e.id),N(1),V("innerHTML",s.asIcon(e),Rr)}}KP.\u0275fac=function(i){return new(i||KP)},KP.\u0275cmp=we({type:KP,selectors:[["uds-field-checkbox"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:3,vars:4,consts:[[1,"toggle"],[3,"ngModel","required","disabled","ngModelChange","change"]],template:function(i,e){1&i&&(I(0,"div",0)(1,"mat-slide-toggle",1),J("ngModelChange",function(d){return e.field.value=d})("change",function(){return e.changed.emit(e)}),Y(2),O()()),2&i&&(N(1),V("ngModel",e.field.value)("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly),N(1),Re(" ",e.field.gui.label," "))},dependencies:[Qn,Hs,Yn,dte,wP]});class QP{constructor(i){this.api=i,this.field={},this.changed=new ye,this.filter=""}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue;const i=this.field.gui.values||[];""===this.field.value&&i.length>0&&(this.field.value=i[0].id)}asIcon(i){return this.api.safeString(this.api.gui.icon(i.img)+i.text)}filteredValues(){const i=this.field.gui.values||[];if(!this.filter)return i;const e=this.filter.toLocaleLowerCase();return i.filter(s=>s.text.toLocaleLowerCase().includes(e))}}QP.\u0275fac=function(i){return new(i||QP)(F(pt))},QP.\u0275cmp=we({type:QP,selectors:[["uds-field-imgchoice"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:8,vars:8,consts:[[3,"placeholder","ngModel","required","disabled","valueChange","ngModelChange"],[4,"ngFor","ngForOf"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"innerHTML",4,"ngIf"],[3,"innerHTML"],[3,"value"]],template:function(i,e){1&i&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-select",0),J("valueChange",function(){return e.changed.emit(e)})("ngModelChange",function(d){return e.field.value=d}),I(4,"mat-select-trigger"),Q(5,Fhe,2,1,"div",1),O(),I(6,"uds-cond-select-search",2),J("changed",function(d){return e.filter=d}),O(),Q(7,Nhe,2,2,"mat-option",3),O()()),2&i&&(N(2),Re(" ",e.field.gui.label," "),N(1),V("placeholder",e.field.gui.tooltip)("ngModel",e.field.value)("required",!0===e.field.gui.required)("disabled",!0===e.field.gui.rdonly),N(2),V("ngForOf",e.field.gui.values),N(1),V("options",e.field.gui.values),N(1),V("ngForOf",e.filteredValues()))},dependencies:[oi,zt,Qn,Hs,Yn,ei,vi,ya,uP,$i,es]});class JP{constructor(){this.field={},this.changed=new ye,this.value=new Date}get date(){return this.value}set date(i){this.value!==i&&(this.value=i,this.field.value=Jm("%Y-%m-%d",this.value))}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue,"2000-01-01"===this.field.value?this.field.value=Jm("%Y-01-01"):"2000-01-01"===this.field.value&&(this.field.value=Jm("%Y-12-31"));const i=this.field.value.split("-");3===i.length&&(this.value=new Date(+i[0],+i[1]-1,+i[2]))}}function Bhe(a,i){if(1&a){const e=Pe();I(0,"mat-chip-row",5),J("removed",function(){const f=ae(e).$implicit;return se(q().remove(f))}),Y(1),I(2,"i",6),Y(3,"cancel"),O()()}if(2&a){const e=i.$implicit;V("removable",!0!==q().field.gui.rdonly),N(1),Re(" ",e," ")}}JP.\u0275fac=function(i){return new(i||JP)},JP.\u0275cmp=we({type:JP,selectors:[["uds-field-date"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:6,consts:[[1,"oneHalf"],["matInput","",3,"matDatepicker","ngModel","placeholder","disabled","ngModelChange"],["matSuffix","",3,"for"],["endDatePicker",""]],template:function(i,e){if(1&i&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"input",1),J("ngModelChange",function(d){return e.date=d}),O(),he(4,"mat-datepicker-toggle",2)(5,"mat-datepicker",null,3),O()),2&i){const s=on(6);N(2),Re(" ",e.field.gui.label," "),N(1),V("matDatepicker",s)("ngModel",e.date)("placeholder",e.field.gui.tooltip)("disabled",!0===e.field.gui.rdonly),N(1),V("for",s)}},dependencies:[rr,Qn,Yn,ei,vi,pg,wa,Cte,L4,Ste]});class eR{constructor(){this.field={},this.changed=new ye,this.separatorKeysCodes=[13,188]}ngOnInit(){void 0===this.field.values&&(this.field.values=new Array,this.field.value=void 0),this.field.values.forEach((i,e,s)=>{""===i.trim()&&s.splice(e,1)})}add(i){const e=i.input,s=i.value;(s||"").trim()&&this.field.values&&this.field.values.push(s.trim()),e&&(e.value="")}remove(i){if(!this.field.values)return void console.warn("Trying to remove tag from field with no values: "+this.field.name);const e=this.field.values.indexOf(i);e>=0&&this.field.values.splice(e,1)}}eR.\u0275fac=function(i){return new(i||eR)},eR.\u0275cmp=we({type:eR,selectors:[["uds-field-tags"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:7,consts:[["floatLabel","always"],[3,"disabled","change"],["chipList",""],[3,"removable","removed",4,"ngFor","ngForOf"],[3,"placeholder","matChipInputFor","matChipInputSeparatorKeyCodes","matChipInputAddOnBlur","matChipInputTokenEnd"],[3,"removable","removed"],["matChipRemove","",1,"material-icons"]],template:function(i,e){if(1&i&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"mat-chip-grid",1,2),J("change",function(){return e.changed.emit(e)}),Q(5,Bhe,4,2,"mat-chip-row",3),I(6,"input",4),J("matChipInputTokenEnd",function(d){return e.add(d)}),O()()()),2&i){const s=on(4);N(2),Re(" ",e.field.gui.label," "),N(1),V("disabled",!0===e.field.gui.rdonly),N(2),V("ngForOf",e.field.values),N(1),V("placeholder",e.field.gui.tooltip)("matChipInputFor",s)("matChipInputSeparatorKeyCodes",e.separatorKeysCodes)("matChipInputAddOnBlur",!0)}},dependencies:[oi,ei,vi,Ane,kne,Dne,kX],styles:["*.mat-chip-trailing-icon[_ngcontent-%COMP%]{position:relative;top:-4px;left:-4px}mat-form-field[_ngcontent-%COMP%]{width:99.5%}"]}),kn(691);class lS{}lS.\u0275fac=function(i){return new(i||lS)},lS.\u0275mod=dt({type:lS,bootstrap:[HP]}),lS.\u0275inj=st({providers:[pt,Ot,{provide:_g,useClass:sS}],imports:[kN,QN,nS,Bue,oS,VY.forRoot({echarts:()=>Promise.resolve().then(kn.bind(kn,386))})]}),function Xs(a,i,e){const s=a.\u0275cmp;s.directiveDefs=()=>("function"==typeof i?i():i).map(ss),s.pipeDefs=()=>("function"==typeof e?e():e).map(or)}(dg,function(){return[id,oc,Jy,GP,jP,$P,WP,YP,qP,XP,ZP,KP,QP,JP,eR,UP]},[]),L6().bootstrapModule(lS).catch(a=>console.log(a))},386:(ep,ia,kn)=>{"use strict";kn.r(ia),kn.d(ia,{Axis:()=>Go,ChartView:()=>Nn,ComponentModel:()=>jt,ComponentView:()=>ui,List:()=>ga,Model:()=>zn,PRIORITY:()=>KG,SeriesModel:()=>Zn,color:()=>js,connect:()=>PT,dataTool:()=>NZ,dependencies:()=>oF,disConnect:()=>ic,disconnect:()=>nU,dispose:()=>FZ,env:()=>sn,extendChartView:()=>NU,extendComponentModel:()=>FU,extendComponentView:()=>oi,extendSeriesModel:()=>qF,format:()=>vr,getCoordinateSystemDimensions:()=>NT,getInstanceByDom:()=>RT,getInstanceById:()=>yF,getMap:()=>bF,graphic:()=>li,helper:()=>Ct,init:()=>_F,innerDrawElementOnCanvas:()=>cu,matrix:()=>ro,number:()=>Di,parseGeoJSON:()=>oA,parseGeoJson:()=>oA,registerAction:()=>Es,registerCoordinateSystem:()=>rU,registerLayout:()=>BT,registerLoading:()=>Kw,registerLocale:()=>QD,registerMap:()=>b_,registerPostInit:()=>iU,registerPostUpdate:()=>FT,registerPreprocessor:()=>LT,registerProcessor:()=>qw,registerTheme:()=>OT,registerTransform:()=>wF,registerUpdateLifecycle:()=>Xw,registerVisual:()=>Zc,setCanvasCreator:()=>cf,setPlatformAPI:()=>aH,throttle:()=>kw,time:()=>gi,use:()=>Nt,util:()=>Dd,vector:()=>is,version:()=>YG,zrUtil:()=>Wt,zrender:()=>xt});var Wt={};kn.r(Wt),kn.d(Wt,{HashMap:()=>_S,RADIAN_TO_DEGREE:()=>nn,assert:()=>xa,bind:()=>Ne,clone:()=>rt,concatArray:()=>jn,createCanvas:()=>hR,createHashMap:()=>$e,createObject:()=>nh,curry:()=>vt,defaults:()=>Ye,disableUserSelect:()=>ii,each:()=>U,eqNaN:()=>th,extend:()=>ge,filter:()=>Dn,find:()=>Dr,guid:()=>pS,hasOwn:()=>Ve,indexOf:()=>Mt,inherits:()=>Cb,isArray:()=>be,isArrayLike:()=>ra,isBuiltInObject:()=>Md,isDom:()=>Lg,isFunction:()=>qe,isGradientObject:()=>Fg,isImagePatternObject:()=>vS,isNumber:()=>ln,isObject:()=>ze,isPrimitive:()=>ap,isRegExp:()=>Sb,isString:()=>Le,isStringSafe:()=>To,isTypedArray:()=>ni,keys:()=>Yt,logError:()=>mS,map:()=>xe,merge:()=>St,mergeAll:()=>gS,mixin:()=>Ii,noop:()=>zi,normalizeCssArray:()=>Db,reduce:()=>Mo,retrieve:()=>Vi,retrieve2:()=>Dt,retrieve3:()=>Ws,setAsPrimitive:()=>rp,slice:()=>Ng,trim:()=>as});var is={};kn.r(is),kn.d(is,{add:()=>gR,applyTransform:()=>Tr,clone:()=>Dc,copy:()=>qt,create:()=>Mr,dist:()=>Tc,distSquare:()=>El,distance:()=>Bg,distanceSquare:()=>Rt,div:()=>uH,dot:()=>_R,len:()=>st,lenSquare:()=>xS,length:()=>Ab,lengthSquare:()=>vR,lerp:()=>Ca,max:()=>En,min:()=>Ad,mul:()=>dH,negate:()=>hH,normalize:()=>Mc,scale:()=>Td,scaleAndAdd:()=>ke,set:()=>cH,sub:()=>rh});var ro={};kn.r(ro),kn.d(ro,{clone:()=>AS,copy:()=>we,create:()=>oa,identity:()=>jg,invert:()=>ah,mul:()=>Xs,rotate:()=>Ec,scale:()=>dt,translate:()=>ss});var js={};kn.r(js),kn.d(js,{fastLerp:()=>tv,fastMapToColor:()=>kR,lerp:()=>HS,lift:()=>Gb,lum:()=>se,mapToColor:()=>CH,modifyAlpha:()=>yn,modifyHSL:()=>Me,parse:()=>yt,random:()=>sa,stringify:()=>ae,toHex:()=>xH});var xt={};kn.r(xt),kn.d(xt,{dispose:()=>mh,disposeAll:()=>KR,getInstance:()=>r0,init:()=>lo,registerPainter:()=>_p,version:()=>OH});var _i={};kn.r(_i),kn.d(_i,{Arc:()=>vw,BezierCurve:()=>n_,BoundingRect:()=>lt,Circle:()=>al,CompoundPath:()=>_w,Ellipse:()=>Zv,Group:()=>ct,Image:()=>la,IncrementalDisplayable:()=>DL,Line:()=>Fr,LinearGradient:()=>Kh,OrientedBoundingRect:()=>i_,Path:()=>Vt,Point:()=>it,Polygon:()=>vo,Polyline:()=>_o,RadialGradient:()=>yw,Rect:()=>an,Ring:()=>$p,Sector:()=>Ya,Text:()=>dn,applyTransform:()=>sl,clipPointsByRect:()=>Mw,clipRectByRect:()=>Tw,createIcon:()=>Xp,extendPath:()=>ML,extendShape:()=>XM,getShapeClass:()=>xw,getTransform:()=>Wc,groupTransition:()=>ef,initProps:()=>di,isElementRemoved:()=>Ip,lineLineIntersect:()=>Aw,linePolygonIntersect:()=>a_,makeImage:()=>ZM,makePath:()=>r_,mergePath:()=>Ho,registerShape:()=>Ts,removeElement:()=>jd,removeElementWithFadeOut:()=>Iv,resizePath:()=>Cw,setTooltipConfig:()=>ll,subPixelOptimize:()=>Sw,subPixelOptimizeLine:()=>Jh,subPixelOptimizeRect:()=>yG,transformDirection:()=>Dw,traverseElements:()=>ou,updateProps:()=>un});var Ct={};kn.r(Ct),kn.d(Ct,{createDimensions:()=>hU,createList:()=>hx,createScale:()=>fx,createSymbol:()=>Ui,createTextStyle:()=>RF,dataStack:()=>AU,enableHoverEmphasis:()=>Ud,getECData:()=>_t,getLayoutRect:()=>cr,mixinAxisModelCommonMethods:()=>kU});var Di={};kn.r(Di),kn.d(Di,{MAX_SAFE_INTEGER:()=>iD,asc:()=>fs,getPercentWithPrecision:()=>FH,getPixelPrecision:()=>nD,getPrecision:()=>ps,getPrecisionSafe:()=>JR,isNumeric:()=>o0,isRadianAroundZero:()=>Vd,linearMap:()=>Ut,nice:()=>aD,numericToNumber:()=>Ro,parseDate:()=>yi,quantile:()=>hv,quantity:()=>rD,quantityExponent:()=>co,reformIntervals:()=>gh,remRadian:()=>uv,round:()=>ai});var gi={};kn.r(gi),kn.d(gi,{format:()=>Oh,parse:()=>yi});var li={};kn.r(li),kn.d(li,{Arc:()=>vw,BezierCurve:()=>n_,BoundingRect:()=>lt,Circle:()=>al,CompoundPath:()=>_w,Ellipse:()=>Zv,Group:()=>ct,Image:()=>la,IncrementalDisplayable:()=>DL,Line:()=>Fr,LinearGradient:()=>Kh,Polygon:()=>vo,Polyline:()=>_o,RadialGradient:()=>yw,Rect:()=>an,Ring:()=>$p,Sector:()=>Ya,Text:()=>dn,clipPointsByRect:()=>Mw,clipRectByRect:()=>Tw,createIcon:()=>Xp,extendPath:()=>ML,extendShape:()=>XM,getShapeClass:()=>xw,getTransform:()=>Wc,initProps:()=>di,makeImage:()=>ZM,makePath:()=>r_,mergePath:()=>Ho,registerShape:()=>Ts,resizePath:()=>Cw,updateProps:()=>un});var vr={};kn.r(vr),kn.d(vr,{addCommas:()=>Wa,capitalFirst:()=>S8,encodeHTML:()=>aa,formatTime:()=>mO,formatTpl:()=>aM,getTextRect:()=>sA,getTooltipMarker:()=>pO,normalizeCssArray:()=>Fh,toCamelCase:()=>W0,truncateText:()=>b2});var Dd={};kn.r(Dd),kn.d(Dd,{bind:()=>Ne,clone:()=>rt,curry:()=>vt,defaults:()=>Ye,each:()=>U,extend:()=>ge,filter:()=>Dn,indexOf:()=>Mt,inherits:()=>Cb,isArray:()=>be,isFunction:()=>qe,isObject:()=>ze,isString:()=>Le,map:()=>xe,merge:()=>St,reduce:()=>Mo});var tp=function(r,n){return(tp=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,o){t.__proto__=o}||function(t,o){for(var l in o)Object.prototype.hasOwnProperty.call(o,l)&&(t[l]=o[l])})(r,n)};function le(r,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function t(){this.constructor=r}tp(r,n),r.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}var sR=function r(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},Un=new function r(){this.browser=new sR,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow=typeof window<"u"};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(Un.wxa=!0,Un.touchEventsSupported=!0):typeof document>"u"&&typeof self<"u"?Un.worker=!0:typeof navigator>"u"?(Un.node=!0,Un.svgSupported=!0):function ci(r,n){var t=n.browser,o=r.match(/Firefox\/([\d.]+)/),l=r.match(/MSIE\s([\d.]+)/)||r.match(/Trident\/.+?rv:(([\d.]+))/),c=r.match(/Edge?\/([\d.]+)/),u=/micromessenger/i.test(r);o&&(t.firefox=!0,t.version=o[1]),l&&(t.ie=!0,t.version=l[1]),c&&(t.edge=!0,t.version=c[1],t.newEdge=+c[1].split(".")[0]>18),u&&(t.weChat=!0),n.svgSupported=typeof SVGRect<"u",n.touchEventsSupported="ontouchstart"in window&&!t.ie&&!t.edge,n.pointerEventsSupported="onpointerdown"in window&&(t.edge||t.ie&&+t.version>=11),n.domSupported=typeof document<"u";var h=document.documentElement.style;n.transform3dSupported=(t.ie&&"transition"in h||t.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in h)&&!("OTransition"in h),n.transformSupported=n.transform3dSupported||t.ie&&+t.version>=9}(navigator.userAgent,Un);const sn=Un;var r,n,wb="sans-serif",Qu="12px "+wb,jX=function UX(r){var n={};if(typeof JSON>"u")return n;for(var t=0;t=0)h=u*t.length;else for(var p=0;p>1)%2;u.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",o[p]+":0",l[m]+":0",o[1-p]+":auto",l[1-m]+":auto",""].join("!important;"),r.appendChild(u),t.push(u)}return t}(n,c),h=function oe(r,n,t){for(var o=t?"invTrans":"trans",l=n[o],c=n.srcCoords,u=[],h=[],p=!0,m=0;m<4;m++){var g=r[m].getBoundingClientRect(),v=2*m,y=g.left,b=g.top;u.push(y,b),p=p&&c&&y===c[v]&&b===c[v+1],h.push(r[m].offsetLeft,r[m].offsetTop)}return p&&l?l:(n.srcCoords=u,n[o]=t?yR(h,u):yR(u,h))}(u,c,l);if(h)return h(r,t,o),!0}return!1}function SS(r){return"CANVAS"===r.nodeName.toUpperCase()}var Gt=/([&<>"'])/g,Ib={"&":"&","<":"<",">":">",'"':""","'":"'"};function aa(r){return null==r?"":(r+"").replace(Gt,function(n,t){return Ib[t]})}var Gg=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,DS=[],pH=sn.browser.firefox&&+sn.browser.version.split(".")[0]<39;function MS(r,n,t,o){return t=t||{},o?Ac(r,n,t):pH&&null!=n.layerX&&n.layerX!==n.offsetX?(t.zrX=n.layerX,t.zrY=n.layerY):null!=n.offsetX?(t.zrX=n.offsetX,t.zrY=n.offsetY):Ac(r,n,t),t}function Ac(r,n,t){if(sn.domSupported&&r.getBoundingClientRect){var o=n.clientX,l=n.clientY;if(SS(r)){var c=r.getBoundingClientRect();return t.zrX=o-c.left,void(t.zrY=l-c.top)}if(kd(DS,r,o,l))return t.zrX=DS[0],void(t.zrY=DS[1])}t.zrX=t.zrY=0}function Ao(r){return r||window.event}function Ys(r,n,t){if(null!=(n=Ao(n)).zrX)return n;var o=n.type;if(o&&o.indexOf("touch")>=0){var u="touchend"!==o?n.targetTouches[0]:n.changedTouches[0];u&&MS(r,u,n,t)}else{MS(r,n,n,t);var c=function eZ(r){var n=r.wheelDelta;if(n)return n;var t=r.deltaX,o=r.deltaY;return null==t||null==o?n:3*Math.abs(0!==o?o:t)*(o>0?-1:o<0?1:t>0?-1:1)}(n);n.zrDelta=c?c/120:-(n.detail||0)/3}var h=n.button;return null==n.which&&void 0!==h&&Gg.test(n.type)&&(n.which=1&h?1:2&h?3:4&h?2:0),n}function ko(r,n,t,o){r.addEventListener(n,t,o)}function kc(r,n,t,o){r.removeEventListener(n,t,o)}var mn=function(r){r.preventDefault(),r.stopPropagation(),r.cancelBubble=!0};function Ug(r){return 2===r.which||3===r.which}var TS=function(){function r(){this._track=[]}return r.prototype.recognize=function(n,t,o){return this._doTrack(n,t,o),this._recognize(n)},r.prototype.clear=function(){return this._track.length=0,this},r.prototype._doTrack=function(n,t,o){var l=n.touches;if(l){for(var c={points:[],touches:[],target:t,event:n},u=0,h=l.length;u1&&o&&o.length>1){var c=Pb(o)/Pb(l);!isFinite(c)&&(c=1),n.pinchScale=c;var u=function wR(r){return[(r[0][0]+r[1][0])/2,(r[0][1]+r[1][1])/2]}(o);return n.pinchX=u[0],n.pinchY=u[1],{type:"pinch",target:r[0].target,event:n}}}}};function oa(){return[1,0,0,1,0,0]}function jg(r){return r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r}function we(r,n){return r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4],r[5]=n[5],r}function Xs(r,n,t){var l=n[1]*t[0]+n[3]*t[1],c=n[0]*t[2]+n[2]*t[3],u=n[1]*t[2]+n[3]*t[3],h=n[0]*t[4]+n[2]*t[5]+n[4],p=n[1]*t[4]+n[3]*t[5]+n[5];return r[0]=n[0]*t[0]+n[2]*t[1],r[1]=l,r[2]=c,r[3]=u,r[4]=h,r[5]=p,r}function ss(r,n,t){return r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4]+t[0],r[5]=n[5]+t[1],r}function Ec(r,n,t){var o=n[0],l=n[2],c=n[4],u=n[1],h=n[3],p=n[5],m=Math.sin(t),g=Math.cos(t);return r[0]=o*g+u*m,r[1]=-o*m+u*g,r[2]=l*g+h*m,r[3]=-l*m+g*h,r[4]=g*c+m*p,r[5]=g*p-m*c,r}function dt(r,n,t){var o=t[0],l=t[1];return r[0]=n[0]*o,r[1]=n[1]*l,r[2]=n[2]*o,r[3]=n[3]*l,r[4]=n[4]*o,r[5]=n[5]*l,r}function ah(r,n){var t=n[0],o=n[2],l=n[4],c=n[1],u=n[3],h=n[5],p=t*u-c*o;return p?(r[0]=u*(p=1/p),r[1]=-c*p,r[2]=-o*p,r[3]=t*p,r[4]=(o*h-u*l)*p,r[5]=(c*l-t*h)*p,r):null}function AS(r){var n=[1,0,0,1,0,0];return we(n,r),n}var me=function(){function r(n,t){this.x=n||0,this.y=t||0}return r.prototype.copy=function(n){return this.x=n.x,this.y=n.y,this},r.prototype.clone=function(){return new r(this.x,this.y)},r.prototype.set=function(n,t){return this.x=n,this.y=t,this},r.prototype.equal=function(n){return n.x===this.x&&n.y===this.y},r.prototype.add=function(n){return this.x+=n.x,this.y+=n.y,this},r.prototype.scale=function(n){this.x*=n,this.y*=n},r.prototype.scaleAndAdd=function(n,t){this.x+=n.x*t,this.y+=n.y*t},r.prototype.sub=function(n){return this.x-=n.x,this.y-=n.y,this},r.prototype.dot=function(n){return this.x*n.x+this.y*n.y},r.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},r.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},r.prototype.normalize=function(){var n=this.len();return this.x/=n,this.y/=n,this},r.prototype.distance=function(n){var t=this.x-n.x,o=this.y-n.y;return Math.sqrt(t*t+o*o)},r.prototype.distanceSquare=function(n){var t=this.x-n.x,o=this.y-n.y;return t*t+o*o},r.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},r.prototype.transform=function(n){if(n){var t=this.x,o=this.y;return this.x=n[0]*t+n[2]*o+n[4],this.y=n[1]*t+n[3]*o+n[5],this}},r.prototype.toArray=function(n){return n[0]=this.x,n[1]=this.y,n},r.prototype.fromArray=function(n){this.x=n[0],this.y=n[1]},r.set=function(n,t,o){n.x=t,n.y=o},r.copy=function(n,t){n.x=t.x,n.y=t.y},r.len=function(n){return Math.sqrt(n.x*n.x+n.y*n.y)},r.lenSquare=function(n){return n.x*n.x+n.y*n.y},r.dot=function(n,t){return n.x*t.x+n.y*t.y},r.add=function(n,t,o){n.x=t.x+o.x,n.y=t.y+o.y},r.sub=function(n,t,o){n.x=t.x-o.x,n.y=t.y-o.y},r.scale=function(n,t,o){n.x=t.x*o,n.y=t.y*o},r.scaleAndAdd=function(n,t,o,l){n.x=t.x+o.x*l,n.y=t.y+o.y*l},r.lerp=function(n,t,o,l){var c=1-l;n.x=c*t.x+l*o.x,n.y=c*t.y+l*o.y},r}();const it=me;var Rn=Math.min,Ar=Math.max,or=new it,ls=new it,kr=new it,Va=new it,Ke=new it,Xt=new it,Yi=function(){function r(n,t,o,l){o<0&&(n+=o,o=-o),l<0&&(t+=l,l=-l),this.x=n,this.y=t,this.width=o,this.height=l}return r.prototype.union=function(n){var t=Rn(n.x,this.x),o=Rn(n.y,this.y);this.width=isFinite(this.x)&&isFinite(this.width)?Ar(n.x+n.width,this.x+this.width)-t:n.width,this.height=isFinite(this.y)&&isFinite(this.height)?Ar(n.y+n.height,this.y+this.height)-o:n.height,this.x=t,this.y=o},r.prototype.applyTransform=function(n){r.applyTransform(this,this,n)},r.prototype.calculateTransform=function(n){var t=this,o=n.width/t.width,l=n.height/t.height,c=[1,0,0,1,0,0];return ss(c,c,[-t.x,-t.y]),dt(c,c,[o,l]),ss(c,c,[n.x,n.y]),c},r.prototype.intersect=function(n,t){if(!n)return!1;n instanceof r||(n=r.create(n));var o=this,l=o.x,c=o.x+o.width,u=o.y,h=o.y+o.height,p=n.x,m=n.x+n.width,g=n.y,v=n.y+n.height,y=!(cx&&(x=A,it.set(Xt,Cx&&(x=E,it.set(Xt,0,M=o.x&&n<=o.x+o.width&&t>=o.y&&t<=o.y+o.height},r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.copy=function(n){r.copy(this,n)},r.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},r.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},r.prototype.isZero=function(){return 0===this.width||0===this.height},r.create=function(n){return new r(n.x,n.y,n.width,n.height)},r.copy=function(n,t){n.x=t.x,n.y=t.y,n.width=t.width,n.height=t.height},r.applyTransform=function(n,t,o){if(o){if(o[1]<1e-5&&o[1]>-1e-5&&o[2]<1e-5&&o[2]>-1e-5){var l=o[0],c=o[3],h=o[5];return n.x=t.x*l+o[4],n.y=t.y*c+h,n.width=t.width*l,n.height=t.height*c,n.width<0&&(n.x+=n.width,n.width=-n.width),void(n.height<0&&(n.y+=n.height,n.height=-n.height))}or.x=kr.x=t.x,or.y=Va.y=t.y,ls.x=Va.x=t.x+t.width,ls.y=kr.y=t.y+t.height,or.transform(o),Va.transform(o),ls.transform(o),kr.transform(o),n.x=Rn(or.x,ls.x,kr.x,Va.x),n.y=Rn(or.y,ls.y,kr.y,Va.y);var p=Ar(or.x,ls.x,kr.x,Va.x),m=Ar(or.y,ls.y,kr.y,Va.y);n.width=p-n.x,n.height=m-n.y}else n!==t&&r.copy(n,t)},r}();const lt=Yi;function op(){mn(this.event)}var sr=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.handler=null,t}return qn(n,r),n.prototype.dispose=function(){},n.prototype.setCursor=function(){},n}(ao),Id=function r(n,t){this.x=n,this.y=t},Rb=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],rn=new lt(0,0,0,0),Ob=function(r){function n(t,o,l,c,u){var h=r.call(this)||this;return h._hovered=new Id(0,0),h.storage=t,h.painter=o,h.painterRoot=c,h._pointerSize=u,l=l||new sr,h.proxy=null,h.setHandlerProxy(l),h._draggingMgr=new JX(h),h}return qn(n,r),n.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(U(Rb,function(o){t.on&&t.on(o,this[o],this)},this),t.handler=this),this.proxy=t},n.prototype.mousemove=function(t){var o=t.zrX,l=t.zrY,c=oh(this,o,l),u=this._hovered,h=u.target;h&&!h.__zr&&(h=(u=this.findHover(u.x,u.y)).target);var p=this._hovered=c?new Id(o,l):this.findHover(o,l),m=p.target,g=this.proxy;g.setCursor&&g.setCursor(m?m.cursor:"default"),h&&m!==h&&this.dispatchToElement(u,"mouseout",t),this.dispatchToElement(p,"mousemove",t),m&&m!==h&&this.dispatchToElement(p,"mouseover",t)},n.prototype.mouseout=function(t){var o=t.zrEventControl;"only_globalout"!==o&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==o&&this.trigger("globalout",{type:"globalout",event:t})},n.prototype.resize=function(){this._hovered=new Id(0,0)},n.prototype.dispatch=function(t,o){var l=this[t];l&&l.call(this,o)},n.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},n.prototype.setCursorStyle=function(t){var o=this.proxy;o.setCursor&&o.setCursor(t)},n.prototype.dispatchToElement=function(t,o,l){var c=(t=t||{}).target;if(!c||!c.silent){for(var u="on"+o,h=function Sa(r,n,t){return{type:r,event:t,target:n.target,topTarget:n.topTarget,cancelBubble:!1,offsetX:t.zrX,offsetY:t.zrY,gestureEvent:t.gestureEvent,pinchX:t.pinchX,pinchY:t.pinchY,pinchScale:t.pinchScale,wheelDelta:t.zrDelta,zrByTouch:t.zrByTouch,which:t.which,stop:op}}(o,t,l);c&&(c[u]&&(h.cancelBubble=!!c[u].call(c,h)),c.trigger(o,h),c=c.__hostTarget?c.__hostTarget:c.parent,!h.cancelBubble););h.cancelBubble||(this.trigger(o,h),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(p){"function"==typeof p[u]&&p[u].call(p,h),p.trigger&&p.trigger(o,h)}))}},n.prototype.findHover=function(t,o,l){var c=this.storage.getDisplayList(),u=new Id(t,o);if(kS(c,u,t,o,l),this._pointerSize&&!u.target){for(var h=[],p=this._pointerSize,m=p/2,g=new lt(t-m,o-m,p,p),v=c.length-1;v>=0;v--){var y=c[v];y!==l&&!y.ignore&&!y.ignoreCoarsePointer&&(!y.parent||!y.parent.ignoreCoarsePointer)&&(rn.copy(y.getBoundingRect()),y.transform&&rn.applyTransform(y.transform),rn.intersect(g)&&h.push(y))}if(h.length)for(var x=Math.PI/12,C=2*Math.PI,S=0;S=0;c--){var u=r[c],h=void 0;if(u!==l&&!u.ignore&&(h=$g(u,t,o))&&(!n.topTarget&&(n.topTarget=u),"silent"!==h)){n.target=u;break}}}function oh(r,n,t){var o=r.painter;return n<0||n>o.getWidth()||t<0||t>o.getHeight()}U(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(r){Ob.prototype[r]=function(n){var c,u,t=n.zrX,o=n.zrY,l=oh(this,t,o);if(("mouseup"!==r||!l)&&(u=(c=this.findHover(t,o)).target),"mousedown"===r)this._downEl=u,this._downPoint=[n.zrX,n.zrY],this._upEl=u;else if("mouseup"===r)this._upEl=u;else if("click"===r){if(this._downEl!==this._upEl||!this._downPoint||Tc(this._downPoint,[n.zrX,n.zrY])>4)return;this._downPoint=null}this.dispatchToElement(c,r,n)}});const Da=Ob;function ES(r,n,t,o){var l=n+1;if(l===t)return 1;if(o(r[l++],r[n])<0){for(;l=0;)l++;return l-n}function mH(r,n,t,o,l){for(o===n&&o++;o>>1])<0?h=p:u=p+1;var m=o-u;switch(m){case 3:r[u+3]=r[u+2];case 2:r[u+2]=r[u+1];case 1:r[u+1]=r[u];break;default:for(;m>0;)r[u+m]=r[u+m-1],m--}r[u]=c}}function Yg(r,n,t,o,l,c){var u=0,h=0,p=1;if(c(r,n[t+l])>0){for(h=o-l;p0;)u=p,(p=1+(p<<1))<=0&&(p=h);p>h&&(p=h),u+=l,p+=l}else{for(h=l+1;ph&&(p=h);var m=u;u=l-p,p=l-m}for(u++;u>>1);c(r,n[t+g])>0?u=g+1:p=g}return p}function Lb(r,n,t,o,l,c){var u=0,h=0,p=1;if(c(r,n[t+l])<0){for(h=l+1;ph&&(p=h);var m=u;u=l-p,p=l-m}else{for(h=o-l;p=0;)u=p,(p=1+(p<<1))<=0&&(p=h);p>h&&(p=h),u+=l,p+=l}for(u++;u>>1);c(r,n[t+g])<0?p=g:u=g+1}return p}function sh(r,n,t,o){t||(t=0),o||(o=r.length);var l=o-t;if(!(l<2)){var c=0;if(l<32)return void mH(r,t,o,t+(c=ES(r,t,o,n)),n);var u=function Fb(r,n){var u,h,t=7,p=0,m=[];function b(S){var M=u[S],T=h[S],A=u[S+1],E=h[S+1];h[S]=T+E,S===p-3&&(u[S+1]=u[S+2],h[S+1]=h[S+2]),p--;var L=Lb(r[A],r,M,T,0,n);M+=L,0!=(T-=L)&&0!==(E=Yg(r[M+T-1],r,A,E,E-1,n))&&(T<=E?function x(S,M,T,A){var E=0;for(E=0;E=7||j>=7);if($)break;H<0&&(H=0),H+=2}if((t=H)<1&&(t=1),1===M){for(E=0;E=0;E--)r[G+E]=r[H+E];if(0===M){K=!0;break}}if(r[B--]=m[R--],1==--A){K=!0;break}if(0!=(X=A-Yg(r[L],m,0,A,A-1,n))){for(A-=X,G=1+(B-=X),H=1+(R-=X),E=0;E=7||X>=7);if(K)break;j<0&&(j=0),j+=2}if((t=j)<1&&(t=1),1===A){for(G=1+(B-=M),H=1+(L-=M),E=M-1;E>=0;E--)r[G+E]=r[H+E];r[B]=m[R]}else{if(0===A)throw new Error;for(H=B-(A-1),E=0;E=0;E--)r[G+E]=r[H+E];r[B]=m[R]}else for(H=B-(A-1),E=0;E1;){var S=p-2;if(S>=1&&h[S-1]<=h[S]+h[S+1]||S>=2&&h[S-2]<=h[S]+h[S-1])h[S-1]h[S+1])break;b(S)}},forceMergeRuns:function y(){for(;p>1;){var S=p-2;S>0&&h[S-1]=32;)n|=1&r,r>>=1;return r+n}(l);do{if((c=ES(r,t,o,n))h&&(p=h),mH(r,t,t+p,t+c,n),c=p}u.pushRun(t,c),u.mergeRuns(),l-=c,t+=c}while(0!==l);u.forceMergeRuns()}}var oo=!1;function Eo(){oo||(oo=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function Nb(r,n){return r.zlevel===n.zlevel?r.z===n.z?r.z2-n.z2:r.z-n.z:r.zlevel-n.zlevel}var Xg=function(){function r(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=Nb}return r.prototype.traverse=function(n,t){for(var o=0;o0&&(g.__clipPaths=[]),isNaN(g.z)&&(Eo(),g.z=0),isNaN(g.z2)&&(Eo(),g.z2=0),isNaN(g.zlevel)&&(Eo(),g.zlevel=0),this._displayList[this._displayListLen++]=g}var v=n.getDecalElement&&n.getDecalElement();v&&this._updateAndAddDisplayable(v,t,o);var y=n.getTextGuideLine();y&&this._updateAndAddDisplayable(y,t,o);var b=n.getTextContent();b&&this._updateAndAddDisplayable(b,t,o)}},r.prototype.addRoot=function(n){n.__zr&&n.__zr.storage===this||this._roots.push(n)},r.prototype.delRoot=function(n){if(n instanceof Array)for(var t=0,o=n.length;t=0&&this._roots.splice(l,1)}},r.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},r.prototype.getRoots=function(){return this._roots},r.prototype.dispose=function(){this._displayList=null,this._roots=null},r}();const Bb=Xg;var cs;cs=sn.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(r){return setTimeout(r,16)};const IS=cs;var PS={linear:function(r){return r},quadraticIn:function(r){return r*r},quadraticOut:function(r){return r*(2-r)},quadraticInOut:function(r){return(r*=2)<1?.5*r*r:-.5*(--r*(r-2)-1)},cubicIn:function(r){return r*r*r},cubicOut:function(r){return--r*r*r+1},cubicInOut:function(r){return(r*=2)<1?.5*r*r*r:.5*((r-=2)*r*r+2)},quarticIn:function(r){return r*r*r*r},quarticOut:function(r){return 1- --r*r*r*r},quarticInOut:function(r){return(r*=2)<1?.5*r*r*r*r:-.5*((r-=2)*r*r*r-2)},quinticIn:function(r){return r*r*r*r*r},quinticOut:function(r){return--r*r*r*r*r+1},quinticInOut:function(r){return(r*=2)<1?.5*r*r*r*r*r:.5*((r-=2)*r*r*r*r+2)},sinusoidalIn:function(r){return 1-Math.cos(r*Math.PI/2)},sinusoidalOut:function(r){return Math.sin(r*Math.PI/2)},sinusoidalInOut:function(r){return.5*(1-Math.cos(Math.PI*r))},exponentialIn:function(r){return 0===r?0:Math.pow(1024,r-1)},exponentialOut:function(r){return 1===r?1:1-Math.pow(2,-10*r)},exponentialInOut:function(r){return 0===r?0:1===r?1:(r*=2)<1?.5*Math.pow(1024,r-1):.5*(2-Math.pow(2,-10*(r-1)))},circularIn:function(r){return 1-Math.sqrt(1-r*r)},circularOut:function(r){return Math.sqrt(1- --r*r)},circularInOut:function(r){return(r*=2)<1?-.5*(Math.sqrt(1-r*r)-1):.5*(Math.sqrt(1-(r-=2)*r)+1)},elasticIn:function(r){var n,t=.1;return 0===r?0:1===r?1:(!t||t<1?(t=1,n=.1):n=.4*Math.asin(1/t)/(2*Math.PI),-t*Math.pow(2,10*(r-=1))*Math.sin((r-n)*(2*Math.PI)/.4))},elasticOut:function(r){var n,t=.1;return 0===r?0:1===r?1:(!t||t<1?(t=1,n=.1):n=.4*Math.asin(1/t)/(2*Math.PI),t*Math.pow(2,-10*r)*Math.sin((r-n)*(2*Math.PI)/.4)+1)},elasticInOut:function(r){var n,t=.1;return 0===r?0:1===r?1:(!t||t<1?(t=1,n=.1):n=.4*Math.asin(1/t)/(2*Math.PI),(r*=2)<1?t*Math.pow(2,10*(r-=1))*Math.sin((r-n)*(2*Math.PI)/.4)*-.5:t*Math.pow(2,-10*(r-=1))*Math.sin((r-n)*(2*Math.PI)/.4)*.5+1)},backIn:function(r){var n=1.70158;return r*r*((n+1)*r-n)},backOut:function(r){var n=1.70158;return--r*r*((n+1)*r+n)+1},backInOut:function(r){var n=2.5949095;return(r*=2)<1?r*r*((n+1)*r-n)*.5:.5*((r-=2)*r*((n+1)*r+n)+2)},bounceIn:function(r){return 1-PS.bounceOut(1-r)},bounceOut:function(r){return r<1/2.75?7.5625*r*r:r<2/2.75?7.5625*(r-=1.5/2.75)*r+.75:r<2.5/2.75?7.5625*(r-=2.25/2.75)*r+.9375:7.5625*(r-=2.625/2.75)*r+.984375},bounceInOut:function(r){return r<.5?.5*PS.bounceIn(2*r):.5*PS.bounceOut(2*r-1)+.5}};const xR=PS;var Vb=Math.pow,lh=Math.sqrt,vH=lh(3),OS=1/3,Ic=Mr(),Ks=Mr(),Zg=Mr();function ch(r){return r>-1e-8&&r<1e-8}function _H(r){return r>1e-8||r<-1e-8}function Yr(r,n,t,o,l){var c=1-l;return c*c*(c*r+3*l*n)+l*l*(l*o+3*c*t)}function yH(r,n,t,o,l){var c=1-l;return 3*(((n-r)*c+2*(t-n)*l)*c+(o-t)*l*l)}function Kg(r,n,t,o,l,c){var u=o+3*(n-t)-r,h=3*(t-2*n+r),p=3*(n-r),m=r-l,g=h*h-3*u*p,v=h*p-9*u*m,y=p*p-3*h*m,b=0;if(ch(g)&&ch(v))ch(h)?c[0]=0:(x=-p/h)>=0&&x<=1&&(c[b++]=x);else{var C=v*v-4*g*y;if(ch(C)){var S=v/g,M=-S/2;(x=-h/u+S)>=0&&x<=1&&(c[b++]=x),M>=0&&M<=1&&(c[b++]=M)}else if(C>0){var T=lh(C),A=g*h+1.5*u*(-v+T),E=g*h+1.5*u*(-v-T);(x=(-h-((A=A<0?-Vb(-A,OS):Vb(A,OS))+(E=E<0?-Vb(-E,OS):Vb(E,OS))))/(3*u))>=0&&x<=1&&(c[b++]=x)}else{var L=(2*g*h-3*u*v)/(2*lh(g*g*g)),R=Math.acos(L)/3,B=lh(g),H=Math.cos(R),x=(-h-2*B*H)/(3*u),G=(M=(-h+B*(H+vH*Math.sin(R)))/(3*u),(-h+B*(H-vH*Math.sin(R)))/(3*u));x>=0&&x<=1&&(c[b++]=x),M>=0&&M<=1&&(c[b++]=M),G>=0&&G<=1&&(c[b++]=G)}}return b}function LS(r,n,t,o,l){var c=6*t-12*n+6*r,u=9*n+3*o-3*r-9*t,h=3*n-3*r,p=0;if(ch(u))_H(c)&&(m=-h/c)>=0&&m<=1&&(l[p++]=m);else{var g=c*c-4*u*h;if(ch(g))l[0]=-c/(2*u);else if(g>0){var m,v=lh(g),y=(-c-v)/(2*u);(m=(-c+v)/(2*u))>=0&&m<=1&&(l[p++]=m),y>=0&&y<=1&&(l[p++]=y)}}return p}function dh(r,n,t,o,l,c){var u=(n-r)*l+r,h=(t-n)*l+n,p=(o-t)*l+t,m=(h-u)*l+u,g=(p-h)*l+h,v=(g-m)*l+m;c[0]=r,c[1]=u,c[2]=m,c[3]=v,c[4]=v,c[5]=g,c[6]=p,c[7]=o}function bH(r,n,t,o,l,c,u,h,p,m,g){var v,x,C,S,M,y=.005,b=1/0;Ic[0]=p,Ic[1]=m;for(var T=0;T<1;T+=.05)Ks[0]=Yr(r,t,l,u,T),Ks[1]=Yr(n,o,c,h,T),(S=El(Ic,Ks))=0&&S=0&&b=1?1:Kg(0,o,c,1,p,h)&&Yr(0,l,u,1,h[0])}}}var VS=function(){function r(n){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=n.life||1e3,this._delay=n.delay||0,this.loop=n.loop||!1,this.onframe=n.onframe||zi,this.ondestroy=n.ondestroy||zi,this.onrestart=n.onrestart||zi,n.easing&&this.setEasing(n.easing)}return r.prototype.step=function(n,t){if(this._inited||(this._startTime=n+this._delay,this._inited=!0),!this._paused){var o=this._life,l=n-this._startTime-this._pausedTime,c=l/o;c<0&&(c=0),c=Math.min(c,1);var u=this.easingFunc,h=u?u(c):c;if(this.onframe(h),1===c){if(!this.loop)return!0;this._startTime=n-l%o,this._pausedTime=0,this.onrestart()}return!1}this._pausedTime+=t},r.prototype.pause=function(){this._paused=!0},r.prototype.resume=function(){this._paused=!1},r.prototype.setEasing=function(n){this.easing=n,this.easingFunc=qe(n)?n:xR[n]||BS(n)},r}();const wH=VS;var Io=function r(n){this.value=n},MR=function(){function r(){this._len=0}return r.prototype.insert=function(n){var t=new Io(n);return this.insertEntry(t),t},r.prototype.insertEntry=function(n){this.head?(this.tail.next=n,n.prev=this.tail,n.next=null,this.tail=n):this.head=this.tail=n,this._len++},r.prototype.remove=function(n){var t=n.prev,o=n.next;t?t.next=o:this.head=o,o?o.prev=t:this.tail=t,n.next=n.prev=null,this._len--},r.prototype.len=function(){return this._len},r.prototype.clear=function(){this.head=this.tail=null,this._len=0},r}(),TR=function(){function r(n){this._list=new MR,this._maxSize=10,this._map={},this._maxSize=n}return r.prototype.put=function(n,t){var o=this._list,l=this._map,c=null;if(null==l[n]){var u=o.len(),h=this._lastRemovedEntry;if(u>=this._maxSize&&u>0){var p=o.head;o.remove(p),delete l[p.key],c=p.value,this._lastRemovedEntry=p}h?h.value=t:h=new Io(t),h.key=n,o.insertEntry(h),l[n]=h}return c},r.prototype.get=function(n){var t=this._map[n],o=this._list;if(null!=t)return t!==o.tail&&(o.remove(t),o.insertEntry(t)),t.value},r.prototype.clear=function(){this._list.clear(),this._map={}},r.prototype.len=function(){return this._list.len()},r}();const lr=TR;var AR={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function so(r){return(r=Math.round(r))<0?0:r>255?255:r}function Jg(r){return r<0?0:r>1?1:r}function zb(r){var n=r;return n.length&&"%"===n.charAt(n.length-1)?so(parseFloat(n)/100*255):so(parseInt(n,10))}function ds(r){var n=r;return n.length&&"%"===n.charAt(n.length-1)?Jg(parseFloat(n)/100):Jg(parseFloat(n))}function za(r,n,t){return t<0?t+=1:t>1&&(t-=1),6*t<1?r+(n-r)*t*6:2*t<1?n:3*t<2?r+(n-r)*(2/3-t)*6:r}function Pd(r,n,t){return r+(n-r)*t}function Ha(r,n,t,o,l){return r[0]=n,r[1]=t,r[2]=o,r[3]=l,r}function zS(r,n){return r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r}var Pc=new lr(20),ev=null;function Rd(r,n){ev&&zS(ev,n),ev=Pc.put(r,ev||n.slice())}function yt(r,n){if(r){n=n||[];var t=Pc.get(r);if(t)return zS(n,t);var o=(r+="").replace(/ /g,"").toLowerCase();if(o in AR)return zS(n,AR[o]),Rd(r,n),n;var c,l=o.length;if("#"===o.charAt(0))return 4===l||5===l?(c=parseInt(o.slice(1,4),16))>=0&&c<=4095?(Ha(n,(3840&c)>>4|(3840&c)>>8,240&c|(240&c)>>4,15&c|(15&c)<<4,5===l?parseInt(o.slice(4),16)/15:1),Rd(r,n),n):void Ha(n,0,0,0,1):7===l||9===l?(c=parseInt(o.slice(1,7),16))>=0&&c<=16777215?(Ha(n,(16711680&c)>>16,(65280&c)>>8,255&c,9===l?parseInt(o.slice(7),16)/255:1),Rd(r,n),n):void Ha(n,0,0,0,1):void 0;var u=o.indexOf("("),h=o.indexOf(")");if(-1!==u&&h+1===l){var p=o.substr(0,u),m=o.substr(u+1,h-(u+1)).split(","),g=1;switch(p){case"rgba":if(4!==m.length)return 3===m.length?Ha(n,+m[0],+m[1],+m[2],1):Ha(n,0,0,0,1);g=ds(m.pop());case"rgb":return m.length>=3?(Ha(n,zb(m[0]),zb(m[1]),zb(m[2]),3===m.length?g:ds(m[3])),Rd(r,n),n):void Ha(n,0,0,0,1);case"hsla":return 4!==m.length?void Ha(n,0,0,0,1):(m[3]=ds(m[3]),Hb(m,n),Rd(r,n),n);case"hsl":return 3!==m.length?void Ha(n,0,0,0,1):(Hb(m,n),Rd(r,n),n);default:return}}Ha(n,0,0,0,1)}}function Hb(r,n){var t=(parseFloat(r[0])%360+360)%360/360,o=ds(r[1]),l=ds(r[2]),c=l<=.5?l*(o+1):l+o-l*o,u=2*l-c;return Ha(n=n||[],so(255*za(u,c,t+1/3)),so(255*za(u,c,t)),so(255*za(u,c,t-1/3)),1),4===r.length&&(n[3]=r[3]),n}function Gb(r,n){var t=yt(r);if(t){for(var o=0;o<3;o++)t[o]=n<0?t[o]*(1-n)|0:(255-t[o])*n+t[o]|0,t[o]>255?t[o]=255:t[o]<0&&(t[o]=0);return ae(t,4===t.length?"rgba":"rgb")}}function xH(r){var n=yt(r);if(n)return((1<<24)+(n[0]<<16)+(n[1]<<8)+ +n[2]).toString(16).slice(1)}function tv(r,n,t){if(n&&n.length&&r>=0&&r<=1){t=t||[];var o=r*(n.length-1),l=Math.floor(o),c=Math.ceil(o),u=n[l],h=n[c],p=o-l;return t[0]=so(Pd(u[0],h[0],p)),t[1]=so(Pd(u[1],h[1],p)),t[2]=so(Pd(u[2],h[2],p)),t[3]=Jg(Pd(u[3],h[3],p)),t}}var kR=tv;function HS(r,n,t){if(n&&n.length&&r>=0&&r<=1){var o=r*(n.length-1),l=Math.floor(o),c=Math.ceil(o),u=yt(n[l]),h=yt(n[c]),p=o-l,m=ae([so(Pd(u[0],h[0],p)),so(Pd(u[1],h[1],p)),so(Pd(u[2],h[2],p)),Jg(Pd(u[3],h[3],p))],"rgba");return t?{color:m,leftIndex:l,rightIndex:c,value:o}:m}}var CH=HS;function Me(r,n,t,o){var l=yt(r);if(r)return l=function nZ(r){if(r){var p,m,n=r[0]/255,t=r[1]/255,o=r[2]/255,l=Math.min(n,t,o),c=Math.max(n,t,o),u=c-l,h=(c+l)/2;if(0===u)p=0,m=0;else{m=h<.5?u/(c+l):u/(2-c-l);var g=((c-n)/6+u/2)/u,v=((c-t)/6+u/2)/u,y=((c-o)/6+u/2)/u;n===c?p=y-v:t===c?p=1/3+g-y:o===c&&(p=2/3+v-g),p<0&&(p+=1),p>1&&(p-=1)}var b=[360*p,m,h];return null!=r[3]&&b.push(r[3]),b}}(l),null!=n&&(l[0]=function Po(r){return(r=Math.round(r))<0?0:r>360?360:r}(n)),null!=t&&(l[1]=ds(t)),null!=o&&(l[2]=ds(o)),ae(Hb(l),"rgba")}function yn(r,n){var t=yt(r);if(t&&null!=n)return t[3]=Jg(n),ae(t,"rgba")}function ae(r,n){if(r&&r.length){var t=r[0]+","+r[1]+","+r[2];return("rgba"===n||"hsva"===n||"hsla"===n)&&(t+=","+r[3]),n+"("+t+")"}}function se(r,n){var t=yt(r);return t?(.299*t[0]+.587*t[1]+.114*t[2])*t[3]/255+(1-t[3])*n:0}function sa(){return ae([Math.round(255*Math.random()),Math.round(255*Math.random()),Math.round(255*Math.random())],"rgb")}var lp=Math.round;function Rc(r){var n;if(r&&"transparent"!==r){if("string"==typeof r&&r.indexOf("rgba")>-1){var t=yt(r);t&&(r="rgb("+t[0]+","+t[1]+","+t[2]+")",n=t[3])}}else r="none";return{color:r,opacity:n??1}}function Pl(r){return r<1e-4&&r>-1e-4}function cp(r){return lp(1e3*r)/1e3}function GS(r){return lp(1e4*r)/1e4}var Ga={left:"start",right:"end",center:"middle",middle:"middle"};function PR(r){return r&&!!r.image}function US(r){return PR(r)||function RR(r){return r&&!!r.svgElement}(r)}function OR(r){return"linear"===r.type}function Ub(r){return"radial"===r.type}function jb(r){return r&&("linear"===r.type||"radial"===r.type)}function nv(r){return"url(#"+r+")"}function $b(r){var n=r.getGlobalScale(),t=Math.max(n[0],n[1]);return Math.max(Math.ceil(Math.log(t)/Math.log(10)),1)}function LR(r){var n=r.x||0,t=r.y||0,o=(r.rotation||0)*nn,l=Dt(r.scaleX,1),c=Dt(r.scaleY,1),u=r.skewX||0,h=r.skewY||0,p=[];return(n||t)&&p.push("translate("+n+"px,"+t+"px)"),o&&p.push("rotate("+o+")"),(1!==l||1!==c)&&p.push("scale("+l+","+c+")"),(u||h)&&p.push("skew("+lp(u*nn)+"deg, "+lp(h*nn)+"deg)"),p.join(" ")}var FR=sn.hasGlobalWindow&&qe(window.btoa)?function(r){return window.btoa(unescape(encodeURIComponent(r)))}:typeof Buffer<"u"?function(r){return Buffer.from(r).toString("base64")}:function(r){return null},iv=Array.prototype.slice;function Rl(r,n,t){return(n-r)*t+r}function Wb(r,n,t,o){for(var l=n.length,c=0;co?n:r,c=Math.min(t,o),u=l[c-1]||{color:[0,0,0,0],offset:0},h=c;hu)o.length=u;else for(var p=c;p=1},r.prototype.getAdditiveTrack=function(){return this._additiveTrack},r.prototype.addKeyframe=function(n,t,o){this._needsSort=!0;var l=this.keyframes,c=l.length,u=!1,h=6,p=t;if(ra(t)){var m=function Hi(r){return ra(r&&r[0])?2:1}(t);h=m,(1===m&&!ln(t[0])||2===m&&!ln(t[0][0]))&&(u=!0)}else if(ln(t)&&!th(t))h=0;else if(Le(t))if(isNaN(+t)){var g=yt(t);g&&(p=g,h=3)}else h=0;else if(Fg(t)){var v=ge({},p);v.colorStops=xe(t.colorStops,function(b){return{offset:b.offset,color:yt(b.color)}}),OR(t)?h=4:Ub(t)&&(h=5),p=v}0===c?this.valType=h:(h!==this.valType||6===h)&&(u=!0),this.discrete=this.discrete||u;var y={time:n,value:p,rawValue:t,percent:0};return o&&(y.easing=o,y.easingFunc=qe(o)?o:xR[o]||BS(o)),l.push(y),y},r.prototype.prepare=function(n,t){var o=this.keyframes;this._needsSort&&o.sort(function(C,S){return C.time-S.time});for(var l=this.valType,c=o.length,u=o[c-1],h=this.discrete,p=uh(l),m=sv(l),g=0;g=0&&!(u[g].percent<=t);g--);g=y(g,h-2)}else{for(g=v;gt);g++);g=y(g-1,h-2)}x=u[g+1],b=u[g]}if(b&&x){this._lastFr=g,this._lastFrP=t;var S=x.percent-b.percent,M=0===S?1:y((t-b.percent)/S,1);x.easingFunc&&(M=x.easingFunc(M));var T=o?this._additiveValue:m?hh:n[p];if((uh(c)||m)&&!T&&(T=this._additiveValue=[]),this.discrete)n[p]=M<1?b.rawValue:x.rawValue;else if(uh(c))1===c?Wb(T,b[l],x[l],M):function NR(r,n,t,o){for(var l=n.length,c=l&&n[0].length,u=0;u0&&p.addKeyframe(0,Ir(m),l),this._trackKeys.push(h)}p.addKeyframe(n,Ir(t[h]),l)}return this._maxTime=Math.max(this._maxTime,n),this},r.prototype.pause=function(){this._clip.pause(),this._paused=!0},r.prototype.resume=function(){this._clip.resume(),this._paused=!1},r.prototype.isPaused=function(){return!!this._paused},r.prototype.duration=function(n){return this._maxTime=n,this._force=!0,this},r.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var n=this._doneCbs;if(n)for(var t=n.length,o=0;o0)){this._started=1;for(var t=this,o=[],l=this._maxTime||0,c=0;c1){var h=u.pop();c.addKeyframe(h.time,n[l]),c.prepare(this._maxTime,c.getAdditiveTrack())}}}},r}();const Ld=MH;function Fl(){return(new Date).getTime()}var TH=function(r){function n(t){var o=r.call(this)||this;return o._running=!1,o._time=0,o._pausedTime=0,o._pauseStart=0,o._paused=!1,o.stage=(t=t||{}).stage||{},o}return qn(n,r),n.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},n.prototype.addAnimator=function(t){t.animation=this;var o=t.getClip();o&&this.addClip(o)},n.prototype.removeClip=function(t){if(t.animation){var o=t.prev,l=t.next;o?o.next=l:this._head=l,l?l.prev=o:this._tail=o,t.next=t.prev=t.animation=null}},n.prototype.removeAnimator=function(t){var o=t.getClip();o&&this.removeClip(o),t.animation=null},n.prototype.update=function(t){for(var o=Fl()-this._pausedTime,l=o-this._time,c=this._head;c;){var u=c.next;c.step(o,l)&&(c.ondestroy(),this.removeClip(c)),c=u}this._time=o,t||(this.trigger("frame",l),this.stage.update&&this.stage.update())},n.prototype._startLoop=function(){var t=this;this._running=!0,IS(function o(){t._running&&(IS(o),!t._paused&&t.update())})},n.prototype.start=function(){this._running||(this._time=Fl(),this._pausedTime=0,this._startLoop())},n.prototype.stop=function(){this._running=!1},n.prototype.pause=function(){this._paused||(this._pauseStart=Fl(),this._paused=!0)},n.prototype.resume=function(){this._paused&&(this._pausedTime+=Fl()-this._pauseStart,this._paused=!1)},n.prototype.clear=function(){for(var t=this._head;t;){var o=t.next;t.prev=t.next=t.animation=null,t=o}this._head=this._tail=null},n.prototype.isFinished=function(){return null==this._head},n.prototype.animate=function(t,o){o=o||{},this.start();var l=new Ld(t,o.loop);return this.addAnimator(l),l},n}(ao);const iZ=TH;var VR=sn.domSupported,YS=function(){var r=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],t={pointerdown:1,pointerup:1,pointermove:1,pointerout:1};return{mouse:r,touch:["touchstart","touchend","touchmove"],pointer:xe(r,function(l){var c=l.replace("mouse","pointer");return t.hasOwnProperty(c)?c:l})}}(),zR_mouse=["mousemove","mouseup"],zR_pointer=["pointermove","pointerup"],AH=!1;function HR(r){var n=r.pointerType;return"pen"===n||"touch"===n}function Xb(r){r&&(r.zrByTouch=!0)}function up(r,n){for(var t=n,o=!1;t&&9!==t.nodeType&&!(o=t.domBelongToZr||t!==n&&t===r.painterRoot);)t=t.parentNode;return o}var UR=function r(n,t){this.stopPropagation=zi,this.stopImmediatePropagation=zi,this.preventDefault=zi,this.type=t.type,this.target=this.currentTarget=n.dom,this.pointerType=t.pointerType,this.clientX=t.clientX,this.clientY=t.clientY},us={mousedown:function(r){r=Ys(this.dom,r),this.__mayPointerCapture=[r.zrX,r.zrY],this.trigger("mousedown",r)},mousemove:function(r){r=Ys(this.dom,r);var n=this.__mayPointerCapture;n&&(r.zrX!==n[0]||r.zrY!==n[1])&&this.__togglePointerCapture(!0),this.trigger("mousemove",r)},mouseup:function(r){r=Ys(this.dom,r),this.__togglePointerCapture(!1),this.trigger("mouseup",r)},mouseout:function(r){up(this,(r=Ys(this.dom,r)).toElement||r.relatedTarget)||(this.__pointerCapturing&&(r.zrEventControl="no_globalout"),this.trigger("mouseout",r))},wheel:function(r){AH=!0,r=Ys(this.dom,r),this.trigger("mousewheel",r)},mousewheel:function(r){AH||(r=Ys(this.dom,r),this.trigger("mousewheel",r))},touchstart:function(r){Xb(r=Ys(this.dom,r)),this.__lastTouchMoment=new Date,this.handler.processGesture(r,"start"),us.mousemove.call(this,r),us.mousedown.call(this,r)},touchmove:function(r){Xb(r=Ys(this.dom,r)),this.handler.processGesture(r,"change"),us.mousemove.call(this,r)},touchend:function(r){Xb(r=Ys(this.dom,r)),this.handler.processGesture(r,"end"),us.mouseup.call(this,r),+new Date-+this.__lastTouchMoment<300&&us.click.call(this,r)},pointerdown:function(r){us.mousedown.call(this,r)},pointermove:function(r){HR(r)||us.mousemove.call(this,r)},pointerup:function(r){us.mouseup.call(this,r)},pointerout:function(r){HR(r)||us.mouseout.call(this,r)}};U(["click","dblclick","contextmenu"],function(r){us[r]=function(n){n=Ys(this.dom,n),this.trigger(r,n)}});var hp={pointermove:function(r){HR(r)||hp.mousemove.call(this,r)},pointerup:function(r){hp.mouseup.call(this,r)},mousemove:function(r){this.trigger("mousemove",r)},mouseup:function(r){var n=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",r),n&&(r.zrEventControl="only_globalout",this.trigger("mouseout",r))}};function fp(r,n,t,o){r.mounted[n]=t,r.listenerOpts[n]=o,ko(r.domTarget,n,t,o)}function pp(r){var n=r.mounted;for(var t in n)n.hasOwnProperty(t)&&kc(r.domTarget,t,n[t],r.listenerOpts[t]);r.mounted={}}var EH=function r(n,t){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=n,this.domHandlers=t},jR=function(r){function n(t,o){var l=r.call(this)||this;return l.__pointerCapturing=!1,l.dom=t,l.painterRoot=o,l._localHandlerScope=new EH(t,us),VR&&(l._globalHandlerScope=new EH(document,hp)),function kH(r,n){var t=n.domHandlers;sn.pointerEventsSupported?U(YS.pointer,function(o){fp(n,o,function(l){t[o].call(r,l)})}):(sn.touchEventsSupported&&U(YS.touch,function(o){fp(n,o,function(l){t[o].call(r,l),function qS(r){r.touching=!0,null!=r.touchTimer&&(clearTimeout(r.touchTimer),r.touchTimer=null),r.touchTimer=setTimeout(function(){r.touching=!1,r.touchTimer=null},700)}(n)})}),U(YS.mouse,function(o){fp(n,o,function(l){l=Ao(l),n.touching||t[o].call(r,l)})}))}(l,l._localHandlerScope),l}return qn(n,r),n.prototype.dispose=function(){pp(this._localHandlerScope),VR&&pp(this._globalHandlerScope)},n.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},n.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,VR&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var o=this._globalHandlerScope;t?function Zb(r,n){function t(o){fp(n,o,function l(c){c=Ao(c),up(r,c.target)||(c=function GR(r,n){return Ys(r.dom,new UR(r,n),!0)}(r,c),n.domHandlers[o].call(r,c))},{capture:!0})}sn.pointerEventsSupported?U(zR_pointer,t):sn.touchEventsSupported||U(zR_mouse,t)}(this,o):pp(o)}},n}(ao);const $R=jR;var WR=1;sn.hasGlobalWindow&&(WR=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var Kb=WR,lv="#333",Qb="#ccc",Jb=jg;function Fd(r){return r>5e-5||r<-5e-5}var Nd=[],fh=[],e0=[1,0,0,1,0,0],ZS=Math.abs,t0=function(){function r(){}return r.prototype.getLocalTransform=function(n){return r.getLocalTransform(this,n)},r.prototype.setPosition=function(n){this.x=n[0],this.y=n[1]},r.prototype.setScale=function(n){this.scaleX=n[0],this.scaleY=n[1]},r.prototype.setSkew=function(n){this.skewX=n[0],this.skewY=n[1]},r.prototype.setOrigin=function(n){this.originX=n[0],this.originY=n[1]},r.prototype.needLocalTransform=function(){return Fd(this.rotation)||Fd(this.x)||Fd(this.y)||Fd(this.scaleX-1)||Fd(this.scaleY-1)||Fd(this.skewX)||Fd(this.skewY)},r.prototype.updateTransform=function(){var n=this.parent&&this.parent.transform,t=this.needLocalTransform(),o=this.transform;t||n?(o=o||[1,0,0,1,0,0],t?this.getLocalTransform(o):Jb(o),n&&(t?Xs(o,n,o):we(o,n)),this.transform=o,this._resolveGlobalScaleRatio(o)):o&&Jb(o)},r.prototype._resolveGlobalScaleRatio=function(n){var t=this.globalScaleRatio;if(null!=t&&1!==t){this.getGlobalScale(Nd);var o=Nd[0]<0?-1:1,l=Nd[1]<0?-1:1,c=((Nd[0]-o)*t+o)/Nd[0]||0,u=((Nd[1]-l)*t+l)/Nd[1]||0;n[0]*=c,n[1]*=c,n[2]*=u,n[3]*=u}this.invTransform=this.invTransform||[1,0,0,1,0,0],ah(this.invTransform,n)},r.prototype.getComputedTransform=function(){for(var n=this,t=[];n;)t.push(n),n=n.parent;for(;n=t.pop();)n.updateTransform();return this.transform},r.prototype.setLocalTransform=function(n){if(n){var t=n[0]*n[0]+n[1]*n[1],o=n[2]*n[2]+n[3]*n[3],l=Math.atan2(n[1],n[0]),c=Math.PI/2+l-Math.atan2(n[3],n[2]);o=Math.sqrt(o)*Math.cos(c),t=Math.sqrt(t),this.skewX=c,this.skewY=0,this.rotation=-l,this.x=+n[4],this.y=+n[5],this.scaleX=t,this.scaleY=o,this.originX=0,this.originY=0}},r.prototype.decomposeTransform=function(){if(this.transform){var n=this.parent,t=this.transform;n&&n.transform&&(Xs(fh,n.invTransform,t),t=fh);var o=this.originX,l=this.originY;(o||l)&&(e0[4]=o,e0[5]=l,Xs(fh,t,e0),fh[4]-=o,fh[5]-=l,t=fh),this.setLocalTransform(t)}},r.prototype.getGlobalScale=function(n){var t=this.transform;return n=n||[],t?(n[0]=Math.sqrt(t[0]*t[0]+t[1]*t[1]),n[1]=Math.sqrt(t[2]*t[2]+t[3]*t[3]),t[0]<0&&(n[0]=-n[0]),t[3]<0&&(n[1]=-n[1]),n):(n[0]=1,n[1]=1,n)},r.prototype.transformCoordToLocal=function(n,t){var o=[n,t],l=this.invTransform;return l&&Tr(o,o,l),o},r.prototype.transformCoordToGlobal=function(n,t){var o=[n,t],l=this.transform;return l&&Tr(o,o,l),o},r.prototype.getLineScale=function(){var n=this.transform;return n&&ZS(n[0]-1)>1e-10&&ZS(n[3]-1)>1e-10?Math.sqrt(ZS(n[0]*n[3]-n[2]*n[1])):1},r.prototype.copyTransform=function(n){qR(this,n)},r.getLocalTransform=function(n,t){t=t||[];var o=n.originX||0,l=n.originY||0,c=n.scaleX,u=n.scaleY,h=n.anchorX,p=n.anchorY,m=n.rotation||0,g=n.x,v=n.y,y=n.skewX?Math.tan(n.skewX):0,b=n.skewY?Math.tan(-n.skewY):0;if(o||l||h||p){var x=o+h,C=l+p;t[4]=-x*c-y*C*u,t[5]=-C*u-b*x*c}else t[4]=t[5]=0;return t[0]=c,t[3]=u,t[1]=b*c,t[2]=y*u,m&&Ec(t,t,m),t[4]+=o+g,t[5]+=l+v,t},r.initDefaultProps=function(){var n=r.prototype;n.scaleX=n.scaleY=n.globalScaleRatio=1,n.x=n.y=n.originX=n.originY=n.skewX=n.skewY=n.rotation=n.anchorX=n.anchorY=0}(),r}(),Ma=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function qR(r,n){for(var t=0;t=0?parseFloat(r)/100*n:parseFloat(r):r}function Fc(r,n,t){var o=n.position||"inside",l=null!=n.distance?n.distance:5,c=t.height,u=t.width,h=c/2,p=t.x,m=t.y,g="left",v="top";if(o instanceof Array)p+=Ta(o[0],t.width),m+=Ta(o[1],t.height),g=null,v=null;else switch(o){case"left":p-=l,m+=h,g="right",v="middle";break;case"right":p+=l+u,m+=h,v="middle";break;case"top":p+=u/2,m-=l,g="center",v="bottom";break;case"bottom":p+=u/2,m+=c+l,g="center";break;case"inside":p+=u/2,m+=h,g="center",v="middle";break;case"insideLeft":p+=l,m+=h,v="middle";break;case"insideRight":p+=u-l,m+=h,g="right",v="middle";break;case"insideTop":p+=u/2,m+=l,g="center";break;case"insideBottom":p+=u/2,m+=c-l,g="center",v="bottom";break;case"insideTopLeft":p+=l,m+=l;break;case"insideTopRight":p+=u-l,m+=l,g="right";break;case"insideBottomLeft":p+=l,m+=c-l,v="bottom";break;case"insideBottomRight":p+=u-l,m+=c-l,g="right",v="bottom"}return(r=r||{}).x=p,r.y=m,r.align=g,r.verticalAlign=v,r}var Bd="__zr_normal__",n0=Ma.concat(["ignore"]),QS=Mo(Ma,function(r,n){return r[n]=!0,r},{ignore:!1}),Js={},rZ=new lt(0,0,0,0),JS=function(){function r(n){this.id=pS(),this.animators=[],this.currentStates=[],this.states={},this._init(n)}return r.prototype._init=function(n){this.attr(n)},r.prototype.drift=function(n,t,o){switch(this.draggable){case"horizontal":t=0;break;case"vertical":n=0}var l=this.transform;l||(l=this.transform=[1,0,0,1,0,0]),l[4]+=n,l[5]+=t,this.decomposeTransform(),this.markRedraw()},r.prototype.beforeUpdate=function(){},r.prototype.afterUpdate=function(){},r.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},r.prototype.updateInnerText=function(n){var t=this._textContent;if(t&&(!t.ignore||n)){this.textConfig||(this.textConfig={});var o=this.textConfig,l=o.local,c=t.innerTransformable,u=void 0,h=void 0,p=!1;c.parent=l?this:null;var m=!1;if(c.copyTransform(t),null!=o.position){var g=rZ;g.copy(o.layoutRect?o.layoutRect:this.getBoundingRect()),l||g.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition(Js,o,g):Fc(Js,o,g),c.x=Js.x,c.y=Js.y,u=Js.align,h=Js.verticalAlign;var v=o.origin;if(v&&null!=o.rotation){var y=void 0,b=void 0;"center"===v?(y=.5*g.width,b=.5*g.height):(y=Ta(v[0],g.width),b=Ta(v[1],g.height)),m=!0,c.originX=-c.x+y+(l?0:g.x),c.originY=-c.y+b+(l?0:g.y)}}null!=o.rotation&&(c.rotation=o.rotation);var x=o.offset;x&&(c.x+=x[0],c.y+=x[1],m||(c.originX=-x[0],c.originY=-x[1]));var C=null==o.inside?"string"==typeof o.position&&o.position.indexOf("inside")>=0:o.inside,S=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),M=void 0,T=void 0,A=void 0;C&&this.canBeInsideText()?(T=o.insideStroke,(null==(M=o.insideFill)||"auto"===M)&&(M=this.getInsideTextFill()),(null==T||"auto"===T)&&(T=this.getInsideTextStroke(M),A=!0)):(T=o.outsideStroke,(null==(M=o.outsideFill)||"auto"===M)&&(M=this.getOutsideFill()),(null==T||"auto"===T)&&(T=this.getOutsideStroke(M),A=!0)),((M=M||"#000")!==S.fill||T!==S.stroke||A!==S.autoStroke||u!==S.align||h!==S.verticalAlign)&&(p=!0,S.fill=M,S.stroke=T,S.autoStroke=A,S.align=u,S.verticalAlign=h,t.setDefaultTextStyle(S)),t.__dirty|=1,p&&t.dirtyStyle(!0)}},r.prototype.canBeInsideText=function(){return!0},r.prototype.getInsideTextFill=function(){return"#fff"},r.prototype.getInsideTextStroke=function(n){return"#000"},r.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?Qb:lv},r.prototype.getOutsideStroke=function(n){var t=this.__zr&&this.__zr.getBackgroundColor(),o="string"==typeof t&&yt(t);o||(o=[255,255,255,1]);for(var l=o[3],c=this.__zr.isDarkMode(),u=0;u<3;u++)o[u]=o[u]*l+(c?0:255)*(1-l);return o[3]=1,ae(o,"rgba")},r.prototype.traverse=function(n,t){},r.prototype.attrKV=function(n,t){"textConfig"===n?this.setTextConfig(t):"textContent"===n?this.setTextContent(t):"clipPath"===n?this.setClipPath(t):"extra"===n?(this.extra=this.extra||{},ge(this.extra,t)):this[n]=t},r.prototype.hide=function(){this.ignore=!0,this.markRedraw()},r.prototype.show=function(){this.ignore=!1,this.markRedraw()},r.prototype.attr=function(n,t){if("string"==typeof n)this.attrKV(n,t);else if(ze(n))for(var l=Yt(n),c=0;c0},r.prototype.getState=function(n){return this.states[n]},r.prototype.ensureState=function(n){var t=this.states;return t[n]||(t[n]={}),t[n]},r.prototype.clearStates=function(n){this.useState(Bd,!1,n)},r.prototype.useState=function(n,t,o,l){var c=n===Bd;if(this.hasState()||!c){var h=this.currentStates,p=this.stateTransition;if(!(Mt(h,n)>=0)||!t&&1!==h.length){var m;if(this.stateProxy&&!c&&(m=this.stateProxy(n)),m||(m=this.states&&this.states[n]),!m&&!c)return void mS("State "+n+" not exists.");c||this.saveCurrentToNormalState(m);var g=!!(m&&m.hoverLayer||l);g&&this._toggleHoverLayerFlag(!0),this._applyStateObj(n,m,this._normalState,t,!o&&!this.__inHover&&p&&p.duration>0,p);var v=this._textContent,y=this._textGuide;return v&&v.useState(n,t,o,g),y&&y.useState(n,t,o,g),c?(this.currentStates=[],this._normalState={}):t?this.currentStates.push(n):this.currentStates=[n],this._updateAnimationTargets(),this.markRedraw(),!g&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2),m}}},r.prototype.useStates=function(n,t,o){if(n.length){var l=[],c=this.currentStates,u=n.length,h=u===c.length;if(h)for(var p=0;p0,x);var C=this._textContent,S=this._textGuide;C&&C.useStates(n,t,y),S&&S.useStates(n,t,y),this._updateAnimationTargets(),this.currentStates=n.slice(),this.markRedraw(),!y&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=-2)}else this.clearStates()},r.prototype._updateAnimationTargets=function(){for(var n=0;n=0){var o=this.currentStates.slice();o.splice(t,1),this.useStates(o)}},r.prototype.replaceState=function(n,t,o){var l=this.currentStates.slice(),c=Mt(l,n),u=Mt(l,t)>=0;c>=0?u?l.splice(c,1):l[c]=t:o&&!u&&l.push(t),this.useStates(l)},r.prototype.toggleState=function(n,t){t?this.useState(n,!0):this.removeState(n)},r.prototype._mergeStates=function(n){for(var o,t={},l=0;l=0&&c.splice(u,1)}),this.animators.push(n),o&&o.animation.addAnimator(n),o&&o.wakeUp()},r.prototype.updateDuringAnimation=function(n){this.markRedraw()},r.prototype.stopAnimation=function(n,t){for(var o=this.animators,l=o.length,c=[],u=0;u0&&t.during&&c[0].during(function(x,C){t.during(C)});for(var y=0;y0||l.force&&!u.length){var L,H=void 0,G=void 0,j=void 0;if(h)for(G={},y&&(H={}),E=0;E=0&&(l.splice(c,0,t),this._doAdd(t))}return this},n.prototype.replace=function(t,o){var l=Mt(this._children,t);return l>=0&&this.replaceAt(o,l),this},n.prototype.replaceAt=function(t,o){var l=this._children,c=l[o];if(t&&t!==this&&t.parent!==this&&t!==c){l[o]=t,c.parent=null;var u=this.__zr;u&&c.removeSelfFromZr(u),this._doAdd(t)}return this},n.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var o=this.__zr;o&&o!==t.__zr&&t.addSelfToZr(o),o&&o.refresh()},n.prototype.remove=function(t){var o=this.__zr,l=this._children,c=Mt(l,t);return c<0||(l.splice(c,1),t.parent=null,o&&t.removeSelfFromZr(o),o&&o.refresh()),this},n.prototype.removeAll=function(){for(var t=this._children,o=this.__zr,l=0;l0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},r.prototype.setSleepAfterStill=function(n){this._sleepAfterStill=n},r.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},r.prototype.refreshHover=function(){this._needsRefreshHover=!0},r.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},r.prototype.resize=function(n){this.painter.resize((n=n||{}).width,n.height),this.handler.resize()},r.prototype.clearAnimation=function(){this.animation.clear()},r.prototype.getWidth=function(){return this.painter.getWidth()},r.prototype.getHeight=function(){return this.painter.getHeight()},r.prototype.setCursorStyle=function(n){this.handler.setCursorStyle(n)},r.prototype.findHover=function(n,t){return this.handler.findHover(n,t)},r.prototype.on=function(n,t,o){return this.handler.on(n,t,o),this},r.prototype.off=function(n,t){this.handler.off(n,t)},r.prototype.trigger=function(n,t){this.handler.trigger(n,t)},r.prototype.clear=function(){for(var n=this.storage.getRoots(),t=0;t0){if(r<=l)return u;if(r>=c)return h}else{if(r>=l)return u;if(r<=c)return h}else{if(r===l)return u;if(r===c)return h}return(r-l)/p*m+u}function Ie(r,n){switch(r){case"center":case"middle":r="50%";break;case"left":case"top":r="0%";break;case"right":case"bottom":r="100%"}return Le(r)?function cZ(r){return r.replace(/^\s+|\s+$/g,"")}(r).match(/%$/)?parseFloat(r)/100*n:parseFloat(r):null==r?NaN:+r}function ai(r,n,t){return null==n&&(n=10),n=Math.min(Math.max(0,n),20),r=(+r).toFixed(n),t?r:+r}function fs(r){return r.sort(function(n,t){return n-t}),r}function ps(r){if(r=+r,isNaN(r))return 0;if(r>1e-14)for(var n=1,t=0;t<15;t++,n*=10)if(Math.round(r*n)/n===r)return t;return JR(r)}function JR(r){var n=r.toString().toLowerCase(),t=n.indexOf("e"),o=t>0?+n.slice(t+1):0,l=t>0?t:n.length,c=n.indexOf(".");return Math.max(0,(c<0?0:l-1-c)-o)}function nD(r,n){var t=Math.log,o=Math.LN10,l=Math.floor(t(r[1]-r[0])/o),c=Math.round(t(Math.abs(n[1]-n[0]))/o),u=Math.min(Math.max(-l+c,0),20);return isFinite(u)?u:20}function FH(r,n,t){return r[n]&&e2(r,t)[n]||0}function e2(r,n){var t=Mo(r,function(b,x){return b+(isNaN(x)?0:x)},0);if(0===t)return[];for(var o=Math.pow(10,n),l=xe(r,function(b){return(isNaN(b)?0:b)/t*o*100}),c=100*o,u=xe(l,function(b){return Math.floor(b)}),h=Mo(u,function(b,x){return b+x},0),p=xe(l,function(b,x){return b-u[x]});hm&&(m=p[v],g=v);++u[g],p[g]=0,++h}return xe(u,function(b){return b/o})}function NH(r,n){var t=Math.max(ps(r),ps(n)),o=r+n;return t>20?o:ai(o,t)}var iD=9007199254740991;function uv(r){var n=2*Math.PI;return(r%n+n)%n}function Vd(r){return r>-1e-4&&r<1e-4}var a0=/^(?:(\d{4})(?:[-\/](\d{1,2})(?:[-\/](\d{1,2})(?:[T ](\d{1,2})(?::(\d{1,2})(?::(\d{1,2})(?:[.,](\d+))?)?)?(Z|[\+\-]\d\d:?\d\d)?)?)?)?)?$/;function yi(r){if(r instanceof Date)return r;if(Le(r)){var n=a0.exec(r);if(!n)return new Date(NaN);if(n[8]){var t=+n[4]||0;return"Z"!==n[8].toUpperCase()&&(t-=+n[8].slice(0,3)),new Date(Date.UTC(+n[1],+(n[2]||1)-1,+n[3]||1,t,+(n[5]||0),+n[6]||0,n[7]?+n[7].substring(0,3):0))}return new Date(+n[1],+(n[2]||1)-1,+n[3]||1,+n[4]||0,+(n[5]||0),+n[6]||0,n[7]?+n[7].substring(0,3):0)}return null==r?new Date(NaN):new Date(Math.round(r))}function rD(r){return Math.pow(10,co(r))}function co(r){if(0===r)return 0;var n=Math.floor(Math.log(r)/Math.LN10);return r/Math.pow(10,n)>=10&&n++,n}function aD(r,n){var t=co(r),o=Math.pow(10,t),l=r/o;return r=(n?l<1.5?1:l<2.5?2:l<4?3:l<7?5:10:l<1?1:l<2?2:l<3?3:l<5?5:10)*o,t>=-20?+r.toFixed(t<0?-t:0):r}function hv(r,n){var t=(r.length-1)*n+1,o=Math.floor(t),l=+r[o-1],c=t-o;return c?l+c*(r[o]-l):l}function gh(r){r.sort(function(p,m){return h(p,m,0)?-1:1});for(var n=-1/0,t=1,o=0;o=0||c&&Mt(c,p)<0)){var m=o.getShallow(p,n);null!=m&&(u[r[h][0]]=m)}}return u}}var qH=xh([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),v2=function(){function r(){}return r.prototype.getAreaStyle=function(n,t){return qH(this,n,t)},r}(),cD=new lr(50);function _2(r){if("string"==typeof r){var n=cD.get(r);return n&&n.image}return r}function dD(r,n,t,o,l){if(r){if("string"==typeof r){if(n&&n.__zrImageSrc===r||!t)return n;var c=cD.get(r),u={hostEl:t,cb:o,cbPayload:l};return c?!xp(n=c.image)&&c.pending.push(u):((n=$s.loadImage(r,y2,y2)).__zrImageSrc=r,cD.put(r,n.__cachedImgObj={image:n,pending:[u]})),n}return r}return n}function y2(){var r=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var n=0;n=u;p++)h-=u;var m=qr(t,n);return m>h&&(t="",m=0),h=r-m,l.ellipsis=t,l.ellipsisWidth=m,l.contentWidth=h,l.containerWidth=r,l}function w2(r,n){var t=n.containerWidth,o=n.font,l=n.contentWidth;if(!t)return"";var c=qr(r,o);if(c<=t)return r;for(var u=0;;u++){if(c<=l||u>=n.maxIterations){r+=n.ellipsis;break}var h=0===u?XH(r,l,n.ascCharWidth,n.cnCharWidth):c>0?Math.floor(r.length*l/c):0;c=qr(r=r.substr(0,h),o)}return""===r&&(r=n.placeholder),r}function XH(r,n,t,o){for(var l=0,c=0,u=r.length;c0&&x+o.accumWidth>o.width&&(g=n.split("\n"),m=!0),o.accumWidth=x}else{var C=x2(n,p,o.width,o.breakAll,o.accumWidth);o.accumWidth=C.accumWidth+b,v=C.linesWidths,g=C.lines}}else g=n.split("\n");for(var S=0;S=33&&n<=383}(r)||!!mD[r]}function x2(r,n,t,o,l){for(var c=[],u=[],h="",p="",m=0,g=0,v=0;vt:l+g+b>t)?g?(h||p)&&(x?(h||(h=p,p="",g=m=0),c.push(h),u.push(g-m),p+=y,h="",g=m+=b):(p&&(h+=p,p="",m=0),c.push(h),u.push(g),h=y,g=b)):x?(c.push(p),u.push(m),p=y,m=b):(c.push(y),u.push(b)):(g+=b,x?(p+=y,m+=b):(p&&(h+=p,p="",m=0),h+=y))}else p&&(h+=p,g+=m),c.push(h),u.push(g),h="",p="",m=0,g=0}return!c.length&&!h&&(h=r,p="",m=0),p&&(h+=p),h&&(c.push(h),u.push(g)),1===c.length&&(g+=l),{accumWidth:g,lines:c,linesWidths:u}}var gD="__zr_style_"+Math.round(10*Math.random()),Ch={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},h0={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};Ch[gD]=!0;var C2=["z","z2","invisible"],S2=["invisible"],vD=function(r){function n(t){return r.call(this,t)||this}return qn(n,r),n.prototype._init=function(t){for(var o=Yt(t),l=0;l1e-4)return h[0]=r-t,h[1]=n-o,p[0]=r+t,void(p[1]=n+o);if(m0[0]=p0(l)*t+r,m0[1]=Nc(l)*o+n,_D[0]=p0(c)*t+r,_D[1]=Nc(c)*o+n,m(h,m0,_D),g(p,m0,_D),(l%=zd)<0&&(l+=zd),(c%=zd)<0&&(c+=zd),l>c&&!u?c+=zd:ll&&(Sh[0]=p0(b)*t+r,Sh[1]=Nc(b)*o+n,m(h,Sh,h),g(p,Sh,p))}var Ln={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},Hd=[],Bc=[],gs=[],Bl=[],uo=[],Vl=[],_0=Math.min,CD=Math.max,Dh=Math.cos,Mh=Math.sin,zl=Math.abs,y0=Math.PI,tl=2*y0,_v=typeof Float32Array<"u",nl=[];function SD(r){return Math.round(r/y0*1e8)/1e8%2*y0}function M2(r,n){var t=SD(r[0]);t<0&&(t+=tl);var l=r[1];l+=t-r[0],!n&&l-t>=tl?l=t+tl:n&&t-l>=tl?l=t-tl:!n&&t>l?l=t+(tl-SD(t-l)):n&&t0&&(this._ux=zl(o/Kb/n)||0,this._uy=zl(o/Kb/t)||0)},r.prototype.setDPR=function(n){this.dpr=n},r.prototype.setContext=function(n){this._ctx=n},r.prototype.getContext=function(){return this._ctx},r.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},r.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},r.prototype.moveTo=function(n,t){return this._drawPendingPt(),this.addData(Ln.M,n,t),this._ctx&&this._ctx.moveTo(n,t),this._x0=n,this._y0=t,this._xi=n,this._yi=t,this},r.prototype.lineTo=function(n,t){var o=zl(n-this._xi),l=zl(t-this._yi),c=o>this._ux||l>this._uy;if(this.addData(Ln.L,n,t),this._ctx&&c&&this._ctx.lineTo(n,t),c)this._xi=n,this._yi=t,this._pendingPtDist=0;else{var u=o*o+l*l;u>this._pendingPtDist&&(this._pendingPtX=n,this._pendingPtY=t,this._pendingPtDist=u)}return this},r.prototype.bezierCurveTo=function(n,t,o,l,c,u){return this._drawPendingPt(),this.addData(Ln.C,n,t,o,l,c,u),this._ctx&&this._ctx.bezierCurveTo(n,t,o,l,c,u),this._xi=c,this._yi=u,this},r.prototype.quadraticCurveTo=function(n,t,o,l){return this._drawPendingPt(),this.addData(Ln.Q,n,t,o,l),this._ctx&&this._ctx.quadraticCurveTo(n,t,o,l),this._xi=o,this._yi=l,this},r.prototype.arc=function(n,t,o,l,c,u){return this._drawPendingPt(),nl[0]=l,nl[1]=c,M2(nl,u),this.addData(Ln.A,n,t,o,o,l=nl[0],(c=nl[1])-l,0,u?0:1),this._ctx&&this._ctx.arc(n,t,o,l,c,u),this._xi=Dh(c)*o+n,this._yi=Mh(c)*o+t,this},r.prototype.arcTo=function(n,t,o,l,c){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(n,t,o,l,c),this},r.prototype.rect=function(n,t,o,l){return this._drawPendingPt(),this._ctx&&this._ctx.rect(n,t,o,l),this.addData(Ln.R,n,t,o,l),this},r.prototype.closePath=function(){this._drawPendingPt(),this.addData(Ln.Z);var n=this._ctx,t=this._x0,o=this._y0;return n&&n.closePath(),this._xi=t,this._yi=o,this},r.prototype.fill=function(n){n&&n.fill(),this.toStatic()},r.prototype.stroke=function(n){n&&n.stroke(),this.toStatic()},r.prototype.len=function(){return this._len},r.prototype.setData=function(n){var t=n.length;(!this.data||this.data.length!==t)&&_v&&(this.data=new Float32Array(t));for(var o=0;og.length&&(this._expandData(),g=this.data);for(var v=0;v0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},r.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var n=[],t=0;t11&&(this.data=new Float32Array(n)))}},r.prototype.getBoundingRect=function(){gs[0]=gs[1]=uo[0]=uo[1]=Number.MAX_VALUE,Bl[0]=Bl[1]=Vl[0]=Vl[1]=-Number.MAX_VALUE;var u,n=this.data,t=0,o=0,l=0,c=0;for(u=0;uo||zl(A)>l||y===t-1)&&(C=Math.sqrt(T*T+A*A),c=S,u=M);break;case Ln.C:var E=n[y++],L=n[y++],M=(S=n[y++],n[y++]),R=n[y++],B=n[y++];C=tZ(c,u,E,L,S,M,R,B,10),c=R,u=B;break;case Ln.Q:C=SR(c,u,E=n[y++],L=n[y++],S=n[y++],M=n[y++],10),c=S,u=M;break;case Ln.A:var H=n[y++],G=n[y++],j=n[y++],$=n[y++],X=n[y++],K=n[y++],ee=K+X;y+=1,y++,x&&(h=Dh(X)*j+H,p=Mh(X)*$+G),C=CD(j,$)*_0(tl,Math.abs(K)),c=Dh(ee)*j+H,u=Mh(ee)*$+G;break;case Ln.R:h=c=n[y++],p=u=n[y++],C=2*n[y++]+2*n[y++];break;case Ln.Z:var T=h-c;A=p-u,C=Math.sqrt(T*T+A*A),c=h,u=p}C>=0&&(m[v++]=C,g+=C)}return this._pathLen=g,g},r.prototype.rebuildPath=function(n,t){var h,p,m,g,v,y,x,T,E,L,o=this.data,l=this._ux,c=this._uy,u=this._len,b=t<1,S=0,M=0,A=0;if(!b||(this._pathSegLen||this._calculateLength(),x=this._pathSegLen,T=t*this._pathLen))e:for(var R=0;R0&&(n.lineTo(E,L),A=0),B){case Ln.M:h=m=o[R++],p=g=o[R++],n.moveTo(m,g);break;case Ln.L:v=o[R++],y=o[R++];var G=zl(v-m),j=zl(y-g);if(G>l||j>c){if(b){if(S+($=x[M++])>T){n.lineTo(m*(1-(X=(T-S)/$))+v*X,g*(1-X)+y*X);break e}S+=$}n.lineTo(v,y),m=v,g=y,A=0}else{var K=G*G+j*j;K>A&&(E=v,L=y,A=K)}break;case Ln.C:var ee=o[R++],ne=o[R++],ie=o[R++],de=o[R++],ce=o[R++],ve=o[R++];if(b){if(S+($=x[M++])>T){dh(m,ee,ie,ce,X=(T-S)/$,Hd),dh(g,ne,de,ve,X,Bc),n.bezierCurveTo(Hd[1],Bc[1],Hd[2],Bc[2],Hd[3],Bc[3]);break e}S+=$}n.bezierCurveTo(ee,ne,ie,de,ce,ve),m=ce,g=ve;break;case Ln.Q:if(ee=o[R++],ne=o[R++],ie=o[R++],de=o[R++],b){if(S+($=x[M++])>T){Qg(m,ee,ie,X=(T-S)/$,Hd),Qg(g,ne,de,X,Bc),n.quadraticCurveTo(Hd[1],Bc[1],Hd[2],Bc[2]);break e}S+=$}n.quadraticCurveTo(ee,ne,ie,de),m=ie,g=de;break;case Ln.A:var De=o[R++],Ae=o[R++],Ge=o[R++],tt=o[R++],nt=o[R++],Lt=o[R++],fn=o[R++],Ht=!o[R++],ut=Ge>tt?Ge:tt,$t=zl(Ge-tt)>.001,Ft=nt+Lt,Ze=!1;if(b&&(S+($=x[M++])>T&&(Ft=nt+Lt*(T-S)/$,Ze=!0),S+=$),$t&&n.ellipse?n.ellipse(De,Ae,Ge,tt,fn,nt,Ft,Ht):n.arc(De,Ae,ut,nt,Ft,Ht),Ze)break e;H&&(h=Dh(nt)*Ge+De,p=Mh(nt)*tt+Ae),m=Dh(Ft)*Ge+De,g=Mh(Ft)*tt+Ae;break;case Ln.R:h=m=o[R],p=g=o[R+1],v=o[R++],y=o[R++];var At=o[R++],Ei=o[R++];if(b){if(S+($=x[M++])>T){var pn=T-S;n.moveTo(v,y),n.lineTo(v+_0(pn,At),y),(pn-=At)>0&&n.lineTo(v+At,y+_0(pn,Ei)),(pn-=Ei)>0&&n.lineTo(v+CD(At-pn,0),y+Ei),(pn-=At)>0&&n.lineTo(v,y+CD(Ei-pn,0));break e}S+=$}n.rect(v,y,At,Ei);break;case Ln.Z:if(b){var $;if(S+($=x[M++])>T){var X;n.lineTo(m*(1-(X=(T-S)/$))+h*X,g*(1-X)+p*X);break e}S+=$}n.closePath(),m=h,g=p}}},r.prototype.clone=function(){var n=new r,t=this.data;return n.data=t.slice?t.slice():Array.prototype.slice.call(t),n._len=this._len,n},r.CMD=Ln,r.initDefaultProps=function(){var n=r.prototype;n._saveData=!0,n._ux=0,n._uy=0,n._pendingPtDist=0,n._version=0}(),r}();const Hl=mZ;function Gl(r,n,t,o,l,c,u){if(0===l)return!1;var p,h=l;if(u>n+h&&u>o+h||ur+h&&c>t+h||cn+v&&g>o+v&&g>c+v&&g>h+v||gr+v&&m>t+v&&m>l+v&&m>u+v||mn+m&&p>o+m&&p>c+m||pr+m&&h>t+m&&h>l+m||ht||g+ml&&(l+=Dp);var y=Math.atan2(p,h);return y<0&&(y+=Dp),y>=o&&y<=l||y+Dp>=o&&y+Dp<=l}function jl(r,n,t,o,l,c){if(c>n&&c>o||cl?h:0}var ho=Hl.CMD,Th=2*Math.PI,$a=[-1,-1,-1],vs=[-1,-1];function Oo(){var r=vs[0];vs[0]=vs[1],vs[1]=r}function $l(r,n,t,o,l,c,u,h,p,m){if(m>n&&m>o&&m>c&&m>h||m1&&Oo(),b=Yr(n,o,c,h,vs[0]),y>1&&(x=Yr(n,o,c,h,vs[1]))),v+=2===y?Sn&&h>o&&h>c||h=0&&m<=1&&(l[p++]=m);else{var g=u*u-4*c*h;if(ch(g))(m=-u/(2*c))>=0&&m<=1&&(l[p++]=m);else if(g>0){var m,v=lh(g),y=(-u-v)/(2*c);(m=(-u+v)/(2*c))>=0&&m<=1&&(l[p++]=m),y>=0&&y<=1&&(l[p++]=y)}}return p}(n,o,c,h,$a);if(0===p)return 0;var m=NS(n,o,c);if(m>=0&&m<=1){for(var g=0,v=Pi(n,o,c,m),y=0;yt||h<-t)return 0;var p=Math.sqrt(t*t-h*h);$a[0]=-p,$a[1]=p;var m=Math.abs(o-l);if(m<1e-4)return 0;if(m>=Th-1e-4){o=0,l=Th;var g=c?1:-1;return u>=$a[0]+r&&u<=$a[1]+r?g:0}if(o>l){var v=o;o=l,l=v}o<0&&(o+=Th,l+=Th);for(var y=0,b=0;b<2;b++){var x=$a[b];if(x+r>u){var C=Math.atan2(h,x);g=c?1:-1,C<0&&(C=Th+C),(C>=o&&C<=l||C+Th>=o&&C+Th<=l)&&(C>Math.PI/2&&C<1.5*Math.PI&&(g=-g),y+=g)}}return y}function A2(r,n,t,o,l){for(var y,b,c=r.data,u=r.len(),h=0,p=0,m=0,g=0,v=0,x=0;x1&&(t||(h+=jl(p,m,g,v,o,l))),S&&(g=p=c[x],v=m=c[x+1]),C){case ho.M:p=g=c[x++],m=v=c[x++];break;case ho.L:if(t){if(Gl(p,m,c[x],c[x+1],n,o,l))return!0}else h+=jl(p,m,c[x],c[x+1],o,l)||0;p=c[x++],m=c[x++];break;case ho.C:if(t){if(JH(p,m,c[x++],c[x++],c[x++],c[x++],c[x],c[x+1],n,o,l))return!0}else h+=$l(p,m,c[x++],c[x++],c[x++],c[x++],c[x],c[x+1],o,l)||0;p=c[x++],m=c[x++];break;case ho.Q:if(t){if(DD(p,m,c[x++],c[x++],c[x],c[x+1],n,o,l))return!0}else h+=n8(p,m,c[x++],c[x++],c[x],c[x+1],o,l)||0;p=c[x++],m=c[x++];break;case ho.A:var M=c[x++],T=c[x++],A=c[x++],E=c[x++],L=c[x++],R=c[x++];x+=1;var B=!!(1-c[x++]);y=Math.cos(L)*A+M,b=Math.sin(L)*E+T,S?(g=y,v=b):h+=jl(p,m,y,b,o,l);var H=(o-M)*E/A+M;if(t){if(T2(M,T,E,L,L+R,B,n,H,l))return!0}else h+=i8(M,T,E,L,L+R,B,H,l);p=Math.cos(L+R)*A+M,m=Math.sin(L+R)*E+T;break;case ho.R:if(g=p=c[x++],v=m=c[x++],y=g+c[x++],b=v+c[x++],t){if(Gl(g,v,y,v,n,o,l)||Gl(y,v,y,b,n,o,l)||Gl(y,b,g,b,n,o,l)||Gl(g,b,g,v,n,o,l))return!0}else h+=jl(y,v,y,b,o,l),h+=jl(g,b,g,v,o,l);break;case ho.Z:if(t){if(Gl(p,m,g,v,n,o,l))return!0}else h+=jl(p,m,g,v,o,l);p=g,m=v}}return!t&&!function t8(r,n){return Math.abs(r-n)<1e-4}(m,v)&&(h+=jl(p,m,g,v,o,l)||0),0!==h}var b0=Ye({fill:"#000",stroke:null,strokePercent:1,fillOpacity:1,strokeOpacity:1,lineDashOffset:0,lineWidth:1,lineCap:"butt",miterLimit:10,strokeNoScale:!1,strokeFirst:!1},Ch),k2={style:Ye({fill:!0,stroke:!0,strokePercent:!0,fillOpacity:!0,strokeOpacity:!0,lineDashOffset:!0,lineWidth:!0,miterLimit:!0},h0.style)},MD=Ma.concat(["invisible","culling","z","z2","zlevel","parent"]),o8=function(r){function n(t){return r.call(this,t)||this}return qn(n,r),n.prototype.update=function(){var t=this;r.prototype.update.call(this);var o=this.style;if(o.decal){var l=this._decalEl=this._decalEl||new n;l.buildPath===n.prototype.buildPath&&(l.buildPath=function(p){t.buildPath(p,t.shape)}),l.silent=!0;var c=l.style;for(var u in o)c[u]!==o[u]&&(c[u]=o[u]);c.fill=o.fill?o.decal:null,c.decal=null,c.shadowColor=null,o.strokeFirst&&(c.stroke=null);for(var h=0;h.5?lv:o>.2?"#eee":Qb}if(t)return Qb}return lv},n.prototype.getInsideTextStroke=function(t){var o=this.style.fill;if(Le(o)){var l=this.__zr;if(!(!l||!l.isDarkMode())==se(t,0)<.4)return o}},n.prototype.buildPath=function(t,o,l){},n.prototype.pathUpdated=function(){this.__dirty&=-5},n.prototype.getUpdatedPathProxy=function(t){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,t),this.path},n.prototype.createPathProxy=function(){this.path=new Hl(!1)},n.prototype.hasStroke=function(){var t=this.style,o=t.stroke;return!(null==o||"none"===o||!(t.lineWidth>0))},n.prototype.hasFill=function(){var o=this.style.fill;return null!=o&&"none"!==o},n.prototype.getBoundingRect=function(){var t=this._rect,o=this.style,l=!t;if(l){var c=!1;this.path||(c=!0,this.createPathProxy());var u=this.path;(c||4&this.__dirty)&&(u.beginPath(),this.buildPath(u,this.shape,!1),this.pathUpdated()),t=u.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var h=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||l){h.copy(t);var p=o.strokeNoScale?this.getLineScale():1,m=o.lineWidth;this.hasFill()||(m=Math.max(m,this.strokeContainThreshold??4)),p>1e-10&&(h.width+=m/p,h.height+=m/p,h.x-=m/p/2,h.y-=m/p/2)}return h}return t},n.prototype.contain=function(t,o){var l=this.transformCoordToLocal(t,o),c=this.getBoundingRect(),u=this.style;if(c.contain(t=l[0],o=l[1])){var h=this.path;if(this.hasStroke()){var p=u.lineWidth,m=u.strokeNoScale?this.getLineScale():1;if(m>1e-10&&(this.hasFill()||(p=Math.max(p,this.strokeContainThreshold)),function a8(r,n,t,o){return A2(r,n,!0,t,o)}(h,p/m,t,o)))return!0}if(this.hasFill())return function r8(r,n,t){return A2(r,0,!1,n,t)}(h,t,o)}return!1},n.prototype.dirtyShape=function(){this.__dirty|=4,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},n.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},n.prototype.animateShape=function(t){return this.animate("shape",t)},n.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},n.prototype.attrKV=function(t,o){"shape"===t?this.setShape(o):r.prototype.attrKV.call(this,t,o)},n.prototype.setShape=function(t,o){var l=this.shape;return l||(l=this.shape={}),"string"==typeof t?l[t]=o:ge(l,t),this.dirtyShape(),this},n.prototype.shapeChanged=function(){return!!(4&this.__dirty)},n.prototype.createStyle=function(t){return nh(b0,t)},n.prototype._innerSaveToNormal=function(t){r.prototype._innerSaveToNormal.call(this,t);var o=this._normalState;t.shape&&!o.shape&&(o.shape=ge({},this.shape))},n.prototype._applyStateObj=function(t,o,l,c,u,h){r.prototype._applyStateObj.call(this,t,o,l,c,u,h);var m,p=!(o&&c);if(o&&o.shape?u?c?m=o.shape:(m=ge({},l.shape),ge(m,o.shape)):(m=ge({},c?this.shape:l.shape),ge(m,o.shape)):p&&(m=l.shape),m)if(u){this.shape=ge({},this.shape);for(var g={},v=Yt(m),y=0;y0},n.prototype.hasFill=function(){var o=this.style.fill;return null!=o&&"none"!==o},n.prototype.createStyle=function(t){return nh(s8,t)},n.prototype.setBoundingRect=function(t){this._rect=t},n.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var o=t.text;null!=o?o+="":o="";var l=It(o,t.font,t.textAlign,t.textBaseline);if(l.x+=t.x||0,l.y+=t.y||0,this.hasStroke()){var c=t.lineWidth;l.x-=c/2,l.y-=c/2,l.width+=c,l.height+=c}this._rect=l}return this._rect},n.initDefaultProps=void(n.prototype.dirtyRectTolerance=10),n}(ms);bv.prototype.type="tspan";const Lo=bv;var wv=Ye({x:0,y:0},Ch),E2={style:Ye({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},h0.style)},TD=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return qn(n,r),n.prototype.createStyle=function(t){return nh(wv,t)},n.prototype._getSize=function(t){var o=this.style,l=o[t];if(null!=l)return l;var c=function I2(r){return!!(r&&"string"!=typeof r&&r.width&&r.height)}(o.image)?o.image:this.__image;if(!c)return 0;var u="width"===t?"height":"width",h=o[u];return null==h?c[t]:c[t]/c[u]*h},n.prototype.getWidth=function(){return this._getSize("width")},n.prototype.getHeight=function(){return this._getSize("height")},n.prototype.getAnimationStyleProps=function(){return E2},n.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new lt(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},n}(ms);TD.prototype.type="image";const la=TD;var xv=Math.round;function w0(r,n,t){if(n){var o=n.x1,l=n.x2,c=n.y1,u=n.y2;r.x1=o,r.x2=l,r.y1=c,r.y2=u;var h=t&&t.lineWidth;return h&&(xv(2*o)===xv(2*l)&&(r.x1=r.x2=Mp(o,h,!0)),xv(2*c)===xv(2*u)&&(r.y1=r.y2=Mp(c,h,!0))),r}}function x0(r,n,t){if(n){var o=n.x,l=n.y,c=n.width,u=n.height;r.x=o,r.y=l,r.width=c,r.height=u;var h=t&&t.lineWidth;return h&&(r.x=Mp(o,h,!0),r.y=Mp(l,h,!0),r.width=Math.max(Mp(o+c,h,!1)-r.x,0===c?0:1),r.height=Math.max(Mp(l+u,h,!1)-r.y,0===u?0:1)),r}}function Mp(r,n,t){if(!n)return r;var o=xv(2*r);return(o+xv(n))%2==0?o/2:(o+(t?1:-1))/2}var vZ=function r(){this.x=0,this.y=0,this.width=0,this.height=0},P2={},R2=function(r){function n(t){return r.call(this,t)||this}return qn(n,r),n.prototype.getDefaultShape=function(){return new vZ},n.prototype.buildPath=function(t,o){var l,c,u,h;if(this.subPixelOptimize){var p=x0(P2,o,this.style);l=p.x,c=p.y,u=p.width,h=p.height,p.r=o.r,o=p}else l=o.x,c=o.y,u=o.width,h=o.height;o.r?function gZ(r,n){var h,p,m,g,v,t=n.x,o=n.y,l=n.width,c=n.height,u=n.r;l<0&&(t+=l,l=-l),c<0&&(o+=c,c=-c),"number"==typeof u?h=p=m=g=u:u instanceof Array?1===u.length?h=p=m=g=u[0]:2===u.length?(h=m=u[0],p=g=u[1]):3===u.length?(h=u[0],p=g=u[1],m=u[2]):(h=u[0],p=u[1],m=u[2],g=u[3]):h=p=m=g=0,h+p>l&&(h*=l/(v=h+p),p*=l/v),m+g>l&&(m*=l/(v=m+g),g*=l/v),p+m>c&&(p*=c/(v=p+m),m*=c/v),h+g>c&&(h*=c/(v=h+g),g*=c/v),r.moveTo(t+h,o),r.lineTo(t+l-p,o),0!==p&&r.arc(t+l-p,o+p,p,-Math.PI/2,0),r.lineTo(t+l,o+c-m),0!==m&&r.arc(t+l-m,o+c-m,m,0,Math.PI/2),r.lineTo(t+g,o+c),0!==g&&r.arc(t+g,o+c-g,g,Math.PI/2,Math.PI),r.lineTo(t,o+h),0!==h&&r.arc(t+h,o+h,h,Math.PI,1.5*Math.PI)}(t,o):t.rect(l,c,u,h)},n.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},n}(Vt);R2.prototype.type="rect";const an=R2;var O2={fill:"#000"},F2={style:Ye({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},h0.style)},Cv=function(r){function n(t){var o=r.call(this)||this;return o.type="text",o._children=[],o._defaultStyle=O2,o.attr(t),o}return qn(n,r),n.prototype.childrenRef=function(){return this._children},n.prototype.update=function(){r.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var t=0;tb&&m){var x=Math.floor(b/h);v=v.slice(0,x)}if(r&&c&&null!=g)for(var C=Cp(g,l,n.ellipsis,{minChar:n.truncateMinChar,placeholder:n.placeholder}),S=0;S0,X=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),K=u.calculatedLineHeight,ee=0;eeh&&u0(t,r.substring(h,m),n,u),u0(t,p[2],n,u,p[1]),h=gv.lastIndex}hl){L>0?(T.tokens=T.tokens.slice(0,L),S(T,E,A),t.lines=t.lines.slice(0,M+1)):t.lines=t.lines.slice(0,M);break e}var X=B.width,K=null==X||"auto"===X;if("string"==typeof X&&"%"===X.charAt(X.length-1))R.percentWidth=X,g.push(R),R.contentWidth=qr(R.text,j);else{if(K){var ee=B.backgroundColor,ne=ee&&ee.image;ne&&xp(ne=_2(ne))&&(R.width=Math.max(R.width,ne.width*$/ne.height))}var ie=x&&null!=o?o-E:null;null!=ie&&ie=0&&"right"===(ee=R[K]).align;)this._placeToken(ee,t,H,M,X,"right",A),G-=ee.width,X-=ee.width,K--;for($+=(c-($-S)-(T-X)-G)/2;j<=K;)this._placeToken(ee=R[j],t,H,M,$+ee.width/2,"center",A),$+=ee.width,j++;M+=H}},n.prototype._placeToken=function(t,o,l,c,u,h,p){var m=o.rich[t.styleName]||{};m.text=t.text;var g=t.verticalAlign,v=c+l/2;"top"===g?v=c+t.height/2:"bottom"===g&&(v=c+l-t.height/2),!t.isLineHolder&&C0(m)&&this._renderBackground(m,o,"right"===h?u-t.width:"center"===h?u-t.width/2:u,v-t.height/2,t.width,t.height);var b=!!m.backgroundColor,x=t.textPadding;x&&(u=G2(u,h,x),v-=t.height/2-x[0]-t.innerHeight/2);var C=this._getOrCreateChild(Lo),S=C.createStyle();C.useStyle(S);var M=this._defaultStyle,T=!1,A=0,E=H2("fill"in m?m.fill:"fill"in o?o.fill:(T=!0,M.fill)),L=z2("stroke"in m?m.stroke:"stroke"in o?o.stroke:b||p||M.autoStroke&&!T?null:(A=2,M.stroke)),R=m.textShadowBlur>0||o.textShadowBlur>0;S.text=t.text,S.x=u,S.y=v,R&&(S.shadowBlur=m.textShadowBlur||o.textShadowBlur||0,S.shadowColor=m.textShadowColor||o.textShadowColor||"transparent",S.shadowOffsetX=m.textShadowOffsetX||o.textShadowOffsetX||0,S.shadowOffsetY=m.textShadowOffsetY||o.textShadowOffsetY||0),S.textAlign=h,S.textBaseline="middle",S.font=t.font||Qu,S.opacity=Ws(m.opacity,o.opacity,1),Rr(S,m),L&&(S.lineWidth=Ws(m.lineWidth,o.lineWidth,A),S.lineDash=Dt(m.lineDash,o.lineDash),S.lineDashOffset=o.lineDashOffset||0,S.stroke=L),E&&(S.fill=E);var B=t.contentWidth,H=t.contentHeight;C.setBoundingRect(new lt(ph(S.x,B,S.textAlign),gp(S.y,H,S.textBaseline),B,H))},n.prototype._renderBackground=function(t,o,l,c,u,h){var C,S,T,p=t.backgroundColor,m=t.borderWidth,g=t.borderColor,v=p&&p.image,y=p&&!v,b=t.borderRadius,x=this;if(y||t.lineHeight||m&&g){(C=this._getOrCreateChild(an)).useStyle(C.createStyle()),C.style.fill=null;var M=C.shape;M.x=l,M.y=c,M.width=u,M.height=h,M.r=b,C.dirtyShape()}if(y)(T=C.style).fill=p||null,T.fillOpacity=Dt(t.fillOpacity,1);else if(v){(S=this._getOrCreateChild(la)).onload=function(){x.dirtyStyle()};var A=S.style;A.image=p.image,A.x=l,A.y=c,A.width=u,A.height=h}m&&g&&((T=C.style).lineWidth=m,T.stroke=g,T.strokeOpacity=Dt(t.strokeOpacity,1),T.lineDash=t.borderDash,T.lineDashOffset=t.borderDashOffset||0,C.strokeContainThreshold=0,C.hasFill()&&C.hasStroke()&&(T.strokeFirst=!0,T.lineWidth*=2));var E=(C||S).style;E.shadowBlur=t.shadowBlur||0,E.shadowColor=t.shadowColor||"transparent",E.shadowOffsetX=t.shadowOffsetX||0,E.shadowOffsetY=t.shadowOffsetY||0,E.opacity=Ws(t.opacity,o.opacity,1)},n.makeFont=function(t){var o="";return V2(t)&&(o=[t.fontStyle,t.fontWeight,Vn(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),o&&as(o)||t.textFont||t.font},n}(ms),N2={left:!0,right:1,center:1},AD={top:1,bottom:1,middle:1},B2=["fontStyle","fontWeight","fontSize","fontFamily"];function Vn(r){return"string"!=typeof r||-1===r.indexOf("px")&&-1===r.indexOf("rem")&&-1===r.indexOf("em")?isNaN(+r)?"12px":r+"px":r}function Rr(r,n){for(var t=0;t=0,c=!1;if(r instanceof Vt){var u=ID(r),h=l&&u.selectFill||u.normalFill,p=l&&u.selectStroke||u.normalStroke;if(kp(h)||kp(p)){var m=(o=o||{}).style||{};"inherit"===m.fill?(c=!0,o=ge({},o),(m=ge({},m)).fill=h):!kp(m.fill)&&kp(h)?(c=!0,o=ge({},o),(m=ge({},m)).fill=kv(h)):!kp(m.stroke)&&kp(p)&&(c||(o=ge({},o),m=ge({},m)),m.stroke=kv(p)),o.style=m}}return o&&null==o.z2&&(c||(o=ge({},o)),o.z2=r.z2+(r.z2EmphasisLift??10)),o}(this,0,n,t);if("blur"===r)return function u8(r,n,t){var o=Mt(r.currentStates,n)>=0,l=r.style.opacity,c=o?null:function c8(r,n,t,o){for(var l=r.style,c={},u=0;u0){var p={dataIndex:h,seriesIndex:t.seriesIndex};null!=u&&(p.dataType=u),n.push(p)}})}),n}function Ud(r,n,t){ys(r,!0),Wl(r,Ih),UD(r,n,t)}function Ri(r,n,t,o){o?function p8(r){ys(r,!1)}(r):Ud(r,n,t)}function UD(r,n,t){var o=_t(r);null!=n?(o.focus=n,o.blurScope=t):o.focus&&(o.focus=null)}var E0=["emphasis","blur","select"],Y2={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function da(r,n,t,o){t=t||"itemStyle";for(var l=0;l0){var x={duration:g.duration,delay:g.delay||0,easing:g.easing,done:c,force:!!c||!!u,setToFinal:!m,scope:r,during:u};h?n.animateFrom(t,x):n.animateTo(t,x)}else n.stopAnimation(),!h&&n.attr(t),u&&u(1),c&&c()}function un(r,n,t,o,l,c){I0("update",r,n,t,o,l,c)}function di(r,n,t,o,l,c){I0("enter",r,n,t,o,l,c)}function Ip(r){if(!r.__zr)return!0;for(var n=0;n-1?"ZH":"EN";function QD(r,n){r=r.toUpperCase(),KD[r]=new zn(n),B0[r]=n}function JD(r){return KD[r]}QD("EN",{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),QD("ZH",{time:{month:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],monthAbbr:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],dayOfWeek:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],dayOfWeekAbbr:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"]},legend:{selector:{all:"\u5168\u9009",inverse:"\u53cd\u9009"}},toolbox:{brush:{title:{rect:"\u77e9\u5f62\u9009\u62e9",polygon:"\u5708\u9009",lineX:"\u6a2a\u5411\u9009\u62e9",lineY:"\u7eb5\u5411\u9009\u62e9",keep:"\u4fdd\u6301\u9009\u62e9",clear:"\u6e05\u9664\u9009\u62e9"}},dataView:{title:"\u6570\u636e\u89c6\u56fe",lang:["\u6570\u636e\u89c6\u56fe","\u5173\u95ed","\u5237\u65b0"]},dataZoom:{title:{zoom:"\u533a\u57df\u7f29\u653e",back:"\u533a\u57df\u7f29\u653e\u8fd8\u539f"}},magicType:{title:{line:"\u5207\u6362\u4e3a\u6298\u7ebf\u56fe",bar:"\u5207\u6362\u4e3a\u67f1\u72b6\u56fe",stack:"\u5207\u6362\u4e3a\u5806\u53e0",tiled:"\u5207\u6362\u4e3a\u5e73\u94fa"}},restore:{title:"\u8fd8\u539f"},saveAsImage:{title:"\u4fdd\u5b58\u4e3a\u56fe\u7247",lang:["\u53f3\u952e\u53e6\u5b58\u4e3a\u56fe\u7247"]}},series:{typeNames:{pie:"\u997c\u56fe",bar:"\u67f1\u72b6\u56fe",line:"\u6298\u7ebf\u56fe",scatter:"\u6563\u70b9\u56fe",effectScatter:"\u6d9f\u6f2a\u6563\u70b9\u56fe",radar:"\u96f7\u8fbe\u56fe",tree:"\u6811\u56fe",treemap:"\u77e9\u5f62\u6811\u56fe",boxplot:"\u7bb1\u578b\u56fe",candlestick:"K\u7ebf\u56fe",k:"K\u7ebf\u56fe",heatmap:"\u70ed\u529b\u56fe",map:"\u5730\u56fe",parallel:"\u5e73\u884c\u5750\u6807\u56fe",lines:"\u7ebf\u56fe",graph:"\u5173\u7cfb\u56fe",sankey:"\u6851\u57fa\u56fe",funnel:"\u6f0f\u6597\u56fe",gauge:"\u4eea\u8868\u76d8\u56fe",pictorialBar:"\u8c61\u5f62\u67f1\u56fe",themeRiver:"\u4e3b\u9898\u6cb3\u6d41\u56fe",sunburst:"\u65ed\u65e5\u56fe"}},aria:{general:{withTitle:"\u8fd9\u662f\u4e00\u4e2a\u5173\u4e8e\u201c{title}\u201d\u7684\u56fe\u8868\u3002",withoutTitle:"\u8fd9\u662f\u4e00\u4e2a\u56fe\u8868\uff0c"},series:{single:{prefix:"",withName:"\u56fe\u8868\u7c7b\u578b\u662f{seriesType}\uff0c\u8868\u793a{seriesName}\u3002",withoutName:"\u56fe\u8868\u7c7b\u578b\u662f{seriesType}\u3002"},multiple:{prefix:"\u5b83\u7531{seriesCount}\u4e2a\u56fe\u8868\u7cfb\u5217\u7ec4\u6210\u3002",withName:"\u7b2c{seriesId}\u4e2a\u7cfb\u5217\u662f\u4e00\u4e2a\u8868\u793a{seriesName}\u7684{seriesType}\uff0c",withoutName:"\u7b2c{seriesId}\u4e2a\u7cfb\u5217\u662f\u4e00\u4e2a{seriesType}\uff0c",separator:{middle:"\uff1b",end:"\u3002"}}},data:{allData:"\u5176\u6570\u636e\u662f\u2014\u2014",partialData:"\u5176\u4e2d\uff0c\u524d{displayCnt}\u9879\u662f\u2014\u2014",withName:"{name}\u7684\u6570\u636e\u662f{value}",withoutName:"{value}",separator:{middle:"\uff0c",end:""}}}});var z0=36e5,fo=24*z0,cO=365*fo,H0={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},F="{yyyy}-{MM}-{dd}",xs={year:"{yyyy}",month:"{yyyy}-{MM}",day:F,hour:F+" "+H0.hour,minute:F+" "+H0.minute,second:F+" "+H0.second,millisecond:H0.none},eM=["year","month","day","hour","minute","second","millisecond"],tM=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function po(r,n){return"0000".substr(0,n-(r+="").length)+r}function Lp(r){switch(r){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return r}}function G0(r){return r===Lp(r)}function Oh(r,n,t,o){var l=yi(r),c=l[j0(t)](),u=l[Wd(t)]()+1,h=Math.floor((u-1)/3)+1,p=l[Np(t)](),m=l["get"+(t?"UTC":"")+"Day"](),g=l[Lh(t)](),v=(g-1)%12+1,y=l[Nv(t)](),b=l[Bp(t)](),x=l[$0(t)](),S=(o instanceof zn?o:JD(o||oO)||function lO(){return KD.EN}()).getModel("time"),M=S.get("month"),T=S.get("monthAbbr"),A=S.get("dayOfWeek"),E=S.get("dayOfWeekAbbr");return(n||"").replace(/{yyyy}/g,c+"").replace(/{yy}/g,c%100+"").replace(/{Q}/g,h+"").replace(/{MMMM}/g,M[u-1]).replace(/{MMM}/g,T[u-1]).replace(/{MM}/g,po(u,2)).replace(/{M}/g,u+"").replace(/{dd}/g,po(p,2)).replace(/{d}/g,p+"").replace(/{eeee}/g,A[m]).replace(/{ee}/g,E[m]).replace(/{e}/g,m+"").replace(/{HH}/g,po(g,2)).replace(/{H}/g,g+"").replace(/{hh}/g,po(v+"",2)).replace(/{h}/g,v+"").replace(/{mm}/g,po(y,2)).replace(/{m}/g,y+"").replace(/{ss}/g,po(b,2)).replace(/{s}/g,b+"").replace(/{SSS}/g,po(x,3)).replace(/{S}/g,x+"")}function U0(r,n){var t=yi(r),o=t[Wd(n)]()+1,l=t[Np(n)](),c=t[Lh(n)](),u=t[Nv(n)](),h=t[Bp(n)](),m=0===t[$0(n)](),g=m&&0===h,v=g&&0===u,y=v&&0===c,b=y&&1===l;return b&&1===o?"year":b?"month":y?"day":v?"hour":g?"minute":m?"second":"millisecond"}function Fv(r,n,t){var o=ln(r)?yi(r):r;switch(n=n||U0(r,t)){case"year":return o[j0(t)]();case"half-year":return o[Wd(t)]()>=6?1:0;case"quarter":return Math.floor((o[Wd(t)]()+1)/4);case"month":return o[Wd(t)]();case"day":return o[Np(t)]();case"half-day":return o[Lh(t)]()/24;case"hour":return o[Lh(t)]();case"minute":return o[Nv(t)]();case"second":return o[Bp(t)]();case"millisecond":return o[$0(t)]()}}function j0(r){return r?"getUTCFullYear":"getFullYear"}function Wd(r){return r?"getUTCMonth":"getMonth"}function Np(r){return r?"getUTCDate":"getDate"}function Lh(r){return r?"getUTCHours":"getHours"}function Nv(r){return r?"getUTCMinutes":"getMinutes"}function Bp(r){return r?"getUTCSeconds":"getSeconds"}function $0(r){return r?"getUTCMilliseconds":"getMilliseconds"}function x8(r){return r?"setUTCFullYear":"setFullYear"}function nM(r){return r?"setUTCMonth":"setMonth"}function dO(r){return r?"setUTCDate":"setDate"}function iM(r){return r?"setUTCHours":"setHours"}function rM(r){return r?"setUTCMinutes":"setMinutes"}function uO(r){return r?"setUTCSeconds":"setSeconds"}function hO(r){return r?"setUTCMilliseconds":"setMilliseconds"}function Wa(r){if(!o0(r))return Le(r)?r:"-";var n=(r+"").split(".");return n[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(n.length>1?"."+n[1]:"")}function W0(r,n){return r=(r||"").toLowerCase().replace(/-(.)/g,function(t,o){return o.toUpperCase()}),n&&r&&(r=r.charAt(0).toUpperCase()+r.slice(1)),r}var Fh=Db;function fO(r,n,t){function l(g){return g&&as(g)?g:"-"}function c(g){return!(null==g||isNaN(g)||!isFinite(g))}var u="time"===n,h=r instanceof Date;if(u||h){var p=u?yi(r):r;if(!isNaN(+p))return Oh(p,"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}",t);if(h)return"-"}if("ordinal"===n)return To(r)?l(r):ln(r)&&c(r)?r+"":"-";var m=Ro(r);return c(m)?Wa(m):To(r)?l(r):"boolean"==typeof r?r+"":"-"}var Y0=["a","b","c","d","e","f","g"],q0=function(r,n){return"{"+r+(n??"")+"}"};function aM(r,n,t){be(n)||(n=[n]);var o=n.length;if(!o)return"";for(var l=n[0].$vars||[],c=0;c':'':{renderMode:c,content:"{"+(t.markerId||"markerX")+"|} ",style:"subItem"===l?{width:4,height:4,borderRadius:2,backgroundColor:o}:{width:10,height:10,borderRadius:5,backgroundColor:o}}:""}function mO(r,n,t){("week"===r||"month"===r||"quarter"===r||"half-year"===r||"year"===r)&&(r="MM-dd\nyyyy");var o=yi(n),l=t?"getUTC":"get",c=o[l+"FullYear"](),u=o[l+"Month"]()+1,h=o[l+"Date"](),p=o[l+"Hours"](),m=o[l+"Minutes"](),g=o[l+"Seconds"](),v=o[l+"Milliseconds"]();return r.replace("MM",po(u,2)).replace("M",u).replace("yyyy",c).replace("yy",po(c%100+"",2)).replace("dd",po(h,2)).replace("d",h).replace("hh",po(p,2)).replace("h",p).replace("mm",po(m,2)).replace("m",m).replace("ss",po(g,2)).replace("s",g).replace("SSS",po(v,3))}function S8(r){return r&&r.charAt(0).toUpperCase()+r.substr(1)}function Nh(r,n){return n=n||"transparent",Le(r)?r:ze(r)&&r.colorStops&&(r.colorStops[0]||{}).color||n}function Vp(r,n){if("_blank"===n||"blank"===n){var t=window.open();t.opener=null,t.location.href=r}else window.open(r,n)}var X0=U,gO=["left","right","top","bottom","width","height"],Bh=[["width","left","right"],["height","top","bottom"]];function oM(r,n,t,o,l){var c=0,u=0;null==o&&(o=1/0),null==l&&(l=1/0);var h=0;n.eachChild(function(p,m){var b,x,g=p.getBoundingRect(),v=n.childAt(m+1),y=v&&v.getBoundingRect();if("horizontal"===r){var C=g.width+(y?-y.x+g.x:0);(b=c+C)>o||p.newline?(c=0,b=C,u+=h+t,h=g.height):h=Math.max(h,g.height)}else{var S=g.height+(y?-y.y+g.y:0);(x=u+S)>l||p.newline?(c+=h+t,u=0,x=S,h=g.width):h=Math.max(h,g.width)}p.newline||(p.x=c,p.y=u,p.markRedraw(),"horizontal"===r?c=b+t:u=x+t)})}var Vh=oM;function cr(r,n,t){t=Fh(t||0);var o=n.width,l=n.height,c=Ie(r.left,o),u=Ie(r.top,l),h=Ie(r.right,o),p=Ie(r.bottom,l),m=Ie(r.width,o),g=Ie(r.height,l),v=t[2]+t[0],y=t[1]+t[3],b=r.aspect;switch(isNaN(m)&&(m=o-h-y-c),isNaN(g)&&(g=l-p-v-u),null!=b&&(isNaN(m)&&isNaN(g)&&(b>o/l?m=.8*o:g=.8*l),isNaN(m)&&(m=b*g),isNaN(g)&&(g=m/b)),isNaN(c)&&(c=o-h-m-y),isNaN(u)&&(u=l-p-g-v),r.left||r.right){case"center":c=o/2-m/2-t[3];break;case"right":c=o-m-y}switch(r.top||r.bottom){case"middle":case"center":u=l/2-g/2-t[0];break;case"bottom":u=l-g-v}c=c||0,u=u||0,isNaN(m)&&(m=o-y-c-(h||0)),isNaN(g)&&(g=l-v-u-(p||0));var x=new lt(c+t[3],u+t[0],m,g);return x.margin=t,x}function Bv(r,n,t,o,l,c){var m,u=!l||!l.hv||l.hv[0],h=!l||!l.hv||l.hv[1],p=l&&l.boundingMode||"all";if((c=c||r).x=r.x,c.y=r.y,!u&&!h)return!1;if("raw"===p)m="group"===r.type?new lt(0,0,+n.width||0,+n.height||0):r.getBoundingRect();else if(m=r.getBoundingRect(),r.needLocalTransform()){var g=r.getLocalTransform();(m=m.clone()).applyTransform(g)}var v=cr(Ye({width:m.width,height:m.height},n),t,o),y=u?v.x-m.x:0,b=h?v.y-m.y:0;return"raw"===p?(c.x=y,c.y=b):(c.x+=y,c.y+=b),c===r&&r.markRedraw(),!0}function Vv(r){var n=r.layoutMode||r.constructor.layoutMode;return ze(n)?n:n?{type:n}:null}function Yd(r,n,t){var o=t&&t.ignoreSize;!be(o)&&(o=[o,o]);var l=u(Bh[0],0),c=u(Bh[1],1);function u(g,v){var y={},b=0,x={},C=0;if(X0(g,function(A){x[A]=r[A]}),X0(g,function(A){h(n,A)&&(y[A]=x[A]=n[A]),p(y,A)&&b++,p(x,A)&&C++}),o[v])return p(n,g[1])?x[g[2]]=null:p(n,g[2])&&(x[g[1]]=null),x;if(2===C||!b)return x;if(b>=2)return y;for(var M=0;M=0;p--)h=St(h,l[p],!0);o.defaultOption=h}return o.defaultOption},n.prototype.getReferringComponents=function(t,o){var c=t+"Id";return Xr(this.ecModel,t,{index:this.get(t+"Index",!0),id:this.get(c,!0)},o)},n.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},n.prototype.getZLevelKey=function(){return""},n.prototype.setZLevel=function(t){this.option.zlevel=t},n.protoInitialize=((t=n.prototype).type="component",t.id="",t.name="",t.mainType="",t.subType="",void(t.componentIndex=0)),n;var t}(zn);sD(Uc,zn),mv(Uc),function w8(r){var n={};r.registerSubTypeDefaulter=function(t,o){var l=el(t);n[l.main]=o},r.determineSubType=function(t,o){var l=o.type;if(!l){var c=el(t).main;r.hasSubTypes(t)&&n[c]&&(l=n[c](o))}return l}}(Uc),function Op(r,n){function o(c,u){return c[u]||(c[u]={predecessor:[],successor:[]}),c[u]}r.topologicalTravel=function(c,u,h,p){if(c.length){var m=function t(c){var u={},h=[];return U(c,function(p){var m=o(u,p),v=function l(c,u){var h=[];return U(c,function(p){Mt(u,p)>=0&&h.push(p)}),h}(m.originalDeps=n(p),c);m.entryCount=v.length,0===m.entryCount&&h.push(p),U(v,function(y){Mt(m.predecessor,y)<0&&m.predecessor.push(y);var b=o(u,y);Mt(b.successor,y)<0&&b.successor.push(p)})}),{graph:u,noEntryList:h}}(u),g=m.graph,v=m.noEntryList,y={};for(U(c,function(T){y[T]=!0});v.length;){var b=v.pop(),x=g[b],C=!!y[b];C&&(h.call(p,b,x.originalDeps.slice()),delete y[b]),U(x.successor,C?M:S)}U(y,function(){throw new Error("")})}function S(T){g[T].entryCount--,0===g[T].entryCount&&v.push(T)}function M(T){y[T]=!0,S(T)}}}(Uc,function sM(r){var n=[];return U(Uc.getClassesByMainType(r),function(t){n=n.concat(t.dependencies||t.prototype.dependencies||[])}),n=xe(n,function(t){return el(t).main}),"dataset"!==r&&Mt(n,"dataset")<=0&&n.unshift("dataset"),n});const jt=Uc;var A8="";typeof navigator<"u"&&(A8=navigator.platform||"");var Xd="rgba(0, 0, 0, 0.2)";const wZ={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Xd,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Xd,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Xd,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Xd,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Xd,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Xd,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:A8.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};var lM=$e(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),No="original",ua="arrayRows",Bo="objectRows",Cs="keyedColumns",ha="typedArray",zv="unknown",Vo="column",ql="row",cM=cn();function bO(r,n,t){var o={},l=zh(n);if(!l||!r)return o;var g,v,c=[],u=[],p=cM(n.ecModel).datasetMap,m=l.uid+"_"+t.seriesLayoutBy;U(r=r.slice(),function(C,S){var M=ze(C)?C:r[S]={name:C};"ordinal"===M.type&&null==g&&(g=S,v=x(M)),o[M.name]=[]});var y=p.get(m)||p.set(m,{categoryWayDim:v,valueWayDim:0});function b(C,S,M){for(var T=0;Tn)return r[o];return r[t-1]}(o,u):t;if((g=g||t)&&g.length){var v=g[p];return l&&(m[l]=v),h.paletteIdx=(p+1)%g.length,v}}var K0,Hv,SO,DO="\0_ec_inner",MO=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.init=function(t,o,l,c,u,h){c=c||{},this.option=null,this._theme=new zn(c),this._locale=new zn(u),this._optionManager=h},n.prototype.setOption=function(t,o,l){var c=N8(o);this._optionManager.setOption(t,l,c),this._resetOption(null,c)},n.prototype.resetOption=function(t,o){return this._resetOption(t,N8(o))},n.prototype._resetOption=function(t,o){var l=!1,c=this._optionManager;if(!t||"recreate"===t){var u=c.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(u,o)):SO(this,u),l=!0}if(("timeline"===t||"media"===t)&&this.restoreData(),!t||"recreate"===t||"timeline"===t){var h=c.getTimelineOption(this);h&&(l=!0,this._mergeOption(h,o))}if(!t||"recreate"===t||"media"===t){var p=c.getMediaOption(this);p.length&&U(p,function(m){l=!0,this._mergeOption(m,o)},this)}return l},n.prototype.mergeOption=function(t){this._mergeOption(t,null)},n.prototype._mergeOption=function(t,o){var l=this.option,c=this._componentsMap,u=this._componentsCount,h=[],p=$e(),m=o&&o.replaceMergeMainTypeMap;(function yO(r){cM(r).datasetMap=$e()})(this),U(t,function(v,y){null!=v&&(jt.hasClass(y)?y&&(h.push(y),p.set(y,!0)):l[y]=null==l[y]?rt(v):St(l[y],v,!0))}),m&&m.each(function(v,y){jt.hasClass(y)&&!p.get(y)&&(h.push(y),p.set(y,!0))}),jt.topologicalTravel(h,jt.getAllClassMainTypes(),function g(v){var y=function P8(r,n,t){var o=uM.get(n);if(!o)return t;var l=o(r);return l?t.concat(l):t}(this,v,On(t[v])),b=c.get(v),C=a2(b,y,b?m&&m.get(v)?"replaceMerge":"normalMerge":"replaceAll");(function hZ(r,n,t){U(r,function(o){var l=o.newOption;ze(l)&&(o.keyInfo.mainType=n,o.keyInfo.subType=function fZ(r,n,t,o){return n.type?n.type:t?t.subType:o.determineSubType(r,n)}(n,l,o.existing,t))})})(C,v,jt),l[v]=null,c.set(v,null),u.set(v,0);var A,S=[],M=[],T=0;U(C,function(L,R){var B=L.existing,H=L.newOption;if(H){var j=jt.getClass(v,L.keyInfo.subType,!("series"===v));if(!j)return;if("tooltip"===v){if(A)return;A=!0}if(B&&B.constructor===j)B.name=L.keyInfo.name,B.mergeOption(H,this),B.optionUpdated(H,!1);else{var K=ge({componentIndex:R},L.keyInfo);ge(B=new j(H,this,this,K),K),L.brandNew&&(B.__requireNewView=!0),B.init(H,this,this),B.optionUpdated(null,!0)}}else B&&(B.mergeOption({},this),B.optionUpdated({},!1));B?(S.push(B.option),M.push(B),T++):(S.push(void 0),M.push(void 0))},this),l[v]=S,c.set(v,M),u.set(v,T),"series"===v&&K0(this)},this),this._seriesIndices||K0(this)},n.prototype.getOption=function(){var t=rt(this.option);return U(t,function(o,l){if(jt.hasClass(l)){for(var c=On(o),u=c.length,h=!1,p=u-1;p>=0;p--)c[p]&&!yh(c[p])?h=!0:(c[p]=null,!h&&u--);c.length=u,t[l]=c}}),delete t[DO],t},n.prototype.getTheme=function(){return this._theme},n.prototype.getLocaleModel=function(){return this._locale},n.prototype.setUpdatePayload=function(t){this._payload=t},n.prototype.getUpdatePayload=function(){return this._payload},n.prototype.getComponent=function(t,o){var l=this._componentsMap.get(t);if(l){var c=l[o||0];if(c)return c;if(null==o)for(var u=0;u=n:"max"===t?r<=n:r===n})(o[m],c,p)||(l=!1)}}),l}const Gp=Hh;var Pa=U,Kl=ze,Gh=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function Kd(r){var n=r&&r.itemStyle;if(n)for(var t=0,o=Gh.length;t=0;S--){var M=r[S];if(h||(x=M.data.rawIndexOf(M.stackedByDimension,b)),x>=0){var T=M.data.getByRawIndex(M.stackResultDimension,x);if("all"===p||"positive"===p&&T>0||"negative"===p&&T<0||"samesign"===p&&y>=0&&T>0||"samesign"===p&&y<=0&&T<0){y=NH(y,T),C=T;break}}}return o[0]=y,o[1]=C,o})})}var he=function r(n){this.data=n.data||(n.sourceFormat===Cs?{}:[]),this.sourceFormat=n.sourceFormat||zv,this.seriesLayoutBy=n.seriesLayoutBy||Vo,this.startIndex=n.startIndex||0,this.dimensionsDetectedCount=n.dimensionsDetectedCount,this.metaRawOption=n.metaRawOption;var t=this.dimensionsDefine=n.dimensionsDefine;if(t)for(var o=0;oC&&(C=A)}b[0]=x,b[1]=C}},l=function(){return this._data?this._data.length/this._dimSize:0};function c(u){for(var h=0;h=0&&(C=u.interpolatedValue[S])}return null!=C?C+"":""}):void 0},r.prototype.getRawValue=function(n,t){return jh(this.getData(t),n)},r.prototype.formatTooltip=function(n,t,o){},r}();function VO(r){var n,t;return ze(r)?r.type&&(t=r):n=r,{text:n,frag:t}}function $v(r){return new CM(r)}var CM=function(){function r(n){this._reset=(n=n||{}).reset,this._plan=n.plan,this._count=n.count,this._onDirty=n.onDirty,this._dirty=!0}return r.prototype.perform=function(n){var c,t=this._upstream,o=n&&n.skip;if(this._dirty&&t){var l=this.context;l.data=l.outputData=t.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!o&&(c=this._plan(this.context));var v,u=g(this._modBy),h=this._modDataCount||0,p=g(n&&n.modBy),m=n&&n.modDataCount||0;function g(T){return!(T>=1)&&(T=1),T}(u!==p||h!==m)&&(c="reset"),(this._dirty||"reset"===c)&&(this._dirty=!1,v=this._doReset(o)),this._modBy=p,this._modDataCount=m;var y=n&&n.step;if(this._dueEnd=t?t._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var b=this._dueIndex,x=Math.min(null!=y?this._dueIndex+y:1/0,this._dueEnd);if(!o&&(v||b1&&o>0?h:u}};return c;function u(){return n=r?null:pn},gte:function(r,n){return r>=n}},UO=function(){function r(n,t){ln(t)||Sn(""),this._opFn=GO[n],this._rvalFloat=Ro(t)}return r.prototype.evaluate=function(n){return ln(n)?this._opFn(n,this._rvalFloat):this._opFn(Ro(n),this._rvalFloat)},r}(),TM=function(){function r(n,t){var o="desc"===n;this._resultLT=o?1:-1,null==t&&(t=o?"min":"max"),this._incomparable="min"===t?-1/0:1/0}return r.prototype.evaluate=function(n,t){var o=ln(n)?n:Ro(n),l=ln(t)?t:Ro(t),c=isNaN(o),u=isNaN(l);if(c&&(o=this._incomparable),u&&(l=this._incomparable),c&&u){var h=Le(n),p=Le(t);h&&(o=p?n:0),p&&(l=h?t:0)}return ol?-this._resultLT:0},r}(),Up=function(){function r(n,t){this._rval=t,this._isEQ=n,this._rvalTypeof=typeof t,this._rvalFloat=Ro(t)}return r.prototype.evaluate=function(n){var t=n===this._rval;if(!t){var o=typeof n;o!==this._rvalTypeof&&("number"===o||"number"===this._rvalTypeof)&&(t=Ro(n)===this._rvalFloat)}return this._isEQ?t:!t},r}();function $8(r,n){return"eq"===r||"ne"===r?new Up("eq"===r,n):Ve(GO,r)?new UO(r,n):null}var W8=function(){function r(){}return r.prototype.getRawData=function(){throw new Error("not supported")},r.prototype.getRawDataItem=function(n){throw new Error("not supported")},r.prototype.cloneRawData=function(){},r.prototype.getDimensionInfo=function(n){},r.prototype.cloneAllDimensionInfo=function(){},r.prototype.count=function(){},r.prototype.retrieveValue=function(n,t){},r.prototype.retrieveValueFromItem=function(n,t){},r.prototype.convertValue=function(n,t){return tu(n,t)},r}();function Y8(r){return Ds(r.sourceFormat)||Sn(""),r.data}function $O(r){var n=r.sourceFormat,t=r.data;if(Ds(n)||Sn(""),n===ua){for(var l=[],c=0,u=t.length;c65535?rl:WO}function Yv(r){var n=r.constructor;return n===Array?r.slice():new n(r)}function XO(r,n,t,o,l){var c=qO[t||"float"];if(l){var u=r[n],h=u&&u.length;if(h!==o){for(var p=new c(o),m=0;mS[1]&&(S[1]=C)}return this._rawCount=this._count=p,{start:h,end:p}},r.prototype._initDataFromProvider=function(n,t,o){for(var l=this._provider,c=this._chunks,u=this._dimensions,h=u.length,p=this._rawExtent,m=xe(u,function(T){return T.property}),g=0;gM[1]&&(M[1]=S)}}!l.persistent&&l.clean&&l.clean(),this._rawCount=this._count=t,this._extent=[]},r.prototype.count=function(){return this._count},r.prototype.get=function(n,t){if(!(t>=0&&t=0&&t=this._rawCount||n<0)return-1;if(!this._indices)return n;var t=this._indices,o=t[n];if(null!=o&&on))return u;c=u-1}}return-1},r.prototype.indicesOfNearest=function(n,t,o){var c=this._chunks[n],u=[];if(!c)return u;null==o&&(o=1/0);for(var h=1/0,p=-1,m=0,g=0,v=this.count();g=0&&p<0)&&(h=x,p=b,m=0),b===p&&(u[m++]=g))}return u.length=m,u},r.prototype.getIndices=function(){var n,t=this._indices;if(t){var l=this._count;if((o=t.constructor)===Array){n=new o(l);for(var c=0;c=v&&T<=y||isNaN(T))&&(p[m++]=C),C++;x=!0}else if(2===c){S=b[l[0]];var A=b[l[1]],E=n[l[1]][0],L=n[l[1]][1];for(M=0;M=v&&T<=y||isNaN(T))&&(R>=E&&R<=L||isNaN(R))&&(p[m++]=C),C++}x=!0}}if(!x)if(1===c)for(M=0;M=v&&T<=y||isNaN(T))&&(p[m++]=B)}else for(M=0;Mn[j][1])&&(H=!1)}H&&(p[m++]=t.getRawIndex(M))}return mM[1]&&(M[1]=S)}}},r.prototype.lttbDownSample=function(n,t){var g,v,y,o=this.clone([n],!0),c=o._chunks[n],u=this.count(),h=0,p=Math.floor(1/t),m=this.getRawIndex(0),b=new(Wv(this._rawCount))(Math.min(2*(Math.ceil(u/p)+2),u));b[h++]=m;for(var x=1;xg&&(g=v,y=E)}$>0&&$g-x&&(h.length=p=g-x);for(var C=0;Cv[1]&&(v[1]=M),y[b++]=T}return c._count=b,c._indices=y,c._updateGetRawIdx(),c},r.prototype.each=function(n,t){if(this._count)for(var o=n.length,l=this._chunks,c=0,u=this.count();cp&&(p=v)}return this._extent[n]=u=[h,p],u},r.prototype.getRawDataItem=function(n){var t=this.getRawIndex(n);if(this._provider.persistent)return this._provider.getItem(t);for(var o=[],l=this._chunks,c=0;c=0?this._indices[n]:-1},r.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},r.internalField=function(){function n(t,o,l,c){return tu(t[c],this._dimensions[c])}kM={arrayRows:n,objectRows:function(t,o,l,c){return tu(t[o],this._dimensions[c])},keyedColumns:n,original:function(t,o,l,c){var u=t&&(null==t.value?t:t.value);return tu(u instanceof Array?u[c]:u,this._dimensions[c])},typedArray:function(t,o,l,c){return t[c]}}}(),r}();const EM=ZO;var IM=function(){function r(n){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=n}return r.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},r.prototype._setLocalSource=function(n,t){this._sourceList=n,this._upstreamSignList=t,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},r.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},r.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},r.prototype._createSource=function(){this._setLocalSource([],[]);var l,c,n=this._sourceHost,t=this._getUpstreamSourceManagers(),o=!!t.length;if($h(n)){var u=n,h=void 0,p=void 0,m=void 0;if(o){var g=t[0];g.prepareSource(),h=(m=g.getSource()).data,p=m.sourceFormat,c=[g._getVersionSign()]}else p=ni(h=u.get("data",!0))?ha:No,c=[];var v=this._getSourceMetaRawOption()||{},y=m&&m.metaRawOption||{},b=Dt(v.seriesLayoutBy,y.seriesLayoutBy)||null,x=Dt(v.sourceHeader,y.sourceHeader),C=Dt(v.dimensions,y.dimensions);l=b!==y.seriesLayoutBy||!!x!=!!y.sourceHeader||C?[gn(h,{seriesLayoutBy:b,sourceHeader:x,dimensions:C},p)]:[]}else{var M=n;if(o){var T=this._applyTransform(t);l=T.sourceList,c=T.upstreamSignList}else l=[gn(M.get("source",!0),this._getSourceMetaRawOption(),null)],c=[]}this._setLocalSource(l,c)},r.prototype._applyTransform=function(n){var t=this._sourceHost,o=t.get("transform",!0),l=t.get("fromTransformResult",!0);null!=l&&1!==n.length&&KO("");var u,h=[],p=[];return U(n,function(m){m.prepareSource();var g=m.getSource(l||0);null!=l&&!g&&KO(""),h.push(g),p.push(m._getVersionSign())}),o?u=function q8(r,n,t){var o=On(r),l=o.length;l||Sn("");for(var u=0,h=l;u1||t>0&&!r.noHeader;return U(r.blocks,function(l){var c=LM(l);c>=n&&(n=c+ +(o&&(!c||ow(l)&&!l.noHeader)))}),n}return 0}function QO(r,n,t,o){var l=n.noHeader,c=function eL(r){return{html:In[r],richText:Re[r]}}(LM(n)),u=[],h=n.blocks||[];xa(!h||be(h)),h=h||[];var p=r.orderMode;if(n.sortBlocks&&p){h=h.slice();var m={valueAsc:"asc",valueDesc:"desc"};if(Ve(m,p)){var g=new TM(m[p],null);h.sort(function(x,C){return g.evaluate(x.sortParam,C.sortParam)})}else"seriesDesc"===p&&h.reverse()}U(h,function(x,C){var S=n.valueFormatter,M=OM(x)(S?ge(ge({},r),{valueFormatter:S}):r,x,C>0?c.html:0,o);null!=M&&u.push(M)});var v="richText"===r.renderMode?u.join(c.richText):sw(u.join(""),l?t:c.html);if(l)return v;var y=fO(n.header,"ordinal",r.useUTC),b=Y(o,r.renderMode).nameStyle;return"richText"===r.renderMode?tL(r,y,b)+c.richText+v:sw('
'+aa(y)+"
"+v,t)}function JO(r,n,t,o){var l=r.renderMode,c=n.noName,u=n.noValue,h=!n.markerType,p=n.name,m=r.useUTC,g=n.valueFormatter||r.valueFormatter||function(E){return xe(E=be(E)?E:[E],function(L,R){return fO(L,be(b)?b[R]:b,m)})};if(!c||!u){var v=h?"":r.markupStyleCreator.makeTooltipMarker(n.markerType,n.markerColor||"#333",l),y=c?"":fO(p,"ordinal",m),b=n.valueType,x=u?[]:g(n.value),C=!h||!c,S=!h&&c,M=Y(o,l),T=M.nameStyle,A=M.valueStyle;return"richText"===l?(h?"":v)+(c?"":tL(r,y,T))+(u?"":function Q8(r,n,t,o,l){var c=[l];return t&&c.push({padding:[0,0,0,o?10:20],align:"right"}),r.markupStyleCreator.wrapRichTextStyle(be(n)?n.join(" "):n,c)}(r,x,C,S,A)):sw((h?"":v)+(c?"":function Z8(r,n,t){return''+aa(r)+""}(y,!h,T))+(u?"":function K8(r,n,t,o){return''+xe(r=be(r)?r:[r],function(u){return aa(u)}).join("  ")+""}(x,C,S,A)),t)}}function FM(r,n,t,o,l,c){if(r)return OM(r)({useUTC:l,renderMode:t,orderMode:o,markupStyleCreator:n,valueFormatter:r.valueFormatter},r,0,c)}function sw(r,n){return'
'+r+'
'}function tL(r,n,t){return r.markupStyleCreator.wrapRichTextStyle(n,t)}function nL(r,n){return Nh(r.getData().getItemVisual(n,"style")[r.visualDrawType])}function iL(r,n){return r.get("padding")??("richText"===n?[8,10]:10)}var NM=function(){function r(){this.richTextStyles={},this._nextStyleNameId=t2()}return r.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},r.prototype.makeTooltipMarker=function(n,t,o){var l="richText"===o?this._generateStyleName():null,c=pO({color:t,type:n,renderMode:o,markerId:l});return Le(c)?c:(this.richTextStyles[l]=c.style,c.content)},r.prototype.wrapRichTextStyle=function(n,t){var o={};be(t)?U(t,function(c){return ge(o,c)}):ge(o,t);var l=this._generateStyleName();return this.richTextStyles[l]=o,"{"+l+"|"+n+"}"},r}();function rL(r){var g,v,y,b,n=r.series,t=r.dataIndex,o=r.multipleSeries,l=n.getData(),c=l.mapDimensionsAll("defaultedTooltip"),u=c.length,h=n.getRawValue(t),p=be(h),m=nL(n,t);if(u>1||p&&!u){var x=function J8(r,n,t,o,l){var c=n.getData(),u=Mo(r,function(v,y,b){var x=c.getDimensionInfo(b);return v||x&&!1!==x.tooltip&&null!=x.displayName},!1),h=[],p=[],m=[];function g(v,y){var b=c.getDimensionInfo(y);!b||!1===b.otherDims.tooltip||(u?m.push(Oi("nameValue",{markerType:"subItem",markerColor:l,name:b.displayName,value:v,valueType:b.type})):(h.push(v),p.push(b.type)))}return o.length?U(o,function(v){g(jh(c,t,v),v)}):U(r,g),{inlineValues:h,inlineValueTypes:p,blocks:m}}(h,n,t,c,m);g=x.inlineValues,v=x.inlineValueTypes,y=x.blocks,b=x.inlineValues[0]}else if(u){var C=l.getDimensionInfo(c[0]);b=g=jh(l,t,c[0]),v=C.type}else b=g=p?h[0]:h;var S=d2(n),M=S&&n.name||"",T=l.getName(t),A=o?M:T;return Oi("section",{header:M,noHeader:o||!S,sortParam:b,blocks:[Oi("nameValue",{markerType:"item",markerColor:m,name:A,noName:!as(A),value:g,valueType:v})].concat(y||[])})}var iu=cn();function lw(r,n){return r.getName(n)||r.getId(n)}var cw="__universalTransitionEnabled",dw=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t._selectedDataIndicesMap={},t}return le(n,r),n.prototype.init=function(t,o,l){this.seriesIndex=this.componentIndex,this.dataTask=$v({count:tG,reset:nG}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,l),(iu(this).sourceManager=new IM(this)).prepareSource();var u=this.getInitialData(t,l);BM(u,this),this.dataTask.context.data=u,iu(this).dataBeforeProcessed=u,aL(this),this._initSelectedMapFromData(u)},n.prototype.mergeDefaultAndTheme=function(t,o){var l=Vv(this),c=l?qd(t):{},u=this.subType;jt.hasClass(u)&&(u+="Series"),St(t,o.getTheme().get(this.subType)),St(t,this.getDefaultOption()),_h(t,"label",["show"]),this.fillDataTextStyle(t.data),l&&Yd(t,c,l)},n.prototype.mergeOption=function(t,o){t=St(this.option,t,!0),this.fillDataTextStyle(t.data);var l=Vv(this);l&&Yd(this.option,t,l);var c=iu(this).sourceManager;c.dirty(),c.prepareSource();var u=this.getInitialData(t,o);BM(u,this),this.dataTask.dirty(),this.dataTask.context.data=u,iu(this).dataBeforeProcessed=u,aL(this),this._initSelectedMapFromData(u)},n.prototype.fillDataTextStyle=function(t){if(t&&!ni(t))for(var o=["show"],l=0;lthis.getShallow("animationThreshold")&&(o=!1),!!o},n.prototype.restoreData=function(){this.dataTask.dirty()},n.prototype.getColorFromPalette=function(t,o,l){var c=this.ecModel,u=hM.prototype.getColorFromPalette.call(this,t,o,l);return u||(u=c.getColorFromPalette(t,o,l)),u},n.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},n.prototype.getProgressive=function(){return this.get("progressive")},n.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},n.prototype.select=function(t,o){this._innerSelect(this.getData(o),t)},n.prototype.unselect=function(t,o){var l=this.option.selectedMap;if(l){var c=this.option.selectedMode,u=this.getData(o);if("series"===c||"all"===l)return this.option.selectedMap={},void(this._selectedDataIndicesMap={});for(var h=0;h=0&&l.push(u)}return l},n.prototype.isSelected=function(t,o){var l=this.option.selectedMap;if(!l)return!1;var c=this.getData(o);return("all"===l||l[lw(c,t)])&&!c.getItemModel(t).get(["select","disabled"])},n.prototype.isUniversalTransitionEnabled=function(){if(this[cw])return!0;var t=this.option.universalTransition;return!!t&&(!0===t||t&&t.enabled)},n.prototype._innerSelect=function(t,o){var l,c,u=this.option,h=u.selectedMode,p=o.length;if(h&&p)if("series"===h)u.selectedMap="all";else if("multiple"===h){ze(u.selectedMap)||(u.selectedMap={});for(var m=u.selectedMap,g=0;g0&&this._innerSelect(t,o)}},n.registerClass=function(t){return jt.registerClass(t)},n.protoInitialize=((t=n.prototype).type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",void(t.visualDrawType="fill")),n;var t}(jt);function aL(r){var n=r.name;d2(r)||(r.name=function eG(r){var n=r.getRawData(),t=n.mapDimensionsAll("seriesName"),o=[];return U(t,function(l){var c=n.getDimensionInfo(l);c.displayName&&o.push(c.displayName)}),o.join(" ")}(r)||n)}function tG(r){return r.model.getRawData().count()}function nG(r){var n=r.model;return n.setData(n.getRawData().cloneShallow()),oL}function oL(r,n){n.outputData&&r.end>n.outputData.count()&&n.model.getRawData().cloneShallow(n.outputData)}function BM(r,n){U(jn(r.CHANGABLE_METHODS,r.DOWNSAMPLE_METHODS),function(t){r.wrapMethod(t,vt(sL,n))})}function sL(r,n){var t=uw(r);return t&&t.setOutputEnd((n||this).count()),n}function uw(r){var n=(r.ecModel||{}).scheduler,t=n&&n.getPipeline(r.uid);if(t){var o=t.currentTask;if(o){var l=o.agentStubMap;l&&(o=l.get(r.uid))}return o}}Ii(dw,ec),Ii(dw,hM),sD(dw,jt);const Zn=dw;var hw=function(){function r(){this.group=new ct,this.uid=Pv("viewComponent")}return r.prototype.init=function(n,t){},r.prototype.render=function(n,t,o,l){},r.prototype.dispose=function(n,t){},r.prototype.updateView=function(n,t,o,l){},r.prototype.updateLayout=function(n,t,o,l){},r.prototype.updateVisual=function(n,t,o,l){},r.prototype.toggleBlurSeries=function(n,t,o){},r.prototype.eachRendered=function(n){var t=this.group;t&&t.traverse(n)},r}();Aa(hw),mv(hw);const ui=hw;function Wh(){var r=cn();return function(n){var t=r(n),o=n.pipelineContext,l=!!t.large,c=!!t.progressiveRender,u=t.large=!(!o||!o.large),h=t.progressiveRender=!(!o||!o.progressiveRender);return(l!==u||c!==h)&&"reset"}}var Yh=Hl.CMD,Oa=[[],[],[]],qv=Math.sqrt,qh=Math.atan2;function lL(r,n){if(n){var l,c,u,h,p,m,t=r.data,o=r.len(),g=Yh.M,v=Yh.C,y=Yh.L,b=Yh.R,x=Yh.A,C=Yh.Q;for(u=0,h=0;u1&&(u*=VM(x),h*=VM(x));var C=(l===c?-1:1)*VM((u*u*(h*h)-u*u*(b*b)-h*h*(y*y))/(u*u*(b*b)+h*h*(y*y)))||0,S=C*u*b/h,M=C*-h*y/u,T=(r+t)/2+zM(v)*S-$c(v)*M,A=(n+o)/2+$c(v)*S+zM(v)*M,E=HM([1,0],[(y-S)/u,(b-M)/h]),L=[(y-S)/u,(b-M)/h],R=[(-1*y-S)/u,(-1*b-M)/h],B=HM(L,R);if(fw(L,R)<=-1&&(B=Lr),fw(L,R)>=1&&(B=0),B<0){var H=Math.round(B/Lr*1e6)/1e6;B=2*Lr+H%2*Lr}g.addData(m,T,A,u,h,E,B,v,c)}var Qe=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,aG=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g,cL=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return qn(n,r),n.prototype.applyTransform=function(t){},n}(Vt);function Xh(r){return null!=r.setData}function dL(r,n){var t=function oG(r){var n=new Hl;if(!r)return n;var u,t=0,o=0,l=t,c=o,h=Hl.CMD,p=r.match(Qe);if(!p)return n;for(var m=0;mee*ee+ne*ne&&(H=j,G=$),{cx:H,cy:G,x0:-g,y0:-v,x1:H*(l/L-1),y1:G*(l/L-1)}}var sG=function r(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0},gL=function(r){function n(t){return r.call(this,t)||this}return qn(n,r),n.prototype.getDefaultShape=function(){return new sG},n.prototype.buildPath=function(t,o){!function e_(r,n){var t,o=ru(n.r,0),l=ru(n.r0||0,0),c=o>0;if(c||l>0){if(c||(o=l,l=0),l>o){var h=o;o=l,l=h}var p=n.startAngle,m=n.endAngle;if(!isNaN(p)&&!isNaN(m)){var g=n.cx,v=n.cy,y=!!n.clockwise,b=pL(m-p),x=b>$M&&b%$M;if(x>Ms&&(b=x),o>Ms)if(b>$M-Ms)r.moveTo(g+o*jp(p),v+o*Zh(p)),r.arc(g,v,o,p,m,!y),l>Ms&&(r.moveTo(g+l*jp(m),v+l*Zh(m)),r.arc(g,v,l,m,p,y));else{var C=void 0,S=void 0,M=void 0,T=void 0,A=void 0,E=void 0,L=void 0,R=void 0,B=void 0,H=void 0,G=void 0,j=void 0,$=void 0,X=void 0,K=void 0,ee=void 0,ne=o*jp(p),ie=o*Zh(p),de=l*jp(m),ce=l*Zh(m),ve=b>Ms;if(ve){var De=n.cornerRadius;De&&(t=function Jv(r){var n;if(be(r)){var t=r.length;if(!t)return r;n=1===t?[r[0],r[0],0,0]:2===t?[r[0],r[0],r[1],r[1]]:3===t?r.concat(r[2]):r}else n=[r,r,r,r];return n}(De),C=t[0],S=t[1],M=t[2],T=t[3]);var Ae=pL(o-l)/2;if(A=ol(Ae,M),E=ol(Ae,T),L=ol(Ae,C),R=ol(Ae,S),G=B=ru(A,E),j=H=ru(L,R),(B>Ms||H>Ms)&&($=o*jp(m),X=o*Zh(m),K=l*jp(p),ee=l*Zh(p),bMs){var $t=ol(M,G),Ft=ol(T,G),Ze=mw(K,ee,ne,ie,o,$t,y),At=mw($,X,de,ce,o,Ft,y);r.moveTo(g+Ze.cx+Ze.x0,v+Ze.cy+Ze.y0),G0&&r.arc(g+Ze.cx,v+Ze.cy,$t,La(Ze.y0,Ze.x0),La(Ze.y1,Ze.x1),!y),r.arc(g,v,o,La(Ze.cy+Ze.y1,Ze.cx+Ze.x1),La(At.cy+At.y1,At.cx+At.x1),!y),Ft>0&&r.arc(g+At.cx,v+At.cy,Ft,La(At.y1,At.x1),La(At.y0,At.x0),!y))}else r.moveTo(g+ne,v+ie),r.arc(g,v,o,p,m,!y);else r.moveTo(g+ne,v+ie);l>Ms&&ve?j>Ms?($t=ol(C,j),Ze=mw(de,ce,$,X,l,-(Ft=ol(S,j)),y),At=mw(ne,ie,K,ee,l,-$t,y),r.lineTo(g+Ze.cx+Ze.x0,v+Ze.cy+Ze.y0),j0&&r.arc(g+Ze.cx,v+Ze.cy,Ft,La(Ze.y0,Ze.x0),La(Ze.y1,Ze.x1),!y),r.arc(g,v,l,La(Ze.cy+Ze.y1,Ze.cx+Ze.x1),La(At.cy+At.y1,At.cx+At.x1),y),$t>0&&r.arc(g+At.cx,v+At.cy,$t,La(At.y1,At.x1),La(At.y0,At.x0),!y))):(r.lineTo(g+de,v+ce),r.arc(g,v,l,m,p,y)):r.lineTo(g+de,v+ce)}else r.moveTo(g,v);r.closePath()}}}(t,o)},n.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},n}(Vt);gL.prototype.type="sector";const Ya=gL;var vL=function r(){this.cx=0,this.cy=0,this.r=0,this.r0=0},WM=function(r){function n(t){return r.call(this,t)||this}return qn(n,r),n.prototype.getDefaultShape=function(){return new vL},n.prototype.buildPath=function(t,o){var l=o.cx,c=o.cy,u=2*Math.PI;t.moveTo(l+o.r,c),t.arc(l,c,o.r,0,u,!1),t.moveTo(l+o.r0,c),t.arc(l,c,o.r0,0,u,!0)},n}(Vt);WM.prototype.type="ring";const $p=WM;function YM(r,n,t){var o=n.smooth,l=n.points;if(l&&l.length>=2){if(o){var c=function lG(r,n,t,o){var p,m,g,v,l=[],c=[],u=[],h=[];if(o){g=[1/0,1/0],v=[-1/0,-1/0];for(var y=0,b=r.length;yau[1]){if(h=!1,c)return h;var g=Math.abs(au[0]-Qh[1]),v=Math.abs(Qh[0]-au[1]);Math.min(g,v)>l.len()&&it.scale(l,m,gMath.abs(c[1])?c[0]>0?"right":"left":c[1]>0?"bottom":"top"}function AL(r){return!r.isGroup}function ef(r,n,t){if(r&&n){var c=function o(u){var h={};return u.traverse(function(p){AL(p)&&p.anid&&(h[p.anid]=p)}),h}(r);n.traverse(function(u){if(AL(u)&&u.anid){var h=c[u.anid];if(h){var p=l(u);u.attr(l(h)),un(u,p,t,_t(u).dataIndex)}}})}function l(u){var h={x:u.x,y:u.y,rotation:u.rotation};return function KM(r){return null!=r.shape}(u)&&(h.shape=ge({},u.shape)),h}}function Mw(r,n){return xe(r,function(t){var o=t[0];o=ww(o,n.x),o=qp(o,n.x+n.width);var l=t[1];return l=ww(l,n.y),[o,l=qp(l,n.y+n.height)]})}function Tw(r,n){var t=ww(r.x,n.x),o=qp(r.x+r.width,n.x+n.width),l=ww(r.y,n.y),c=qp(r.y+r.height,n.y+n.height);if(o>=t&&c>=l)return{x:t,y:l,width:o-t,height:c-l}}function Xp(r,n,t){var o=ge({rectHover:!0},n),l=o.style={strokeNoScale:!0};if(t=t||{x:-1,y:-1,width:2,height:2},r)return 0===r.indexOf("image://")?(l.image=r.slice(8),Ye(l,t),new la(o)):r_(r.replace("path://",""),o,t,"center")}function a_(r,n,t,o,l){for(var c=0,u=l[l.length-1];c=-1e-6}(y))return!1;var b=r-l,x=n-c,C=QM(b,x,p,m)/y;if(C<0||C>1)return!1;var S=QM(b,x,g,v)/y;return!(S<0||S>1)}function QM(r,n,t,o){return r*o-t*n}function ll(r){var n=r.itemTooltipOption,t=r.componentModel,o=r.itemName,l=Le(n)?{formatter:n}:n,c=t.mainType,u=t.componentIndex,h={componentType:c,name:o,$vars:["name"]};h[c+"Index"]=u;var p=r.formatterParamsExtra;p&&U(Yt(p),function(g){Ve(h,g)||(h[g]=p[g],h.$vars.push(g))});var m=_t(r.el);m.componentMainType=c,m.componentIndex=u,m.tooltipConfig={name:o,option:Ye({content:o,formatterParams:h},l)}}function JM(r,n){var t;r.isGroup&&(t=n(r)),t||r.traverse(n)}function ou(r,n){if(r)if(be(r))for(var t=0;t=0?v():u=setTimeout(v,-h),l=o};return y.clear=function(){u&&(clearTimeout(u),u=null)},y.debounceNextCall=function(b){g=b},y}function Zp(r,n,t,o){var l=r[n];if(l){var c=l[l_]||l;if(l[nT]!==t||l[iT]!==o){if(null==t||!o)return r[n]=c;(l=r[n]=kw(c,t,"debounce"===o))[l_]=c,l[iT]=o,l[nT]=t}return l}}function c_(r,n){var t=r[n];t&&t[l_]&&(t.clear&&t.clear(),r[n]=t[l_])}var IL=cn(),rT={itemStyle:xh(iO,!0),lineStyle:xh(nO,!0)},AZ={lineStyle:"stroke",itemStyle:"fill"};function aT(r,n){return r.visualStyleMapper||rT[n]||(console.warn("Unknown style type '"+n+"'."),rT.itemStyle)}function PL(r,n){return r.visualDrawType||AZ[n]||(console.warn("Unknown style type '"+n+"'."),"fill")}var xG={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,n){var t=r.getData(),o=r.visualStyleAccessPath||"itemStyle",l=r.getModel(o),u=aT(r,o)(l),h=l.getShallow("decal");h&&(t.setVisual("decal",h),h.dirty=!0);var p=PL(r,o),m=u[p],g=qe(m)?m:null;if(!u[p]||g||"auto"===u.fill||"auto"===u.stroke){var y=r.getColorFromPalette(r.name,null,n.getSeriesCount());u[p]||(u[p]=y,t.setVisual("colorFromPalette",!0)),u.fill="auto"===u.fill||qe(u.fill)?y:u.fill,u.stroke="auto"===u.stroke||qe(u.stroke)?y:u.stroke}if(t.setVisual("style",u),t.setVisual("drawType",p),!n.isSeriesFiltered(r)&&g)return t.setVisual("colorFromPalette",!1),{dataEach:function(b,x){var C=r.getDataParams(x),S=ge({},u);S[p]=g(C),b.setItemVisual(x,"style",S)}}}},Ew=new zn,CG={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,n){if(!r.ignoreStyleOnData&&!n.isSeriesFiltered(r)){var t=r.getData(),o=r.visualStyleAccessPath||"itemStyle",l=aT(r,o),c=t.getVisual("drawType");return{dataEach:t.hasItemOption?function(u,h){var p=u.getRawDataItem(h);if(p&&p[o]){Ew.option=p[o];var m=l(Ew);ge(u.ensureUniqueItemVisual(h,"style"),m),Ew.option.decal&&(u.setItemVisual(h,"decal",Ew.option.decal),Ew.option.decal.dirty=!0),c in m&&u.setItemVisual(h,"colorFromPalette",!1)}}:null}}}},SG={performRawSeries:!0,overallReset:function(r){var n=$e();r.eachSeries(function(t){var o=t.getColorBy();if(!t.isColorBySeries()){var l=t.type+"-"+o,c=n.get(l);c||n.set(l,c={}),IL(t).scope=c}}),r.eachSeries(function(t){if(!t.isColorBySeries()&&!r.isSeriesFiltered(t)){var o=t.getRawData(),l={},c=t.getData(),u=IL(t).scope,p=PL(t,t.visualStyleAccessPath||"itemStyle");c.each(function(m){var g=c.getRawIndex(m);l[g]=m}),o.each(function(m){var g=l[m];if(c.getItemVisual(g,"colorFromPalette")){var y=c.ensureUniqueItemVisual(g,"style"),b=o.getName(m)||m+"",x=o.count();y[p]=t.getColorFromPalette(b,u,x)}})}})}},tf=Math.PI,Iw=function(){function r(n,t,o,l){this._stageTaskMap=$e(),this.ecInstance=n,this.api=t,o=this._dataProcessorHandlers=o.slice(),l=this._visualHandlers=l.slice(),this._allHandlers=o.concat(l)}return r.prototype.restoreData=function(n,t){n.restoreData(t),this._stageTaskMap.each(function(o){var l=o.overallTask;l&&l.dirty()})},r.prototype.getPerformArgs=function(n,t){if(n.__pipeline){var o=this._pipelineMap.get(n.__pipeline.id),l=o.context,u=!t&&o.progressiveEnabled&&(!l||l.progressiveRender)&&n.__idxInPipeline>o.blockIndex?o.step:null,h=l&&l.modDataCount;return{step:u,modBy:null!=h?Math.ceil(h/u):null,modDataCount:h}}},r.prototype.getPipeline=function(n){return this._pipelineMap.get(n)},r.prototype.updateStreamModes=function(n,t){var o=this._pipelineMap.get(n.uid),c=n.getData().count(),u=o.progressiveEnabled&&t.incrementalPrepareRender&&c>=o.threshold,h=n.get("large")&&c>=n.get("largeThreshold"),p="mod"===n.get("progressiveChunkMode")?c:null;n.pipelineContext=o.context={progressiveRender:u,modDataCount:p,large:h}},r.prototype.restorePipelines=function(n){var t=this,o=t._pipelineMap=$e();n.eachSeries(function(l){var c=l.getProgressive(),u=l.uid;o.set(u,{id:u,head:null,tail:null,threshold:l.getProgressiveThreshold(),progressiveEnabled:c&&!(l.preventIncremental&&l.preventIncremental()),blockIndex:-1,step:Math.round(c||700),count:0}),t._pipe(l,l.dataTask)})},r.prototype.prepareStageTasks=function(){var n=this._stageTaskMap,t=this.api.getModel(),o=this.api;U(this._allHandlers,function(l){var c=n.get(l.uid)||n.set(l.uid,{});xa(!(l.reset&&l.overallReset),""),l.reset&&this._createSeriesStageTask(l,c,t,o),l.overallReset&&this._createOverallStageTask(l,c,t,o)},this)},r.prototype.prepareView=function(n,t,o,l){var c=n.renderTask,u=c.context;u.model=t,u.ecModel=o,u.api=l,c.__block=!n.incrementalPrepareRender,this._pipe(t,c)},r.prototype.performDataProcessorTasks=function(n,t){this._performStageTasks(this._dataProcessorHandlers,n,t,{block:!0})},r.prototype.performVisualTasks=function(n,t,o){this._performStageTasks(this._visualHandlers,n,t,o)},r.prototype._performStageTasks=function(n,t,o,l){l=l||{};var c=!1,u=this;function h(p,m){return p.setDirty&&(!p.dirtyMap||p.dirtyMap.get(m.__pipeline.id))}U(n,function(p,m){if(!l.visualType||l.visualType===p.visualType){var g=u._stageTaskMap.get(p.uid),v=g.seriesTaskMap,y=g.overallTask;if(y){var b,x=y.agentStubMap;x.each(function(S){h(l,S)&&(S.dirty(),b=!0)}),b&&y.dirty(),u.updatePayload(y,o);var C=u.getPerformArgs(y,l.block);x.each(function(S){S.perform(C)}),y.perform(C)&&(c=!0)}else v&&v.each(function(S,M){h(l,S)&&S.dirty();var T=u.getPerformArgs(S,l.block);T.skip=!p.performRawSeries&&t.isSeriesFiltered(S.context.model),u.updatePayload(S,o),S.perform(T)&&(c=!0)})}}),this.unfinished=c||this.unfinished},r.prototype.performSeriesTasks=function(n){var t;n.eachSeries(function(o){t=o.dataTask.perform()||t}),this.unfinished=t||this.unfinished},r.prototype.plan=function(){this._pipelineMap.each(function(n){var t=n.tail;do{if(t.__block){n.blockIndex=t.__idxInPipeline;break}t=t.getUpstream()}while(t)})},r.prototype.updatePayload=function(n,t){"remain"!==t&&(n.context.payload=t)},r.prototype._createSeriesStageTask=function(n,t,o,l){var c=this,u=t.seriesTaskMap,h=t.seriesTaskMap=$e(),p=n.seriesType,m=n.getTargetSeries;function g(v){var y=v.uid,b=h.set(y,u&&u.get(y)||$v({plan:kG,reset:EG,count:RL}));b.context={model:v,ecModel:o,api:l,useClearVisual:n.isVisual&&!n.isLayout,plan:n.plan,reset:n.reset,scheduler:c},c._pipe(v,b)}n.createOnAllSeries?o.eachRawSeries(g):p?o.eachRawSeriesByType(p,g):m&&m(o,l).each(g)},r.prototype._createOverallStageTask=function(n,t,o,l){var c=this,u=t.overallTask=t.overallTask||$v({reset:DG});u.context={ecModel:o,api:l,overallReset:n.overallReset,scheduler:c};var h=u.agentStubMap,p=u.agentStubMap=$e(),m=n.seriesType,g=n.getTargetSeries,v=!0,y=!1;function x(C){var S=C.uid,M=p.set(S,h&&h.get(S)||(y=!0,$v({reset:MG,onDirty:AG})));M.context={model:C,overallProgress:v},M.agent=u,M.__block=v,c._pipe(C,M)}xa(!n.createOnAllSeries,""),m?o.eachRawSeriesByType(m,x):g?g(o,l).each(x):(v=!1,U(o.getSeries(),x)),y&&u.dirty()},r.prototype._pipe=function(n,t){var l=this._pipelineMap.get(n.uid);!l.head&&(l.head=t),l.tail&&l.tail.pipe(t),l.tail=t,t.__idxInPipeline=l.count++,t.__pipeline=l},r.wrapStageHandler=function(n,t){return qe(n)&&(n={overallReset:n,seriesType:OL(n)}),n.uid=Pv("stageHandler"),t&&(n.visualType=t),n},r}();function DG(r){r.overallReset(r.ecModel,r.api,r.payload)}function MG(r){return r.overallProgress&&TG}function TG(){this.agent.dirty(),this.getDownstream().dirty()}function AG(){this.agent&&this.agent.dirty()}function kG(r){return r.plan?r.plan(r.model,r.ecModel,r.api,r.payload):null}function EG(r){r.useClearVisual&&r.data.clearAllVisual();var n=r.resetDefines=On(r.reset(r.model,r.ecModel,r.api,r.payload));return n.length>1?xe(n,function(t,o){return Kp(o)}):IG}var IG=Kp(0);function Kp(r){return function(n,t){var o=t.data,l=t.resetDefines[r];if(l&&l.dataEach)for(var c=n.start;c0&&b===m.length-y.length){var x=m.slice(0,b);"data"!==x&&(t.mainType=x,t[y.toLowerCase()]=p,g=!0)}}h.hasOwnProperty(m)&&(o[m]=p,g=!0),g||(l[m]=p)})}return{cptQuery:t,dataQuery:o,otherQuery:l}},r.prototype.filter=function(n,t){var o=this.eventInfo;if(!o)return!0;var l=o.targetEl,c=o.packedEvent,u=o.model,h=o.view;if(!u||!h)return!0;var p=t.cptQuery,m=t.dataQuery;return g(p,u,"mainType")&&g(p,u,"subType")&&g(p,u,"index","componentIndex")&&g(p,u,"name")&&g(p,u,"id")&&g(m,c,"name")&&g(m,c,"dataIndex")&&g(m,c,"dataType")&&(!h.filterForExposedEvent||h.filterForExposedEvent(n,t.otherQuery,l,c));function g(v,y,b,x){return null==v[b]||y[x||b]===v[b]}},r.prototype.afterTrigger=function(){this.eventInfo=null},r}(),ye=["symbol","symbolSize","symbolRotate","symbolOffset"],BL=ye.concat(["symbolKeepAspect"]),lu={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,n){var t=r.getData();if(r.legendIcon&&t.setVisual("legendIcon",r.legendIcon),r.hasSymbolVisual){for(var o={},l={},c=!1,u=0;u=0&&ot(p)?p:.5,r.createRadialGradient(u,h,0,u,h,p)}(r,n,t):function hn(r,n,t){var o=null==n.x?0:n.x,l=null==n.x2?1:n.x2,c=null==n.y?0:n.y,u=null==n.y2?0:n.y2;return n.global||(o=o*t.width+t.x,l=l*t.width+t.x,c=c*t.height+t.y,u=u*t.height+t.y),o=ot(o)?o:0,l=ot(l)?l:1,c=ot(c)?c:0,u=ot(u)?u:0,r.createLinearGradient(o,c,l,u)}(r,n,t),l=n.colorStops,c=0;c0&&function $L(r,n){return r&&"solid"!==r&&n>0?"dashed"===r?[4*n,2*n]:"dotted"===r?[n]:ln(r)?[r]:be(r)?r:null:null}(n.lineDash,n.lineWidth),o=n.lineDashOffset;if(t){var l=n.strokeNoScale&&r.getLineScale?r.getLineScale():1;l&&1!==l&&(t=xe(t,function(c){return c/l}),o/=l)}return[t,o]}var Xa=new Hl(!0);function qc(r){var n=r.stroke;return!(null==n||"none"===n||!(r.lineWidth>0))}function WL(r){return"string"==typeof r&&"none"!==r}function Ow(r){var n=r.fill;return null!=n&&"none"!==n}function BG(r,n){if(null!=n.fillOpacity&&1!==n.fillOpacity){var t=r.globalAlpha;r.globalAlpha=n.fillOpacity*n.opacity,r.fill(),r.globalAlpha=t}else r.fill()}function VG(r,n){if(null!=n.strokeOpacity&&1!==n.strokeOpacity){var t=r.globalAlpha;r.globalAlpha=n.strokeOpacity*n.opacity,r.stroke(),r.globalAlpha=t}else r.stroke()}function Lw(r,n,t){var o=dD(n.image,n.__image,t);if(xp(o)){var l=r.createPattern(o,n.repeat||"repeat");if("function"==typeof DOMMatrix&&l&&l.setTransform){var c=new DOMMatrix;c.translateSelf(n.x||0,n.y||0),c.rotateSelf(0,0,(n.rotation||0)*nn),c.scaleSelf(n.scaleX||1,n.scaleY||1),l.setTransform(c)}return l}}var Fw=["shadowBlur","shadowOffsetX","shadowOffsetY"],qL=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function mT(r,n,t,o,l){var c=!1;if(!o&&n===(t=t||{}))return!1;if(o||n.opacity!==t.opacity){yo(r,l),c=!0;var u=Math.max(Math.min(n.opacity,1),0);r.globalAlpha=isNaN(u)?Ch.opacity:u}(o||n.blend!==t.blend)&&(c||(yo(r,l),c=!0),r.globalCompositeOperation=n.blend||Ch.blend);for(var h=0;h0&&t.unfinished);t.unfinished||this._zr.flush()}}},n.prototype.getDom=function(){return this._dom},n.prototype.getId=function(){return this.id},n.prototype.getZr=function(){return this._zr},n.prototype.isSSR=function(){return this._ssr},n.prototype.setOption=function(t,o,l){if(!this[Br]){if(this._disposed)return;var c,u,h;if(ze(o)&&(l=o.lazyUpdate,c=o.silent,u=o.replaceMerge,h=o.transition,o=o.notMerge),this[Br]=!0,!this._model||o){var p=new Gp(this._api),m=this._theme,g=this._model=new zp;g.scheduler=this._scheduler,g.ssr=this._ssr,g.init(null,null,null,m,this._locale,p)}this._model.setOption(t,{replaceMerge:u},Ww);var v={seriesTransition:h,optionChanged:!0};if(l)this[ma]={silent:c,updateParams:v},this[Br]=!1,this.getZr().wakeUp();else{try{Za(this),sf.update.call(this,null,v)}catch(y){throw this[ma]=null,this[Br]=!1,y}this._ssr||this._zr.flush(),this[ma]=null,this[Br]=!1,y_.call(this,c),Hw.call(this,c)}}},n.prototype.setTheme=function(){},n.prototype.getModel=function(){return this._model},n.prototype.getOption=function(){return this._model&&this._model.getOption()},n.prototype.getWidth=function(){return this._zr.getWidth()},n.prototype.getHeight=function(){return this._zr.getHeight()},n.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||sn.hasGlobalWindow&&window.devicePixelRatio||1},n.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},n.prototype.renderToCanvas=function(t){return this._zr.painter.getRenderedCanvas({backgroundColor:(t=t||{}).backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},n.prototype.renderToSVGString=function(t){return this._zr.painter.renderToString({useViewBox:(t=t||{}).useViewBox})},n.prototype.getSvgDataURL=function(){if(sn.svgSupported){var t=this._zr;return U(t.storage.getDisplayList(),function(l){l.stopAnimation(null,!0)}),t.painter.toDataURL()}},n.prototype.getDataURL=function(t){if(!this._disposed){var l=this._model,c=[],u=this;U((t=t||{}).excludeComponents,function(p){l.eachComponent({mainType:p},function(m){var g=u._componentsMap[m.__viewId];g.group.ignore||(c.push(g),g.group.ignore=!0)})});var h="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return U(c,function(p){p.group.ignore=!1}),h}},n.prototype.getConnectedDataURL=function(t){if(!this._disposed){var o="svg"===t.type,l=this.group,c=Math.min,u=Math.max,h=1/0;if(rm[l]){var p=h,m=h,g=-h,v=-h,y=[],b=t&&t.pixelRatio||this.getDevicePixelRatio();U(Xc,function(A,E){if(A.group===l){var L=o?A.getZr().painter.getSvgDom().innerHTML:A.renderToCanvas(rt(t)),R=A.getDom().getBoundingClientRect();p=c(R.left,p),m=c(R.top,m),g=u(R.right,g),v=u(R.bottom,v),y.push({dom:L,left:R.left,top:R.top})}});var x=(g*=b)-(p*=b),C=(v*=b)-(m*=b),S=$s.createCanvas(),M=lo(S,{renderer:o?"svg":"canvas"});if(M.resize({width:x,height:C}),o){var T="";return U(y,function(A){T+=''+A.dom+""}),M.painter.getSvgRoot().innerHTML=T,t.connectedBackgroundColor&&M.painter.setBackgroundColor(t.connectedBackgroundColor),M.refreshImmediately(),M.painter.toDataURL()}return t.connectedBackgroundColor&&M.add(new an({shape:{x:0,y:0,width:x,height:C},style:{fill:t.connectedBackgroundColor}})),U(y,function(A){var E=new la({style:{x:A.left*b-p,y:A.top*b-m,image:A.dom}});M.add(E)}),M.refreshImmediately(),S.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},n.prototype.convertToPixel=function(t,o){return mF(this,"convertToPixel",t,o)},n.prototype.convertFromPixel=function(t,o){return mF(this,"convertFromPixel",t,o)},n.prototype.containPixel=function(t,o){var c;if(!this._disposed)return U(bh(this._model,t),function(h,p){p.indexOf("Models")>=0&&U(h,function(m){var g=m.coordinateSystem;if(g&&g.containPoint)c=c||!!g.containPoint(o);else if("seriesModels"===p){var v=this._chartsMap[m.__viewId];v&&v.containPoint&&(c=c||v.containPoint(o,m))}},this)},this),!!c},n.prototype.getVisual=function(t,o){var c=bh(this._model,t,{defaultMainType:"series"}),h=c.seriesModel.getData(),p=c.hasOwnProperty("dataIndexInside")?c.dataIndexInside:c.hasOwnProperty("dataIndex")?h.indexOfRawIndex(c.dataIndex):null;return null!=p?lT(h,p,o):u_(h,o)},n.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},n.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},n.prototype._initEvents=function(){var t=this;U(kT,function(o){var l=function(c){var p,u=t.getModel(),h=c.target;if("globalout"===o?p={}:h&&nf(h,function(x){var C=_t(x);if(C&&null!=C.dataIndex){var S=C.dataModel||u.getSeriesByIndex(C.seriesIndex);return p=S&&S.getDataParams(C.dataIndex,C.dataType)||{},!0}if(C.eventData)return p=ge({},C.eventData),!0},!0),p){var g=p.componentType,v=p.componentIndex;("markLine"===g||"markPoint"===g||"markArea"===g)&&(g="series",v=p.seriesIndex);var y=g&&null!=v&&u.getComponent(g,v),b=y&&t["series"===y.mainType?"_chartsMap":"_componentsMap"][y.__viewId];p.event=c,p.type=o,t._$eventProcessor.eventInfo={targetEl:h,packedEvent:p,model:y,view:b},t.trigger(o,p)}};l.zrEventfulCallAtLast=!0,t._zr.on(o,l,t)}),U(lf,function(o,l){t._messageCenter.on(l,function(c){this.trigger(l,c)},t)}),U(["selectchanged"],function(o){t._messageCenter.on(o,function(l){this.trigger(o,l)},t)}),function OG(r,n,t){r.on("selectchanged",function(o){var l=t.getModel();o.isFromClick?(Hn("map","selectchanged",n,l,o),Hn("pie","selectchanged",n,l,o)):"select"===o.fromAction?(Hn("map","selected",n,l,o),Hn("pie","selected",n,l,o)):"unselect"===o.fromAction&&(Hn("map","unselected",n,l,o),Hn("pie","unselected",n,l,o))})}(this._messageCenter,this,this._api)},n.prototype.isDisposed=function(){return this._disposed},n.prototype.clear=function(){this._disposed||this.setOption({series:[]},!0)},n.prototype.dispose=function(){if(!this._disposed){this._disposed=!0,this.getDom()&&f2(this.getDom(),nc,"");var o=this,l=o._api,c=o._model;U(o._componentsViews,function(u){u.dispose(c,l)}),U(o._chartsViews,function(u){u.dispose(c,l)}),o._zr.dispose(),o._dom=o._model=o._chartsMap=o._componentsMap=o._chartsViews=o._componentsViews=o._scheduler=o._api=o._zr=o._throttledZrFlush=o._theme=o._coordSysMgr=o._messageCenter=null,delete Xc[o.id]}},n.prototype.resize=function(t){if(!this[Br]){if(this._disposed)return;this._zr.resize(t);var o=this._model;if(this._loadingFX&&this._loadingFX.resize(),o){var l=o.resetOption("media"),c=t&&t.silent;this[ma]&&(null==c&&(c=this[ma].silent),l=!0,this[ma]=null),this[Br]=!0;try{l&&Za(this),sf.update.call(this,{type:"resize",animation:ge({duration:0},t&&t.animation)})}catch(u){throw this[Br]=!1,u}this[Br]=!1,y_.call(this,c),Hw.call(this,c)}}},n.prototype.showLoading=function(t,o){if(!this._disposed&&(ze(t)&&(o=t,t=""),t=t||"default",this.hideLoading(),im[t])){var l=im[t](this._api,o),c=this._zr;this._loadingFX=l,c.add(l)}},n.prototype.hideLoading=function(){this._disposed||(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},n.prototype.makeActionFromEvent=function(t){var o=ge({},t);return o.type=lf[t.type],o},n.prototype.dispatchAction=function(t,o){if(!this._disposed&&(ze(o)||(o={silent:!!o}),jw[t.type]&&this._model)){if(this[Br])return void this._pendingActions.push(t);var l=o.silent;zw.call(this,t,l);var c=o.flush;c?this._zr.flush():!1!==c&&sn.browser.weChat&&this._throttledZrFlush(),y_.call(this,l),Hw.call(this,l)}},n.prototype.updateLabelLayout=function(){As.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},n.prototype.appendData=function(t){if(!this._disposed){var o=t.seriesIndex;this.getModel().getSeriesByIndex(o).appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},n.internalField=function(){function t(v){v.clearColorPalette(),v.eachSeries(function(y){y.clearColorPalette()})}function l(v){for(var y=[],b=v.currentStates,x=0;x0?{duration:C,delay:b.get("delay"),easing:b.get("easing")}:null;y.eachRendered(function(M){if(M.states&&M.states.emphasis){if(Ip(M))return;if(M instanceof Vt&&function X2(r){var n=ID(r);n.normalFill=r.style.fill,n.normalStroke=r.style.stroke;var t=r.states.select||{};n.selectFill=t.style&&t.style.fill||null,n.selectStroke=t.style&&t.style.stroke||null}(M),M.__dirty){var T=M.prevStates;T&&M.useStates(T)}if(x){M.stateTransition=S;var A=M.getTextContent(),E=M.getTextGuideLine();A&&(A.stateTransition=S),E&&(E.stateTransition=S)}M.__dirty&&l(M)}})}Za=function(v){var y=v._scheduler;y.restorePipelines(v._model),y.prepareStageTasks(),ST(v,!0),ST(v,!1),y.plan()},ST=function(v,y){for(var b=v._model,x=v._scheduler,C=y?v._componentsViews:v._chartsViews,S=y?v._componentsMap:v._chartsMap,M=v._zr,T=v._api,A=0;Ay.get("hoverLayerThreshold")&&!sn.node&&!sn.worker&&y.eachSeries(function(S){if(!S.preventUsingHoverLayer){var M=v._chartsMap[S.__viewId];M.__alive&&M.eachRendered(function(T){T.states.emphasis&&(T.states.emphasis.hoverLayer=!0)})}})}(v,y),As.trigger("series:afterupdate",y,b,C)},ks=function(v){v[du]=!0,v.getZr().wakeUp()},eU=function(v){v[du]&&(v.getZr().storage.traverse(function(y){Ip(y)||l(y)}),v[du]=!1)},vF=function(v){return new(function(y){function b(){return null!==y&&y.apply(this,arguments)||this}return le(b,y),b.prototype.getCoordinateSystems=function(){return v._coordSysMgr.getCoordinateSystems()},b.prototype.getComponentByElement=function(x){for(;x;){var C=x.__ecComponentInfo;if(null!=C)return v._model.getComponent(C.mainType,C.index);x=x.parent}},b.prototype.enterEmphasis=function(x,C){zc(x,C),ks(v)},b.prototype.leaveEmphasis=function(x,C){ca(x,C),ks(v)},b.prototype.enterBlur=function(x){$2(x),ks(v)},b.prototype.leaveBlur=function(x){Gd(x),ks(v)},b.prototype.enterSelect=function(x){Be(x),ks(v)},b.prototype.leaveSelect=function(x){W2(x),ks(v)},b.prototype.getModel=function(){return v.getModel()},b.prototype.getViewOfComponentModel=function(x){return v.getViewOfComponentModel(x)},b.prototype.getViewOfSeriesModel=function(x){return v.getViewOfSeriesModel(x)},b}(Q0))(v)},Uw=function(v){function y(b,x){for(var C=0;C=0)){VT.push(t);var c=LL.wrapStageHandler(t,l);c.__prio=n,c.__raw=t,r.push(c)}}function Kw(r,n){im[r]=n}function cf(r){aH({createCanvas:r})}function b_(r,n,t){var o=yT("registerMap");o&&o(r,n,t)}function bF(r){var n=yT("getMap");return n&&n(r)}var wF=function tc(r){var n=(r=rt(r)).type;n||Sn("");var o=n.split(":");2!==o.length&&Sn("");var l=!1;"echarts"===o[0]&&(n=o[1],l=!0),r.__isBuiltIn=l,at.set(n,r)};Zc(2e3,xG),Zc(4500,CG),Zc(4500,SG),Zc(2e3,lu),Zc(4500,hi),Zc(7e3,function $G(r,n){r.eachRawSeries(function(t){if(!r.isSeriesFiltered(t)){var o=t.getData();o.hasItemVisual()&&o.each(function(u){var h=o.getItemVisual(u,"decal");h&&(o.ensureUniqueItemVisual(u,"style").decal=v_(h,n))});var l=o.getVisual("decal");l&&(o.getVisual("style").decal=v_(l,n))}})}),LT(OO),qw(900,function I(r){var n=$e();r.eachSeries(function(t){var o=t.get("stack");if(o){var l=n.get(o)||n.set(o,[]),c=t.getData(),u={stackResultDimension:c.getCalculationInfo("stackResultDimension"),stackedOverDimension:c.getCalculationInfo("stackedOverDimension"),stackedDimension:c.getCalculationInfo("stackedDimension"),stackedByDimension:c.getCalculationInfo("stackedByDimension"),isStackedByIndex:c.getCalculationInfo("isStackedByIndex"),data:c,seriesModel:t};if(!u.stackedDimension||!u.isStackedByIndex&&!u.stackedByDimension)return;l.length&&c.setCalculationInfo("stackedOnSeries",l[l.length-1].seriesModel),l.push(u)}}),n.each(O)}),Kw("default",function su(r,n){Ye(n=n||{},{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var t=new ct,o=new an({style:{fill:n.maskColor},zlevel:n.zlevel,z:1e4});t.add(o);var u,l=new dn({style:{text:n.text,fill:n.textColor,fontSize:n.fontSize,fontWeight:n.fontWeight,fontStyle:n.fontStyle,fontFamily:n.fontFamily},zlevel:n.zlevel,z:10001}),c=new an({style:{fill:"none"},textContent:l,textConfig:{position:"right",distance:10},zlevel:n.zlevel,z:10001});return t.add(c),n.showSpinner&&((u=new vw({shape:{startAngle:-tf/2,endAngle:-tf/2+.1,r:n.spinnerRadius},style:{stroke:n.color,lineCap:"round",lineWidth:n.lineWidth},zlevel:n.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*tf/2}).start("circularInOut"),u.animateShape(!0).when(1e3,{startAngle:3*tf/2}).delay(300).start("circularInOut"),t.add(u)),t.resize=function(){var h=l.getBoundingRect().width,p=n.showSpinner?n.spinnerRadius:0,m=(r.getWidth()-2*p-(n.showSpinner&&h?10:0)-h)/2-(n.showSpinner&&h?0:5+h/2)+(n.showSpinner?0:h/2)+(h?0:p),g=r.getHeight()/2;n.showSpinner&&u.setShape({cx:m,cy:g}),c.setShape({x:m-p,y:g-p,width:2*p,height:2*p}),o.setShape({x:0,y:0,width:r.getWidth(),height:r.getHeight()})},t.resize(),t}),Es({type:Eh,event:Eh,update:Eh},zi),Es({type:Tp,event:Tp,update:Tp},zi),Es({type:Ap,event:Ap,update:Ap},zi),Es({type:Av,event:Av,update:Av},zi),Es({type:il,event:il,update:il},zi),OT("light",Jp),OT("dark",RG);var NZ={},aU=[],BZ={registerPreprocessor:LT,registerProcessor:qw,registerPostInit:iU,registerPostUpdate:FT,registerUpdateLifecycle:Xw,registerAction:Es,registerCoordinateSystem:rU,registerLayout:BT,registerVisual:Zc,registerTransform:wF,registerLoading:Kw,registerMap:b_,registerImpl:function WG(r,n){aF[r]=n},PRIORITY:KG,ComponentModel:jt,ComponentView:ui,SeriesModel:Zn,ChartView:Nn,registerComponentModel:function(r){jt.registerClass(r)},registerComponentView:function(r){ui.registerClass(r)},registerSeriesModel:function(r){Zn.registerClass(r)},registerChartView:function(r){Nn.registerClass(r)},registerSubTypeDefaulter:function(r,n){jt.registerSubTypeDefaulter(r,n)},registerPainter:function(r,n){_p(r,n)}};function Nt(r){be(r)?U(r,function(n){Nt(n)}):Mt(aU,r)>=0||(aU.push(r),qe(r)&&(r={install:r}),r.install(BZ))}function am(r){return null==r?0:r.length||1}function Zt(r){return r}var oU=function(){function r(n,t,o,l,c,u){this._old=n,this._new=t,this._oldKeyGetter=o||Zt,this._newKeyGetter=l||Zt,this.context=c,this._diffModeMultiple="multiple"===u}return r.prototype.add=function(n){return this._add=n,this},r.prototype.update=function(n){return this._update=n,this},r.prototype.updateManyToOne=function(n){return this._updateManyToOne=n,this},r.prototype.updateOneToMany=function(n){return this._updateOneToMany=n,this},r.prototype.updateManyToMany=function(n){return this._updateManyToMany=n,this},r.prototype.remove=function(n){return this._remove=n,this},r.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},r.prototype._executeOneToOne=function(){var n=this._old,t=this._new,o={},l=new Array(n.length),c=new Array(t.length);this._initIndexMap(n,null,l,"_oldKeyGetter"),this._initIndexMap(t,o,c,"_newKeyGetter");for(var u=0;u1){var g=p.shift();1===p.length&&(o[h]=p[0]),this._update&&this._update(g,u)}else 1===m?(o[h]=null,this._update&&this._update(p,u)):this._remove&&this._remove(u)}this._performRestAdd(c,o)},r.prototype._executeMultiple=function(){var t=this._new,o={},l={},c=[],u=[];this._initIndexMap(this._old,o,c,"_oldKeyGetter"),this._initIndexMap(t,l,u,"_newKeyGetter");for(var h=0;h1&&1===y)this._updateManyToOne&&this._updateManyToOne(g,m),l[p]=null;else if(1===v&&y>1)this._updateOneToMany&&this._updateOneToMany(g,m),l[p]=null;else if(1===v&&1===y)this._update&&this._update(g,m),l[p]=null;else if(v>1&&y>1)this._updateManyToMany&&this._updateManyToMany(g,m),l[p]=null;else if(v>1)for(var b=0;b1)for(var h=0;h30}var uU,x_,C_,S_,jT,tx,nx,w_=ze,rc=xe,UT=typeof Int32Array>"u"?Array:Int32Array,GZ=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],UZ=["_approximateExtent"],CF=function(){function r(n,t){this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var o,l=!1;uu(n)?(o=n.dimensions,this._dimOmitted=n.isDimensionOmitted(),this._schema=n):(l=!0,o=n),o=o||["x","y"];for(var c={},u=[],h={},p=!1,m={},g=0;g=t)){var l=this._store.getProvider();this._updateOrdinalMeta();var c=this._nameList,u=this._idList;if(l.getSource().sourceFormat===No&&!l.pure)for(var m=[],g=n;g0},r.prototype.ensureUniqueItemVisual=function(n,t){var o=this._itemVisuals,l=o[n];l||(l=o[n]={});var c=l[t];return null==c&&(be(c=this.getVisual(t))?c=c.slice():w_(c)&&(c=ge({},c)),l[t]=c),c},r.prototype.setItemVisual=function(n,t,o){var l=this._itemVisuals[n]||{};this._itemVisuals[n]=l,w_(t)?ge(l,t):l[t]=o},r.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},r.prototype.setLayout=function(n,t){w_(n)?ge(this._layout,n):this._layout[n]=t},r.prototype.getLayout=function(n){return this._layout[n]},r.prototype.getItemLayout=function(n){return this._itemLayouts[n]},r.prototype.setItemLayout=function(n,t,o){this._itemLayouts[n]=o?ge(this._itemLayouts[n]||{},t):t},r.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},r.prototype.setItemGraphicEl=function(n,t){Ah(this.hostModel&&this.hostModel.seriesIndex,this.dataType,n,t),this._graphicEls[n]=t},r.prototype.getItemGraphicEl=function(n){return this._graphicEls[n]},r.prototype.eachItemGraphicEl=function(n,t){U(this._graphicEls,function(o,l){o&&n&&n.call(t,o,l)})},r.prototype.cloneShallow=function(n){return n||(n=new r(this._schema?this._schema:rc(this.dimensions,this._getDimInfo,this),this.hostModel)),jT(n,this),n._store=this._store,n},r.prototype.wrapMethod=function(n,t){var o=this[n];qe(o)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(n),this[n]=function(){var l=o.apply(this,arguments);return t.apply(this,[l].concat(Ng(arguments)))})},r.internalField=(uU=function(n){var t=n._invertedIndicesMap;U(t,function(o,l){var c=n._dimInfos[l],u=c.ordinalMeta,h=n._store;if(u){o=t[l]=new UT(u.categories.length);for(var p=0;p1&&(p+="__ec__"+g),l[t]=p}})),r}();const ga=CF;function hU(r,n){return om(r,n).dimensions}function om(r,n){yM(r)||(r=vn(r));var t=(n=n||{}).coordDimensions||[],o=n.dimensionsDefine||r.dimensionsDefine||[],l=$e(),c=[],u=function Qc(r,n,t,o){var l=Math.max(r.dimensionsDetectedCount||1,n.length,t.length,o||0);return U(n,function(c){var u;ze(c)&&(u=c.dimsDef)&&(l=Math.max(l,u.length))}),l}(r,t,o,n.dimensionsCount),h=n.canOmitUnusedDimensions&&Jw(u),p=o===r.dimensionsDefine,m=p?Qw(r):GT(o),g=n.encodeDefine;!g&&n.encodeDefaulter&&(g=n.encodeDefaulter(r,u));for(var v=$e(g),y=new AM(u),b=0;b0&&(o.name=l+(c-1)),c++,n.set(l,c)}}(c),new HT({source:r,dimensions:c,fullDimensionCount:u,dimensionOmitted:h})}function jZ(r,n,t){if(t||n.hasKey(r)){for(var o=0;n.hasKey(r+o);)o++;r+=o}return n.set(r,!0),r}var DF=function r(n){this.coordSysDims=[],this.axisMap=$e(),this.categoryAxisMap=$e(),this.coordSysName=n},fU={cartesian2d:function(r,n,t,o){var l=r.getReferringComponents("xAxis",qi).models[0],c=r.getReferringComponents("yAxis",qi).models[0];n.coordSysDims=["x","y"],t.set("x",l),t.set("y",c),sm(l)&&(o.set("x",l),n.firstCategoryDimIndex=0),sm(c)&&(o.set("y",c),null==n.firstCategoryDimIndex&&(n.firstCategoryDimIndex=1))},singleAxis:function(r,n,t,o){var l=r.getReferringComponents("singleAxis",qi).models[0];n.coordSysDims=["single"],t.set("single",l),sm(l)&&(o.set("single",l),n.firstCategoryDimIndex=0)},polar:function(r,n,t,o){var l=r.getReferringComponents("polar",qi).models[0],c=l.findAxisModel("radiusAxis"),u=l.findAxisModel("angleAxis");n.coordSysDims=["radius","angle"],t.set("radius",c),t.set("angle",u),sm(c)&&(o.set("radius",c),n.firstCategoryDimIndex=0),sm(u)&&(o.set("angle",u),null==n.firstCategoryDimIndex&&(n.firstCategoryDimIndex=1))},geo:function(r,n,t,o){n.coordSysDims=["lng","lat"]},parallel:function(r,n,t,o){var l=r.ecModel,c=l.getComponent("parallel",r.get("parallelIndex")),u=n.coordSysDims=c.dimensions.slice();U(c.parallelAxisIndex,function(h,p){var m=l.getComponent("parallelAxis",h),g=u[p];t.set(g,m),sm(m)&&(o.set(g,m),null==n.firstCategoryDimIndex&&(n.firstCategoryDimIndex=p))})}};function sm(r){return"category"===r.get("type")}function pU(r,n,t){var c,u,h,o=(t=t||{}).byIndex,l=t.stackedCoordDimension;!function $Z(r){return!uu(r.schema)}(n)?(c=(u=n.schema).dimensions,h=n.store):c=n;var m,g,v,y,p=!(!r||!r.get("stack"));if(U(c,function(T,A){Le(T)&&(c[A]=T={name:T}),p&&!T.isExtraCoord&&(!o&&!m&&T.ordinalMeta&&(m=T),!g&&"ordinal"!==T.type&&"time"!==T.type&&(!l||l===T.coordDim)&&(g=T))}),g&&!o&&!m&&(o=!0),g){v="__\0ecstackresult_"+r.id,y="__\0ecstackedover_"+r.id,m&&(m.createInvertedIndices=!0);var b=g.coordDim,x=g.type,C=0;U(c,function(T){T.coordDim===b&&C++});var S={name:v,coordDim:b,coordDimIndex:C,type:x,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:c.length},M={name:y,coordDim:y,coordDimIndex:C+1,type:x,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:c.length+1};u?(h&&(S.storeDimIndex=h.ensureCalculationDimension(y,x),M.storeDimIndex=h.ensureCalculationDimension(v,x)),u.appendCalculationDimension(S),u.appendCalculationDimension(M)):(c.push(S),c.push(M))}return{stackedDimension:g&&g.name,stackedByDimension:m&&m.name,isStackedByIndex:o,stackedOverDimension:y,stackResultDimension:v}}function Jc(r,n){return!!n&&n===r.getCalculationInfo("stackedDimension")}function $T(r,n){return Jc(r,n)?r.getCalculationInfo("stackResultDimension"):n}const ed=function YZ(r,n,t){t=t||{};var l,o=n.getSourceManager(),c=!1;r?(c=!0,l=vn(r)):c=(l=o.getSource()).sourceFormat===No;var u=function D_(r){var n=r.get("coordinateSystem"),t=new DF(n),o=fU[n];if(o)return o(r,t,t.axisMap,t.categoryAxisMap),t}(n),h=function lm(r,n){var l,t=r.get("coordinateSystem"),o=Zl.get(t);return n&&n.coordSysDims&&(l=xe(n.coordSysDims,function(c){var u={name:c},h=n.axisMap.get(c);if(h){var p=h.get("type");u.type=zT(p)}return u})),l||(l=o&&(o.getDimensionsInfo?o.getDimensionsInfo():o.dimensions.slice())||["x","y"]),l}(n,u),p=t.useEncodeDefaulter,m=qe(p)?p:p?vt(bO,h,n):null,v=om(l,{coordDimensions:h,generateCoord:t.generateCoord,encodeDefine:n.getEncode(),encodeDefaulter:m,canOmitUnusedDimensions:!c}),y=function WZ(r,n,t){var o,l;return t&&U(r,function(c,u){var p=t.categoryAxisMap.get(c.coordDim);p&&(null==o&&(o=u),c.ordinalMeta=p.getOrdinalMeta(),n&&(c.createInvertedIndices=!0)),null!=c.otherDims.itemName&&(l=!0)}),!l&&null!=o&&(r[o].otherDims.itemName=0),o}(v.dimensions,t.createInvertedIndices,u),b=c?null:o.getSharedDataStore(v),x=pU(n,{schema:v,store:b}),C=new ga(v,n);C.setCalculationInfo(x);var S=null!=y&&function qZ(r){if(r.sourceFormat===No){var n=function XZ(r){for(var n=0;nt[1]&&(t[1]=n[1])},r.prototype.unionExtentFromData=function(n,t){this.unionExtent(n.getApproximateExtent(t))},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.setExtent=function(n,t){var o=this._extent;isNaN(n)||(o[0]=n),isNaN(t)||(o[1]=t)},r.prototype.isInExtentRange=function(n){return this._extent[0]<=n&&this._extent[1]>=n},r.prototype.isBlank=function(){return this._isBlank},r.prototype.setBlank=function(n){this._isBlank=n},r}();mv(MF);const hu=MF;var ZZ=0,KZ=function(){function r(n){this.categories=n.categories||[],this._needCollect=n.needCollect,this._deduplication=n.deduplication,this.uid=++ZZ}return r.createByAxisModel=function(n){var t=n.option,o=t.data,l=o&&xe(o,QZ);return new r({categories:l,needCollect:!l,deduplication:!1!==t.dedplication})},r.prototype.getOrdinal=function(n){return this._getOrCreateMap().get(n)},r.prototype.parseAndCollect=function(n){var t,o=this._needCollect;if(!Le(n)&&!o)return n;if(o&&!this._deduplication)return this.categories[t=this.categories.length]=n,t;var l=this._getOrCreateMap();return null==(t=l.get(n))&&(o?(this.categories[t=this.categories.length]=n,l.set(n,t)):t=NaN),t},r.prototype._getOrCreateMap=function(){return this._map||(this._map=$e(this.categories))},r}();function QZ(r){return ze(r)&&null!=r.value?r.value:r+""}const TF=KZ;function M_(r){return"interval"===r.type||"log"===r.type}function WT(r){var n=Math.pow(10,co(r)),t=r/n;return t?2===t?t=3:3===t?t=5:t*=2:t=1,ai(t*n)}function AF(r){return ps(r)+2}function bt(r,n,t){r[n]=Math.max(Math.min(r[n],t[1]),t[0])}function ix(r,n){return r>=n[0]&&r<=n[1]}function rx(r,n){return n[1]===n[0]?.5:(r-n[0])/(n[1]-n[0])}function T_(r,n){return r*(n[1]-n[0])+n[0]}var qT=function(r){function n(t){var o=r.call(this,t)||this;o.type="ordinal";var l=o.getSetting("ordinalMeta");return l||(l=new TF({})),be(l)&&(l=new TF({categories:xe(l,function(c){return ze(c)?c.value:c})})),o._ordinalMeta=l,o._extent=o.getSetting("extent")||[0,l.categories.length-1],o}return le(n,r),n.prototype.parse=function(t){return null==t?NaN:Le(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},n.prototype.contain=function(t){return ix(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},n.prototype.normalize=function(t){return rx(t=this._getTickNumber(this.parse(t)),this._extent)},n.prototype.scale=function(t){return t=Math.round(T_(t,this._extent)),this.getRawOrdinalNumber(t)},n.prototype.getTicks=function(){for(var t=[],o=this._extent,l=o[0];l<=o[1];)t.push({value:l}),l++;return t},n.prototype.getMinorTicks=function(t){},n.prototype.setSortInfo=function(t){if(null!=t){for(var o=t.ordinalNumbers,l=this._ordinalNumbersByTick=[],c=this._ticksByOrdinalNumber=[],u=0,h=this._ordinalMeta.categories.length,p=Math.min(h,o.length);u=0&&t=0&&t=t},n.prototype.getOrdinalMeta=function(){return this._ordinalMeta},n.prototype.calcNiceTicks=function(){},n.prototype.calcNiceExtent=function(){},n.type="ordinal",n}(hu);hu.registerClass(qT);const XT=qT;var td=ai,ZT=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="interval",t._interval=0,t._intervalPrecision=2,t}return le(n,r),n.prototype.parse=function(t){return t},n.prototype.contain=function(t){return ix(t,this._extent)},n.prototype.normalize=function(t){return rx(t,this._extent)},n.prototype.scale=function(t){return T_(t,this._extent)},n.prototype.setExtent=function(t,o){var l=this._extent;isNaN(t)||(l[0]=parseFloat(t)),isNaN(o)||(l[1]=parseFloat(o))},n.prototype.unionExtent=function(t){var o=this._extent;t[0]o[1]&&(o[1]=t[1]),this.setExtent(o[0],o[1])},n.prototype.getInterval=function(){return this._interval},n.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=AF(t)},n.prototype.getTicks=function(t){var o=this._interval,l=this._extent,c=this._niceExtent,u=this._intervalPrecision,h=[];if(!o)return h;l[0]1e4)return[];var g=h.length?h[h.length-1].value:c[1];return l[1]>g&&h.push(t?{value:td(g+o,u)}:{value:l[1]}),h},n.prototype.getMinorTicks=function(t){for(var o=this.getTicks(!0),l=[],c=this.getExtent(),u=1;uc[0]&&bo&&(u=l.interval=o);var h=l.intervalPrecision=AF(u);return function YT(r,n){!isFinite(r[0])&&(r[0]=n[0]),!isFinite(r[1])&&(r[1]=n[1]),bt(r,0,n),bt(r,1,n),r[0]>r[1]&&(r[0]=r[1])}(l.niceTickExtent=[ai(Math.ceil(r[0]/u)*u,h),ai(Math.floor(r[1]/u)*u,h)],r),l}(c,t,o,l);this._intervalPrecision=h.intervalPrecision,this._interval=h.interval,this._niceExtent=h.niceTickExtent}},n.prototype.calcNiceExtent=function(t){var o=this._extent;if(o[0]===o[1])if(0!==o[0]){var l=Math.abs(o[0]);t.fixMax||(o[1]+=l/2),o[0]-=l/2}else o[1]=1;isFinite(o[1]-o[0])||(o[0]=0,o[1]=1),this.calcNiceTicks(t.splitNumber,t.minInterval,t.maxInterval);var u=this._interval;t.fixMin||(o[0]=td(Math.floor(o[0]/u)*u)),t.fixMax||(o[1]=td(Math.ceil(o[1]/u)*u))},n.prototype.setNiceExtent=function(t,o){this._niceExtent=[t,o]},n.type="interval",n}(hu);hu.registerClass(ZT);const Fa=ZT;var fu=typeof Float32Array<"u",kF=fu?Float32Array:Array;function cl(r){return be(r)?fu?new Float32Array(r):r:new kF(r)}var KT="__ec_stack_";function uf(r){return r.get("stack")||KT+r.seriesIndex}function QT(r){return r.dim+r.index}function JT(r,n){var t=[];return n.eachSeriesByType(r,function(o){Li(o)&&t.push(o)}),t}function eA(r){var n=function gU(r){var n={};U(r,function(p){var g=p.coordinateSystem.getBaseAxis();if("time"===g.type||"value"===g.type)for(var v=p.getData(),y=g.dim+"_"+g.index,b=v.getDimensionIndex(v.mapDimension(g.dim)),x=v.getStore(),C=0,S=x.count();C0&&(c=null===c?h:Math.min(c,h))}t[o]=c}}return t}(r),t=[];return U(r,function(o){var h,c=o.coordinateSystem.getBaseAxis(),u=c.getExtent();if("category"===c.type)h=c.getBandWidth();else if("value"===c.type||"time"===c.type){var m=n[c.dim+"_"+c.index],g=Math.abs(u[1]-u[0]),v=c.scale.getExtent(),y=Math.abs(v[1]-v[0]);h=m?g/y*m:g}else{var b=o.getData();h=Math.abs(u[1]-u[0])/b.count()}var x=Ie(o.get("barWidth"),h),C=Ie(o.get("barMaxWidth"),h),S=Ie(o.get("barMinWidth")||(Pt(o)?.5:1),h),M=o.get("barGap"),T=o.get("barCategoryGap");t.push({bandWidth:h,barWidth:x,barMaxWidth:C,barMinWidth:S,barGap:M,barCategoryGap:T,axisKey:QT(c),stackId:uf(o)})}),Ka(t)}function Ka(r){var n={};U(r,function(o,l){var c=o.axisKey,u=o.bandWidth,h=n[c]||{bandWidth:u,remainedWidth:u,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},p=h.stacks;n[c]=h;var m=o.stackId;p[m]||h.autoWidthCount++,p[m]=p[m]||{width:0,maxWidth:0};var g=o.barWidth;g&&!p[m].width&&(p[m].width=g,g=Math.min(h.remainedWidth,g),h.remainedWidth-=g);var v=o.barMaxWidth;v&&(p[m].maxWidth=v);var y=o.barMinWidth;y&&(p[m].minWidth=y);var b=o.barGap;null!=b&&(h.gap=b);var x=o.barCategoryGap;null!=x&&(h.categoryGap=x)});var t={};return U(n,function(o,l){t[l]={};var c=o.stacks,u=o.bandWidth,h=o.categoryGap;if(null==h){var p=Yt(c).length;h=Math.max(35-4*p,15)+"%"}var m=Ie(h,u),g=Ie(o.gap,1),v=o.remainedWidth,y=o.autoWidthCount,b=(v-m)/(y+(y-1)*g);b=Math.max(b,0),U(c,function(M){var T=M.maxWidth,A=M.minWidth;if(M.width){var E=M.width;T&&(E=Math.min(E,T)),A&&(E=Math.max(E,A)),M.width=E,v-=E+g*E,y--}else E=b,T&&TE&&(E=A),E!==b&&(M.width=E,v-=E+g*E,y--)}),b=(v-m)/(y+(y-1)*g),b=Math.max(b,0);var C,x=0;U(c,function(M,T){M.width||(M.width=b),C=M,x+=M.width*(1+g)}),C&&(x-=C.width*g);var S=-x/2;U(c,function(M,T){t[l][T]=t[l][T]||{bandWidth:u,offset:S,width:M.width},S+=M.width*(1+g)})}),t}function Zi(r,n){var t=JT(r,n),o=eA(t);U(t,function(l){var c=l.getData(),h=l.coordinateSystem.getBaseAxis(),p=uf(l),m=o[QT(h)][p];c.setLayout({bandWidth:m.bandWidth,offset:m.offset,size:m.width})})}function bn(r){return{seriesType:r,plan:Wh(),reset:function(n){if(Li(n)){var t=n.getData(),o=n.coordinateSystem,l=o.getBaseAxis(),c=o.getOtherAxis(l),u=t.getDimensionIndex(t.mapDimension(c.dim)),h=t.getDimensionIndex(t.mapDimension(l.dim)),p=n.get("showBackground",!0),m=t.mapDimension(c.dim),g=t.getCalculationInfo("stackResultDimension"),v=Jc(t,m)&&!!t.getCalculationInfo("stackedOnSeries"),y=c.isHorizontal(),b=function JZ(r,n){return n.toGlobalCoord(n.dataToCoord("log"===n.type?1:0))}(0,c),x=Pt(n),C=n.get("barMinHeight")||0,S=g&&t.getDimensionIndex(g),M=t.getLayout("size"),T=t.getLayout("offset");return{progress:function(A,E){for(var $,L=A.count,R=x&&cl(3*L),B=x&&p&&cl(3*L),H=x&&cl(L),G=o.master.getRect(),j=y?G.width:G.height,X=E.getStore(),K=0;null!=($=A.next());){var ee=X.get(v?S:u,$),ne=X.get(h,$),ie=b,de=void 0;v&&(de=+ee-X.get(u,$));var ce=void 0,ve=void 0,De=void 0,Ae=void 0;if(y){var Ge=o.dataToPoint([ee,ne]);v&&(ie=o.dataToPoint([de,ne])[0]),ce=ie,ve=Ge[1]+T,De=Ge[0]-ie,Ae=M,Math.abs(De)0)for(var h=0;h=0;--h)if(p[m]){c=p[m];break}c=c||u.none}if(be(c)){var v=null==r.level?0:r.level>=0?r.level:c.length+r.level;c=c[v=Math.min(v,c.length-1)]}}return Oh(new Date(r.value),c,l,o)}(t,o,l,this.getSetting("locale"),c)},n.prototype.getTicks=function(){var o=this._extent,l=[];if(!this._interval)return l;l.push({value:o[0],level:0});var c=this.getSetting("useUTC"),u=function Is(r,n,t,o){var c=tM,u=0;function h(j,$,X,K,ee,ne,ie){for(var de=new Date($),ce=$,ve=de[K]();ce1&&0===ne&&X.unshift({value:X[0].value-ce})}}for(ne=0;ne=o[0]&&T<=o[1]&&v++)}var A=(o[1]-o[0])/n;if(v>1.5*A&&y>A/1.5||(m.push(S),v>A||r===c[b]))break}g=[]}}var E=Dn(xe(m,function(j){return Dn(j,function($){return $.value>=o[0]&&$.value<=o[1]&&!$.notAdd})}),function(j){return j.length>0}),L=[],R=E.length-1;for(b=0;bl&&(this._approxInterval=l);var h=ax.length,p=Math.min(function(r,n,t,o){for(;t>>1;r[l][1]16?16:r>7.5?7:r>3.5?4:r>1.5?2:1}function eK(r){return(r/=2592e6)>6?6:r>3?3:r>2?2:1}function tK(r){return(r/=z0)>12?12:r>6?6:r>3.5?4:r>2?2:1}function A_(r,n){return(r/=n?6e4:1e3)>30?30:r>20?20:r>15?15:r>10?10:r>5?5:r>2?2:1}function ox(r){return aD(r,!0)}function sx(r,n,t){var o=new Date(r);switch(Lp(n)){case"year":case"month":o[nM(t)](0);case"day":o[dO(t)](1);case"hour":o[iM(t)](0);case"minute":o[rM(t)](0);case"second":o[uO(t)](0),o[hO(t)](0)}return o.getTime()}hu.registerClass(EF);const lx=EF;var bU=hu.prototype,cx=Fa.prototype,nK=ai,wU=Math.floor,xU=Math.ceil,k_=Math.pow,dl=Math.log,tA=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="log",t.base=10,t._originalScale=new Fa,t._interval=0,t}return le(n,r),n.prototype.getTicks=function(t){var l=this._extent,c=this._originalScale.getExtent();return xe(cx.getTicks.call(this,t),function(h){var p=h.value,m=ai(k_(this.base,p));return m=p===l[0]&&this._fixMin?Qa(m,c[0]):m,{value:m=p===l[1]&&this._fixMax?Qa(m,c[1]):m}},this)},n.prototype.setExtent=function(t,o){var l=dl(this.base);t=dl(Math.max(0,t))/l,o=dl(Math.max(0,o))/l,cx.setExtent.call(this,t,o)},n.prototype.getExtent=function(){var t=this.base,o=bU.getExtent.call(this);o[0]=k_(t,o[0]),o[1]=k_(t,o[1]);var c=this._originalScale.getExtent();return this._fixMin&&(o[0]=Qa(o[0],c[0])),this._fixMax&&(o[1]=Qa(o[1],c[1])),o},n.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var o=this.base;t[0]=dl(t[0])/dl(o),t[1]=dl(t[1])/dl(o),bU.unionExtent.call(this,t)},n.prototype.unionExtentFromData=function(t,o){this.unionExtent(t.getApproximateExtent(o))},n.prototype.calcNiceTicks=function(t){t=t||10;var o=this._extent,l=o[1]-o[0];if(!(l===1/0||l<=0)){var c=rD(l);for(t/l*c<=.5&&(c*=10);!isNaN(c)&&Math.abs(c)<1&&Math.abs(c)>0;)c*=10;var h=[ai(xU(o[0]/c)*c),ai(wU(o[1]/c)*c)];this._interval=c,this._niceExtent=h}},n.prototype.calcNiceExtent=function(t){cx.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},n.prototype.parse=function(t){return t},n.prototype.contain=function(t){return ix(t=dl(t)/dl(this.base),this._extent)},n.prototype.normalize=function(t){return rx(t=dl(t)/dl(this.base),this._extent)},n.prototype.scale=function(t){return t=T_(t,this._extent),k_(this.base,t)},n.type="log",n}(hu),CU=tA.prototype;function Qa(r,n){return nK(r,ps(n))}CU.getMinorTicks=cx.getMinorTicks,CU.getLabel=cx.getLabel,hu.registerClass(tA);const nA=tA;var SU=function(){function r(n,t,o){this._prepareParams(n,t,o)}return r.prototype._prepareParams=function(n,t,o){o[1]0&&p>0&&!m&&(h=0),h<0&&p<0&&!g&&(p=0));var y=this._determinedMin,b=this._determinedMax;return null!=y&&(h=y,m=!0),null!=b&&(p=b,g=!0),{min:h,max:p,minFixed:m,maxFixed:g,isBlank:v}},r.prototype.modifyDataMinMax=function(n,t){this[MU[n]]=t},r.prototype.setDeterminedMinMax=function(n,t){this[DU[n]]=t},r.prototype.freeze=function(){this.frozen=!0},r}(),DU={min:"_determinedMin",max:"_determinedMax"},MU={min:"_dataMin",max:"_dataMax"};function IF(r,n,t){var o=r.rawExtentInfo;return o||(o=new SU(r,n,t),r.rawExtentInfo=o,o)}function pu(r,n){return null==n?null:th(n)?NaN:r.parse(n)}function PF(r,n){var t=r.type,o=IF(r,n,r.getExtent()).calculate();r.setBlank(o.isBlank);var l=o.min,c=o.max,u=n.ecModel;if(u&&"time"===t){var h=JT("bar",u),p=!1;if(U(h,function(v){p=p||v.getBaseAxis()===n.axis}),p){var m=eA(h),g=function Vr(r,n,t,o){var l=t.axis.getExtent(),c=l[1]-l[0],u=function yr(r,n,t){if(r&&n){var o=r[QT(n)];return null!=o&&null!=t?o[uf(t)]:o}}(o,t.axis);if(void 0===u)return{min:r,max:n};var h=1/0;U(u,function(b){h=Math.min(b.offset,h)});var p=-1/0;U(u,function(b){p=Math.max(b.offset+b.width,p)}),h=Math.abs(h),p=Math.abs(p);var m=h+p,g=n-r,y=g/(1-(h+p)/c)-g;return{min:r-=y*(h/m),max:n+=y*(p/m)}}(l,c,n,m);l=g.min,c=g.max}}return{extent:[l,c],fixMin:o.minFixed,fixMax:o.maxFixed}}function wt(r,n){var t=n,o=PF(r,t),l=o.extent,c=t.get("splitNumber");r instanceof nA&&(r.base=t.get("logBase"));var u=r.type,h=t.get("interval"),p="interval"===u||"time"===u;r.setExtent(l[0],l[1]),r.calcNiceExtent({splitNumber:c,fixMin:o.fixMin,fixMax:o.fixMax,minInterval:p?t.get("minInterval"):null,maxInterval:p?t.get("maxInterval"):null}),null!=h&&r.setInterval&&r.setInterval(h)}function Kt(r,n){if(n=n||r.get("type"))switch(n){case"category":return new XT({ordinalMeta:r.getOrdinalMeta?r.getOrdinalMeta():r.getCategories(),extent:[1/0,-1/0]});case"time":return new lx({locale:r.ecModel.getLocaleModel(),useUTC:r.ecModel.get("useUTC")});default:return new(hu.getClass(n)||Fa)}}function mu(r){var o,n=r.getLabelModel().get("formatter"),t="category"===r.type?r.scale.getExtent()[0]:null;return"time"===r.scale.type?(o=n,function(l,c){return r.scale.getFormattedLabel(l,c,o)}):Le(n)?function(o){return function(l){var c=r.scale.getLabel(l);return o.replace("{value}",c??"")}}(n):qe(n)?function(o){return function(l,c){return null!=t&&(c=l.value-t),o(ul(r,l),c,null!=l.level?{level:l.level}:null)}}(n):function(o){return r.scale.getLabel(o)}}function ul(r,n){return"category"===r.type?r.scale.getLabel(n):n.value}function hl(r,n){var t=n*Math.PI/180,o=r.width,l=r.height,c=o*Math.abs(Math.cos(t))+Math.abs(l*Math.sin(t)),u=o*Math.abs(Math.sin(t))+Math.abs(l*Math.cos(t));return new lt(r.x,r.y,c,u)}function iA(r){return r.get("interval")??"auto"}function ur(r){return"category"===r.type&&0===iA(r.getLabelModel())}function ux(r,n){var t={};return U(r.mapDimensionsAll(n),function(o){t[$T(r,o)]=!0}),Yt(t)}var cm=function(){function r(){}return r.prototype.getNeedCrossZero=function(){return!this.option.scale},r.prototype.getCoordSysModel=function(){},r}();function hx(r){return ed(null,r)}var AU={isDimensionStacked:Jc,enableDataStack:pU,getStackedDimension:$T};function fx(r,n){var t=n;n instanceof zn||(t=new zn(n));var o=Kt(t);return o.setExtent(r[0],r[1]),wt(o,t),o}function kU(r){Ii(r,cm)}function RF(r,n){return Xn(r,null,null,"normal"!==(n=n||{}).state)}function E_(r,n){return Math.abs(r-n)<1e-8}function nd(r,n,t){var o=0,l=r[0];if(!l)return!1;for(var c=1;cl&&(o=u,l=p)}if(o)return function IU(r){for(var n=0,t=0,o=0,l=r.length,c=r[l-1][0],u=r[l-1][1],h=0;h>1^-(1&h),p=p>>1^-(1&p),l=h+=l,c=p+=c,o.push([h/t,p/t])}return o}function oA(r,n){return r=function mx(r){if(!r.UTF8Encoding)return r;var n=r,t=n.UTF8Scale;return null==t&&(t=1024),U(n.features,function(l){var c=l.geometry,u=c.encodeOffsets,h=c.coordinates;if(u)switch(c.type){case"LineString":c.coordinates=VF(h,u,t);break;case"Polygon":case"MultiLineString":hf(h,u,t);break;case"MultiPolygon":U(h,function(p,m){return hf(p,u[m],t)})}}),n.UTF8Encoding=!1,n}(r),xe(Dn(r.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var o=t.properties,l=t.geometry,c=[];switch(l.type){case"Polygon":var u=l.coordinates;c.push(new FF(u[0],u.slice(1)));break;case"MultiPolygon":U(l.coordinates,function(p){p[0]&&c.push(new FF(p[0],p.slice(1)))});break;case"LineString":c.push(new aA([l.coordinates]));break;case"MultiLineString":c.push(new aA(l.coordinates))}var h=new NF(o[n||"name"],c,o.cp);return h.properties=o,h})}function sA(r,n,t,o,l,c,u,h){return new dn({style:{text:r,font:n,align:t,verticalAlign:o,padding:l,rich:c,overflow:u?"truncate":null,lineHeight:h}}).getBoundingRect()}var dm=cn();function zF(r,n){var c,u,t=HF(r,"labels"),o=iA(n);return GF(t,o)||(qe(o)?c=LU(r,o):(u="auto"===o?function dA(r){return dm(r).autoInterval??(dm(r).autoInterval=r.calculateCategoryInterval())}(r):o,c=$F(r,u)),UF(t,o,{labels:c,labelCategoryInterval:u}))}function HF(r,n){return dm(r)[n]||(dm(r)[n]=[])}function GF(r,n){for(var t=0;t1&&g/p>2&&(m=Math.round(Math.ceil(m/p)*p));var v=ur(r),y=u.get("showMinLabel")||v,b=u.get("showMaxLabel")||v;y&&m!==c[0]&&C(c[0]);for(var x=m;x<=c[1];x+=p)C(x);function C(S){var M={value:S};h.push(t?S:{formattedLabel:o(M),rawLabel:l.getLabel(M),tickValue:S})}return b&&x-p!==c[1]&&C(c[1]),h}function LU(r,n,t){var o=r.scale,l=mu(r),c=[];return U(o.getTicks(),function(u){var h=o.getLabel(u),p=u.value;n(u.value,h)&&c.push(t?p:{formattedLabel:l(u),rawLabel:h,tickValue:p})}),c}var hA=[0,1],Ps=function(){function r(n,t,o){this.onBand=!1,this.inverse=!1,this.dim=n,this.scale=t,this._extent=o||[0,0]}return r.prototype.contain=function(n){var t=this._extent,o=Math.min(t[0],t[1]),l=Math.max(t[0],t[1]);return n>=o&&n<=l},r.prototype.containData=function(n){return this.scale.contain(n)},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.getPixelPrecision=function(n){return nD(n||this.scale.getExtent(),this._extent)},r.prototype.setExtent=function(n,t){var o=this._extent;o[0]=n,o[1]=t},r.prototype.dataToCoord=function(n,t){var o=this._extent,l=this.scale;return n=l.normalize(n),this.onBand&&"ordinal"===l.type&&WF(o=o.slice(),l.count()),Ut(n,hA,o,t)},r.prototype.coordToData=function(n,t){var o=this._extent,l=this.scale;this.onBand&&"ordinal"===l.type&&WF(o=o.slice(),l.count());var c=Ut(n,o,hA,t);return this.scale.scale(c)},r.prototype.pointToData=function(n,t){},r.prototype.getTicksCoords=function(n){var t=(n=n||{}).tickModel||this.getTickModel(),c=xe(function lA(r,n){return"category"===r.type?function OU(r,n){var c,u,t=HF(r,"ticks"),o=iA(n),l=GF(t,o);if(l)return l;if((!n.get("show")||r.scale.isBlank())&&(c=[]),qe(o))c=LU(r,o,!0);else if("auto"===o){var h=zF(r,r.getLabelModel());u=h.labelCategoryInterval,c=xe(h.labels,function(p){return p.tickValue})}else c=$F(r,u=o,!0);return UF(t,o,{ticks:c,tickCategoryInterval:u})}(r,n):{ticks:xe(r.scale.getTicks(),function(t){return t.value})}}(this,t).ticks,function(h){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(h):h),tickValue:h}},this);return function YF(r,n,t,o){var l=n.length;if(r.onBand&&!t&&l){var u,c=r.getExtent();if(1===l)n[0].coord=c[0],u=n[1]={coord:c[0]};else{var m=(n[l-1].coord-n[0].coord)/(n[l-1].tickValue-n[0].tickValue);U(n,function(b){b.coord-=m/2});var g=r.scale.getExtent();n.push(u={coord:n[l-1].coord+m*(1+g[1]-n[l-1].tickValue)})}var v=c[0]>c[1];y(n[0].coord,c[0])&&(o?n[0].coord=c[0]:n.shift()),o&&y(c[0],n[0].coord)&&n.unshift({coord:c[0]}),y(c[1],u.coord)&&(o?u.coord=c[1]:n.pop()),o&&y(u.coord,c[1])&&n.push({coord:c[1]})}function y(b,x){return b=ai(b),x=ai(x),v?b>x:b0&&t<100||(t=5),xe(this.scale.getMinorTicks(t),function(c){return xe(c,function(u){return{coord:this.dataToCoord(u),tickValue:u}},this)},this)},r.prototype.getViewLabels=function(){return function PU(r){return"category"===r.type?function RU(r){var n=r.getLabelModel(),t=zF(r,n);return!n.get("show")||r.scale.isBlank()?{labels:[],labelCategoryInterval:t.labelCategoryInterval}:t}(r):function cA(r){var n=r.scale.getTicks(),t=mu(r);return{labels:xe(n,function(o,l){return{level:o.level,formattedLabel:t(o,l),rawLabel:r.scale.getLabel(o),tickValue:o.value}})}}(r)}(this).labels},r.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},r.prototype.getTickModel=function(){return this.model.getModel("axisTick")},r.prototype.getBandWidth=function(){var n=this._extent,t=this.scale.getExtent(),o=t[1]-t[0]+(this.onBand?1:0);0===o&&(o=1);var l=Math.abs(n[1]-n[0]);return Math.abs(l)/o},r.prototype.calculateCategoryInterval=function(){return function uA(r){var n=function jF(r){var n=r.getLabelModel();return{axisRotate:r.getRotate?r.getRotate():r.isHorizontal&&!r.isHorizontal()?90:0,labelRotate:n.get("rotate")||0,font:n.getFont()}}(r),t=mu(r),o=(n.axisRotate-n.labelRotate)/180*Math.PI,l=r.scale,c=l.getExtent(),u=l.count();if(c[1]-c[0]<1)return 0;var h=1;u>40&&(h=Math.max(1,Math.floor(u/40)));for(var p=c[0],m=r.dataToCoord(p+1)-r.dataToCoord(p),g=Math.abs(m*Math.cos(o)),v=Math.abs(m*Math.sin(o)),y=0,b=0;p<=c[1];p+=h){var C,S=It(t({value:p}),n.font,"center","top");C=1.3*S.height,y=Math.max(y,1.3*S.width,7),b=Math.max(b,C,7)}var M=y/g,T=b/v;isNaN(M)&&(M=1/0),isNaN(T)&&(T=1/0);var A=Math.max(0,Math.floor(Math.min(M,T))),E=dm(r.model),L=r.getExtent(),R=E.lastAutoInterval,B=E.lastTickCount;return null!=R&&null!=B&&Math.abs(R-A)<=1&&Math.abs(B-u)<=1&&R>A&&E.axisExtent0===L[0]&&E.axisExtent1===L[1]?A=R:(E.lastTickCount=u,E.lastAutoInterval=A,E.axisExtent0=L[0],E.axisExtent1=L[1]),A}(this)},r}();function WF(r,n){var l=(r[1]-r[0])/n/2;r[0]+=l,r[1]-=l}const Go=Ps;function FU(r){var n=jt.extend(r);return jt.registerClass(n),n}function oi(r){var n=ui.extend(r);return ui.registerClass(n),n}function qF(r){var n=Zn.extend(r);return Zn.registerClass(n),n}function NU(r){var n=Nn.extend(r);return Nn.registerClass(n),n}var zt=2*Math.PI,ff=Hl.CMD,XF=["top","right","bottom","left"];function fA(r,n,t,o,l){var c=t.width,u=t.height;switch(r){case"top":o.set(t.x+c/2,t.y-n),l.set(0,-1);break;case"bottom":o.set(t.x+c/2,t.y+u+n),l.set(0,1);break;case"left":o.set(t.x-n,t.y+u/2),l.set(-1,0);break;case"right":o.set(t.x+c+n,t.y+u/2),l.set(1,0)}}function id(r,n,t,o,l,c,u,h,p){u-=r,h-=n;var m=Math.sqrt(u*u+h*h),g=(u/=m)*t+r,v=(h/=m)*t+n;if(Math.abs(o-l)%zt<1e-4)return p[0]=g,p[1]=v,m-t;if(c){var y=o;o=Ul(l),l=Ul(y)}else o=Ul(o),l=Ul(l);o>l&&(l+=zt);var b=Math.atan2(h,u);if(b<0&&(b+=zt),b>=o&&b<=l||b+zt>=o&&b+zt<=l)return p[0]=g,p[1]=v,m-t;var x=t*Math.cos(o)+r,C=t*Math.sin(o)+n,S=t*Math.cos(l)+r,M=t*Math.sin(l)+n,T=(x-u)*(x-u)+(C-h)*(C-h),A=(S-u)*(S-u)+(M-h)*(M-h);return T0){n=n/180*Math.PI,Rs.fromArray(r[0]),Wn.fromArray(r[1]),hr.fromArray(r[2]),it.sub(br,Rs,Wn),it.sub(lc,hr,Wn);var t=br.len(),o=lc.len();if(!(t<.001||o<.001)){br.scale(1/t),lc.scale(1/o);var l=br.dot(lc);if(Math.cos(n)1&&it.copy(Ja,hr),Ja.toArray(r[1])}}}}function VU(r,n,t){if(t<=180&&t>0){t=t/180*Math.PI,Rs.fromArray(r[0]),Wn.fromArray(r[1]),hr.fromArray(r[2]),it.sub(br,Wn,Rs),it.sub(lc,hr,Wn);var o=br.len(),l=lc.len();if(!(o<.001||l<.001)&&(br.scale(1/o),lc.scale(1/l),br.dot(n)=p)it.copy(Ja,hr);else{Ja.scaleAndAdd(lc,h/Math.tan(Math.PI/2-g));var v=hr.x!==Wn.x?(Ja.x-Wn.x)/(hr.x-Wn.x):(Ja.y-Wn.y)/(hr.y-Wn.y);if(isNaN(v))return;v<0?it.copy(Ja,Wn):v>1&&it.copy(Ja,hr)}Ja.toArray(r[1])}}}function QF(r,n,t,o){var l="normal"===t,c=l?r:r.ensureState(t);c.ignore=n;var u=o.get("smooth");u&&!0===u&&(u=.3),c.shape=c.shape||{},u>0&&(c.shape.smooth=u);var h=o.getModel("lineStyle").getLineStyle();l?r.useStyle(h):c.style=h}function zU(r,n){var t=n.smooth,o=n.points;if(o)if(r.moveTo(o[0][0],o[0][1]),t>0&&o.length>=3){var l=Tc(o[0],o[1]),c=Tc(o[1],o[2]);if(!l||!c)return r.lineTo(o[1][0],o[1][1]),void r.lineTo(o[2][0],o[2][1]);var u=Math.min(l,c)*t,h=Ca([],o[1],o[0],u/l),p=Ca([],o[1],o[2],u/c),m=Ca([],h,p,.5);r.bezierCurveTo(h[0],h[1],h[0],h[1],m[0],m[1]),r.bezierCurveTo(p[0],p[1],p[0],p[1],o[2][0],o[2][1])}else for(var g=1;g0&&c&&R(-v/u,0,u);var T,A,S=r[0],M=r[u-1];return E(),T<0&&B(-T,.8),A<0&&B(A,.8),E(),L(T,A,1),L(A,T,-1),E(),T<0&&H(-T),A<0&&H(A),m}function E(){T=S.rect[n]-o,A=l-M.rect[n]-M.rect[t]}function L(G,j,$){if(G<0){var X=Math.min(j,-G);if(X>0){R(X*$,0,u);var K=X+G;K<0&&B(-K*$,1)}else B(-G*$,1)}}function R(G,j,$){0!==G&&(m=!0);for(var X=j;X<$;X++){var K=r[X];K.rect[n]+=G,K.label[n]+=G}}function B(G,j){for(var $=[],X=0,K=1;K0)for(K=0;K0;K--)R(-$[K-1]*ie,K,u)}}function H(G){var j=G<0?-1:1;G=Math.abs(G);for(var $=Math.ceil(G/(u-1)),X=0;X0?R($,0,X+1):R(-$,u-X-1,u),(G-=$)<=0)return}}function tN(r,n,t,o){return eN(r,"y","height",n,t,o)}function nN(r){var n=[];r.sort(function(C,S){return S.priority-C.priority});var t=new lt(0,0,0,0);function o(C){if(!C.ignore){var S=C.ensureState("emphasis");null==S.ignore&&(S.ignore=!1)}C.ignore=!0}for(var l=0;l=0&&o.attr(c.oldLayoutSelect),Mt(y,"emphasis")>=0&&o.attr(c.oldLayoutEmphasis)),un(o,m,t,p)}else if(o.attr(m),!Pp(o).valueAnimation){var v=Dt(o.style.opacity,1);o.style.opacity=0,di(o,{style:{opacity:v}},t,p)}if(c.oldLayout=m,o.states.select){var b=c.oldLayoutSelect={};yx(b,m,bx),yx(b,o.states.select,bx)}if(o.states.emphasis){var x=c.oldLayoutEmphasis={};yx(x,m,bx),yx(x,o.states.emphasis,bx)}J2(o,p,g,t,t)}if(l&&!l.ignore&&!l.invisible){var c=jU(l),C={points:l.shape.points};(u=c.oldLayout)?(l.attr({shape:u}),un(l,{shape:C},t)):(l.setShape(C),l.style.strokePercent=0,di(l,{style:{strokePercent:1}},t)),c.oldLayout=C}},r}();const _A=vA;var rN=cn();function $U(r){r.registerUpdateLifecycle("series:beforeupdate",function(n,t,o){var l=rN(t).labelManager;l||(l=rN(t).labelManager=new _A),l.clearLabels()}),r.registerUpdateLifecycle("series:layoutlabels",function(n,t,o){var l=rN(t).labelManager;o.updatedSeries.forEach(function(c){l.addLabelsOfSeries(t.getViewOfSeriesModel(c))}),l.updateLayoutConfig(t),l.layout(t),l.processLabelsOverall()})}function zr(r,n,t){var o=$s.createCanvas(),l=n.getWidth(),c=n.getHeight(),u=o.style;return u&&(u.position="absolute",u.left="0",u.top="0",u.width=l+"px",u.height=c+"px",o.setAttribute("data-zr-dom-id",r)),o.width=l*t,o.height=c*t,o}Nt($U);var aN=function(r){function n(t,o,l){var u,c=r.call(this)||this;c.motionBlur=!1,c.lastFrameAlpha=.7,c.dpr=1,c.virtual=!1,c.config={},c.incremental=!1,c.zlevel=0,c.maxRepaintRectCount=5,c.__dirty=!0,c.__firstTimePaint=!0,c.__used=!1,c.__drawIndex=0,c.__startIndex=0,c.__endIndex=0,c.__prevStartIndex=null,c.__prevEndIndex=null,l=l||Kb,"string"==typeof t?u=zr(t,o,l):ze(t)&&(t=(u=t).id),c.id=t,c.dom=u;var h=u.style;return h&&(ii(u),u.onselectstart=function(){return!1},h.padding="0",h.margin="0",h.borderWidth="0"),c.painter=o,c.dpr=l,c}return qn(n,r),n.prototype.getElementCount=function(){return this.__endIndex-this.__startIndex},n.prototype.afterBrush=function(){this.__prevStartIndex=this.__startIndex,this.__prevEndIndex=this.__endIndex},n.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},n.prototype.setUnpainted=function(){this.__firstTimePaint=!0},n.prototype.createBackBuffer=function(){var t=this.dpr;this.domBack=zr("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},n.prototype.createRepaintRects=function(t,o,l,c){if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;var S,u=[],h=this.maxRepaintRectCount,p=!1,m=new lt(0,0,0,0);function g(T){if(T.isFinite()&&!T.isZero())if(0===u.length)(A=new lt(0,0,0,0)).copy(T),u.push(A);else{for(var E=!1,L=1/0,R=0,B=0;B=h)}}for(var v=this.__startIndex;v15)break}ee.prevElClipPaths&&M.restore()};if(T)if(0===T.length)H=S.__endIndex;else for(var j=b.dpr,$=0;$0&&n>l[0]){for(p=0;pn);p++);h=o[l[p]]}if(l.splice(p+1,0,n),o[n]=t,!t.virtual)if(h){var m=h.dom;m.nextSibling?u.insertBefore(t.dom,m.nextSibling):u.appendChild(t.dom)}else u.firstChild?u.insertBefore(t.dom,u.firstChild):u.appendChild(t.dom);t.__painter=this}},r.prototype.eachLayer=function(n,t){for(var o=this._zlevelList,l=0;l0?.01:0),this._needsManuallyCompositing),g.__builtin__||mS("ZLevel "+m+" has been used by unkown layer "+g.id),g!==c&&(g.__used=!0,g.__startIndex!==p&&(g.__dirty=!0),g.__startIndex=p,g.__drawIndex=g.incremental?-1:p,t(p),c=g),1&l.__dirty&&!l.__inHover&&(g.__dirty=!0,g.incremental&&g.__drawIndex<0&&(g.__drawIndex=p))}t(p),this.eachBuiltinLayer(function(v,y){!v.__used&&v.getElementCount()>0&&(v.__dirty=!0,v.__startIndex=v.__endIndex=v.__drawIndex=0),v.__dirty&&v.__drawIndex<0&&(v.__drawIndex=v.__startIndex)})},r.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},r.prototype._clearLayer=function(n){n.clear()},r.prototype.setBackgroundColor=function(n){this._backgroundColor=n,U(this._layers,function(t){t.setUnpainted()})},r.prototype.configLayer=function(n,t){if(t){var o=this._layerConfig;o[n]?St(o[n],t,!0):o[n]=t;for(var l=0;l=gu:-m>=gu),b=m>0?m%gu:m%gu+gu;x=!!y||!Pl(v)&&b>=qU==!!g;var C=n+o*bA(u),S=t+l*Cx(u);this._start&&this._add("M",C,S);var M=Math.round(c*sK);if(y){var T=1/this._p,A=(g?1:-1)*(gu-T);this._add("A",o,l,M,1,+g,n+o*bA(u+A),t+l*Cx(u+A)),T>.01&&this._add("A",o,l,M,0,+g,C,S)}else{var E=n+o*bA(h),L=t+l*Cx(h);this._add("A",o,l,M,+x,+g,E,L)}},r.prototype.rect=function(n,t,o,l){this._add("M",n,t),this._add("l",o,0),this._add("l",0,l),this._add("l",-o,0),this._add("Z")},r.prototype.closePath=function(){this._d.length>0&&this._add("Z")},r.prototype._add=function(n,t,o,l,c,u,h,p,m){for(var g=[],v=this._p,y=1;y"}(u,l.attrs)+aa(l.text)+(c?""+t+xe(c,function(p){return o(p)}).join(t)+t:"")+function n6(r){return""}(u)}(r)}function SA(r){return{zrId:r,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssClassIdx:0,cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function r6(r,n,t,o){return Hr("svg","root",{width:r,height:n,xmlns:lN,"xmlns:xlink":JU,version:"1.1",baseProfile:"full",viewBox:!!o&&"0 0 "+r+" "+n},t)}var dN={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},mf="transform-origin";function a6(r,n,t){var o=ge({},r.shape);ge(o,n),r.buildPath(t,o);var l=new XU;return l.reset($b(r)),t.rebuildPath(l,1),l.generateStr(),l.getStr()}function o6(r,n){var t=n.originX,o=n.originY;(t||o)&&(r[mf]=t+"px "+o+"px")}var cK={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function uN(r,n){var t=n.zrId+"-ani-"+n.cssAnimIdx++;return n.cssAnims[t]=r,t}function s6(r){return Le(r)?dN[r]?"cubic-bezier("+dN[r]+")":BS(r)?r:"":""}function DA(r,n,t,o){var l=r.animators,c=l.length,u=[];if(r instanceof _w){var h=function Gr(r,n,t){var c,u,l={};if(U(r.shape.paths,function(p){var m=SA(t.zrId);m.animation=!0,DA(p,{},m,!0);var g=m.cssAnims,v=m.cssNodes,y=Yt(g),b=y.length;if(b){var x=g[u=y[b-1]];for(var C in x){var S=x[C];l[C]=l[C]||{d:""},l[C].d+=S.d||""}for(var M in v){var T=v[M].animation;T.indexOf(u)>=0&&(c=T)}}}),c){n.d=!1;var h=uN(l,t);return c.replace(u,h)}}(r,n,t);if(h)u.push(h);else if(!c)return}else if(!c)return;for(var p={},m=0;m0}).length)return uN(B,t)+" "+T[0]+" both"}for(var S in p)(h=C(p[S]))&&u.push(h);if(u.length){var M=t.zrId+"-cls-"+t.cssClassIdx++;t.cssNodes["."+M]={animation:u.join(",")},n.class=M}}var Dx=Math.round;function l6(r){return r&&Le(r.src)}function c6(r){return r&&qe(r.toDataURL)}function hN(r,n,t,o){(function QU(r,n,t,o){var l=null==n.opacity?1:n.opacity;if(t instanceof la)r("opacity",l);else{if(function KU(r){var n=r.fill;return null!=n&&n!==I_}(n)){var c=Rc(n.fill);r("fill",c.color);var u=null!=n.fillOpacity?n.fillOpacity*c.opacity*l:c.opacity*l;(o||u<1)&&r("fill-opacity",u)}else r("fill",I_);if(function sN(r){var n=r.stroke;return null!=n&&n!==I_}(n)){var h=Rc(n.stroke);r("stroke",h.color);var p=n.strokeNoScale?t.getLineScale():1,m=p?(n.lineWidth||0)/p:0,g=null!=n.strokeOpacity?n.strokeOpacity*h.opacity*l:h.opacity*l,v=n.strokeFirst;if((o||1!==m)&&r("stroke-width",m),(o||v)&&r("paint-order",v?"stroke":"fill"),(o||g<1)&&r("stroke-opacity",g),n.lineDash){var y=Nr(t),b=y[0],x=y[1];b&&(x=ZU(x||0),r("stroke-dasharray",b.join(",")),(x||o)&&r("stroke-dashoffset",x))}else o&&r("stroke-dasharray",I_);for(var C=0;C"u"){var S="Image width/height must been given explictly in svg-ssr renderer.";xa(y,S),xa(b,S)}else if(null==y||null==b){var M=function(j,$){if(j){var X=j.elm,K=y||$.width,ee=b||$.height;"pattern"===j.tag&&(m?(ee=1,K/=c.width):g&&(K=1,ee/=c.height)),j.attrs.width=K,j.attrs.height=ee,X&&(X.setAttribute("width",K),X.setAttribute("height",ee))}},T=dD(x,null,r,function(j){p||M(R,j),M(v,j)});T&&T.width&&T.height&&(y=y||T.width,b=b||T.height)}v=Hr("image","img",{href:x,width:y,height:b}),u.width=y,u.height=b}else l.svgElement&&(v=rt(l.svgElement),u.width=l.svgWidth,u.height=l.svgHeight);if(v){var A,E;p?A=E=1:m?(E=1,A=u.width/c.width):g?(A=1,E=u.height/c.height):u.patternUnits="userSpaceOnUse",null!=A&&!isNaN(A)&&(u.width=A),null!=E&&!isNaN(E)&&(u.height=E);var L=LR(l);L&&(u.patternTransform=L);var R=Hr("pattern","",u,[v]),B=CA(R),H=o.patternCache,G=H[B];G||(G=o.zrId+"-p"+o.patternIdx++,H[B]=G,u.id=G,R=o.defs[G]=Hr("pattern",G,u,[v])),n[t]=nv(G)}}function m6(r,n,t){var o=t.clipPathCache,l=t.defs,c=o[r.id];if(!c){var u={id:c=t.zrId+"-c"+t.clipPathIdx++};o[r.id]=c,l[c]=Hr("clipPath",c,u,[um(r,t)])}n["clip-path"]=nv(c)}function kA(r){return document.createTextNode(r)}function hm(r,n,t){r.insertBefore(n,t)}function g6(r,n){r.removeChild(n)}function v6(r,n){r.appendChild(n)}function _6(r){return r.parentNode}function y6(r){return r.nextSibling}function gN(r,n){r.textContent=n}var pK=Hr("","");function _N(r){return void 0===r}function rd(r){return void 0!==r}function mK(r,n,t){for(var o={},l=n;l<=t;++l){var c=r[l].key;void 0!==c&&(o[c]=l)}return o}function Mx(r,n){return r.tag===n.tag&&r.key===n.key}function Tx(r){var n,t=r.children,o=r.tag;if(rd(o)){var l=r.elm=cN(o);if(IA(pK,r),be(t))for(n=0;nc?w6(r,null==t[p+1]?null:t[p+1].elm,t,l,p):EA(r,n,o,c))}(t,o,l):rd(l)?(rd(r.text)&&gN(t,""),w6(t,null,l,0,l.length-1)):rd(o)?EA(t,o,0,o.length-1):rd(r.text)&&gN(t,""):r.text!==n.text&&(rd(o)&&EA(t,o,0,o.length-1),gN(t,n.text)))}var Ax=0,C6=function(){function r(n,t,o){if(this.type="svg",this.refreshHover=function(){},this.configLayer=function(){},this.storage=t,this._opts=o=ge({},o),this.root=n,this._id="zr"+Ax++,this._oldVNode=r6(o.width,o.height),n&&!o.ssr){var l=this._viewport=document.createElement("div");l.style.cssText="position:relative;overflow:hidden";var c=this._svgDom=this._oldVNode.elm=cN("svg");IA(null,this._oldVNode),l.appendChild(c),n.appendChild(l)}this.resize(o.width,o.height)}return r.prototype.getType=function(){return this.type},r.prototype.getViewportRoot=function(){return this._viewport},r.prototype.getViewportRootOffset=function(){var n=this.getViewportRoot();if(n)return{offsetLeft:n.offsetLeft||0,offsetTop:n.offsetTop||0}},r.prototype.getSvgDom=function(){return this._svgDom},r.prototype.refresh=function(){if(this.root){var n=this.renderToVNode({willUpdate:!0});n.attrs.style="position:absolute;left:0;top:0;user-select:none",function x6(r,n){if(Mx(r,n))cc(r,n);else{var t=r.elm,o=_6(t);Tx(n),null!==o&&(hm(o,n.elm,y6(t)),EA(o,[r],0,0))}}(this._oldVNode,n),this._oldVNode=n}},r.prototype.renderOneToVNode=function(n){return AA(n,SA(this._id))},r.prototype.renderToVNode=function(n){n=n||{};var t=this.storage.getDisplayList(!0),o=this._width,l=this._height,c=SA(this._id);c.animation=n.animation,c.willUpdate=n.willUpdate,c.compress=n.compress;var u=[],h=this._bgVNode=function S6(r,n,t,o){var l;if(t&&"none"!==t)if(l=Hr("rect","bg",{width:r,height:n,x:"0",y:"0",id:"0"}),jb(t))f6({fill:t},l.attrs,"fill",o);else if(US(t))p6({style:{fill:t},dirty:zi,getBoundingRect:function(){return{width:r,height:n}}},l.attrs,"fill",o);else{var c=Rc(t),h=c.opacity;l.attrs.fill=c.color,h<1&&(l.attrs["fill-opacity"]=h)}return l}(o,l,this._backgroundColor,c);h&&u.push(h);var p=n.compress?null:this._mainVNode=Hr("g","main",{},[]);this._paintList(t,c,p?p.children:u),p&&u.push(p);var m=xe(Yt(c.defs),function(y){return c.defs[y]});if(m.length&&u.push(Hr("defs","defs",{},m)),n.animation){var g=function i6(r,n,t){var o=(t=t||{}).newline?"\n":"",l=" {"+o,c=o+"}",u=xe(Yt(r),function(p){return p+l+xe(Yt(r[p]),function(m){return m+":"+r[p][m]+";"}).join(o)+c}).join(o),h=xe(Yt(n),function(p){return"@keyframes "+p+l+xe(Yt(n[p]),function(m){return m+l+xe(Yt(n[p][m]),function(g){var v=n[p][m][g];return"d"===g&&(v='path("'+v+'")'),g+":"+v+";"}).join(o)+c}).join(o)+c}).join(o);return u||h?[""].join(o):""}(c.cssNodes,c.cssAnims,{newline:!0});if(g){var v=Hr("style","stl",{},[],g);u.push(v)}}return r6(o,l,u,n.useViewBox)},r.prototype.renderToString=function(n){return CA(this.renderToVNode({animation:Dt((n=n||{}).cssAnimation,!0),willUpdate:!1,compress:!0,useViewBox:Dt(n.useViewBox,!0)}),{newline:!0})},r.prototype.setBackgroundColor=function(n){this._backgroundColor=n},r.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},r.prototype._paintList=function(n,t,o){for(var h,p,l=n.length,c=[],u=0,m=0,g=0;g=0&&(!y||!p||y[C]!==p[C]);C--);for(var S=x-1;S>C;S--)h=c[--u-1];for(var M=C+1;M-1&&(m.style.stroke=m.style.fill,m.style.fill="#fff",m.style.lineWidth=2),o},n.type="series.line",n.dependencies=["grid","polar"],n.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},n}(Zn);const kx=T6;function ad(r,n){var t=r.mapDimensionsAll("defaultedLabel"),o=t.length;if(1===o){var l=jh(r,n,t[0]);return null!=l?l+"":null}if(o){for(var c=[],u=0;u=0&&o.push(n[c])}return o.join(" ")}var yN=function(r){function n(t,o,l,c){var u=r.call(this)||this;return u.updateData(t,o,l,c),u}return le(n,r),n.prototype._createSymbol=function(t,o,l,c,u){this.removeAll();var h=Ui(t,-1,-1,2,2,null,u);h.attr({z2:100,culling:!0,scaleX:c[0]/2,scaleY:c[1]/2}),h.drift=P_,this._symbolType=t,this.add(h)},n.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},n.prototype.getSymbolType=function(){return this._symbolType},n.prototype.getSymbolPath=function(){return this.childAt(0)},n.prototype.highlight=function(){zc(this.childAt(0))},n.prototype.downplay=function(){ca(this.childAt(0))},n.prototype.setZ=function(t,o){var l=this.childAt(0);l.zlevel=t,l.z=o},n.prototype.setDraggable=function(t,o){var l=this.childAt(0);l.draggable=t,l.cursor=!o&&t?"move":l.cursor},n.prototype.updateData=function(t,o,l,c){this.silent=!1;var u=t.getItemVisual(o,"symbol")||"circle",h=t.hostModel,p=n.getSymbolSize(t,o),m=u!==this._symbolType,g=c&&c.disableAnimation;if(m){var v=t.getItemVisual(o,"symbolKeepAspect");this._createSymbol(u,t,o,p,v)}else{(y=this.childAt(0)).silent=!1;var b={scaleX:p[0]/2,scaleY:p[1]/2};g?y.attr(b):un(y,b,h,o),ws(y)}if(this._updateCommon(t,o,p,l,c),m){var y=this.childAt(0);g||(b={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:y.style.opacity}},y.scaleX=y.scaleY=0,y.style.opacity=0,di(y,b,h,o))}g&&this.childAt(0).stopAnimation("leave")},n.prototype._updateCommon=function(t,o,l,c,u){var m,g,v,y,b,x,C,S,M,h=this.childAt(0),p=t.hostModel;if(c&&(m=c.emphasisItemStyle,g=c.blurItemStyle,v=c.selectItemStyle,y=c.focus,b=c.blurScope,C=c.labelStatesModels,S=c.hoverScale,M=c.cursorStyle,x=c.emphasisDisabled),!c||t.hasItemOption){var T=c&&c.itemModel?c.itemModel:t.getItemModel(o),A=T.getModel("emphasis");m=A.getModel("itemStyle").getItemStyle(),v=T.getModel(["select","itemStyle"]).getItemStyle(),g=T.getModel(["blur","itemStyle"]).getItemStyle(),y=A.get("focus"),b=A.get("blurScope"),x=A.get("disabled"),C=Or(T),S=A.getShallow("scale"),M=T.getShallow("cursor")}var E=t.getItemVisual(o,"symbolRotate");h.attr("rotation",(E||0)*Math.PI/180||0);var L=Ee(t.getItemVisual(o,"symbolOffset"),l);L&&(h.x=L[0],h.y=L[1]),M&&h.attr("cursor",M);var R=t.getItemVisual(o,"style"),B=R.fill;if(h instanceof la){var H=h.style;h.useStyle(ge({image:H.image,x:H.x,y:H.y,width:H.width,height:H.height},R))}else h.useStyle(h.__isEmptyBrush?ge({},R):R),h.style.decal=null,h.setColor(B,u&&u.symbolInnerColor),h.style.strokeNoScale=!0;var G=t.getItemVisual(o,"liftZ"),j=this._z2;null!=G?null==j&&(this._z2=h.z2,h.z2+=G):null!=j&&(h.z2=j,this._z2=null);var $=u&&u.useNameLabel;Zr(h,C,{labelFetcher:p,labelDataIndex:o,defaultText:function X(ne){return $?t.getName(ne):ad(t,ne)},inheritColor:B,defaultOpacity:R.opacity}),this._sizeX=l[0]/2,this._sizeY=l[1]/2;var K=h.ensureState("emphasis");K.style=m,h.ensureState("select").style=v,h.ensureState("blur").style=g;var ee=null==S||!0===S?Math.max(1.1,3/this._sizeY):isFinite(S)&&S>0?+S:1;K.scaleX=this._sizeX*ee,K.scaleY=this._sizeY*ee,this.setSymbolScale(1),Ri(this,y,b,x)},n.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},n.prototype.fadeOut=function(t,o,l){var c=this.childAt(0),u=_t(this).dataIndex,h=l&&l.animation;if(this.silent=c.silent=!0,l&&l.fadeLabel){var p=c.getTextContent();p&&jd(p,{style:{opacity:0}},o,{dataIndex:u,removeOpt:h,cb:function(){c.removeTextContent()}})}else c.removeTextContent();jd(c,{style:{opacity:0},scaleX:0,scaleY:0},o,{dataIndex:u,cb:t,removeOpt:h})},n.getSymbolSize=function(t,o){return rf(t.getItemVisual(o,"symbolSize"))},n}(ct);function P_(r,n){this.parent.drift(r,n)}const fm=yN;function R_(r,n,t,o){return n&&!isNaN(n[0])&&!isNaN(n[1])&&!(o.isIgnore&&o.isIgnore(t))&&!(o.clipShape&&!o.clipShape.contain(n[0],n[1]))&&"none"!==r.getItemVisual(t,"symbol")}function Ex(r){return null!=r&&!ze(r)&&(r={isIgnore:r}),r||{}}function LA(r){var n=r.hostModel,t=n.getModel("emphasis");return{emphasisItemStyle:t.getModel("itemStyle").getItemStyle(),blurItemStyle:n.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:n.getModel(["select","itemStyle"]).getItemStyle(),focus:t.get("focus"),blurScope:t.get("blurScope"),emphasisDisabled:t.get("disabled"),hoverScale:t.get("scale"),labelStatesModels:Or(n),cursorStyle:n.get("cursor")}}var bN=function(){function r(n){this.group=new ct,this._SymbolCtor=n||fm}return r.prototype.updateData=function(n,t){this._progressiveEls=null,t=Ex(t);var o=this.group,l=n.hostModel,c=this._data,u=this._SymbolCtor,h=t.disableAnimation,p=LA(n),m={disableAnimation:h},g=t.getSymbolPoint||function(v){return n.getItemLayout(v)};c||o.removeAll(),n.diff(c).add(function(v){var y=g(v);if(R_(n,y,v,t)){var b=new u(n,v,p,m);b.setPosition(y),n.setItemGraphicEl(v,b),o.add(b)}}).update(function(v,y){var b=c.getItemGraphicEl(y),x=g(v);if(R_(n,x,v,t)){var C=n.getItemVisual(v,"symbol")||"circle",S=b&&b.getSymbolType&&b.getSymbolType();if(!b||S&&S!==C)o.remove(b),(b=new u(n,v,p,m)).setPosition(x);else{b.updateData(n,v,p,m);var M={x:x[0],y:x[1]};h?b.attr(M):un(b,M,l)}o.add(b),n.setItemGraphicEl(v,b)}else o.remove(b)}).remove(function(v){var y=c.getItemGraphicEl(v);y&&y.fadeOut(function(){o.remove(y)},l)}).execute(),this._getSymbolPoint=g,this._data=n},r.prototype.updateLayout=function(){var n=this,t=this._data;t&&t.eachItemGraphicEl(function(o,l){var c=n._getSymbolPoint(l);o.setPosition(c),o.markRedraw()})},r.prototype.incrementalPrepareUpdate=function(n){this._seriesScope=LA(n),this._data=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(n,t,o){function l(p){p.isGroup||(p.incremental=!0,p.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[],o=Ex(o);for(var c=n.start;c0?t=o[0]:o[1]<0&&(t=o[1]),t}(l,t),u=o.dim,h=l.dim,p=n.mapDimension(h),m=n.mapDimension(u),g="x"===h||"radius"===h?1:0,v=xe(r.dimensions,function(x){return n.mapDimension(x)}),y=!1,b=n.getCalculationInfo("stackResultDimension");return Jc(n,v[0])&&(y=!0,v[0]=b),Jc(n,v[1])&&(y=!0,v[1]=b),{dataDimsForPoint:v,valueStart:c,valueAxisDim:h,baseAxisDim:u,stacked:!!y,valueDim:p,baseDim:m,baseDataOffset:g,stackedOverDimension:n.getCalculationInfo("stackedOverDimension")}}function xN(r,n,t,o){var l=NaN;r.stacked&&(l=t.get(t.getCalculationInfo("stackedOverDimension"),o)),isNaN(l)&&(l=r.valueStart);var c=r.baseDataOffset,u=[];return u[c]=t.get(r.baseDim,o),u[1-c]=l,n.dataToPoint(u)}var fl=Math.min,dc=Math.max;function gf(r,n){return isNaN(r)||isNaN(n)}function Ix(r,n,t,o,l,c,u,h,p){for(var m,g,v,y,b,x,C=t,S=0;S=l||C<0)break;if(gf(M,T)){if(p){C+=c;continue}break}if(C===t)r[c>0?"moveTo":"lineTo"](M,T),v=M,y=T;else{var A=M-m,E=T-g;if(A*A+E*E<.5){C+=c;continue}if(u>0){for(var L=C+c,R=n[2*L],B=n[2*L+1];R===M&&B===T&&S=o||gf(R,B))b=M,x=T;else{j=R-m,$=B-g;var ee=M-m,ne=R-M,ie=T-g,de=B-T,ce=void 0,ve=void 0;if("x"===h){var De=j>0?1:-1;b=M-De*(ce=Math.abs(ee))*u,x=T,X=M+De*(ve=Math.abs(ne))*u,K=T}else if("y"===h){var Ae=$>0?1:-1;b=M,x=T-Ae*(ce=Math.abs(ie))*u,X=M,K=T+Ae*(ve=Math.abs(de))*u}else ce=Math.sqrt(ee*ee+ie*ie),b=M-j*u*(1-(G=(ve=Math.sqrt(ne*ne+de*de))/(ve+ce))),x=T-$*u*(1-G),K=T+$*u*G,X=fl(X=M+j*u*G,dc(R,M)),K=fl(K,dc(B,T)),X=dc(X,fl(R,M)),x=T-($=(K=dc(K,fl(B,T)))-T)*ce/ve,b=fl(b=M-(j=X-M)*ce/ve,dc(m,M)),x=fl(x,dc(g,T)),X=M+(j=M-(b=dc(b,fl(m,M))))*ve/ce,K=T+($=T-(x=dc(x,fl(g,T))))*ve/ce}r.bezierCurveTo(v,y,b,x,M,T),v=X,y=K}else r.lineTo(M,T)}m=M,g=T,C+=c}return S}var NA=function r(){this.smooth=0,this.smoothConstraint=!0},k6=function(r){function n(t){var o=r.call(this,t)||this;return o.type="ec-polyline",o}return le(n,r),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new NA},n.prototype.buildPath=function(t,o){var l=o.points,c=0,u=l.length/2;if(o.connectNulls){for(;u>0&&gf(l[2*u-2],l[2*u-1]);u--);for(;c=0){var E=m?(x-p)*A+p:(b-h)*A+h;return m?[t,E]:[E,t]}h=b,p=x;break;case u.C:b=c[v++],x=c[v++],C=c[v++],S=c[v++],M=c[v++],T=c[v++];var L=m?Kg(h,b,C,M,t,g):Kg(p,x,S,T,t,g);if(L>0)for(var R=0;R=0)return E=m?Yr(p,x,S,T,B):Yr(h,b,C,M,B),m?[t,E]:[E,t]}h=M,p=T}}},n}(Vt),E6=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n}(NA),SN=function(r){function n(t){var o=r.call(this,t)||this;return o.type="ec-polygon",o}return le(n,r),n.prototype.getDefaultShape=function(){return new E6},n.prototype.buildPath=function(t,o){var l=o.points,c=o.stackedOnPoints,u=0,h=l.length/2,p=o.smoothMonotone;if(o.connectNulls){for(;h>0&&gf(l[2*h-2],l[2*h-1]);h--);for(;uo)return!1;return!0}(c,n))){var u=n.mapDimension(c.dim),h={};return U(c.getViewLabels(),function(p){var m=c.scale.getRawOrdinalNumber(p.tickValue);h[m]=1}),function(p){return!h.hasOwnProperty(n.get(u,p))}}}}(t,p,u),j=this._data;j&&j.eachItemGraphicEl(function(fn,Ht){fn.__temp&&(h.remove(fn),j.setItemGraphicEl(Ht,null))}),B||x.remove(),h.add(M);var X,$=!y&&t.get("step");u&&u.getArea&&t.get("clip",!0)&&(null!=(X=u.getArea()).width?(X.x-=.1,X.y-=.1,X.width+=.2,X.height+=.2):X.r0&&(X.r0-=.5,X.r+=.5)),this._clipShapeForSymbol=X;var K=function O6(r,n,t){var o=r.getVisual("visualMeta");if(o&&o.length&&r.count()&&"cartesian2d"===n.type){for(var l,c,u=o.length-1;u>=0;u--){var h=r.getDimensionInfo(o[u].dimension);if("x"===(l=h&&h.coordDim)||"y"===l){c=o[u];break}}if(c){var p=n.getAxis(l),m=xe(c.stops,function(A){return{coord:p.toGlobalCoord(p.dataToCoord(A.value)),color:A.color}}),g=m.length,v=c.outerColors.slice();g&&m[0].coord>m[g-1].coord&&(m.reverse(),v.reverse());var y=function R6(r,n){var l,c,t=[],o=r.length;function u(g,v,y){var b=g.coord;return{coord:y,color:HS((y-b)/(v.coord-b),[g.color,v.color])}}for(var h=0;hn){c?t.push(u(c,p,n)):l&&t.push(u(l,p,0),u(l,p,n));break}l&&(t.push(u(l,p,0)),l=null),t.push(p),c=p}}return t}(m,"x"===l?t.getWidth():t.getHeight()),b=y.length;if(!b&&g)return m[0].coord<0?v[1]?v[1]:m[g-1].color:v[0]?v[0]:m[0].color;var C=y[0].coord-10,S=y[b-1].coord+10,M=S-C;if(M<.001)return"transparent";U(y,function(A){A.offset=(A.coord-C)/M}),y.push({offset:b?y[b-1].offset:.5,color:v[1]||"transparent"}),y.unshift({offset:b?y[0].offset:.5,color:v[0]||"transparent"});var T=new Kh(0,0,0,0,y,!0);return T[l]=C,T[l+"2"]=S,T}}}(p,u,l)||p.getVisual("style")[p.getVisual("drawType")];if(C&&b.type===u.type&&$===this._step){A&&!S?S=this._newPolygon(v,R):S&&!A&&(M.remove(S),S=this._polygon=null),y||this._initOrUpdateEndLabel(t,u,Nh(K));var ee=M.getClipPath();ee?di(ee,{shape:HA(this,u,!1,t).shape},t):M.setClipPath(HA(this,u,!0,t)),B&&x.updateData(p,{isIgnore:G,clipShape:X,disableAnimation:!0,getSymbolPoint:function(fn){return[v[2*fn],v[2*fn+1]]}}),(!Rx(this._stackedOnPoints,R)||!Rx(this._points,v))&&(T?this._doUpdateAnimation(p,R,u,l,$,E,H):($&&(v=vu(v,u,$,H),R&&(R=vu(R,u,$,H))),C.setShape({points:v}),S&&S.setShape({points:v,stackedOnPoints:R})))}else B&&x.updateData(p,{isIgnore:G,clipShape:X,disableAnimation:!0,getSymbolPoint:function(fn){return[v[2*fn],v[2*fn+1]]}}),T&&this._initSymbolLabelAnimation(p,u,X),$&&(v=vu(v,u,$,H),R&&(R=vu(R,u,$,H))),C=this._newPolyline(v),A?S=this._newPolygon(v,R):S&&(M.remove(S),S=this._polygon=null),y||this._initOrUpdateEndLabel(t,u,Nh(K)),M.setClipPath(HA(this,u,!0,t));var ie=t.getModel("emphasis"),de=ie.get("focus"),ce=ie.get("blurScope"),ve=ie.get("disabled");C.useStyle(Ye(m.getLineStyle(),{fill:"none",stroke:K,lineJoin:"bevel"})),da(C,t,"lineStyle"),C.style.lineWidth>0&&"bolder"===t.get(["emphasis","lineStyle","width"])&&(C.getState("emphasis").style.lineWidth=+C.style.lineWidth+1),_t(C).seriesIndex=t.seriesIndex,Ri(C,de,ce,ve);var Ae=VA(t.get("smooth")),Ge=t.get("smoothMonotone");if(C.setShape({smooth:Ae,smoothMonotone:Ge,connectNulls:H}),S){var tt=p.getCalculationInfo("stackedOnSeries"),nt=0;S.useStyle(Ye(g.getAreaStyle(),{fill:K,opacity:.7,lineJoin:"bevel",decal:p.getVisual("style").decal})),tt&&(nt=VA(tt.get("smooth"))),S.setShape({smooth:Ae,stackedOnSmooth:nt,smoothMonotone:Ge,connectNulls:H}),da(S,t,"areaStyle"),_t(S).seriesIndex=t.seriesIndex,Ri(S,de,ce,ve)}var Lt=function(fn){c._changePolyState(fn)};p.eachItemGraphicEl(function(fn){fn&&(fn.onHoverStateChange=Lt)}),this._polyline.onHoverStateChange=Lt,this._data=p,this._coordSys=u,this._stackedOnPoints=R,this._points=v,this._step=$,this._valueOrigin=E,t.get("triggerLineEvent")&&(this.packEventData(t,C),S&&this.packEventData(t,S))},n.prototype.packEventData=function(t,o){_t(o).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},n.prototype.highlight=function(t,o,l,c){var u=t.getData(),h=wp(u,c);if(this._changePolyState("emphasis"),!(h instanceof Array)&&null!=h&&h>=0){var p=u.getLayout("points"),m=u.getItemGraphicEl(h);if(!m){var g=p[2*h],v=p[2*h+1];if(isNaN(g)||isNaN(v)||this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(g,v))return;var y=t.get("zlevel")||0,b=t.get("z")||0;(m=new fm(u,h)).x=g,m.y=v,m.setZ(y,b);var x=m.getSymbolPath().getTextContent();x&&(x.zlevel=y,x.z=b,x.z2=this._polyline.z2+1),m.__temp=!0,u.setItemGraphicEl(h,m),m.stopSymbolAnimation(!0),this.group.add(m)}m.highlight()}else Nn.prototype.highlight.call(this,t,o,l,c)},n.prototype.downplay=function(t,o,l,c){var u=t.getData(),h=wp(u,c);if(this._changePolyState("normal"),null!=h&&h>=0){var p=u.getItemGraphicEl(h);p&&(p.__temp?(u.setItemGraphicEl(h,null),this.group.remove(p)):p.downplay())}else Nn.prototype.downplay.call(this,t,o,l,c)},n.prototype._changePolyState=function(t){var o=this._polygon;Vc(this._polyline,t),o&&Vc(o,t)},n.prototype._newPolyline=function(t){var o=this._polyline;return o&&this._lineGroup.remove(o),o=new k6({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(o),this._polyline=o,o},n.prototype._newPolygon=function(t,o){var l=this._polygon;return l&&this._lineGroup.remove(l),l=new SN({shape:{points:t,stackedOnPoints:o},segmentIgnoreThreshold:2}),this._lineGroup.add(l),this._polygon=l,l},n.prototype._initSymbolLabelAnimation=function(t,o,l){var c,u,h=o.getBaseAxis(),p=h.inverse;"cartesian2d"===o.type?(c=h.isHorizontal(),u=!1):"polar"===o.type&&(c="angle"===h.dim,u=!0);var m=t.hostModel,g=m.get("animationDuration");qe(g)&&(g=g(null));var v=m.get("animationDelay")||0,y=qe(v)?v(null):v;t.eachItemGraphicEl(function(b,x){var C=b;if(C){var M=void 0,T=void 0,A=void 0;if(l)if(u){var E=l,L=o.pointToCoord([b.x,b.y]);c?(M=E.startAngle,T=E.endAngle,A=-L[1]/180*Math.PI):(M=E.r0,T=E.r,A=L[0])}else c?(M=l.x,T=l.x+l.width,A=b.x):(M=l.y+l.height,T=l.y,A=b.y);var B=T===M?0:(A-M)/(T-M);p&&(B=1-B);var H=qe(v)?v(x):g*B+y,G=C.getSymbolPath(),j=G.getTextContent();C.attr({scaleX:0,scaleY:0}),C.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:H}),j&&j.animateFrom({style:{opacity:0}},{duration:300,delay:H}),G.disableLabelAnimation=!0}})},n.prototype._initOrUpdateEndLabel=function(t,o,l){var c=t.getModel("endLabel");if(F6(t)){var u=t.getData(),h=this._polyline,p=u.getLayout("points");if(!p)return h.removeTextContent(),void(this._endLabel=null);var m=this._endLabel;m||((m=this._endLabel=new dn({z2:200})).ignoreClip=!0,h.setTextContent(this._endLabel),h.disableLabelAnimation=!0);var g=function AN(r){for(var n=r.length/2;n>0&&TN(r[2*n-2],r[2*n-1]);n--);return n-1}(p);g>=0&&(Zr(h,Or(t,"endLabel"),{inheritColor:l,labelFetcher:t,labelDataIndex:g,defaultText:function(v,y,b){return null!=b?OA(u,b):ad(u,v)},enableTextSetter:!0},function vK(r,n){var t=n.getBaseAxis(),o=t.isHorizontal(),l=t.inverse,c=o?l?"right":"left":"center",u=o?"middle":l?"top":"bottom";return{normal:{align:r.get("align")||c,verticalAlign:r.get("verticalAlign")||u}}}(c,o)),h.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},n.prototype._endLabelOnDuring=function(t,o,l,c,u,h,p){var m=this._endLabel,g=this._polyline;if(m){t<1&&null==c.originalX&&(c.originalX=m.x,c.originalY=m.y);var v=l.getLayout("points"),y=l.hostModel,b=y.get("connectNulls"),x=h.get("precision"),C=h.get("distance")||0,S=p.getBaseAxis(),M=S.isHorizontal(),T=S.inverse,A=o.shape,E=T?M?A.x:A.y+A.height:M?A.x+A.width:A.y,L=(M?C:0)*(T?-1:1),R=(M?0:-C)*(T?-1:1),B=M?"x":"y",H=function kN(r,n,t){for(var c,u,o=r.length/2,l="x"===t?0:1,h=0,p=-1,m=0;m=n||c>=n&&u<=n){p=m;break}h=m,c=u}return{range:[h,p],t:(n-c)/(u-c)}}(v,E,B),G=H.range,j=G[1]-G[0],$=void 0;if(j>=1){if(j>1&&!b){var X=zA(v,G[0]);m.attr({x:X[0]+L,y:X[1]+R}),u&&($=y.getRawValue(G[0]))}else{(X=g.getPointOn(E,B))&&m.attr({x:X[0]+L,y:X[1]+R});var K=y.getRawValue(G[0]),ee=y.getRawValue(G[1]);u&&($=d0(l,x,K,ee,H.t))}c.lastFrameIndex=G[0]}else{var ne=1===t||c.lastFrameIndex>0?G[0]:0;X=zA(v,ne),u&&($=y.getRawValue(ne)),m.attr({x:X[0]+L,y:X[1]+R})}u&&Pp(m).setLabelText($)}},n.prototype._doUpdateAnimation=function(t,o,l,c,u,h,p){var m=this._polyline,g=this._polygon,v=t.hostModel,y=function CN(r,n,t,o,l,c,u,h){for(var p=function FA(r,n){var t=[];return n.diff(r).add(function(o){t.push({cmd:"+",idx:o})}).update(function(o,l){t.push({cmd:"=",idx:l,idx1:o})}).remove(function(o){t.push({cmd:"-",idx:o})}).execute(),t}(r,n),m=[],g=[],v=[],y=[],b=[],x=[],C=[],S=wN(l,n,u),M=r.getLayout("points")||[],T=n.getLayout("points")||[],A=0;A3e3||g&&P6(x,S)>3e3)return m.stopAnimation(),m.setShape({points:C}),void(g&&(g.stopAnimation(),g.setShape({points:C,stackedOnPoints:S})));m.shape.__points=y.current,m.shape.points=b;var M={shape:{points:C}};y.current!==b&&(M.shape.__points=y.next),m.stopAnimation(),un(m,M,v),g&&(g.setShape({points:b,stackedOnPoints:x}),g.stopAnimation(),un(g,{shape:{stackedOnPoints:S}},v),m.shape.points!==g.shape.points&&(g.shape.points=m.shape.points));for(var T=[],A=y.status,E=0;En&&(n=r[t]);return isFinite(n)?n:NaN},min:function(r){for(var n=1/0,t=0;t10&&"cartesian2d"===u.type&&c){var p=u.getBaseAxis(),m=u.getOtherAxis(p),g=p.getExtent(),v=o.getDevicePixelRatio(),y=Math.abs(g[1]-g[0])*(v||1),b=Math.round(h/y);if(isFinite(b)&&b>1){"lttb"===c&&n.setData(l.lttbDownSample(l.mapDimension(m.dim),1/b));var x=void 0;Le(c)?x=B6[c]:qe(c)&&(x=c),x&&n.setData(l.downSample(l.mapDimension(m.dim),1/b,x,_K))}}}}}var od=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.getInitialData=function(t,o){return ed(null,this,{useEncodeDefaulter:!0})},n.prototype.getMarkerPosition=function(t,o,l){var c=this.coordinateSystem;if(c&&c.clampData){var u=c.dataToPoint(c.clampData(t));if(l)U(c.getAxes(),function(v,y){if("category"===v.type){var b=v.getTicksCoords(),x=c.clampData(t)[y];o&&("x1"===o[y]||"y1"===o[y])&&(x+=1),x>b.length-1&&(x=b.length-1),x<0&&(x=0),b[x]&&(u[y]=v.toGlobalCoord(b[x].coord))}});else{var h=this.getData(),p=h.getLayout("offset"),m=h.getLayout("size"),g=c.getBaseAxis().isHorizontal()?0:1;u[g]+=p+m/2}return u}return[NaN,NaN]},n.type="series.__base_bar__",n.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},n}(Zn);Zn.registerClass(od);const Ox=od;var z6=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.getInitialData=function(){return ed(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},n.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},n.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),o=this.get("largeThreshold");return o>t&&(t=o),t},n.prototype.brushSelector=function(t,o,l){return l.rect(o.getItemLayout(t))},n.type="series.bar",n.dependencies=["grid","polar"],n.defaultOption=$d(Ox.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),n}(Ox);const GA=z6;var PN=function r(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},yK=function(r){function n(t){var o=r.call(this,t)||this;return o.type="sausage",o}return le(n,r),n.prototype.getDefaultShape=function(){return new PN},n.prototype.buildPath=function(t,o){var l=o.cx,c=o.cy,u=Math.max(o.r0||0,0),h=Math.max(o.r,0),p=.5*(h-u),m=u+p,g=o.startAngle,v=o.endAngle,y=o.clockwise,b=2*Math.PI,x=y?v-gh)return!0;h=v}return!1},n.prototype._isOrderDifferentInView=function(t,o){for(var l=o.scale,c=l.getExtent(),u=Math.max(0,c[0]),h=Math.min(c[1],l.getOrdinalMeta().categories.length-1);u<=h;++u)if(t.ordinalNumbers[u]!==l.getRawOrdinalNumber(u))return!0},n.prototype._updateSortWithinSameData=function(t,o,l,c){if(this._isOrderChangedWithinSameData(t,o,l)){var u=this._dataSort(t,l,o);this._isOrderDifferentInView(u,l)&&(this._removeOnRenderedListener(c),c.dispatchAction({type:"changeAxisOrder",componentType:l.dim+"Axis",axisId:l.index,sortInfo:u}))}},n.prototype._dispatchInitSort=function(t,o,l){var c=o.baseAxis,u=this._dataSort(t,c,function(h){return t.get(t.mapDimension(o.otherAxis.dim),h)});l.dispatchAction({type:"changeAxisOrder",componentType:c.dim+"Axis",isInitSort:!0,axisId:c.index,sortInfo:u})},n.prototype.remove=function(t,o){this._clear(this._model),this._removeOnRenderedListener(o)},n.prototype.dispose=function(t,o){this._removeOnRenderedListener(o)},n.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},n.prototype._clear=function(t){var o=this.group,l=this._data;t&&t.isAnimationEnabled()&&l&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],l.eachItemGraphicEl(function(c){Iv(c,t,_t(c).dataIndex)})):o.removeAll(),this._data=null,this._isFirstFrame=!0},n.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},n.type="bar",n}(Nn),U6={cartesian2d:function(r,n){var t=n.width<0?-1:1,o=n.height<0?-1:1;t<0&&(n.x+=n.width,n.width=-n.width),o<0&&(n.y+=n.height,n.height=-n.height);var l=r.x+r.width,c=r.y+r.height,u=RN(n.x,r.x),h=ON(n.x+n.width,l),p=RN(n.y,r.y),m=ON(n.y+n.height,c),g=hl?h:u,n.y=v&&p>c?m:p,n.width=g?0:h-u,n.height=v?0:m-p,t<0&&(n.x+=n.width,n.width=-n.width),o<0&&(n.y+=n.height,n.height=-n.height),g||v},polar:function(r,n){var t=n.r0<=n.r?1:-1;if(t<0){var o=n.r;n.r=n.r0,n.r0=o}var l=ON(n.r,r.r),c=RN(n.r0,r.r0);n.r=l,n.r0=c;var u=l-c<0;return t<0&&(o=n.r,n.r=n.r0,n.r0=o),u}},j6={cartesian2d:function(r,n,t,o,l,c,u,h,p){var m=new an({shape:ge({},o),z2:1});return m.__dataIndex=t,m.name="item",c&&(m.shape[l?"height":"width"]=0),m},polar:function(r,n,t,o,l,c,u,h,p){var m=!l&&p?UA:Ya,g=new m({shape:o,z2:1});g.name="item";var v=je(l);if(g.calculateTextPosition=function bK(r,n){var t=(n=n||{}).isRoundCap;return function(o,l,c){var u=l.position;if(!u||u instanceof Array)return Fc(o,l,c);var h=r(u),p=null!=l.distance?l.distance:5,m=this.shape,g=m.cx,v=m.cy,y=m.r,b=m.r0,x=(y+b)/2,C=m.startAngle,S=m.endAngle,M=(C+S)/2,T=t?Math.abs(y-b)/2:0,A=Math.cos,E=Math.sin,L=g+y*A(C),R=v+y*E(C),B="left",H="top";switch(h){case"startArc":L=g+(b-p)*A(M),R=v+(b-p)*E(M),B="center",H="top";break;case"insideStartArc":L=g+(b+p)*A(M),R=v+(b+p)*E(M),B="center",H="bottom";break;case"startAngle":L=g+x*A(C)+jA(C,p+T,!1),R=v+x*E(C)+$A(C,p+T,!1),B="right",H="middle";break;case"insideStartAngle":L=g+x*A(C)+jA(C,-p+T,!1),R=v+x*E(C)+$A(C,-p+T,!1),B="left",H="middle";break;case"middle":L=g+x*A(M),R=v+x*E(M),B="center",H="middle";break;case"endArc":L=g+(y+p)*A(M),R=v+(y+p)*E(M),B="center",H="bottom";break;case"insideEndArc":L=g+(y-p)*A(M),R=v+(y-p)*E(M),B="center",H="top";break;case"endAngle":L=g+x*A(S)+jA(S,p+T,!0),R=v+x*E(S)+$A(S,p+T,!0),B="left",H="middle";break;case"insideEndAngle":L=g+x*A(S)+jA(S,-p+T,!0),R=v+x*E(S)+$A(S,-p+T,!0),B="right",H="middle";break;default:return Fc(o,l,c)}return(o=o||{}).x=L,o.y=R,o.align=B,o.verticalAlign=H,o}}(v,{isRoundCap:m===UA}),c){var b=l?"r":"endAngle",x={};g.shape[b]=l?0:o.startAngle,x[b]=o[b],(h?un:di)(g,{shape:x},c)}return g}};function $6(r,n,t,o,l,c,u,h){var p,m;c?(m={x:o.x,width:o.width},p={y:o.y,height:o.height}):(m={y:o.y,height:o.height},p={x:o.x,width:o.width}),h||(u?un:di)(t,{shape:p},n,l,null),(u?un:di)(t,{shape:m},n?r.baseAxis.model:null,l)}function W6(r,n){for(var t=0;t0?1:-1,u=o.height>0?1:-1;return{x:o.x+c*l/2,y:o.y+u*l/2,width:o.width-c*l,height:o.height-u*l}},polar:function(r,n,t){var o=r.getItemLayout(n);return{cx:o.cx,cy:o.cy,r0:o.r0,r:o.r,startAngle:o.startAngle,endAngle:o.endAngle,clockwise:o.clockwise}}};function je(r){return function(n){var t=n?"Arc":"Angle";return function(o){switch(o){case"start":case"insideStart":case"end":case"insideEnd":return o+t;default:return o}}}(r)}function sd(r,n,t,o,l,c,u,h){var p=n.getItemVisual(t,"style");h||r.setShape("r",o.get(["itemStyle","borderRadius"])||0),r.useStyle(p);var m=o.getShallow("cursor");m&&r.attr("cursor",m);var g=h?u?l.r>=l.r0?"endArc":"startArc":l.endAngle>=l.startAngle?"endAngle":"startAngle":u?l.height>=0?"bottom":"top":l.width>=0?"right":"left",v=Or(o);Zr(r,v,{labelFetcher:c,labelDataIndex:t,defaultText:ad(c.getData(),t),inheritColor:p.fill,defaultOpacity:p.opacity,defaultOutsidePosition:g});var y=r.getTextContent();if(h&&y){var b=o.get(["label","position"]);r.textConfig.inside="middle"===b||null,function H6(r,n,t,o){if(ln(o))r.setTextConfig({rotation:o});else if(be(n))r.setTextConfig({rotation:0});else{var p,l=r.shape,c=l.clockwise?l.startAngle:l.endAngle,u=l.clockwise?l.endAngle:l.startAngle,h=(c+u)/2,m=t(n);switch(m){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":p=h;break;case"startAngle":case"insideStartAngle":p=c;break;case"endAngle":case"insideEndAngle":p=u;break;default:return void r.setTextConfig({rotation:0})}var g=1.5*Math.PI-p;"middle"===m&&g>Math.PI/2&&g<1.5*Math.PI&&(g-=Math.PI),r.setTextConfig({rotation:g})}}(r,"outside"===b?g:b,je(u),o.get(["label","rotate"]))}qD(y,v,c.getRawValue(t),function(C){return OA(n,C)});var x=o.getModel(["emphasis"]);Ri(r,x.get("focus"),x.get("blurScope"),x.get("disabled")),da(r,o),function SK(r){return null!=r.startAngle&&null!=r.endAngle&&r.startAngle===r.endAngle}(l)&&(r.style.fill="none",r.style.stroke="none",U(r.states,function(C){C.style&&(C.style.fill=C.style.stroke="none")}))}var Lx=function r(){},Fx=function(r){function n(t){var o=r.call(this,t)||this;return o.type="largeBar",o}return le(n,r),n.prototype.getDefaultShape=function(){return new Lx},n.prototype.buildPath=function(t,o){for(var l=o.points,c=this.baseDimIdx,u=1-this.baseDimIdx,h=[],p=[],m=this.barWidth,g=0;g=h[0]&&n<=h[0]+p[0]&&t>=h[1]&&t<=h[1]+p[1])return u[g]}return-1}(this,r.offsetX,r.offsetY);_t(this).dataIndex=t>=0?t:null},30,!1);function FN(r,n,t){if(vf(t,"cartesian2d")){var o=n,l=t.getArea();return{x:r?o.x:l.x,y:r?l.y:o.y,width:r?o.width:l.width,height:r?l.height:o.height}}return{cx:(l=t.getArea()).cx,cy:l.cy,r0:r?l.r0:n.r0,r:r?l.r:n.r,startAngle:r?n.startAngle:0,endAngle:r?n.endAngle:2*Math.PI}}const Z6=G6;var _f=2*Math.PI,ld=Math.PI/180;function K6(r,n){return cr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}function BN(r,n){var t=K6(r,n),o=r.get("center"),l=r.get("radius");be(l)||(l=[0,l]);var g,v,c=Ie(t.width,n.getWidth()),u=Ie(t.height,n.getHeight()),h=Math.min(c,u),p=Ie(l[0],h/2),m=Ie(l[1],h/2),y=r.coordinateSystem;if(y){var b=y.dataToPoint(o);g=b[0]||0,v=b[1]||0}else be(o)||(o=[o,o]),g=Ie(o[0],c)+t.x,v=Ie(o[1],u)+t.y;return{cx:g,cy:v,r0:p,r:m}}function Q6(r,n,t){n.eachSeriesByType(r,function(o){var l=o.getData(),c=l.mapDimension("value"),u=K6(o,t),h=BN(o,t),p=h.cx,m=h.cy,g=h.r,v=h.r0,y=-o.get("startAngle")*ld,b=o.get("minAngle")*ld,x=0;l.each(c,function(j){!isNaN(j)&&x++});var C=l.getSum(c),S=Math.PI/(C||x)*2,M=o.get("clockwise"),T=o.get("roseType"),A=o.get("stillShowZeroSum"),E=l.getDataExtent(c);E[0]=0;var L=_f,R=0,B=y,H=M?1:-1;if(l.setLayout({viewRect:u,r:g}),l.each(c,function(j,$){var X;if(isNaN(j))l.setItemLayout($,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:M,cx:p,cy:m,r0:v,r:T?NaN:g});else{(X="area"!==T?0===C&&A?S:j*S:_f/x)t?M:S,L=Math.abs(A.label.y-t);if(L>=E.maxY){var R=A.label.x-n-A.len2*l,B=o+A.len,H=Math.abs(R)r.unconstrainedWidth?null:b:null)}var C=o.getBoundingRect();c.width=C.width,c.height=C.height+((o.style.margin||0)+2.1),c.y-=(c.height-v)/2}}}function Ki(r){return"center"===r.position}function _u(r,n,t){var o=r.get("borderRadius");if(null==o)return t?{cornerRadius:0}:null;be(o)||(o=[o,o,o,o]);var l=Math.abs(n.r||0-n.r0||0);return{cornerRadius:xe(o,function(c){return Ta(c,l)})}}var Nx=function(r){function n(t,o,l){var c=r.call(this)||this;c.z2=2;var u=new dn;return c.setTextContent(u),c.updateData(t,o,l,!0),c}return le(n,r),n.prototype.updateData=function(t,o,l,c){var u=this,h=t.hostModel,p=t.getItemModel(o),m=p.getModel("emphasis"),g=t.getItemLayout(o),v=ge(_u(p.getModel("itemStyle"),g,!0),g);if(isNaN(v.startAngle))u.setShape(v);else{if(c){u.setShape(v);var y=h.getShallow("animationType");h.ecModel.ssr?(di(u,{scaleX:0,scaleY:0},h,{dataIndex:o,isFrom:!0}),u.originX=v.cx,u.originY=v.cy):"scale"===y?(u.shape.r=g.r0,di(u,{shape:{r:g.r}},h,o)):null!=l?(u.setShape({startAngle:l,endAngle:l}),di(u,{shape:{startAngle:g.startAngle,endAngle:g.endAngle}},h,o)):(u.shape.endAngle=g.startAngle,un(u,{shape:{endAngle:g.endAngle}},h,o))}else ws(u),un(u,{shape:v},h,o);u.useStyle(t.getItemVisual(o,"style")),da(u,p);var b=(g.startAngle+g.endAngle)/2,x=h.get("selectedOffset"),C=Math.cos(b)*x,S=Math.sin(b)*x,M=p.getShallow("cursor");M&&u.attr("cursor",M),this._updateLabel(h,t,o),u.ensureState("emphasis").shape=ge({r:g.r+(m.get("scale")&&m.get("scaleSize")||0)},_u(m.getModel("itemStyle"),g)),ge(u.ensureState("select"),{x:C,y:S,shape:_u(p.getModel(["select","itemStyle"]),g)}),ge(u.ensureState("blur"),{shape:_u(p.getModel(["blur","itemStyle"]),g)});var T=u.getTextGuideLine(),A=u.getTextContent();T&&ge(T.ensureState("select"),{x:C,y:S}),ge(A.ensureState("select"),{x:C,y:S}),Ri(this,m.get("focus"),m.get("blurScope"),m.get("disabled"))}},n.prototype._updateLabel=function(t,o,l){var c=this,u=o.getItemModel(l),h=u.getModel("labelLine"),p=o.getItemVisual(l,"style"),m=p&&p.fill,g=p&&p.opacity;Zr(c,Or(u),{labelFetcher:o.hostModel,labelDataIndex:l,inheritColor:m,defaultOpacity:g,defaultText:t.getFormattedLabel(l,"normal")||o.getName(l)});var v=c.getTextContent();c.setTextConfig({position:null,rotation:null}),v.attr({z2:10});var y=t.get(["label","position"]);if("outside"!==y&&"outer"!==y)c.removeTextGuideLine();else{var b=this.getTextGuideLine();b||(b=new _o,this.setTextGuideLine(b)),mA(this,gA(u),{stroke:m,opacity:Ws(h.get(["lineStyle","opacity"]),g,1)})}},n}(Ya),zN=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.ignoreLabelLineUpdate=!0,t}return le(n,r),n.prototype.render=function(t,o,l,c){var m,u=t.getData(),h=this._data,p=this.group;if(!h&&u.count()>0){for(var g=u.getItemLayout(0),v=1;isNaN(g&&g.startAngle)&&v0?"right":"left":Ge>0?"left":"right"}var ar=Math.PI,Si=0,Ba=X.get("rotate");if(ln(Ba))Si=Ba*(ar/180);else if("center"===K)Si=0;else if("radial"===Ba||!0===Ba)Si=Ge<0?-Ae+ar:-Ae;else if("tangential"===Ba&&"outside"!==K&&"outer"!==K){var ba=Math.atan2(Ge,tt);ba<0&&(ba=2*ar+ba),tt>0&&(ba=ar+ba),Si=ba-ar}if(c=!!Si,G.x=nt,G.y=Lt,G.rotation=Si,G.setStyle({verticalAlign:"middle"}),ut){G.setStyle({align:Ht});var y4=G.states.select;y4&&(y4.x+=G.x,y4.y+=G.y)}else{var Dl=G.getBoundingRect().clone();Dl.applyTransform(G.getComputedTransform());var Nq=(G.style.margin||0)+2.1;Dl.y-=Nq/2,Dl.height+=Nq,t.push({label:G,labelLine:j,position:K,len:ve,len2:De,minTurnAngle:ce.get("minTurnAngle"),maxSurfaceAngle:ce.get("maxSurfaceAngle"),surfaceNormal:new it(Ge,tt),linePoints:fn,textAlign:Ht,labelDistance:ee,labelAlignTo:ne,edgeDistance:ie,bleedMargin:de,rect:Dl,unconstrainedWidth:Dl.width,labelStyleWidth:G.style.width})}B.setTextConfig({inside:ut})}}),!c&&r.get("avoidLabelOverlap")&&function J6(r,n,t,o,l,c,u,h){for(var p=[],m=[],g=Number.MAX_VALUE,v=-Number.MAX_VALUE,y=0;y=c.r0}},n.type="pie",n}(Nn);const qA=zN;function cd(r,n,t){n=be(n)&&{coordDimensions:n}||ge({encodeDefine:r.getEncode()},n);var o=r.getSource(),l=om(o,n).dimensions,c=new ga(l,r);return c.initData(o,t),c}var HN=function(){function r(n,t){this._getDataWithEncodedVisual=n,this._getRawData=t}return r.prototype.getAllNames=function(){var n=this._getRawData();return n.mapArray(n.getName)},r.prototype.containName=function(n){return this._getRawData().indexOfName(n)>=0},r.prototype.indexOfName=function(n){return this._getDataWithEncodedVisual().indexOfName(n)},r.prototype.getItemVisual=function(n,t){return this._getDataWithEncodedVisual().getItemVisual(n,t)},r}();const B_=HN;var ej=cn(),tj=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new B_(Ne(this.getData,this),Ne(this.getRawData,this)),this._defaultLabelLine(t)},n.prototype.mergeOption=function(){r.prototype.mergeOption.apply(this,arguments)},n.prototype.getInitialData=function(){return cd(this,{coordDimensions:["value"],encodeDefaulter:vt(dM,this)})},n.prototype.getDataParams=function(t){var o=this.getData(),l=ej(o),c=l.seats;if(!c){var u=[];o.each(o.mapDimension("value"),function(p){u.push(p)}),c=l.seats=e2(u,o.hostModel.get("percentPrecision"))}var h=r.prototype.getDataParams.call(this,t);return h.percent=c[t]||0,h.$vars.push("percent"),h},n.prototype._defaultLabelLine=function(t){_h(t,"labelLine",["show"]);var o=t.labelLine,l=t.emphasis.labelLine;o.show=o.show&&t.label.show,l.show=l.show&&t.emphasis.label.show},n.type="series.pie",n.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},n}(Zn);const V_=tj;var DK=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.hasSymbolVisual=!0,t}return le(n,r),n.prototype.getInitialData=function(t,o){return ed(null,this,{useEncodeDefaulter:!0})},n.prototype.getProgressive=function(){return this.option.progressive??(this.option.large?5e3:this.get("progressive"))},n.prototype.getProgressiveThreshold=function(){return this.option.progressiveThreshold??(this.option.large?1e4:this.get("progressiveThreshold"))},n.prototype.brushSelector=function(t,o,l){return l.point(o.getItemLayout(t))},n.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},n.type="series.scatter",n.dependencies=["grid","polar","geo","singleAxis","calendar"],n.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},n}(Zn);const MK=DK;var TK=function r(){},AK=function(r){function n(t){var o=r.call(this,t)||this;return o._off=0,o.hoverDataIdx=-1,o}return le(n,r),n.prototype.getDefaultShape=function(){return new TK},n.prototype.reset=function(){this.notClear=!1,this._off=0},n.prototype.buildPath=function(t,o){var v,l=o.points,c=o.size,u=this.symbolProxy,h=u.shape,p=t.getContext?t.getContext():t,g=this.softClipShape;if(p&&c[0]<4)this._ctx=p;else{for(this._ctx=null,v=this._off;v=0;m--){var g=2*m,v=c[g]-h/2,y=c[g+1]-p/2;if(t>=v&&o>=y&&t<=v+h&&o<=y+p)return m}return-1},n.prototype.contain=function(t,o){var l=this.transformCoordToLocal(t,o);return this.getBoundingRect().contain(t=l[0],o=l[1])?(this.hoverDataIdx=this.findDataIndex(t,o))>=0:(this.hoverDataIdx=-1,!1)},n.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var o=this.shape,l=o.points,c=o.size,u=c[0],h=c[1],p=1/0,m=1/0,g=-1/0,v=-1/0,y=0;y=0&&(m.dataIndex=v+(n.startIndex||0))})},r.prototype.remove=function(){this._clear()},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}();const rj=kK;var aj=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){var c=t.getData();this._updateSymbolDraw(c,t).updateData(c,{clipShape:this._getClipShape(t)}),this._finished=!0},n.prototype.incrementalPrepareRender=function(t,o,l){var c=t.getData();this._updateSymbolDraw(c,t).incrementalPrepareUpdate(c),this._finished=!1},n.prototype.incrementalRender=function(t,o,l){this._symbolDraw.incrementalUpdate(t,o.getData(),{clipShape:this._getClipShape(o)}),this._finished=t.end===o.getData().count()},n.prototype.updateTransform=function(t,o,l){var c=t.getData();if(this.group.dirty(),!this._finished||c.count()>1e4)return{update:!0};var u=L_("").reset(t,o,l);u.progress&&u.progress({start:0,end:c.count(),count:c.count()},c),this._symbolDraw.updateLayout(c)},n.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},n.prototype._getClipShape=function(t){var o=t.coordinateSystem,l=o&&o.getArea&&o.getArea();return t.get("clip",!0)?l:null},n.prototype._updateSymbolDraw=function(t,o){var l=this._symbolDraw,u=o.pipelineContext.large;return(!l||u!==this._isLargeDraw)&&(l&&l.remove(),l=this._symbolDraw=u?new rj:new O_,this._isLargeDraw=u,this.group.removeAll()),this.group.add(l.group),l},n.prototype.remove=function(t,o){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},n.prototype.dispose=function(){},n.type="scatter",n}(Nn);const UN=aj;var oj=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.type="grid",n.dependencies=["xAxis","yAxis"],n.layoutMode="box",n.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},n}(jt);const EK=oj;var XA=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",qi).models[0]},n.type="cartesian2dAxis",n}(jt);Ii(XA,cm);var ZA={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},KA=St({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},ZA),Bx=St({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},ZA);const QA={category:KA,value:Bx,time:St({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},Bx),log:Ye({logBase:10},Bx)};var WN={value:1,category:1,time:1,log:1};function gm(r,n,t,o){U(WN,function(l,c){var u=St(St({},QA[c],!0),o,!0),h=function(p){function m(){var g=null!==p&&p.apply(this,arguments)||this;return g.type=n+"Axis."+c,g}return le(m,p),m.prototype.mergeDefaultAndTheme=function(g,v){var y=Vv(this),b=y?qd(g):{};St(g,v.getTheme().get(c+"Axis")),St(g,this.getDefaultOption()),g.type=YN(g),y&&Yd(g,b,y)},m.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=TF.createByAxisModel(this))},m.prototype.getCategories=function(g){var v=this.option;if("category"===v.type)return g?v.data:this.__ordinalMeta.categories},m.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},m.type=n+"Axis."+c,m.defaultOption=u,m}(t);r.registerComponentModel(h)}),r.registerSubTypeDefaulter(n+"Axis",YN)}function YN(r){return r.type||(r.data?"category":"value")}var PK=function(){function r(n){this.type="cartesian",this._dimList=[],this._axes={},this.name=n||""}return r.prototype.getAxis=function(n){return this._axes[n]},r.prototype.getAxes=function(){return xe(this._dimList,function(n){return this._axes[n]},this)},r.prototype.getAxesByScale=function(n){return n=n.toLowerCase(),Dn(this.getAxes(),function(t){return t.scale.type===n})},r.prototype.addAxis=function(n){var t=n.dim;this._axes[t]=n,this._dimList.push(t)},r}(),yu=["x","y"];function qN(r){return"interval"===r.type||"time"===r.type}var RK=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="cartesian2d",t.dimensions=yu,t}return le(n,r),n.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,o=this.getAxis("y").scale;if(qN(t)&&qN(o)){var l=t.getExtent(),c=o.getExtent(),u=this.dataToPoint([l[0],c[0]]),h=this.dataToPoint([l[1],c[1]]),p=l[1]-l[0],m=c[1]-c[0];if(p&&m){var g=(h[0]-u[0])/p,v=(h[1]-u[1])/m,x=this._transform=[g,0,0,v,u[0]-l[0]*g,u[1]-c[0]*v];this._invTransform=ah([],x)}}},n.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},n.prototype.containPoint=function(t){var o=this.getAxis("x"),l=this.getAxis("y");return o.contain(o.toLocalCoord(t[0]))&&l.contain(l.toLocalCoord(t[1]))},n.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},n.prototype.containZone=function(t,o){var l=this.dataToPoint(t),c=this.dataToPoint(o),u=this.getArea(),h=new lt(l[0],l[1],c[0]-l[0],c[1]-l[1]);return u.intersect(h)},n.prototype.dataToPoint=function(t,o,l){l=l||[];var c=t[0],u=t[1];if(this._transform&&null!=c&&isFinite(c)&&null!=u&&isFinite(u))return Tr(l,t,this._transform);var h=this.getAxis("x"),p=this.getAxis("y");return l[0]=h.toGlobalCoord(h.dataToCoord(c,o)),l[1]=p.toGlobalCoord(p.dataToCoord(u,o)),l},n.prototype.clampData=function(t,o){var l=this.getAxis("x").scale,c=this.getAxis("y").scale,u=l.getExtent(),h=c.getExtent(),p=l.parse(t[0]),m=c.parse(t[1]);return(o=o||[])[0]=Math.min(Math.max(Math.min(u[0],u[1]),p),Math.max(u[0],u[1])),o[1]=Math.min(Math.max(Math.min(h[0],h[1]),m),Math.max(h[0],h[1])),o},n.prototype.pointToData=function(t,o){var l=[];if(this._invTransform)return Tr(l,t,this._invTransform);var c=this.getAxis("x"),u=this.getAxis("y");return l[0]=c.coordToData(c.toLocalCoord(t[0]),o),l[1]=u.coordToData(u.toLocalCoord(t[1]),o),l},n.prototype.getOtherAxis=function(t){return this.getAxis("x"===t.dim?"y":"x")},n.prototype.getArea=function(){var t=this.getAxis("x").getGlobalExtent(),o=this.getAxis("y").getGlobalExtent(),l=Math.min(t[0],t[1]),c=Math.min(o[0],o[1]),u=Math.max(t[0],t[1])-l,h=Math.max(o[0],o[1])-c;return new lt(l,c,u,h)},n}(PK);const XN=RK;var sj=function(r){function n(t,o,l,c,u){var h=r.call(this,t,o,l)||this;return h.index=0,h.type=c||"value",h.position=u||"bottom",h}return le(n,r),n.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},n.prototype.getGlobalExtent=function(t){var o=this.getExtent();return o[0]=this.toGlobalCoord(o[0]),o[1]=this.toGlobalCoord(o[1]),t&&o[0]>o[1]&&o.reverse(),o},n.prototype.pointToData=function(t,o){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),o)},n.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},n}(Go);const lj=sj;function ZN(r,n,t){t=t||{};var o=r.coordinateSystem,l=n.axis,c={},u=l.getAxesOnZeroOf()[0],h=l.position,p=u?"onZero":h,m=l.dim,g=o.getRect(),v=[g.x,g.x+g.width,g.y,g.y+g.height],y={left:0,right:1,top:0,bottom:1,onZero:2},b=n.get("offset")||0,x="x"===m?[v[2]-b,v[3]+b]:[v[0]-b,v[1]+b];if(u){var C=u.toGlobalCoord(u.dataToCoord(0));x[y.onZero]=Math.max(Math.min(C,x[1]),x[0])}c.position=["y"===m?x[y[p]]:v[0],"x"===m?x[y[p]]:v[3]],c.rotation=Math.PI/2*("x"===m?0:1),c.labelDirection=c.tickDirection=c.nameDirection={top:-1,bottom:1,left:-1,right:1}[h],c.labelOffset=u?x[y[h]]-x[y.onZero]:0,n.get(["axisTick","inside"])&&(c.tickDirection=-c.tickDirection),Vi(t.labelInside,n.get(["axisLabel","inside"]))&&(c.labelDirection=-c.labelDirection);var M=n.get(["axisLabel","rotate"]);return c.labelRotate="top"===p?-M:M,c.z2=1,c}function cj(r){return"cartesian2d"===r.get("coordinateSystem")}function dj(r){var n={xAxisModel:null,yAxisModel:null};return U(n,function(t,o){var l=o.replace(/Model$/,""),c=r.getReferringComponents(l,qi).models[0];n[o]=c}),n}var KN=Math.log;function QN(r,n,t){var o=Fa.prototype,l=o.getTicks.call(t),c=o.getTicks.call(t,!0),u=l.length-1,h=o.getInterval.call(t),p=PF(r,n),m=p.extent,g=p.fixMin,v=p.fixMax;if("log"===r.type){var y=KN(r.base);m=[KN(m[0])/y,KN(m[1])/y]}r.setExtent(m[0],m[1]),r.calcNiceExtent({splitNumber:u,fixMin:g,fixMax:v});var b=o.getExtent.call(r);g&&(m[0]=b[0]),v&&(m[1]=b[1]);var x=o.getInterval.call(r),C=m[0],S=m[1];if(g&&v)x=(S-C)/u;else if(g)for(S=m[0]+x*u;Sm[0]&&isFinite(C)&&isFinite(m[0]);)x=WT(x),C=m[1]-x*u;else{r.getTicks().length-1>u&&(x=WT(x));var T=x*u;(C=ai((S=Math.ceil(m[1]/x)*x)-T))<0&&m[0]>=0?(C=0,S=ai(T)):S>0&&m[1]<=0&&(S=0,C=-ai(T))}var A=(l[0].value-c[0].value)/h,E=(l[u].value-c[u].value)/h;o.setExtent.call(r,C+x*A,S+x*E),o.setInterval.call(r,x),(A||E)&&o.setNiceExtent.call(r,C+x,S-x)}var OK=function(){function r(n,t,o){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=yu,this._initCartesian(n,t,o),this.model=n}return r.prototype.getRect=function(){return this._rect},r.prototype.update=function(n,t){var o=this._axesMap;function l(u){var h,p=Yt(u),m=p.length;if(m){for(var g=[],v=m-1;v>=0;v--){var b=u[+p[v]],x=b.model,C=b.scale;M_(C)&&x.get("alignTicks")&&null==x.get("interval")?g.push(b):(wt(C,x),M_(C)&&(h=b))}g.length&&(h||wt((h=g.pop()).scale,h.model),U(g,function(S){QN(S.scale,S.model,h.scale)}))}}this._updateScale(n,this.model),l(o.x),l(o.y);var c={};U(o.x,function(u){Qr(o,"y",u,c)}),U(o.y,function(u){Qr(o,"x",u,c)}),this.resize(this.model,t)},r.prototype.resize=function(n,t,o){var l=n.getBoxLayoutParams(),c=!o&&n.get("containLabel"),u=cr(l,{width:t.getWidth(),height:t.getHeight()});this._rect=u;var h=this._axesList;function p(){U(h,function(m){var g=m.isHorizontal(),v=g?[0,u.width]:[0,u.height],y=m.inverse?1:0;m.setExtent(v[y],v[1-y]),function uj(r,n){var t=r.getExtent(),o=t[0]+t[1];r.toGlobalCoord="x"===r.dim?function(l){return l+n}:function(l){return o-l+n},r.toLocalCoord="x"===r.dim?function(l){return l-n}:function(l){return o-l+n}}(m,g?u.x:u.y)})}p(),c&&(U(h,function(m){if(!m.model.get(["axisLabel","inside"])){var g=function dx(r){var t=r.scale;if(r.model.get(["axisLabel","show"])&&!t.isBlank()){var o,l,c=t.getExtent();l=t instanceof XT?t.count():(o=t.getTicks()).length;var p,u=r.getLabelModel(),h=mu(r),m=1;l>40&&(m=Math.ceil(l/40));for(var g=0;g0&&o>0||t<0&&o<0)}(r)}const hj=OK;var bu=Math.PI,yf=function(){function r(n,t){this.group=new ct,this.opt=t,this.axisModel=n,Ye(t,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var o=new ct({x:t.position[0],y:t.position[1],rotation:t.rotation});o.updateTransform(),this._transformGroup=o}return r.prototype.hasBuilder=function(n){return!!JA[n]},r.prototype.add=function(n){JA[n](this.opt,this.axisModel,this.group,this._transformGroup)},r.prototype.getGroup=function(){return this.group},r.innerTextLayout=function(n,t,o){var c,u,l=uv(t-n);return Vd(l)?(u=o>0?"top":"bottom",c="center"):Vd(l-bu)?(u=o>0?"bottom":"top",c="center"):(u="middle",c=l>0&&l0?"right":"left":o>0?"left":"right"),{rotation:l,textAlign:c,textVerticalAlign:u}},r.makeAxisEventDataBase=function(n){var t={componentType:n.mainType,componentIndex:n.componentIndex};return t[n.mainType+"Index"]=n.componentIndex,t},r.isLabelSilent=function(n){var t=n.get("tooltip");return n.get("silent")||!(n.get("triggerEvent")||t&&t.show)},r}(),JA={axisLine:function(r,n,t,o){var l=n.get(["axisLine","show"]);if("auto"===l&&r.handleAutoShown&&(l=r.handleAutoShown("axisLine")),l){var c=n.axis.getExtent(),u=o.transform,h=[c[0],0],p=[c[1],0],m=h[0]>p[0];u&&(Tr(h,h,u),Tr(p,p,u));var g=ge({lineCap:"round"},n.getModel(["axisLine","lineStyle"]).getLineStyle()),v=new Fr({shape:{x1:h[0],y1:h[1],x2:p[0],y2:p[1]},style:g,strokeContainThreshold:r.strokeContainThreshold||5,silent:!0,z2:1});Jh(v.shape,v.style.lineWidth),v.anid="line",t.add(v);var y=n.get(["axisLine","symbol"]);if(null!=y){var b=n.get(["axisLine","symbolSize"]);Le(y)&&(y=[y,y]),(Le(b)||ln(b))&&(b=[b,b]);var x=Ee(n.get(["axisLine","symbolOffset"])||0,b),C=b[0],S=b[1];U([{rotate:r.rotation+Math.PI/2,offset:x[0],r:0},{rotate:r.rotation-Math.PI/2,offset:x[1],r:Math.sqrt((h[0]-p[0])*(h[0]-p[0])+(h[1]-p[1])*(h[1]-p[1]))}],function(M,T){if("none"!==y[T]&&null!=y[T]){var A=Ui(y[T],-C/2,-S/2,C,S,g.stroke,!0),E=M.r+M.offset,L=m?p:h;A.attr({rotation:M.rotate,x:L[0]+E*Math.cos(r.rotation),y:L[1]-E*Math.sin(r.rotation),silent:!0,z2:11}),t.add(A)}})}}},axisTickLabel:function(r,n,t,o){var l=function mj(r,n,t,o){var l=t.axis,c=t.getModel("axisTick"),u=c.get("show");if("auto"===u&&o.handleAutoShown&&(u=o.handleAutoShown("axisTick")),u&&!l.scale.isBlank()){for(var h=c.getModel("lineStyle"),p=o.tickDirection*c.get("length"),g=wu(l.getTicksCoords(),n.transform,p,Ye(h.getLineStyle(),{stroke:t.get(["axisLine","lineStyle","color"])}),"ticks"),v=0;vm[1]?-1:1,v=["start"===c?m[0]-g*p:"end"===c?m[1]+g*p:(m[0]+m[1])/2,ek(c)?r.labelOffset+u*p:0],b=n.get("nameRotate");null!=b&&(b=b*bu/180),ek(c)?y=yf.innerTextLayout(r.rotation,b??r.rotation,u):(y=function fj(r,n,t,o){var c,u,l=uv(t-r),h=o[0]>o[1],p="start"===n&&!h||"start"!==n&&h;return Vd(l-bu/2)?(u=p?"bottom":"top",c="center"):Vd(l-1.5*bu)?(u=p?"top":"bottom",c="center"):(u="middle",c=l<1.5*bu&&l>bu/2?p?"left":"right":p?"right":"left"),{rotation:l,textAlign:c,textVerticalAlign:u}}(r.rotation,c,b||0,m),null!=(x=r.axisNameAvailableWidth)&&(x=Math.abs(x/Math.sin(y.rotation)),!isFinite(x)&&(x=null)));var C=h.getFont(),S=n.get("nameTruncate",!0)||{},M=S.ellipsis,T=Vi(r.nameTruncateMaxWidth,S.maxWidth,x),A=new dn({x:v[0],y:v[1],rotation:y.rotation,silent:yf.isLabelSilent(n),style:Xn(h,{text:l,font:C,overflow:"truncate",width:T,ellipsis:M,fill:h.getTextColor()||n.get(["axisLine","lineStyle","color"]),align:h.get("align")||y.textAlign,verticalAlign:h.get("verticalAlign")||y.textVerticalAlign}),z2:1});if(ll({el:A,componentModel:n,itemName:l}),A.__fullText=l,A.anid="name",n.get("triggerEvent")){var E=yf.makeAxisEventDataBase(n);E.targetType="axisName",E.name=l,_t(A).eventData=E}o.add(A),A.updateTransform(),t.add(A),A.decomposeTransform()}}};function Os(r){r&&(r.ignore=!0)}function Vx(r,n){var t=r&&r.getBoundingRect().clone(),o=n&&n.getBoundingRect().clone();if(t&&o){var l=jg([]);return Ec(l,l,-r.rotation),t.applyTransform(Xs([],l,r.getLocalTransform())),o.applyTransform(Xs([],l,n.getLocalTransform())),t.intersect(o)}}function ek(r){return"middle"===r||"center"===r}function wu(r,n,t,o,l){for(var c=[],u=[],h=[],p=0;p=0||r===n}function Ji(r){var n=ym(r);if(n){var t=n.axisPointerModel,o=n.axis.scale,l=t.option,c=t.get("status"),u=t.get("value");null!=u&&(u=o.parse(u));var h=ik(t);null==c&&(l.status=h?"show":"hide");var p=o.getExtent().slice();p[0]>p[1]&&p.reverse(),(null==u||u>p[1])&&(u=p[1]),u0&&!x.min?x.min=0:null!=x.min&&x.min<0&&!x.max&&(x.max=0);var C=p;null!=x.color&&(C=Ye({color:x.color},p));var S=St(rt(x),{boundaryGap:t,splitNumber:o,scale:l,axisLine:c,axisTick:u,axisLabel:h,name:x.text,showName:m,nameLocation:"end",nameGap:v,nameTextStyle:C,triggerEvent:y},!1);Le(g)?S.name=g.replace("{value}",S.name??""):qe(g)&&(S.name=g(S.name,S));var T=new zn(S,null,this.ecModel);return Ii(T,cm.prototype),T.mainType="radar",T.componentIndex=this.componentIndex,T},this);this._indicatorModels=b},n.prototype.getIndicatorModels=function(){return this._indicatorModels},n.type="radar",n.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:St({lineStyle:{color:"#bbb"}},wm.axisLine),axisLabel:Ux(wm.axisLabel,!1),axisTick:Ux(wm.axisTick,!1),splitLine:Ux(wm.splitLine,!0),splitArea:Ux(wm.splitArea,!0),indicator:[]},n}(jt);const wj=lB;var cB=["axisLine","axisTickLabel","axisName"],dB=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},n.prototype._buildAxes=function(t){var o=t.coordinateSystem;U(xe(o.getIndicatorAxes(),function(u){var h=u.model.get("showName")?u.name:"";return new Uo(u.model,{axisName:h,position:[o.cx,o.cy],rotation:u.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(u){U(cB,u.add,u),this.group.add(u.getGroup())},this)},n.prototype._buildSplitLineAndArea=function(t){var o=t.coordinateSystem,l=o.getIndicatorAxes();if(l.length){var c=t.get("shape"),u=t.getModel("splitLine"),h=t.getModel("splitArea"),p=u.getModel("lineStyle"),m=h.getModel("areaStyle"),g=u.get("show"),v=h.get("show"),y=p.get("color"),b=m.get("color"),x=be(y)?y:[y],C=be(b)?b:[b],S=[],M=[];if("circle"===c)for(var A=l[0].getTicksCoords(),E=o.cx,L=o.cy,R=0;R3?1.4:u>1?1.2:1.1;Cm(this,"zoom","zoomOnMouseWheel",t,{scale:c>0?m:1/m,originX:h,originY:p,isAvailableBehavior:null})}if(l){var v=Math.abs(c);Cm(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(c>0?1:-1)*(v>3?.4:v>1?.15:.05),originX:h,originY:p,isAvailableBehavior:null})}}},n.prototype._pinchHandler=function(t){U_(this._zr,"globalPan")||Cm(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},n}(ao);function Cm(r,n,t,o,l){r.pointerChecker&&r.pointerChecker(o,l.originX,l.originY)&&(mn(o.event),hB(r,n,t,o,l))}function hB(r,n,t,o,l){l.isAvailableBehavior=Ne(Sm,null,t,o),r.trigger(n,l)}function Sm(r,n,t){var o=t[r];return!r||o&&(!Le(o)||n.event[o+"Key"])}const Cu=uB;function $x(r,n,t){var o=r.target;o.x+=n,o.y+=t,o.dirty()}function Wx(r,n,t,o){var l=r.target,c=r.zoomLimit,u=r.zoom=r.zoom||1;if(u*=n,c){var h=c.min||0;u=Math.max(Math.min(c.max||1/0,u),h)}var m=u/r.zoom;r.zoom=u,l.x-=(t-l.x)*(m-1),l.y-=(o-l.y)*(m-1),l.scaleX*=m,l.scaleY*=m,l.dirty()}var Dj={axisPointer:1,tooltip:1,brush:1};function Yx(r,n,t){var o=n.getComponentByElement(r.topTarget),l=o&&o.coordinateSystem;return o&&o!==t&&!Dj.hasOwnProperty(o.mainType)&&l&&l.model!==t}function fB(r){Le(r)&&(r=(new DOMParser).parseFromString(r,"text/xml"));var t=r;for(9===t.nodeType&&(t=t.firstChild);"svg"!==t.nodeName.toLowerCase()||1!==t.nodeType;)t=t.nextSibling;return t}var Dm,qx={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},pB=Yt(qx),Xx={"alignment-baseline":"textBaseline","stop-color":"stopColor"},mB=Yt(Xx),Mj=function(){function r(){this._defs={},this._root=null}return r.prototype.parse=function(n,t){t=t||{};var o=fB(n);this._defsUsePending=[];var l=new ct;this._root=l;var g,v,c=[],u=o.getAttribute("viewBox")||"",h=parseFloat(o.getAttribute("width")||t.width),p=parseFloat(o.getAttribute("height")||t.height);isNaN(h)&&(h=null),isNaN(p)&&(p=null),Fs(o,l,null,!0,!1);for(var m=o.firstChild;m;)this._parseNode(m,l,c,null,!1,!1),m=m.nextSibling;if(function $_(r,n){for(var t=0;t=4&&(g={x:parseFloat(y[0]||0),y:parseFloat(y[1]||0),width:parseFloat(y[2]),height:parseFloat(y[3])})}if(g&&null!=h&&null!=p&&(v=sk(g,{x:0,y:0,width:h,height:p}),!t.ignoreViewBox)){var b=l;(l=new ct).add(b),b.scaleX=b.scaleY=v.scale,b.x=v.x,b.y=v.y}return!t.ignoreRootClip&&null!=h&&null!=p&&l.setClipPath(new an({shape:{x:0,y:0,width:h,height:p}})),{root:l,width:h,height:p,viewBoxRect:g,viewBoxTransform:v,named:c}},r.prototype._parseNode=function(n,t,o,l,c,u){var p,h=n.nodeName.toLowerCase(),m=l;if("defs"===h&&(c=!0),"text"===h&&(u=!0),"defs"===h||"switch"===h)p=t;else{if(!c){var g=Dm[h];if(g&&Ve(Dm,h)){p=g.call(this,n,t);var v=n.getAttribute("name");if(v){var y={name:v,namedFrom:null,svgNodeTagLower:h,el:p};o.push(y),"g"===h&&(m=y)}else l&&o.push({name:l.name,namedFrom:l,svgNodeTagLower:h,el:p});t.add(p)}}var b=Zx[h];if(b&&Ve(Zx,h)){var x=b.call(this,n),C=n.getAttribute("id");C&&(this._defs[C]=x)}}if(p&&p.isGroup)for(var S=n.firstChild;S;)1===S.nodeType?this._parseNode(S,p,o,m,c,u):3===S.nodeType&&u&&this._parseText(S,p),S=S.nextSibling},r.prototype._parseText=function(n,t){var o=new Lo({style:{text:n.textContent},silent:!0,x:this._textX||0,y:this._textY||0});Jr(t,o),Fs(n,o,this._defsUsePending,!1,!1),function Tj(r,n){var t=n.__selfStyle;if(t){var o=t.textBaseline,l=o;o&&"auto"!==o&&"baseline"!==o?"before-edge"===o||"text-before-edge"===o?l="top":"after-edge"===o||"text-after-edge"===o?l="bottom":("central"===o||"mathematical"===o)&&(l="middle"):l="alphabetic",r.style.textBaseline=l}var c=n.__inheritedStyle;if(c){var u=c.textAlign,h=u;u&&("middle"===u&&(h="center"),r.style.textAlign=h)}}(o,t);var l=o.style,c=l.fontSize;c&&c<9&&(l.fontSize=9,o.scaleX*=c/9,o.scaleY*=c/9);var u=(l.fontSize||l.fontFamily)&&[l.fontStyle,l.fontWeight,(l.fontSize||12)+"px",l.fontFamily||"sans-serif"].join(" ");l.font=u;var h=o.getBoundingRect();return this._textX+=h.width,t.add(o),o},r.internalField=void(Dm={g:function(n,t){var o=new ct;return Jr(t,o),Fs(n,o,this._defsUsePending,!1,!1),o},rect:function(n,t){var o=new an;return Jr(t,o),Fs(n,o,this._defsUsePending,!1,!1),o.setShape({x:parseFloat(n.getAttribute("x")||"0"),y:parseFloat(n.getAttribute("y")||"0"),width:parseFloat(n.getAttribute("width")||"0"),height:parseFloat(n.getAttribute("height")||"0")}),o.silent=!0,o},circle:function(n,t){var o=new al;return Jr(t,o),Fs(n,o,this._defsUsePending,!1,!1),o.setShape({cx:parseFloat(n.getAttribute("cx")||"0"),cy:parseFloat(n.getAttribute("cy")||"0"),r:parseFloat(n.getAttribute("r")||"0")}),o.silent=!0,o},line:function(n,t){var o=new Fr;return Jr(t,o),Fs(n,o,this._defsUsePending,!1,!1),o.setShape({x1:parseFloat(n.getAttribute("x1")||"0"),y1:parseFloat(n.getAttribute("y1")||"0"),x2:parseFloat(n.getAttribute("x2")||"0"),y2:parseFloat(n.getAttribute("y2")||"0")}),o.silent=!0,o},ellipse:function(n,t){var o=new Zv;return Jr(t,o),Fs(n,o,this._defsUsePending,!1,!1),o.setShape({cx:parseFloat(n.getAttribute("cx")||"0"),cy:parseFloat(n.getAttribute("cy")||"0"),rx:parseFloat(n.getAttribute("rx")||"0"),ry:parseFloat(n.getAttribute("ry")||"0")}),o.silent=!0,o},polygon:function(n,t){var l,o=n.getAttribute("points");o&&(l=Kx(o));var c=new vo({shape:{points:l||[]},silent:!0});return Jr(t,c),Fs(n,c,this._defsUsePending,!1,!1),c},polyline:function(n,t){var l,o=n.getAttribute("points");o&&(l=Kx(o));var c=new _o({shape:{points:l||[]},silent:!0});return Jr(t,c),Fs(n,c,this._defsUsePending,!1,!1),c},image:function(n,t){var o=new la;return Jr(t,o),Fs(n,o,this._defsUsePending,!1,!1),o.setStyle({image:n.getAttribute("xlink:href")||n.getAttribute("href"),x:+n.getAttribute("x"),y:+n.getAttribute("y"),width:+n.getAttribute("width"),height:+n.getAttribute("height")}),o.silent=!0,o},text:function(n,t){var o=n.getAttribute("x")||"0",l=n.getAttribute("y")||"0",c=n.getAttribute("dx")||"0",u=n.getAttribute("dy")||"0";this._textX=parseFloat(o)+parseFloat(c),this._textY=parseFloat(l)+parseFloat(u);var h=new ct;return Jr(t,h),Fs(n,h,this._defsUsePending,!1,!0),h},tspan:function(n,t){var o=n.getAttribute("x"),l=n.getAttribute("y");null!=o&&(this._textX=parseFloat(o)),null!=l&&(this._textY=parseFloat(l));var c=n.getAttribute("dx")||"0",u=n.getAttribute("dy")||"0",h=new ct;return Jr(t,h),Fs(n,h,this._defsUsePending,!1,!0),this._textX+=parseFloat(c),this._textY+=parseFloat(u),h},path:function(n,t){var l=Xv(n.getAttribute("d")||"");return Jr(t,l),Fs(n,l,this._defsUsePending,!1,!1),l.silent=!0,l}}),r}(),Zx={lineargradient:function(r){var n=parseInt(r.getAttribute("x1")||"0",10),t=parseInt(r.getAttribute("y1")||"0",10),o=parseInt(r.getAttribute("x2")||"10",10),l=parseInt(r.getAttribute("y2")||"0",10),c=new Kh(n,t,o,l);return j_(r,c),gB(r,c),c},radialgradient:function(r){var n=parseInt(r.getAttribute("cx")||"0",10),t=parseInt(r.getAttribute("cy")||"0",10),o=parseInt(r.getAttribute("r")||"0",10),l=new yw(n,t,o);return j_(r,l),gB(r,l),l}};function j_(r,n){"userSpaceOnUse"===r.getAttribute("gradientUnits")&&(n.global=!0)}function gB(r,n){for(var t=r.firstChild;t;){if(1===t.nodeType&&"stop"===t.nodeName.toLocaleLowerCase()){var l,o=t.getAttribute("offset");l=o&&o.indexOf("%")>0?parseInt(o,10)/100:o?parseFloat(o):0;var c={};bB(t,c,c);var u=c.stopColor||t.getAttribute("stop-color")||"#000000";n.colorStops.push({offset:l,color:u})}t=t.nextSibling}}function Jr(r,n){r&&r.__inheritedStyle&&(n.__inheritedStyle||(n.__inheritedStyle={}),Ye(n.__inheritedStyle,r.__inheritedStyle))}function Kx(r){for(var n=dd(r),t=[],o=0;o0;c-=2){var h=o[c-1],p=dd(o[c]);switch(l=l||[1,0,0,1,0,0],h){case"translate":ss(l,l,[parseFloat(p[0]),parseFloat(p[1]||"0")]);break;case"scale":dt(l,l,[parseFloat(p[0]),parseFloat(p[1]||p[0])]);break;case"rotate":Ec(l,l,-parseFloat(p[0])*Qx);break;case"skewX":Xs(l,[1,0,Math.tan(parseFloat(p[0])*Qx),1,0,0],l);break;case"skewY":Xs(l,[1,Math.tan(parseFloat(p[0])*Qx),0,1,0,0],l);break;case"matrix":l[0]=parseFloat(p[0]),l[1]=parseFloat(p[1]),l[2]=parseFloat(p[2]),l[3]=parseFloat(p[3]),l[4]=parseFloat(p[4]),l[5]=parseFloat(p[5])}}n.setLocalTransform(l)}}(r,n),bB(r,u,h),o||function kj(r,n,t){for(var o=0;o0,S={api:o,geo:p,mapOrGeoModel:n,data:h,isVisualEncodedByVisualMap:C,isGeo:u,transformInfoRaw:y};"geoJSON"===p.resourceType?this._buildGeoJSON(S):"geoSVG"===p.resourceType&&this._buildSVG(S),this._updateController(n,t,o),this._updateMapSelectHandler(n,m,o,l)},r.prototype._buildGeoJSON=function(n){var t=this._regionsGroupByName=$e(),o=$e(),l=this._regionsGroup,c=n.transformInfoRaw,u=n.mapOrGeoModel,h=n.data,p=n.geo.projection,m=p&&p.stream;function g(b,x){return x&&(b=x(b)),b&&[b[0]*c.scaleX+c.x,b[1]*c.scaleY+c.y]}function v(b){for(var x=[],C=!m&&p&&p.project,S=0;S=0)&&(y=l);var b=u?{normal:{align:"center",verticalAlign:"middle"}}:null;Zr(n,Or(o),{labelFetcher:y,labelDataIndex:v,defaultText:t},b);var x=n.getTextContent();if(x&&(CB(x).ignore=x.ignore,n.textConfig&&u)){var C=n.getBoundingRect().clone();n.textConfig.layoutRect=C,n.textConfig.position=[(u[0]-C.x)/C.width*100+"%",(u[1]-C.y)/C.height*100+"%"]}n.disableLabelAnimation=!0}else n.removeTextContent(),n.removeTextConfig(),n.disableLabelAnimation=null}function MB(r,n,t,o,l,c){r.data?r.data.setItemGraphicEl(c,n):_t(n).eventData={componentType:"geo",componentIndex:l.componentIndex,geoIndex:l.componentIndex,name:t,region:o&&o.option||{}}}function pk(r,n,t,o,l){r.data||ll({el:n,componentModel:l,itemName:t,itemTooltipOption:o.get("tooltip")})}function eC(r,n,t,o,l){n.highDownSilentOnTouch=!!l.get("selectedMode");var c=o.getModel("emphasis"),u=c.get("focus");return Ri(n,u,c.get("blurScope"),c.get("disabled")),r.isGeo&&function m8(r,n,t){var o=_t(r);o.componentMainType=n.mainType,o.componentIndex=n.componentIndex,o.componentHighDownName=t}(n,l,t),u}function tC(r,n,t){var l,o=[];function c(){l=[]}function u(){l.length&&(o.push(l),l=[])}var h=n({polygonStart:c,polygonEnd:u,lineStart:c,lineEnd:u,point:function(p,m){isFinite(p)&&isFinite(m)&&l.push([p,m])},sphere:function(){}});return!t&&h.polygonStart(),U(r,function(p){h.lineStart();for(var m=0;m-1&&(l.style.stroke=l.style.fill,l.style.fill="#fff",l.style.lineWidth=2),l},n.type="series.map",n.dependencies=["geo"],n.layoutMode="box",n.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},n}(Zn);const zj=AB;function kB(r){var n={};r.eachSeriesByType("map",function(t){var o=t.getHostGeoModel(),l=o?"o"+o.id:"i"+t.getMapType();(n[l]=n[l]||[]).push(t)}),U(n,function(t,o){for(var l=function xi(r,n){var t={};return U(r,function(o){o.each(o.mapDimension("value"),function(l,c){var u="ec-"+o.getName(c);t[u]=t[u]||[],isNaN(l)||t[u].push(l)})}),r[0].map(r[0].mapDimension("value"),function(o,l){for(var c="ec-"+r[0].getName(l),u=0,h=1/0,p=-1/0,m=t[c].length,g=0;g1?(E.width=A,E.height=A/S):(E.height=A,E.width=A*S),E.y=T[1]-E.height/2,E.x=T[0]-E.width/2;else{var L=r.getBoxLayoutParams();L.aspect=S,E=cr(L,{width:x,height:C})}this.setViewRect(E.x,E.y,E.width,E.height),this.setCenter(r.get("center"),n),this.setZoom(r.get("zoom"))}var OB=function(){function r(){this.dimensions=iC}return r.prototype.create=function(n,t){var o=[];function l(u){return{nameProperty:u.get("nameProperty"),aspectScale:u.get("aspectScale"),projection:u.get("projection")}}n.eachComponent("geo",function(u,h){var p=u.get("map"),m=new PB(p+h,p,ge({nameMap:u.get("nameMap")},l(u)));m.zoomLimit=u.get("scaleLimit"),o.push(m),u.coordinateSystem=m,m.model=u,m.resize=RB,m.resize(u,t)}),n.eachSeries(function(u){if("geo"===u.get("coordinateSystem")){var p=u.get("geoIndex")||0;u.coordinateSystem=o[p]}});var c={};return n.eachSeriesByType("map",function(u){if(!u.getHostGeoModel()){var h=u.getMapType();c[h]=c[h]||[],c[h].push(u)}}),U(c,function(u,h){var p=xe(u,function(g){return g.get("nameMap")}),m=new PB(h,h,ge({nameMap:gS(p)},l(u[0])));m.zoomLimit=Vi.apply(null,xe(u,function(g){return g.get("scaleLimit")})),o.push(m),m.resize=RB,m.resize(u[0],t),U(u,function(g){g.coordinateSystem=m,function gk(r,n){U(n.get("geoCoord"),function(t,o){r.addGeoCoord(o,t)})}(m,g)})}),o},r.prototype.getFilledRegions=function(n,t,o,l){for(var c=(n||[]).slice(),u=$e(),h=0;h=0;){var c=n[t];c.hierNode.prelim+=o,c.hierNode.modifier+=o,o+=c.hierNode.shift+(l+=c.hierNode.change)}}(r);var c=(t[0].hierNode.prelim+t[t.length-1].hierNode.prelim)/2;l?(r.hierNode.prelim=l.hierNode.prelim+n(r,l),r.hierNode.modifier=r.hierNode.prelim-c):r.hierNode.prelim=c}else l&&(r.hierNode.prelim=l.hierNode.prelim+n(r,l));r.parentNode.hierNode.defaultAncestor=function qj(r,n,t,o){if(n){for(var l=r,c=r,u=c.parentNode.children[0],h=n,p=l.hierNode.modifier,m=c.hierNode.modifier,g=u.hierNode.modifier,v=h.hierNode.modifier;h=K_(h),c=xo(c),h&&c;){l=K_(l),u=xo(u),l.hierNode.ancestor=r;var y=h.hierNode.prelim+v-c.hierNode.prelim-m+o(h,c);y>0&&(Q_(BB(h,r,t),r,y),m+=y,p+=y),v+=h.hierNode.modifier,m+=c.hierNode.modifier,p+=l.hierNode.modifier,g+=u.hierNode.modifier}h&&!K_(l)&&(l.hierNode.thread=h,l.hierNode.modifier+=v-p),c&&!xo(u)&&(u.hierNode.thread=c,u.hierNode.modifier+=m-g,t=r)}return t}(r,l,r.parentNode.hierNode.defaultAncestor||o[0],n)}function BK(r){r.setLayout({x:r.hierNode.prelim+r.parentNode.hierNode.modifier},!0),r.hierNode.modifier+=r.parentNode.hierNode.modifier}function $j(r){return arguments.length?r:Xj}function Tf(r,n){return r-=Math.PI/2,{x:n*Math.cos(r),y:n*Math.sin(r)}}function K_(r){var n=r.children;return n.length&&r.isExpand?n[n.length-1]:r.hierNode.thread}function xo(r){var n=r.children;return n.length&&r.isExpand?n[0]:r.hierNode.thread}function BB(r,n,t){return r.hierNode.ancestor.parentNode===n.parentNode?r.hierNode.ancestor:t}function Q_(r,n,t){var o=t/(n.hierNode.i-r.hierNode.i);n.hierNode.change-=o,n.hierNode.shift+=t,n.hierNode.modifier+=t,n.hierNode.prelim+=t,r.hierNode.change+=o}function Xj(r,n){return r.parentNode===n.parentNode?1:2}var Zj=function r(){this.parentPoint=[],this.childPoints=[]},VB=function(r){function n(t){return r.call(this,t)||this}return le(n,r),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new Zj},n.prototype.buildPath=function(t,o){var l=o.childPoints,c=l.length,u=o.parentPoint,h=l[0],p=l[c-1];if(1===c)return t.moveTo(u[0],u[1]),void t.lineTo(h[0],h[1]);var m=o.orient,g="TB"===m||"BT"===m?0:1,v=1-g,y=Ie(o.forkPosition,1),b=[];b[g]=u[g],b[v]=u[v]+(p[v]-u[v])*y,t.moveTo(u[0],u[1]),t.lineTo(b[0],b[1]),t.moveTo(h[0],h[1]),b[g]=h[g],t.lineTo(b[0],b[1]),b[g]=p[g],t.lineTo(b[0],b[1]),t.lineTo(p[0],p[1]);for(var x=1;xT.x)||(E-=Math.PI);var B=L?"left":"right",H=h.getModel("label"),G=H.get("rotate"),j=G*(Math.PI/180),$=S.getTextContent();$&&(S.setTextConfig({position:H.get("position")||B,rotation:null==G?-E:j,origin:"center"}),$.setStyle("verticalAlign","middle"))}var X=h.get(["emphasis","focus"]),K="relative"===X?jn(u.getAncestorsIndices(),u.getDescendantIndices()):"ancestor"===X?u.getAncestorsIndices():"descendant"===X?u.getDescendantIndices():null;K&&(_t(t).focus=K),function Im(r,n,t,o,l,c,u,h){var p=n.getModel(),m=r.get("edgeShape"),g=r.get("layout"),v=r.getOrient(),y=r.get(["lineStyle","curveness"]),b=r.get("edgeForkPosition"),x=p.getModel("lineStyle").getLineStyle(),C=o.__edge;if("curve"===m)n.parentNode&&n.parentNode!==t&&(C||(C=o.__edge=new n_({shape:Af(g,v,y,l,l)})),un(C,{shape:Af(g,v,y,c,u)},r));else if("polyline"===m&&"orthogonal"===g&&n!==t&&n.children&&0!==n.children.length&&!0===n.isExpand){for(var S=n.children,M=[],T=0;Tt&&(t=l.height)}this.height=t+1},r.prototype.getNodeById=function(n){if(this.getId()===n)return this;for(var t=0,o=this.children,l=o.length;t=0&&this.hostTree.data.setItemLayout(this.dataIndex,n,t)},r.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},r.prototype.getModel=function(n){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(n)},r.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},r.prototype.setVisual=function(n,t){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,n,t)},r.prototype.getVisual=function(n){return this.hostTree.data.getItemVisual(this.dataIndex,n)},r.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},r.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},r.prototype.getChildIndex=function(){if(this.parentNode){for(var n=this.parentNode.children,t=0;t=0){var o=t.getData().tree.root,l=r.targetNode;if(Le(l)&&(l=o.getNodeById(l)),l&&o.contains(l))return{node:l};var c=r.targetNodeId;if(null!=c&&(l=o.getNodeById(c)))return{node:l}}}function jB(r){for(var n=[];r;)(r=r.parentNode)&&n.push(r);return n.reverse()}function bk(r,n){return Mt(jB(r),n)>=0}function sC(r,n){for(var t=[];r;){var o=r.dataIndex;t.push({name:r.name,dataIndex:o,value:n.getRawValue(o)}),r=r.parentNode}return t.reverse(),t}var o7=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.hasSymbolVisual=!0,t.ignoreStyleOnData=!0,t}return le(n,r),n.prototype.getInitialData=function(t){var o={name:t.name,children:t.data},c=new zn(t.leaves||{},this,this.ecModel),u=yk.createTree(o,this,function h(v){v.wrapMethod("getItemModel",function(y,b){var x=u.getNodeByDataIndex(b);return x&&x.children.length&&x.isExpand||(y.parentModel=c),y})}),p=0;u.eachNode("preorder",function(v){v.depth>p&&(p=v.depth)});var g=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:p;return u.root.eachNode("preorder",function(v){var y=v.hostTree.data.getRawDataItem(v.dataIndex);v.isExpand=y&&null!=y.collapsed?!y.collapsed:v.depth<=g}),u.data},n.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},n.prototype.setZoom=function(t){this.option.zoom=t},n.prototype.setCenter=function(t){this.option.center=t},n.prototype.formatTooltip=function(t,o,l){for(var c=this.getData().tree,u=c.root.children[0],h=c.getNodeByDataIndex(t),p=h.getValue(),m=h.name;h&&h!==u;)m=h.parentNode.name+"."+m,h=h.parentNode;return Oi("nameValue",{name:m,value:p,noValue:isNaN(p)||null==p})},n.prototype.getDataParams=function(t){var o=r.prototype.getDataParams.apply(this,arguments),l=this.getData().tree.getNodeByDataIndex(t);return o.treeAncestors=sC(l,this),o.collapsed=!l.isExpand,o},n.type="series.tree",n.layoutMode="box",n.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},n}(Zn);const $B=o7;function Ef(r,n){for(var o,t=[r];o=t.pop();)if(n(o),o.isExpand){var l=o.children;if(l.length)for(var c=l.length-1;c>=0;c--)t.push(l[c])}}function WB(r,n){r.eachSeriesByType("tree",function(t){!function wk(r,n){var t=function Wj(r,n){return cr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}(r,n);r.layoutInfo=t;var o=r.get("layout"),l=0,c=0,u=null;"radial"===o?(l=2*Math.PI,c=Math.min(t.height,t.width)/2,u=$j(function(A,E){return(A.parentNode===E.parentNode?1:2)/A.depth})):(l=t.width,c=t.height,u=$j());var h=r.getData().tree.root,p=h.children[0];if(p){(function FK(r){var n=r;n.hierNode={defaultAncestor:null,ancestor:n,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var o,l,t=[n];o=t.pop();)if(l=o.children,o.isExpand&&l.length)for(var u=l.length-1;u>=0;u--){var h=l[u];h.hierNode={defaultAncestor:null,ancestor:h,prelim:0,modifier:0,change:0,shift:0,i:u,thread:null},t.push(h)}})(h),function s7(r,n,t){for(var c,o=[r],l=[];c=o.pop();)if(l.push(c),c.isExpand){var u=c.children;if(u.length)for(var h=0;hg.getLayout().x&&(g=A),A.depth>v.depth&&(v=A)});var y=m===g?1:u(m,g)/2,b=y-m.getLayout().x,x=0,C=0,S=0,M=0;if("radial"===o)x=l/(g.getLayout().x+y+b),C=c/(v.depth-1||1),Ef(p,function(A){var E=Tf(S=(A.getLayout().x+b)*x,M=(A.depth-1)*C);A.setLayout({x:E.x,y:E.y,rawX:S,rawY:M},!0)});else{var T=r.getOrient();"RL"===T||"LR"===T?(C=c/(g.getLayout().x+y+b),x=l/(v.depth-1||1),Ef(p,function(A){M=(A.getLayout().x+b)*C,A.setLayout({x:S="LR"===T?(A.depth-1)*x:l-(A.depth-1)*x,y:M},!0)})):("TB"===T||"BT"===T)&&(x=l/(g.getLayout().x+y+b),C=c/(v.depth-1||1),Ef(p,function(A){S=(A.getLayout().x+b)*x,A.setLayout({x:S,y:M="TB"===T?(A.depth-1)*C:c-(A.depth-1)*C},!0)}))}}}(t,n)})}function lC(r){r.eachSeriesByType("tree",function(n){var t=n.getData();t.tree.eachNode(function(l){var u=l.getModel().getModel("itemStyle").getItemStyle();ge(t.ensureUniqueItemVisual(l.dataIndex,"style"),u)})})}var YB=["treemapZoomToNode","treemapRender","treemapMove"];function ty(r){var n=r.getData(),o={};n.tree.eachNode(function(l){for(var c=l;c&&c.depth>1;)c=c.parentNode;var u=Z0(r.ecModel,c.name||c.dataIndex+"",o);l.setVisual("decal",u)})}var qB=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.preventUsingHoverLayer=!0,t}return le(n,r),n.prototype.getInitialData=function(t,o){var l={name:t.name,children:t.data};xk(l);var c=t.levels||[],u=this.designatedVisualItemStyle={},h=new zn({itemStyle:u},this,o);c=t.levels=function cC(r,n){var t=On(n.get("color")),o=On(n.get(["aria","decal","decals"]));if(t){var l,c;U(r=r||[],function(h){var p=new zn(h),m=p.get("color"),g=p.get("decal");(p.get(["itemStyle","color"])||m&&"none"!==m)&&(l=!0),(p.get(["itemStyle","decal"])||g&&"none"!==g)&&(c=!0)});var u=r[0]||(r[0]={});return l||(u.color=t.slice()),!c&&o&&(u.decal=o.slice()),r}}(c,o);var p=xe(c||[],function(v){return new zn(v,h,o)},this),m=yk.createTree(l,this,function g(v){v.wrapMethod("getItemModel",function(y,b){var x=m.getNodeByDataIndex(b);return y.parentModel=(x?p[x.depth]:null)||h,y})});return m.data},n.prototype.optionUpdated=function(){this.resetViewRoot()},n.prototype.formatTooltip=function(t,o,l){var c=this.getData(),u=this.getRawValue(t);return Oi("nameValue",{name:c.getName(t),value:u})},n.prototype.getDataParams=function(t){var o=r.prototype.getDataParams.apply(this,arguments),l=this.getData().tree.getNodeByDataIndex(t);return o.treeAncestors=sC(l,this),o.treePathInfo=o.treeAncestors,o},n.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},ge(this.layoutInfo,t)},n.prototype.mapIdToIndex=function(t){var o=this._idIndexMap;o||(o=this._idIndexMap=$e(),this._idIndexMapCount=0);var l=o.get(t);return null==l&&o.set(t,l=this._idIndexMapCount++),l},n.prototype.getViewRoot=function(){return this._viewRoot},n.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var o=this.getRawData().tree.root;(!t||t!==o&&!o.contains(t))&&(this._viewRoot=o)},n.prototype.enableAriaDecal=function(){ty(this)},n.type="series.treemap",n.layoutMode="box",n.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"\u25b6",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}},emphasis:{itemStyle:{color:"rgba(0,0,0,0.9)"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},n}(Zn);function xk(r){var n=0;U(r.children,function(o){xk(o);var l=o.value;be(l)&&(l=l[0]),n+=l});var t=r.value;be(t)&&(t=t[0]),(null==t||isNaN(t))&&(t=n),t<0&&(t=0),be(r.value)?r.value[0]=t:r.value=t}const dC=qB;var u7=function(){function r(n){this.group=new ct,n.add(this.group)}return r.prototype.render=function(n,t,o,l){var c=n.getModel("breadcrumb"),u=this.group;if(u.removeAll(),c.get("show")&&o){var h=c.getModel("itemStyle"),p=c.getModel("emphasis"),m=h.getModel("textStyle"),g=p.getModel(["itemStyle","textStyle"]),v={pos:{left:c.get("left"),right:c.get("right"),top:c.get("top"),bottom:c.get("bottom")},box:{width:t.getWidth(),height:t.getHeight()},emptyItemWidth:c.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(o,v,m),this._renderContent(n,v,h,p,m,g,l),Bv(u,v.pos,v.box)}},r.prototype._prepare=function(n,t,o){for(var l=n;l;l=l.parentNode){var c=_r(l.getModel().get("name"),""),u=o.getTextRect(c),h=Math.max(u.width+16,t.emptyItemWidth);t.totalWidth+=h+8,t.renderList.push({node:l,text:c,width:h})}},r.prototype._renderContent=function(n,t,o,l,c,u,h){for(var p=0,m=t.emptyItemWidth,g=n.get(["breadcrumb","height"]),v=function D8(r,n,t){var o=n.width,l=n.height,c=Ie(r.left,o),u=Ie(r.top,l),h=Ie(r.right,o),p=Ie(r.bottom,l);return(isNaN(c)||isNaN(parseFloat(r.left)))&&(c=0),(isNaN(h)||isNaN(parseFloat(r.right)))&&(h=o),(isNaN(u)||isNaN(parseFloat(r.top)))&&(u=0),(isNaN(p)||isNaN(parseFloat(r.bottom)))&&(p=l),t=Fh(t||0),{width:Math.max(h-c-t[1]-t[3],0),height:Math.max(p-u-t[0]-t[2],0)}}(t.pos,t.box),y=t.totalWidth,b=t.renderList,x=l.getModel("itemStyle").getItemStyle(),C=b.length-1;C>=0;C--){var S=b[C],M=S.node,T=S.width,A=S.text;y>v.width&&(y-=T-m,T=m,A=null);var E=new vo({shape:{points:h7(p,0,T,g,C===b.length-1,0===C)},style:Ye(o.getItemStyle(),{lineJoin:"bevel"}),textContent:new dn({style:Xn(c,{text:A})}),textConfig:{position:"inside"},z2:1e5,onclick:vt(h,M)});E.disableLabelAnimation=!0,E.getTextContent().ensureState("emphasis").style=Xn(u,{text:A}),E.ensureState("emphasis").style=x,Ri(E,l.get("focus"),l.get("blurScope"),l.get("disabled")),this.group.add(E),f7(E,n,M),p+=T+8}},r.prototype.remove=function(){this.group.removeAll()},r}();function h7(r,n,t,o,l,c){var u=[[l?r:r-5,n],[r+t,n],[r+t,n+o],[l?r:r-5,n+o]];return!c&&u.splice(2,0,[r+t+5,n+o/2]),!l&&u.push([r,n+o/2]),u}function f7(r,n,t){_t(r).eventData={componentType:"series",componentSubType:"treemap",componentIndex:n.componentIndex,seriesIndex:n.seriesIndex,seriesName:n.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:t&&t.dataIndex,name:t&&t.name},treePathInfo:t&&sC(t,n)}}const p7=u7;var m7=function(){function r(){this._storage=[],this._elExistsMap={}}return r.prototype.add=function(n,t,o,l,c){return!this._elExistsMap[n.id]&&(this._elExistsMap[n.id]=!0,this._storage.push({el:n,target:t,duration:o,delay:l,easing:c}),!0)},r.prototype.finished=function(n){return this._finishedCallback=n,this},r.prototype.start=function(){for(var n=this,t=this._storage.length,o=function(){--t<=0&&(n._storage.length=0,n._elExistsMap={},n._finishedCallback&&n._finishedCallback())},l=0,c=this._storage.length;l3||Math.abs(t.dy)>3)){var o=this.seriesModel.getData().tree.root;if(!o)return;var l=o.getLayout();if(!l)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:l.x+t.dx,y:l.y+t.dy,width:l.width,height:l.height}})}},n.prototype._onZoom=function(t){var o=t.originX,l=t.originY;if("animating"!==this._state){var c=this.seriesModel.getData().tree.root;if(!c)return;var u=c.getLayout();if(!u)return;var h=new lt(u.x,u.y,u.width,u.height),p=this.seriesModel.layoutInfo,m=[1,0,0,1,0,0];ss(m,m,[-(o-=p.x),-(l-=p.y)]),dt(m,m,[t.scale,t.scale]),ss(m,m,[o,l]),h.applyTransform(m),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:h.x,y:h.y,width:h.width,height:h.height}})}},n.prototype._initEvents=function(t){var o=this;t.on("click",function(l){if("ready"===o._state){var c=o.seriesModel.get("nodeClick",!0);if(c){var u=o.findTarget(l.offsetX,l.offsetY);if(u){var h=u.node;if(h.getLayout().isLeafRoot)o._rootToNode(u);else if("zoomToNode"===c)o._zoomToNode(u);else if("link"===c){var p=h.hostTree.data.getItemModel(h.dataIndex),m=p.get("link",!0),g=p.get("target",!0)||"blank";m&&Vp(m,g)}}}}},this)},n.prototype._renderBreadcrumb=function(t,o,l){var c=this;l||(l=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(o.getWidth()/2,o.getHeight()/2))||(l={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new p7(this.group))).render(t,o,l.node,function(u){"animating"!==c._state&&(bk(t.getViewRoot(),u)?c._rootToNode({node:u}):c._zoomToNode({node:u}))})},n.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},n.prototype.dispose=function(){this._clearController()},n.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},n.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},n.prototype.findTarget=function(t,o){var l;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(u){var h=this._storage.background[u.getRawIndex()];if(h){var p=h.transformCoordToLocal(t,o),m=h.shape;if(!(m.x<=p[0]&&p[0]<=m.x+m.width&&m.y<=p[1]&&p[1]<=m.y+m.height))return!1;l={node:u,offsetX:p[0],offsetY:p[1]}}},this),l},n.type="treemap",n}(Nn);const y7=zK;var iy=U,b7=ze,Dk=function(){function r(n){var t=n.mappingMethod,o=n.type,l=this.option=rt(n);this.type=o,this.mappingMethod=t,this._normalizeData=rV[t];var c=r.visualHandlers[o];this.applyVisual=c.applyVisual,this.getColorMapper=c.getColorMapper,this._normalizedToVisual=c._normalizedToVisual[t],"piecewise"===t?(Tk(l),function iV(r){var n=r.pieceList;r.hasSpecialVisual=!1,U(n,function(t,o){t.originIndex=o,null!=t.visual&&(r.hasSpecialVisual=!0)})}(l)):"category"===t?l.categories?function Mk(r){var n=r.categories,t=r.categoryMap={},o=r.visual;if(iy(n,function(u,h){t[u]=h}),!be(o)){var l=[];ze(o)?iy(o,function(u,h){l[t[h]??-1]=u}):l[-1]=o,o=Ak(r,l)}for(var c=n.length-1;c>=0;c--)null==o[c]&&(delete t[n[c]],n.pop())}(l):Tk(l,!0):(xa("linear"!==t||l.dataExtent),Tk(l))}return r.prototype.mapValueToVisual=function(n){var t=this._normalizeData(n);return this._normalizedToVisual(t,n)},r.prototype.getNormalizer=function(){return Ne(this._normalizeData,this)},r.listVisualTypes=function(){return Yt(r.visualHandlers)},r.isValidType=function(n){return r.visualHandlers.hasOwnProperty(n)},r.eachVisual=function(n,t,o){ze(n)?U(n,t,o):t.call(o,n)},r.mapVisual=function(n,t,o){var l,c=be(n)?[]:ze(n)?{}:(l=!0,null);return r.eachVisual(n,function(u,h){var p=t.call(o,u,h);l?c=p:c[h]=p}),c},r.retrieveVisuals=function(n){var o,t={};return n&&iy(r.visualHandlers,function(l,c){n.hasOwnProperty(c)&&(t[c]=n[c],o=!0)}),o?t:null},r.prepareVisualTypes=function(n){if(be(n))n=n.slice();else{if(!b7(n))return[];var t=[];iy(n,function(o,l){t.push(l)}),n=t}return n.sort(function(o,l){return"color"===l&&"color"!==o&&0===o.indexOf("color")?1:-1}),n},r.dependsOn=function(n,t){return"color"===t?!(!n||0!==n.indexOf(t)):n===t},r.findPieceIndex=function(n,t,o){for(var l,c=1/0,u=0,h=t.length;um[1]&&(m[1]=p);var g=n.get("colorMappingBy"),v={type:u.name,dataExtent:m,visual:u.range};"color"!==v.type||"index"!==g&&"id"!==g?v.mappingMethod="linear":(v.mappingMethod="category",v.loop=!0);var y=new _a(v);return aV(y).drColorMappingBy=g,y}}}(0,l,c,0,p,b);U(b,function(C,S){if(C.depth>=t.length||C===t[C.depth]){var M=function D7(r,n,t,o,l,c){var u=ge({},n);if(l){var h=l.type,p="color"===h&&aV(l).drColorMappingBy,m="index"===p?o:"id"===p?c.mapIdToIndex(t.getId()):t.getValue(r.get("visualDimension"));u[h]=l.mapValueToVisual(m)}return u}(l,p,C,S,x,o);oy(C,M,t,o)}})}else y=oV(p),m.fill=y}}function oV(r){var n=kk(r,"color");if(n){var t=kk(r,"colorAlpha"),o=kk(r,"colorSaturation");return o&&(n=Me(n,null,null,o)),t&&(n=yn(n,t)),n}}function kk(r,n){var t=r[n];if(null!=t&&"none"!==t)return t}function Ek(r,n){var t=r.get(n);return be(t)&&t.length?{name:n,range:t}:null}var ea=Math.max,pC=Math.min,jo=Vi,Ik=U,lV=["itemStyle","borderWidth"],cV=["itemStyle","gapWidth"],HK=["upperLabel","show"],GK=["upperLabel","height"];const M7={seriesType:"treemap",reset:function(r,n,t,o){var l=t.getWidth(),c=t.getHeight(),u=r.option,h=cr(r.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),p=u.size||[],m=Ie(jo(h.width,p[0]),l),g=Ie(jo(h.height,p[1]),c),v=o&&o.type,b=ey(o,["treemapZoomToNode","treemapRootToNode"],r),x="treemapRender"===v||"treemapMove"===v?o.rootRect:null,C=r.getViewRoot(),S=jB(C);if("treemapMove"!==v){var M="treemapZoomToNode"===v?function T7(r,n,t,o,l){var c=(n||{}).node,u=[o,l];if(!c||c===t)return u;for(var h,p=o*l,m=p*r.option.zoomToNodeRatio;h=c.parentNode;){for(var g=0,v=h.children,y=0,b=v.length;yiD&&(m=iD),c=h}mh[1]&&(h[1]=m)})):h=[NaN,NaN],{sum:o,dataExtent:h}}(n,u,h);if(0===m.sum)return r.viewChildren=[];if(m.sum=function Bm(r,n,t,o,l){if(!o)return t;for(var c=r.get("visibleMin"),u=l.length,h=u,p=u-1;p>=0;p--){var m=l["asc"===o?u-p-1:p].getValue();m/t*no&&(o=u));var p=r.area*r.area,m=n*n*t;return p?ea(m*o/p,p/(m*l)):1/0}function gC(r,n,t,o,l){var c=n===t.width?0:1,u=1-c,h=["x","y"],p=["width","height"],m=t[h[c]],g=n?r.area/n:0;(l||g>t[p[u]])&&(g=t[p[u]]);for(var v=0,y=r.length;vo&&(o=n);var c=o%2?o+2:o+3;l=[];for(var u=0;u0&&(L[0]=-L[0],L[1]=-L[1]);var B=E[0]<0?-1:1;if("start"!==c.__position&&"end"!==c.__position){var H=-Math.atan2(E[1],E[0]);v[0].8?"left":y[0]<-.8?"right":"center",C=y[1]>.8?"top":y[1]<-.8?"bottom":"middle";break;case"start":c.x=-y[0]*M+g[0],c.y=-y[1]*T+g[1],x=y[0]>.8?"right":y[0]<-.8?"left":"center",C=y[1]>.8?"bottom":y[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":c.x=M*B+g[0],c.y=g[1]+G,x=E[0]<0?"right":"left",c.originX=-M*B,c.originY=-G;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":c.x=R[0],c.y=R[1]+G,x="center",c.originY=-G;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":c.x=-M*B+v[0],c.y=v[1]+G,x=E[0]>=0?"right":"left",c.originX=M*B,c.originY=-G}c.scaleX=c.scaleY=u,c.setStyle({verticalAlign:c.__verticalAlign||C,align:c.__align||x})}}}function b(j,$){var X=j.__specifiedRotation;if(null==X){var K=p.tangentAt($);j.attr("rotation",(1===$?-1:1)*Math.PI/2-Math.atan2(K[1],K[0]))}else j.attr("rotation",X)}},n}(ct);const Hk=cy;var SV=function(){function r(n){this.group=new ct,this._LineCtor=n||Hk}return r.prototype.updateData=function(n){var t=this;this._progressiveEls=null;var o=this,l=o.group,c=o._lineData;o._lineData=n,c||l.removeAll();var u=CC(n);n.diff(c).add(function(h){t._doAdd(n,h,u)}).update(function(h,p){t._doUpdate(c,n,p,h,u)}).remove(function(h){l.remove(c.getItemGraphicEl(h))}).execute()},r.prototype.updateLayout=function(){var n=this._lineData;n&&n.eachItemGraphicEl(function(t,o){t.updateLayout(n,o)},this)},r.prototype.incrementalPrepareUpdate=function(n){this._seriesScope=CC(n),this._lineData=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(n,t){function o(h){!h.isGroup&&!function dy(r){return r.animators&&r.animators.length>0}(h)&&(h.incremental=!0,h.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[];for(var l=n.start;l=0?h+=m:h-=m:x>=0?h-=m:h+=m}return h}function $k(r,n){var t=[],o=Qg,l=[[],[],[]],c=[[],[]],u=[];n/=2,r.eachEdge(function(h,p){var m=h.getLayout(),g=h.getVisual("fromSymbol"),v=h.getVisual("toSymbol");m.__original||(m.__original=[Dc(m[0]),Dc(m[1])],m[2]&&m.__original.push(Dc(m[2])));var y=m.__original;if(null!=m[2]){if(qt(l[0],y[0]),qt(l[1],y[2]),qt(l[2],y[1]),g&&"none"!==g){var b=zm(h.node1),x=TV(l,y[0],b*n);o(l[0][0],l[1][0],l[2][0],x,t),l[0][0]=t[3],l[1][0]=t[4],o(l[0][1],l[1][1],l[2][1],x,t),l[0][1]=t[3],l[1][1]=t[4]}v&&"none"!==v&&(b=zm(h.node2),x=TV(l,y[1],b*n),o(l[0][0],l[1][0],l[2][0],x,t),l[1][0]=t[1],l[2][0]=t[2],o(l[0][1],l[1][1],l[2][1],x,t),l[1][1]=t[1],l[2][1]=t[2]),qt(m[0],l[0]),qt(m[1],l[2]),qt(m[2],l[1])}else qt(c[0],y[0]),qt(c[1],y[1]),rh(u,c[1],c[0]),Mc(u,u),g&&"none"!==g&&(b=zm(h.node1),ke(c[0],c[0],u,b*n)),v&&"none"!==v&&(b=zm(h.node2),ke(c[1],c[1],u,-b*n)),qt(m[0],c[0]),qt(m[1],c[1])})}function hy(r){return"view"===r.type}var F7=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.init=function(t,o){var l=new O_,c=new MV,u=this.group;this._controller=new Cu(o.getZr()),this._controllerHost={target:u},u.add(l.group),u.add(c.group),this._symbolDraw=l,this._lineDraw=c,this._firstRender=!0},n.prototype.render=function(t,o,l){var c=this,u=t.coordinateSystem;this._model=t;var h=this._symbolDraw,p=this._lineDraw,m=this.group;if(hy(u)){var g={x:u.x,y:u.y,scaleX:u.scaleX,scaleY:u.scaleY};this._firstRender?m.attr(g):un(m,g,t)}$k(t.getGraph(),sy(t));var v=t.getData();h.updateData(v);var y=t.getEdgeData();p.updateData(y),this._updateNodeAndLinkScale(),this._updateController(t,o,l),clearTimeout(this._layoutTimeout);var b=t.forceLayout,x=t.get(["force","layoutAnimation"]);b&&this._startForceLayoutIteration(b,x);var C=t.get("layout");v.graph.eachNode(function(A){var E=A.dataIndex,L=A.getGraphicEl(),R=A.getModel();if(L){L.off("drag").off("dragend");var B=R.get("draggable");B&&L.on("drag",function(G){switch(C){case"force":b.warmUp(),!c._layouting&&c._startForceLayoutIteration(b,x),b.setFixed(E),v.setItemLayout(E,[L.x,L.y]);break;case"circular":v.setItemLayout(E,[L.x,L.y]),A.setLayout({fixed:!0},!0),Nk(t,"symbolSize",A,[G.offsetX,G.offsetY]),c.updateLayout(t);break;default:v.setItemLayout(E,[L.x,L.y]),Fk(t.getGraph(),t),c.updateLayout(t)}}).on("dragend",function(){b&&b.setUnfixed(E)}),L.setDraggable(B,!!R.get("cursor")),"adjacency"===R.get(["emphasis","focus"])&&(_t(L).focus=A.getAdjacentDataIndices())}}),v.graph.eachEdge(function(A){var E=A.getGraphicEl(),L=A.getModel().get(["emphasis","focus"]);E&&"adjacency"===L&&(_t(E).focus={edge:[A.dataIndex],node:[A.node1.dataIndex,A.node2.dataIndex]})});var S="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),M=v.getLayout("cx"),T=v.getLayout("cy");v.graph.eachNode(function(A){Xe(A,S,M,T)}),this._firstRender=!1},n.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},n.prototype._startForceLayoutIteration=function(t,o){var l=this;!function c(){t.step(function(u){l.updateLayout(l._model),(l._layouting=!u)&&(o?l._layoutTimeout=setTimeout(c,16):c())})}()},n.prototype._updateController=function(t,o,l){var c=this,u=this._controller,h=this._controllerHost,p=this.group;u.setPointerChecker(function(m,g,v){var y=p.getBoundingRect();return y.applyTransform(p.transform),y.contain(g,v)&&!Yx(m,l,t)}),hy(t.coordinateSystem)?(u.enable(t.get("roam")),h.zoomLimit=t.get("scaleLimit"),h.zoom=t.coordinateSystem.getZoom(),u.off("pan").off("zoom").on("pan",function(m){$x(h,m.dx,m.dy),l.dispatchAction({seriesId:t.id,type:"graphRoam",dx:m.dx,dy:m.dy})}).on("zoom",function(m){Wx(h,m.scale,m.originX,m.originY),l.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:m.scale,originX:m.originX,originY:m.originY}),c._updateNodeAndLinkScale(),$k(t.getGraph(),sy(t)),c._lineDraw.updateLayout(),l.updateLabelLayout()})):u.disable()},n.prototype._updateNodeAndLinkScale=function(){var t=this._model,o=t.getData(),l=sy(t);o.eachItemGraphicEl(function(c,u){c&&c.setSymbolScale(l)})},n.prototype.updateLayout=function(t){$k(t.getGraph(),sy(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},n.prototype.remove=function(t,o){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},n.type="graph",n}(Nn);const N7=F7;function Mu(r){return"_EC_"+r}var YK=function(){function r(n){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=n||!1}return r.prototype.isDirected=function(){return this._directed},r.prototype.addNode=function(n,t){var o=this._nodesMap;if(!o[Mu(n=null==n?""+t:""+n)]){var l=new Co(n,t);return l.hostGraph=this,this.nodes.push(l),o[Mu(n)]=l,l}},r.prototype.getNodeByIndex=function(n){var t=this.data.getRawIndex(n);return this.nodes[t]},r.prototype.getNodeById=function(n){return this._nodesMap[Mu(n)]},r.prototype.addEdge=function(n,t,o){var l=this._nodesMap,c=this._edgesMap;if(ln(n)&&(n=this.nodes[n]),ln(t)&&(t=this.nodes[t]),n instanceof Co||(n=l[Mu(n)]),t instanceof Co||(t=l[Mu(t)]),n&&t){var u=n.id+"-"+t.id,h=new AV(n,t,o);return h.hostGraph=this,this._directed&&(n.outEdges.push(h),t.inEdges.push(h)),n.edges.push(h),n!==t&&t.edges.push(h),this.edges.push(h),c[u]=h,h}},r.prototype.getEdgeByIndex=function(n){var t=this.edgeData.getRawIndex(n);return this.edges[t]},r.prototype.getEdge=function(n,t){n instanceof Co&&(n=n.id),t instanceof Co&&(t=t.id);var o=this._edgesMap;return this._directed?o[n+"-"+t]:o[n+"-"+t]||o[t+"-"+n]},r.prototype.eachNode=function(n,t){for(var o=this.nodes,l=o.length,c=0;c=0&&n.call(t,o[c],c)},r.prototype.eachEdge=function(n,t){for(var o=this.edges,l=o.length,c=0;c=0&&o[c].node1.dataIndex>=0&&o[c].node2.dataIndex>=0&&n.call(t,o[c],c)},r.prototype.breadthFirstTraverse=function(n,t,o,l){if(t instanceof Co||(t=this._nodesMap[Mu(t)]),t){for(var c="out"===o?"outEdges":"in"===o?"inEdges":"edges",u=0;u=0&&p.node2.dataIndex>=0}),c=0,u=l.length;c=0&&this[r][n].setItemVisual(this.dataIndex,t,o)},getVisual:function(t){return this[r][n].getItemVisual(this.dataIndex,t)},setLayout:function(t,o){this.dataIndex>=0&&this[r][n].setItemLayout(this.dataIndex,t,o)},getLayout:function(){return this[r][n].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[r][n].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[r][n].getRawIndex(this.dataIndex)}}}Ii(Co,kV("hostGraph","data")),Ii(AV,kV("hostGraph","edgeData"));const EV=YK;function Gm(r,n,t,o,l){for(var c=new EV(o),u=0;u "+y)),m++)}var x,b=t.get("coordinateSystem");if("cartesian2d"===b||"polar"===b)x=ed(r,t);else{var C=Zl.get(b),S=C&&C.dimensions||[];Mt(S,"value")<0&&S.concat(["value"]);var M=om(r,{coordDimensions:S,encodeDefine:t.getEncode()}).dimensions;(x=new ga(M,t)).initData(r)}var T=new ga(["value"],t);return T.initData(p,h),l&&l(x,T),kf({mainData:x,struct:c,structAttr:"graph",datas:{node:x,edge:T},datasAttr:{node:"data",edge:"edgeData"}}),c.update(),c}var Wk=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.hasSymbolVisual=!0,t}return le(n,r),n.prototype.init=function(t){r.prototype.init.apply(this,arguments);var o=this;function l(){return o._categoriesData}this.legendVisualProvider=new B_(l,l),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},n.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},n.prototype.mergeDefaultAndTheme=function(t){r.prototype.mergeDefaultAndTheme.apply(this,arguments),_h(t,"edgeLabel",["show"])},n.prototype.getInitialData=function(t,o){var l=t.edges||t.links||[],c=t.data||t.nodes||[],u=this;if(c&&l){!function P7(r){yC(r)&&(r.__curvenessList=[],r.__edgeMap={},I7(r))}(this);var h=Gm(c,l,this,!0,function p(m,g){m.wrapMethod("getItemModel",function(x){var M=u._categoriesModels[x.getShallow("category")];return M&&(M.parentModel=x.parentModel,x.parentModel=M),x});var v=zn.prototype.getModel;function y(x,C){var S=v.call(this,x,C);return S.resolveParentPath=b,S}function b(x){if(x&&("label"===x[0]||"label"===x[1])){var C=x.slice();return"label"===x[0]?C[0]="edgeLabel":"label"===x[1]&&(C[1]="edgeLabel"),C}return x}g.wrapMethod("getItemModel",function(x){return x.resolveParentPath=b,x.getModel=y,x})});return U(h.edges,function(m){!function pV(r,n,t,o){if(yC(t)){var l=bC(r,n,t),c=t.__edgeMap,u=c[Vm(l)];c[l]&&!u?c[l].isForward=!0:u&&c[l]&&(u.isForward=!0,c[l].isForward=!1),c[l]=c[l]||[],c[l].push(o)}}(m.node1,m.node2,this,m.dataIndex)},this),h.data}},n.prototype.getGraph=function(){return this.getData().graph},n.prototype.getEdgeData=function(){return this.getGraph().edgeData},n.prototype.getCategoriesData=function(){return this._categoriesData},n.prototype.formatTooltip=function(t,o,l){if("edge"===l){var c=this.getData(),u=this.getDataParams(t,l),h=c.graph.getEdgeByIndex(t),p=c.getName(h.node1.dataIndex),m=c.getName(h.node2.dataIndex),g=[];return null!=p&&g.push(p),null!=m&&g.push(m),Oi("nameValue",{name:g.join(" > "),value:u.value,noValue:null==u.value})}return rL({series:this,dataIndex:t,multipleSeries:o})},n.prototype._updateCategoriesData=function(){var t=xe(this.option.categories||[],function(l){return null!=l.value?l:ge({value:0},l)}),o=new ga(["value"],this);o.initData(t),this._categoriesData=o,this._categoriesModels=o.mapArray(function(l){return o.getItemModel(l)})},n.prototype.setZoom=function(t){this.option.zoom=t},n.prototype.setCenter=function(t){this.option.center=t},n.prototype.isAnimationEnabled=function(){return r.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},n.type="series.graph",n.dependencies=["grid","polar","geo","singleAxis","calendar"],n.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},n}(Zn);const Tt=Wk;var Yk={type:"graphRoam",event:"graphRoam",update:"none"},qK=function r(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},Um=function(r){function n(t){var o=r.call(this,t)||this;return o.type="pointer",o}return le(n,r),n.prototype.getDefaultShape=function(){return new qK},n.prototype.buildPath=function(t,o){var l=Math.cos,c=Math.sin,u=o.r,h=o.width,p=o.angle,m=o.x-l(p)*h*(h>=u/3?1:2),g=o.y-c(p)*h*(h>=u/3?1:2);p=o.angle-Math.PI/2,t.moveTo(m,g),t.lineTo(o.x+l(p)*h,o.y+c(p)*h),t.lineTo(o.x+l(o.angle)*u,o.y+c(o.angle)*u),t.lineTo(o.x-l(p)*h,o.y-c(p)*h),t.lineTo(m,g)},n}(Vt);const IV=Um;function Tu(r,n){var t=null==r?"":r+"";return n&&(Le(n)?t=n.replace("{value}",t):qe(n)&&(t=n(r))),t}var B7=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){this.group.removeAll();var c=t.get(["axisLine","lineStyle","color"]),u=function PV(r,n){var t=r.get("center"),o=n.getWidth(),l=n.getHeight(),c=Math.min(o,l);return{cx:Ie(t[0],n.getWidth()),cy:Ie(t[1],n.getHeight()),r:Ie(r.get("radius"),c/2)}}(t,l);this._renderMain(t,o,l,c,u),this._data=t.getData()},n.prototype.dispose=function(){},n.prototype._renderMain=function(t,o,l,c,u){var h=this.group,p=t.get("clockwise"),m=-t.get("startAngle")/180*Math.PI,g=-t.get("endAngle")/180*Math.PI,v=t.getModel("axisLine"),b=v.get("roundCap")?UA:Ya,x=v.get("show"),C=v.getModel("lineStyle"),S=C.get("width"),M=[m,g];M2(M,!p);for(var T=(g=M[1])-(m=M[0]),A=m,E=[],L=0;x&&L=G&&(0===j?0:c[j-1][0])Math.PI/2&&(nt+=Math.PI):"tangential"===tt?nt=-H-Math.PI/2:ln(tt)&&(nt=tt*Math.PI/180),v.add(new dn(0===nt?{style:Xn(A,{text:ve,x:Ae,y:Ge,verticalAlign:ne<-.8?"top":ne>.8?"bottom":"middle",align:ee<-.4?"left":ee>.4?"right":"center"},{inheritColor:De}),silent:!0}:{style:Xn(A,{text:ve,x:Ae,y:Ge,verticalAlign:"middle",align:"center"},{inheritColor:De}),silent:!0,originX:Ae,originY:Ge,rotation:nt}))}if(T.get("show")&&ie!==E){de=(de=T.get("distance"))?de+g:g;for(var Lt=0;Lt<=L;Lt++){ee=Math.cos(H),ne=Math.sin(H);var fn=new Fr({shape:{x1:ee*(x-de)+y,y1:ne*(x-de)+b,x2:ee*(x-B-de)+y,y2:ne*(x-B-de)+b},silent:!0,style:X});"auto"===X.stroke&&fn.setStyle({stroke:c((ie+Lt/L)/E)}),v.add(fn),H+=j}H-=j}else H+=G}},n.prototype._renderPointer=function(t,o,l,c,u,h,p,m,g){var v=this.group,y=this._data,b=this._progressEls,x=[],C=t.get(["pointer","show"]),S=t.getModel("progress"),M=S.get("show"),T=t.getData(),A=T.mapDimension("value"),E=+t.get("min"),L=+t.get("max"),R=[E,L],B=[h,p];function H(j,$){var Ae,K=T.getItemModel(j).getModel("pointer"),ee=Ie(K.get("width"),u.r),ne=Ie(K.get("length"),u.r),ie=t.get(["pointer","icon"]),de=K.get("offsetCenter"),ce=Ie(de[0],u.r),ve=Ie(de[1],u.r),De=K.get("keepAspect");return(Ae=ie?Ui(ie,ce-ee/2,ve-ne,ee,ne,null,De):new IV({shape:{angle:-Math.PI/2,width:ee,r:ne,x:ce,y:ve}})).rotation=-($+Math.PI/2),Ae.x=u.cx,Ae.y=u.cy,Ae}function G(j,$){var K=S.get("roundCap")?UA:Ya,ee=S.get("overlap"),ne=ee?S.get("width"):g/T.count(),ce=new K({shape:{startAngle:h,endAngle:$,cx:u.cx,cy:u.cy,clockwise:m,r0:ee?u.r-ne:u.r-(j+1)*ne,r:ee?u.r:u.r-j*ne}});return ee&&(ce.z2=L-T.get(A,j)%L),ce}(M||C)&&(T.diff(y).add(function(j){var $=T.get(A,j);if(C){var X=H(j,h);di(X,{rotation:-((isNaN(+$)?B[0]:Ut($,R,B,!0))+Math.PI/2)},t),v.add(X),T.setItemGraphicEl(j,X)}if(M){var K=G(j,h),ee=S.get("clip");di(K,{shape:{endAngle:Ut($,R,B,ee)}},t),v.add(K),Ah(t.seriesIndex,T.dataType,j,K),x[j]=K}}).update(function(j,$){var X=T.get(A,j);if(C){var K=y.getItemGraphicEl($),ee=K?K.rotation:h,ne=H(j,ee);ne.rotation=ee,un(ne,{rotation:-((isNaN(+X)?B[0]:Ut(X,R,B,!0))+Math.PI/2)},t),v.add(ne),T.setItemGraphicEl(j,ne)}if(M){var ie=b[$],ce=G(j,ie?ie.shape.endAngle:h),ve=S.get("clip");un(ce,{shape:{endAngle:Ut(X,R,B,ve)}},t),v.add(ce),Ah(t.seriesIndex,T.dataType,j,ce),x[j]=ce}}).execute(),T.each(function(j){var $=T.getItemModel(j),X=$.getModel("emphasis"),K=X.get("focus"),ee=X.get("blurScope"),ne=X.get("disabled");if(C){var ie=T.getItemGraphicEl(j),de=T.getItemVisual(j,"style"),ce=de.fill;if(ie instanceof la){var ve=ie.style;ie.useStyle(ge({image:ve.image,x:ve.x,y:ve.y,width:ve.width,height:ve.height},de))}else ie.useStyle(de),"pointer"!==ie.type&&ie.setColor(ce);ie.setStyle($.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===ie.style.fill&&ie.setStyle("fill",c(Ut(T.get(A,j),R,[0,1],!0))),ie.z2EmphasisLift=0,da(ie,$),Ri(ie,K,ee,ne)}if(M){var De=x[j];De.useStyle(T.getItemVisual(j,"style")),De.setStyle($.getModel(["progress","itemStyle"]).getItemStyle()),De.z2EmphasisLift=0,da(De,$),Ri(De,K,ee,ne)}}),this._progressEls=x)},n.prototype._renderAnchor=function(t,o){var l=t.getModel("anchor");if(l.get("show")){var u=l.get("size"),h=l.get("icon"),p=l.get("offsetCenter"),m=l.get("keepAspect"),g=Ui(h,o.cx-u/2+Ie(p[0],o.r),o.cy-u/2+Ie(p[1],o.r),u,u,null,m);g.z2=l.get("showAbove")?1:0,g.setStyle(l.getModel("itemStyle").getItemStyle()),this.group.add(g)}},n.prototype._renderTitleAndDetail=function(t,o,l,c,u){var h=this,p=t.getData(),m=p.mapDimension("value"),g=+t.get("min"),v=+t.get("max"),y=new ct,b=[],x=[],C=t.isAnimationEnabled(),S=t.get(["pointer","showAbove"]);p.diff(this._data).add(function(M){b[M]=new dn({silent:!0}),x[M]=new dn({silent:!0})}).update(function(M,T){b[M]=h._titleEls[T],x[M]=h._detailEls[T]}).execute(),p.each(function(M){var T=p.getItemModel(M),A=p.get(m,M),E=new ct,L=c(Ut(A,[g,v],[0,1],!0)),R=T.getModel("title");if(R.get("show")){var B=R.get("offsetCenter"),H=u.cx+Ie(B[0],u.r),G=u.cy+Ie(B[1],u.r);(j=b[M]).attr({z2:S?0:2,style:Xn(R,{x:H,y:G,text:p.getName(M),align:"center",verticalAlign:"middle"},{inheritColor:L})}),E.add(j)}var $=T.getModel("detail");if($.get("show")){var X=$.get("offsetCenter"),K=u.cx+Ie(X[0],u.r),ee=u.cy+Ie(X[1],u.r),ne=Ie($.get("width"),u.r),ie=Ie($.get("height"),u.r),de=t.get(["progress","show"])?p.getItemVisual(M,"style").fill:L,j=x[M],ce=$.get("formatter");j.attr({z2:S?0:2,style:Xn($,{x:K,y:ee,text:Tu(A,ce),width:isNaN(ne)?null:ne,height:isNaN(ie)?null:ie,align:"center",verticalAlign:"middle"},{inheritColor:de})}),qD(j,{normal:$},A,function(De){return Tu(De,ce)}),C&&J2(j,M,p,t,{getFormattedLabel:function(De,Ae,Ge,tt,nt,Lt){return Tu(Lt?Lt.interpolatedValue:A,ce)}}),E.add(j)}y.add(E)}),this.group.add(y),this._titleEls=b,this._detailEls=x},n.type="gauge",n}(Nn);const Au=B7;var SC=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.visualStyleAccessPath="itemStyle",t}return le(n,r),n.prototype.getInitialData=function(t,o){return cd(this,["value"])},n.type="series.gauge",n.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},n}(Zn);const Ff=SC;var fy=["itemStyle","opacity"],qk=function(r){function n(t,o){var l=r.call(this)||this,c=l,u=new _o,h=new dn;return c.setTextContent(h),l.setTextGuideLine(u),l.updateData(t,o,!0),l}return le(n,r),n.prototype.updateData=function(t,o,l){var c=this,u=t.hostModel,h=t.getItemModel(o),p=t.getItemLayout(o),m=h.getModel("emphasis"),g=h.get(fy);g=g??1,l||ws(c),c.useStyle(t.getItemVisual(o,"style")),c.style.lineJoin="round",l?(c.setShape({points:p.points}),c.style.opacity=0,di(c,{style:{opacity:g}},u,o)):un(c,{style:{opacity:g},shape:{points:p.points}},u,o),da(c,h),this._updateLabel(t,o),Ri(this,m.get("focus"),m.get("blurScope"),m.get("disabled"))},n.prototype._updateLabel=function(t,o){var l=this,c=this.getTextGuideLine(),u=l.getTextContent(),h=t.hostModel,p=t.getItemModel(o),g=t.getItemLayout(o).label,v=t.getItemVisual(o,"style"),y=v.fill;Zr(u,Or(p),{labelFetcher:t.hostModel,labelDataIndex:o,defaultOpacity:v.opacity,defaultText:t.getName(o)},{normal:{align:g.textAlign,verticalAlign:g.verticalAlign}}),l.setTextConfig({local:!0,inside:!!g.inside,insideStroke:y,outsideFill:y});var b=g.linePoints;c.setShape({points:b}),l.textGuideLineConfig={anchor:b?new it(b[0][0],b[0][1]):null},un(u,{style:{x:g.x,y:g.y}},h,o),u.attr({rotation:g.rotation,originX:g.x,originY:g.y,z2:10}),mA(l,gA(p),{stroke:y})},n}(vo),V7=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.ignoreLabelLineUpdate=!0,t}return le(n,r),n.prototype.render=function(t,o,l){var c=t.getData(),u=this._data,h=this.group;c.diff(u).add(function(p){var m=new qk(c,p);c.setItemGraphicEl(p,m),h.add(m)}).update(function(p,m){var g=u.getItemGraphicEl(m);g.updateData(c,p),h.add(g),c.setItemGraphicEl(p,g)}).remove(function(p){Iv(u.getItemGraphicEl(p),t,p)}).execute(),this._data=c},n.prototype.remove=function(){this.group.removeAll(),this._data=null},n.prototype.dispose=function(){},n.type="funnel",n}(Nn);const z7=V7;var py=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new B_(Ne(this.getData,this),Ne(this.getRawData,this)),this._defaultLabelLine(t)},n.prototype.getInitialData=function(t,o){return cd(this,{coordDimensions:["value"],encodeDefaulter:vt(dM,this)})},n.prototype._defaultLabelLine=function(t){_h(t,"labelLine",["show"]);var o=t.labelLine,l=t.emphasis.labelLine;o.show=o.show&&t.label.show,l.show=l.show&&t.emphasis.label.show},n.prototype.getDataParams=function(t){var o=this.getData(),l=r.prototype.getDataParams.call(this,t),c=o.mapDimension("value"),u=o.getSum(c);return l.percent=u?+(o.get(c,t)/u*100).toFixed(2):0,l.$vars.push("percent"),l},n.type="series.funnel",n.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},n}(Zn);const fd=py;function U7(r,n){r.eachSeriesByType("funnel",function(t){var o=t.getData(),l=o.mapDimension("value"),c=t.get("sort"),u=function Xk(r,n){return cr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}(t,n),h=t.get("orient"),p=u.width,m=u.height,g=function H7(r,n){for(var t=r.mapDimension("value"),o=r.mapArray(t,function(p){return p}),l=[],c="ascending"===n,u=0,h=r.count();u5)return;var l=this._model.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]);"none"!==l.behavior&&this._dispatchExpand({axisExpandWindow:l.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(r){if(!this._mouseDownPoint&&zV(this,"mousemove")){var n=this._model,t=n.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]),o=t.behavior;"jump"===o&&this._throttledDispatchExpand.debounceNextCall(n.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===o?null:{axisExpandWindow:t.axisExpandWindow,animation:"jump"===o?null:{duration:0}})}}};function zV(r,n){var t=r._model;return t.get("axisExpandable")&&t.get("axisExpandTriggerOn")===n}const Nf=JK;var Zk=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.init=function(){r.prototype.init.apply(this,arguments),this.mergeOption({})},n.prototype.mergeOption=function(t){t&&St(this.option,t,!0),this._initDimensions()},n.prototype.contains=function(t,o){var l=t.get("parallelIndex");return null!=l&&o.getComponent("parallel",l)===this},n.prototype.setAxisExpand=function(t){U(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],function(o){t.hasOwnProperty(o)&&(this.option[o]=t[o])},this)},n.prototype._initDimensions=function(){var t=this.dimensions=[],o=this.parallelAxisIndex=[];U(Dn(this.ecModel.queryComponents({mainType:"parallelAxis"}),function(c){return(c.get("parallelIndex")||0)===this.componentIndex},this),function(c){t.push("dim"+c.get("dim")),o.push(c.componentIndex)})},n.type="parallel",n.dependencies=["parallelAxis"],n.layoutMode="box",n.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},n}(jt);const tQ=Zk;var nQ=function(r){function n(t,o,l,c,u){var h=r.call(this,t,o,l)||this;return h.type=c||"value",h.axisIndex=u,h}return le(n,r),n.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},n}(Go);const iQ=nQ;function jm(r,n,t,o,l,c){r=r||0;var u=t[1]-t[0];if(null!=l&&(l=vy(l,[0,u])),null!=c&&(c=Math.max(c,l??0)),"all"===o){var h=Math.abs(n[1]-n[0]);h=vy(h,[0,u]),l=c=vy(h,[l,c]),o=0}n[0]=vy(n[0],t),n[1]=vy(n[1],t);var p=HV(n,o);n[o]+=r;var v,m=l||0,g=t.slice();return p.sign<0?g[0]+=m:g[1]-=m,n[o]=vy(n[o],g),v=HV(n,o),null!=l&&(v.sign!==p.sign||v.spanc&&(n[1-o]=n[o]+v.sign*c),n}function HV(r,n){var t=r[n]-r[1-n];return{span:Math.abs(t),sign:t>0?-1:t<0?1:n?-1:1}}function vy(r,n){return Math.min(null!=n[1]?n[1]:1/0,Math.max(null!=n[0]?n[0]:-1/0,r))}var _y=U,pd=Math.min,fc=Math.max,GV=Math.floor,DC=Math.ceil,K7=ai,UV=Math.PI,rQ=function(){function r(n,t,o){this.type="parallel",this._axesMap=$e(),this._axesLayout={},this.dimensions=n.dimensions,this._model=n,this._init(n,t,o)}return r.prototype._init=function(n,t,o){var c=n.parallelAxisIndex;_y(n.dimensions,function(u,h){var p=c[h],m=t.getComponent("parallelAxis",p),g=this._axesMap.set(u,new iQ(u,Kt(m),[0,0],m.get("type"),p));g.onBand="category"===g.type&&m.get("boundaryGap"),g.inverse=m.get("inverse"),m.axis=g,g.model=m,g.coordinateSystem=m.coordinateSystem=this},this)},r.prototype.update=function(n,t){this._updateAxesFromSeries(this._model,n)},r.prototype.containPoint=function(n){var t=this._makeLayoutInfo(),o=t.axisBase,l=t.layoutBase,c=t.pixelDimIndex,u=n[1-c],h=n[c];return u>=o&&u<=o+t.axisLength&&h>=l&&h<=l+t.layoutLength},r.prototype.getModel=function(){return this._model},r.prototype._updateAxesFromSeries=function(n,t){t.eachSeries(function(o){if(n.contains(o,t)){var l=o.getData();_y(this.dimensions,function(c){var u=this._axesMap.get(c);u.scale.unionExtentFromData(l,l.mapDimension(c)),wt(u.scale,u.model)},this)}},this)},r.prototype.resize=function(n,t){this._rect=cr(n.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),this._layoutAxes()},r.prototype.getRect=function(){return this._rect},r.prototype._makeLayoutInfo=function(){var x,n=this._model,t=this._rect,o=["x","y"],l=["width","height"],c=n.get("layout"),u="horizontal"===c?0:1,h=t[l[u]],p=[0,h],m=this.dimensions.length,g=MC(n.get("axisExpandWidth"),p),v=MC(n.get("axisExpandCount")||0,[0,m]),y=n.get("axisExpandable")&&m>3&&m>v&&v>1&&g>0&&h>0,b=n.get("axisExpandWindow");b?(x=MC(b[1]-b[0],p),b[1]=b[0]+x):(x=MC(g*(v-1),p),(b=[g*(n.get("axisExpandCenter")||GV(m/2))-x/2])[1]=b[0]+x);var S=(h-x)/(m-v);S<3&&(S=0);var M=[GV(K7(b[0]/g,1))+1,DC(K7(b[1]/g,1))-1];return{layout:c,pixelDimIndex:u,layoutBase:t[o[u]],layoutLength:h,axisBase:t[o[1-u]],axisLength:t[l[1-u]],axisExpandable:y,axisExpandWidth:g,axisCollapseWidth:S,axisExpandWindow:b,axisCount:m,winInnerIndices:M,axisExpandWindow0Pos:S/g*b[0]}},r.prototype._layoutAxes=function(){var n=this._rect,t=this._axesMap,o=this.dimensions,l=this._makeLayoutInfo(),c=l.layout;t.each(function(u){var h=[0,l.axisLength],p=u.inverse?1:0;u.setExtent(h[p],h[1-p])}),_y(o,function(u,h){var p=(l.axisExpandable?pc:aQ)(h,l),m={horizontal:{x:p.position,y:l.axisLength},vertical:{x:0,y:p.position}},v=[m[c].x+n.x,m[c].y+n.y],y={horizontal:UV/2,vertical:0}[c],b=[1,0,0,1,0,0];Ec(b,b,y),ss(b,b,v),this._axesLayout[u]={position:v,rotation:y,transform:b,axisNameAvailableWidth:p.axisNameAvailableWidth,axisLabelShow:p.axisLabelShow,nameTruncateMaxWidth:p.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},r.prototype.getAxis=function(n){return this._axesMap.get(n)},r.prototype.dataToPoint=function(n,t){return this.axisCoordToPoint(this._axesMap.get(t).dataToCoord(n),t)},r.prototype.eachActiveState=function(n,t,o,l){null==o&&(o=0),null==l&&(l=n.count());var c=this._axesMap,u=this.dimensions,h=[],p=[];U(u,function(S){h.push(n.mapDimension(S)),p.push(c.get(S).model)});for(var m=this.hasAxisBrushed(),g=o;gc*(1-v[0])?(m="jump",p=h-c*(1-v[2])):(p=h-c*v[1])>=0&&(p=h-c*(1-v[1]))<=0&&(p=0),(p*=t.axisExpandWidth/g)?jm(p,l,u,"all"):m="none";else{var b=l[1]-l[0];(l=[fc(0,u[1]*h/b-b/2)])[1]=pd(u[1],l[0]+b),l[0]=l[1]-b}return{axisExpandWindow:l,behavior:m}},r}();function MC(r,n){return pd(fc(r,n[0]),n[1])}function aQ(r,n){var t=n.layoutLength/(n.axisCount-1);return{position:t*r,axisNameAvailableWidth:t,axisLabelShow:!0}}function pc(r,n){var h,g,o=n.axisExpandWidth,c=n.axisCollapseWidth,u=n.winInnerIndices,p=c,m=!1;return r=0;l--)fs(o[l])},n.prototype.getActiveState=function(t){var o=this.activeIntervals;if(!o.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===o.length){var l=o[0];if(l[0]<=t&&t<=l[1])return"active"}else for(var c=0,u=o.length;c6}(r)||l){if(c&&!l){"single"===u.brushMode&&AC(r);var p=rt(u);p.brushType=o$(p.brushType,c),p.panelId=c===$m?null:c.panelId,l=r._creatingCover=_l(r,p),r._covers.push(l)}if(l){var m=Jk[o$(r._brushType,c)];l.__brushOption.range=m.getCreatingRange(KV(r,l,r._track)),o&&($o(r,l),m.updateCommon(r,l)),yl(r,l),h={isEnd:o}}}else o&&"single"===u.brushMode&&u.removeOnClick&&WV(r,n,t)&&AC(r)&&(h={isEnd:o,removeOnClick:!0});return h}function o$(r,n){return"auto"===r?n.defaultBrushType:r}var gQ={mousedown:function(r){if(this._dragging)s$(this,r);else if(!r.target||!r.target.draggable){QV(r);var n=this.group.transformCoordToLocal(r.offsetX,r.offsetY);this._creatingCover=null,(this._creatingPanel=WV(this,r,n))&&(this._dragging=!0,this._track=[n.slice()])}},mousemove:function(r){var o=this.group.transformCoordToLocal(r.offsetX,r.offsetY);if(function mQ(r,n,t){if(r._brushType&&!function vQ(r,n,t){var o=r._zr;return n<0||n>o.getWidth()||t<0||t>o.getHeight()}(r,n.offsetX,n.offsetY)){var o=r._zr,l=r._covers,c=WV(r,n,t);if(!r._dragging)for(var u=0;u=0&&(h[u[p].depth]=new zn(u[p],this,o));if(c&&l)return Gm(c,l,this,!0,function g(v,y){v.wrapMethod("getItemModel",function(b,x){var C=b.parentModel,S=C.getData().getItemLayout(x);if(S){var T=C.levelModels[S.depth];T&&(b.parentModel=T)}return b}),y.wrapMethod("getItemModel",function(b,x){var C=b.parentModel,M=C.getGraph().getEdgeByIndex(x).node1.getLayout();if(M){var A=C.levelModels[M.depth];A&&(b.parentModel=A)}return b})}).data},n.prototype.setNodePosition=function(t,o){var c=(this.option.data||this.option.nodes)[t];c.localX=o[0],c.localY=o[1]},n.prototype.getGraph=function(){return this.getData().graph},n.prototype.getEdgeData=function(){return this.getGraph().edgeData},n.prototype.formatTooltip=function(t,o,l){function c(b){return isNaN(b)||null==b}if("edge"===l){var u=this.getDataParams(t,l),h=u.data,p=u.value;return Oi("nameValue",{name:h.source+" -- "+h.target,value:p,noValue:c(p)})}var v=this.getGraph().getNodeByIndex(t).getLayout().value,y=this.getDataParams(t,l).data.name;return Oi("nameValue",{name:null!=y?y+"":null,value:v,noValue:c(v)})},n.prototype.optionUpdated=function(){},n.prototype.getDataParams=function(t,o){var l=r.prototype.getDataParams.call(this,t,o);if(null==l.value&&"node"===o){var u=this.getGraph().getNodeByIndex(t).getLayout().value;l.value=u}return l},n.type="series.sankey",n.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},n}(Zn);const PQ=IQ;function RQ(r,n){r.eachSeriesByType("sankey",function(t){var o=t.get("nodeWidth"),l=t.get("nodeGap"),c=function OQ(r,n){return cr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}(t,n);t.layoutInfo=c;var u=c.width,h=c.height,p=t.getGraph(),m=p.nodes,g=p.edges;!function FQ(r){U(r,function(n){var t=Hf(n.outEdges,eE),o=Hf(n.inEdges,eE),l=n.getValue()||0,c=Math.max(t,o,l);n.setLayout({value:c},!0)})}(m),function LQ(r,n,t,o,l,c,u,h,p){(function NQ(r,n,t,o,l,c,u){for(var h=[],p=[],m=[],g=[],v=0,y=0;y=0;M&&S.depth>b&&(b=S.depth),C.setLayout({depth:M?S.depth:v},!0),C.setLayout("vertical"===c?{dy:t}:{dx:t},!0);for(var T=0;Tv-1?b:v-1;u&&"left"!==u&&function BQ(r,n,t,o){if("right"===n){for(var l=[],c=r,u=0;c.length;){for(var h=0;h0;c--)jQ(h,p*=.99,u),r3(h,l,t,o,u),XQ(h,p,u),r3(h,l,t,o,u)}(r,n,c,l,o,u,h),function ZQ(r,n){var t="vertical"===n?"x":"y";U(r,function(o){o.outEdges.sort(function(l,c){return l.node2.getLayout()[t]-c.node2.getLayout()[t]}),o.inEdges.sort(function(l,c){return l.node1.getLayout()[t]-c.node1.getLayout()[t]})}),U(r,function(o){var l=0,c=0;U(o.outEdges,function(u){u.setLayout({sy:l},!0),l+=u.getLayout().dy}),U(o.inEdges,function(u){u.setLayout({ty:c},!0),c+=u.getLayout().dy})})}(r,h)}(m,g,o,l,u,h,0!==Dn(m,function(C){return 0===C.getLayout().value}).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))})}function p$(r){var n=r.hostGraph.data.getRawDataItem(r.dataIndex);return null!=n.depth&&n.depth>=0}function r3(r,n,t,o,l){var c="vertical"===l?"x":"y";U(r,function(u){u.sort(function(C,S){return C.getLayout()[c]-S.getLayout()[c]});for(var h,p,m,g=0,v=u.length,y="vertical"===l?"dx":"dy",b=0;b0&&(h=p.getLayout()[c]+m,p.setLayout("vertical"===l?{x:h}:{y:h},!0)),g=p.getLayout()[c]+p.getLayout()[y]+n;if((m=g-n-("vertical"===l?o:t))>0)for(h=p.getLayout()[c]-m,p.setLayout("vertical"===l?{x:h}:{y:h},!0),g=h,b=v-2;b>=0;--b)(m=(p=u[b]).getLayout()[c]+p.getLayout()[y]+n-g)>0&&(h=p.getLayout()[c]-m,p.setLayout("vertical"===l?{x:h}:{y:h},!0)),g=p.getLayout()[c]})}function jQ(r,n,t){U(r.slice().reverse(),function(o){U(o,function(l){if(l.outEdges.length){var c=Hf(l.outEdges,$Q,t)/Hf(l.outEdges,eE);if(isNaN(c)){var u=l.outEdges.length;c=u?Hf(l.outEdges,WQ,t)/u:0}if("vertical"===t){var h=l.getLayout().x+(c-zf(l,t))*n;l.setLayout({x:h},!0)}else{var p=l.getLayout().y+(c-zf(l,t))*n;l.setLayout({y:p},!0)}}})})}function $Q(r,n){return zf(r.node2,n)*r.getValue()}function WQ(r,n){return zf(r.node2,n)}function YQ(r,n){return zf(r.node1,n)*r.getValue()}function qQ(r,n){return zf(r.node1,n)}function zf(r,n){return"vertical"===n?r.getLayout().x+r.getLayout().dx/2:r.getLayout().y+r.getLayout().dy/2}function eE(r){return r.getValue()}function Hf(r,n,t){for(var o=0,l=r.length,c=-1;++cu&&(u=p)}),U(o,function(h){var m=new _a({type:"color",mappingMethod:"linear",dataExtent:[c,u],visual:n.get("color")}).mapValueToVisual(h.getLayout().value),g=h.getModel().get(["itemStyle","color"]);null!=g?(h.setVisual("color",g),h.setVisual("style",{fill:g})):(h.setVisual("color",m),h.setVisual("style",{fill:m}))})}l.length&&U(l,function(h){var p=h.getModel().get("lineStyle");h.setVisual("style",p)})})}var m$=function(){function r(){}return r.prototype.getInitialData=function(n,t){var o,p,l=t.getComponent("xAxis",this.get("xAxisIndex")),c=t.getComponent("yAxis",this.get("yAxisIndex")),u=l.get("type"),h=c.get("type");"category"===u?(n.layout="horizontal",o=l.getOrdinalMeta(),p=!0):"category"===h?(n.layout="vertical",o=c.getOrdinalMeta(),p=!0):n.layout=n.layout||"horizontal";var m=["x","y"],g="horizontal"===n.layout?0:1,v=this._baseAxisDim=m[g],y=m[1-g],b=[l,c],x=b[g].get("type"),C=b[1-g].get("type"),S=n.data;if(S&&p){var M=[];U(S,function(E,L){var R;be(E)?(R=E.slice(),E.unshift(L)):be(E.value)?((R=ge({},E)).value=R.value.slice(),E.value.unshift(L)):R=E,M.push(R)}),n.data=M}var T=this.defaultValueDimensions,A=[{name:v,type:zT(x),ordinalMeta:o,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:y,type:zT(C),dimsDef:T.slice()}];return cd(this,{coordDimensions:A,dimensionsCount:T.length+1,encodeDefaulter:vt(bO,A,this)})},r.prototype.getBaseAxis=function(){var n=this._baseAxisDim;return this.ecModel.getComponent(n+"Axis",this.get(n+"AxisIndex")).axis},r}(),g$=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],t.visualDrawType="stroke",t}return le(n,r),n.type="series.boxplot",n.dependencies=["xAxis","yAxis","grid"],n.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},n}(Zn);Ii(g$,m$,!0);const JQ=g$;var eJ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){var c=t.getData(),u=this.group,h=this._data;this._data||u.removeAll();var p="horizontal"===t.get("layout")?1:0;c.diff(h).add(function(m){if(c.hasValue(m)){var v=v$(c.getItemLayout(m),c,m,p,!0);c.setItemGraphicEl(m,v),u.add(v)}}).update(function(m,g){var v=h.getItemGraphicEl(g);if(c.hasValue(m)){var y=c.getItemLayout(m);v?(ws(v),_$(y,v,c,m)):v=v$(y,c,m,p),u.add(v),c.setItemGraphicEl(m,v)}else u.remove(v)}).remove(function(m){var g=h.getItemGraphicEl(m);g&&u.remove(g)}).execute(),this._data=c},n.prototype.remove=function(t){var o=this.group,l=this._data;this._data=null,l&&l.eachItemGraphicEl(function(c){c&&o.remove(c)})},n.type="boxplot",n}(Nn),tJ=function r(){},nJ=function(r){function n(t){var o=r.call(this,t)||this;return o.type="boxplotBoxPath",o}return le(n,r),n.prototype.getDefaultShape=function(){return new tJ},n.prototype.buildPath=function(t,o){var l=o.points,c=0;for(t.moveTo(l[c][0],l[c][1]),c++;c<4;c++)t.lineTo(l[c][0],l[c][1]);for(t.closePath();cC)&&o.push([M,A])}}return{boxData:t,outliers:o}}(t.getRawData(),n.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:l.boxData},{data:l.outliers}]}},b$=["color","borderColor"],pr=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},n.prototype.incrementalPrepareRender=function(t,o,l){this._clear(),this._updateDrawMode(t)},n.prototype.incrementalRender=function(t,o,l,c){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,o):this._incrementalRenderNormal(t,o)},n.prototype.eachRendered=function(t){ou(this._progressiveEls||this.group,t)},n.prototype._updateDrawMode=function(t){var o=t.pipelineContext.large;(null==this._isLargeDraw||o!==this._isLargeDraw)&&(this._isLargeDraw=o,this._clear())},n.prototype._renderNormal=function(t){var o=t.getData(),l=this._data,c=this.group,u=o.getLayout("isSimpleBox"),h=t.get("clip",!0),p=t.coordinateSystem,m=p.getArea&&p.getArea();this._data||c.removeAll(),o.diff(l).add(function(g){if(o.hasValue(g)){var v=o.getItemLayout(g);if(h&&s3(m,v))return;var y=o3(v,0,!0);di(y,{shape:{points:v.ends}},t,g),EC(y,o,g,u),c.add(y),o.setItemGraphicEl(g,y)}}).update(function(g,v){var y=l.getItemGraphicEl(v);if(o.hasValue(g)){var b=o.getItemLayout(g);h&&s3(m,b)?c.remove(y):(y?(un(y,{shape:{points:b.ends}},t,g),ws(y)):y=o3(b),EC(y,o,g,u),c.add(y),o.setItemGraphicEl(g,y))}else c.remove(y)}).remove(function(g){var v=l.getItemGraphicEl(g);v&&c.remove(v)}).execute(),this._data=o},n.prototype._renderLarge=function(t){this._clear(),c3(t,this.group);var o=t.get("clip",!0)?Px(t.coordinateSystem,!1,t):null;o?this.group.setClipPath(o):this.group.removeClipPath()},n.prototype._incrementalRenderNormal=function(t,o){for(var u,l=o.getData(),c=l.getLayout("isSimpleBox");null!=(u=t.next());){var p=o3(l.getItemLayout(u));EC(p,l,u,c),p.incremental=!0,this.group.add(p),this._progressiveEls.push(p)}},n.prototype._incrementalRenderLarge=function(t,o){c3(o,this.group,this._progressiveEls,!0)},n.prototype.remove=function(t){this._clear()},n.prototype._clear=function(){this.group.removeAll(),this._data=null},n.type="candlestick",n}(Nn),a3=function r(){},w$=function(r){function n(t){var o=r.call(this,t)||this;return o.type="normalCandlestickBox",o}return le(n,r),n.prototype.getDefaultShape=function(){return new a3},n.prototype.buildPath=function(t,o){var l=o.points;this.__simpleBox?(t.moveTo(l[4][0],l[4][1]),t.lineTo(l[6][0],l[6][1])):(t.moveTo(l[0][0],l[0][1]),t.lineTo(l[1][0],l[1][1]),t.lineTo(l[2][0],l[2][1]),t.lineTo(l[3][0],l[3][1]),t.closePath(),t.moveTo(l[4][0],l[4][1]),t.lineTo(l[5][0],l[5][1]),t.moveTo(l[6][0],l[6][1]),t.lineTo(l[7][0],l[7][1]))},n}(Vt);function o3(r,n,t){var o=r.ends;return new w$({shape:{points:t?tE(o,r):o},z2:100})}function s3(r,n){for(var t=!0,o=0;o0?"borderColor":"borderColor0"])||t.get(["itemStyle",r>0?"color":"color0"]);0===r&&(l=t.get(["itemStyle","borderColorDoji"]));var c=t.getModel("itemStyle").getItemStyle(b$);n.useStyle(c),n.style.fill=null,n.style.stroke=l}const uJ=pr;var x$=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],t}return le(n,r),n.prototype.getShadowDim=function(){return"open"},n.prototype.brushSelector=function(t,o,l){var c=o.getItemLayout(t);return c&&l.rect(c.brushRect)},n.type="series.candlestick",n.dependencies=["xAxis","yAxis","grid"],n.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderColorDoji:null,borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},n}(Zn);Ii(x$,m$,!0);const C$=x$;function hJ(r){!r||!be(r.series)||U(r.series,function(n){ze(n)&&"k"===n.type&&(n.type="candlestick")})}var fJ=["itemStyle","borderColor"],d3=["itemStyle","borderColor0"],S$=["itemStyle","borderColorDoji"],D$=["itemStyle","color"],IC=["itemStyle","color0"],wy={seriesType:"candlestick",plan:Wh(),performRawSeries:!0,reset:function(r,n){function t(c,u){return u.get(c>0?D$:IC)}function o(c,u){return u.get(0===c?S$:c>0?fJ:d3)}if(!n.isSeriesFiltered(r))return!r.pipelineContext.large&&{progress:function(c,u){for(var h;null!=(h=c.next());){var p=u.getItemModel(h),m=u.getItemLayout(h).sign,g=p.getItemStyle();g.fill=t(m,p),g.stroke=o(m,p)||g.fill,ge(u.ensureUniqueItemVisual(h,"style"),g)}}}}};const u3=wy;var M$={seriesType:"candlestick",plan:Wh(),reset:function(r){var n=r.coordinateSystem,t=r.getData(),o=function Gf(r,n){var o,t=r.getBaseAxis(),l="category"===t.type?t.getBandWidth():(o=t.getExtent(),Math.abs(o[1]-o[0])/n.count()),c=Ie(Dt(r.get("barMaxWidth"),l),l),u=Ie(Dt(r.get("barMinWidth"),1),l),h=r.get("barWidth");return null!=h?Ie(h,l):Math.max(Math.min(l/2,c),u)}(r,t),u=["x","y"],h=t.getDimensionIndex(t.mapDimension(u[0])),p=xe(t.mapDimensionsAll(u[1]),t.getDimensionIndex,t),m=p[0],g=p[1],v=p[2],y=p[3];if(t.setLayout({candleWidth:o,isSimpleBox:o<=1.3}),!(h<0||p.length<4))return{progress:r.pipelineContext.large?function x(C,S){for(var A,R,M=cl(4*C.count),T=0,E=[],L=[],B=S.getStore(),H=!!r.get(["itemStyle","borderColorDoji"]);null!=(R=C.next());){var G=B.get(h,R),j=B.get(m,R),$=B.get(g,R),X=B.get(v,R),K=B.get(y,R);isNaN(G)||isNaN(X)||isNaN(K)?(M[T++]=NaN,T+=3):(M[T++]=iE(B,R,j,$,g,H),E[0]=G,E[1]=X,A=n.dataToPoint(E,null,L),M[T++]=A?A[0]:NaN,M[T++]=A?A[1]:NaN,E[1]=K,A=n.dataToPoint(E,null,L),M[T++]=A?A[1]:NaN)}S.setLayout("largePoints",M)}:function b(C,S){for(var M,T=S.getStore();null!=(M=C.next());){var A=T.get(h,M),E=T.get(m,M),L=T.get(g,M),R=T.get(v,M),B=T.get(y,M),H=Math.min(E,L),G=Math.max(E,L),j=de(H,A),$=de(G,A),X=de(R,A),K=de(B,A),ee=[];ce(ee,$,0),ce(ee,j,1),ee.push(De(K),De($),De(X),De(j));var ie=!!S.getItemModel(M).get(["itemStyle","borderColorDoji"]);S.setItemLayout(M,{sign:iE(T,M,E,L,g,ie),initBaseline:E>L?$[1]:j[1],ends:ee,brushRect:(Ae=R,Ge=B,tt=A,nt=void 0,Lt=void 0,nt=de(Ae,tt),Lt=de(Ge,tt),nt[0]-=o/2,Lt[0]-=o/2,{x:nt[0],y:nt[1],width:o,height:Lt[1]-nt[1]})})}var Ae,Ge,tt,nt,Lt;function de(Ae,Ge){var tt=[];return tt[0]=Ge,tt[1]=Ae,isNaN(Ge)||isNaN(Ae)?[NaN,NaN]:n.dataToPoint(tt)}function ce(Ae,Ge,tt){var nt=Ge.slice(),Lt=Ge.slice();nt[0]=Sw(nt[0]+o/2,1,!1),Lt[0]=Sw(Lt[0]-o/2,1,!0),tt?Ae.push(nt,Lt):Ae.push(Lt,nt)}function De(Ae){return Ae[0]=Sw(Ae[0],1),Ae}}}}};function iE(r,n,t,o,l,c){return t>o?-1:t0?r.get(l,n-1)<=o?1:-1:1}const h3=M$;function T$(r,n){var t=n.rippleEffectColor||n.color;r.eachChild(function(o){o.attr({z:n.z,zlevel:n.zlevel,style:{stroke:"stroke"===n.brushType?t:null,fill:"fill"===n.brushType?t:null}})})}var pJ=function(r){function n(t,o){var l=r.call(this)||this,c=new fm(t,o),u=new ct;return l.add(c),l.add(u),l.updateData(t,o),l}return le(n,r),n.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},n.prototype.startEffectAnimation=function(t){for(var o=t.symbolType,l=t.color,c=t.rippleNumber,u=this.childAt(1),h=0;h0&&(h=this._getLineLength(c)/g*1e3),h!==this._period||p!==this._loop||m!==this._roundTrip){c.stopAnimation();var y=void 0;y=qe(v)?v(l):v,c.__t>0&&(y=-h*c.__t),this._animateSymbol(c,h,y,p,m)}this._period=h,this._loop=p,this._roundTrip=m}},n.prototype._animateSymbol=function(t,o,l,c,u){if(o>0){t.__t=0;var h=this,p=t.animate("",c).when(u?2*o:o,{__t:u?2:1}).delay(l).during(function(){h._updateSymbolPosition(t)});c||p.done(function(){h.remove(t)}),p.start()}},n.prototype._getLineLength=function(t){return Tc(t.__p1,t.__cp1)+Tc(t.__cp1,t.__p2)},n.prototype._updateAnimationPoints=function(t,o){t.__p1=o[0],t.__p2=o[1],t.__cp1=o[2]||[(o[0][0]+o[1][0])/2,(o[0][1]+o[1][1])/2]},n.prototype.updateData=function(t,o,l){this.childAt(0).updateData(t,o,l),this._updateEffectSymbol(t,o)},n.prototype._updateSymbolPosition=function(t){var o=t.__p1,l=t.__p2,c=t.__cp1,u=t.__t<1?t.__t:2-t.__t,h=[t.x,t.y],p=h.slice(),m=Pi,g=FS;h[0]=m(o[0],c[0],l[0],u),h[1]=m(o[1],c[1],l[1],u);var v=t.__t<1?g(o[0],c[0],l[0],u):g(l[0],c[0],o[0],1-u),y=t.__t<1?g(o[1],c[1],l[1],u):g(l[1],c[1],o[1],1-u);t.rotation=-Math.atan2(y,v)-Math.PI/2,("line"===this._symbolType||"rect"===this._symbolType||"roundRect"===this._symbolType)&&(void 0!==t.__lastT&&t.__lastT=0&&!(c[p]<=o);p--);p=Math.min(p,u-2)}else{for(p=h;po);p++);p=Math.min(p-1,u-2)}var g=(o-c[p])/(c[p+1]-c[p]),v=l[p],y=l[p+1];t.x=v[0]*(1-g)+g*y[0],t.y=v[1]*(1-g)+g*y[1],t.rotation=-Math.atan2(t.__t<1?y[1]-v[1]:v[1]-y[1],t.__t<1?y[0]-v[0]:v[0]-y[0])-Math.PI/2,this._lastFrame=p,this._lastFramePercent=o,t.ignore=!1}},n}(PC);const Iu=P$;var mJ=function r(){this.polyline=!1,this.curveness=0,this.segs=[]},rE=function(r){function n(t){var o=r.call(this,t)||this;return o._off=0,o.hoverDataIdx=-1,o}return le(n,r),n.prototype.reset=function(){this.notClear=!1,this._off=0},n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new mJ},n.prototype.buildPath=function(t,o){var u,l=o.segs,c=o.curveness;if(o.polyline)for(u=this._off;u0){t.moveTo(l[u++],l[u++]);for(var p=1;p0?t.quadraticCurveTo((m+v)/2-(g-y)*c,(g+y)/2-(v-m)*c,v,y):t.lineTo(v,y)}this.incremental&&(this._off=u,this.notClear=!0)},n.prototype.findDataIndex=function(t,o){var l=this.shape,c=l.segs,u=l.curveness,h=this.style.lineWidth;if(l.polyline)for(var p=0,m=0;m0)for(var v=c[m++],y=c[m++],b=1;b0){if(DD(v,y,(v+x)/2-(y-C)*u,(y+C)/2-(x-v)*u,x,C,h,t,o))return p}else if(Gl(v,y,x,C,h,t,o))return p;p++}return-1},n.prototype.contain=function(t,o){var l=this.transformCoordToLocal(t,o);return this.getBoundingRect().contain(t=l[0],o=l[1])?(this.hoverDataIdx=this.findDataIndex(t,o))>=0:(this.hoverDataIdx=-1,!1)},n.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var l=this.shape.segs,c=1/0,u=1/0,h=-1/0,p=-1/0,m=0;m0&&(u.dataIndex=p+n.__startIndex)})},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}();const oE=aE;var R$={seriesType:"lines",plan:Wh(),reset:function(r){var n=r.coordinateSystem;if(n){var t=r.get("polyline"),o=r.pipelineContext.large;return{progress:function(l,c){var u=[];if(o){var h=void 0,p=l.end-l.start;if(t){for(var m=0,g=l.start;g0&&(g||m.configLayer(h,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(p/10+.9,1),0)})),u.updateData(c);var v=t.get("clip",!0)&&Px(t.coordinateSystem,!1,t);v?this.group.setClipPath(v):this.group.removeClipPath(),this._lastZlevel=h,this._finished=!0},n.prototype.incrementalPrepareRender=function(t,o,l){var c=t.getData();this._updateLineDraw(c,t).incrementalPrepareUpdate(c),this._clearLayer(l),this._finished=!1},n.prototype.incrementalRender=function(t,o,l){this._lineDraw.incrementalUpdate(t,o.getData()),this._finished=t.end===o.getData().count()},n.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},n.prototype.updateTransform=function(t,o,l){var c=t.getData(),u=t.pipelineContext;if(!this._finished||u.large||u.progressiveRender)return{update:!0};var h=sE.reset(t,o,l);h.progress&&h.progress({start:0,end:c.count(),count:c.count()},c),this._lineDraw.updateLayout(),this._clearLayer(l)},n.prototype._updateLineDraw=function(t,o){var l=this._lineDraw,c=this._showEffect(o),u=!!o.get("polyline"),p=o.pipelineContext.large;return(!l||c!==this._hasEffet||u!==this._isPolyline||p!==this._isLargeDraw)&&(l&&l.remove(),l=this._lineDraw=p?new oE:new MV(u?c?Iu:v3:c?PC:Hk),this._hasEffet=c,this._isPolyline=u,this._isLargeDraw=p),this.group.add(l.group),l},n.prototype._showEffect=function(t){return!!t.get(["effect","show"])},n.prototype._clearLayer=function(t){var o=t.getZr();"svg"!==o.painter.getType()&&null!=this._lastZlevel&&o.painter.getLayer(this._lastZlevel).clear(!0)},n.prototype.remove=function(t,o){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(o)},n.prototype.dispose=function(t,o){this.remove(t,o)},n.type="lines",n}(Nn);const _3=O$;var lE=typeof Uint32Array>"u"?Array:Uint32Array,gJ=typeof Float64Array>"u"?Array:Float64Array;function cE(r){var n=r.data;n&&n[0]&&n[0][0]&&n[0][0].coord&&(r.data=xe(n,function(t){var l={coords:[t[0].coord,t[1].coord]};return t[0].name&&(l.fromName=t[0].name),t[1].name&&(l.toName=t[1].name),gS([l,t[0],t[1]])}))}var Xm=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.visualStyleAccessPath="lineStyle",t.visualDrawType="stroke",t}return le(n,r),n.prototype.init=function(t){t.data=t.data||[],cE(t);var o=this._processFlatCoordsArray(t.data);this._flatCoords=o.flatCoords,this._flatCoordsOffset=o.flatCoordsOffset,o.flatCoords&&(t.data=new Float32Array(o.count)),r.prototype.init.apply(this,arguments)},n.prototype.mergeOption=function(t){if(cE(t),t.data){var o=this._processFlatCoordsArray(t.data);this._flatCoords=o.flatCoords,this._flatCoordsOffset=o.flatCoordsOffset,o.flatCoords&&(t.data=new Float32Array(o.count))}r.prototype.mergeOption.apply(this,arguments)},n.prototype.appendData=function(t){var o=this._processFlatCoordsArray(t.data);o.flatCoords&&(this._flatCoords?(this._flatCoords=jn(this._flatCoords,o.flatCoords),this._flatCoordsOffset=jn(this._flatCoordsOffset,o.flatCoordsOffset)):(this._flatCoords=o.flatCoords,this._flatCoordsOffset=o.flatCoordsOffset),t.data=new Float32Array(o.count)),this.getRawData().appendData(t.data)},n.prototype._getCoordsFromItemModel=function(t){var o=this.getData().getItemModel(t);return o.option instanceof Array?o.option:o.getShallow("coords")},n.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},n.prototype.getLineCoords=function(t,o){if(this._flatCoordsOffset){for(var l=this._flatCoordsOffset[2*t],c=this._flatCoordsOffset[2*t+1],u=0;u ")})},n.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},n.prototype.getProgressive=function(){return this.option.progressive??(this.option.large?1e4:this.get("progressive"))},n.prototype.getProgressiveThreshold=function(){return this.option.progressiveThreshold??(this.option.large?2e4:this.get("progressiveThreshold"))},n.prototype.getZLevelKey=function(){var t=this.getModel("effect"),o=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&o>0?o+"":""},n.type="series.lines",n.dependencies=["grid","polar","geo","calendar"],n.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},n}(Zn);const L$=Xm;function RC(r){return r instanceof Array||(r=[r,r]),r}var F$={seriesType:"lines",reset:function(r){var n=RC(r.get("symbol")),t=RC(r.get("symbolSize")),o=r.getData();return o.setVisual("fromSymbol",n&&n[0]),o.setVisual("toSymbol",n&&n[1]),o.setVisual("fromSymbolSize",t&&t[0]),o.setVisual("toSymbolSize",t&&t[1]),{dataEach:o.hasItemOption?function l(c,u){var h=c.getItemModel(u),p=RC(h.getShallow("symbol",!0)),m=RC(h.getShallow("symbolSize",!0));p[0]&&c.setItemVisual(u,"fromSymbol",p[0]),p[1]&&c.setItemVisual(u,"toSymbol",p[1]),m[0]&&c.setItemVisual(u,"fromSymbolSize",m[0]),m[1]&&c.setItemVisual(u,"toSymbolSize",m[1])}:null}}};const dE=F$;var b3=function(){function r(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var n=$s.createCanvas();this.canvas=n}return r.prototype.update=function(n,t,o,l,c,u){var h=this._getBrush(),p=this._getGradient(c,"inRange"),m=this._getGradient(c,"outOfRange"),g=this.pointSize+this.blurSize,v=this.canvas,y=v.getContext("2d"),b=n.length;v.width=t,v.height=o;for(var x=0;x0){var X=u(A)?p:m;A>0&&(A=A*j+H),L[R++]=X[$],L[R++]=X[$+1],L[R++]=X[$+2],L[R++]=X[$+3]*A*256}else R+=4}return y.putImageData(E,0,0),v},r.prototype._getBrush=function(){var n=this._brushCanvas||(this._brushCanvas=$s.createCanvas()),t=this.pointSize+this.blurSize,o=2*t;n.width=o,n.height=o;var l=n.getContext("2d");return l.clearRect(0,0,o,o),l.shadowOffsetX=o,l.shadowBlur=this.blurSize,l.shadowColor="#000",l.beginPath(),l.arc(-t,t,this.pointSize,0,2*Math.PI,!0),l.closePath(),l.fill(),n},r.prototype._getGradient=function(n,t){for(var o=this._gradientPixels,l=o[t]||(o[t]=new Uint8ClampedArray(1024)),c=[0,0,0,0],u=0,h=0;h<256;h++)n[t](h/255,!0,c),l[u++]=c[0],l[u++]=c[1],l[u++]=c[2],l[u++]=c[3];return l},r}();const B$=b3;function z$(r){var n=r.dimensions;return"lng"===n[0]&&"lat"===n[1]}var w3=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){var c;o.eachComponent("visualMap",function(h){h.eachTargetSeries(function(p){p===t&&(c=h)})}),this._progressiveEls=null,this.group.removeAll();var u=t.coordinateSystem;"cartesian2d"===u.type||"calendar"===u.type?this._renderOnCartesianAndCalendar(t,l,0,t.getData().count()):z$(u)&&this._renderOnGeo(u,t,c,l)},n.prototype.incrementalPrepareRender=function(t,o,l){this.group.removeAll()},n.prototype.incrementalRender=function(t,o,l,c){var u=o.coordinateSystem;u&&(z$(u)?this.render(o,l,c):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(o,c,t.start,t.end,!0)))},n.prototype.eachRendered=function(t){ou(this._progressiveEls||this.group,t)},n.prototype._renderOnCartesianAndCalendar=function(t,o,l,c,u){var m,g,v,y,h=t.coordinateSystem,p=vf(h,"cartesian2d");if(p){var b=h.getAxis("x"),x=h.getAxis("y");m=b.getBandWidth()+.5,g=x.getBandWidth()+.5,v=b.scale.getExtent(),y=x.scale.getExtent()}for(var C=this.group,S=t.getData(),M=t.getModel(["emphasis","itemStyle"]).getItemStyle(),T=t.getModel(["blur","itemStyle"]).getItemStyle(),A=t.getModel(["select","itemStyle"]).getItemStyle(),E=t.get(["itemStyle","borderRadius"]),L=Or(t),R=t.getModel("emphasis"),B=R.get("focus"),H=R.get("blurScope"),G=R.get("disabled"),j=p?[S.mapDimension("x"),S.mapDimension("y"),S.mapDimension("value")]:[S.mapDimension("time"),S.mapDimension("value")],$=l;$v[1]||ney[1])continue;var ie=h.dataToPoint([ee,ne]);X=new an({shape:{x:ie[0]-m/2,y:ie[1]-g/2,width:m,height:g},style:K})}else{if(isNaN(S.get(j[1],$)))continue;X=new an({z2:1,shape:h.dataToRect([S.get(j[0],$)]).contentShape,style:K})}if(S.hasItemOption){var de=S.getItemModel($),ce=de.getModel("emphasis");M=ce.getModel("itemStyle").getItemStyle(),T=de.getModel(["blur","itemStyle"]).getItemStyle(),A=de.getModel(["select","itemStyle"]).getItemStyle(),E=de.get(["itemStyle","borderRadius"]),B=ce.get("focus"),H=ce.get("blurScope"),G=ce.get("disabled"),L=Or(de)}X.shape.r=E;var ve=t.getRawValue($),De="-";ve&&null!=ve[2]&&(De=ve[2]+""),Zr(X,L,{labelFetcher:t,labelDataIndex:$,defaultOpacity:K.opacity,defaultText:De}),X.ensureState("emphasis").style=M,X.ensureState("blur").style=T,X.ensureState("select").style=A,Ri(X,B,H,G),X.incremental=u,u&&(X.states.emphasis.hoverLayer=!0),C.add(X),S.setItemGraphicEl($,X),this._progressiveEls&&this._progressiveEls.push(X)}},n.prototype._renderOnGeo=function(t,o,l,c){var u=l.targetVisuals.inRange,h=l.targetVisuals.outOfRange,p=o.getData(),m=this._hmLayer||this._hmLayer||new B$;m.blurSize=o.get("blurSize"),m.pointSize=o.get("pointSize"),m.minOpacity=o.get("minOpacity"),m.maxOpacity=o.get("maxOpacity");var g=t.getViewRect().clone(),v=t.getRoamTransform();g.applyTransform(v);var y=Math.max(g.x,0),b=Math.max(g.y,0),x=Math.min(g.width+g.x,c.getWidth()),C=Math.min(g.height+g.y,c.getHeight()),S=x-y,M=C-b,T=[p.mapDimension("lng"),p.mapDimension("lat"),p.mapDimension("value")],A=p.mapArray(T,function(B,H,G){var j=t.dataToPoint([B,H]);return j[0]-=y,j[1]-=b,j.push(G),j}),E=l.getExtent(),L="visualMap.continuous"===l.type?function OC(r,n){var t=r[1]-r[0];return n=[(n[0]-r[0])/t,(n[1]-r[0])/t],function(o){return o>=n[0]&&o<=n[1]}}(E,l.option.range):function V$(r,n,t){var o=r[1]-r[0],l=(n=xe(n,function(u){return{interval:[(u.interval[0]-r[0])/o,(u.interval[1]-r[0])/o]}})).length,c=0;return function(u){var h;for(h=c;h=0;h--){var p;if((p=n[h].interval)[0]<=u&&u<=p[1]){c=h;break}}return h>=0&&h0?1:-1})(t,c,l,o,y),function G$(r,n,t,o,l,c,u,h,p,m){var x,g=p.valueDim,v=p.categoryDim,y=Math.abs(t[v.wh]),b=r.getItemVisual(n,"symbolSize");(x=be(b)?b.slice():null==b?["100%","100%"]:[b,b])[v.index]=Ie(x[v.index],y),x[g.index]=Ie(x[g.index],o?y:Math.abs(c)),m.symbolSize=x,(m.symbolScale=[x[0]/h,x[1]/h])[g.index]*=(p.isHorizontal?-1:1)*u}(r,n,l,c,0,y.boundingLength,y.pxSign,g,o,y),function U$(r,n,t,o,l){var c=r.get(C3)||0;c&&(FC.attr({scaleX:n[0],scaleY:n[1],rotation:t}),FC.updateTransform(),c/=FC.getLineScale(),c*=n[o.valueDim.index]),l.valueLineWidth=c||0}(t,y.symbolScale,m,o,y);var b=y.symbolSize,x=Ee(t.get("symbolOffset"),b);return function j$(r,n,t,o,l,c,u,h,p,m,g,v){var y=g.categoryDim,b=g.valueDim,x=v.pxSign,C=Math.max(n[b.index]+h,0),S=C;if(o){var M=Math.abs(p),T=Vi(r.get("symbolMargin"),"15%")+"",A=!1;T.lastIndexOf("!")===T.length-1&&(A=!0,T=T.slice(0,T.length-1));var E=Ie(T,n[b.index]),L=Math.max(C+2*E,0),R=A?0:2*E,B=o0(o),H=B?o:X$((M+R)/L);L=C+2*(E=(M-H*C)/2/(A?H:Math.max(H-1,1))),R=A?0:2*E,!B&&"fixed"!==o&&(H=m?X$((Math.abs(m)+R)/L):0),S=H*L-R,v.repeatTimes=H,v.symbolMargin=E}var j=x*(S/2),$=v.pathPosition=[];$[y.index]=t[y.wh]/2,$[b.index]="start"===u?j:"end"===u?p-j:p/2,c&&($[0]+=c[0],$[1]+=c[1]);var X=v.bundlePosition=[];X[y.index]=t[y.xy],X[b.index]=t[b.xy];var K=v.barRectShape=ge({},t);K[b.wh]=x*Math.max(Math.abs(t[b.wh]),Math.abs($[b.index]+j)),K[y.wh]=t[y.wh];var ee=v.clipShape={};ee[y.xy]=-t[y.xy],ee[y.wh]=g.ecSize[y.wh],ee[b.xy]=0,ee[b.wh]=t[b.wh]}(t,b,l,c,0,x,h,y.valueLineWidth,y.boundingLength,y.repeatCutLength,o,y),y}function mE(r,n){return r.toGlobalCoord(r.dataToCoord(r.scale.parse(n)))}function S3(r){var n=r.symbolPatternSize,t=Ui(r.symbolType,-n/2,-n/2,n,n);return t.attr({culling:!0}),"image"!==t.type&&t.setStyle({strokeNoScale:!0}),t}function D3(r,n,t,o){var l=r.__pictorialBundle,h=t.pathPosition,p=n.valueDim,m=t.repeatTimes||0,g=0,v=t.symbolSize[n.valueDim.index]+t.valueLineWidth+2*t.symbolMargin;for(E3(r,function(C){C.__pictorialAnimationIndex=g,C.__pictorialRepeatTimes=m,g0:M<0)&&(T=m-1-C),S[p.index]=v*(T-m/2+.5)+h[p.index],{x:S[0],y:S[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation}}}function M3(r,n,t,o){var l=r.__pictorialBundle,c=r.__pictorialMainPath;c?xy(c,null,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation},t,o):(c=r.__pictorialMainPath=S3(t),l.add(c),xy(c,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:0,scaleY:0,rotation:t.rotation},{scaleX:t.symbolScale[0],scaleY:t.symbolScale[1]},t,o))}function gE(r,n,t){var o=ge({},n.barRectShape),l=r.__pictorialBarRect;l?xy(l,null,{shape:o},n,t):((l=r.__pictorialBarRect=new an({z2:2,shape:o,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}})).disableMorphing=!0,r.add(l))}function vE(r,n,t,o){if(t.symbolClip){var l=r.__pictorialClipPath,c=ge({},t.clipShape),u=n.valueDim,h=t.animationModel,p=t.dataIndex;if(l)un(l,{shape:c},h,p);else{c[u.wh]=0,l=new an({shape:c}),r.__pictorialBundle.setClipPath(l),r.__pictorialClipPath=l;var m={};m[u.wh]=t.clipShape[u.wh],_i[o?"updateProps":"initProps"](l,{shape:m},h,p)}}}function T3(r,n){var t=r.getItemModel(n);return t.getAnimationDelayParams=$$,t.isAnimationEnabled=W$,t}function $$(r){return{index:r.__pictorialAnimationIndex,count:r.__pictorialRepeatTimes}}function W$(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function A3(r,n,t,o){var l=new ct,c=new ct;return l.add(c),l.__pictorialBundle=c,c.x=t.bundlePosition[0],c.y=t.bundlePosition[1],t.symbolRepeat?D3(l,n,t):M3(l,0,t),gE(l,t,o),vE(l,n,t,o),l.__pictorialShapeStr=Y$(r,t),l.__pictorialSymbolMeta=t,l}function k3(r,n,t,o){var l=o.__pictorialBarRect;l&&l.removeTextContent();var c=[];E3(o,function(u){c.push(u)}),o.__pictorialMainPath&&c.push(o.__pictorialMainPath),o.__pictorialClipPath&&(t=null),U(c,function(u){jd(u,{scaleX:0,scaleY:0},t,n,function(){o.parent&&o.parent.remove(o)})}),r.setItemGraphicEl(n,null)}function Y$(r,n){return[r.getItemVisual(n.dataIndex,"symbol")||"none",!!n.symbolRepeat,!!n.symbolClip].join(":")}function E3(r,n,t){U(r.__pictorialBundle.children(),function(o){o!==r.__pictorialBarRect&&n.call(t,o)})}function xy(r,n,t,o,l,c){n&&r.attr(n),o.symbolClip&&!l?t&&r.attr(t):t&&_i[l?"updateProps":"initProps"](r,t,o.animationModel,o.dataIndex,c)}function q$(r,n,t){var o=t.dataIndex,l=t.itemModel,c=l.getModel("emphasis"),u=c.getModel("itemStyle").getItemStyle(),h=l.getModel(["blur","itemStyle"]).getItemStyle(),p=l.getModel(["select","itemStyle"]).getItemStyle(),m=l.getShallow("cursor"),g=c.get("focus"),v=c.get("blurScope"),y=c.get("scale");E3(r,function(C){if(C instanceof la){var S=C.style;C.useStyle(ge({image:S.image,x:S.x,y:S.y,width:S.width,height:S.height},t.style))}else C.useStyle(t.style);var M=C.ensureState("emphasis");M.style=u,y&&(M.scaleX=1.1*C.scaleX,M.scaleY=1.1*C.scaleY),C.ensureState("blur").style=h,C.ensureState("select").style=p,m&&(C.cursor=m),C.z2=t.z2});var b=n.valueDim.posDesc[+(t.boundingLength>0)];Zr(r.__pictorialBarRect,Or(l),{labelFetcher:n.seriesModel,labelDataIndex:o,defaultText:ad(n.seriesModel.getData(),o),inheritColor:t.style.fill,defaultOpacity:t.style.opacity,defaultOutsidePosition:b}),Ri(r,g,v,c.get("disabled"))}function X$(r){var n=Math.round(r);return Math.abs(r-n)<1e-4?n:Math.ceil(r)}const _E=pE;var yE=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.hasSymbolVisual=!0,t.defaultSymbol="roundRect",t}return le(n,r),n.prototype.getInitialData=function(t){return t.stack=null,r.prototype.getInitialData.apply(this,arguments)},n.type="series.pictorialBar",n.dependencies=["grid"],n.defaultOption=$d(Ox.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),n}(Ox);const Z$=yE;var I3=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._layers=[],t}return le(n,r),n.prototype.render=function(t,o,l){var c=t.getData(),u=this,h=this.group,p=t.getLayerSeries(),m=c.getLayout("layoutInfo"),g=m.rect,v=m.boundaryGap;function y(S){return S.name}h.x=0,h.y=g.y+v[0];var b=new Kc(this._layersSeries||[],p,y,y),x=[];function C(S,M,T){var A=u._layers;if("remove"!==S){for(var R,E=[],L=[],B=p[M].indices,H=0;Hc&&(c=h),o.push(h)}for(var m=0;mc&&(c=v)}return{y0:l,max:c}}(h),m=p.y0,g=t/p.max,v=l.length,y=l[0].indices.length,x=0;xMath.PI/2?"right":"left"):X&&"center"!==X?"left"===X?(j=u.r0+$,p>Math.PI/2&&(X="right")):"right"===X&&(j=u.r-$,p>Math.PI/2&&(X="left")):(j=h===2*Math.PI&&0===u.r0?0:(u.r+u.r0)/2,X="center"),E.style.align=X,E.style.verticalAlign=S(T,"verticalAlign")||"middle",E.x=j*m+u.cx,E.y=j*g+u.cy;var K=S(T,"rotate"),ee=0;"radial"===K?(ee=-p)<-Math.PI/2&&(ee+=Math.PI):"tangential"===K?(ee=Math.PI/2-p)>Math.PI/2?ee-=Math.PI:ee<-Math.PI/2&&(ee+=Math.PI):ln(K)&&(ee=K*Math.PI/180),E.rotation=ee}),y.dirtyStyle()},n}(Ya);const wE=P3;var HC="sunburstRootToNode",GC="sunburstHighlight",iW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l,c){var u=this;this.seriesModel=t,this.api=l,this.ecModel=o;var h=t.getData(),p=h.tree.root,m=t.getViewRoot(),g=this.group,v=t.get("renderLabelForZeroData"),y=[];m.eachNode(function(T){y.push(T)}),function x(T,A){function E(R){return R.getId()}function L(R,B){!function C(T,A){if(!v&&T&&!T.getValue()&&(T=null),T!==p&&A!==p)if(A&&A.piece)T?(A.piece.updateData(!1,T,t,o,l),h.setItemGraphicEl(T.dataIndex,A.piece)):function S(T){T&&T.piece&&(g.remove(T.piece),T.piece=null)}(A);else if(T){var E=new wE(T,t,o,l);g.add(E),h.setItemGraphicEl(T.dataIndex,E)}}(null==R?null:T[R],null==B?null:A[B])}0===T.length&&0===A.length||new Kc(A,T,E,E).add(L).update(L).remove(vt(L,null)).execute()}(y,this._oldChildren||[]),function M(T,A){A.depth>0?(u.virtualPiece?u.virtualPiece.updateData(!1,T,t,o,l):(u.virtualPiece=new wE(T,t,o,l),g.add(u.virtualPiece)),A.piece.off("click"),u.virtualPiece.on("click",function(E){u._rootToNode(A.parentNode)})):u.virtualPiece&&(g.remove(u.virtualPiece),u.virtualPiece=null)}(p,m),this._initEvents(),this._oldChildren=y},n.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",function(o){var l=!1;t.seriesModel.getViewRoot().eachNode(function(u){if(!l&&u.piece&&u.piece===o.target){var h=u.getModel().get("nodeClick");if("rootToNode"===h)t._rootToNode(u);else if("link"===h){var p=u.getModel(),m=p.get("link");m&&Vp(m,p.get("target",!0)||"_blank")}l=!0}})})},n.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:HC,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},n.prototype.containPoint=function(t,o){var c=o.getData().getItemLayout(0);if(c){var u=t[0]-c.cx,h=t[1]-c.cy,p=Math.sqrt(u*u+h*h);return p<=c.r&&p>=c.r0}},n.type="sunburst",n}(Nn);const jC=iW;var _J=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.ignoreStyleOnData=!0,t}return le(n,r),n.prototype.getInitialData=function(t,o){var l={name:t.name,children:t.data};xE(l);var c=this._levelModels=xe(t.levels||[],function(p){return new zn(p,this,o)},this),u=yk.createTree(l,this,function h(p){p.wrapMethod("getItemModel",function(m,g){var v=u.getNodeByDataIndex(g),y=c[v.depth];return y&&(m.parentModel=y),m})});return u.data},n.prototype.optionUpdated=function(){this.resetViewRoot()},n.prototype.getDataParams=function(t){var o=r.prototype.getDataParams.apply(this,arguments),l=this.getData().tree.getNodeByDataIndex(t);return o.treePathInfo=sC(l,this),o},n.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},n.prototype.getViewRoot=function(){return this._viewRoot},n.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var o=this.getRawData().tree.root;(!t||t!==o&&!o.contains(t))&&(this._viewRoot=o)},n.prototype.enableAriaDecal=function(){ty(this)},n.type="series.sunburst",n.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},n}(Zn);function xE(r){var n=0;U(r.children,function(o){xE(o);var l=o.value;be(l)&&(l=l[0]),n+=l});var t=r.value;be(t)&&(t=t[0]),(null==t||isNaN(t))&&(t=n),t<0&&(t=0),be(r.value)?r.value[0]=t:r.value=t}const CE=_J;var SE=Math.PI/180;function rW(r,n,t){n.eachSeriesByType(r,function(o){var l=o.get("center"),c=o.get("radius");be(c)||(c=[0,c]),be(l)||(l=[l,l]);var u=t.getWidth(),h=t.getHeight(),p=Math.min(u,h),m=Ie(l[0],u),g=Ie(l[1],h),v=Ie(c[0],p/2),y=Ie(c[1],p/2),b=-o.get("startAngle")*SE,x=o.get("minAngle")*SE,C=o.getData().tree.root,S=o.getViewRoot(),M=S.depth,T=o.get("sort");null!=T&&O3(S,T);var A=0;U(S.children,function(ie){!isNaN(ie.getValue())&&A++});var E=S.getValue(),L=Math.PI/(E||A)*2,R=S.depth>0,H=(y-v)/(S.height-(R?-1:1)||1),G=o.get("clockwise"),j=o.get("stillShowZeroSum"),$=G?1:-1,X=function(ie,de){if(ie){var ce=de;if(ie!==C){var ve=ie.getValue(),De=0===E&&j?L:ve*L;De1;)u=u.parentNode;var h=l.getColorFromPalette(u.name||u.dataIndex+"",n);return o.depth>1&&Le(h)&&(h=Gb(h,(o.depth-1)/(c-1)*.5)),h}(u,o,c.root.height)),ge(l.ensureUniqueItemVisual(u.dataIndex,"style"),p)})})}var DE={color:"fill",borderColor:"stroke"},ME={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},gd=cn(),L3=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},n.prototype.getInitialData=function(t,o){return ed(null,this)},n.prototype.getDataParams=function(t,o,l){var c=r.prototype.getDataParams.call(this,t,o);return l&&(c.info=gd(l).info),c},n.type="series.custom",n.dependencies=["grid","polar","geo","singleAxis","calendar"],n.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},n}(Zn);const yJ=L3;function bJ(r,n){return n=n||[0,0],xe(["x","y"],function(t,o){var l=this.getAxis(t),c=n[o],u=r[o]/2;return"category"===l.type?l.getBandWidth():Math.abs(l.dataToCoord(c-u)-l.dataToCoord(c+u))},this)}function cW(r,n){return n=n||[0,0],xe([0,1],function(t){var o=n[t],l=r[t]/2,c=[],u=[];return c[t]=o-l,u[t]=o+l,c[1-t]=u[1-t]=n[1-t],Math.abs(this.dataToPoint(c)[t]-this.dataToPoint(u)[t])},this)}function uW(r,n){var t=this.getAxis(),o=n instanceof Array?n[0]:n,l=(r instanceof Array?r[0]:r)/2;return"category"===t.type?t.getBandWidth():Math.abs(t.dataToCoord(o-l)-t.dataToCoord(o+l))}function F3(r,n){return n=n||[0,0],xe(["Radius","Angle"],function(t,o){var c=this["get"+t+"Axis"](),u=n[o],h=r[o]/2,p="category"===c.type?c.getBandWidth():Math.abs(c.dataToCoord(u-h)-c.dataToCoord(u+h));return"Angle"===t&&(p=p*Math.PI/180),p},this)}function N3(r,n,t,o){return r&&(r.legacy||!1!==r.legacy&&!t&&!o&&"tspan"!==n&&("text"===n||Ve(r,"text")))}function Qt(r,n,t){var l,c,u,o=r;if("text"===n)u=o;else{u={},Ve(o,"text")&&(u.text=o.text),Ve(o,"rich")&&(u.rich=o.rich),Ve(o,"textFill")&&(u.fill=o.textFill),Ve(o,"textStroke")&&(u.stroke=o.textStroke),Ve(o,"fontFamily")&&(u.fontFamily=o.fontFamily),Ve(o,"fontSize")&&(u.fontSize=o.fontSize),Ve(o,"fontStyle")&&(u.fontStyle=o.fontStyle),Ve(o,"fontWeight")&&(u.fontWeight=o.fontWeight),c={type:"text",style:u,silent:!0},l={};var h=Ve(o,"textPosition");t?l.position=h?o.textPosition:"inside":h&&(l.position=o.textPosition),Ve(o,"textPosition")&&(l.position=o.textPosition),Ve(o,"textOffset")&&(l.offset=o.textOffset),Ve(o,"textRotation")&&(l.rotation=o.textRotation),Ve(o,"textDistance")&&(l.distance=o.textDistance)}return mW(u,r),U(u.rich,function(p){mW(p,p)}),{textConfig:l,textContent:c}}function mW(r,n){n&&(n.font=n.textFont||n.font,Ve(n,"textStrokeWidth")&&(r.lineWidth=n.textStrokeWidth),Ve(n,"textAlign")&&(r.align=n.textAlign),Ve(n,"textVerticalAlign")&&(r.verticalAlign=n.textVerticalAlign),Ve(n,"textLineHeight")&&(r.lineHeight=n.textLineHeight),Ve(n,"textWidth")&&(r.width=n.textWidth),Ve(n,"textHeight")&&(r.height=n.textHeight),Ve(n,"textBackgroundColor")&&(r.backgroundColor=n.textBackgroundColor),Ve(n,"textPadding")&&(r.padding=n.textPadding),Ve(n,"textBorderColor")&&(r.borderColor=n.textBorderColor),Ve(n,"textBorderWidth")&&(r.borderWidth=n.textBorderWidth),Ve(n,"textBorderRadius")&&(r.borderRadius=n.textBorderRadius),Ve(n,"textBoxShadowColor")&&(r.shadowColor=n.textBoxShadowColor),Ve(n,"textBoxShadowBlur")&&(r.shadowBlur=n.textBoxShadowBlur),Ve(n,"textBoxShadowOffsetX")&&(r.shadowOffsetX=n.textBoxShadowOffsetX),Ve(n,"textBoxShadowOffsetY")&&(r.shadowOffsetY=n.textBoxShadowOffsetY))}function gW(r,n,t){var o=r;o.textPosition=o.textPosition||t.position||"inside",null!=t.offset&&(o.textOffset=t.offset),null!=t.rotation&&(o.textRotation=t.rotation),null!=t.distance&&(o.textDistance=t.distance);var l=o.textPosition.indexOf("inside")>=0,c=r.fill||"#000";vW(o,n);var u=null==o.textFill;return l?u&&(o.textFill=t.insideFill||"#fff",!o.textStroke&&t.insideStroke&&(o.textStroke=t.insideStroke),!o.textStroke&&(o.textStroke=c),null==o.textStrokeWidth&&(o.textStrokeWidth=2)):(u&&(o.textFill=r.fill||t.outsideFill||"#000"),!o.textStroke&&t.outsideStroke&&(o.textStroke=t.outsideStroke)),o.text=n.text,o.rich=n.rich,U(n.rich,function(h){vW(h,h)}),o}function vW(r,n){n&&(Ve(n,"fill")&&(r.textFill=n.fill),Ve(n,"stroke")&&(r.textStroke=n.fill),Ve(n,"lineWidth")&&(r.textStrokeWidth=n.lineWidth),Ve(n,"font")&&(r.font=n.font),Ve(n,"fontStyle")&&(r.fontStyle=n.fontStyle),Ve(n,"fontWeight")&&(r.fontWeight=n.fontWeight),Ve(n,"fontSize")&&(r.fontSize=n.fontSize),Ve(n,"fontFamily")&&(r.fontFamily=n.fontFamily),Ve(n,"align")&&(r.textAlign=n.align),Ve(n,"verticalAlign")&&(r.textVerticalAlign=n.verticalAlign),Ve(n,"lineHeight")&&(r.textLineHeight=n.lineHeight),Ve(n,"width")&&(r.textWidth=n.width),Ve(n,"height")&&(r.textHeight=n.height),Ve(n,"backgroundColor")&&(r.textBackgroundColor=n.backgroundColor),Ve(n,"padding")&&(r.textPadding=n.padding),Ve(n,"borderColor")&&(r.textBorderColor=n.borderColor),Ve(n,"borderWidth")&&(r.textBorderWidth=n.borderWidth),Ve(n,"borderRadius")&&(r.textBorderRadius=n.borderRadius),Ve(n,"shadowColor")&&(r.textBoxShadowColor=n.shadowColor),Ve(n,"shadowBlur")&&(r.textBoxShadowBlur=n.shadowBlur),Ve(n,"shadowOffsetX")&&(r.textBoxShadowOffsetX=n.shadowOffsetX),Ve(n,"shadowOffsetY")&&(r.textBoxShadowOffsetY=n.shadowOffsetY),Ve(n,"textShadowColor")&&(r.textShadowColor=n.textShadowColor),Ve(n,"textShadowBlur")&&(r.textShadowBlur=n.textShadowBlur),Ve(n,"textShadowOffsetX")&&(r.textShadowOffsetX=n.textShadowOffsetX),Ve(n,"textShadowOffsetY")&&(r.textShadowOffsetY=n.textShadowOffsetY))}var gc={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},vc=Yt(gc),Sy=(Mo(Ma,function(r,n){return r[n]=1,r},{}),Ma.join(", "),["","style","shape","extra"]),Uf=cn();function TE(r,n,t,o,l){var c=r+"Animation",u=Rh(r,o,l)||{},h=Uf(n).userDuring;return u.duration>0&&(u.during=h?Ne(CJ,{el:n,userDuring:h}):null,u.setToFinal=!0,u.scope=r),ge(u,t[c]),u}function mr(r,n,t,o){var l=(o=o||{}).dataIndex,c=o.isInit,u=o.clearStyle,h=t.isAnimationEnabled(),p=Uf(r),m=n.style;p.userDuring=n.during;var g={},v={};if(function xW(r,n,t){for(var o=0;o=0)){var y=r.getAnimationStyleProps(),b=y?y.style:null;if(b){!c&&(c=o.style={});var x=Yt(t);for(m=0;m0&&r.animateFrom(y,b)}else!function yW(r,n,t,o,l){if(l){var c=TE("update",r,n,o,t);c.duration>0&&r.animateFrom(l,c)}}(r,n,l||0,t,g);Pu(r,n),m?r.dirty():r.markRedraw()}function Pu(r,n){for(var t=Uf(r).leaveToProps,o=0;o=0){!u&&(u=o[r]={});var b=Yt(c);for(g=0;go[1]&&o.reverse(),{coordSys:{type:"polar",cx:r.cx,cy:r.cy,r:o[1],r0:o[0]},api:{coord:function(l){var c=n.dataToRadius(l[0]),u=t.dataToAngle(l[1]),h=r.coordToPoint([c,u]);return h.push(c,u*Math.PI/180),h},size:Ne(F3,r)}}},calendar:function pW(r){var n=r.getRect(),t=r.getRangeInfo();return{coordSys:{type:"calendar",x:n.x,y:n.y,width:n.width,height:n.height,cellWidth:r.getCellWidth(),cellHeight:r.getCellHeight(),rangeInfo:{start:t.start,end:t.end,weeks:t.weeks,dayCount:t.allDay}},api:{coord:function(o,l){return r.dataToPoint(o,l)}}}}};function Ty(r){return r instanceof Vt}function G3(r){return r instanceof ms}var U3=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l,c){this._progressiveEls=null;var u=this._data,h=t.getData(),p=this.group,m=$3(t,h,o,l);u||p.removeAll(),h.diff(u).add(function(v){tr(l,null,v,m(v,c),t,p,h)}).remove(function(v){var y=u.getItemGraphicEl(v);y&&$C(y,gd(y).option,t)}).update(function(v,y){var b=u.getItemGraphicEl(y);tr(l,b,v,m(v,c),t,p,h)}).execute();var g=t.get("clip",!0)?Px(t.coordinateSystem,!1,t):null;g?p.setClipPath(g):p.removeClipPath(),this._data=h},n.prototype.incrementalPrepareRender=function(t,o,l){this.group.removeAll(),this._data=null},n.prototype.incrementalRender=function(t,o,l,c,u){var h=o.getData(),p=$3(o,h,l,c),m=this._progressiveEls=[];function g(b){b.isGroup||(b.incremental=!0,b.ensureState("emphasis").hoverLayer=!0)}for(var v=t.start;v=0?n.getStore().get(de,ne):void 0}var ce=n.get(ie.name,ne),ve=ie&&ie.ordinalMeta;return ve?ve.categories[ce]:ce},styleEmphasis:function B(ee,ne){null==ne&&(ne=m);var ie=T(ne,Yo).getItemStyle(),de=A(ne,Yo),ce=Xn(de,null,null,!0,!0);ce.text=de.getShallow("show")?Ws(r.getFormattedLabel(ne,Yo),r.getFormattedLabel(ne,Ru),ad(n,ne)):null;var ve=R0(de,null,!0);return G(ee,ie),ie=gW(ie,ce,ve),ee&&H(ie,ee),ie.legacy=!0,ie},visual:function j(ee,ne){if(null==ne&&(ne=m),Ve(DE,ee)){var ie=n.getItemVisual(ne,"style");return ie?ie[DE[ee]]:null}if(Ve(ME,ee))return n.getItemVisual(ne,ee)},barLayout:function $(ee){if("cartesian2d"===c.type)return function mU(r){var n=[],t=r.axis,o="axis0";if("category"===t.type){for(var l=t.getBandWidth(),c=0;c=g;b--){var x=n.childAt(b);XC(n,x,l)}}}(r,m,t,o,l),u>=0?c.replaceAt(m,u):c.add(m),m}function qC(r,n,t){var o=gd(r),l=n.type,c=n.shape,u=n.style;return t.isUniversalTransitionEnabled()||null!=l&&l!==o.customGraphicType||"path"===l&&function q3(r){return r&&(Ve(r,"pathData")||Ve(r,"d"))}(c)&&Qm(c)!==o.customPathData||"image"===l&&Ve(u,"image")&&u.image!==o.customImagePath}function Bn(r,n,t){var o=n?yd(r,n):r,l=n?Mn(r,o,Yo):r.style,c=r.type,u=o?o.textConfig:null,h=r.textContent,p=h?n?yd(h,n):h:null;if(l&&(t.isLegacy||N3(l,c,!!u,!!p))){t.isLegacy=!0;var m=Qt(l,c,!n);!u&&m.textConfig&&(u=m.textConfig),!p&&m.textContent&&(p=m.textContent)}!n&&p&&!p.type&&(p.type="text");var v=n?t[n]:t.normal;v.cfg=u,v.conOpt=p}function yd(r,n){return n?r?r[n]:null:r}function Mn(r,n,t){var o=n&&n.style;return null==o&&t===Yo&&r&&(o=r.styleEmphasis),o}function XC(r,n,t){n&&$C(n,gd(r).option,t)}function Ay(r,n){return(r&&r.name)??"e\0\0"+n}function TW(r,n){var t=this.context;Tn(t.api,null!=n?t.oldChildren[n]:null,t.dataIndex,null!=r?t.newChildren[r]:null,t.seriesModel,t.group)}function Y3(r){var n=this.context,t=n.oldChildren[r];t&&$C(t,gd(t).option,n.seriesModel)}function Qm(r){return r&&(r.pathData||r.d)}var jf=cn(),ky=rt,Ey=Ne,X3=function(){function r(){this._dragging=!1,this.animationThreshold=15}return r.prototype.render=function(n,t,o,l){var c=t.get("value"),u=t.get("status");if(this._axisModel=n,this._axisPointerModel=t,this._api=o,l||this._lastValue!==c||this._lastStatus!==u){this._lastValue=c,this._lastStatus=u;var h=this._group,p=this._handle;if(!u||"hide"===u)return h&&h.hide(),void(p&&p.hide());h&&h.show(),p&&p.show();var m={};this.makeElOption(m,c,n,t,o);var g=m.graphicKey;g!==this._lastGraphicKey&&this.clear(o),this._lastGraphicKey=g;var v=this._moveAnimation=this.determineAnimation(n,t);if(h){var y=vt(LE,t,v);this.updatePointerEl(h,m,y),this.updateLabelEl(h,m,y,t)}else h=this._group=new ct,this.createPointerEl(h,m,n,t),this.createLabelEl(h,m,n,t),o.getZr().add(h);NE(h,t,!0),this._renderHandle(c)}},r.prototype.remove=function(n){this.clear(n)},r.prototype.dispose=function(n){this.clear(n)},r.prototype.determineAnimation=function(n,t){var o=t.get("animation"),l=n.axis,c="category"===l.type,u=t.get("snap");if(!u&&!c)return!1;if("auto"===o||null==o){var h=this.animationThreshold;if(c&&l.getBandWidth()>h)return!0;if(u){var p=ym(n).seriesDataCount,m=l.getExtent();return Math.abs(m[0]-m[1])/p>h}return!1}return!0===o},r.prototype.makeElOption=function(n,t,o,l,c){},r.prototype.createPointerEl=function(n,t,o,l){var c=t.pointer;if(c){var u=jf(n).pointerEl=new _i[c.type](ky(t.pointer));n.add(u)}},r.prototype.createLabelEl=function(n,t,o,l){if(t.label){var c=jf(n).labelEl=new dn(ky(t.label));n.add(c),K3(c,l)}},r.prototype.updatePointerEl=function(n,t,o){var l=jf(n).pointerEl;l&&t.pointer&&(l.setStyle(t.pointer.style),o(l,{shape:t.pointer.shape}))},r.prototype.updateLabelEl=function(n,t,o,l){var c=jf(n).labelEl;c&&(c.setStyle(t.label.style),o(c,{x:t.label.x,y:t.label.y}),K3(c,l))},r.prototype._renderHandle=function(n){if(!this._dragging&&this.updateHandleTransform){var h,t=this._axisPointerModel,o=this._api.getZr(),l=this._handle,c=t.getModel("handle"),u=t.get("status");if(!c.get("show")||!u||"hide"===u)return l&&o.remove(l),void(this._handle=null);this._handle||(h=!0,l=this._handle=Xp(c.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(m){mn(m.event)},onmousedown:Ey(this._onHandleDragMove,this,0,0),drift:Ey(this._onHandleDragMove,this),ondragend:Ey(this._onHandleDragEnd,this)}),o.add(l)),NE(l,t,!1),l.setStyle(c.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var p=c.get("size");be(p)||(p=[p,p]),l.scaleX=p[0]/2,l.scaleY=p[1]/2,Zp(this,"_doDispatchAxisPointer",c.get("throttle")||0,"fixRate"),this._moveHandleToValue(n,h)}},r.prototype._moveHandleToValue=function(n,t){LE(this._axisPointerModel,!t&&this._moveAnimation,this._handle,FE(this.getHandleTransform(n,this._axisModel,this._axisPointerModel)))},r.prototype._onHandleDragMove=function(n,t){var o=this._handle;if(o){this._dragging=!0;var l=this.updateHandleTransform(FE(o),[n,t],this._axisModel,this._axisPointerModel);this._payloadInfo=l,o.stopAnimation(),o.attr(FE(l)),jf(o).lastProp=null,this._doDispatchAxisPointer()}},r.prototype._doDispatchAxisPointer=function(){if(this._handle){var t=this._payloadInfo,o=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:o.axis.dim,axisIndex:o.componentIndex}]})}},r.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},r.prototype.clear=function(n){this._lastValue=null,this._lastStatus=null;var t=n.getZr(),o=this._group,l=this._handle;t&&o&&(this._lastGraphicKey=null,o&&t.remove(o),l&&t.remove(l),this._group=null,this._handle=null,this._payloadInfo=null),c_(this,"_doDispatchAxisPointer")},r.prototype.doClear=function(){},r.prototype.buildLabel=function(n,t,o){return{x:n[o=o||0],y:n[1-o],width:t[o],height:t[1-o]}},r}();function LE(r,n,t,o){Z3(jf(t).lastProp,o)||(jf(t).lastProp=o,n?un(t,o,r):(t.stopAnimation(),t.attr(o)))}function Z3(r,n){if(ze(r)&&ze(n)){var t=!0;return U(n,function(o,l){t=t&&Z3(r[l],o)}),!!t}return r===n}function K3(r,n){r[n.get(["label","show"])?"show":"hide"]()}function FE(r){return{x:r.x||0,y:r.y||0,rotation:r.rotation||0}}function NE(r,n,t){var o=n.get("z"),l=n.get("zlevel");r&&r.traverse(function(c){"group"!==c.type&&(null!=o&&(c.z=o),null!=l&&(c.zlevel=l),c.silent=t)})}const ZC=X3;function BE(r){var o,n=r.get("type"),t=r.getModel(n+"Style");return"line"===n?(o=t.getLineStyle()).fill=null:"shadow"===n&&((o=t.getAreaStyle()).stroke=null),o}function Ci(r,n,t,o,l){var u=Bi(t.get("value"),n.axis,n.ecModel,t.get("seriesDataIndices"),{precision:t.get(["label","precision"]),formatter:t.get(["label","formatter"])}),h=t.getModel("label"),p=Fh(h.get("padding")||0),m=h.getFont(),g=It(u,m),v=l.position,y=g.width+p[1]+p[3],b=g.height+p[0]+p[2],x=l.align;"right"===x&&(v[0]-=y),"center"===x&&(v[0]-=y/2);var C=l.verticalAlign;"bottom"===C&&(v[1]-=b),"middle"===C&&(v[1]-=b/2),function Q3(r,n,t,o){var l=o.getWidth(),c=o.getHeight();r[0]=Math.min(r[0]+n,l)-n,r[1]=Math.min(r[1]+t,c)-t,r[0]=Math.max(r[0],0),r[1]=Math.max(r[1],0)}(v,y,b,o);var S=h.get("backgroundColor");(!S||"auto"===S)&&(S=n.get(["axisLine","lineStyle","color"])),r.label={x:v[0],y:v[1],style:Xn(h,{text:u,font:m,fill:h.getTextColor(),padding:p,backgroundColor:S}),z2:10}}function Bi(r,n,t,o,l){r=n.scale.parse(r);var c=n.scale.getLabel({value:r},{precision:l.precision}),u=l.formatter;if(u){var h={value:ul(n,{value:r}),axisDimension:n.dim,axisIndex:n.index,seriesData:[]};U(o,function(p){var m=t.getSeriesByIndex(p.seriesIndex),v=m&&m.getDataParams(p.dataIndexInside);v&&h.seriesData.push(v)}),Le(u)?c=u.replace("{value}",c):qe(u)&&(c=u(h))}return c}function VE(r,n,t){var o=[1,0,0,1,0,0];return Ec(o,o,t.rotation),ss(o,o,t.position),sl([r.dataToCoord(n),(t.labelOffset||0)+(t.labelDirection||1)*(t.labelMargin||0)],o)}function zE(r,n,t,o,l,c){var u=Uo.innerTextLayout(t.rotation,0,t.labelDirection);t.labelMargin=l.get(["label","margin"]),Ci(n,o,l,c,{position:VE(o.axis,r,t),align:u.textAlign,verticalAlign:u.textVerticalAlign})}function HE(r,n,t){return{x1:r[t=t||0],y1:r[1-t],x2:n[t],y2:n[1-t]}}function J3(r,n,t){return{x:r[t=t||0],y:r[1-t],width:n[t],height:n[1-t]}}function AW(r,n,t,o,l,c){return{cx:r,cy:n,r0:t,r:o,startAngle:l,endAngle:c,clockwise:!0}}var kW=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.makeElOption=function(t,o,l,c,u){var h=l.axis,p=h.grid,m=c.get("type"),g=e5(p,h).getOtherAxis(h).getGlobalExtent(),v=h.toGlobalCoord(h.dataToCoord(o,!0));if(m&&"none"!==m){var y=BE(c),b=KC[m](h,v,g);b.style=y,t.graphicKey=b.type,t.pointer=b}zE(o,t,ZN(p.model,l),l,c,u)},n.prototype.getHandleTransform=function(t,o,l){var c=ZN(o.axis.grid.model,o,{labelInside:!1});c.labelMargin=l.get(["handle","margin"]);var u=VE(o.axis,t,c);return{x:u[0],y:u[1],rotation:c.rotation+(c.labelDirection<0?Math.PI:0)}},n.prototype.updateHandleTransform=function(t,o,l,c){var u=l.axis,h=u.grid,p=u.getGlobalExtent(!0),m=e5(h,u).getOtherAxis(u).getGlobalExtent(),g="x"===u.dim?0:1,v=[t.x,t.y];v[g]+=o[g],v[g]=Math.min(p[1],v[g]),v[g]=Math.max(p[0],v[g]);var y=(m[1]+m[0])/2,b=[y,y];return b[g]=v[g],{x:v[0],y:v[1],rotation:t.rotation,cursorPoint:b,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][g]}},n}(ZC);function e5(r,n){var t={};return t[n.dim+"AxisIndex"]=n.index,r.getCartesian(t)}var KC={line:function(r,n,t){return{type:"Line",subPixelOptimize:!0,shape:HE([n,t[0]],[n,t[1]],t5(r))}},shadow:function(r,n,t){var o=Math.max(1,r.getBandWidth());return{type:"Rect",shape:J3([n-o/2,t[0]],[o,t[1]-t[0]],t5(r))}}};function t5(r){return"x"===r.dim?0:1}const qo=kW;var nr=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="axisPointer",n.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},n}(jt);const ir=nr;var Kn=cn(),n5=U;function r5(r,n,t){if(!sn.node){var o=n.getZr();Kn(o).records||(Kn(o).records={}),function a5(r,n){function t(o,l){r.on(o,function(c){var u=function IW(r){var n={showTip:[],hideTip:[]},t=function(o){var l=n[o.type];l?l.push(o):(o.dispatchAction=t,r.dispatchAction(o))};return{dispatchAction:t,pendings:n}}(n);n5(Kn(r).records,function(h){h&&l(h,c,u.dispatchAction)}),function kJ(r,n){var l,t=r.showTip.length,o=r.hideTip.length;t?l=r.showTip[t-1]:o&&(l=r.hideTip[o-1]),l&&(l.dispatchAction=null,n.dispatchAction(l))}(u.pendings,n)})}Kn(r).initialized||(Kn(r).initialized=!0,t("click",vt(o5,"click")),t("mousemove",vt(o5,"mousemove")),t("globalout",EW))}(o,n),(Kn(o).records[r]||(Kn(o).records[r]={})).handler=t}}function EW(r,n,t){r.handler("leave",null,t)}function o5(r,n,t,o){n.handler(r,t,o)}function GE(r,n){if(!sn.node){var t=n.getZr();(Kn(t).records||{})[r]&&(Kn(t).records[r]=null)}}var s5=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){var c=o.getComponent("tooltip"),u=t.get("triggerOn")||c&&c.get("triggerOn")||"mousemove|click";r5("axisPointer",l,function(h,p,m){"none"!==u&&("leave"===h||u.indexOf(h)>=0)&&m({type:"updateAxisPointer",currTrigger:h,x:p&&p.offsetX,y:p&&p.offsetY})})},n.prototype.remove=function(t,o){GE("axisPointer",o)},n.prototype.dispose=function(t,o){GE("axisPointer",o)},n.type="axisPointer",n}(ui);const l5=s5;function UE(r,n){var l,t=[],o=r.seriesIndex;if(null==o||!(l=n.getSeriesByIndex(o)))return{point:[]};var c=l.getData(),u=wp(c,r);if(null==u||u<0||be(u))return{point:[]};var h=c.getItemGraphicEl(u),p=l.coordinateSystem;if(l.getTooltipPosition)t=l.getTooltipPosition(u)||[];else if(p&&p.dataToPoint)if(r.isStacked){var m=p.getBaseAxis(),v=p.getOtherAxis(m).dim,b="x"===v||"radius"===v?1:0,x=c.mapDimension(m.dim),C=[];C[b]=c.get(x,u),C[1-b]=c.get(c.getCalculationInfo("stackResultDimension"),u),t=p.dataToPoint(C)||[]}else t=p.dataToPoint(c.getValues(xe(p.dimensions,function(M){return c.mapDimension(M)}),u))||[];else if(h){var S=h.getBoundingRect().clone();S.applyTransform(h.transform),t=[S.x+S.width/2,S.y+S.height/2]}return{point:t,el:h}}var jE=cn();function EJ(r,n,t){var o=r.currTrigger,l=[r.x,r.y],c=r,u=r.dispatchAction||Ne(t.dispatchAction,t),h=n.getComponent("axisPointer").coordSysAxesInfo;if(h){na(l)&&(l=UE({seriesIndex:c.seriesIndex,dataIndex:c.dataIndex},n).point);var p=na(l),m=c.axesInfo,g=h.axesInfo,v="leave"===o||na(l),y={},b={},x={list:[],map:{}},C={showPointer:vt(PJ,b),showTooltip:vt(c5,x)};U(h.coordSysMap,function(M,T){var A=p||M.containPoint(l);U(h.coordSysAxesInfo[T],function(E,L){var R=E.axis,B=function bd(r,n){for(var t=0;t<(r||[]).length;t++){var o=r[t];if(n.axis.dim===o.axisDim&&n.axis.model.componentIndex===o.axisIndex)return o}}(m,E);if(!v&&A&&(!m||B)){var H=B&&B.value;null==H&&!p&&(H=R.pointToData(l)),null!=H&&PW(E,H,C,!1,y)}})});var S={};return U(g,function(M,T){var A=M.linkGroup;A&&!b[T]&&U(A.axesInfo,function(E,L){var R=b[L];if(E!==M&&R){var B=R.value;A.mapper&&(B=M.axis.scale.parse(A.mapper(B,d5(E),d5(M)))),S[M.key]=B}})}),U(S,function(M,T){PW(g[T],M,C,!0,y)}),function Jm(r,n,t){var o=t.axesInfo=[];U(n,function(l,c){var u=l.axisPointerModel.option,h=r[c];h?(!l.useHandle&&(u.status="show"),u.value=h.value,u.seriesDataIndices=(h.payloadBatch||[]).slice()):!l.useHandle&&(u.status="hide"),"show"===u.status&&o.push({axisDim:l.axis.dim,axisIndex:l.axis.model.componentIndex,value:u.value})})}(b,g,y),function RJ(r,n,t,o){if(!na(n)&&r.list.length){var l=((r.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};o({type:"showTip",escapeConnect:!0,x:n[0],y:n[1],tooltipOption:t.tooltipOption,position:t.position,dataIndexInside:l.dataIndexInside,dataIndex:l.dataIndex,seriesIndex:l.seriesIndex,dataByCoordSys:r.list})}else o({type:"hideTip"})}(x,l,r,u),function OJ(r,n,t){var o=t.getZr(),l="axisPointerLastHighlights",c=jE(o)[l]||{},u=jE(o)[l]={};U(r,function(m,g){var v=m.axisPointerModel.option;"show"===v.status&&U(v.seriesDataIndices,function(y){u[y.seriesIndex+" | "+y.dataIndex]=y})});var h=[],p=[];U(c,function(m,g){!u[g]&&p.push(m)}),U(u,function(m,g){!c[g]&&h.push(m)}),p.length&&t.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:p}),h.length&&t.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:h})}(g,0,t),y}}function PW(r,n,t,o,l){var c=r.axis;if(!c.scale.isBlank()&&c.containData(n)){if(!r.involveSeries)return void t.showPointer(r,n);var u=function IJ(r,n){var t=n.axis,o=t.dim,l=r,c=[],u=Number.MAX_VALUE,h=-1;return U(n.seriesModels,function(p,m){var v,y,g=p.getData().mapDimensionsAll(o);if(p.getAxisTooltipData){var b=p.getAxisTooltipData(g,r,t);y=b.dataIndices,v=b.nestestValue}else{if(!(y=p.getData().indicesOfNearest(g[0],r,"category"===t.type?.5:null)).length)return;v=p.getData().get(g[0],y[0])}if(null!=v&&isFinite(v)){var x=r-v,C=Math.abs(x);C<=u&&((C=0&&h<0)&&(u=C,h=x,l=v,c.length=0),U(y,function(S){c.push({seriesIndex:p.seriesIndex,dataIndexInside:S,dataIndex:p.getData().getRawIndex(S)})}))}}),{payloadBatch:c,snapToValue:l}}(n,r),h=u.payloadBatch,p=u.snapToValue;h[0]&&null==l.seriesIndex&&ge(l,h[0]),!o&&r.snap&&c.containData(p)&&null!=p&&(n=p),t.showPointer(r,n,h),t.showTooltip(r,u,p)}}function PJ(r,n,t,o){r[n.key]={value:t,payloadBatch:o}}function c5(r,n,t,o){var l=t.payloadBatch,c=n.axis,u=c.model,h=n.axisPointerModel;if(n.triggerTooltip&&l.length){var p=n.coordSys.model,m=Ls(p),g=r.map[m];g||(g=r.map[m]={coordSysId:p.id,coordSysIndex:p.componentIndex,coordSysType:p.type,coordSysMainType:p.mainType,dataByAxis:[]},r.list.push(g)),g.dataByAxis.push({axisDim:c.dim,axisIndex:u.componentIndex,axisType:u.type,axisId:u.id,value:o,valueLabelOpt:{precision:h.get(["label","precision"]),formatter:h.get(["label","formatter"])},seriesDataIndices:l.slice()})}}function d5(r){var n=r.axis.model,t={},o=t.axisDim=r.axis.dim;return t.axisIndex=t[o+"AxisIndex"]=n.componentIndex,t.axisName=t[o+"AxisName"]=n.name,t.axisId=t[o+"AxisId"]=n.id,t}function na(r){return!r||null==r[0]||isNaN(r[0])||null==r[1]||isNaN(r[1])}function eg(r){wf.registerAxisPointerClass("CartesianAxisPointer",qo),r.registerComponentModel(ir),r.registerComponentView(l5),r.registerPreprocessor(function(n){if(n){(!n.axisPointer||0===n.axisPointer.length)&&(n.axisPointer={});var t=n.axisPointer.link;t&&!be(t)&&(n.axisPointer.link=[t])}}),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,function(n,t){n.getComponent("axisPointer").coordSysAxesInfo=function _m(r,n){var t={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function bf(r,n,t){var o=n.getComponent("tooltip"),l=n.getComponent("axisPointer"),c=l.get("link",!0)||[],u=[];U(t.getCoordinateSystems(),function(h){if(h.axisPointerEnabled){var p=Ls(h.model),m=r.coordSysAxesInfo[p]={};r.coordSysMap[p]=h;var v=h.model.getModel("tooltip",o);if(U(h.getAxes(),vt(C,!1,null)),h.getTooltipAxes&&o&&v.get("show")){var y="axis"===v.get("trigger"),b="cross"===v.get(["axisPointer","type"]),x=h.getTooltipAxes(v.get(["axisPointer","axis"]));(y||b)&&U(x.baseAxes,vt(C,!b||"cross",y)),b&&U(x.otherAxes,vt(C,"cross",!1))}}function C(S,M,T){var A=T.model.getModel("axisPointer",l),E=A.get("show");if(E&&("auto"!==E||S||ik(A))){null==M&&(M=A.get("triggerTooltip")),A=S?function tk(r,n,t,o,l,c){var u=n.getModel("axisPointer"),p={};U(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(y){p[y]=rt(u.get(y))}),p.snap="category"!==r.type&&!!c,"cross"===u.get("type")&&(p.type="line");var m=p.label||(p.label={});if(null==m.show&&(m.show=!1),"cross"===l){var g=u.get(["label","show"]);if(m.show=g??!0,!c){var v=p.lineStyle=u.get("crossStyle");v&&Ye(m,v.textStyle)}}return r.model.getModel("axisPointer",new zn(p,t,o))}(T,v,l,n,S,M):A;var L=A.get("snap"),R=Ls(T.model),B=M||L||"category"===T.type,H=r.axesInfo[R]={key:R,axis:T,coordSys:h,axisPointerModel:A,triggerTooltip:M,involveSeries:B,snap:L,useHandle:ik(A),seriesModels:[],linkGroup:null};m[R]=H,r.seriesInvolved=r.seriesInvolved||B;var G=function Qi(r,n){for(var t=n.model,o=n.dim,l=0;lS?"left":"right",v=Math.abs(m[1]-M)/C<.3?"middle":m[1]>M?"top":"bottom"}return{position:m,align:g,verticalAlign:v}}(o,l,0,p,c.get(["label","margin"]));Ci(t,l,c,u,S)},n}(ZC),zs={line:function(r,n,t,o){return"angle"===r.dim?{type:"Line",shape:HE(n.coordToPoint([o[0],t]),n.coordToPoint([o[1],t]))}:{type:"Circle",shape:{cx:n.cx,cy:n.cy,r:t}}},shadow:function(r,n,t,o){var l=Math.max(1,r.getBandWidth()),c=Math.PI/180;return"angle"===r.dim?{type:"Sector",shape:AW(n.cx,n.cy,o[0],o[1],(-t-l/2)*c,(l/2-t)*c)}:{type:"Sector",shape:AW(n.cx,n.cy,t-l/2,t+l/2,0,2*Math.PI)}}};const OW=u5;var LW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.findAxisModel=function(t){var o;return this.ecModel.eachComponent(t,function(c){c.getCoordSysModel()===this&&(o=c)},this),o},n.type="polar",n.dependencies=["radiusAxis","angleAxis"],n.defaultOption={z:0,center:["50%","50%"],radius:"80%"},n}(jt);const $E=LW;var WE=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",qi).models[0]},n.type="polarAxis",n}(jt);Ii(WE,cm);var Ou=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="angleAxis",n}(WE),wl=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="radiusAxis",n}(WE),QC=function(r){function n(t,o){return r.call(this,"radius",t,o)||this}return le(n,r),n.prototype.pointToData=function(t,o){return this.polar.pointToData(t,o)["radius"===this.dim?0:1]},n}(Go);QC.prototype.dataToRadius=Go.prototype.dataToCoord,QC.prototype.radiusToData=Go.prototype.coordToData;const YE=QC;var qE=cn(),XE=function(r){function n(t,o){return r.call(this,"angle",t,o||[0,360])||this}return le(n,r),n.prototype.pointToData=function(t,o){return this.polar.pointToData(t,o)["radius"===this.dim?0:1]},n.prototype.calculateCategoryInterval=function(){var t=this,o=t.getLabelModel(),l=t.scale,c=l.getExtent(),u=l.count();if(c[1]-c[0]<1)return 0;var h=c[0],p=t.dataToCoord(h+1)-t.dataToCoord(h),m=Math.abs(p),g=It(null==h?"":h+"",o.getFont(),"center","top"),y=Math.max(g.height,7)/m;isNaN(y)&&(y=1/0);var b=Math.max(0,Math.floor(y)),x=qE(t.model),C=x.lastAutoInterval,S=x.lastTickCount;return null!=C&&null!=S&&Math.abs(C-b)<=1&&Math.abs(S-u)<=1&&C>b?b=C:(x.lastTickCount=u,x.lastAutoInterval=b),b},n}(Go);XE.prototype.dataToAngle=Go.prototype.dataToCoord,XE.prototype.angleToData=Go.prototype.coordToData;const ZE=XE;var FW=["radius","angle"],LJ=function(){function r(n){this.dimensions=FW,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new YE,this._angleAxis=new ZE,this.axisPointerEnabled=!0,this.name=n||"",this._radiusAxis.polar=this._angleAxis.polar=this}return r.prototype.containPoint=function(n){var t=this.pointToCoord(n);return this._radiusAxis.contain(t[0])&&this._angleAxis.contain(t[1])},r.prototype.containData=function(n){return this._radiusAxis.containData(n[0])&&this._angleAxis.containData(n[1])},r.prototype.getAxis=function(n){return this["_"+n+"Axis"]},r.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},r.prototype.getAxesByScale=function(n){var t=[],o=this._angleAxis,l=this._radiusAxis;return o.scale.type===n&&t.push(o),l.scale.type===n&&t.push(l),t},r.prototype.getAngleAxis=function(){return this._angleAxis},r.prototype.getRadiusAxis=function(){return this._radiusAxis},r.prototype.getOtherAxis=function(n){var t=this._angleAxis;return n===t?this._radiusAxis:t},r.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},r.prototype.getTooltipAxes=function(n){var t=null!=n&&"auto"!==n?this.getAxis(n):this.getBaseAxis();return{baseAxes:[t],otherAxes:[this.getOtherAxis(t)]}},r.prototype.dataToPoint=function(n,t){return this.coordToPoint([this._radiusAxis.dataToRadius(n[0],t),this._angleAxis.dataToAngle(n[1],t)])},r.prototype.pointToData=function(n,t){var o=this.pointToCoord(n);return[this._radiusAxis.radiusToData(o[0],t),this._angleAxis.angleToData(o[1],t)]},r.prototype.pointToCoord=function(n){var t=n[0]-this.cx,o=n[1]-this.cy,l=this.getAngleAxis(),c=l.getExtent(),u=Math.min(c[0],c[1]),h=Math.max(c[0],c[1]);l.inverse?u=h-360:h=u+360;var p=Math.sqrt(t*t+o*o);t/=p,o/=p;for(var m=Math.atan2(-o,t)/Math.PI*180,g=mh;)m+=360*g;return[p,m]},r.prototype.coordToPoint=function(n){var t=n[0],o=n[1]/180*Math.PI;return[Math.cos(o)*t+this.cx,-Math.sin(o)*t+this.cy]},r.prototype.getArea=function(){var n=this.getAngleAxis(),o=this.getRadiusAxis().getExtent().slice();o[0]>o[1]&&o.reverse();var l=n.getExtent(),c=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:o[0],r:o[1],startAngle:-l[0]*c,endAngle:-l[1]*c,clockwise:n.inverse,contain:function(u,h){var p=u-this.cx,m=h-this.cy,g=p*p+m*m-1e-4,v=this.r,y=this.r0;return g<=v*v&&g>=y*y}}},r.prototype.convertToPixel=function(n,t,o){return NW(t)===this?this.dataToPoint(o):null},r.prototype.convertFromPixel=function(n,t,o){return NW(t)===this?this.pointToData(o):null},r}();function NW(r){var n=r.seriesModel,t=r.polarModel;return t&&t.coordinateSystem||n&&n.coordinateSystem}const f5=LJ;function VW(r,n){var t=this,o=t.getAngleAxis(),l=t.getRadiusAxis();if(o.scale.setExtent(1/0,-1/0),l.scale.setExtent(1/0,-1/0),r.eachSeries(function(h){if(h.coordinateSystem===t){var p=h.getData();U(ux(p,"radius"),function(m){l.scale.unionExtentFromData(p,m)}),U(ux(p,"angle"),function(m){o.scale.unionExtentFromData(p,m)})}}),wt(o.scale,o.model),wt(l.scale,l.model),"category"===o.type&&!o.onBand){var c=o.getExtent(),u=360/o.scale.count();o.inverse?c[1]+=u:c[1]-=u,o.setExtent(c[0],c[1])}}function zW(r,n){if(r.type=n.get("type"),r.scale=Kt(n),r.onBand=n.get("boundaryGap")&&"category"===r.type,r.inverse=n.get("inverse"),function FJ(r){return"angleAxis"===r.mainType}(n)){r.inverse=r.inverse!==n.get("clockwise");var t=n.get("startAngle");r.setExtent(t,t+(r.inverse?-360:360))}n.axis=r,r.model=n}var HW={dimensions:FW,create:function(r,n){var t=[];return r.eachComponent("polar",function(o,l){var c=new f5(l+"");c.update=VW;var u=c.getRadiusAxis(),h=c.getAngleAxis(),p=o.findAxisModel("radiusAxis"),m=o.findAxisModel("angleAxis");zW(u,p),zW(h,m),function BW(r,n,t){var o=n.get("center"),l=t.getWidth(),c=t.getHeight();r.cx=Ie(o[0],l),r.cy=Ie(o[1],c);var u=r.getRadiusAxis(),h=Math.min(l,c)/2,p=n.get("radius");null==p?p=[0,"100%"]:be(p)||(p=[0,p]);var m=[Ie(p[0],h),Ie(p[1],h)];u.inverse?u.setExtent(m[1],m[0]):u.setExtent(m[0],m[1])}(c,o,n),t.push(c),o.coordinateSystem=c,c.model=o}),r.eachSeries(function(o){if("polar"===o.get("coordinateSystem")){var l=o.getReferringComponents("polar",qi).models[0];o.coordinateSystem=l.coordinateSystem}}),t}};const GW=HW;var KE=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function JC(r,n,t){n[1]>n[0]&&(n=n.slice().reverse());var o=r.coordToPoint([n[0],t]),l=r.coordToPoint([n[1],t]);return{x1:o[0],y1:o[1],x2:l[0],y2:l[1]}}function QE(r){return r.getRadiusAxis().inverse?0:1}function JE(r){var n=r[0],t=r[r.length-1];n&&t&&Math.abs(Math.abs(n.coord-t.coord)-360)<1e-4&&r.pop()}var pi=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.axisPointerClass="PolarAxisPointer",t}return le(n,r),n.prototype.render=function(t,o){if(this.group.removeAll(),t.get("show")){var l=t.axis,c=l.polar,u=c.getRadiusAxis().getExtent(),h=l.getTicksCoords(),p=l.getMinorTicksCoords(),m=xe(l.getViewLabels(),function(g){g=rt(g);var v=l.scale,y="ordinal"===v.type?v.getRawOrdinalNumber(g.tickValue):g.tickValue;return g.coord=l.dataToCoord(y),g});JE(m),JE(h),U(KE,function(g){t.get([g,"show"])&&(!l.scale.isBlank()||"axisLine"===g)&&e1[g](this.group,t,c,h,p,u,m)},this)}},n.type="angleAxis",n}(wf),e1={axisLine:function(r,n,t,o,l,c){var m,u=n.getModel(["axisLine","lineStyle"]),h=QE(t),p=h?0:1;(m=0===c[p]?new al({shape:{cx:t.cx,cy:t.cy,r:c[h]},style:u.getLineStyle(),z2:1,silent:!0}):new $p({shape:{cx:t.cx,cy:t.cy,r:c[h],r0:c[p]},style:u.getLineStyle(),z2:1,silent:!0})).style.fill=null,r.add(m)},axisTick:function(r,n,t,o,l,c){var u=n.getModel("axisTick"),h=(u.get("inside")?-1:1)*u.get("length"),p=c[QE(t)],m=xe(o,function(g){return new Fr({shape:JC(t,[p,p+h],g.coord)})});r.add(Ho(m,{style:Ye(u.getModel("lineStyle").getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])})}))},minorTick:function(r,n,t,o,l,c){if(l.length){for(var u=n.getModel("axisTick"),h=n.getModel("minorTick"),p=(u.get("inside")?-1:1)*h.get("length"),m=c[QE(t)],g=[],v=0;vM?"left":"right",E=Math.abs(S[1]-T)/C<.3?"middle":S[1]>T?"top":"bottom";if(h&&h[x]){var L=h[x];ze(L)&&L.textStyle&&(b=new zn(L.textStyle,p,p.ecModel))}var R=new dn({silent:Uo.isLabelSilent(n),style:Xn(b,{x:S[0],y:S[1],fill:b.getTextColor()||n.get(["axisLine","lineStyle","color"]),text:v.formattedLabel,align:A,verticalAlign:E})});if(r.add(R),g){var B=Uo.makeAxisEventDataBase(n);B.targetType="axisLabel",B.value=v.rawLabel,_t(R).eventData=B}},this)},splitLine:function(r,n,t,o,l,c){var h=n.getModel("splitLine").getModel("lineStyle"),p=h.get("color"),m=0;p=p instanceof Array?p:[p];for(var g=[],v=0;v=0?"p":"n",K=B;L&&(o[g][$]||(o[g][$]={p:B,n:B}),K=o[g][$][X]);var ee=void 0,ne=void 0,ie=void 0,de=void 0;if("radius"===x.dim){var ce=x.dataToCoord(j)-B,ve=p.dataToCoord($);Math.abs(ce)=de})}}})};var tg={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},$W={splitNumber:5},WW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="polar",n}(ui);function Lu(r,n){n=n||{};var o=r.axis,l={},c=o.position,u=o.orient,h=r.coordinateSystem.getRect(),p=[h.x,h.x+h.width,h.y,h.y+h.height],m={horizontal:{top:p[2],bottom:p[3]},vertical:{left:p[0],right:p[1]}};l.position=["vertical"===u?m.vertical[c]:p[0],"horizontal"===u?m.horizontal[c]:p[3]],l.rotation=Math.PI/2*{horizontal:0,vertical:1}[u],l.labelDirection=l.tickDirection=l.nameDirection={top:-1,bottom:1,right:1,left:-1}[c],r.get(["axisTick","inside"])&&(l.tickDirection=-l.tickDirection),Vi(n.labelInside,r.get(["axisLabel","inside"]))&&(l.labelDirection=-l.labelDirection);var y=n.rotate;return null==y&&(y=r.get(["axisLabel","rotate"])),l.labelRotation="top"===c?-y:y,l.z2=1,l}var ng=["axisLine","axisTickLabel","axisName"],Xo=["splitArea","splitLine"],m5=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.axisPointerClass="SingleAxisPointer",t}return le(n,r),n.prototype.render=function(t,o,l,c){var u=this.group;u.removeAll();var h=this._axisGroup;this._axisGroup=new ct;var p=Lu(t),m=new Uo(t,p);U(ng,m.add,m),u.add(this._axisGroup),u.add(m.getGroup()),U(Xo,function(g){t.get([g,"show"])&&g5[g](this,this.group,this._axisGroup,t)},this),ef(h,this._axisGroup,t),r.prototype.render.call(this,t,o,l,c)},n.prototype.remove=function(){rk(this)},n.type="singleAxis",n}(wf),g5={splitLine:function(r,n,t,o){var l=o.axis;if(!l.scale.isBlank()){var c=o.getModel("splitLine"),u=c.getModel("lineStyle"),h=u.get("color");h=h instanceof Array?h:[h];for(var p=u.get("width"),m=o.coordinateSystem.getRect(),g=l.isHorizontal(),v=[],y=0,b=l.getTicksCoords({tickModel:c}),x=[],C=[],S=0;S=t.y&&n[1]<=t.y+t.height:o.contain(o.toLocalCoord(n[1]))&&n[0]>=t.y&&n[0]<=t.y+t.height},r.prototype.pointToData=function(n){var t=this.getAxis();return[t.coordToData(t.toLocalCoord(n["horizontal"===t.orient?0:1]))]},r.prototype.dataToPoint=function(n){var t=this.getAxis(),o=this.getRect(),l=[],c="horizontal"===t.orient?0:1;return n instanceof Array&&(n=n[0]),l[c]=t.toGlobalCoord(t.dataToCoord(+n)),l[1-c]=0===c?o.y+o.height/2:o.x+o.width/2,l},r.prototype.convertToPixel=function(n,t,o){return b5(t)===this?this.dataToPoint(o):null},r.prototype.convertFromPixel=function(n,t,o){return b5(t)===this?this.pointToData(o):null},r}();function b5(r){var n=r.seriesModel,t=r.singleAxisModel;return t&&t.coordinateSystem||n&&n.coordinateSystem}const rr=XW;var Nu={create:function ZW(r,n){var t=[];return r.eachComponent("singleAxis",function(o,l){var c=new rr(o,r,n);c.name="single_"+l,c.resize(o,n),o.coordinateSystem=c,t.push(c)}),r.eachSeries(function(o){if("singleAxis"===o.get("coordinateSystem")){var l=o.getReferringComponents("singleAxis",qi).models[0];o.coordinateSystem=l&&l.coordinateSystem}}),t},dimensions:y5};const w5=Nu;var xr=["x","y"],Bu=["width","height"],KW=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.makeElOption=function(t,o,l,c,u){var h=l.axis,p=h.coordinateSystem,m=n1(p,1-Py(h)),g=p.dataToPoint(o)[0],v=c.get("type");if(v&&"none"!==v){var y=BE(c),b=t1[v](h,g,m);b.style=y,t.graphicKey=b.type,t.pointer=b}zE(o,t,Lu(l),l,c,u)},n.prototype.getHandleTransform=function(t,o,l){var c=Lu(o,{labelInside:!1});c.labelMargin=l.get(["handle","margin"]);var u=VE(o.axis,t,c);return{x:u[0],y:u[1],rotation:c.rotation+(c.labelDirection<0?Math.PI:0)}},n.prototype.updateHandleTransform=function(t,o,l,c){var u=l.axis,h=u.coordinateSystem,p=Py(u),m=n1(h,p),g=[t.x,t.y];g[p]+=o[p],g[p]=Math.min(m[1],g[p]),g[p]=Math.max(m[0],g[p]);var v=n1(h,1-p),y=(v[1]+v[0])/2,b=[y,y];return b[p]=g[p],{x:g[0],y:g[1],rotation:t.rotation,cursorPoint:b,tooltipOption:{verticalAlign:"middle"}}},n}(ZC),t1={line:function(r,n,t){return{type:"Line",subPixelOptimize:!0,shape:HE([n,t[0]],[n,t[1]],Py(r))}},shadow:function(r,n,t){var o=r.getBandWidth();return{type:"Rect",shape:J3([n-o/2,t[0]],[o,t[1]-t[0]],Py(r))}}};function Py(r){return r.isHorizontal()?0:1}function n1(r,n){var t=r.getRect();return[t[xr[n]],t[xr[n]]+t[Bu[n]]]}const x5=KW;var C5=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="single",n}(ui),D5=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.init=function(t,o,l){var c=qd(t);r.prototype.init.apply(this,arguments),eI(t,c)},n.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),eI(this.option,t)},n.prototype.getCellSize=function(){return this.option.cellSize},n.type="calendar",n.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},n}(jt);function eI(r,n){var o,t=r.cellSize;1===(o=be(t)?t:r.cellSize=[t,t]).length&&(o[1]=o[0]);var l=xe([0,1],function(c){return function M8(r,n){return null!=r[Bh[n][0]]||null!=r[Bh[n][1]]&&null!=r[Bh[n][2]]}(n,c)&&(o[c]="auto"),null!=o[c]&&"auto"!==o[c]});Yd(r,n,{type:"box",ignoreSize:l})}const M5=D5;var r1=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){var c=this.group;c.removeAll();var u=t.coordinateSystem,h=u.getRangeInfo(),p=u.getOrient(),m=o.getLocaleModel();this._renderDayRect(t,h,c),this._renderLines(t,h,p,c),this._renderYearText(t,h,p,c),this._renderMonthText(t,m,p,c),this._renderWeekText(t,m,h,p,c)},n.prototype._renderDayRect=function(t,o,l){for(var c=t.coordinateSystem,u=t.getModel("itemStyle").getItemStyle(),h=c.getCellWidth(),p=c.getCellHeight(),m=o.start.time;m<=o.end.time;m=c.getNextNDay(m,1).time){var g=c.dataToRect([m],!1).tl,v=new an({shape:{x:g[0],y:g[1],width:h,height:p},cursor:"default",style:u});l.add(v)}},n.prototype._renderLines=function(t,o,l,c){var u=this,h=t.coordinateSystem,p=t.getModel(["splitLine","lineStyle"]).getLineStyle(),m=t.get(["splitLine","show"]),g=p.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var v=o.start,y=0;v.time<=o.end.time;y++){x(v.formatedDate),0===y&&(v=h.getDateInfo(o.start.y+"-"+o.start.m));var b=v.date;b.setMonth(b.getMonth()+1),v=h.getDateInfo(b)}function x(C){u._firstDayOfMonth.push(h.getDateInfo(C)),u._firstDayPoints.push(h.dataToRect([C],!1).tl);var S=u._getLinePointsOfOneWeek(t,C,l);u._tlpoints.push(S[0]),u._blpoints.push(S[S.length-1]),m&&u._drawSplitline(S,p,c)}x(h.getNextNDay(o.end.time,1).formatedDate),m&&this._drawSplitline(u._getEdgesPoints(u._tlpoints,g,l),p,c),m&&this._drawSplitline(u._getEdgesPoints(u._blpoints,g,l),p,c)},n.prototype._getEdgesPoints=function(t,o,l){var c=[t[0].slice(),t[t.length-1].slice()],u="horizontal"===l?0:1;return c[0][u]=c[0][u]-o/2,c[1][u]=c[1][u]+o/2,c},n.prototype._drawSplitline=function(t,o,l){var c=new _o({z2:20,shape:{points:t},style:o});l.add(c)},n.prototype._getLinePointsOfOneWeek=function(t,o,l){for(var c=t.coordinateSystem,u=c.getDateInfo(o),h=[],p=0;p<7;p++){var m=c.getNextNDay(u.time,p),g=c.dataToRect([m.time],!1);h[2*m.day]=g.tl,h[2*m.day+1]=g["horizontal"===l?"bl":"tr"]}return h},n.prototype._formatterLabel=function(t,o){return Le(t)&&t?function C8(r,n,t){return U(n,function(o,l){r=r.replace("{"+l+"}",t?aa(o):o)}),r}(t,o):qe(t)?t(o):o.nameMap},n.prototype._yearTextPositionControl=function(t,o,l,c,u){var h=o[0],p=o[1],m=["center","bottom"];"bottom"===c?(p+=u,m=["center","top"]):"left"===c?h-=u:"right"===c?(h+=u,m=["center","top"]):p-=u;var g=0;return("left"===c||"right"===c)&&(g=Math.PI/2),{rotation:g,x:h,y:p,style:{align:m[0],verticalAlign:m[1]}}},n.prototype._renderYearText=function(t,o,l,c){var u=t.getModel("yearLabel");if(u.get("show")){var h=u.get("margin"),p=u.get("position");p||(p="horizontal"!==l?"top":"left");var m=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],g=(m[0][0]+m[1][0])/2,v=(m[0][1]+m[1][1])/2,y="horizontal"===l?0:1,b={top:[g,m[y][1]],bottom:[g,m[1-y][1]],left:[m[1-y][0],v],right:[m[y][0],v]},x=o.start.y;+o.end.y>+o.start.y&&(x=x+"-"+o.end.y);var C=u.get("formatter"),M=this._formatterLabel(C,{start:o.start.y,end:o.end.y,nameMap:x}),T=new dn({z2:30,style:Xn(u,{text:M})});T.attr(this._yearTextPositionControl(T,b[p],l,p,h)),c.add(T)}},n.prototype._monthTextPositionControl=function(t,o,l,c,u){var h="left",p="top",m=t[0],g=t[1];return"horizontal"===l?(g+=u,o&&(h="center"),"start"===c&&(p="bottom")):(m+=u,o&&(p="middle"),"start"===c&&(h="right")),{x:m,y:g,align:h,verticalAlign:p}},n.prototype._renderMonthText=function(t,o,l,c){var u=t.getModel("monthLabel");if(u.get("show")){var h=u.get("nameMap"),p=u.get("margin"),m=u.get("position"),g=u.get("align"),v=[this._tlpoints,this._blpoints];(!h||Le(h))&&(h&&(o=JD(h)||o),h=o.get(["time","monthAbbr"])||[]);var y="start"===m?0:1,b="horizontal"===l?0:1;p="start"===m?-p:p;for(var x="center"===g,C=0;C=l.start.time&&o.timeh.end.time&&t.reverse(),t},r.prototype._getRangeInfo=function(n){var o,t=[this.getDateInfo(n[0]),this.getDateInfo(n[1])];t[0].time>t[1].time&&(o=!0,t.reverse());var l=Math.floor(t[1].time/a1)-Math.floor(t[0].time/a1)+1,c=new Date(t[0].time),u=c.getDate(),h=t[1].date.getDate();c.setDate(u+l-1);var p=c.getDate();if(p!==h)for(var m=c.getTime()-t[1].time>0?1:-1;(p=c.getDate())!==h&&(c.getTime()-t[1].time)*m>0;)l-=m,c.setDate(p-m);var g=Math.floor((l+t[0].day+6)/7),v=o?1-g:g-1;return o&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:l,weeks:g,nthWeek:v,fweek:t[0].day,lweek:t[1].day}},r.prototype._getDateByWeeksAndDay=function(n,t,o){var l=this._getRangeInfo(o);if(n>l.weeks||0===n&&tl.lweek)return null;var c=7*(n-1)-l.fweek+t,u=new Date(l.start.time);return u.setDate(+l.start.d+c),this.getDateInfo(u)},r.create=function(n,t){var o=[];return n.eachComponent("calendar",function(l){var c=new r(l,n,t);o.push(c),l.coordinateSystem=c}),n.eachSeries(function(l){"calendar"===l.get("coordinateSystem")&&(l.coordinateSystem=o[l.get("calendarIndex")||0])}),o},r.dimensions=["time","value"],r}();function tI(r){var n=r.calendarModel,t=r.seriesModel;return n?n.coordinateSystem:t?t.coordinateSystem:null}const QW=A5;function o1(r,n){var t;return U(n,function(o){null!=r[o]&&"auto"!==r[o]&&(t=!0)}),t}var s1=["transition","enterFrom","leaveTo"],P5=s1.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function Ry(r,n,t){if(t&&(!r[t]&&n[t]&&(r[t]={}),r=r[t],n=n[t]),r&&n)for(var o=t?s1:P5,l=0;l=0;g--){var v,y,b;if(b=null!=(y=_r((v=l[g]).id,null))?u.get(y):null){M=Zo(x=b.parent);var x,A={},E=Bv(b,v,x===c?{width:h,height:p}:{width:M.width,height:M.height},null,{hv:v.hv,boundingMode:v.bounding},A);if(!Zo(b).isNew&&E){for(var L=v.transition,R={},B=0;B=0)?R[H]=G:b[H]=G}un(b,R,t,0)}else b.attr(A)}}},n.prototype._clear=function(){var t=this,o=this._elMap;o.each(function(l){So(l,Zo(l).option,o,t._lastGraphicModel)}),this._elMap=$e()},n.prototype.dispose=function(){this._clear()},n.type="graphic",n}(ui);function l1(r){var t=new(Ve(Oy,r)?Oy[r]:xw(r))({});return Zo(t).type=r,t}function Na(r,n,t,o){var l=l1(t);return n.add(l),o.set(r,l),Zo(l).id=r,Zo(l).isNew=!0,l}function So(r,n,t,o){r&&r.parent&&("group"===r.type&&r.traverse(function(c){So(c,n,t,o)}),$C(r,n,o),t.removeKey(Zo(r).id))}function iI(r,n,t,o){r.isGroup||U([["cursor",ms.prototype.cursor],["zlevel",o||0],["z",t||0],["z2",0]],function(l){var c=l[0];Ve(n,c)?r[c]=Dt(n[c],l[1]):null==r[c]&&(r[c]=l[1])}),U(Yt(n),function(l){if(0===l.indexOf("on")){var c=n[l];r[l]=qe(c)?c:null}}),Ve(n,"draggable")&&(r.draggable=n.draggable),null!=n.name&&(r.name=n.name),null!=n.id&&(r.id=n.id)}var c1=["x","y","radius","angle","single"],rI=["cartesian2d","polar","singleAxis"];function Vu(r){return r+"Axis"}function JW(r){var n=r.ecModel,t={infoList:[],infoMap:$e()};return r.eachTargetAxis(function(o,l){var c=n.getComponent(Vu(o),l);if(c){var u=c.getCoordSysModel();if(u){var h=u.uid,p=t.infoMap.get(h);p||(t.infoList.push(p={model:u,axisModels:[]}),t.infoMap.set(h,p)),p.axisModels.push(c)}}}),t}var F5=function(){function r(){this.indexList=[],this.indexMap=[]}return r.prototype.add=function(n){this.indexMap[n]||(this.indexList.push(n),this.indexMap[n]=!0)},r}(),YJ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._autoThrottle=!0,t._noTarget=!0,t._rangePropMode=["percent","percent"],t}return le(n,r),n.prototype.init=function(t,o,l){var c=e9(t);this.settledOption=c,this.mergeDefaultAndTheme(t,l),this._doInit(c)},n.prototype.mergeOption=function(t){var o=e9(t);St(this.option,t,!0),St(this.settledOption,o,!0),this._doInit(o)},n.prototype._doInit=function(t){var o=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var l=this.settledOption;U([["start","startValue"],["end","endValue"]],function(c,u){"value"===this._rangePropMode[u]&&(o[c[0]]=l[c[0]]=null)},this),this._resetTarget()},n.prototype._resetTarget=function(){var t=this.get("orient",!0),o=this._targetAxisInfoMap=$e();this._fillSpecifiedTargetAxis(o)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(o,this._orient)),this._noTarget=!0,o.each(function(c){c.indexList.length&&(this._noTarget=!1)},this)},n.prototype._fillSpecifiedTargetAxis=function(t){var o=!1;return U(c1,function(l){var c=this.getReferringComponents(Vu(l),h2);if(c.specified){o=!0;var u=new F5;U(c.models,function(h){u.add(h.componentIndex)}),t.set(l,u)}},this),o},n.prototype._fillAutoTargetAxisByOrient=function(t,o){var l=this.ecModel,c=!0;if(c){var u="vertical"===o?"y":"x";p(l.findComponents({mainType:u+"Axis"}),u)}function p(m,g){var v=m[0];if(v){var y=new F5;if(y.add(v.componentIndex),t.set(g,y),c=!1,"x"===g||"y"===g){var b=v.getReferringComponents("grid",qi).models[0];b&&U(m,function(x){v.componentIndex!==x.componentIndex&&b===x.getReferringComponents("grid",qi).models[0]&&y.add(x.componentIndex)})}}}c&&p(l.findComponents({mainType:"singleAxis",filter:function(g){return g.get("orient",!0)===o}}),"single"),c&&U(c1,function(m){if(c){var g=l.findComponents({mainType:Vu(m),filter:function(y){return"category"===y.get("type",!0)}});if(g[0]){var v=new F5;v.add(g[0].componentIndex),t.set(m,v),c=!1}}},this)},n.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis(function(o){!t&&(t=o)},this),"y"===t?"vertical":"horizontal"},n.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var o=this.ecModel.option;this.option.throttle=o.animation&&o.animationDurationUpdate>0?100:20}},n.prototype._updateRangeUse=function(t){var o=this._rangePropMode,l=this.get("rangeMode");U([["start","startValue"],["end","endValue"]],function(c,u){var h=null!=t[c[0]],p=null!=t[c[1]];h&&!p?o[u]="percent":!h&&p?o[u]="value":l?o[u]=l[u]:h&&(o[u]="percent")})},n.prototype.noTarget=function(){return this._noTarget},n.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis(function(o,l){null==t&&(t=this.ecModel.getComponent(Vu(o),l))},this),t},n.prototype.eachTargetAxis=function(t,o){this._targetAxisInfoMap.each(function(l,c){U(l.indexList,function(u){t.call(o,c,u)})})},n.prototype.getAxisProxy=function(t,o){var l=this.getAxisModel(t,o);if(l)return l.__dzAxisProxy},n.prototype.getAxisModel=function(t,o){var l=this._targetAxisInfoMap.get(t);if(l&&l.indexMap[o])return this.ecModel.getComponent(Vu(t),o)},n.prototype.setRawRange=function(t){var o=this.option,l=this.settledOption;U([["start","startValue"],["end","endValue"]],function(c){(null!=t[c[0]]||null!=t[c[1]])&&(o[c[0]]=l[c[0]]=t[c[0]],o[c[1]]=l[c[1]]=t[c[1]])},this),this._updateRangeUse(t)},n.prototype.setCalculatedRange=function(t){var o=this.option;U(["start","startValue","end","endValue"],function(l){o[l]=t[l]})},n.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},n.prototype.getValueRange=function(t,o){if(null!=t||null!=o)return this.getAxisProxy(t,o).getDataValueWindow();var l=this.findRepresentativeAxisProxy();return l?l.getDataValueWindow():void 0},n.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var o,l=this._targetAxisInfoMap.keys(),c=0;c=0}(t)){var o=Vu(this._dimName),l=t.getReferringComponents(o,qi).models[0];l&&this._axisIndex===l.componentIndex&&n.push(t)}},this),n},r.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},r.prototype.getMinMaxSpan=function(){return rt(this._minMaxSpan)},r.prototype.calculateDataWindow=function(n){var m,t=this._dataExtent,l=this.getAxisModel().axis.scale,c=this._dataZoomModel.getRangePropMode(),u=[0,100],h=[],p=[];zu(["start","end"],function(y,b){var x=n[y],C=n[y+"Value"];"percent"===c[b]?(null==x&&(x=u[b]),C=l.parse(Ut(x,u,t))):(m=!0,x=Ut(C=null==C?t[b]:l.parse(C),t,u)),p[b]=null==C||isNaN(C)?t[b]:C,h[b]=null==x||isNaN(x)?u[b]:x}),ig(p),ig(h);var g=this._minMaxSpan;function v(y,b,x,C,S){var M=S?"Span":"ValueSpan";jm(0,y,x,"all",g["min"+M],g["max"+M]);for(var T=0;T<2;T++)b[T]=Ut(y[T],x,C,!0),S&&(b[T]=l.parse(b[T]))}return m?v(p,h,t,u,!1):v(h,p,u,t,!0),{valueWindow:p,percentWindow:h}},r.prototype.reset=function(n){if(n===this._dataZoomModel){var t=this.getTargetSeriesModels();this._dataExtent=function rg(r,n,t){var o=[1/0,-1/0];zu(t,function(u){!function wi(r,n,t){n&&U(ux(n,t),function(o){var l=n.getApproximateExtent(o);l[0]r[1]&&(r[1]=l[1])})}(o,u.getData(),n)});var l=r.getAxisModel(),c=IF(l.axis.scale,l,o).calculate();return[c.min,c.max]}(this,this._dimName,t),this._updateMinMaxSpan();var o=this.calculateDataWindow(n.settledOption);this._valueWindow=o.valueWindow,this._percentWindow=o.percentWindow,this._setAxisModel()}},r.prototype.filterData=function(n,t){if(n===this._dataZoomModel){var o=this._dimName,l=this.getTargetSeriesModels(),c=n.get("filterMode"),u=this._valueWindow;"none"!==c&&zu(l,function(p){var m=p.getData(),g=m.mapDimensionsAll(o);if(g.length){if("weakFilter"===c){var v=m.getStore(),y=xe(g,function(b){return m.getDimensionIndex(b)},m);m.filterSelf(function(b){for(var x,C,S,M=0;Mu[1];if(A&&!E&&!L)return!0;A&&(S=!0),E&&(x=!0),L&&(C=!0)}return S&&x&&C})}else zu(g,function(b){if("empty"===c)p.setData(m=m.map(b,function(C){return function h(p){return p>=u[0]&&p<=u[1]}(C)?C:NaN}));else{var x={};x[b]=u,m.selectRange(x)}});zu(g,function(b){m.setApproximateExtent(u,b)})}})}},r.prototype._updateMinMaxSpan=function(){var n=this._minMaxSpan={},t=this._dataZoomModel,o=this._dataExtent;zu(["min","max"],function(l){var c=t.get(l+"Span"),u=t.get(l+"ValueSpan");null!=u&&(u=this.getAxisModel().axis.scale.parse(u)),null!=u?c=Ut(o[0]+u,o,[0,100],!0):null!=c&&(u=Ut(c,[0,100],o,!0)-o[0]),n[l+"Span"]=c,n[l+"ValueSpan"]=u},this)},r.prototype._setAxisModel=function(){var n=this.getAxisModel(),t=this._percentWindow,o=this._valueWindow;if(t){var l=nD(o,[0,500]);l=Math.min(l,20);var c=n.axis.scale.rawExtentInfo;0!==t[0]&&c.setDeterminedMinMax("min",+o[0].toFixed(l)),100!==t[1]&&c.setDeterminedMinMax("max",+o[1].toFixed(l)),c.freeze()}},r}();const Ly=h1;var oI={getTargetSeries:function(r){function n(l){r.eachComponent("dataZoom",function(c){c.eachTargetAxis(function(u,h){var p=r.getComponent(Vu(u),h);l(u,h,p,c)})})}n(function(l,c,u,h){u.__dzAxisProxy=null});var t=[];n(function(l,c,u,h){u.__dzAxisProxy||(u.__dzAxisProxy=new Ly(l,c,h,r),t.push(u.__dzAxisProxy))});var o=$e();return U(t,function(l){U(l.getTargetSeriesModels(),function(c){o.set(c.uid,c)})}),o},overallReset:function(r,n){r.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(o,l){t.getAxisProxy(o,l).reset(t)}),t.eachTargetAxis(function(o,l){t.getAxisProxy(o,l).filterData(t,n)})}),r.eachComponent("dataZoom",function(t){var o=t.findRepresentativeAxisProxy();if(o){var l=o.getDataPercentWindow(),c=o.getDataValueWindow();t.setCalculatedRange({start:l[0],end:l[1],startValue:c[0],endValue:c[1]})}})}};const r9=oI;var B5=!1;function ag(r){B5||(B5=!0,r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,r9),function sI(r){r.registerAction("dataZoom",function(n,t){U(function WJ(r,n){var c,t=$e(),o=[],l=$e();r.eachComponent({mainType:"dataZoom",query:n},function(g){l.get(g.uid)||h(g)});do{c=!1,r.eachComponent("dataZoom",u)}while(c);function u(g){!l.get(g.uid)&&function p(g){var v=!1;return g.eachTargetAxis(function(y,b){var x=t.get(y);x&&x[b]&&(v=!0)}),v}(g)&&(h(g),c=!0)}function h(g){l.set(g.uid,!0),o.push(g),function m(g){g.eachTargetAxis(function(v,y){(t.get(v)||t.set(v,[]))[y]=!0})}(g)}return o}(t,n),function(l){l.setRawRange({start:n.start,end:n.end,startValue:n.startValue,endValue:n.endValue})})})}(r),r.registerSubTypeDefaulter("dataZoom",function(){return"slider"}))}function V5(r){r.registerComponentModel(t9),r.registerComponentView(i9),ag(r)}var Ko=function r(){},lI={};function Hu(r,n){lI[r]=n}function a9(r){return lI[r]}var XJ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.optionUpdated=function(){r.prototype.optionUpdated.apply(this,arguments);var t=this.ecModel;U(this.option.feature,function(o,l){var c=a9(l);c&&(c.getDefaultOption&&(c.defaultOption=c.getDefaultOption(t)),St(o,c.defaultOption))})},n.type="toolbox",n.layoutMode={type:"box",ignoreSize:!0},n.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},n}(jt);const o9=XJ;function $f(r,n){var t=Fh(n.get("padding")),o=n.getItemStyle(["color","opacity"]);return o.fill=n.get("backgroundColor"),new an({shape:{x:r.x-t[3],y:r.y-t[0],width:r.width+t[1]+t[3],height:r.height+t[0]+t[2],r:n.get("borderRadius")},style:o,silent:!0,z2:-1})}var f1=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.render=function(t,o,l,c){var u=this.group;if(u.removeAll(),t.get("show")){var h=+t.get("itemSize"),p="vertical"===t.get("orient"),m=t.get("feature")||{},g=this._features||(this._features={}),v=[];U(m,function(x,C){v.push(C)}),new Kc(this._featureNames||[],v).add(y).update(y).remove(vt(y,null)).execute(),this._featureNames=v,function ZJ(r,n,t){var o=n.getBoxLayoutParams(),l=n.get("padding"),c={width:t.getWidth(),height:t.getHeight()},u=cr(o,c,l);Vh(n.get("orient"),r,n.get("itemGap"),u.width,u.height),Bv(r,o,c,l)}(u,t,l),u.add($f(u.getBoundingRect(),t)),p||u.eachChild(function(x){var C=x.__title,S=x.ensureState("emphasis"),M=S.textConfig||(S.textConfig={}),T=x.getTextContent(),A=T&&T.ensureState("emphasis");if(A&&!qe(A)&&C){var E=A.style||(A.style={}),L=It(C,dn.makeFont(E)),R=x.x+u.x,H=!1;x.y+u.y+h+L.height>l.getHeight()&&(M.position="top",H=!0);var G=H?-5-L.height:h+10;R+L.width/2>l.getWidth()?(M.position=["100%",G],E.align="right"):R-L.width/2<0&&(M.position=[0,G],E.align="left")}})}function y(x,C){var E,S=v[x],M=v[C],T=m[S],A=new zn(T,t,t.ecModel);if(c&&null!=c.newTitle&&c.featureName===S&&(T.title=c.newTitle),S&&!M){if(function p1(r){return 0===r.indexOf("my")}(S))E={onclick:A.option.onclick,featureName:S};else{var L=a9(S);if(!L)return;E=new L}g[S]=E}else if(!(E=g[M]))return;E.uid=Pv("toolbox-feature"),E.model=A,E.ecModel=o,E.api=l;var R=E instanceof Ko;S||!M?!A.get("show")||R&&E.unusable?R&&E.remove&&E.remove(o,l):(function b(x,C,S){var L,R,M=x.getModel("iconStyle"),T=x.getModel(["emphasis","iconStyle"]),A=C instanceof Ko&&C.getIcons?C.getIcons():x.get("icon"),E=x.get("title")||{};Le(A)?(L={})[S]=A:L=A,Le(E)?(R={})[S]=E:R=E;var B=x.iconPaths={};U(L,function(H,G){var j=Xp(H,{},{x:-h/2,y:-h/2,width:h,height:h});j.setStyle(M.getItemStyle()),j.ensureState("emphasis").style=T.getItemStyle();var X=new dn({style:{text:R[G],align:T.get("textAlign"),borderRadius:T.get("textBorderRadius"),padding:T.get("textPadding"),fill:null},ignore:!0});j.setTextContent(X),ll({el:j,componentModel:t,itemName:G,formatterParamsExtra:{title:R[G]}}),j.__title=R[G],j.on("mouseover",function(){var K=T.getItemStyle(),ee=p?null==t.get("right")&&"right"!==t.get("left")?"right":"left":null==t.get("bottom")&&"bottom"!==t.get("top")?"bottom":"top";X.setStyle({fill:T.get("textFill")||K.fill||K.stroke||"#000",backgroundColor:T.get("textBackgroundColor")}),j.setTextConfig({position:T.get("textPosition")||ee}),X.ignore=!t.get("showTitle"),l.enterEmphasis(this)}).on("mouseout",function(){"emphasis"!==x.get(["iconStatus",G])&&l.leaveEmphasis(this),X.hide()}),("emphasis"===x.get(["iconStatus",G])?zc:ca)(j),u.add(j),j.on("click",Ne(C.onclick,C,o,l,G)),B[G]=j})}(A,E,S),A.setIconStatus=function(B,H){var G=this.option,j=this.iconPaths;G.iconStatus=G.iconStatus||{},G.iconStatus[B]=H,j[B]&&("emphasis"===H?zc:ca)(j[B])},E instanceof Ko&&E.render&&E.render(A,o,l,c)):R&&E.dispose&&E.dispose(o,l)}},n.prototype.updateView=function(t,o,l,c){U(this._features,function(u){u instanceof Ko&&u.updateView&&u.updateView(u.model,o,l,c)})},n.prototype.remove=function(t,o){U(this._features,function(l){l instanceof Ko&&l.remove&&l.remove(t,o)}),this.group.removeAll()},n.prototype.dispose=function(t,o){U(this._features,function(l){l instanceof Ko&&l.dispose&&l.dispose(t,o)})},n.type="toolbox",n}(ui);const Fy=f1;var m1=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.onclick=function(t,o){var l=this.model,c=l.get("name")||t.get("title.0.text")||"echarts",u="svg"===o.getZr().painter.getType(),h=u?"svg":l.get("type",!0)||"png",p=o.getConnectedDataURL({type:h,backgroundColor:l.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:l.get("connectedBackgroundColor"),excludeComponents:l.get("excludeComponents"),pixelRatio:l.get("pixelRatio")}),m=sn.browser;if(qe(MouseEvent)&&(m.newEdge||!m.ie&&!m.edge)){var g=document.createElement("a");g.download=c+"."+h,g.target="_blank",g.href=p;var v=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});g.dispatchEvent(v)}else if(window.navigator.msSaveOrOpenBlob||u){var y=p.split(","),b=y[0].indexOf("base64")>-1,x=u?decodeURIComponent(y[1]):y[1];b&&(x=window.atob(x));var C=c+"."+h;if(window.navigator.msSaveOrOpenBlob){for(var S=x.length,M=new Uint8Array(S);S--;)M[S]=x.charCodeAt(S);var T=new Blob([M]);window.navigator.msSaveOrOpenBlob(T,C)}else{var A=document.createElement("iframe");document.body.appendChild(A);var E=A.contentWindow,L=E.document;L.open("image/svg+xml","replace"),L.write(x),L.close(),E.focus(),L.execCommand("SaveAs",!0,C),document.body.removeChild(A)}}else{var R=l.get("lang"),B='',H=window.open();H.document.write(B),H.document.title=c}},n.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])}},n}(Ko);const g1=m1;var z5="__ec_magicType_stack__",s9=[["line","bar"],["stack"]],l9=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.getIcons=function(){var t=this.model,o=t.get("icon"),l={};return U(t.get("type"),function(c){o[c]&&(l[c]=o[c])}),l},n.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},n.prototype.onclick=function(t,o,l){var c=this.model,u=c.get(["seriesIndex",l]);if(dI[l]){var h={series:[]};U(s9,function(v){Mt(v,l)>=0&&U(v,function(y){c.setIconStatus(y,"normal")})}),c.setIconStatus(l,"emphasis"),t.eachComponent({mainType:"series",query:null==u?null:{seriesIndex:u}},function(v){var x=dI[l](v.subType,v.id,v,c);x&&(Ye(x,v.option),h.series.push(x));var C=v.coordinateSystem;if(C&&"cartesian2d"===C.type&&("line"===l||"bar"===l)){var S=C.getAxesByScale("ordinal")[0];if(S){var T=S.dim+"Axis",E=v.getReferringComponents(T,qi).models[0].componentIndex;h[T]=h[T]||[];for(var L=0;L<=E;L++)h[T][E]=h[T][E]||{};h[T][E].boundaryGap="bar"===l}}});var m,g=l;"stack"===l&&(m=St({stack:c.option.title.tiled,tiled:c.option.title.stack},c.option.title),"emphasis"!==c.get(["iconStatus",l])&&(g="tiled")),o.dispatchAction({type:"changeMagicType",currentType:g,newOption:h,newTitle:m,featureName:"magicType"})}},n}(Ko),dI={line:function(r,n,t,o){if("bar"===r)return St({id:n,type:"line",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},o.get(["option","line"])||{},!0)},bar:function(r,n,t,o){if("line"===r)return St({id:n,type:"bar",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},o.get(["option","bar"])||{},!0)},stack:function(r,n,t,o){var l=t.get("stack")===z5;if("line"===r||"bar"===r)return o.setIconStatus("stack",l?"normal":"emphasis"),St({id:n,stack:l?"":z5},o.get(["option","stack"])||{},!0)}};Es({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(r,n){n.mergeOption(r.newOption)});const c9=l9;var Ny=new Array(60).join("-");function d9(r){var n=[];return U(r,function(t,o){var l=t.categoryAxis,u=t.valueAxis.dim,h=[" "].concat(xe(t.series,function(b){return b.name})),p=[l.model.getCategories()];U(t.series,function(b){var x=b.getRawData();p.push(b.getRawData().mapArray(x.mapDimension(u),function(C){return C}))});for(var m=[h.join("\t")],g=0;g=0)return!0}(l)){var u=function G5(r){for(var n=r.split(/\n+/g),o=[],l=xe(hI(n.shift()).split(pI),function(p){return{name:p,data:[]}}),c=0;c=0)&&u(c,l._targetInfoList)})}return r.prototype.setOutputRanges=function(n,t){return this.matchOutputRanges(n,t,function(o,l,c){if((o.coordRanges||(o.coordRanges=[])).push(l),!o.coordRange){o.coordRange=l;var u=Vy[o.brushType](0,c,l);o.__rangeOffset={offset:xd[o.brushType](u.values,o.range,[1,1]),xyMinMax:u.xyMinMax}}}),n},r.prototype.matchOutputRanges=function(n,t,o){U(n,function(l){var c=this.findTargetInfo(l,t);c&&!0!==c&&U(c.coordSyses,function(u){var h=Vy[l.brushType](1,u,l.range,!0);o(l,h.values,u,t)})},this)},r.prototype.setInputRanges=function(n,t){U(n,function(o){var l=this.findTargetInfo(o,t);if(o.range=o.range||[],l&&!0!==l){o.panelId=l.panelId;var c=Vy[o.brushType](0,l.coordSys,o.coordRange),u=o.__rangeOffset;o.range=u?xd[o.brushType](c.values,u.offset,function aee(r,n){var t=wI(r),o=wI(n),l=[t[0]/o[0],t[1]/o[1]];return isNaN(l[0])&&(l[0]=1),isNaN(l[1])&&(l[1]=1),l}(c.xyMinMax,u.xyMinMax)):c.values}},this)},r.prototype.makePanelOpts=function(n,t){return xe(this._targetInfoList,function(o){var l=o.getPanelRect();return{panelId:o.panelId,defaultBrushType:t?t(o):null,clipPath:c$(l),isTargetByCursor:u$(l,n,o.coordSysModel),getLinearBrushOtherExtent:d$(l)}})},r.prototype.controlSeries=function(n,t,o){var l=this.findTargetInfo(n,o);return!0===l||l&&Mt(l.coordSyses,t.coordinateSystem)>=0},r.prototype.findTargetInfo=function(n,t){for(var o=this._targetInfoList,l=yI(t,n),c=0;cr[1]&&r.reverse(),r}function yI(r,n){return bh(r,n,{includeMainTypes:iee})}var p9={grid:function(r,n){var t=r.xAxisModels,o=r.yAxisModels,l=r.gridModels,c=$e(),u={},h={};!t&&!o&&!l||(U(t,function(p){var m=p.axis.grid.model;c.set(m.id,m),u[m.id]=!0}),U(o,function(p){var m=p.axis.grid.model;c.set(m.id,m),h[m.id]=!0}),U(l,function(p){c.set(p.id,p),u[p.id]=!0,h[p.id]=!0}),c.each(function(p){var g=[];U(p.coordinateSystem.getCartesians(),function(v,y){(Mt(t,v.getAxis("x").model)>=0||Mt(o,v.getAxis("y").model)>=0)&&g.push(v)}),n.push({panelId:"grid--"+p.id,gridModel:p,coordSysModel:p,coordSys:g[0],coordSyses:g,getPanelRect:Yn.grid,xAxisDeclared:u[p.id],yAxisDeclared:h[p.id]})}))},geo:function(r,n){U(r.geoModels,function(t){var o=t.coordinateSystem;n.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:o,coordSyses:[o],getPanelRect:Yn.geo})})}},bI=[function(r,n){var t=r.xAxisModel,o=r.yAxisModel,l=r.gridModel;return!l&&t&&(l=t.axis.grid.model),!l&&o&&(l=o.axis.grid.model),l&&l===n.gridModel},function(r,n){var t=r.geoModel;return t&&t===n.geoModel}],Yn={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var r=this.coordSys,n=r.getBoundingRect().clone();return n.applyTransform(Wc(r)),n}},Vy={lineX:vt(j5,0),lineY:vt(j5,1),rect:function(r,n,t,o){var l=r?n.pointToData([t[0][0],t[1][0]],o):n.dataToPoint([t[0][0],t[1][0]],o),c=r?n.pointToData([t[0][1],t[1][1]],o):n.dataToPoint([t[0][1],t[1][1]],o),u=[_I([l[0],c[0]]),_I([l[1],c[1]])];return{values:u,xyMinMax:u}},polygon:function(r,n,t,o){var l=[[1/0,-1/0],[1/0,-1/0]];return{values:xe(t,function(u){var h=r?n.pointToData(u,o):n.dataToPoint(u,o);return l[0][0]=Math.min(l[0][0],h[0]),l[1][0]=Math.min(l[1][0],h[1]),l[0][1]=Math.max(l[0][1],h[0]),l[1][1]=Math.max(l[1][1],h[1]),h}),xyMinMax:l}}};function j5(r,n,t,o){var l=t.getAxis(["x","y"][r]),c=_I(xe([0,1],function(h){return n?l.coordToData(l.toLocalCoord(o[h]),!0):l.toGlobalCoord(l.dataToCoord(o[h]))})),u=[];return u[r]=c,u[1-r]=[NaN,NaN],{values:c,xyMinMax:u}}var xd={lineX:vt($5,0),lineY:vt($5,1),rect:function(r,n,t){return[[r[0][0]-t[0]*n[0][0],r[0][1]-t[0]*n[0][1]],[r[1][0]-t[1]*n[1][0],r[1][1]-t[1]*n[1][1]]]},polygon:function(r,n,t){return xe(r,function(o,l){return[o[0]-t[0]*n[l][0],o[1]-t[1]*n[l][1]]})}};function $5(r,n,t,o){return[n[0]-o[r]*t[0],n[1]-o[r]*t[1]]}function wI(r){return r?[r[0][1]-r[0][0],r[1][1]-r[1][0]]:[NaN,NaN]}const xI=ree;var _1=U,m9=function uZ(r){return"\0_ec_\0"+r}("toolbox-dataZoom_"),CI=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.render=function(t,o,l,c){this._brushController||(this._brushController=new e3(l.getZr()),this._brushController.on("brush",Ne(this._onBrush,this)).mount()),function sg(r,n,t,o,l){var c=t._isZoomActive;o&&"takeGlobalCursor"===o.type&&(c="dataZoomSelect"===o.key&&o.dataZoomSelectActive),t._isZoomActive=c,r.setIconStatus("zoom",c?"emphasis":"normal");var h=new xI(zy(r),n,{include:["grid"]}).makePanelOpts(l,function(p){return p.xAxisDeclared&&!p.yAxisDeclared?"lineX":!p.xAxisDeclared&&p.yAxisDeclared?"lineY":"rect"});t._brushController.setPanels(h).enableBrush(!(!c||!h.length)&&{brushType:"auto",brushStyle:r.getModel("brushStyle").getItemStyle()})}(t,o,this,c,l),function _9(r,n){r.setIconStatus("back",function f9(r){return v1(r).length}(n)>1?"emphasis":"normal")}(t,o)},n.prototype.onclick=function(t,o,l){v9[l].call(this)},n.prototype.remove=function(t,o){this._brushController&&this._brushController.unmount()},n.prototype.dispose=function(t,o){this._brushController&&this._brushController.dispose()},n.prototype._onBrush=function(t){var o=t.areas;if(t.isEnd&&o.length){var l={},c=this.ecModel;this._brushController.updateCovers([]),new xI(zy(this.model),c,{include:["grid"]}).matchOutputRanges(o,c,function(m,g,v){if("cartesian2d"===v.type){var y=m.brushType;"rect"===y?(h("x",v,g[0]),h("y",v,g[1])):h({lineX:"x",lineY:"y"}[y],v,g)}}),function U5(r,n){var t=v1(r);wd(n,function(o,l){for(var c=t.length-1;c>=0&&!t[c][l];c--);if(c<0){var h=r.queryComponents({mainType:"dataZoom",subType:"select",id:l})[0];if(h){var p=h.getPercentRange();t[0][l]={dataZoomId:l,start:p[0],end:p[1]}}}}),t.push(n)}(c,l),this._dispatchZoomAction(l)}function h(m,g,v){var y=g.getAxis(m),b=y.model,x=function p(m,g,v){var y;return v.eachComponent({mainType:"dataZoom",subType:"select"},function(b){b.getAxisModel(m,g.componentIndex)&&(y=b)}),y}(m,b,c),C=x.findRepresentativeAxisProxy(b).getMinMaxSpan();(null!=C.minValueSpan||null!=C.maxValueSpan)&&(v=jm(0,v.slice(),y.scale.getExtent(),0,C.minValueSpan,C.maxValueSpan)),x&&(l[x.id]={dataZoomId:x.id,startValue:v[0],endValue:v[1]})}},n.prototype._dispatchZoomAction=function(t){var o=[];_1(t,function(l,c){o.push(rt(l))}),o.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:o})},n.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},n}(Ko),v9={zoom:function(){this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:!this._isZoomActive})},back:function(){this._dispatchZoomAction(function vI(r){var n=v1(r),t=n[n.length-1];n.length>1&&n.pop();var o={};return wd(t,function(l,c){for(var u=n.length-1;u>=0;u--)if(l=n[u][c]){o[c]=l;break}}),o}(this.ecModel))}};function zy(r){var n={xAxisIndex:r.get("xAxisIndex",!0),yAxisIndex:r.get("yAxisIndex",!0),xAxisId:r.get("xAxisId",!0),yAxisId:r.get("yAxisId",!0)};return null==n.xAxisIndex&&null==n.xAxisId&&(n.xAxisIndex="all"),null==n.yAxisIndex&&null==n.yAxisId&&(n.yAxisIndex="all"),n}!function I8(r,n){xa(null==uM.get(r)&&n),uM.set(r,n)}("dataZoom",function(r){var n=r.getComponent("toolbox",0),t=["feature","dataZoom"];if(n&&null!=n.get(t)){var o=n.getModel(t),l=[],u=bh(r,zy(o));return _1(u.xAxisModels,function(p){return h(p,"xAxis","xAxisIndex")}),_1(u.yAxisModels,function(p){return h(p,"yAxis","yAxisIndex")}),l}function h(p,m,g){var v=p.componentIndex,y={type:"select",$fromToolbox:!0,filterMode:o.get("filterMode",!0)||"filter",id:m9+m+v};y[g]=v,l.push(y)}});const y9=CI;var b9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="tooltip",n.dependencies=["axisPointer"],n.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},n}(jt);const DI=b9;function MI(r){var n=r.get("confine");return null!=n?!!n:"richText"===r.get("renderMode")}function W5(r){if(sn.domSupported)for(var n=document.documentElement.style,t=0,o=r.length;t-1?(h+="top:50%",p+="translateY(-50%) rotate("+(m="left"===c?-225:-45)+"deg)"):(h+="left:50%",p+="translateX(-50%) rotate("+(m="top"===c?225:45)+"deg)");var g=m*Math.PI/180,v=u+l,y=v*Math.abs(Math.cos(g))+v*Math.abs(Math.sin(g)),x=n+" solid "+l+"px;";return'
'}(o,l,c)),Le(n))u.innerHTML=n+h;else if(n){u.innerHTML="",be(n)||(n=[n]);for(var p=0;p=0?this._tryShow(c,u):"leave"===l&&this._hide(u))},this))},n.prototype._keepShow=function(){var t=this._tooltipModel,o=this._ecModel,l=this._api,c=t.get("triggerOn");if(null!=this._lastX&&null!=this._lastY&&"none"!==c&&"click"!==c){var u=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!l.isDisposed()&&u.manuallyShowTip(t,o,l,{x:u._lastX,y:u._lastY,dataByCoordSys:u._lastDataByCoordSys})})}},n.prototype.manuallyShowTip=function(t,o,l,c){if(c.from!==this.uid&&!sn.node&&l.getDom()){var u=RI(c,l);this._ticket="";var h=c.dataByCoordSys,p=function E9(r,n,t){var o=l0(r).queryOptionMap,l=o.keys()[0];if(l&&"series"!==l){var p,u=Xr(n,l,o.get(l),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(u&&(t.getViewOfComponentModel(u).group.traverse(function(m){var g=_t(m).tooltipConfig;if(g&&g.name===r.name)return p=m,!0}),p))return{componentMainType:l,componentIndex:u.componentIndex,el:p}}}(c,o,l);if(p){var m=p.el.getBoundingRect().clone();m.applyTransform(p.el.transform),this._tryShow({offsetX:m.x+m.width/2,offsetY:m.y+m.height/2,target:p.el,position:c.position,positionDefault:"bottom"},u)}else if(c.tooltip&&null!=c.x&&null!=c.y){var g=Hs;g.x=c.x,g.y=c.y,g.update(),_t(g).tooltipConfig={name:null,option:c.tooltip},this._tryShow({offsetX:c.x,offsetY:c.y,target:g},u)}else if(h)this._tryShow({offsetX:c.x,offsetY:c.y,position:c.position,dataByCoordSys:h,tooltipOption:c.tooltipOption},u);else if(null!=c.seriesIndex){if(this._manuallyAxisShowTip(t,o,l,c))return;var v=UE(c,o),y=v.point[0],b=v.point[1];null!=y&&null!=b&&this._tryShow({offsetX:y,offsetY:b,target:v.el,position:c.position,positionDefault:"bottom"},u)}else null!=c.x&&null!=c.y&&(l.dispatchAction({type:"updateAxisPointer",x:c.x,y:c.y}),this._tryShow({offsetX:c.x,offsetY:c.y,position:c.position,target:l.getZr().findHover(c.x,c.y).target},u))}},n.prototype.manuallyHideTip=function(t,o,l,c){!this._alwaysShowContent&&this._tooltipModel&&this._tooltipContent.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,c.from!==this.uid&&this._hide(RI(c,l))},n.prototype._manuallyAxisShowTip=function(t,o,l,c){var u=c.seriesIndex,h=c.dataIndex,p=o.getComponent("axisPointer").coordSysAxesInfo;if(null!=u&&null!=h&&null!=p){var m=o.getSeriesByIndex(u);if(m&&"axis"===Hy([m.getData().getItemModel(h),m,(m.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return l.dispatchAction({type:"updateAxisPointer",seriesIndex:u,dataIndex:h,position:c.position}),!0}},n.prototype._tryShow=function(t,o){var l=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var u=t.dataByCoordSys;if(u&&u.length)this._showAxisTooltip(u,t);else if(l){var h,p;this._lastDataByCoordSys=null,nf(l,function(m){return null!=_t(m).dataIndex?(h=m,!0):null!=_t(m).tooltipConfig?(p=m,!0):void 0},!0),h?this._showSeriesItemTooltip(t,h,o):p?this._showComponentItemTooltip(t,p,o):this._hide(o)}else this._lastDataByCoordSys=null,this._hide(o)}},n.prototype._showOrMove=function(t,o){var l=t.get("showDelay");o=Ne(o,this),clearTimeout(this._showTimout),l>0?this._showTimout=setTimeout(o,l):o()},n.prototype._showAxisTooltip=function(t,o){var l=this._ecModel,c=this._tooltipModel,u=[o.offsetX,o.offsetY],h=Hy([o.tooltipOption],c),p=this._renderMode,m=[],g=Oi("section",{blocks:[],noHeader:!0}),v=[],y=new NM;U(t,function(T){U(T.dataByAxis,function(A){var E=l.getComponent(A.axisDim+"Axis",A.axisIndex),L=A.value;if(E&&null!=L){var R=Bi(L,E.axis,l,A.seriesDataIndices,A.valueLabelOpt),B=Oi("section",{header:R,noHeader:!as(R),sortBlocks:!0,blocks:[]});g.blocks.push(B),U(A.seriesDataIndices,function(H){var G=l.getSeriesByIndex(H.seriesIndex),j=H.dataIndexInside,$=G.getDataParams(j);if(!($.dataIndex<0)){$.axisDim=A.axisDim,$.axisIndex=A.axisIndex,$.axisType=A.axisType,$.axisId=A.axisId,$.axisValue=ul(E.axis,{value:L}),$.axisValueLabel=R,$.marker=y.makeTooltipMarker("item",Nh($.color),p);var X=VO(G.formatTooltip(j,!0,null)),K=X.frag;if(K){var ee=Hy([G],c).get("valueFormatter");B.blocks.push(ee?ge({valueFormatter:ee},K):K)}X.text&&v.push(X.text),m.push($)}})}})}),g.blocks.reverse(),v.reverse();var b=o.position,x=h.get("order"),C=FM(g,y,p,x,l.get("useUTC"),h.get("textStyle"));C&&v.unshift(C);var M=v.join("richText"===p?"\n\n":"
");this._showOrMove(h,function(){this._updateContentNotChangedOnAxis(t,m)?this._updatePosition(h,b,u[0],u[1],this._tooltipContent,m):this._showTooltipContent(h,M,m,Math.random()+"",u[0],u[1],b,null,y)})},n.prototype._showSeriesItemTooltip=function(t,o,l){var c=this._ecModel,u=_t(o),h=u.seriesIndex,p=c.getSeriesByIndex(h),m=u.dataModel||p,g=u.dataIndex,v=u.dataType,y=m.getData(v),b=this._renderMode,x=t.positionDefault,C=Hy([y.getItemModel(g),m,p&&(p.coordinateSystem||{}).model],this._tooltipModel,x?{position:x}:null),S=C.get("trigger");if(null==S||"item"===S){var M=m.getDataParams(g,v),T=new NM;M.marker=T.makeTooltipMarker("item",Nh(M.color),b);var A=VO(m.formatTooltip(g,!1,v)),E=C.get("order"),L=C.get("valueFormatter"),R=A.frag,B=R?FM(L?ge({valueFormatter:L},R):R,T,b,E,c.get("useUTC"),C.get("textStyle")):A.text,H="item_"+m.name+"_"+g;this._showOrMove(C,function(){this._showTooltipContent(C,B,M,H,t.offsetX,t.offsetY,t.position,t.target,T)}),l({type:"showTip",dataIndexInside:g,dataIndex:y.getRawIndex(g),seriesIndex:h,from:this.uid})}},n.prototype._showComponentItemTooltip=function(t,o,l){var c=_t(o),h=c.tooltipConfig.option||{};Le(h)&&(h={content:h,formatter:h});var m=[h],g=this._ecModel.getComponent(c.componentMainType,c.componentIndex);g&&m.push(g),m.push({formatter:h.content});var v=t.positionDefault,y=Hy(m,this._tooltipModel,v?{position:v}:null),b=y.get("content"),x=Math.random()+"",C=new NM;this._showOrMove(y,function(){var S=rt(y.get("formatterParams")||{});this._showTooltipContent(y,b,S,x,t.offsetX,t.offsetY,t.position,o,C)}),l({type:"showTip",from:this.uid})},n.prototype._showTooltipContent=function(t,o,l,c,u,h,p,m,g){if(this._ticket="",t.get("showContent")&&t.get("show")){var v=this._tooltipContent;v.setEnterable(t.get("enterable"));var y=t.get("formatter");p=p||t.get("position");var b=o,C=this._getNearestPoint([u,h],l,t.get("trigger"),t.get("borderColor")).color;if(y)if(Le(y)){var S=t.ecModel.get("useUTC"),M=be(l)?l[0]:l;b=y,M&&M.axisType&&M.axisType.indexOf("time")>=0&&(b=Oh(M.axisValue,b,S)),b=aM(b,l,!0)}else if(qe(y)){var A=Ne(function(E,L){E===this._ticket&&(v.setContent(L,g,t,C,p),this._updatePosition(t,p,u,h,v,l,m))},this);this._ticket=c,b=y(l,c,A)}else b=y;v.setContent(b,g,t,C,p),v.show(t,C),this._updatePosition(t,p,u,h,v,l,m)}},n.prototype._getNearestPoint=function(t,o,l,c){return"axis"===l||be(o)?{color:c||("html"===this._renderMode?"#fff":"none")}:be(o)?void 0:{color:c||o.color||o.borderColor}},n.prototype._updatePosition=function(t,o,l,c,u,h,p){var m=this._api.getWidth(),g=this._api.getHeight();o=o||t.get("position");var v=u.getSize(),y=t.get("align"),b=t.get("verticalAlign"),x=p&&p.getBoundingRect().clone();if(p&&x.applyTransform(p.transform),qe(o)&&(o=o([l,c],h,u.el,x,{viewSize:[m,g],contentSize:v.slice()})),be(o))l=Ie(o[0],m),c=Ie(o[1],g);else if(ze(o)){var C=o;C.width=v[0],C.height=v[1];var S=cr(C,{width:m,height:g});l=S.x,c=S.y,y=null,b=null}else if(Le(o)&&p){var M=function k9(r,n,t,o){var l=t[0],c=t[1],u=Math.ceil(Math.SQRT2*o)+8,h=0,p=0,m=n.width,g=n.height;switch(r){case"inside":h=n.x+m/2-l/2,p=n.y+g/2-c/2;break;case"top":h=n.x+m/2-l/2,p=n.y-c-u;break;case"bottom":h=n.x+m/2-l/2,p=n.y+g+u;break;case"left":h=n.x-l-u,p=n.y+g/2-c/2;break;case"right":h=n.x+m+u,p=n.y+g/2-c/2}return[h,p]}(o,x,v,t.get("borderWidth"));l=M[0],c=M[1]}else M=function A9(r,n,t,o,l,c,u){var h=t.getSize(),p=h[0],m=h[1];return null!=c&&(r+p+c+2>o?r-=p+c:r+=c),null!=u&&(n+m+u>l?n-=m+u:n+=u),[r,n]}(l,c,u,m,g,y?null:20,b?null:20),l=M[0],c=M[1];y&&(l-=lg(y)?v[0]/2:"right"===y?v[0]:0),b&&(c-=lg(b)?v[1]/2:"bottom"===b?v[1]:0),MI(t)&&(M=function K5(r,n,t,o,l){var c=t.getSize(),u=c[0],h=c[1];return r=Math.min(r+u,o)-u,n=Math.min(n+h,l)-h,[r=Math.max(r,0),n=Math.max(n,0)]}(l,c,u,m,g),l=M[0],c=M[1]),u.moveTo(l,c)},n.prototype._updateContentNotChangedOnAxis=function(t,o){var l=this._lastDataByCoordSys,c=this._cbParamsList,u=!!l&&l.length===t.length;return u&&U(l,function(h,p){var m=h.dataByAxis||[],v=(t[p]||{}).dataByAxis||[];(u=u&&m.length===v.length)&&U(m,function(y,b){var x=v[b]||{},C=y.seriesDataIndices||[],S=x.seriesDataIndices||[];(u=u&&y.value===x.value&&y.axisType===x.axisType&&y.axisId===x.axisId&&C.length===S.length)&&U(C,function(M,T){var A=S[T];u=u&&M.seriesIndex===A.seriesIndex&&M.dataIndex===A.dataIndex}),c&&U(y.seriesDataIndices,function(M){var T=M.seriesIndex,A=o[T],E=c[T];A&&E&&E.data!==A.data&&(u=!1)})})}),this._lastDataByCoordSys=t,this._cbParamsList=o,!!u},n.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},n.prototype.dispose=function(t,o){sn.node||!o.getDom()||(c_(this,"_updatePosition"),this._tooltipContent.dispose(),GE("itemTooltip",o))},n.type="tooltip",n}(ui);function Hy(r,n,t){var l,o=n.ecModel;t?(l=new zn(t,o,o),l=new zn(n.option,l,o)):l=n;for(var c=r.length-1;c>=0;c--){var u=r[c];u&&(u instanceof zn&&(u=u.get("tooltip",!0)),Le(u)&&(u={formatter:u}),u&&(l=new zn(u,l,o)))}return l}function RI(r,n){return r.dispatchAction||Ne(n.dispatchAction,n)}function lg(r){return"center"===r||"middle"===r}const Q5=b1;var lee=["rect","polygon","keep","clear"];function cee(r,n){var t=On(r?r.brush:[]);if(t.length){var o=[];U(t,function(p){var m=p.hasOwnProperty("toolbox")?p.toolbox:[];m instanceof Array&&(o=o.concat(m))});var l=r&&r.toolbox;be(l)&&(l=l[0]),l||(r.toolbox=[l={feature:{}}]);var c=l.feature||(l.feature={}),u=c.brush||(c.brush={}),h=u.type||(u.type=[]);h.push.apply(h,o),function J5(r){var n={};U(r,function(t){n[t]=1}),r.length=0,U(n,function(t,o){r.push(o)})}(h),n&&!h.length&&h.push.apply(h,lee)}}var ez=U;function I9(r){if(r)for(var n in r)if(r.hasOwnProperty(n))return!0}function tz(r,n,t){var o={};return ez(n,function(c){var u=o[c]=function l(){var c=function(){};return c.prototype.__hidden=c.prototype,new c}();ez(r[c],function(h,p){if(_a.isValidType(p)){var m={type:p,visual:h};t&&t(m,c),u[p]=new _a(m),"opacity"===p&&((m=rt(m)).type="colorAlpha",u.__hidden.__alphaForOpacity=new _a(m))}})}),o}function P9(r,n,t){var o;U(t,function(l){n.hasOwnProperty(l)&&I9(n[l])&&(o=!0)}),o&&U(t,function(l){n.hasOwnProperty(l)&&I9(n[l])?r[l]=rt(n[l]):delete r[l]})}var R9={lineX:nz(0),lineY:nz(1),rect:{point:function(r,n,t){return r&&t.boundingRect.contain(r[0],r[1])},rect:function(r,n,t){return r&&t.boundingRect.intersect(r)}},polygon:{point:function(r,n,t){return r&&t.boundingRect.contain(r[0],r[1])&&nd(t.range,r[0],r[1])},rect:function(r,n,t){var o=t.range;if(!r||o.length<=1)return!1;var l=r.x,c=r.y,u=r.width,h=r.height,p=o[0];return!!(nd(o,l,c)||nd(o,l+u,c)||nd(o,l,c+h)||nd(o,l+u,c+h)||lt.create(r).contain(p[0],p[1])||a_(l,c,l+u,c,o)||a_(l,c,l,c+h,o)||a_(l+u,c,l+u,c+h,o)||a_(l,c+h,l+u,c+h,o))||void 0}}};function nz(r){var n=["x","y"],t=["width","height"];return{point:function(o,l,c){if(o)return cg(o[r],c.range)},rect:function(o,l,c){if(o){var u=c.range,h=[o[n[r]],o[n[r]]+o[t[r]]];return h[1]n[0][1]&&(n[0][1]=c[0]),c[1]n[1][1]&&(n[1][1]=c[1])}return n&&az(n)}};function az(r){return new lt(r[0][0],r[1][0],r[0][1]-r[0][0],r[1][1]-r[1][0])}var V9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.init=function(t,o){this.ecModel=t,this.api=o,(this._brushController=new e3(o.getZr())).on("brush",Ne(this._onBrush,this)).mount()},n.prototype.render=function(t,o,l,c){this.model=t,this._updateController(t,o,l,c)},n.prototype.updateTransform=function(t,o,l,c){FI(o),this._updateController(t,o,l,c)},n.prototype.updateVisual=function(t,o,l,c){this.updateTransform(t,o,l,c)},n.prototype.updateView=function(t,o,l,c){this._updateController(t,o,l,c)},n.prototype._updateController=function(t,o,l,c){(!c||c.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(l)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},n.prototype.dispose=function(){this._brushController.dispose()},n.prototype._onBrush=function(t){var o=this.model.id,l=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:o,areas:rt(l),$from:o}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:o,areas:rt(l),$from:o})},n.type="brush",n}(ui);const z9=V9;var G9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.areas=[],t.brushOption={},t}return le(n,r),n.prototype.optionUpdated=function(t,o){var l=this.option;!o&&P9(l,t,["inBrush","outOfBrush"]);var c=l.inBrush=l.inBrush||{};l.outOfBrush=l.outOfBrush||{color:"#ddd"},c.hasOwnProperty("liftZ")||(c.liftZ=5)},n.prototype.setAreas=function(t){t&&(this.areas=xe(t,function(o){return oz(this.option,o)},this))},n.prototype.setBrushOption=function(t){this.brushOption=oz(this.option,t),this.brushType=this.brushOption.brushType},n.type="brush",n.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],n.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},n}(jt);function oz(r,n){return St({brushType:r.brushType,brushMode:r.brushMode,transformable:r.transformable,brushStyle:new zn(r.brushStyle).getItemStyle(),removeOnClick:r.removeOnClick,z:r.z},n,!0)}const pee=G9;var mee=["rect","polygon","lineX","lineY","keep","clear"],U9=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return le(n,r),n.prototype.render=function(t,o,l){var c,u,h;o.eachComponent({mainType:"brush"},function(p){c=p.brushType,u=p.brushOption.brushMode||"single",h=h||!!p.areas.length}),this._brushType=c,this._brushMode=u,U(t.get("type",!0),function(p){t.setIconStatus(p,("keep"===p?"multiple"===u:"clear"===p?h:p===c)?"emphasis":"normal")})},n.prototype.updateView=function(t,o,l){this.render(t,o,l)},n.prototype.getIcons=function(){var t=this.model,o=t.get("icon",!0),l={};return U(t.get("type",!0),function(c){o[c]&&(l[c]=o[c])}),l},n.prototype.onclick=function(t,o,l){var c=this._brushType,u=this._brushMode;"clear"===l?(o.dispatchAction({type:"axisAreaSelect",intervals:[]}),o.dispatchAction({type:"brush",command:"clear",areas:[]})):o.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===l?c:c!==l&&l,brushMode:"keep"===l?"multiple"===u?"single":"multiple":u}})},n.getDefaultOption=function(t){return{show:!0,type:mee.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])}},n}(Ko);const j9=U9;var sz=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.layoutMode={type:"box",ignoreSize:!0},t}return le(n,r),n.type="title",n.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},n}(jt),W9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.render=function(t,o,l){if(this.group.removeAll(),t.get("show")){var c=this.group,u=t.getModel("textStyle"),h=t.getModel("subtextStyle"),p=t.get("textAlign"),m=Dt(t.get("textBaseline"),t.get("textVerticalAlign")),g=new dn({style:Xn(u,{text:t.get("text"),fill:u.getTextColor()},{disableBox:!0}),z2:10}),v=g.getBoundingRect(),y=t.get("subtext"),b=new dn({style:Xn(h,{text:y,fill:h.getTextColor(),y:v.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),x=t.get("link"),C=t.get("sublink"),S=t.get("triggerEvent",!0);g.silent=!x&&!S,b.silent=!C&&!S,x&&g.on("click",function(){Vp(x,"_"+t.get("target"))}),C&&b.on("click",function(){Vp(C,"_"+t.get("subtarget"))}),_t(g).eventData=_t(b).eventData=S?{componentType:"title",componentIndex:t.componentIndex}:null,c.add(g),y&&c.add(b);var M=c.getBoundingRect(),T=t.getBoxLayoutParams();T.width=M.width,T.height=M.height;var A=cr(T,{width:l.getWidth(),height:l.getHeight()},t.get("padding"));p||("middle"===(p=t.get("left")||t.get("right"))&&(p="center"),"right"===p?A.x+=A.width:"center"===p&&(A.x+=A.width/2)),m||("center"===(m=t.get("top")||t.get("bottom"))&&(m="middle"),"bottom"===m?A.y+=A.height:"middle"===m&&(A.y+=A.height/2),m=m||"top"),c.x=A.x,c.y=A.y,c.markRedraw();var E={align:p,verticalAlign:m};g.setStyle(E),b.setStyle(E),M=c.getBoundingRect();var L=A.margin,R=t.getItemStyle(["color","opacity"]);R.fill=t.get("backgroundColor");var B=new an({shape:{x:M.x-L[3],y:M.y-L[0],width:M.width+L[1]+L[3],height:M.height+L[0]+L[2],r:t.get("borderRadius")},style:R,subPixelOptimize:!0,silent:!0});c.add(B)}},n.type="title",n}(ui),q9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.layoutMode="box",t}return le(n,r),n.prototype.init=function(t,o,l){this.mergeDefaultAndTheme(t,l),this._initData()},n.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this._initData()},n.prototype.setCurrentIndex=function(t){null==t&&(t=this.option.currentIndex);var o=this._data.count();this.option.loop?t=(t%o+o)%o:(t>=o&&(t=o-1),t<0&&(t=0)),this.option.currentIndex=t},n.prototype.getCurrentIndex=function(){return this.option.currentIndex},n.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},n.prototype.setPlayState=function(t){this.option.autoPlay=!!t},n.prototype.getPlayState=function(){return!!this.option.autoPlay},n.prototype._initData=function(){var u,t=this.option,o=t.data||[],l=t.axisType,c=this._names=[];"category"===l?(u=[],U(o,function(m,g){var y,v=_r(bp(m),"");ze(m)?(y=rt(m)).value=g:y=g,u.push(y),c.push(v)})):u=o,(this._data=new ga([{name:"value",type:{category:"ordinal",time:"time",value:"number"}[l]||"number"}],this)).initData(u,c)},n.prototype.getData=function(){return this._data},n.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},n.type="timeline",n.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},n}(jt);const NI=q9;var Qo=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="timeline.slider",n.defaultOption=$d(NI.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),n}(NI);Ii(Qo,ec.prototype);const BI=Qo;var lz=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="timeline",n}(ui);const X9=lz;var Z9=function(r){function n(t,o,l,c){var u=r.call(this,t,o,l)||this;return u.type=c||"value",u}return le(n,r),n.prototype.getLabelModel=function(){return this.model.getModel("label")},n.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},n}(Go);const K9=Z9;var cz=Math.PI,dz=cn(),gee=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.init=function(t,o){this.api=o},n.prototype.render=function(t,o,l){if(this.model=t,this.api=l,this.ecModel=o,this.group.removeAll(),t.get("show",!0)){var c=this._layout(t,l),u=this._createGroup("_mainGroup"),h=this._createGroup("_labelGroup"),p=this._axis=this._createAxis(c,t);t.formatTooltip=function(m){return Oi("nameValue",{noName:!0,value:p.scale.getLabel({value:m})})},U(["AxisLine","AxisTick","Control","CurrentPointer"],function(m){this["_render"+m](c,u,p,t)},this),this._renderAxisLabel(c,h,p,t),this._position(c,t)}this._doPlayStop(),this._updateTicksStatus()},n.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},n.prototype.dispose=function(){this._clearTimer()},n.prototype._layout=function(t,o){var h,l=t.get(["label","position"]),c=t.get("orient"),u=function uz(r,n){return cr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()},r.get("padding"))}(t,o),p={horizontal:"center",vertical:(h=null==l||"auto"===l?"horizontal"===c?u.y+u.height/2=0||"+"===h?"left":"right"},m={horizontal:h>=0||"+"===h?"top":"bottom",vertical:"middle"},g={horizontal:0,vertical:cz/2},v="vertical"===c?u.height:u.width,y=t.getModel("controlStyle"),b=y.get("show",!0),x=b?y.get("itemSize"):0,C=b?y.get("itemGap"):0,S=x+C,M=t.get(["label","rotate"])||0;M=M*cz/180;var T,A,E,L=y.get("position",!0),R=b&&y.get("showPlayBtn",!0),B=b&&y.get("showPrevBtn",!0),H=b&&y.get("showNextBtn",!0),G=0,j=v;"left"===L||"bottom"===L?(R&&(T=[0,0],G+=S),B&&(A=[G,0],G+=S),H&&(E=[j-x,0],j-=S)):(R&&(T=[j-x,0],j-=S),B&&(A=[0,0],G+=S),H&&(E=[j-x,0],j-=S));var $=[G,j];return t.get("inverse")&&$.reverse(),{viewRect:u,mainLength:v,orient:c,rotation:g[c],labelRotation:M,labelPosOpt:h,labelAlign:t.get(["label","align"])||p[c],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||m[c],playPosition:T,prevBtnPosition:A,nextBtnPosition:E,axisExtent:$,controlSize:x,controlGap:C}},n.prototype._position=function(t,o){var l=this._mainGroup,c=this._labelGroup,u=t.viewRect;if("vertical"===t.orient){var h=[1,0,0,1,0,0],p=u.x,m=u.y+u.height;ss(h,h,[-p,-m]),Ec(h,h,-cz/2),ss(h,h,[p,m]),(u=u.clone()).applyTransform(h)}var g=T(u),v=T(l.getBoundingRect()),y=T(c.getBoundingRect()),b=[l.x,l.y],x=[c.x,c.y];x[0]=b[0]=g[0][0];var S,C=t.labelPosOpt;function M(E){E.originX=g[0][0]-E.x,E.originY=g[1][0]-E.y}function T(E){return[[E.x,E.x+E.width],[E.y,E.y+E.height]]}function A(E,L,R,B,H){E[B]+=R[B][H]-L[B][H]}null==C||Le(C)?(A(b,v,g,1,S="+"===C?0:1),A(x,y,g,1,1-S)):(A(b,v,g,1,S=C>=0?0:1),x[1]=b[1]+C),l.setPosition(b),c.setPosition(x),l.rotation=c.rotation=t.rotation,M(l),M(c)},n.prototype._createAxis=function(t,o){var l=o.getData(),c=o.get("axisType"),u=function Q9(r,n){if(n=n||r.get("type"))switch(n){case"category":return new XT({ordinalMeta:r.getCategories(),extent:[1/0,-1/0]});case"time":return new lx({locale:r.ecModel.getLocaleModel(),useUTC:r.ecModel.get("useUTC")});default:return new Fa}}(o,c);u.getTicks=function(){return l.mapArray(["value"],function(m){return{value:m}})};var h=l.getDataExtent("value");u.setExtent(h[0],h[1]),u.calcNiceTicks();var p=new K9("value",u,t.axisExtent,c);return p.model=o,p},n.prototype._createGroup=function(t){var o=this[t]=new ct;return this.group.add(o),o},n.prototype._renderAxisLine=function(t,o,l,c){var u=l.getExtent();if(c.get(["lineStyle","show"])){var h=new Fr({shape:{x1:u[0],y1:0,x2:u[1],y2:0},style:ge({lineCap:"round"},c.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});o.add(h);var p=this._progressLine=new Fr({shape:{x1:u[0],x2:this._currentPointer?this._currentPointer.x:u[0],y1:0,y2:0},style:Ye({lineCap:"round",lineWidth:h.style.lineWidth},c.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});o.add(p)}},n.prototype._renderAxisTick=function(t,o,l,c){var u=this,h=c.getData(),p=l.scale.getTicks();this._tickSymbols=[],U(p,function(m){var g=l.dataToCoord(m.value),v=h.getItemModel(m.value),y=v.getModel("itemStyle"),b=v.getModel(["emphasis","itemStyle"]),x=v.getModel(["progress","itemStyle"]),C={x:g,y:0,onclick:Ne(u._changeTimeline,u,m.value)},S=VI(v,y,o,C);S.ensureState("emphasis").style=b.getItemStyle(),S.ensureState("progress").style=x.getItemStyle(),Ud(S);var M=_t(S);v.get("tooltip")?(M.dataIndex=m.value,M.dataModel=c):M.dataIndex=M.dataModel=null,u._tickSymbols.push(S)})},n.prototype._renderAxisLabel=function(t,o,l,c){var u=this;if(l.getLabelModel().get("show")){var p=c.getData(),m=l.getViewLabels();this._tickLabels=[],U(m,function(g){var v=g.tickValue,y=p.getItemModel(v),b=y.getModel("label"),x=y.getModel(["emphasis","label"]),C=y.getModel(["progress","label"]),S=l.dataToCoord(g.tickValue),M=new dn({x:S,y:0,rotation:t.labelRotation-t.rotation,onclick:Ne(u._changeTimeline,u,v),silent:!1,style:Xn(b,{text:g.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});M.ensureState("emphasis").style=Xn(x),M.ensureState("progress").style=Xn(C),o.add(M),Ud(M),dz(M).dataIndex=v,u._tickLabels.push(M)})}},n.prototype._renderControl=function(t,o,l,c){var u=t.controlSize,h=t.rotation,p=c.getModel("controlStyle").getItemStyle(),m=c.getModel(["emphasis","controlStyle"]).getItemStyle(),g=c.getPlayState(),v=c.get("inverse",!0);function y(b,x,C,S){if(b){var M=Ta(Dt(c.get(["controlStyle",x+"BtnSize"]),u),u),A=function J9(r,n,t,o){var l=o.style,c=Xp(r.get(["controlStyle",n]),o||{},new lt(t[0],t[1],t[2],t[3]));return l&&c.setStyle(l),c}(c,x+"Icon",[0,-M/2,M,M],{x:b[0],y:b[1],originX:u/2,originY:0,rotation:S?-h:0,rectHover:!0,style:p,onclick:C});A.ensureState("emphasis").style=m,o.add(A),Ud(A)}}y(t.nextBtnPosition,"next",Ne(this._changeTimeline,this,v?"-":"+")),y(t.prevBtnPosition,"prev",Ne(this._changeTimeline,this,v?"+":"-")),y(t.playPosition,g?"stop":"play",Ne(this._handlePlayClick,this,!g),!0)},n.prototype._renderCurrentPointer=function(t,o,l,c){var u=c.getData(),h=c.getCurrentIndex(),p=u.getItemModel(h).getModel("checkpointStyle"),m=this;this._currentPointer=VI(p,p,this._mainGroup,{},this._currentPointer,{onCreate:function(v){v.draggable=!0,v.drift=Ne(m._handlePointerDrag,m),v.ondragend=Ne(m._handlePointerDragend,m),hz(v,m._progressLine,h,l,c,!0)},onUpdate:function(v){hz(v,m._progressLine,h,l,c)}})},n.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},n.prototype._handlePointerDrag=function(t,o,l){this._clearTimer(),this._pointerChangeTimeline([l.offsetX,l.offsetY])},n.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},n.prototype._pointerChangeTimeline=function(t,o){var l=this._toAxisCoord(t)[0],u=fs(this._axis.getExtent().slice());l>u[1]&&(l=u[1]),l=0&&(u[c]=+u[c].toFixed(y)),[u,v]}var _z={min:vt(HI,"min"),max:vt(HI,"max"),average:vt(HI,"average"),median:vt(HI,"median")};function x1(r,n){if(n){var t=r.getData(),o=r.coordinateSystem,l=o.dimensions;if(!function vee(r){return!isNaN(parseFloat(r.x))&&!isNaN(parseFloat(r.y))}(n)&&!be(n.coord)&&o){var c=iY(n,t,o,r);if((n=rt(n)).type&&_z[n.type]&&c.baseAxis&&c.valueAxis){var u=Mt(l,c.baseAxis.dim),h=Mt(l,c.valueAxis.dim),p=_z[n.type](t,c.baseDataDim,c.valueDataDim,u,h);n.coord=p[0],n.value=p[1]}else n.coord=[null!=n.xAxis?n.xAxis:n.radiusAxis,null!=n.yAxis?n.yAxis:n.angleAxis]}if(null==n.coord)n.coord=[];else for(var m=n.coord,g=0;g<2;g++)_z[m[g]]&&(m[g]=GI(t,t.mapDimension(l[g]),m[g]));return n}}function iY(r,n,t,o){var l={};return null!=r.valueIndex||null!=r.valueDim?(l.valueDataDim=null!=r.valueIndex?n.getDimension(r.valueIndex):r.valueDim,l.valueAxis=t.getAxis(function _ee(r,n){var t=r.getData().getDimensionInfo(n);return t&&t.coordDim}(o,l.valueDataDim)),l.baseAxis=t.getOtherAxis(l.valueAxis),l.baseDataDim=n.mapDimension(l.baseAxis.dim)):(l.baseAxis=o.getBaseAxis(),l.valueAxis=t.getOtherAxis(l.baseAxis),l.baseDataDim=n.mapDimension(l.baseAxis.dim),l.valueDataDim=n.mapDimension(l.valueAxis.dim)),l}function C1(r,n){return!(r&&r.containData&&n.coord&&!vz(n))||r.containData(n.coord)}function yz(r,n){return r?function(t,o,l,c){return tu(c<2?t.coord&&t.coord[c]:t.value,n[c])}:function(t,o,l,c){return tu(t.value,n[c])}}function GI(r,n,t){if("average"===t){var o=0,l=0;return r.each(n,function(c,u){isNaN(c)||(o+=c,l++)}),o/l}return"median"===t?r.getMedian(n):r.getDataExtent(n)["max"===t?1:0]}var UI=cn(),aY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.init=function(){this.markerGroupMap=$e()},n.prototype.render=function(t,o,l){var c=this,u=this.markerGroupMap;u.each(function(h){UI(h).keep=!1}),o.eachSeries(function(h){var p=Uu.getMarkerModelFromSeries(h,c.type);p&&c.renderSeries(h,p,o,l)}),u.each(function(h){!UI(h).keep&&c.group.remove(h.group)})},n.prototype.markKeep=function(t){UI(t).keep=!0},n.prototype.toggleBlurSeries=function(t,o){var l=this;U(t,function(c){var u=Uu.getMarkerModelFromSeries(c,l.type);u&&u.getData().eachItemGraphicEl(function(p){p&&(o?$2(p):Gd(p))})})},n.type="marker",n}(ui);const jI=aY;function bz(r,n,t){var o=n.coordinateSystem;r.each(function(l){var u,c=r.getItemModel(l),h=Ie(c.get("x"),t.getWidth()),p=Ie(c.get("y"),t.getHeight());if(isNaN(h)||isNaN(p)){if(n.getMarkerPosition)u=n.getMarkerPosition(r.getValues(r.dimensions,l));else if(o){var m=r.get(o.dimensions[0],l),g=r.get(o.dimensions[1],l);u=o.dataToPoint([m,g])}}else u=[h,p];isNaN(h)||(u[0]=h),isNaN(p)||(u[1]=p),r.setItemLayout(l,u)})}var oY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.updateTransform=function(t,o,l){o.eachSeries(function(c){var u=Uu.getMarkerModelFromSeries(c,"markPoint");u&&(bz(u.getData(),c,l),this.markerGroupMap.get(c.id).updateLayout())},this)},n.prototype.renderSeries=function(t,o,l,c){var u=t.coordinateSystem,h=t.id,p=t.getData(),m=this.markerGroupMap,g=m.get(h)||m.set(h,new O_),v=function sY(r,n,t){var o;o=r?xe(r&&r.dimensions,function(h){return ge(ge({},n.getData().getDimensionInfo(n.getData().mapDimension(h))||{}),{name:h,ordinalMeta:null})}):[{name:"value",type:"float"}];var l=new ga(o,t),c=xe(t.get("data"),vt(x1,n));r&&(c=Dn(c,vt(C1,r)));var u=yz(!!r,o);return l.initData(c,null,u),l}(u,t,o);o.setData(v),bz(o.getData(),t,c),v.each(function(y){var b=v.getItemModel(y),x=b.getShallow("symbol"),C=b.getShallow("symbolSize"),S=b.getShallow("symbolRotate"),M=b.getShallow("symbolOffset"),T=b.getShallow("symbolKeepAspect");if(qe(x)||qe(C)||qe(S)||qe(M)){var A=o.getRawValue(y),E=o.getDataParams(y);qe(x)&&(x=x(A,E)),qe(C)&&(C=C(A,E)),qe(S)&&(S=S(A,E)),qe(M)&&(M=M(A,E))}var L=b.getModel("itemStyle").getItemStyle(),R=u_(p,"color");L.fill||(L.fill=R),v.setItemVisual(y,{symbol:x,symbolSize:C,symbolRotate:S,symbolOffset:M,symbolKeepAspect:T,style:L})}),g.updateData(v),this.group.add(g.group),v.eachItemGraphicEl(function(y){y.traverse(function(b){_t(b).dataModel=o})}),this.markKeep(g),g.group.silent=o.get("silent")||t.get("silent")},n.type="markPoint",n}(jI);const lY=oY;var dY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.createMarkerModelFromSeries=function(t,o,l){return new n(t,o,l)},n.type="markLine",n.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},n}(Uu);const uY=dY;var S1=cn(),dg=function(r,n,t,o){var c,l=r.getData();if(be(o))c=o;else{var u=o.type;if("min"===u||"max"===u||"average"===u||"median"===u||null!=o.xAxis||null!=o.yAxis){var h=void 0,p=void 0;if(null!=o.yAxis||null!=o.xAxis)h=n.getAxis(null!=o.yAxis?"y":"x"),p=Vi(o.yAxis,o.xAxis);else{var m=iY(o,l,n,r);h=m.valueAxis,p=GI(l,$T(l,m.valueDataDim),u)}var v="x"===h.dim?0:1,y=1-v,b=rt(o),x={coord:[]};b.type=null,b.coord=[],b.coord[y]=-1/0,x.coord[y]=1/0;var C=t.get("precision");C>=0&&ln(p)&&(p=+p.toFixed(Math.min(C,20))),b.coord[v]=x.coord[v]=p,c=[b,x,{type:u,valueIndex:o.valueIndex,value:p}]}else c=[]}var S=[x1(r,c[0]),x1(r,c[1]),ge({},c[2])];return S[2].type=S[2].type||null,St(S[2],S[0]),St(S[2],S[1]),S};function D1(r){return!isNaN(r)&&!isFinite(r)}function wz(r,n,t,o){var l=1-r,c=o.dimensions[r];return D1(n[l])&&D1(t[l])&&n[r]===t[r]&&o.getAxis(c).containData(n[r])}function hY(r,n){if("cartesian2d"===r.type){var t=n[0].coord,o=n[1].coord;if(t&&o&&(wz(1,t,o,r)||wz(0,t,o,r)))return!0}return C1(r,n[0])&&C1(r,n[1])}function $I(r,n,t,o,l){var h,c=o.coordinateSystem,u=r.getItemModel(n),p=Ie(u.get("x"),l.getWidth()),m=Ie(u.get("y"),l.getHeight());if(isNaN(p)||isNaN(m)){if(o.getMarkerPosition)h=o.getMarkerPosition(r.getValues(r.dimensions,n));else{var v=r.get((g=c.dimensions)[0],n),y=r.get(g[1],n);h=c.dataToPoint([v,y])}if(vf(c,"cartesian2d")){var g,b=c.getAxis("x"),x=c.getAxis("y");D1(r.get((g=c.dimensions)[0],n))?h[0]=b.toGlobalCoord(b.getExtent()[t?0:1]):D1(r.get(g[1],n))&&(h[1]=x.toGlobalCoord(x.getExtent()[t?0:1]))}isNaN(p)||(h[0]=p),isNaN(m)||(h[1]=m)}else h=[p,m];r.setItemLayout(n,h)}var fY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.updateTransform=function(t,o,l){o.eachSeries(function(c){var u=Uu.getMarkerModelFromSeries(c,"markLine");if(u){var h=u.getData(),p=S1(u).from,m=S1(u).to;p.each(function(g){$I(p,g,!0,c,l),$I(m,g,!1,c,l)}),h.each(function(g){h.setItemLayout(g,[p.getItemLayout(g),m.getItemLayout(g)])}),this.markerGroupMap.get(c.id).updateLayout()}},this)},n.prototype.renderSeries=function(t,o,l,c){var u=t.coordinateSystem,h=t.id,p=t.getData(),m=this.markerGroupMap,g=m.get(h)||m.set(h,new MV);this.group.add(g.group);var v=function pY(r,n,t){var o;o=r?xe(r&&r.dimensions,function(m){return ge(ge({},n.getData().getDimensionInfo(n.getData().mapDimension(m))||{}),{name:m,ordinalMeta:null})}):[{name:"value",type:"float"}];var l=new ga(o,t),c=new ga(o,t),u=new ga([],t),h=xe(t.get("data"),vt(dg,n,r,t));r&&(h=Dn(h,vt(hY,r)));var p=yz(!!r,o);return l.initData(xe(h,function(m){return m[0]}),null,p),c.initData(xe(h,function(m){return m[1]}),null,p),u.initData(xe(h,function(m){return m[2]})),u.hasItemOption=!0,{from:l,to:c,line:u}}(u,t,o),y=v.from,b=v.to,x=v.line;S1(o).from=y,S1(o).to=b,o.setData(x);var C=o.get("symbol"),S=o.get("symbolSize"),M=o.get("symbolRotate"),T=o.get("symbolOffset");function A(E,L,R){var B=E.getItemModel(L);$I(E,L,R,t,c);var H=B.getModel("itemStyle").getItemStyle();null==H.fill&&(H.fill=u_(p,"color")),E.setItemVisual(L,{symbolKeepAspect:B.get("symbolKeepAspect"),symbolOffset:Dt(B.get("symbolOffset",!0),T[R?0:1]),symbolRotate:Dt(B.get("symbolRotate",!0),M[R?0:1]),symbolSize:Dt(B.get("symbolSize"),S[R?0:1]),symbol:Dt(B.get("symbol",!0),C[R?0:1]),style:H})}be(C)||(C=[C,C]),be(S)||(S=[S,S]),be(M)||(M=[M,M]),be(T)||(T=[T,T]),v.from.each(function(E){A(y,E,!0),A(b,E,!1)}),x.each(function(E){var L=x.getItemModel(E).getModel("lineStyle").getLineStyle();x.setItemLayout(E,[y.getItemLayout(E),b.getItemLayout(E)]),null==L.stroke&&(L.stroke=y.getItemVisual(E,"style").fill),x.setItemVisual(E,{fromSymbolKeepAspect:y.getItemVisual(E,"symbolKeepAspect"),fromSymbolOffset:y.getItemVisual(E,"symbolOffset"),fromSymbolRotate:y.getItemVisual(E,"symbolRotate"),fromSymbolSize:y.getItemVisual(E,"symbolSize"),fromSymbol:y.getItemVisual(E,"symbol"),toSymbolKeepAspect:b.getItemVisual(E,"symbolKeepAspect"),toSymbolOffset:b.getItemVisual(E,"symbolOffset"),toSymbolRotate:b.getItemVisual(E,"symbolRotate"),toSymbolSize:b.getItemVisual(E,"symbolSize"),toSymbol:b.getItemVisual(E,"symbol"),style:L})}),g.updateData(x),v.line.eachItemGraphicEl(function(E){_t(E).dataModel=o,E.traverse(function(L){_t(L).dataModel=o})}),this.markKeep(g),g.group.silent=o.get("silent")||t.get("silent")},n.type="markLine",n}(jI);const mY=fY;var gY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.createMarkerModelFromSeries=function(t,o,l){return new n(t,o,l)},n.type="markArea",n.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},n}(Uu);const jy=gY;var M1=cn(),vY=function(r,n,t,o){var l=o[0],c=o[1];if(l&&c){var u=x1(r,l),h=x1(r,c),p=u.coord,m=h.coord;p[0]=Vi(p[0],-1/0),p[1]=Vi(p[1],-1/0),m[0]=Vi(m[0],1/0),m[1]=Vi(m[1],1/0);var g=gS([{},u,h]);return g.coord=[u.coord,h.coord],g.x0=u.x,g.y0=u.y,g.x1=h.x,g.y1=h.y,g}};function T1(r){return!isNaN(r)&&!isFinite(r)}function WI(r,n,t,o){var l=1-r;return T1(n[l])&&T1(t[l])}function Cr(r,n){var t=n.coord[0],o=n.coord[1],l={coord:t,x:n.x0,y:n.y0},c={coord:o,x:n.x1,y:n.y1};return vf(r,"cartesian2d")?!(!t||!o||!WI(1,t,o)&&!WI(0,t,o))||function rY(r,n,t){return!(r&&r.containZone&&n.coord&&t.coord&&!vz(n)&&!vz(t))||r.containZone(n.coord,t.coord)}(r,l,c):C1(r,l)||C1(r,c)}function Jn(r,n,t,o,l){var h,c=o.coordinateSystem,u=r.getItemModel(n),p=Ie(u.get(t[0]),l.getWidth()),m=Ie(u.get(t[1]),l.getHeight());if(isNaN(p)||isNaN(m)){if(o.getMarkerPosition){var g=r.getValues(["x0","y0"],n),v=r.getValues(["x1","y1"],n),y=c.clampData(g),b=c.clampData(v),x=[];x[0]="x0"===t[0]?y[0]>b[0]?v[0]:g[0]:y[0]>b[0]?g[0]:v[0],x[1]="y0"===t[1]?y[1]>b[1]?v[1]:g[1]:y[1]>b[1]?g[1]:v[1],h=o.getMarkerPosition(x,t,!0)}else{var M=[C=r.get(t[0],n),S=r.get(t[1],n)];c.clampData&&c.clampData(M,M),h=c.dataToPoint(M,!0)}if(vf(c,"cartesian2d")){var T=c.getAxis("x"),A=c.getAxis("y"),C=r.get(t[0],n),S=r.get(t[1],n);T1(C)?h[0]=T.toGlobalCoord(T.getExtent()["x0"===t[0]?0:1]):T1(S)&&(h[1]=A.toGlobalCoord(A.getExtent()["y0"===t[1]?0:1]))}isNaN(p)||(h[0]=p),isNaN(m)||(h[1]=m)}else h=[p,m];return h}var YI=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],xz=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.updateTransform=function(t,o,l){o.eachSeries(function(c){var u=Uu.getMarkerModelFromSeries(c,"markArea");if(u){var h=u.getData();h.each(function(p){var m=xe(YI,function(v){return Jn(h,p,v,c,l)});h.setItemLayout(p,m),h.getItemGraphicEl(p).setShape("points",m)})}},this)},n.prototype.renderSeries=function(t,o,l,c){var u=t.coordinateSystem,h=t.id,p=t.getData(),m=this.markerGroupMap,g=m.get(h)||m.set(h,{group:new ct});this.group.add(g.group),this.markKeep(g);var v=function qI(r,n,t){var o,l;if(r){var u=xe(r&&r.dimensions,function(m){var g=n.getData();return ge(ge({},g.getDimensionInfo(g.mapDimension(m))||{}),{name:m,ordinalMeta:null})});l=xe(["x0","y0","x1","y1"],function(m,g){return{name:m,type:u[g%2].type}}),o=new ga(l,t)}else o=new ga(l=[{name:"value",type:"float"}],t);var h=xe(t.get("data"),vt(vY,n,r,t));r&&(h=Dn(h,vt(Cr,r)));var p=r?function(m,g,v,y){return tu(m.coord[Math.floor(y/2)][y%2],l[y])}:function(m,g,v,y){return tu(m.value,l[y])};return o.initData(h,null,p),o.hasItemOption=!0,o}(u,t,o);o.setData(v),v.each(function(y){var b=xe(YI,function(H){return Jn(v,y,H,t,c)}),x=u.getAxis("x").scale,C=u.getAxis("y").scale,S=x.getExtent(),M=C.getExtent(),T=[x.parse(v.get("x0",y)),x.parse(v.get("x1",y))],A=[C.parse(v.get("y0",y)),C.parse(v.get("y1",y))];fs(T),fs(A),v.setItemLayout(y,{points:b,allClipped:!!(S[0]>T[1]||S[1]A[1]||M[1]=0},n.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},n.type="legend.plain",n.dependencies=["series"],n.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},n}(jt);const A1=Sz;var ju=vt,k1=U,E1=ct,Jo=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.newlineDisabled=!1,t}return le(n,r),n.prototype.init=function(){this.group.add(this._contentGroup=new E1),this.group.add(this._selectorGroup=new E1),this._isFirstRender=!0},n.prototype.getContentGroup=function(){return this._contentGroup},n.prototype.getSelectorGroup=function(){return this._selectorGroup},n.prototype.render=function(t,o,l){var c=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var u=t.get("align"),h=t.get("orient");(!u||"auto"===u)&&(u="right"===t.get("left")&&"vertical"===h?"right":"left");var p=t.get("selector",!0),m=t.get("selectorPosition",!0);p&&(!m||"auto"===m)&&(m="horizontal"===h?"end":"start"),this.renderInner(u,t,o,l,p,h,m);var g=t.getBoxLayoutParams(),v={width:l.getWidth(),height:l.getHeight()},y=t.get("padding"),b=cr(g,v,y),x=this.layoutInner(t,u,b,c,p,m),C=cr(Ye({width:x.width,height:x.height},g),v,y);this.group.x=C.x-x.x,this.group.y=C.y-x.y,this.group.markRedraw(),this.group.add(this._backgroundEl=$f(x,t))}},n.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},n.prototype.renderInner=function(t,o,l,c,u,h,p){var m=this.getContentGroup(),g=$e(),v=o.get("selectedMode"),y=[];l.eachRawSeries(function(b){!b.get("legendHoverLink")&&y.push(b.id)}),k1(o.getData(),function(b,x){var C=b.get("name");if(!this.newlineDisabled&&(""===C||"\n"===C)){var S=new E1;return S.newline=!0,void m.add(S)}var M=l.getSeriesByName(C)[0];if(!g.get(C))if(M){var T=M.getData(),A=T.getVisual("legendLineStyle")||{},E=T.getVisual("legendIcon"),L=T.getVisual("style");this._createItem(M,C,x,b,o,t,A,L,E,v,c).on("click",ju(Dz,C,null,c,y)).on("mouseover",ju($y,M.name,null,c,y)).on("mouseout",ju(I1,M.name,null,c,y)),g.set(C,!0)}else l.eachRawSeries(function(B){if(!g.get(C)&&B.legendVisualProvider){var H=B.legendVisualProvider;if(!H.containName(C))return;var G=H.indexOfName(C),j=H.getItemVisual(G,"style"),$=H.getItemVisual(G,"legendIcon"),X=yt(j.fill);X&&0===X[3]&&(X[3]=.2,j=ge(ge({},j),{fill:ae(X,"rgba")})),this._createItem(B,C,x,b,o,t,{},j,$,v,c).on("click",ju(Dz,null,C,c,y)).on("mouseover",ju($y,null,C,c,y)).on("mouseout",ju(I1,null,C,c,y)),g.set(C,!0)}},this)},this),u&&this._createSelector(u,o,c,h,p)},n.prototype._createSelector=function(t,o,l,c,u){var h=this.getSelectorGroup();k1(t,function(m){var g=m.type,v=new dn({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){l.dispatchAction({type:"all"===g?"legendAllSelect":"legendInverseSelect"})}});h.add(v),Zr(v,{normal:o.getModel("selectorLabel"),emphasis:o.getModel(["emphasis","selectorLabel"])},{defaultText:m.title}),Ud(v)})},n.prototype._createItem=function(t,o,l,c,u,h,p,m,g,v,y){var b=t.visualDrawType,x=u.get("itemWidth"),C=u.get("itemHeight"),S=u.isSelected(o),M=c.get("symbolRotate"),T=c.get("symbolKeepAspect"),A=c.get("icon"),E=function yY(r,n,t,o,l,c,u){function h(S,M){"auto"===S.lineWidth&&(S.lineWidth=M.lineWidth>0?2:0),k1(S,function(T,A){"inherit"===S[A]&&(S[A]=M[A])})}var p=n.getModel("itemStyle"),m=p.getItemStyle(),g=0===r.lastIndexOf("empty",0)?"fill":"stroke",v=p.getShallow("decal");m.decal=v&&"inherit"!==v?v_(v,u):o.decal,"inherit"===m.fill&&(m.fill=o[l]),"inherit"===m.stroke&&(m.stroke=o[g]),"inherit"===m.opacity&&(m.opacity=("fill"===l?o:t).opacity),h(m,o);var y=n.getModel("lineStyle"),b=y.getLineStyle();if(h(b,t),"auto"===m.fill&&(m.fill=o.fill),"auto"===m.stroke&&(m.stroke=o.fill),"auto"===b.stroke&&(b.stroke=o.fill),!c){var x=n.get("inactiveBorderWidth");m.lineWidth="auto"===x?o.lineWidth>0&&m[g]?2:0:m.lineWidth,m.fill=n.get("inactiveColor"),m.stroke=n.get("inactiveBorderColor"),b.stroke=y.get("inactiveColor"),b.lineWidth=y.get("inactiveWidth")}return{itemStyle:m,lineStyle:b}}(g=A||g||"roundRect",c,p,m,b,S,y),L=new E1,R=c.getModel("textStyle");if(!qe(t.getLegendIcon)||A&&"inherit"!==A){var B="inherit"===A&&t.getData().getVisual("symbol")?"inherit"===M?t.getData().getVisual("symbolRotate"):M:0;L.add(function bY(r){var n=r.icon||"roundRect",t=Ui(n,0,0,r.itemWidth,r.itemHeight,r.itemStyle.fill,r.symbolKeepAspect);return t.setStyle(r.itemStyle),t.rotation=(r.iconRotate||0)*Math.PI/180,t.setOrigin([r.itemWidth/2,r.itemHeight/2]),n.indexOf("empty")>-1&&(t.style.stroke=t.style.fill,t.style.fill="#fff",t.style.lineWidth=2),t}({itemWidth:x,itemHeight:C,icon:g,iconRotate:B,itemStyle:E.itemStyle,lineStyle:E.lineStyle,symbolKeepAspect:T}))}else L.add(t.getLegendIcon({itemWidth:x,itemHeight:C,icon:g,iconRotate:M,itemStyle:E.itemStyle,lineStyle:E.lineStyle,symbolKeepAspect:T}));var H="left"===h?x+5:-5,G=h,j=u.get("formatter"),$=o;Le(j)&&j?$=j.replace("{name}",o??""):qe(j)&&($=j(o));var X=c.get("inactiveColor");L.add(new dn({style:Xn(R,{text:$,x:H,y:C/2,fill:S?R.getTextColor():X,align:G,verticalAlign:"middle"})}));var K=new an({shape:L.getBoundingRect(),invisible:!0}),ee=c.getModel("tooltip");return ee.get("show")&&ll({el:K,componentModel:u,itemName:o,itemTooltipOption:ee.option}),L.add(K),L.eachChild(function(ne){ne.silent=!0}),K.silent=!v,this.getContentGroup().add(L),Ud(L),L.__legendDataIndex=l,L},n.prototype.layoutInner=function(t,o,l,c,u,h){var p=this.getContentGroup(),m=this.getSelectorGroup();Vh(t.get("orient"),p,t.get("itemGap"),l.width,l.height);var g=p.getBoundingRect(),v=[-g.x,-g.y];if(m.markRedraw(),p.markRedraw(),u){Vh("horizontal",m,t.get("selectorItemGap",!0));var y=m.getBoundingRect(),b=[-y.x,-y.y],x=t.get("selectorButtonGap",!0),C=t.getOrient().index,S=0===C?"width":"height",M=0===C?"height":"width",T=0===C?"y":"x";"end"===h?b[C]+=g[S]+x:v[C]+=y[S]+x,b[1-C]+=g[M]/2-y[M]/2,m.x=b[0],m.y=b[1],p.x=v[0],p.y=v[1];var A={x:0,y:0};return A[S]=g[S]+x+y[S],A[M]=Math.max(g[M],y[M]),A[T]=Math.min(0,y[T]+b[1-C]),A}return p.x=v[0],p.y=v[1],this.group.getBoundingRect()},n.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},n.type="legend.plain",n}(ui);function Dz(r,n,t,o){I1(r,n,t,o),t.dispatchAction({type:"legendToggleSelect",name:r??n}),$y(r,n,t,o)}function Mz(r){for(var t,n=r.getZr().storage.getDisplayList(),o=0,l=n.length;ol[u],S=[-b.x,-b.y];o||(S[c]=g[m]);var M=[0,0],T=[-x.x,-x.y],A=Dt(t.get("pageButtonGap",!0),t.get("itemGap",!0));C&&("end"===t.get("pageButtonPosition",!0)?T[c]+=l[u]-x[u]:M[c]+=x[u]+A),T[1-c]+=b[h]/2-x[h]/2,g.setPosition(S),v.setPosition(M),y.setPosition(T);var L={x:0,y:0};if(L[u]=C?l[u]:b[u],L[h]=Math.max(b[h],x[h]),L[p]=Math.min(0,x[p]+T[1-c]),v.__rectSize=l[u],C){var R={x:0,y:0};R[u]=Math.max(l[u]-x[u]-A,0),R[h]=L[h],v.setClipPath(new an({shape:R})),v.__rectSize=R[u]}else y.eachChild(function(H){H.attr({invisible:!0,silent:!0})});var B=this._getPageInfo(t);return null!=B.pageIndex&&un(g,{x:B.contentPosition[0],y:B.contentPosition[1]},C?t:null),this._updatePageInfoView(t,B),L},n.prototype._pageGo=function(t,o,l){var c=this._getPageInfo(o)[t];null!=c&&l.dispatchAction({type:"legendScroll",scrollDataIndex:c,legendId:o.id})},n.prototype._updatePageInfoView=function(t,o){var l=this._controllerGroup;U(["pagePrev","pageNext"],function(g){var y=null!=o[g+"DataIndex"],b=l.childOfName(g);b&&(b.setStyle("fill",t.get(y?"pageIconColor":"pageIconInactiveColor",!0)),b.cursor=y?"pointer":"default")});var c=l.childOfName("pageText"),u=t.get("pageFormatter"),h=o.pageIndex,p=null!=h?h+1:0,m=o.pageCount;c&&u&&c.setStyle("text",Le(u)?u.replace("{current}",null==p?"":p+"").replace("{total}",null==m?"":m+""):u({current:p,total:m}))},n.prototype._getPageInfo=function(t){var o=t.get("scrollDataIndex",!0),l=this.getContentGroup(),c=this._containerGroup.__rectSize,u=t.getOrient().index,h=KI[u],p=P1[u],m=this._findTargetItemIndex(o),g=l.children(),v=g[m],y=g.length,b=y?1:0,x={contentPosition:[l.x,l.y],pageCount:b,pageIndex:b-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!v)return x;var C=E(v);x.contentPosition[u]=-C.s;for(var S=m+1,M=C,T=C,A=null;S<=y;++S)(!(A=E(g[S]))&&T.e>M.s+c||A&&!L(A,M.s))&&(M=T.i>M.i?T:A)&&(null==x.pageNextDataIndex&&(x.pageNextDataIndex=M.i),++x.pageCount),T=A;for(S=m-1,M=C,T=C,A=null;S>=-1;--S)(!(A=E(g[S]))||!L(T,A.s))&&M.i=B&&R.s<=B+c}},n.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild(function(u,h){var p=u.__legendDataIndex;null==c&&null!=p&&(c=h),p===t&&(o=h)}),o??c):0;var o,c},n.type="legend.scroll",n}(Wy);const MY=DY;function Ez(r){Nt(Tz),r.registerComponentModel(SY),r.registerComponentView(MY),function kz(r){r.registerAction("legendScroll","legendscroll",function(n,t){var o=n.scrollDataIndex;null!=o&&t.eachComponent({mainType:"legend",subType:"scroll",query:n},function(l){l.setScrollDataIndex(o)})})}(r)}var ug=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="dataZoom.inside",n.defaultOption=$d(u1.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),n}(u1);const hg=ug;var Cl=cn();function $r(r,n,t){Cl(r).coordSysRecordMap.each(function(o){var l=o.dataZoomInfoMap.get(n.uid);l&&(l.getRange=t)})}function Iz(r,n){if(n){r.removeKey(n.model.uid);var t=n.controller;t&&t.dispose()}}function kY(r,n){r.isDisposed()||r.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:n})}function EY(r,n,t,o){return r.coordinateSystem.containPoint([t,o])}var RY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="dataZoom.inside",t}return le(n,r),n.prototype.render=function(t,o,l){r.prototype.render.apply(this,arguments),t.noTarget()?this._clear():(this.range=t.getPercentRange(),$r(l,t,{pan:Ne(QI.pan,this),zoom:Ne(QI.zoom,this),scrollMove:Ne(QI.scrollMove,this)}))},n.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},n.prototype._clear=function(){(function TY(r,n){for(var t=Cl(r).coordSysRecordMap,o=t.keys(),l=0;l0?h.pixelStart+h.pixelLength-h.pixel:h.pixel-h.pixelStart)/h.pixelLength*(c[1]-c[0])+c[0],m=Math.max(1/o.scale,0);c[0]=(c[0]-p)*m+p,c[1]=(c[1]-p)*m+p;var g=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();if(jm(0,c,[0,100],0,g.minSpan,g.maxSpan),this.range=c,l[0]!==c[0]||l[1]!==c[1])return c}},pan:Pz(function(r,n,t,o,l,c){var u=JI[o]([c.oldX,c.oldY],[c.newX,c.newY],n,l,t);return u.signal*(r[1]-r[0])*u.pixel/u.pixelLength}),scrollMove:Pz(function(r,n,t,o,l,c){return JI[o]([0,0],[c.scrollDelta,c.scrollDelta],n,l,t).signal*(r[1]-r[0])*c.scrollDelta})};function Pz(r){return function(n,t,o,l){var c=this.range,u=c.slice(),h=n.axisModels[0];if(h&&(jm(r(u,h,n,t,o,l),u,[0,100],"all"),this.range=u,c[0]!==u[0]||c[1]!==u[1]))return u}}var JI={grid:function(r,n,t,o,l){var c=t.axis,u={},h=l.model.coordinateSystem.getRect();return r=r||[0,0],"x"===c.dim?(u.pixel=n[0]-r[0],u.pixelLength=h.width,u.pixelStart=h.x,u.signal=c.inverse?1:-1):(u.pixel=n[1]-r[1],u.pixelLength=h.height,u.pixelStart=h.y,u.signal=c.inverse?-1:1),u},polar:function(r,n,t,o,l){var c=t.axis,u={},h=l.model.coordinateSystem,p=h.getRadiusAxis().getExtent(),m=h.getAngleAxis().getExtent();return r=r?h.pointToCoord(r):[0,0],n=h.pointToCoord(n),"radiusAxis"===t.mainType?(u.pixel=n[0]-r[0],u.pixelLength=p[1]-p[0],u.pixelStart=p[0],u.signal=c.inverse?1:-1):(u.pixel=n[1]-r[1],u.pixelLength=m[1]-m[0],u.pixelStart=m[0],u.signal=c.inverse?-1:1),u},singleAxis:function(r,n,t,o,l){var c=t.axis,u=l.model.coordinateSystem.getRect(),h={};return r=r||[0,0],"horizontal"===c.orient?(h.pixel=n[0]-r[0],h.pixelLength=u.width,h.pixelStart=u.x,h.signal=c.inverse?1:-1):(h.pixel=n[1]-r[1],h.pixelLength=u.height,h.pixelStart=u.y,h.signal=c.inverse?-1:1),h}};const OY=RY;function Rz(r){ag(r),r.registerComponentModel(hg),r.registerComponentView(OY),function PY(r){r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,function(n,t){var o=Cl(t),l=o.coordSysRecordMap||(o.coordSysRecordMap=$e());l.each(function(c){c.dataZoomInfoMap=null}),n.eachComponent({mainType:"dataZoom",subType:"inside"},function(c){U(JW(c).infoList,function(h){var p=h.model.uid,m=l.get(p)||l.set(p,function AY(r,n){var t={model:n,containsPoint:vt(EY,n),dispatchAction:vt(kY,r),dataZoomInfoMap:null,controller:null},o=t.controller=new Cu(r.getZr());return U(["pan","zoom","scrollMove"],function(l){o.on(l,function(c){var u=[];t.dataZoomInfoMap.each(function(h){if(c.isAvailableBehavior(h.model.option)){var p=(h.getRange||{})[l],m=p&&p(h.dzReferCoordSysInfo,t.model.mainType,t.controller,c);!h.model.get("disabled",!0)&&m&&u.push({dataZoomId:h.model.id,start:m[0],end:m[1]})}}),u.length&&t.dispatchAction(u)})}),t}(t,h.model));(m.dataZoomInfoMap||(m.dataZoomInfoMap=$e())).set(c.uid,{dzReferCoordSysInfo:h,model:c,getRange:null})})}),l.each(function(c){var h,u=c.controller,p=c.dataZoomInfoMap;if(p){var m=p.keys()[0];null!=m&&(h=p.get(m))}if(h){var g=function IY(r){var n,t="type_",o={type_true:2,type_move:1,type_false:0,type_undefined:-1},l=!0;return r.each(function(c){var u=c.model,h=!u.get("disabled",!0)&&(!u.get("zoomLock",!0)||"move");o[t+h]>o[t+n]&&(n=h),l=l&&u.get("preventDefaultMouseMove",!0)}),{controlType:n,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!l}}}(p);u.enable(g.controlType,g.opt),u.setPointerChecker(c.containsPoint),Zp(c,"dispatchAction",h.model.get("throttle",!0),"fixRate")}else Iz(l,c)})})}(r)}var LY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.type="dataZoom.slider",n.layoutMode="box",n.defaultOption=$d(u1.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),n}(u1);const FY=LY;var qy=an,fg="horizontal",Lz="vertical",tP=["line","bar","candlestick","scatter"],Fz={easing:"cubicOut",duration:100,delay:0},Nz=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._displayables={},t}return le(n,r),n.prototype.init=function(t,o){this.api=o,this._onBrush=Ne(this._onBrush,this),this._onBrushEnd=Ne(this._onBrushEnd,this)},n.prototype.render=function(t,o,l,c){if(r.prototype.render.apply(this,arguments),Zp(this,"_dispatchZoomAction",t.get("throttle"),"fixRate"),this._orient=t.getOrient(),!1!==t.get("show"))return t.noTarget()?(this._clear(),void this.group.removeAll()):((!c||"dataZoom"!==c.type||c.from!==this.uid)&&this._buildView(),void this._updateView());this.group.removeAll()},n.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},n.prototype._clear=function(){c_(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},n.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var o=this._displayables.sliderGroup=new ct;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(o),this._positionGroup()},n.prototype._resetLocation=function(){var t=this.dataZoomModel,o=this.api,c=t.get("brushSelect")?7:0,u=this._findCoordRect(),h={width:o.getWidth(),height:o.getHeight()},p=this._orient===fg?{right:h.width-u.x-u.width,top:h.height-30-7-c,width:u.width,height:30}:{right:7,top:u.y,width:30,height:u.height},m=qd(t.option);U(["right","top","width","height"],function(v){"ph"===m[v]&&(m[v]=p[v])});var g=cr(m,h);this._location={x:g.x,y:g.y},this._size=[g.width,g.height],this._orient===Lz&&this._size.reverse()},n.prototype._positionGroup=function(){var t=this.group,o=this._location,l=this._orient,c=this.dataZoomModel.getFirstTargetAxisModel(),u=c&&c.get("inverse"),h=this._displayables.sliderGroup,p=(this._dataShadowInfo||{}).otherAxisInverse;h.attr(l!==fg||u?l===fg&&u?{scaleY:p?1:-1,scaleX:-1}:l!==Lz||u?{scaleY:p?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:p?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:p?1:-1,scaleX:1});var m=t.getBoundingRect([h]);t.x=o.x-m.x,t.y=o.y-m.y,t.markRedraw()},n.prototype._getViewExtent=function(){return[0,this._size[0]]},n.prototype._renderBackground=function(){var t=this.dataZoomModel,o=this._size,l=this._displayables.sliderGroup,c=t.get("brushSelect");l.add(new qy({silent:!0,shape:{x:0,y:0,width:o[0],height:o[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var u=new qy({shape:{x:0,y:0,width:o[0],height:o[1]},style:{fill:"transparent"},z2:0,onclick:Ne(this._onClickPanel,this)}),h=this.api.getZr();c?(u.on("mousedown",this._onBrushStart,this),u.cursor="crosshair",h.on("mousemove",this._onBrush),h.on("mouseup",this._onBrushEnd)):(h.off("mousemove",this._onBrush),h.off("mouseup",this._onBrushEnd)),l.add(u)},n.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var o=this._size,l=this._shadowSize||[],c=t.series,u=c.getRawData(),h=c.getShadowDim&&c.getShadowDim(),p=h&&u.getDimensionInfo(h)?c.getShadowDim():t.otherDim;if(null!=p){var m=this._shadowPolygonPts,g=this._shadowPolylinePts;if(u!==this._shadowData||p!==this._shadowDim||o[0]!==l[0]||o[1]!==l[1]){var v=u.getDataExtent(p),y=.3*(v[1]-v[0]);v=[v[0]-y,v[1]+y];var E,b=[0,o[1]],C=[[o[0],0],[0,0]],S=[],M=o[0]/(u.count()-1),T=0,A=Math.round(u.count()/o[0]);u.each([p],function(G,j){if(A>0&&j%A)T+=M;else{var $=null==G||isNaN(G)||""===G,X=$?0:Ut(G,v,b,!0);$&&!E&&j?(C.push([C[C.length-1][0],0]),S.push([S[S.length-1][0],0])):!$&&E&&(C.push([T,0]),S.push([T,0])),C.push([T,X]),S.push([T,X]),T+=M,E=$}}),m=this._shadowPolygonPts=C,g=this._shadowPolylinePts=S}this._shadowData=u,this._shadowDim=p,this._shadowSize=[o[0],o[1]];for(var j,$,X,K,L=this.dataZoomModel,B=0;B<3;B++){var H=(j=void 0,$=void 0,void 0,void 0,j=L.getModel(1===B?"selectedDataBackground":"dataBackground"),$=new ct,X=new vo({shape:{points:m},segmentIgnoreThreshold:1,style:j.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),K=new _o({shape:{points:g},segmentIgnoreThreshold:1,style:j.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19}),$.add(X),$.add(K),$);this._displayables.sliderGroup.add(H),this._displayables.dataShadowSegs.push(H)}}}},n.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,o=t.get("showDataShadow");if(!1!==o){var l,c=this.ecModel;return t.eachTargetAxis(function(u,h){U(t.getAxisProxy(u,h).getTargetSeriesModels(),function(m){if(!(l||!0!==o&&Mt(tP,m.get("type"))<0)){var y,g=c.getComponent(Vu(u),h).axis,v=function VY(r){return{x:"y",y:"x",radius:"angle",angle:"radius"}[r]}(u),b=m.coordinateSystem;null!=v&&b.getOtherAxis&&(y=b.getOtherAxis(g).inverse),v=m.getData().mapDimension(v),l={thisAxis:g,series:m,thisDim:u,otherDim:v,otherAxisInverse:y}}},this)},this),l}},n.prototype._renderHandle=function(){var t=this.group,o=this._displayables,l=o.handles=[null,null],c=o.handleLabels=[null,null],u=this._displayables.sliderGroup,h=this._size,p=this.dataZoomModel,m=this.api,g=p.get("borderRadius")||0,v=p.get("brushSelect"),y=o.filler=new qy({silent:v,style:{fill:p.get("fillerColor")},textConfig:{position:"inside"}});u.add(y),u.add(new qy({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:h[0],height:h[1],r:g},style:{stroke:p.get("dataBackgroundColor")||p.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),U([0,1],function(A){var E=p.get("handleIcon");!Rw[E]&&E.indexOf("path://")<0&&E.indexOf("image://")<0&&(E="path://"+E);var L=Ui(E,-1,0,2,2,null,!0);L.attr({cursor:Bz(this._orient),draggable:!0,drift:Ne(this._onDragMove,this,A),ondragend:Ne(this._onDragEnd,this),onmouseover:Ne(this._showDataInfo,this,!0),onmouseout:Ne(this._showDataInfo,this,!1),z2:5});var R=L.getBoundingRect(),B=p.get("handleSize");this._handleHeight=Ie(B,this._size[1]),this._handleWidth=R.width/R.height*this._handleHeight,L.setStyle(p.getModel("handleStyle").getItemStyle()),L.style.strokeNoScale=!0,L.rectHover=!0,L.ensureState("emphasis").style=p.getModel(["emphasis","handleStyle"]).getItemStyle(),Ud(L);var H=p.get("handleColor");null!=H&&(L.style.fill=H),u.add(l[A]=L);var G=p.getModel("textStyle");t.add(c[A]=new dn({silent:!0,invisible:!0,style:Xn(G,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:G.getTextColor(),font:G.getFont()}),z2:10}))},this);var b=y;if(v){var x=Ie(p.get("moveHandleSize"),h[1]),C=o.moveHandle=new an({style:p.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:h[1]-.5,height:x}}),S=.8*x,M=o.moveHandleIcon=Ui(p.get("moveHandleIcon"),-S/2,-S/2,S,S,"#fff",!0);M.silent=!0,M.y=h[1]+x/2-.5,C.ensureState("emphasis").style=p.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var T=Math.min(h[1]/2,Math.max(x,10));(b=o.moveZone=new an({invisible:!0,shape:{y:h[1]-T,height:x+T}})).on("mouseover",function(){m.enterEmphasis(C)}).on("mouseout",function(){m.leaveEmphasis(C)}),u.add(C),u.add(M),u.add(b)}b.attr({draggable:!0,cursor:Bz(this._orient),drift:Ne(this._onDragMove,this,"all"),ondragstart:Ne(this._showDataInfo,this,!0),ondragend:Ne(this._onDragEnd,this),onmouseover:Ne(this._showDataInfo,this,!0),onmouseout:Ne(this._showDataInfo,this,!1)})},n.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),o=this._getViewExtent();this._handleEnds=[Ut(t[0],[0,100],o,!0),Ut(t[1],[0,100],o,!0)]},n.prototype._updateInterval=function(t,o){var l=this.dataZoomModel,c=this._handleEnds,u=this._getViewExtent(),h=l.findRepresentativeAxisProxy().getMinMaxSpan(),p=[0,100];jm(o,c,u,l.get("zoomLock")?"all":t,null!=h.minSpan?Ut(h.minSpan,p,u,!0):null,null!=h.maxSpan?Ut(h.maxSpan,p,u,!0):null);var m=this._range,g=this._range=fs([Ut(c[0],u,p,!0),Ut(c[1],u,p,!0)]);return!m||m[0]!==g[0]||m[1]!==g[1]},n.prototype._updateView=function(t){var o=this._displayables,l=this._handleEnds,c=fs(l.slice()),u=this._size;U([0,1],function(b){var C=this._handleHeight;o.handles[b].attr({scaleX:C/2,scaleY:C/2,x:l[b]+(b?-1:1),y:u[1]/2-C/2})},this),o.filler.setShape({x:c[0],y:0,width:c[1]-c[0],height:u[1]});var h={x:c[0],width:c[1]-c[0]};o.moveHandle&&(o.moveHandle.setShape(h),o.moveZone.setShape(h),o.moveZone.getBoundingRect(),o.moveHandleIcon&&o.moveHandleIcon.attr("x",h.x+h.width/2));for(var p=o.dataShadowSegs,m=[0,c[0],c[1],u[0]],g=0;go[0]||l[1]<0||l[1]>o[1])){var c=this._handleEnds,h=this._updateInterval("all",l[0]-(c[0]+c[1])/2);this._updateView(),h&&this._dispatchZoomAction(!1)}},n.prototype._onBrushStart=function(t){this._brushStart=new it(t.offsetX,t.offsetY),this._brushing=!0,this._brushStartTime=+new Date},n.prototype._onBrushEnd=function(t){if(this._brushing){var o=this._displayables.brushRect;if(this._brushing=!1,o){o.attr("ignore",!0);var l=o.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(l.width)<5)){var u=this._getViewExtent(),h=[0,100];this._range=fs([Ut(l.x,u,h,!0),Ut(l.x+l.width,u,h,!0)]),this._handleEnds=[l.x,l.x+l.width],this._updateView(),this._dispatchZoomAction(!1)}}}},n.prototype._onBrush=function(t){this._brushing&&(mn(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},n.prototype._updateBrushRect=function(t,o){var l=this._displayables,u=l.brushRect;u||(u=l.brushRect=new qy({silent:!0,style:this.dataZoomModel.getModel("brushStyle").getItemStyle()}),l.sliderGroup.add(u)),u.attr("ignore",!1);var h=this._brushStart,p=this._displayables.sliderGroup,m=p.transformCoordToLocal(t,o),g=p.transformCoordToLocal(h.x,h.y),v=this._size;m[0]=Math.max(Math.min(v[0],m[0]),0),u.setShape({x:g[0],y:0,width:m[0]-g[0],height:v[1]})},n.prototype._dispatchZoomAction=function(t){var o=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?Fz:null,start:o[0],end:o[1]})},n.prototype._findCoordRect=function(){var t,o=JW(this.dataZoomModel).infoList;if(!t&&o.length){var l=o[0].model.coordinateSystem;t=l.getRect&&l.getRect()}if(!t){var c=this.api.getWidth(),u=this.api.getHeight();t={x:.2*c,y:.2*u,width:.6*c,height:.6*u}}return t},n.type="dataZoom.slider",n}(aI);function Bz(r){return"vertical"===r?"ns-resize":"ew-resize"}const zY=Nz;function Vz(r){r.registerComponentModel(FY),r.registerComponentView(zY),ag(r)}var HY={get:function(r,n,t){var o=rt((nP[r]||{})[n]);return t&&be(o)?o[o.length-1]:o}},nP={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}};const GY=HY;var iP=_a.mapVisual,zz=_a.eachVisual,Zy=be,UY=U,yee=fs,Ky=Ut,jY=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.stateList=["inRange","outOfRange"],t.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],t.layoutMode={type:"box",ignoreSize:!0},t.dataBound=[-1/0,1/0],t.targetVisuals={},t.controllerVisuals={},t}return le(n,r),n.prototype.init=function(t,o,l){this.mergeDefaultAndTheme(t,l)},n.prototype.optionUpdated=function(t,o){!o&&P9(this.option,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},n.prototype.resetVisual=function(t){var o=this.stateList;t=Ne(t,this),this.controllerVisuals=tz(this.option.controller,o,t),this.targetVisuals=tz(this.option.target,o,t)},n.prototype.getItemSymbol=function(){return null},n.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,o=[];return null==t||"all"===t?this.ecModel.eachSeries(function(l,c){o.push(c)}):o=On(t),o},n.prototype.eachTargetSeries=function(t,o){U(this.getTargetSeriesIndices(),function(l){var c=this.ecModel.getSeriesByIndex(l);c&&t.call(o,c)},this)},n.prototype.isTargetSeries=function(t){var o=!1;return this.eachTargetSeries(function(l){l===t&&(o=!0)}),o},n.prototype.formatValueText=function(t,o,l){var m,c=this.option,u=c.precision,h=this.dataBound,p=c.formatter;l=l||["<",">"],be(t)&&(t=t.slice(),m=!0);var g=o?t:m?[v(t[0]),v(t[1])]:v(t);return Le(p)?p.replace("{value}",m?g[0]:g).replace("{value2}",m?g[1]:g):qe(p)?m?p(t[0],t[1]):p(t):m?t[0]===h[0]?l[0]+" "+g[1]:t[1]===h[1]?l[1]+" "+g[0]:g[0]+" - "+g[1]:g;function v(y){return y===h[0]?"min":y===h[1]?"max":(+y).toFixed(Math.min(u,20))}},n.prototype.resetExtent=function(){var t=this.option,o=yee([t.min,t.max]);this._dataExtent=o},n.prototype.getDataDimensionIndex=function(t){var o=this.option.dimension;if(null!=o)return t.getDimensionIndex(o);for(var l=t.dimensions,c=l.length-1;c>=0;c--){var h=t.getDimensionInfo(l[c]);if(!h.isCalculationCoord)return h.storeDimIndex}},n.prototype.getExtent=function(){return this._dataExtent.slice()},n.prototype.completeVisualOption=function(){var t=this.ecModel,o=this.option,l={inRange:o.inRange,outOfRange:o.outOfRange},c=o.target||(o.target={}),u=o.controller||(o.controller={});St(c,l),St(u,l);var h=this.isCategory();function p(v){Zy(o.color)&&!v.inRange&&(v.inRange={color:o.color.slice().reverse()}),v.inRange=v.inRange||{color:t.get("gradientColor")}}p.call(this,c),p.call(this,u),function m(v,y,b){var x=v[y],C=v[b];x&&!C&&(C=v[b]={},UY(x,function(S,M){if(_a.isValidType(M)){var T=GY.get(M,"inactive",h);null!=T&&(C[M]=T,"color"===M&&!C.hasOwnProperty("opacity")&&!C.hasOwnProperty("colorAlpha")&&(C.opacity=[0,0]))}}))}.call(this,c,"inRange","outOfRange"),function g(v){var y=(v.inRange||{}).symbol||(v.outOfRange||{}).symbol,b=(v.inRange||{}).symbolSize||(v.outOfRange||{}).symbolSize,x=this.get("inactiveColor"),S=this.getItemSymbol()||"roundRect";UY(this.stateList,function(M){var T=this.itemSize,A=v[M];A||(A=v[M]={color:h?x:[x]}),null==A.symbol&&(A.symbol=y&&rt(y)||(h?S:[S])),null==A.symbolSize&&(A.symbolSize=b&&rt(b)||(h?T[0]:[T[0],T[0]])),A.symbol=iP(A.symbol,function(R){return"none"===R?S:R});var E=A.symbolSize;if(null!=E){var L=-1/0;zz(E,function(R){R>L&&(L=R)}),A.symbolSize=iP(E,function(R){return Ky(R,[0,L],[0,T[0]],!0)})}},this)}.call(this,u)},n.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},n.prototype.isCategory=function(){return!!this.option.categories},n.prototype.setSelected=function(t){},n.prototype.getSelected=function(){return null},n.prototype.getValueState=function(t){return null},n.prototype.getVisualMeta=function(t){return null},n.type="visualMap",n.dependencies=["series"],n.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},n}(jt);const R1=jY;var Hz=[20,140],$Y=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.optionUpdated=function(t,o){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual(function(l){l.mappingMethod="linear",l.dataExtent=this.getExtent()}),this._resetRange()},n.prototype.resetItemSize=function(){r.prototype.resetItemSize.apply(this,arguments);var t=this.itemSize;(null==t[0]||isNaN(t[0]))&&(t[0]=Hz[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=Hz[1])},n.prototype._resetRange=function(){var t=this.getExtent(),o=this.option.range;!o||o.auto?(t.auto=1,this.option.range=t):be(o)&&(o[0]>o[1]&&o.reverse(),o[0]=Math.max(o[0],t[0]),o[1]=Math.min(o[1],t[1]))},n.prototype.completeVisualOption=function(){r.prototype.completeVisualOption.apply(this,arguments),U(this.stateList,function(t){var o=this.option.controller[t].symbolSize;o&&o[0]!==o[1]&&(o[0]=o[1]/3)},this)},n.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},n.prototype.getSelected=function(){var t=this.getExtent(),o=fs((this.get("range")||[]).slice());return o[0]>t[1]&&(o[0]=t[1]),o[1]>t[1]&&(o[1]=t[1]),o[0]=l[1]||t<=o[1])?"inRange":"outOfRange"},n.prototype.findTargetDataIndices=function(t){var o=[];return this.eachTargetSeries(function(l){var c=[],u=l.getData();u.each(this.getDataDimensionIndex(u),function(h,p){t[0]<=h&&h<=t[1]&&c.push(p)},this),o.push({seriesId:l.id,dataIndex:c})},this),o},n.prototype.getVisualMeta=function(t){var o=Gz(0,0,this.getExtent()),l=Gz(0,0,this.option.range.slice()),c=[];function u(b,x){c.push({value:b,color:t(b,x)})}for(var h=0,p=0,m=l.length,g=o.length;pt[1])break;c.push({color:this.getControllerVisual(p,"color",o),offset:h/100})}return c.push({color:this.getControllerVisual(t[1],"color",o),offset:1}),c},n.prototype._createBarPoints=function(t,o){var l=this.visualMapModel.itemSize;return[[l[0]-o[0],t[0]],[l[0],t[0]],[l[0],t[1]],[l[0]-o[1],t[1]]]},n.prototype._createBarGroup=function(t){var o=this._orient,l=this.visualMapModel.get("inverse");return new ct("horizontal"!==o||l?"horizontal"===o&&l?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==o||l?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},n.prototype._updateHandle=function(t,o){if(this._useHandle){var l=this._shapes,c=this.visualMapModel,u=l.handleThumbs,h=l.handleLabels,p=c.itemSize,m=c.getExtent();qY([0,1],function(g){var v=u[g];v.setStyle("fill",o.handlesColor[g]),v.y=t[g];var y=bc(t[g],[0,p[1]],m,!0),b=this.getControllerVisual(y,"symbolSize");v.scaleX=v.scaleY=b/p[0],v.x=p[0]-b/2;var x=sl(l.handleLabelPoints[g],Wc(v,this.group));h[g].setStyle({x:x[0],y:x[1],text:c.formatValueText(this._dataInterval[g]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",l.mainGroup):"center"})},this)}},n.prototype._showIndicator=function(t,o,l,c){var u=this.visualMapModel,h=u.getExtent(),p=u.itemSize,m=[0,p[1]],g=this._shapes,v=g.indicator;if(v){v.attr("invisible",!1);var b=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),x=this.getControllerVisual(t,"symbolSize"),C=bc(t,h,m,!0),S=p[0]-x/2,M={x:v.x,y:v.y};v.y=C,v.x=S;var T=sl(g.indicatorLabelPoint,Wc(v,this.group)),A=g.indicatorLabel;A.attr("invisible",!1);var E=this._applyTransform("left",g.mainGroup),R="horizontal"===this._orient;A.setStyle({text:(l||"")+u.formatValueText(o),verticalAlign:R?E:"middle",align:R?"center":E});var B={x:S,y:C,style:{fill:b}},H={style:{x:T[0],y:T[1]}};if(u.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var G={duration:100,easing:"cubicInOut",additive:!0};v.x=M.x,v.y=M.y,v.animateTo(B,G),A.animateTo(H,G)}else v.attr(B),A.attr(H);this._firstShowIndicator=!1;var j=this._shapes.handleLabels;if(j)for(var $=0;$u[1]&&(v[1]=1/0),o&&(v[0]===-1/0?this._showIndicator(g,v[1],"< ",p):v[1]===1/0?this._showIndicator(g,v[0],"> ",p):this._showIndicator(g,g,"\u2248 ",p));var y=this._hoverLinkDataIndices,b=[];(o||qz(l))&&(b=this._hoverLinkDataIndices=l.findTargetDataIndices(v));var x=function pZ(r,n){var t={},o={};return l(r||[],t),l(n||[],o,t),[c(t),c(o)];function l(u,h,p){for(var m=0,g=u.length;m=0&&(c.dimension=u,o.push(c))}}),r.getData().setVisual("visualMeta",o)}}];function tq(r,n,t,o){for(var l=n.targetVisuals[o],c=_a.prepareVisualTypes(l),u={color:u_(r.getData(),"color")},h=0,p=c.length;h0:n.splitNumber>0)&&!n.calculable?"piecewise":"continuous"}),r.registerAction(eq,vi),U(bee,function(n){r.registerVisual(r.PRIORITY.VISUAL.COMPONENT,n)}),r.registerPreprocessor(iq))}function aP(r){r.registerComponentModel(WY),r.registerComponentView(JY),rq(r)}var pg=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._pieceList=[],t}return le(n,r),n.prototype.optionUpdated=function(t,o){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var l=this._mode=this._determineMode();this._pieceList=[],Kz[this._mode].call(this,this._pieceList),this._resetSelected(t,o);var c=this.option.categories;this.resetVisual(function(u,h){"categories"===l?(u.mappingMethod="category",u.categories=rt(c)):(u.dataExtent=this.getExtent(),u.mappingMethod="piecewise",u.pieceList=xe(this._pieceList,function(p){return p=rt(p),"inRange"!==h&&(p.visual=null),p}))})},n.prototype.completeVisualOption=function(){var t=this.option,o={},l=_a.listVisualTypes(),c=this.isCategory();function u(h,p,m){return h&&h[p]&&h[p].hasOwnProperty(m)}U(t.pieces,function(h){U(l,function(p){h.hasOwnProperty(p)&&(o[p]=1)})}),U(o,function(h,p){var m=!1;U(this.stateList,function(g){m=m||u(t,g,p)||u(t.target,g,p)},this),!m&&U(this.stateList,function(g){(t[g]||(t[g]={}))[p]=GY.get(p,"inRange"===g?"active":"inactive",c)})},this),r.prototype.completeVisualOption.apply(this,arguments)},n.prototype._resetSelected=function(t,o){var l=this.option,c=this._pieceList,u=(o?l:t).selected||{};if(l.selected=u,U(c,function(p,m){var g=this.getSelectedMapKey(p);u.hasOwnProperty(g)||(u[g]=!0)},this),"single"===l.selectedMode){var h=!1;U(c,function(p,m){var g=this.getSelectedMapKey(p);u[g]&&(h?u[g]=!1:h=!0)},this)}},n.prototype.getItemSymbol=function(){return this.get("itemSymbol")},n.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},n.prototype.getPieceList=function(){return this._pieceList},n.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},n.prototype.setSelected=function(t){this.option.selected=rt(t)},n.prototype.getValueState=function(t){var o=_a.findPieceIndex(t,this._pieceList);return null!=o&&this.option.selected[this.getSelectedMapKey(this._pieceList[o])]?"inRange":"outOfRange"},n.prototype.findTargetDataIndices=function(t){var o=[],l=this._pieceList;return this.eachTargetSeries(function(c){var u=[],h=c.getData();h.each(this.getDataDimensionIndex(h),function(p,m){_a.findPieceIndex(p,l)===t&&u.push(m)},this),o.push({seriesId:c.id,dataIndex:u})},this),o},n.prototype.getRepresentValue=function(t){var o;if(this.isCategory())o=t.value;else if(null!=t.value)o=t.value;else{var l=t.interval||[];o=l[0]===-1/0&&l[1]===1/0?0:(l[0]+l[1])/2}return o},n.prototype.getVisualMeta=function(t){if(!this.isCategory()){var o=[],l=["",""],c=this,h=this._pieceList.slice();if(h.length){var p=h[0].interval[0];p!==-1/0&&h.unshift({interval:[-1/0,p]}),(p=h[h.length-1].interval[1])!==1/0&&h.push({interval:[p,1/0]})}else h.push({interval:[-1/0,1/0]});var m=-1/0;return U(h,function(g){var v=g.interval;v&&(v[0]>m&&u([m,v[0]],"outOfRange"),u(v.slice()),m=v[1])},this),{stops:o,outerColors:l}}function u(g,v){var y=c.getRepresentValue({interval:g});v||(v=c.getValueState(y));var b=t(y,v);g[0]===-1/0?l[0]=b:g[1]===1/0?l[1]=b:o.push({value:g[0],color:b},{value:g[1],color:b})}},n.type="visualMap.piecewise",n.defaultOption=$d(R1.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),n}(R1),Kz={splitNumber:function(r){var n=this.option,t=Math.min(n.precision,20),o=this.getExtent(),l=n.splitNumber;l=Math.max(parseInt(l,10),1),n.splitNumber=l;for(var c=(o[1]-o[0])/l;+c.toFixed(t)!==c&&t<5;)t++;n.precision=t,c=+c.toFixed(t),n.minOpen&&r.push({interval:[-1/0,o[0]],close:[0,0]});for(var u=0,h=o[0];u","\u2265"][o[0]]])},this)}};function Qz(r,n){var t=r.inverse;("vertical"===r.orient?!t:t)&&n.reverse()}const Jz=pg;var L1=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return le(n,r),n.prototype.doRender=function(){var t=this.group;t.removeAll();var o=this.visualMapModel,l=o.get("textGap"),c=o.textStyleModel,u=c.getFont(),h=c.getTextColor(),p=this._getItemAlign(),m=o.itemSize,g=this._getViewData(),v=g.endsText,y=Vi(o.get("showLabel",!0),!v);v&&this._renderEndsText(t,v[0],m,y,p),U(g.viewPieceList,function(b){var x=b.piece,C=new ct;C.onclick=Ne(this._onItemClick,this,x),this._enableHoverLink(C,b.indexInModelPieceList);var S=o.getRepresentValue(x);if(this._createItemSymbol(C,S,[0,0,m[0],m[1]]),y){var M=this.visualMapModel.getValueState(S);C.add(new dn({style:{x:"right"===p?-l:m[0]+l,y:m[1]/2,text:x.text,verticalAlign:"middle",align:p,font:u,fill:h,opacity:"outOfRange"===M?.5:1}}))}t.add(C)},this),v&&this._renderEndsText(t,v[1],m,y,p),Vh(o.get("orient"),t,o.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},n.prototype._enableHoverLink=function(t,o){var l=this;t.on("mouseover",function(){return c("highlight")}).on("mouseout",function(){return c("downplay")});var c=function(u){var h=l.visualMapModel;h.option.hoverLink&&l.api.dispatchAction({type:u,batch:O1(h.findTargetDataIndices(o),h)})}},n.prototype._getItemAlign=function(){var t=this.visualMapModel,o=t.option;if("vertical"===o.orient)return $z(t,this.api,t.itemSize);var l=o.align;return(!l||"auto"===l)&&(l="left"),l},n.prototype._renderEndsText=function(t,o,l,c,u){if(o){var h=new ct;h.add(new dn({style:Xn(this.visualMapModel.textStyleModel,{x:c?"right"===u?l[0]:0:l[0]/2,y:l[1]/2,verticalAlign:"middle",align:c?u:"center",text:o})})),t.add(h)}},n.prototype._getViewData=function(){var t=this.visualMapModel,o=xe(t.getPieceList(),function(h,p){return{piece:h,indexInModelPieceList:p}}),l=t.get("text"),c=t.get("orient"),u=t.get("inverse");return("horizontal"===c?u:!u)?o.reverse():l&&(l=l.slice().reverse()),{viewPieceList:o,endsText:l}},n.prototype._createItemSymbol=function(t,o,l){t.add(Ui(this.getControllerVisual(o,"symbol"),l[0],l[1],l[2],l[3],this.getControllerVisual(o,"color")))},n.prototype._onItemClick=function(t){var o=this.visualMapModel,l=o.option,c=l.selectedMode;if(c){var u=rt(l.selected),h=o.getSelectedMapKey(t);"single"===c||!0===c?(u[h]=!0,U(u,function(p,m){u[m]=m===h})):u[h]=!u[h],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:u})}},n.type="visualMap.piecewise",n}(Uz);const e4=L1;function oP(r){r.registerComponentModel(Jz),r.registerComponentView(e4),rq(r)}var F1={label:{enabled:!0},decal:{show:!1}},oq=cn(),wee={};function xee(r,n){var t=r.getModel("aria");if(t.get("enabled")){var o=rt(F1);St(o.label,r.getLocaleModel().get("aria"),!1),St(t.option,o,!1),function l(){if(t.getModel("decal").get("show")){var v=$e();r.eachSeries(function(y){if(!y.isColorBySeries()){var b=v.get(y.type);b||v.set(y.type,b={}),oq(y).scope=b}}),r.eachRawSeries(function(y){if(!r.isSeriesFiltered(y))if(qe(y.enableAriaDecal))y.enableAriaDecal();else{var b=y.getData();if(y.isColorBySeries()){var T=Z0(y.ecModel,y.name,wee,r.getSeriesCount()),A=b.getVisual("decal");b.setVisual("decal",E(A,T))}else{var x=y.getRawData(),C={},S=oq(y).scope;b.each(function(L){var R=b.getRawIndex(L);C[R]=L});var M=x.count();x.each(function(L){var R=C[L],B=x.getName(L)||L+"",H=Z0(y.ecModel,B,S,M),G=b.getItemVisual(R,"decal");b.setItemVisual(R,"decal",E(G,H))})}}function E(L,R){var B=L?ge(ge({},R),L):R;return B.dirty=!0,B}})}}(),function c(){var m=r.getLocaleModel().get("aria"),g=t.getModel("label");if(g.option=Ye(g.option,m),g.get("enabled")){var v=n.getZr().dom;if(g.get("description"))return void v.setAttribute("aria-label",g.get("description"));var S,y=r.getSeriesCount(),b=g.get(["data","maxCount"])||10,x=g.get(["series","maxCount"])||10,C=Math.min(y,x);if(!(y<1)){var M=function h(){var m=r.get("title");return m&&m.length&&(m=m[0]),m&&m.text}();S=M?u(g.get(["general","withTitle"]),{title:M}):g.get(["general","withoutTitle"]);var A=[];S+=u(g.get(y>1?["series","multiple","prefix"]:["series","single","prefix"]),{seriesCount:y}),r.eachSeries(function(H,G){if(G1?["series","multiple",X]:["series","single",X]),{seriesId:H.seriesIndex,seriesName:H.get("name"),seriesType:p(H.subType)});var K=H.getData();K.count()>b?j+=u(g.get(["data","partialData"]),{displayCnt:b}):j+=g.get(["data","allData"]);for(var ne=g.get(["data","separator","middle"]),ie=g.get(["data","separator","end"]),de=[],ce=0;ce":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},n4=function(){function r(n){null==(this._condVal=Le(n)?new RegExp(n):Sb(n)?n:null)&&Sn("")}return r.prototype.evaluate=function(n){var t=typeof n;return Le(t)?this._condVal.test(n):!!ln(t)&&this._condVal.test(n+"")},r}(),sq=function(){function r(){}return r.prototype.evaluate=function(){return this.value},r}(),r4=function(){function r(){}return r.prototype.evaluate=function(){for(var n=this.children,t=0;t2&&o.push(l),l=[K,ee]}function g(K,ee,ne,ie){gg(K,ne)&&gg(ee,ie)||l.push(K,ee,ne,ie,ne,ie)}for(var y,b,x,C,S=0;SH:$2&&o.push(l),o}function dP(r,n,t,o,l,c,u,h,p,m){if(gg(r,t)&&gg(n,o)&&gg(l,u)&&gg(c,h))p.push(u,h);else{var g=2/m,v=g*g,y=u-r,b=h-n,x=Math.sqrt(y*y+b*b);y/=x,b/=x;var C=t-r,S=o-n,M=l-u,T=c-h,A=C*C+S*S,E=M*M+T*T;if(A=0&&E-R*R=0)p.push(u,h);else{var G=[],j=[];dh(r,t,l,u,.5,G),dh(n,o,c,h,.5,j),dP(G[0],j[0],G[1],j[1],G[2],j[2],G[3],j[3],p,m),dP(G[4],j[4],G[5],j[5],G[6],j[6],G[7],j[7],p,m)}}}}function c4(r,n,t){var c=Math.abs(r[n]/r[1-n]),u=Math.ceil(Math.sqrt(c*t)),h=Math.floor(t/u);0===h&&(h=1,u=t);for(var p=[],m=0;m0)for(m=0;mMath.abs(m),v=c4([p,m],g?0:1,n),y=(g?h:m)/v.length,b=0;b1?null:new it(C*p+r,C*m+n)}function u4(r,n,t){var o=new it;it.sub(o,t,n),o.normalize();var l=new it;return it.sub(l,r,n),l.dot(o)}function vg(r,n){var t=r[r.length-1];t&&t[0]===n[0]&&t[1]===n[1]||r.push(n)}function vq(r){var n=r.points,t=[],o=[];g0(n,t,o);var l=new lt(t[0],t[1],o[0]-t[0],o[1]-t[1]),c=l.width,u=l.height,h=l.x,p=l.y,m=new it,g=new it;return c>u?(m.x=g.x=h+c/2,m.y=p,g.y=p+u):(m.y=g.y=p+u/2,m.x=h,g.x=h+c),function gq(r,n,t){for(var o=r.length,l=[],c=0;c0)for(var L=o/t,R=-o/2;R<=o/2;R+=L){var B=Math.sin(R),H=Math.cos(R),G=0;for(A=0;A0;m/=2){var g=0,v=0;(r&m)>0&&(g=1),(n&m)>0&&(v=1),h+=m*m*(3*g^v),0===v&&(1===g&&(r=m-1-r,n=m-1-n),p=r,r=n,n=p)}return h}function H1(r){var n=1/0,t=1/0,o=-1/0,l=-1/0,c=xe(r,function(h){var p=h.getBoundingRect(),m=h.getComputedTransform(),g=p.x+p.width/2+(m?m[4]:0),v=p.y+p.height/2+(m?m[5]:0);return n=Math.min(g,n),t=Math.min(v,t),o=Math.max(g,o),l=Math.max(v,l),[g,v]});return xe(c,function(h,p){return{cp:h,z:Mq(h[0],h[1],n,t,o,l),path:r[p]}}).sort(function(h,p){return h.z-p.z}).map(function(h){return h.path})}function p4(r){return function wq(r,n){var l,t=[],o=r.shape;switch(r.type){case"rect":(function mq(r,n,t){for(var o=r.width,l=r.height,c=o>l,u=c4([o,l],c?0:1,n),h=c?"width":"height",p=c?"height":"width",m=c?"x":"y",g=c?"y":"x",v=r[h]/u.length,y=0;y=0;l--)if(!t[l].many.length){var p=t[h].many;if(p.length<=1){if(!h)return t;h=0}c=p.length;var m=Math.ceil(c/2);t[l].many=p.slice(m,c),t[h].many=p.slice(0,m),h++}return t}var Aq={clone:function(r){for(var n=[],t=1-Math.pow(1-r.path.style.opacity,1/r.count),o=0;o0){var m,g,h=o.getModel("universalTransition").get("delay"),p=Object.assign({setToFinal:!0},u);m4(r)&&(m=r,g=n),m4(n)&&(m=n,g=r);for(var y=m?m===r:r.length>n.length,b=m?g4(g,m):g4(y?n:r,[y?r:n]),x=0,C=0;C1e4))for(var l=o.getIndices(),c=function Eq(r){for(var n=r.dimensions,t=0;t0&&E.group.traverse(function(R){R instanceof Vt&&!R.animators.length&&R.animateFrom({style:{opacity:0}},L)})})}function Rq(r){return r.getModel("universalTransition").get("seriesKey")||r.id}function Oq(r){return be(r)?r.sort().join(","):r}function Cd(r){if(r.hostModel)return r.hostModel.getModel("universalTransition").get("divideShape")}function bg(r,n){for(var t=0;t=0&&l.push({dataGroupId:n.oldDataGroupIds[h],data:n.oldData[h],divide:Cd(n.oldData[h]),dim:u.dimension})}),U(On(r.to),function(u){var h=bg(t.updatedSeries,u);if(h>=0){var p=t.updatedSeries[h].getData();c.push({dataGroupId:n.oldDataGroupIds[h],data:p,divide:Cd(p),dim:u.dimension})}}),l.length>0&&c.length>0&&Pq(l,c,o)}(b,l,o,t)});else{var u=function Lq(r,n){var t=$e(),o=$e(),l=$e();return U(r.oldSeries,function(u,h){var p=r.oldDataGroupIds[h],m=r.oldData[h],g=Rq(u),v=Oq(g);o.set(v,{dataGroupId:p,data:m}),be(g)&&U(g,function(y){l.set(y,{key:v,dataGroupId:p,data:m})})}),U(n.updatedSeries,function(u){if(u.isUniversalTransitionEnabled()&&u.isAnimationEnabled()){var h=u.get("dataGroupId"),p=u.getData(),m=Rq(u),g=Oq(m),v=o.get(g);if(v)t.set(g,{oldSeries:[{dataGroupId:v.dataGroupId,divide:Cd(v.data),data:v.data}],newSeries:[{dataGroupId:h,divide:Cd(p),data:p}]});else if(be(m)){var y=[];U(m,function(C){var S=o.get(C);S.data&&y.push({dataGroupId:S.dataGroupId,divide:Cd(S.data),data:S.data})}),y.length&&t.set(g,{oldSeries:y,newSeries:[{dataGroupId:h,data:p,divide:Cd(p)}]})}else{var b=l.get(m);if(b){var x=t.get(b.key);x||(x={oldSeries:[{dataGroupId:b.dataGroupId,data:b.data,divide:Cd(b.data)}],newSeries:[]},t.set(b.key,x)),x.newSeries.push({dataGroupId:h,data:p,divide:Cd(p)})}}}}),t}(l,o);U(u.keys(),function(b){var x=u.get(b);Pq(x.oldSeries,x.newSeries,t)})}U(o.updatedSeries,function(b){b[cw]&&(b[cw]=!1)})}for(var h=n.getSeries(),p=l.oldSeries=[],m=l.oldDataGroupIds=[],g=l.oldData=[],v=0;v=200&&Ct.status<=299}function ro(_i){try{_i.dispatchEvent(new MouseEvent("click"))}catch{var Ct=document.createEvent("MouseEvents");Ct.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),_i.dispatchEvent(Ct)}}var js=ia.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),xt=ia.saveAs||("object"!=typeof window||window!==ia?function(){}:"download"in HTMLAnchorElement.prototype&&!js?function(Ct,Di,gi){var li=ia.URL||ia.webkitURL,vr=document.createElement("a");vr.download=Di=Di||Ct.name||"download",vr.rel="noopener","string"==typeof Ct?(vr.href=Ct,vr.origin!==location.origin?is(vr.href)?Wt(Ct,Di,gi):ro(vr,vr.target="_blank"):ro(vr)):(vr.href=li.createObjectURL(Ct),setTimeout(function(){li.revokeObjectURL(vr.href)},4e4),setTimeout(function(){ro(vr)},0))}:"msSaveOrOpenBlob"in navigator?function(Ct,Di,gi){if(Di=Di||Ct.name||"download","string"==typeof Ct)if(is(Ct))Wt(Ct,Di,gi);else{var li=document.createElement("a");li.href=Ct,li.target="_blank",setTimeout(function(){ro(li)})}else navigator.msSaveOrOpenBlob(function kn(_i,Ct){return typeof Ct>"u"?Ct={autoBom:!1}:"object"!=typeof Ct&&(console.warn("Deprecated: Expected third argument to be a object"),Ct={autoBom:!Ct}),Ct.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(_i.type)?new Blob([String.fromCharCode(65279),_i],{type:_i.type}):_i}(Ct,gi),Di)}:function(Ct,Di,gi,li){if((li=li||open("","_blank"))&&(li.document.title=li.document.body.innerText="downloading..."),"string"==typeof Ct)return Wt(Ct,Di,gi);var vr="application/octet-stream"===Ct.type,Dd=/constructor/i.test(ia.HTMLElement)||ia.safari,tp=/CriOS\/[\d]+/.test(navigator.userAgent);if((tp||vr&&Dd||js)&&typeof FileReader<"u"){var le=new FileReader;le.onloadend=function(){var rs=le.result;rs=tp?rs:rs.replace(/^data:[^;]*;/,"data:attachment/file;"),li?li.location.href=rs:location=rs,li=null},le.readAsDataURL(Ct)}else{var Og=ia.URL||ia.webkitURL,np=Og.createObjectURL(Ct);li?li.location=np:location.href=np,li=null,setTimeout(function(){Og.revokeObjectURL(np)},4e4)}});ia.saveAs=xt.saveAs=xt,ep.exports=xt}},ep=>{ep(ep.s=260)}]); \ No newline at end of file +(self.webpackChunkuds=self.webpackChunkuds||[]).push([[179],{513:(ep,ta,En)=>{"use strict";function $t(i){return"function"==typeof i}function Qo(i){const e=i(o=>{Error.call(o),o.stack=(new Error).stack});return e.prototype=Object.create(Error.prototype),e.prototype.constructor=e,e}const no=Qo(i=>function(e){i(this),this.message=e?`${e.length} errors occurred during unsubscription:\n${e.map((o,d)=>`${d+1}) ${o.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=e});function Bs(i,a){if(i){const e=i.indexOf(a);0<=e&&i.splice(e,1)}}class xt{constructor(a){this.initialTeardown=a,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let a;if(!this.closed){this.closed=!0;const{_parentage:e}=this;if(e)if(this._parentage=null,Array.isArray(e))for(const h of e)h.remove(this);else e.remove(this);const{initialTeardown:o}=this;if($t(o))try{o()}catch(h){a=h instanceof no?h.errors:[h]}const{_finalizers:d}=this;if(d){this._finalizers=null;for(const h of d)try{Di(h)}catch(_){a=a??[],_ instanceof no?a=[...a,..._.errors]:a.push(_)}}if(a)throw new no(a)}}add(a){var e;if(a&&a!==this)if(this.closed)Di(a);else{if(a instanceof xt){if(a.closed||a._hasParent(this))return;a._addParent(this)}(this._finalizers=null!==(e=this._finalizers)&&void 0!==e?e:[]).push(a)}}_hasParent(a){const{_parentage:e}=this;return e===a||Array.isArray(e)&&e.includes(a)}_addParent(a){const{_parentage:e}=this;this._parentage=Array.isArray(e)?(e.push(a),e):e?[e,a]:a}_removeParent(a){const{_parentage:e}=this;e===a?this._parentage=null:Array.isArray(e)&&Bs(e,a)}remove(a){const{_finalizers:e}=this;e&&Bs(e,a),a instanceof xt&&a._removeParent(this)}}xt.EMPTY=(()=>{const i=new xt;return i.closed=!0,i})();const vi=xt.EMPTY;function Tt(i){return i instanceof xt||i&&"closed"in i&&$t(i.remove)&&$t(i.add)&&$t(i.unsubscribe)}function Di(i){$t(i)?i():i.unsubscribe()}const pi={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1},oi={setTimeout(i,a,...e){const{delegate:o}=oi;return null!=o&&o.setTimeout?o.setTimeout(i,a,...e):setTimeout(i,a,...e)},clearTimeout(i){const{delegate:a}=oi;return((null==a?void 0:a.clearTimeout)||clearTimeout)(i)},delegate:void 0};function gr(i){oi.setTimeout(()=>{const{onUnhandledError:a}=pi;if(!a)throw i;a(i)})}function Td(){}const tp=np("C",void 0,void 0);function np(i,a,e){return{kind:i,value:a,error:e}}let Jo=null;function U1(i){if(pi.useDeprecatedSynchronousErrorHandling){const a=!Jo;if(a&&(Jo={errorThrown:!1,error:null}),i(),a){const{errorThrown:e,error:o}=Jo;if(Jo=null,e)throw o}}else i()}class SI extends xt{constructor(a){super(),this.isStopped=!1,a?(this.destination=a,Tt(a)&&a.add(this)):this.destination=Dq}static create(a,e,o){return new Zu(a,e,o)}next(a){this.isStopped?DI(function Fg(i){return np("N",i,void 0)}(a),this):this._next(a)}error(a){this.isStopped?DI(function se(i){return np("E",void 0,i)}(a),this):(this.isStopped=!0,this._error(a))}complete(){this.isStopped?DI(tp,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(a){this.destination.next(a)}_error(a){try{this.destination.error(a)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const xq=Function.prototype.bind;function kb(i,a){return xq.call(i,a)}class Cq{constructor(a){this.partialObserver=a}next(a){const{partialObserver:e}=this;if(e.next)try{e.next(a)}catch(o){Eb(o)}}error(a){const{partialObserver:e}=this;if(e.error)try{e.error(a)}catch(o){Eb(o)}else Eb(a)}complete(){const{partialObserver:a}=this;if(a.complete)try{a.complete()}catch(e){Eb(e)}}}class Zu extends SI{constructor(a,e,o){let d;if(super(),$t(a)||!a)d={next:a??void 0,error:e??void 0,complete:o??void 0};else{let h;this&&pi.useDeprecatedNextContext?(h=Object.create(a),h.unsubscribe=()=>this.unsubscribe(),d={next:a.next&&kb(a.next,h),error:a.error&&kb(a.error,h),complete:a.complete&&kb(a.complete,h)}):d=a}this.destination=new Cq(d)}}function Eb(i){pi.useDeprecatedSynchronousErrorHandling?function wq(i){pi.useDeprecatedSynchronousErrorHandling&&Jo&&(Jo.errorThrown=!0,Jo.error=i)}(i):gr(i)}function DI(i,a){const{onStoppedNotification:e}=pi;e&&oi.setTimeout(()=>e(i,a))}const Dq={closed:!0,next:Td,error:function Sq(i){throw i},complete:Td},ip="function"==typeof Symbol&&Symbol.observable||"@@observable";function Ku(i){return i}function Oz(i){return 0===i.length?Ku:1===i.length?i[0]:function(e){return i.reduce((o,d)=>d(o),e)}}let Hn=(()=>{class i{constructor(e){e&&(this._subscribe=e)}lift(e){const o=new i;return o.source=this,o.operator=e,o}subscribe(e,o,d){const h=function Aq(i){return i&&i instanceof SI||function Tq(i){return i&&$t(i.next)&&$t(i.error)&&$t(i.complete)}(i)&&Tt(i)}(e)?e:new Zu(e,o,d);return U1(()=>{const{operator:_,source:w}=this;h.add(_?_.call(h,w):w?this._subscribe(h):this._trySubscribe(h))}),h}_trySubscribe(e){try{return this._subscribe(e)}catch(o){e.error(o)}}forEach(e,o){return new(o=MI(o))((d,h)=>{const _=new Zu({next:w=>{try{e(w)}catch(D){h(D),_.unsubscribe()}},error:h,complete:d});this.subscribe(_)})}_subscribe(e){var o;return null===(o=this.source)||void 0===o?void 0:o.subscribe(e)}[ip](){return this}pipe(...e){return Oz(e)(this)}toPromise(e){return new(e=MI(e))((o,d)=>{let h;this.subscribe(_=>h=_,_=>d(_),()=>o(h))})}}return i.create=a=>new i(a),i})();function MI(i){var a;return null!==(a=i??pi.Promise)&&void 0!==a?a:Promise}const kq=Qo(i=>function(){i(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});let He=(()=>{class i extends Hn{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(e){const o=new TI(this,this);return o.operator=e,o}_throwIfClosed(){if(this.closed)throw new kq}next(e){U1(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const o of this.currentObservers)o.next(e)}})}error(e){U1(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=e;const{observers:o}=this;for(;o.length;)o.shift().error(e)}})}complete(){U1(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:e}=this;for(;e.length;)e.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var e;return(null===(e=this.observers)||void 0===e?void 0:e.length)>0}_trySubscribe(e){return this._throwIfClosed(),super._trySubscribe(e)}_subscribe(e){return this._throwIfClosed(),this._checkFinalizedStatuses(e),this._innerSubscribe(e)}_innerSubscribe(e){const{hasError:o,isStopped:d,observers:h}=this;return o||d?vi:(this.currentObservers=null,h.push(e),new xt(()=>{this.currentObservers=null,Bs(h,e)}))}_checkFinalizedStatuses(e){const{hasError:o,thrownError:d,isStopped:h}=this;o?e.error(d):h&&e.complete()}asObservable(){const e=new Hn;return e.source=this,e}}return i.create=(a,e)=>new TI(a,e),i})();class TI extends He{constructor(a,e){super(),this.destination=a,this.source=e}next(a){var e,o;null===(o=null===(e=this.destination)||void 0===e?void 0:e.next)||void 0===o||o.call(e,a)}error(a){var e,o;null===(o=null===(e=this.destination)||void 0===e?void 0:e.error)||void 0===o||o.call(e,a)}complete(){var a,e;null===(e=null===(a=this.destination)||void 0===a?void 0:a.complete)||void 0===e||e.call(a)}_subscribe(a){var e,o;return null!==(o=null===(e=this.source)||void 0===e?void 0:e.subscribe(a))&&void 0!==o?o:vi}}function AI(i){return $t(null==i?void 0:i.lift)}function Gn(i){return a=>{if(AI(a))return a.lift(function(e){try{return i(e,this)}catch(o){this.error(o)}});throw new TypeError("Unable to lift unknown Observable type")}}function si(i,a,e,o,d){return new ln(i,a,e,o,d)}class ln extends SI{constructor(a,e,o,d,h,_){super(a),this.onFinalize=h,this.shouldUnsubscribe=_,this._next=e?function(w){try{e(w)}catch(D){a.error(D)}}:super._next,this._error=d?function(w){try{d(w)}catch(D){a.error(D)}finally{this.unsubscribe()}}:super._error,this._complete=o?function(){try{o()}catch(w){a.error(w)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var a;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:e}=this;super.unsubscribe(),!e&&(null===(a=this.onFinalize)||void 0===a||a.call(this))}}}function vt(i,a){return Gn((e,o)=>{let d=0;e.subscribe(si(o,h=>{o.next(i.call(a,h,d++))}))})}function Ju(i){return this instanceof Ju?(this.v=i,this):new Ju(i)}function rt(i){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var e,a=i[Symbol.asyncIterator];return a?a.call(i):(i=function Pb(i){var a="function"==typeof Symbol&&Symbol.iterator,e=a&&i[a],o=0;if(e)return e.call(i);if(i&&"number"==typeof i.length)return{next:function(){return i&&o>=i.length&&(i=void 0),{value:i&&i[o++],done:!i}}};throw new TypeError(a?"Object is not iterable.":"Symbol.iterator is not defined.")}(i),e={},o("next"),o("throw"),o("return"),e[Symbol.asyncIterator]=function(){return this},e);function o(h){e[h]=i[h]&&function(_){return new Promise(function(w,D){!function d(h,_,w,D){Promise.resolve(D).then(function(k){h({value:k,done:w})},_)}(w,D,(_=i[h](_)).done,_.value)})}}}const Mi=i=>i&&"number"==typeof i.length&&"function"!=typeof i;function Hr(i){return $t(null==i?void 0:i.then)}function U(i){return $t(i[ip])}function xe(i){return Symbol.asyncIterator&&$t(null==i?void 0:i[Symbol.asyncIterator])}function vo(i){return new TypeError(`You provided ${null!==i&&"object"==typeof i?"an invalid object":`'${i}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}const q1=function Dn(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}();function Ut(i){return $t(null==i?void 0:i[q1])}function RI(i){return function W1(i,a,e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var d,o=e.apply(i,a||[]),h=[];return d={},_("next"),_("throw"),_("return"),d[Symbol.asyncIterator]=function(){return this},d;function _(W){o[W]&&(d[W]=function(Z){return new Promise(function(te,ie){h.push([W,Z,te,ie])>1||w(W,Z)})})}function w(W,Z){try{!function D(W){W.value instanceof Ju?Promise.resolve(W.value.v).then(k,P):B(h[0][2],W)}(o[W](Z))}catch(te){B(h[0][3],te)}}function k(W){w("next",W)}function P(W){w("throw",W)}function B(W,Z){W(Z),h.shift(),h.length&&w(h[0][0],h[0][1])}}(this,arguments,function*(){const e=i.getReader();try{for(;;){const{value:o,done:d}=yield Ju(e.read());if(d)return yield Ju(void 0);yield yield Ju(o)}}finally{e.releaseLock()}})}function Ne(i){return $t(null==i?void 0:i.getReader)}function $e(i){if(i instanceof Hn)return i;if(null!=i){if(U(i))return function ye(i){return new Hn(a=>{const e=i[ip]();if($t(e.subscribe))return e.subscribe(a);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(i);if(Mi(i))return function qe(i){return new Hn(a=>{for(let e=0;e{i.then(e=>{a.closed||(a.next(e),a.complete())},e=>a.error(e)).then(null,gr)})}(i);if(xe(i))return rn(i);if(Ut(i))return function Ob(i){return new Hn(a=>{for(const e of i)if(a.next(e),a.closed)return;a.complete()})}(i);if(Ne(i))return function tt(i){return rn(RI(i))}(i)}throw vo(i)}function rn(i){return new Hn(a=>{(function X1(i,a){var e,o,d,h;return function rp(i,a,e,o){return new(e||(e=Promise))(function(h,_){function w(P){try{k(o.next(P))}catch(B){_(B)}}function D(P){try{k(o.throw(P))}catch(B){_(B)}}function k(P){P.done?h(P.value):function d(h){return h instanceof e?h:new e(function(_){_(h)})}(P.value).then(w,D)}k((o=o.apply(i,a||[])).next())})}(this,void 0,void 0,function*(){try{for(e=rt(i);!(o=yield e.next()).done;)if(a.next(o.value),a.closed)return}catch(_){d={error:_}}finally{try{o&&!o.done&&(h=e.return)&&(yield h.call(e))}finally{if(d)throw d.error}}a.complete()})})(i,a).catch(e=>a.error(e))})}function Bi(i,a,e,o=0,d=!1){const h=a.schedule(function(){e(),d?i.add(this.schedule(null,o)):this.unsubscribe()},o);if(i.add(h),!d)return h}function Vi(i,a,e=1/0){return $t(a)?Vi((o,d)=>vt((h,_)=>a(o,h,d,_))($e(i(o,d))),e):("number"==typeof a&&(e=a),Gn((o,d)=>function ap(i,a,e,o,d,h,_,w){const D=[];let k=0,P=0,B=!1;const W=()=>{B&&!D.length&&!k&&a.complete()},Z=ie=>k{h&&a.next(ie),k++;let de=!1;$e(e(ie,P++)).subscribe(si(a,he=>{null==d||d(he),h?Z(he):a.next(he)},()=>{de=!0},void 0,()=>{if(de)try{for(k--;D.length&&kte(he)):te(he)}W()}catch(he){a.error(he)}}))};return i.subscribe(si(a,Z,()=>{B=!0,W()})),()=>{null==w||w()}}(o,d,i,e)))}function eh(i=1/0){return Vi(Ku,i)}const _o=new Hn(i=>i.complete());function Ct(i){return i&&$t(i.schedule)}function es(i){return i[i.length-1]}function Bg(i){return $t(es(i))?i.pop():void 0}function Ad(i){return Ct(es(i))?i.pop():void 0}function yo(i,a=0){return Gn((e,o)=>{e.subscribe(si(o,d=>Bi(o,i,()=>o.next(d),a),()=>Bi(o,i,()=>o.complete(),a),d=>Bi(o,i,()=>o.error(d),a)))})}function Z1(i,a=0){return Gn((e,o)=>{o.add(i.schedule(()=>e.subscribe(o),a))})}function LI(i,a){if(!i)throw new Error("Iterable cannot be null");return new Hn(e=>{Bi(e,a,()=>{const o=i[Symbol.asyncIterator]();Bi(e,a,()=>{o.next().then(d=>{d.done?e.complete():e.next(d.value)})},0,!0)})})}function Ti(i,a){return a?function Ye(i,a){if(null!=i){if(U(i))return function Vg(i,a){return $e(i).pipe(Z1(a),yo(a))}(i,a);if(Mi(i))return function zz(i,a){return new Hn(e=>{let o=0;return a.schedule(function(){o===i.length?e.complete():(e.next(i[o++]),e.closed||this.schedule())})})}(i,a);if(Hr(i))return function op(i,a){return $e(i).pipe(Z1(a),yo(a))}(i,a);if(xe(i))return LI(i,a);if(Ut(i))return function OI(i,a){return new Hn(e=>{let o;return Bi(e,a,()=>{o=i[q1](),Bi(e,a,()=>{let d,h;try{({value:d,done:h}=o.next())}catch(_){return void e.error(_)}h?e.complete():e.next(d)},0,!0)}),()=>$t(null==o?void 0:o.return)&&o.return()})}(i,a);if(Ne(i))return function FI(i,a){return LI(RI(i),a)}(i,a)}throw vo(i)}(i,a):$e(i)}function Wn(...i){const a=Ad(i),e=function va(i,a){return"number"==typeof es(i)?i.pop():a}(i,1/0),o=i;return o.length?1===o.length?$e(o[0]):eh(e)(Ti(o,a)):_o}function Lb(i={}){const{connector:a=(()=>new He),resetOnError:e=!0,resetOnComplete:o=!0,resetOnRefCountZero:d=!0}=i;return h=>{let _,w,D,k=0,P=!1,B=!1;const W=()=>{null==w||w.unsubscribe(),w=void 0},Z=()=>{W(),_=D=void 0,P=B=!1},te=()=>{const ie=_;Z(),null==ie||ie.unsubscribe()};return Gn((ie,de)=>{k++,!B&&!P&&W();const he=D=D??a();de.add(()=>{k--,0===k&&!B&&!P&&(w=ze(te,d))}),he.subscribe(de),!_&&k>0&&(_=new Zu({next:Me=>he.next(Me),error:Me=>{B=!0,W(),w=ze(Z,e,Me),he.error(Me)},complete:()=>{P=!0,W(),w=ze(Z,o),he.complete()}}),$e(ie).subscribe(_))})(h)}}function ze(i,a,...e){if(!0===a)return void i();if(!1===a)return;const o=new Zu({next:()=>{o.unsubscribe(),i()}});return $e(a(...e)).subscribe(o)}function Ft(i){for(let a in i)if(i[a]===Ft)return a;throw Error("Could not find renamed property on target object.")}function th(i,a){for(const e in a)a.hasOwnProperty(e)&&!i.hasOwnProperty(e)&&(i[e]=a[e])}function li(i){if("string"==typeof i)return i;if(Array.isArray(i))return"["+i.map(li).join(", ")+"]";if(null==i)return""+i;if(i.overriddenName)return`${i.overriddenName}`;if(i.name)return`${i.name}`;const a=i.toString();if(null==a)return""+a;const e=a.indexOf("\n");return-1===e?a:a.substring(0,e)}function Yn(i,a){return null==i||""===i?null===a?"":a:null==a||""===a?i:i+" "+a}const NI=Ft({__forward_ref__:Ft});function bn(i){return i.__forward_ref__=bn,i.toString=function(){return li(this())},i}function Nt(i){return BI(i)?i():i}function BI(i){return"function"==typeof i&&i.hasOwnProperty(NI)&&i.__forward_ref__===bn}function VI(i){return i&&!!i.\u0275providers}const K1="https://g.co/ng/security#xss";class Ce extends Error{constructor(a,e){super(Q1(a,e)),this.code=a}}function Q1(i,a){return`NG0${Math.abs(i)}${a?": "+a.trim():""}`}function Wt(i){return"string"==typeof i?i:null==i?"":String(i)}function nh(i,a){throw new Ce(-201,!1)}function io(i,a){null==i&&function Rn(i,a,e,o){throw new Error(`ASSERTION ERROR: ${i}`+(null==o?"":` [Expected=> ${e} ${o} ${a} <=Actual]`))}(a,i,null,"!=")}function ke(i){return{token:i.token,providedIn:i.providedIn||null,factory:i.factory,value:void 0}}function ft(i){return{providers:i.providers||[],imports:i.imports||[]}}function Nb(i){return sp(i,zg)||sp(i,zI)}function sp(i,a){return i.hasOwnProperty(a)?i[a]:null}function _l(i){return i&&(i.hasOwnProperty(yl)||i.hasOwnProperty(Hg))?i[yl]:null}const zg=Ft({\u0275prov:Ft}),yl=Ft({\u0275inj:Ft}),zI=Ft({ngInjectableDef:Ft}),Hg=Ft({ngInjectorDef:Ft});var at=(()=>((at=at||{})[at.Default=0]="Default",at[at.Host=1]="Host",at[at.Self=2]="Self",at[at.SkipSelf=4]="SkipSelf",at[at.Optional=8]="Optional",at))();let Vs;function na(i){const a=Vs;return Vs=i,a}function HI(i,a,e){const o=Nb(i);return o&&"root"==o.providedIn?void 0===o.value?o.value=o.factory():o.value:e&at.Optional?null:void 0!==a?a:void nh(li(i))}const Ai=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),lp={},Vb="__NG_DI_FLAG__",cp="ngTempTokenPath",Uz="ngTokenPath",J1=/\n/gm,jz="\u0275",UI="__source";let dp;function up(i){const a=dp;return dp=i,a}function $z(i,a=at.Default){if(void 0===dp)throw new Ce(-203,!1);return null===dp?HI(i,void 0,a):dp.get(i,a&at.Optional?null:void 0,a)}function ae(i,a=at.Default){return(function vc(){return Vs}()||$z)(Nt(i),a)}function St(i,a=at.Default){return ae(i,zb(a))}function zb(i){return typeof i>"u"||"number"==typeof i?i:0|(i.optional&&8)|(i.host&&1)|(i.self&&2)|(i.skipSelf&&4)}function Gg(i){const a=[];for(let e=0;e((bl=bl||{})[bl.OnPush=0]="OnPush",bl[bl.Default=1]="Default",bl))(),Ar=(()=>{return(i=Ar||(Ar={}))[i.Emulated=0]="Emulated",i[i.None=2]="None",i[i.ShadowDom=3]="ShadowDom",Ar;var i})();const wl={},Un=[],Ug=Ft({\u0275cmp:Ft}),tS=Ft({\u0275dir:Ft}),jg=Ft({\u0275pipe:Ft}),ro=Ft({\u0275mod:Ft}),bo=Ft({\u0275fac:Ft}),Id=Ft({__NG_ELEMENT_ID__:Ft});let xl=0;function _e(i){return Hs(()=>{const a=fp(i),e={...a,decls:i.decls,vars:i.vars,template:i.template,consts:i.consts||null,ngContentSelectors:i.ngContentSelectors,onPush:i.changeDetection===bl.OnPush,directiveDefs:null,pipeDefs:null,dependencies:a.standalone&&i.dependencies||null,getStandaloneInjector:null,data:i.data||{},encapsulation:i.encapsulation||Ar.Emulated,id:"c"+xl++,styles:i.styles||Un,_:null,schemas:i.schemas||null,tView:null};$I(e);const o=i.dependencies;return e.directiveDefs=yt(o,!1),e.pipeDefs=yt(o,!0),e})}function Hb(i){return Cn(i)||Xi(i)}function ah(i){return null!==i}function pt(i){return Hs(()=>({type:i.type,bootstrap:i.bootstrap||Un,declarations:i.declarations||Un,imports:i.imports||Un,exports:i.exports||Un,transitiveCompileScopes:null,schemas:i.schemas||null,id:i.id||null}))}function Dt(i,a){if(null==i)return wl;const e={};for(const o in i)if(i.hasOwnProperty(o)){let d=i[o],h=d;Array.isArray(d)&&(h=d[1],d=d[0]),e[d]=o,a&&(a[d]=h)}return e}function me(i){return Hs(()=>{const a=fp(i);return $I(a),a})}function kr(i){return{type:i.type,name:i.name,factory:null,pure:!1!==i.pure,standalone:!0===i.standalone,onDestroy:i.type.prototype.ngOnDestroy||null}}function Cn(i){return i[Ug]||null}function Xi(i){return i[tS]||null}function vr(i){return i[jg]||null}function ia(i,a){const e=i[ro]||null;if(!e&&!0===a)throw new Error(`Type ${li(i)} does not have '\u0275mod' property.`);return e}function fp(i){const a={};return{type:i.type,providersResolver:null,factory:null,hostBindings:i.hostBindings||null,hostVars:i.hostVars||0,hostAttrs:i.hostAttrs||null,contentQueries:i.contentQueries||null,declaredInputs:a,exportAs:i.exportAs||null,standalone:!0===i.standalone,selectors:i.selectors||Un,viewQuery:i.viewQuery||null,features:i.features||null,setInput:null,findHostDirectiveDefs:null,hostDirectives:null,inputs:Dt(i.inputs,a),outputs:Dt(i.outputs)}}function $I(i){var a;null===(a=i.features)||void 0===a||a.forEach(e=>e(i))}function yt(i,a){if(!i)return null;const e=a?vr:Hb;return()=>("function"==typeof i?i():i).map(o=>e(o)).filter(ah)}const Cl=0,it=1,cn=2,Zi=3,za=4,oh=5,Gr=6,sh=7,lr=8,$g=9,Wg=10,dn=11,Gb=12,yc=13,nS=14,pp=15,ra=16,Yg=17,lh=18,rs=19,ch=20,WI=21,ci=22,dh=1,uh=2,qg=7,mp=8,hh=9,Ha=10;function ao(i){return Array.isArray(i)&&"object"==typeof i[dh]}function wo(i){return Array.isArray(i)&&!0===i[dh]}function gp(i){return 0!=(4&i.flags)}function vp(i){return i.componentOffset>-1}function fh(i){return 1==(1&i.flags)}function Ur(i){return!!i.template}function Ub(i){return 0!=(256&i[cn])}function Pd(i,a){return i.hasOwnProperty(bo)?i[bo]:null}class e4{constructor(a,e,o){this.previousValue=a,this.currentValue=e,this.firstChange=o}isFirstChange(){return this.firstChange}}function jn(){return Yb}function Yb(i){return i.type.prototype.ngOnChanges&&(i.setInput=n4),t4}function t4(){const i=qI(this),a=null==i?void 0:i.current;if(a){const e=i.previous;if(e===wl)i.previous=a;else for(let o in a)e[o]=a[o];i.current=null,this.ngOnChanges(a)}}function n4(i,a,e,o){const d=this.declaredInputs[e],h=qI(i)||function r4(i,a){return i[rS]=a}(i,{previous:wl,current:null}),_=h.current||(h.current={}),w=h.previous,D=w[d];_[d]=new e4(D&&D.currentValue,a,w===wl),i[o]=a}jn.ngInherit=!0;const rS="__ngSimpleChanges__";function qI(i){return i[rS]||null}const Ki=function(i,a,e){},ZI="svg";function Ir(i){for(;Array.isArray(i);)i=i[Cl];return i}function yp(i,a){return Ir(a[i])}function _r(i,a){return Ir(a[i.index])}function qb(i,a){return i.data[a]}function _h(i,a){return i[a]}function aa(i,a){const e=a[i];return ao(e)?e:e[Cl]}function $r(i){return 64==(64&i[cn])}function Rd(i,a){return null==a?null:i[a]}function Zg(i){i[lh]=0}function oS(i,a){i[oh]+=a;let e=i,o=i[Zi];for(;null!==o&&(1===a&&1===e[oh]||-1===a&&0===e[oh]);)o[oh]+=a,e=o,o=o[Zi]}const zt={lFrame:iP(null),bindingsEnabled:!0};function ss(){return zt.bindingsEnabled}function De(){return zt.lFrame.lView}function gn(){return zt.lFrame.tView}function le(i){return zt.lFrame.contextLView=i,i[lr]}function oe(i){return zt.lFrame.contextLView=null,i}function yr(){let i=Xb();for(;null!==i&&64===i.type;)i=i.parent;return i}function Xb(){return zt.lFrame.currentTNode}function Sl(i,a){const e=zt.lFrame;e.currentTNode=i,e.isParent=a}function sS(){return zt.lFrame.isParent}function lS(){zt.lFrame.isParent=!1}function _a(){const i=zt.lFrame;let a=i.bindingRootIndex;return-1===a&&(a=i.bindingRootIndex=i.tView.bindingStartIndex),a}function yh(){return zt.lFrame.bindingIndex++}function Dl(i){const a=zt.lFrame,e=a.bindingIndex;return a.bindingIndex=a.bindingIndex+i,e}function eP(i,a){const e=zt.lFrame;e.bindingIndex=e.bindingRootIndex=i,cS(a)}function cS(i){zt.lFrame.currentDirectiveIndex=i}function ev(i){const a=zt.lFrame.currentDirectiveIndex;return-1===a?null:i[a]}function Ml(){return zt.lFrame.currentQueryIndex}function tv(i){zt.lFrame.currentQueryIndex=i}function c4(i){const a=i[it];return 2===a.type?a.declTNode:1===a.type?i[Gr]:null}function nv(i,a,e){if(e&at.SkipSelf){let d=a,h=i;for(;!(d=d.parent,null!==d||e&at.Host||(d=c4(h),null===d||(h=h[pp],10&d.type))););if(null===d)return!1;a=d,i=h}const o=zt.lFrame=nP();return o.currentTNode=a,o.lView=i,!0}function Qb(i){const a=nP(),e=i[it];zt.lFrame=a,a.currentTNode=e.firstChild,a.lView=i,a.tView=e,a.contextLView=i,a.bindingIndex=e.bindingStartIndex,a.inI18n=!1}function nP(){const i=zt.lFrame,a=null===i?null:i.child;return null===a?iP(i):a}function iP(i){const a={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:i,child:null,inI18n:!1};return null!==i&&(i.child=a),a}function xp(){const i=zt.lFrame;return zt.lFrame=i.parent,i.currentTNode=null,i.lView=null,i}const iv=xp;function dS(){const i=xp();i.isParent=!0,i.tView=null,i.selectedIndex=-1,i.contextLView=null,i.elementDepthCount=0,i.currentDirectiveIndex=-1,i.currentNamespace=null,i.bindingRootIndex=-1,i.bindingIndex=-1,i.currentQueryIndex=0}function ya(){return zt.lFrame.selectedIndex}function Us(i){zt.lFrame.selectedIndex=i}function ki(){const i=zt.lFrame;return qb(i.tView,i.selectedIndex)}function Wr(){zt.lFrame.currentNamespace=ZI}function xc(){!function t0(){zt.lFrame.currentNamespace=null}()}function n0(i,a){for(let k=a.directiveStart,P=a.directiveEnd;k=o)break}else a[D]<0&&(i[lh]+=65536),(w>11>16&&(3&i[cn])===a){i[cn]+=2048,Ki(4,w,h);try{h.call(w)}finally{Ki(5,w,h)}}}else{Ki(4,w,h);try{h.call(w)}finally{Ki(5,w,h)}}}const Od=-1;class bh{constructor(a,e,o){this.factory=a,this.resolving=!1,this.canSeeViewProviders=e,this.injectImpl=o}}function xo(i,a,e){let o=0;for(;oa){_=h-1;break}}}for(;h>16}(i),o=a;for(;e>0;)o=o[pp],e--;return o}let s0=!0;function fS(i){const a=s0;return s0=i,a}const l0=255,c0=5;let mS=0;const Tl={};function cv(i,a){const e=Ld(i,a);if(-1!==e)return e;const o=a[it];o.firstCreatePass&&(i.injectorIndex=a.length,Sc(o.data,i),Sc(a,null),Sc(o.blueprint,null));const d=Fd(i,a),h=i.injectorIndex;if(a0(d)){const _=lv(d),w=o0(d,a),D=w[it].data;for(let k=0;k<8;k++)a[h+k]=w[_+k]|D[_+k]}return a[h+8]=d,h}function Sc(i,a){i.push(0,0,0,0,0,0,0,0,a)}function Ld(i,a){return-1===i.injectorIndex||i.parent&&i.parent.injectorIndex===i.injectorIndex||null===a[i.injectorIndex+8]?-1:i.injectorIndex}function Fd(i,a){if(i.parent&&-1!==i.parent.injectorIndex)return i.parent.injectorIndex;let e=0,o=null,d=a;for(;null!==d;){if(o=d0(d),null===o)return Od;if(e++,d=d[pp],-1!==o.injectorIndex)return o.injectorIndex|e<<16}return Od}function dv(i,a,e){!function lP(i,a,e){let o;"string"==typeof e?o=e.charCodeAt(0)||0:e.hasOwnProperty(Id)&&(o=e[Id]),null==o&&(o=e[Id]=mS++);const d=o&l0;a.data[i+(d>>c0)]|=1<=0?a&l0:Xq:a}(e);if("function"==typeof h){if(!nv(a,i,o))return o&at.Host?cP(d,0,o):js(a,e,o,d);try{const _=h(o);if(null!=_||o&at.Optional)return _;nh()}finally{iv()}}else if("number"==typeof h){let _=null,w=Ld(i,a),D=Od,k=o&at.Host?a[ra][Gr]:null;for((-1===w||o&at.SkipSelf)&&(D=-1===w?Fd(i,a):a[w+8],D!==Od&&wh(o,!1)?(_=a[it],w=lv(D),a=o0(D,a)):w=-1);-1!==w;){const P=a[it];if(Sp(h,w,P.data)){const B=dP(w,a,e,_,o,k);if(B!==Tl)return B}D=a[w+8],D!==Od&&wh(o,a[it].data[w+8]===k)&&Sp(h,w,a)?(_=P,w=lv(D),a=o0(D,a)):w=-1}}return d}function dP(i,a,e,o,d,h){const _=a[it],w=_.data[i+8],P=ba(w,_,e,null==o?vp(w)&&s0:o!=_&&0!=(3&w.type),d&at.Host&&h===w);return null!==P?Nd(a,_,P,w):Tl}function ba(i,a,e,o,d){const h=i.providerIndexes,_=a.data,w=1048575&h,D=i.directiveStart,P=h>>20,W=d?w+P:i.directiveEnd;for(let Z=o?w:w+P;Z=D&&te.type===e)return Z}if(d){const Z=_[D];if(Z&&Ur(Z)&&Z.type===e)return D}return null}function Nd(i,a,e,o){let d=i[e];const h=a.data;if(function oP(i){return i instanceof bh}(d)){const _=d;_.resolving&&function Fq(i,a){const e=a?`. Dependency path: ${a.join(" > ")} > ${i}`:"";throw new Ce(-200,`Circular dependency in DI detected for ${i}${e}`)}(function qn(i){return"function"==typeof i?i.name||i.toString():"object"==typeof i&&null!=i&&"function"==typeof i.type?i.type.name||i.type.toString():Wt(i)}(h[e]));const w=fS(_.canSeeViewProviders);_.resolving=!0;const D=_.injectImpl?na(_.injectImpl):null;nv(i,o,at.Default);try{d=i[e]=_.factory(void 0,h,i,o),a.firstCreatePass&&e>=o.directiveStart&&function d4(i,a,e){const{ngOnChanges:o,ngOnInit:d,ngDoCheck:h}=a.type.prototype;if(o){var _,w;const B=Yb(a);(null!==(_=e.preOrderHooks)&&void 0!==_?_:e.preOrderHooks=[]).push(i,B),(null!==(w=e.preOrderCheckHooks)&&void 0!==w?w:e.preOrderCheckHooks=[]).push(i,B)}var D,k,P;d&&(null!==(D=e.preOrderHooks)&&void 0!==D?D:e.preOrderHooks=[]).push(0-i,d),h&&((null!==(k=e.preOrderHooks)&&void 0!==k?k:e.preOrderHooks=[]).push(i,h),(null!==(P=e.preOrderCheckHooks)&&void 0!==P?P:e.preOrderCheckHooks=[]).push(i,h))}(e,h[e],a)}finally{null!==D&&na(D),fS(w),_.resolving=!1,iv()}}return d}function Sp(i,a,e){return!!(e[a+(i>>c0)]&1<{const a=i.prototype.constructor,e=a[bo]||Dp(a),o=Object.prototype;let d=Object.getPrototypeOf(i.prototype).constructor;for(;d&&d!==o;){const h=d[bo]||Dp(d);if(h&&h!==e)return h;d=Object.getPrototypeOf(d)}return h=>new h})}function Dp(i){return BI(i)?()=>{const a=Dp(Nt(i));return a&&a()}:Pd(i)}function d0(i){const a=i[it],e=a.type;return 2===e?a.declTNode:1===e?i[Gr]:null}function Co(i){return function gS(i,a){if("class"===a)return i.classes;if("style"===a)return i.styles;const e=i.attrs;if(e){const o=e.length;let d=0;for(;d{const o=function hv(i){return function(...e){if(i){const o=i(...e);for(const d in o)this[d]=o[d]}}}(a);function d(...h){if(this instanceof d)return o.apply(this,h),this;const _=new d(...h);return w.annotation=_,w;function w(D,k,P){const B=D.hasOwnProperty(Mp)?D[Mp]:Object.defineProperty(D,Mp,{value:[]})[Mp];for(;B.length<=P;)B.push(null);return(B[P]=B[P]||[]).push(_),D}}return e&&(d.prototype=Object.create(e.prototype)),d.prototype.ngMetadataName=i,d.annotationCls=d,d})}class be{constructor(a,e){this._desc=a,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof e?this.__NG_ELEMENT_ID__=e:void 0!==e&&(this.\u0275prov=ke({token:this,providedIn:e.providedIn||"root",factory:e.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function Vd(i,a){i.forEach(e=>Array.isArray(e)?Vd(e,a):a(e))}function wS(i,a,e){a>=i.length?i.push(e):i.splice(a,0,e)}function h0(i,a){return a>=i.length-1?i.pop():i.splice(a,1)[0]}function hn(i,a){const e=[];for(let o=0;o=0?i[1|o]=e:(o=~o,function So(i,a,e,o){let d=i.length;if(d==a)i.push(e,o);else if(1===d)i.push(o,i[0]),i[0]=e;else{for(d--,i.push(i[d-1],i[d]);d>a;)i[d]=i[d-2],d--;i[a]=e,i[a+1]=o}}(i,o,a,e)),o}function mv(i,a){const e=kp(i,a);if(e>=0)return i[1|e]}function kp(i,a){return function fP(i,a,e){let o=0,d=i.length>>e;for(;d!==o;){const h=o+(d-o>>1),_=i[h<a?d=h:o=h+1}return~(d<({token:i})),-1),wa=hp(Tp("Optional"),8),Mo=hp(Tp("SkipSelf"),4);var Ga=(()=>((Ga=Ga||{})[Ga.Important=1]="Important",Ga[Ga.DashCase=2]="DashCase",Ga))();const kS=new Map;let E4=0;const Tc="__ngContext__";function xa(i,a){ao(a)?(i[Tc]=a[ch],function I4(i){kS.set(i[ch],i)}(a)):i[Tc]=a}let LS;function FS(i,a){return LS(i,a)}function Fp(i){const a=i[Zi];return wo(a)?a[Zi]:a}function Cv(i){return MP(i[yc])}function NS(i){return MP(i[za])}function MP(i){for(;null!==i&&!wo(i);)i=i[za];return i}function Np(i,a,e,o,d){if(null!=o){let h,_=!1;wo(o)?h=o:ao(o)&&(_=!0,o=o[Cl]);const w=Ir(o);0===i&&null!==e?null==d?Tv(a,e,w):El(a,e,w,d||null,!0):1===i&&null!==e?El(a,e,w,d||null,!0):2===i?function kv(i,a,e){const o=w0(i,a);o&&function AP(i,a,e,o){i.removeChild(a,e,o)}(i,o,a,e)}(a,w,_):3===i&&a.destroyNode(w),null!=h&&function Hd(i,a,e,o,d){const h=e[qg];h!==Ir(e)&&Np(a,i,o,h,d);for(let w=Ha;w0&&(i[e-1][za]=o[za]);const h=h0(i,Ha+a);!function TP(i,a){Ks(i,a,a[dn],2,null,null),a[Cl]=null,a[Gr]=null}(o[it],o);const _=h[rs];null!==_&&_.detachView(h[it]),o[Zi]=null,o[za]=null,o[cn]&=-65}return o}function Ua(i,a){if(!(128&a[cn])){const e=a[dn];e.destroyNode&&Ks(i,a,e,3,null,null),function BS(i){let a=i[yc];if(!a)return Sv(i[it],i);for(;a;){let e=null;if(ao(a))e=a[yc];else{const o=a[Ha];o&&(e=o)}if(!e){for(;a&&!a[za]&&a!==i;)ao(a)&&Sv(a[it],a),a=a[Zi];null===a&&(a=i),ao(a)&&Sv(a[it],a),e=a&&a[za]}a=e}}(a)}}function Sv(i,a){if(!(128&a[cn])){a[cn]&=-65,a[cn]|=128,function Dh(i,a){let e;if(null!=i&&null!=(e=i.destroyHooks))for(let o=0;o=0?o[d=_]():o[d=-_].unsubscribe(),h+=2}else{const _=o[d=e[h+1]];e[h].call(_)}if(null!==o){for(let h=d+1;h-1){const{encapsulation:h}=i.data[o.directiveStart+d];if(h===Ar.None||h===Ar.Emulated)return null}return _r(o,e)}}(i,a.parent,e)}function El(i,a,e,o,d){i.insertBefore(a,e,o,d)}function Tv(i,a,e){i.appendChild(a,e)}function HS(i,a,e,o,d){null!==o?El(i,a,e,o,d):Tv(i,a,e)}function w0(i,a){return i.parentNode(a)}function kP(i,a,e){return zd(i,a,e)}let Ac,S0,Mh,Qs,zd=function $n(i,a,e){return 40&i.type?_r(i,e):null};function Xs(i,a,e,o){const d=Dv(i,o,a),h=a[dn],w=kP(o.parent||a[Gr],o,a);if(null!=d)if(Array.isArray(e))for(let D=0;Di,createScript:i=>i,createScriptURL:i=>i})}catch{}return S0}())||void 0===a?void 0:a.createHTML(i))||i}function Pc(){if(void 0===Qs&&(Qs=null,Ai.trustedTypes))try{Qs=Ai.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:i=>i,createScript:i=>i,createScriptURL:i=>i})}catch{}return Qs}function IP(i){var a;return(null===(a=Pc())||void 0===a?void 0:a.createHTML(i))||i}function Sa(i){var a;return(null===(a=Pc())||void 0===a?void 0:a.createScriptURL(i))||i}class Yr{constructor(a){this.changingThisBreaksApplicationSecurity=a}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${K1})`}}class W4 extends Yr{getTypeName(){return"HTML"}}class Y4 extends Yr{getTypeName(){return"Style"}}class q4 extends Yr{getTypeName(){return"Script"}}class X4 extends Yr{getTypeName(){return"URL"}}class RP extends Yr{getTypeName(){return"ResourceURL"}}function Eo(i){return i instanceof Yr?i.changingThisBreaksApplicationSecurity:i}function Pl(i,a){const e=function D0(i){return i instanceof Yr&&i.getTypeName()||null}(i);if(null!=e&&e!==a){if("ResourceURL"===e&&"URL"===a)return!0;throw new Error(`Required a safe ${a}, got a ${e} (see ${K1})`)}return e===a}class Iv{constructor(a){this.inertDocumentHelper=a}getInertBodyElement(a){a=""+a;try{const e=(new window.DOMParser).parseFromString(ko(a),"text/html").body;return null===e?this.inertDocumentHelper.getInertBodyElement(a):(e.removeChild(e.firstChild),e)}catch{return null}}}class J4{constructor(a){this.defaultDoc=a,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert")}getInertBodyElement(a){const e=this.inertDocument.createElement("template");return e.innerHTML=ko(a),e}}const tH=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:\/?#]*(?:[\/?#]|$))/i;function Pv(i){return(i=String(i)).match(tH)?i:"unsafe:"+i}function _i(i){const a={};for(const e of i.split(","))a[e]=!0;return a}function Rv(...i){const a={};for(const e of i)for(const o in e)e.hasOwnProperty(o)&&(a[o]=!0);return a}const Th=_i("area,br,col,hr,img,wbr"),WS=_i("colgroup,dd,dt,li,p,tbody,td,tfoot,th,thead,tr"),YS=_i("rp,rt"),M0=Rv(Th,Rv(WS,_i("address,article,aside,blockquote,caption,center,del,details,dialog,dir,div,dl,figure,figcaption,footer,h1,h2,h3,h4,h5,h6,header,hgroup,hr,ins,main,map,menu,nav,ol,pre,section,summary,table,ul")),Rv(YS,_i("a,abbr,acronym,audio,b,bdi,bdo,big,br,cite,code,del,dfn,em,font,i,img,ins,kbd,label,map,mark,picture,q,ruby,rp,rt,s,samp,small,source,span,strike,strong,sub,sup,time,track,tt,u,var,video")),Rv(YS,WS)),Zt=_i("background,cite,href,itemtype,longdesc,poster,src,xlink:href"),OP=Rv(Zt,_i("abbr,accesskey,align,alt,autoplay,axis,bgcolor,border,cellpadding,cellspacing,class,clear,color,cols,colspan,compact,controls,coords,datetime,default,dir,download,face,headers,height,hidden,hreflang,hspace,ismap,itemscope,itemprop,kind,label,lang,language,loop,media,muted,nohref,nowrap,open,preload,rel,rev,role,rows,rowspan,rules,scope,scrolling,shape,size,sizes,span,srclang,srcset,start,summary,tabindex,target,title,translate,type,usemap,valign,value,vspace,width"),_i("aria-activedescendant,aria-atomic,aria-autocomplete,aria-busy,aria-checked,aria-colcount,aria-colindex,aria-colspan,aria-controls,aria-current,aria-describedby,aria-details,aria-disabled,aria-dropeffect,aria-errormessage,aria-expanded,aria-flowto,aria-grabbed,aria-haspopup,aria-hidden,aria-invalid,aria-keyshortcuts,aria-label,aria-labelledby,aria-level,aria-live,aria-modal,aria-multiline,aria-multiselectable,aria-orientation,aria-owns,aria-placeholder,aria-posinset,aria-pressed,aria-readonly,aria-relevant,aria-required,aria-roledescription,aria-rowcount,aria-rowindex,aria-rowspan,aria-selected,aria-setsize,aria-sort,aria-valuemax,aria-valuemin,aria-valuenow,aria-valuetext")),LP=_i("script,style,template");class rH{constructor(){this.sanitizedSomething=!1,this.buf=[]}sanitizeChildren(a){let e=a.firstChild,o=!0;for(;e;)if(e.nodeType===Node.ELEMENT_NODE?o=this.startElement(e):e.nodeType===Node.TEXT_NODE?this.chars(e.nodeValue):this.sanitizedSomething=!0,o&&e.firstChild)e=e.firstChild;else for(;e;){e.nodeType===Node.ELEMENT_NODE&&this.endElement(e);let d=this.checkClobberedElement(e,e.nextSibling);if(d){e=d;break}e=this.checkClobberedElement(e,e.parentNode)}return this.buf.join("")}startElement(a){const e=a.nodeName.toLowerCase();if(!M0.hasOwnProperty(e))return this.sanitizedSomething=!0,!LP.hasOwnProperty(e);this.buf.push("<"),this.buf.push(e);const o=a.attributes;for(let d=0;d"),!0}endElement(a){const e=a.nodeName.toLowerCase();M0.hasOwnProperty(e)&&!Th.hasOwnProperty(e)&&(this.buf.push(""))}chars(a){this.buf.push(qS(a))}checkClobberedElement(a,e){if(e&&(a.compareDocumentPosition(e)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${a.outerHTML}`);return e}}const aH=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,FP=/([^\#-~ |!])/g;function qS(i){return i.replace(/&/g,"&").replace(aH,function(a){return"&#"+(1024*(a.charCodeAt(0)-55296)+(a.charCodeAt(1)-56320)+65536)+";"}).replace(FP,function(a){return"&#"+a.charCodeAt(0)+";"}).replace(//g,">")}let Ov;function XS(i,a){let e=null;try{Ov=Ov||function $S(i){const a=new J4(i);return function eH(){try{return!!(new window.DOMParser).parseFromString(ko(""),"text/html")}catch{return!1}}()?new Iv(a):a}(i);let o=a?String(a):"";e=Ov.getInertBodyElement(o);let d=5,h=o;do{if(0===d)throw new Error("Failed to sanitize html because the input is unstable");d--,o=h,h=e.innerHTML,e=Ov.getInertBodyElement(o)}while(o!==h);return ko((new rH).sanitizeChildren(ZS(e)||e))}finally{if(e){const o=ZS(e)||e;for(;o.firstChild;)o.removeChild(o.firstChild)}}}function ZS(i){return"content"in i&&function NP(i){return i.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===i.nodeName}(i)?i.content:null}var Bn=(()=>((Bn=Bn||{})[Bn.NONE=0]="NONE",Bn[Bn.HTML=1]="HTML",Bn[Bn.STYLE=2]="STYLE",Bn[Bn.SCRIPT=3]="SCRIPT",Bn[Bn.URL=4]="URL",Bn[Bn.RESOURCE_URL=5]="RESOURCE_URL",Bn))();function Rr(i){const a=Ah();return a?IP(a.sanitize(Bn.HTML,i)||""):Pl(i,"HTML")?IP(Eo(i)):XS(function Il(){return void 0!==Mh?Mh:typeof document<"u"?document:void 0}(),Wt(i))}function Kt(i){const a=Ah();return a?a.sanitize(Bn.URL,i)||"":Pl(i,"URL")?Eo(i):Pv(Wt(i))}function T0(i){const a=Ah();if(a)return Sa(a.sanitize(Bn.RESOURCE_URL,i)||"");if(Pl(i,"ResourceURL"))return Sa(Eo(i));throw new Ce(904,!1)}function Ah(){const i=De();return i&&i[Gb]}const Gd=new be("ENVIRONMENT_INITIALIZER"),Lv=new be("INJECTOR",-1),Da=new be("INJECTOR_DEF_TYPES");class zp{get(a,e=lp){if(e===lp){const o=new Error(`NullInjectorError: No provider for ${li(a)}!`);throw o.name="NullInjectorError",o}return e}}function sH(...i){return{\u0275providers:Ud(0,i),\u0275fromNgModule:!0}}function Ud(i,...a){const e=[],o=new Set;let d;return Vd(a,h=>{const _=h;kh(_,e,[],o)&&(d||(d=[]),d.push(_))}),void 0!==d&&Fv(d,e),e}function Fv(i,a){for(let e=0;e{a.push(h)})}}function kh(i,a,e,o){if(!(i=Nt(i)))return!1;let d=null,h=_l(i);const _=!h&&Cn(i);if(h||_){if(_&&!_.standalone)return!1;d=i}else{const D=i.ngModule;if(h=_l(D),!h)return!1;d=D}const w=o.has(d);if(_){if(w)return!1;if(o.add(d),_.dependencies){const D="function"==typeof _.dependencies?_.dependencies():_.dependencies;for(const k of D)kh(k,a,e,o)}}else{if(!h)return!1;{if(null!=h.imports&&!w){let k;o.add(d);try{Vd(h.imports,P=>{kh(P,a,e,o)&&(k||(k=[]),k.push(P))})}finally{}void 0!==k&&Fv(k,a)}if(!w){const k=Pd(d)||(()=>new d);a.push({provide:d,useFactory:k,deps:Un},{provide:Da,useValue:d,multi:!0},{provide:Gd,useValue:()=>ae(d),multi:!0})}const D=h.providers;null==D||w||Eh(D,P=>{a.push(P)})}}return d!==i&&void 0!==i.providers}function Eh(i,a){for(let e of i)VI(e)&&(e=e.\u0275providers),Array.isArray(e)?Eh(e,a):a(e)}const Gp=Ft({provide:String,useValue:Ft});function A0(i){return null!==i&&"object"==typeof i&&Gp in i}function jd(i){return"function"==typeof i}const Bv=new be("Set Injector scope."),Vv={},lH={};let tD;function zv(){return void 0===tD&&(tD=new zp),tD}class qr{}class Hv extends qr{get destroyed(){return this._destroyed}constructor(a,e,o,d){super(),this.parent=e,this.source=o,this.scopes=d,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,k0(a,_=>this.processProvider(_)),this.records.set(Lv,Up(void 0,this)),d.has("environment")&&this.records.set(qr,Up(void 0,this));const h=this.records.get(Bv);null!=h&&"string"==typeof h.value&&this.scopes.add(h.value),this.injectorDefTypes=new Set(this.get(Da.multi,Un,at.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const a of this._ngOnDestroyHooks)a.ngOnDestroy();for(const a of this._onDestroyHooks)a()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(a){this._onDestroyHooks.push(a)}runInContext(a){this.assertNotDestroyed();const e=up(this),o=na(void 0);try{return a()}finally{up(e),na(o)}}get(a,e=lp,o=at.Default){this.assertNotDestroyed(),o=zb(o);const d=up(this),h=na(void 0);try{if(!(o&at.SkipSelf)){let w=this.records.get(a);if(void 0===w){const D=function jP(i){return"function"==typeof i||"object"==typeof i&&i instanceof be}(a)&&Nb(a);w=D&&this.injectableDefInScope(D)?Up(GP(a),Vv):null,this.records.set(a,w)}if(null!=w)return this.hydrate(a,w)}return(o&at.Self?zv():this.parent).get(a,e=o&at.Optional&&e===lp?null:e)}catch(_){if("NullInjectorError"===_.name){if((_[cp]=_[cp]||[]).unshift(li(a)),d)throw _;return function ns(i,a,e,o){const d=i[cp];throw a[UI]&&d.unshift(a[UI]),i.message=function Wz(i,a,e,o=null){i=i&&"\n"===i.charAt(0)&&i.charAt(1)==jz?i.slice(2):i;let d=li(a);if(Array.isArray(a))d=a.map(li).join(" -> ");else if("object"==typeof a){let h=[];for(let _ in a)if(a.hasOwnProperty(_)){let w=a[_];h.push(_+":"+("string"==typeof w?JSON.stringify(w):li(w)))}d=`{${h.join(", ")}}`}return`${e}${o?"("+o+")":""}[${d}]: ${i.replace(J1,"\n ")}`}("\n"+i.message,d,e,o),i[Uz]=d,i[cp]=null,i}(_,a,"R3InjectorError",this.source)}throw _}finally{na(h),up(d)}}resolveInjectorInitializers(){const a=up(this),e=na(void 0);try{const o=this.get(Gd.multi,Un,at.Self);for(const d of o)d()}finally{up(a),na(e)}}toString(){const a=[],e=this.records;for(const o of e.keys())a.push(li(o));return`R3Injector[${a.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new Ce(205,!1)}processProvider(a){let e=jd(a=Nt(a))?a:Nt(a&&a.provide);const o=function dH(i){return A0(i)?Up(void 0,i.useValue):Up(UP(i),Vv)}(a);if(jd(a)||!0!==a.multi)this.records.get(e);else{let d=this.records.get(e);d||(d=Up(void 0,Vv,!0),d.factory=()=>Gg(d.multi),this.records.set(e,d)),e=a,d.multi.push(a)}this.records.set(e,o)}hydrate(a,e){return e.value===Vv&&(e.value=lH,e.value=e.factory()),"object"==typeof e.value&&e.value&&function Ih(i){return null!==i&&"object"==typeof i&&"function"==typeof i.ngOnDestroy}(e.value)&&this._ngOnDestroyHooks.add(e.value),e.value}injectableDefInScope(a){if(!a.providedIn)return!1;const e=Nt(a.providedIn);return"string"==typeof e?"any"===e||this.scopes.has(e):this.injectorDefTypes.has(e)}}function GP(i){const a=Nb(i),e=null!==a?a.factory:Pd(i);if(null!==e)return e;if(i instanceof be)throw new Ce(204,!1);if(i instanceof Function)return function cH(i){const a=i.length;if(a>0)throw hn(a,"?"),new Ce(204,!1);const e=function rh(i){const a=i&&(i[zg]||i[zI]);return a?(function Bb(i){if(i.hasOwnProperty("name"))return i.name;(""+i).match(/^function\s*([^\s(]+)/)}(i),a):null}(i);return null!==e?()=>e.factory(i):()=>new i}(i);throw new Ce(204,!1)}function UP(i,a,e){let o;if(jd(i)){const d=Nt(i);return Pd(d)||GP(d)}if(A0(i))o=()=>Nt(i.useValue);else if(function Nv(i){return!(!i||!i.useFactory)}(i))o=()=>i.useFactory(...Gg(i.deps||[]));else if(function eD(i){return!(!i||!i.useExisting)}(i))o=()=>ae(Nt(i.useExisting));else{const d=Nt(i&&(i.useClass||i.provide));if(!function nD(i){return!!i.deps}(i))return Pd(d)||GP(d);o=()=>new d(...Gg(i.deps))}return o}function Up(i,a,e=!1){return{factory:i,value:a,multi:e?[]:void 0}}function k0(i,a){for(const e of i)Array.isArray(e)?k0(e,a):e&&VI(e)?k0(e.\u0275providers,a):a(e)}class Rc{}class Rl{}class WP{resolveComponentFactory(a){throw function $P(i){const a=Error(`No component factory found for ${li(i)}. Did you add it to @NgModule.entryComponents?`);return a.ngComponent=i,a}(a)}}let Ol=(()=>{class i{}return i.NULL=new WP,i})();function YP(){return $d(yr(),De())}function $d(i,a){return new Be(_r(i,a))}let Be=(()=>{class i{constructor(e){this.nativeElement=e}}return i.__NG_ELEMENT_ID__=YP,i})();function hH(i){return i instanceof Be?i.nativeElement:i}class Ph{}let Oc=(()=>{class i{}return i.__NG_ELEMENT_ID__=()=>function fH(){const i=De(),e=aa(yr().index,i);return(ao(e)?e:i)[dn]}(),i})(),pH=(()=>{class i{}return i.\u0275prov=ke({token:i,providedIn:"root",factory:()=>null}),i})();class Wd{constructor(a){this.full=a,this.major=a.split(".")[0],this.minor=a.split(".")[1],this.patch=a.split(".").slice(2).join(".")}}const mH=new Wd("15.2.7"),Ll={},iD="ngOriginalError";function Gv(i){return i[iD]}class Fl{constructor(){this._console=console}handleError(a){const e=this._findOriginalError(a);this._console.error("ERROR",a),e&&this._console.error("ORIGINAL ERROR",e)}_findOriginalError(a){let e=a&&Gv(a);for(;e&&Gv(e);)e=Gv(e);return e||null}}function rD(i){return i.ownerDocument.defaultView}function qP(i){return i.ownerDocument}function Lc(i){return i instanceof Function?i():i}function Fc(i,a,e){let o=i.length;for(;;){const d=i.indexOf(a,e);if(-1===d)return d;if(0===d||i.charCodeAt(d-1)<=32){const h=a.length;if(d+h===o||i.charCodeAt(d+h)<=32)return d}e=d+1}}const oD="ng-template";function $v(i,a,e){let o=0,d=!0;for(;oh?"":d[B+1].toLowerCase();const Z=8&o?W:null;if(Z&&-1!==Fc(Z,k,0)||2&o&&k!==W){if(hs(o))return!1;_=!0}}}}else{if(!_&&!hs(o)&&!hs(D))return!1;if(_&&hs(D))continue;_=!1,o=D|1&o}}return hs(o)||_}function hs(i){return 0==(1&i)}function sD(i,a,e,o){if(null===a)return-1;let d=0;if(o||!e){let h=!1;for(;d-1)for(e++;e0?'="'+w+'"':"")+"]"}else 8&o?d+="."+_:4&o&&(d+=" "+_);else""!==d&&!hs(_)&&(a+=KP(h,d),d=""),o=_,h=h||!hs(o);e++}return""!==d&&(a+=KP(h,d)),a}const Yt={};function N(i){Lh(gn(),De(),ya()+i,!1)}function Lh(i,a,e,o){if(!o)if(3==(3&a[cn])){const h=i.preOrderCheckHooks;null!==h&&Cp(a,h,e)}else{const h=i.preOrderHooks;null!==h&&Cc(a,h,0,e)}Us(e)}function rR(i,a=null,e=null,o){const d=dD(i,a,e,o);return d.resolveInjectorInitializers(),d}function dD(i,a=null,e=null,o,d=new Set){const h=[e||Un,sH(i)];return o=o||("object"==typeof i?void 0:li(i)),new Hv(h,a||zv(),o||null,d)}let Qi=(()=>{class i{static create(e,o){if(Array.isArray(e))return rR({name:""},o,e,"");{var d;const h=null!==(d=e.name)&&void 0!==d?d:"";return rR({name:h},e.parent,e.providers,h)}}}return i.THROW_IF_NOT_FOUND=lp,i.NULL=new zp,i.\u0275prov=ke({token:i,providedIn:"any",factory:()=>ae(Lv)}),i.__NG_ELEMENT_ID__=-1,i})();function F(i,a=at.Default){const e=De();return null===e?ae(i,a):vS(yr(),e,Nt(i),a)}function Js(){throw new Error("invalid")}function Xp(i,a){const e=i.contentQueries;if(null!==e)for(let o=0;oci&&Lh(i,a,ci,!1),Ki(_?2:0,d),e(o,d)}finally{Us(h),Ki(_?3:1,d)}}function Zp(i,a,e){if(gp(a)){const d=a.directiveEnd;for(let h=a.directiveStart;h0;){const e=i[--a];if("number"==typeof e&&e<0)return e}return 0})(_)!=w&&_.push(w),_.push(e,o,h)}}(i,a,o,Kd(i,e,d.hostVars,Yt),d)}function Nl(i,a,e,o,d,h){const _=_r(i,a);!function zh(i,a,e,o,d,h,_){if(null==h)i.removeAttribute(a,d,e);else{const w=null==_?Wt(h):_(h,o||"",d);i.setAttribute(a,d,w,e)}}(a[dn],_,h,i.value,e,o,d)}function Jd(i,a,e,o,d,h){const _=h[a];if(null!==_){const w=o.setInput;for(let D=0;D<_.length;){const k=_[D++],P=_[D++],B=_[D++];null!==w?o.setInput(e,B,k,P):e[P]=B}}}function Kp(i,a,e){let o=null,d=0;for(;d0&&qt(e)}}function qt(i){for(let o=Cv(i);null!==o;o=NS(o))for(let d=Ha;d0&&qt(h)}const e=i[it].components;if(null!==e)for(let o=0;o0&&qt(d)}}function fR(i,a){const e=aa(a,i),o=e[it];(function Jp(i,a){for(let e=a.length;e-1&&(Ca(a,o),h0(e,o))}this._attachedToViewContainer=!1}Ua(this._lView[it],this._lView)}onDestroy(a){vD(this._lView[it],this._lView,null,a)}markForCheck(){Qv(this._cdRefInjectingView||this._lView)}detach(){this._lView[cn]&=-65}reattach(){this._lView[cn]|=64}detectChanges(){$a(this._lView[it],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new Ce(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function V4(i,a){Ks(i,a,a[dn],2,null,null)}(this._lView[it],this._lView)}attachToAppRef(a){if(this._attachedToViewContainer)throw new Ce(902,!1);this._appRef=a}}class MD extends Gh{constructor(a){super(a),this._view=a}detectChanges(){const a=this._view;$a(a[it],a,a[lr],!1)}checkNoChanges(){}get context(){return null}}class pR extends Ol{constructor(a){super(),this.ngModule=a}resolveComponentFactory(a){const e=Cn(a);return new e_(e,this.ngModule)}}function TD(i){const a=[];for(let e in i)i.hasOwnProperty(e)&&a.push({propName:i[e],templateName:e});return a}class AD{constructor(a,e){this.injector=a,this.parentInjector=e}get(a,e,o){o=zb(o);const d=this.injector.get(a,Ll,o);return d!==Ll||e===Ll?d:this.parentInjector.get(a,e,o)}}class e_ extends Rl{get inputs(){return TD(this.componentDef.inputs)}get outputs(){return TD(this.componentDef.outputs)}constructor(a,e){super(),this.componentDef=a,this.ngModule=e,this.componentType=a.type,this.selector=function JP(i){return i.map(QP).join(",")}(a.selectors),this.ngContentSelectors=a.ngContentSelectors?a.ngContentSelectors:[],this.isBoundToModule=!!e}create(a,e,o,d){var h;let _=(d=d||this.ngModule)instanceof qr?d:null===(h=d)||void 0===h?void 0:h.injector;_&&null!==this.componentDef.getStandaloneInjector&&(_=this.componentDef.getStandaloneInjector(_)||_);const w=_?new AD(a,_):a,D=w.get(Ph,null);if(null===D)throw new Ce(407,!1);const k=w.get(pH,null),P=D.createRenderer(null,this.componentDef),B=this.componentDef.selectors[0][0]||"div",W=o?function dR(i,a,e){return i.selectRootElement(a,e===Ar.ShadowDom)}(P,o,this.componentDef.encapsulation):Bp(P,B,function mR(i){const a=i.toLowerCase();return"svg"===a?ZI:"math"===a?"math":null}(B)),Z=this.componentDef.onPush?288:272,te=N0(0,null,null,1,0,null,null,null,null,null),ie=Zv(null,te,null,Z,null,null,D,P,k,w,null);let de,he;Qb(ie);try{const Me=this.componentDef;let fe,Fe=null;Me.findHostDirectiveDefs?(fe=[],Fe=new Map,Me.findHostDirectiveDefs(Me,fe,Fe),fe.push(Me)):fe=[Me];const yn=function LH(i,a){const e=i[it],o=ci;return i[o]=a,Xd(e,o,2,"#host",null)}(ie,W),ti=function kD(i,a,e,o,d,h,_,w){const D=d[it];!function ED(i,a,e,o){for(const d of i)a.mergedAttrs=ov(a.mergedAttrs,d.hostAttrs);null!==a.mergedAttrs&&(U0(a,a.mergedAttrs,!0),null!==e&&US(o,e,a))}(o,i,a,_);const k=h.createRenderer(a,e),P=Zv(d,gD(e),null,e.onPush?32:16,d[i.index],i,h,k,w||null,null,null);return D.firstCreatePass&&Bc(D,i,o.length-1),G0(d,P),d[i.index]=P}(yn,W,Me,fe,ie,D,P);he=qb(te,ci),W&&function gR(i,a,e,o){if(o)xo(i,e,["ng-version",mH.full]);else{const{attrs:d,classes:h}=function eR(i){const a=[],e=[];let o=1,d=2;for(;o0&&C0(i,e,h.join(" "))}}(P,Me,W,o),void 0!==e&&function NH(i,a,e){const o=i.projection=[];for(let d=0;d=0;o--){const d=i[o];d.hostVars=a+=d.hostVars,d.hostAttrs=ov(d.hostAttrs,e=ov(e,d.hostAttrs))}}(o)}function ID(i){return i===wl?{}:i===Un?[]:i}function BH(i,a){const e=i.viewQuery;i.viewQuery=e?(o,d)=>{a(o,d),e(o,d)}:a}function hX(i,a){const e=i.contentQueries;i.contentQueries=e?(o,d,h)=>{a(o,d,h),e(o,d,h)}:a}function _R(i,a){const e=i.hostBindings;i.hostBindings=e?(o,d)=>{a(o,d),e(o,d)}:a}function t_(i){return!!eu(i)&&(Array.isArray(i)||!(i instanceof Map)&&Symbol.iterator in i)}function eu(i){return null!==i&&("function"==typeof i||"object"==typeof i)}function zl(i,a,e){return i[a]=e}function Ma(i,a,e){return!Object.is(i[a],e)&&(i[a]=e,!0)}function Uh(i,a,e,o){const d=Ma(i,a,e);return Ma(i,a+1,o)||d}function Ve(i,a,e,o){const d=De();return Ma(d,yh(),a)&&(gn(),Nl(ki(),d,i,a,e,o)),Ve}function jh(i,a,e,o){return Ma(i,yh(),e)?a+Wt(e)+o:Yt}function tu(i,a,e,o,d,h){const w=Uh(i,function wc(){return zt.lFrame.bindingIndex}(),e,d);return Dl(2),w?a+Wt(e)+o+Wt(d)+h:Yt}function J(i,a,e,o,d,h,_,w){const D=De(),k=gn(),P=i+ci,B=k.firstCreatePass?function AR(i,a,e,o,d,h,_,w,D){const k=a.consts,P=Xd(a,i,4,_||null,Rd(k,w));wD(a,e,P,Rd(k,D)),n0(a,P);const B=P.tView=N0(2,P,o,d,h,a.directiveRegistry,a.pipeRegistry,null,a.schemas,k);return null!==a.queries&&(a.queries.template(a,P),B.queries=a.queries.embeddedTView(P)),P}(P,k,D,a,e,o,d,h,_):k.data[P];Sl(B,!1);const W=D[dn].createComment("");Xs(k,D,W,B),xa(W,D),G0(D,D[P]=SD(W,D,W,B)),fh(B)&&mD(k,D,B),null!=_&&F0(D,B,w)}function on(i){return _h(function s4(){return zt.lFrame.contextLView}(),ci+i)}function z(i,a,e){const o=De();return Ma(o,yh(),a)&&ja(gn(),ki(),o,i,a,o[dn],e,!1),z}function ND(i,a,e,o,d){const _=d?"class":"style";Lr(i,e,a.inputs[_],_,o)}function I(i,a,e,o){const d=De(),h=gn(),_=ci+i,w=d[dn],D=h.firstCreatePass?function Y0(i,a,e,o,d,h){const _=a.consts,D=Xd(a,i,2,o,Rd(_,d));return wD(a,e,D,Rd(_,h)),null!==D.attrs&&U0(D,D.attrs,!1),null!==D.mergedAttrs&&U0(D,D.mergedAttrs,!0),null!==a.queries&&a.queries.elementStart(a,D),D}(_,h,d,a,e,o):h.data[_],k=d[_]=Bp(w,a,function rv(){return zt.lFrame.currentNamespace}()),P=fh(D);return Sl(D,!0),US(w,k,D),32!=(32&D.flags)&&Xs(h,d,k,D),0===function a4(){return zt.lFrame.elementDepthCount}()&&xa(k,d),function wp(){zt.lFrame.elementDepthCount++}(),P&&(mD(h,d,D),Zp(h,D,d)),null!==o&&F0(d,D),I}function O(){let i=yr();sS()?lS():(i=i.parent,Sl(i,!1));const a=i;!function Kg(){zt.lFrame.elementDepthCount--}();const e=gn();return e.firstCreatePass&&(n0(e,i),gp(i)&&e.queries.elementEnd(i)),null!=a.classesWithoutHost&&function hS(i){return 0!=(8&i.flags)}(a)&&ND(e,a,De(),a.classesWithoutHost,!0),null!=a.stylesWithoutHost&&function f4(i){return 0!=(16&i.flags)}(a)&&ND(e,a,De(),a.stylesWithoutHost,!1),O}function pe(i,a,e,o){return I(i,a,e,o),O(),pe}function vn(i,a,e){const o=De(),d=gn(),h=i+ci,_=d.firstCreatePass?function jH(i,a,e,o,d){const h=a.consts,_=Rd(h,o),w=Xd(a,i,8,"ng-container",_);return null!==_&&U0(w,_,!0),wD(a,e,w,Rd(h,d)),null!==a.queries&&a.queries.elementStart(a,w),w}(h,d,o,a,e):d.data[h];Sl(_,!0);const w=o[h]=o[dn].createComment("");return Xs(d,o,w,_),xa(w,o),fh(_)&&(mD(d,o,_),Zp(d,_,o)),null!=e&&F0(o,_),vn}function wn(){let i=yr();const a=gn();return sS()?lS():(i=i.parent,Sl(i,!1)),a.firstCreatePass&&(n0(a,i),gp(i)&&a.queries.elementEnd(i)),wn}function uo(i,a,e){return vn(i,a,e),wn(),uo}function Ee(){return De()}function im(i){return!!i&&"function"==typeof i.then}function BD(i){return!!i&&"function"==typeof i.subscribe}const zc=BD;function Q(i,a,e,o){const d=De(),h=gn(),_=yr();return VD(h,d,d[dn],_,i,a,o),Q}function Ul(i,a){const e=yr(),o=De(),d=gn();return VD(d,o,el(ev(d.data),e,o),e,i,a),Ul}function VD(i,a,e,o,d,h,_){const w=fh(o),k=i.firstCreatePass&&DD(i),P=a[lr],B=Bl(a);let W=!0;if(3&o.type||_){const ie=_r(o,a),de=_?_(ie):ie,he=B.length,Me=_?Fe=>_(Ir(Fe[o.index])):o.index;let fe=null;if(!_&&w&&(fe=function ER(i,a,e,o){const d=i.cleanup;if(null!=d)for(let h=0;hD?w[D]:null}"string"==typeof _&&(h+=2)}return null}(i,a,d,o.index)),null!==fe)(fe.__ngLastListenerFn__||fe).__ngNextListenerFn__=h,fe.__ngLastListenerFn__=h,W=!1;else{h=HD(o,a,P,h,!1);const Fe=e.listen(de,d,h);B.push(h,Fe),k&&k.push(d,Me,he,he+1)}}else h=HD(o,a,P,h,!1);const Z=o.outputs;let te;if(W&&null!==Z&&(te=Z[d])){const ie=te.length;if(ie)for(let de=0;de-1?aa(i.index,a):a);let D=zD(a,e,o,_),k=h.__ngNextListenerFn__;for(;k;)D=zD(a,e,k,_)&&D,k=k.__ngNextListenerFn__;return d&&!1===D&&(_.preventDefault(),_.returnValue=!1),D}}function X(i=1){return function Jb(i){return(zt.lFrame.contextLView=function e0(i,a){for(;i>0;)a=a[pp],i--;return a}(i,zt.lFrame.contextLView))[lr]}(i)}function IR(i,a){let e=null;const o=function Or(i){const a=i.attrs;if(null!=a){const e=a.indexOf(5);if(!(1&e))return a[e+1]}return null}(i);for(let d=0;d>17&32767}function Z0(i){return 2|i}function Wh(i){return(131068&i)>>2}function r_(i,a){return-131069&i|a<<2}function jD(i){return 1|i}function xn(i,a,e,o,d){const h=i[e+1],_=null===a;let w=o?iu(h):Wh(h),D=!1;for(;0!==w&&(!1===D||_);){const P=i[w+1];ru(i[w],a)&&(D=!0,i[w+1]=o?jD(P):Z0(P)),w=o?iu(P):Wh(P)}D&&(i[e+1]=o?Z0(h):jD(h))}function ru(i,a){return null===i||null==a||(Array.isArray(i)?i[1]:i)===a||!(!Array.isArray(i)||"string"!=typeof a)&&kp(i,a)>=0}const Fr={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function $D(i){return i.substring(Fr.key,Fr.keyEnd)}function WD(i,a){const e=Fr.textEnd;return e===a?-1:(a=Fr.keyEnd=function XH(i,a,e){for(;a32;)a++;return a}(i,Fr.key=a,e),rm(i,a,e))}function rm(i,a,e){for(;a=0;e=WD(a,e))oo(i,$D(a),!0)}function gs(i,a,e,o){const d=De(),h=gn(),_=Dl(2);h.firstUpdatePass&&Q0(h,i,_,o),a!==Yt&&Ma(d,_,a)&&KD(h,h.data[ya()],d,d[dn],i,d[_+1]=function e8(i,a){return null==i||""===i||("string"==typeof a?i+=a:"object"==typeof i&&(i=li(Eo(i)))),i}(a,e),o,_)}function qD(i,a){return a>=i.expandoStartIndex}function Q0(i,a,e,o){const d=i.data;if(null===d[e+1]){const h=d[ya()],_=qD(i,e);HR(h,o)&&null===a&&!_&&(a=!1),a=function a_(i,a,e,o){const d=ev(i);let h=o?a.residualClasses:a.residualStyles;if(null===d)0===(o?a.classBindings:a.styleBindings)&&(e=Yh(e=XD(null,i,a,e,o),a.attrs,o),h=null);else{const _=a.directiveStylingLast;if(-1===_||i[_]!==d)if(e=XD(d,i,a,e,o),null===h){let D=function am(i,a,e){const o=e?a.classBindings:a.styleBindings;if(0!==Wh(o))return i[iu(o)]}(i,a,o);void 0!==D&&Array.isArray(D)&&(D=XD(null,i,a,D[1],o),D=Yh(D,a.attrs,o),function JH(i,a,e,o){i[iu(e?a.classBindings:a.styleBindings)]=o}(i,a,o,D))}else h=function VR(i,a,e){let o;const d=a.directiveEnd;for(let h=1+a.directiveStylingLast;h0)&&(k=!0)):P=e,d)if(0!==D){const W=iu(i[w+1]);i[o+1]=nu(W,w),0!==W&&(i[W+1]=r_(i[W+1],o)),i[w+1]=function WH(i,a){return 131071&i|a<<17}(i[w+1],o)}else i[o+1]=nu(w,0),0!==w&&(i[w+1]=r_(i[w+1],o)),w=o;else i[o+1]=nu(D,0),0===w?w=o:i[D+1]=r_(i[D+1],o),D=o;k&&(i[o+1]=Z0(i[o+1])),xn(i,P,o,!0),xn(i,P,o,!1),function vX(i,a,e,o,d){const h=d?i.residualClasses:i.residualStyles;null!=h&&"string"==typeof a&&kp(h,a)>=0&&(e[o+1]=jD(e[o+1]))}(a,P,i,o,h),_=nu(w,D),h?a.classBindings=_:a.styleBindings=_}(d,h,a,e,_,o)}}function XD(i,a,e,o,d){let h=null;const _=e.directiveEnd;let w=e.directiveStylingLast;for(-1===w?w=e.directiveStart:w++;w<_&&(h=a[w],o=Yh(o,h.hostAttrs,d),h!==i);)w++;return null!==i&&(e.directiveStylingLast=w),o}function Yh(i,a,e){const o=e?1:2;let d=-1;if(null!==a)for(let h=0;h0;){const D=i[d],k=Array.isArray(D),P=k?D[1]:D,B=null===P;let W=e[d+1];W===Yt&&(W=B?Un:void 0);let Z=B?mv(W,o):P===o?W:void 0;if(k&&!o_(Z)&&(Z=mv(D,o)),o_(Z)&&(w=Z,_))return w;const te=i[d+1];d=_?iu(te):Wh(te)}if(null!==a){let D=h?a.residualClasses:a.residualStyles;null!=D&&(w=mv(D,o))}return w}function o_(i){return void 0!==i}function HR(i,a){return 0!=(i.flags&(a?8:16))}function Y(i,a=""){const e=De(),o=gn(),d=i+ci,h=o.firstCreatePass?Xd(o,d,1,a,null):o.data[d],_=e[d]=function y0(i,a){return i.createText(a)}(e[dn],a);Xs(o,e,_,h),Sl(h,!1)}function Sn(i){return Ie("",i,""),Sn}function Ie(i,a,e){const o=De(),d=jh(o,i,a,e);return d!==Yt&&Vl(o,ya(),d),Ie}function qh(i,a,e,o,d){const h=De(),_=tu(h,i,a,e,o,d);return _!==Yt&&Vl(h,ya(),_),qh}function eM(i,a,e){!function vs(i,a,e,o){const d=gn(),h=Dl(2);d.firstUpdatePass&&Q0(d,null,h,o);const _=De();if(e!==Yt&&Ma(_,h,e)){const w=d.data[ya()];if(HR(w,o)&&!qD(d,h)){let D=o?w.classesWithoutHost:w.stylesWithoutHost;null!==D&&(e=Yn(D,e||"")),ND(d,w,_,e,o)}else!function J0(i,a,e,o,d,h,_,w){d===Yt&&(d=Un);let D=0,k=0,P=0>20;if(jd(i)||!i.multi){const Z=new bh(D,d,F),te=_w(w,a,d?P:P+W,B);-1===te?(dv(cv(k,_),h,w),lu(h,i,a.length),a.push(w),k.directiveStart++,k.directiveEnd++,d&&(k.providerIndexes+=1048576),e.push(Z),_.push(Z)):(e[te]=Z,_[te]=Z)}else{const Z=_w(w,a,P+W,B),te=_w(w,a,P,P+W),de=te>=0&&e[te];if(d&&!de||!d&&!(Z>=0&&e[Z])){dv(cv(k,_),h,w);const he=function x2(i,a,e,o,d){const h=new bh(i,e,F);return h.multi=[],h.index=a,h.componentProviders=0,hm(h,d,o&&!e),h}(d?C8:_M,e.length,d,o,D);!d&&de&&(e[te].providerFactory=he),lu(h,i,a.length,0),a.push(w),k.directiveStart++,k.directiveEnd++,d&&(k.providerIndexes+=1048576),e.push(he),_.push(he)}else lu(h,i,Z>-1?Z:te,hm(e[d?te:Z],D,!d&&o));!d&&o&&de&&e[te].componentProviders++}}}function lu(i,a,e,o){const d=jd(a),h=function HP(i){return!!i.useClass}(a);if(d||h){const D=(h?Nt(a.useClass):a).prototype.ngOnDestroy;if(D){const k=i.destroyHooks||(i.destroyHooks=[]);if(!d&&a.multi){const P=k.indexOf(e);-1===P?k.push(e,[o,D]):k[P+1].push(o,D)}else k.push(e,D)}}}function hm(i,a,e){return e&&i.componentProviders++,i.multi.push(a)-1}function _w(i,a,e,o){for(let d=e;d{e.providersResolver=(o,d)=>function vM(i,a,e){const o=gn();if(o.firstCreatePass){const d=Ur(i);vw(e,o.data,o.blueprint,d,!0),vw(a,o.data,o.blueprint,d,!1)}}(o,d?d(i):i,a)}}class ef{}class C2{}class bM extends ef{constructor(a,e){super(),this._parent=e,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new pR(this);const o=ia(a);this._bootstrapComponents=Lc(o.bootstrap),this._r3Injector=dD(a,e,[{provide:ef,useValue:this},{provide:Ol,useValue:this.componentFactoryResolver}],li(a),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(a)}get injector(){return this._r3Injector}destroy(){const a=this._r3Injector;!a.destroyed&&a.destroy(),this.destroyCbs.forEach(e=>e()),this.destroyCbs=null}onDestroy(a){this.destroyCbs.push(a)}}class wM extends C2{constructor(a){super(),this.moduleType=a}create(a){return new bM(this.moduleType,a)}}class D8 extends ef{constructor(a,e,o){super(),this.componentFactoryResolver=new pR(this),this.instance=null;const d=new Hv([...a,{provide:ef,useValue:this},{provide:Ol,useValue:this.componentFactoryResolver}],e||zv(),o,new Set(["environment"]));this.injector=d,d.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(a){this.injector.onDestroy(a)}}function yw(i,a,e=null){return new D8(i,a,e).injector}let Vn=(()=>{class i{constructor(e){this._injector=e,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(e){if(!e.standalone)return null;if(!this.cachedInjectors.has(e.id)){const o=Ud(0,e.type),d=o.length>0?yw([o],this._injector,`Standalone[${e.type.name}]`):null;this.cachedInjectors.set(e.id,d)}return this.cachedInjectors.get(e.id)}ngOnDestroy(){try{for(const e of this.cachedInjectors.values())null!==e&&e.destroy()}finally{this.cachedInjectors.clear()}}}return i.\u0275prov=ke({token:i,providedIn:"environment",factory:()=>new i(ae(qr))}),i})();function fm(i){i.getStandaloneInjector=a=>a.get(Vn).getOrCreateStandaloneInjector(i)}function ww(i,a,e){const o=_a()+i,d=De();return d[o]===Yt?zl(d,o,e?a.call(e):a()):function n_(i,a){return i[a]}(d,o)}function du(i,a,e,o){return DM(De(),_a(),i,a,e,o)}function xw(i,a,e,o,d){return __(De(),_a(),i,a,e,o,d)}function $c(i,a){const e=i[a];return e===Yt?void 0:e}function DM(i,a,e,o,d,h){const _=a+e;return Ma(i,_,d)?zl(i,_+1,h?o.call(h,d):o(d)):$c(i,_+1)}function __(i,a,e,o,d,h,_){const w=a+e;return Uh(i,w,d,h)?zl(i,w+2,_?o.call(_,d,h):o(d,h)):$c(i,w+2)}function uu(i,a){const e=gn();let o;const d=i+ci;var h;e.firstCreatePass?(o=function Ya(i,a){if(a)for(let e=a.length-1;e>=0;e--){const o=a[e];if(i===o.name)return o}}(a,e.pipeRegistry),e.data[d]=o,o.onDestroy&&(null!==(h=e.destroyHooks)&&void 0!==h?h:e.destroyHooks=[]).push(d,o.onDestroy)):o=e.data[d];const _=o.factory||(o.factory=Pd(o.type)),w=na(F);try{const D=fS(!1),k=_();return fS(D),function kR(i,a,e,o){e>=i.data.length&&(i.data[e]=null,i.blueprint[e]=null),a[e]=o}(e,De(),d,k),k}finally{na(w)}}function Wc(i,a,e){const o=i+ci,d=De(),h=_h(d,o);return nf(d,o)?DM(d,_a(),a,h.transform,e,h):h.transform(e)}function Cw(i,a,e,o){const d=i+ci,h=De(),_=_h(h,d);return nf(h,d)?__(h,_a(),a,_.transform,e,o,_):_.transform(e,o)}function nf(i,a){return i[it].data[a].pure}function kM(i){return a=>{setTimeout(i,void 0,a)}}const we=class k2 extends He{constructor(a=!1){super(),this.__isAsync=a}emit(a){super.next(a)}subscribe(a,e,o){let d=a,h=e||(()=>null),_=o;if(a&&"object"==typeof a){var w,D,k;const B=a;d=null===(w=B.next)||void 0===w?void 0:w.bind(B),h=null===(D=B.error)||void 0===D?void 0:D.bind(B),_=null===(k=B.complete)||void 0===k?void 0:k.bind(B)}this.__isAsync&&(h=kM(h),d&&(d=kM(d)),_&&(_=kM(_)));const P=super.subscribe({next:d,error:h,complete:_});return a instanceof xt&&a.add(P),P}};function EM(){return this._results[Symbol.iterator]()}class _s{get changes(){return this._changes||(this._changes=new we)}constructor(a=!1){this._emitDistinctChangesOnly=a,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const e=_s.prototype;e[Symbol.iterator]||(e[Symbol.iterator]=EM)}get(a){return this._results[a]}map(a){return this._results.map(a)}filter(a){return this._results.filter(a)}find(a){return this._results.find(a)}reduce(a,e){return this._results.reduce(a,e)}forEach(a){this._results.forEach(a)}some(a){return this._results.some(a)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(a,e){const o=this;o.dirty=!1;const d=function ls(i){return i.flat(Number.POSITIVE_INFINITY)}(a);(this._changesDetected=!function hP(i,a,e){if(i.length!==a.length)return!1;for(let o=0;o{class i{}return i.__NG_ELEMENT_ID__=z8,i})();const E2=ii,gm=class extends E2{constructor(a,e,o){super(),this._declarationLView=a,this._declarationTContainer=e,this.elementRef=o}createEmbeddedView(a,e){const o=this._declarationTContainer.tView,d=Zv(this._declarationLView,o,a,16,null,o.declTNode,null,null,null,null,e||null);d[Yg]=this._declarationLView[this._declarationTContainer.index];const _=this._declarationLView[rs];return null!==_&&(d[rs]=_.createEmbeddedView(o)),Fh(o,d,a),new Gh(d)}};function z8(){return ql(yr(),De())}function ql(i,a){return 4&i.type?new gm(a,i,$d(i,a)):null}let mi=(()=>{class i{}return i.__NG_ELEMENT_ID__=H8,i})();function H8(){return R2(yr(),De())}const G8=mi,I2=class extends G8{constructor(a,e,o){super(),this._lContainer=a,this._hostTNode=e,this._hostLView=o}get element(){return $d(this._hostTNode,this._hostLView)}get injector(){return new Dc(this._hostTNode,this._hostLView)}get parentInjector(){const a=Fd(this._hostTNode,this._hostLView);if(a0(a)){const e=o0(a,this._hostLView),o=lv(a);return new Dc(e[it].data[o+8],e)}return new Dc(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(a){const e=P2(this._lContainer);return null!==e&&e[a]||null}get length(){return this._lContainer.length-Ha}createEmbeddedView(a,e,o){let d,h;"number"==typeof o?d=o:null!=o&&(d=o.index,h=o.injector);const _=a.createEmbeddedView(e||{},h);return this.insert(_,d),_}createComponent(a,e,o,d,h){const _=a&&!function pv(i){return"function"==typeof i}(a);let w;if(_)w=e;else{const B=e||{};w=B.index,o=B.injector,d=B.projectableNodes,h=B.environmentInjector||B.ngModuleRef}const D=_?a:new e_(Cn(a)),k=o||this.parentInjector;if(!h&&null==D.ngModule){const W=(_?k:this.parentInjector).get(qr,null);W&&(h=W)}const P=D.create(k,d,void 0,h);return this.insert(P.hostView,w),P}insert(a,e){const o=a._lView,d=o[it];if(function aS(i){return wo(i[Zi])}(o)){const P=this.indexOf(a);if(-1!==P)this.detach(P);else{const B=o[Zi],W=new I2(B,B[Gr],B[Zi]);W.detach(W.indexOf(a))}}const h=this._adjustIndex(e),_=this._lContainer;!function VS(i,a,e,o){const d=Ha+o,h=e.length;o>0&&(e[d-1][za]=a),o0)o.push(_[w/2]);else{const k=h[w+1],P=a[-D];for(let B=Ha;B{class i{constructor(e){this.appInits=e,this.resolve=da,this.reject=da,this.initialized=!1,this.done=!1,this.donePromise=new Promise((o,d)=>{this.resolve=o,this.reject=d})}runInitializers(){if(this.initialized)return;const e=[],o=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let d=0;d{h.subscribe({complete:w,error:D})});e.push(_)}}Promise.all(e).then(()=>{o()}).catch(d=>{this.reject(d)}),0===e.length&&o(),this.initialized=!0}}return i.\u0275fac=function(e){return new(e||i)(ae(w_,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const sf=new be("AppId",{providedIn:"root",factory:function tO(){return`${Iw()}${Iw()}${Iw()}`}});function Iw(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const jM=new be("Platform Initializer"),x_=new be("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),Ei=new be("AnimationModuleType");let xm=(()=>{class i{log(e){console.log(e)}warn(e){console.warn(e)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"platform"}),i})();const Oo=new be("LocaleId",{providedIn:"root",factory:()=>St(Oo,at.Optional|at.SkipSelf)||function $M(){return typeof $localize<"u"&&$localize.locale||sm}()});class C_{constructor(a,e){this.ngModuleFactory=a,this.componentFactories=e}}let Cm=(()=>{class i{compileModuleSync(e){return new wM(e)}compileModuleAsync(e){return Promise.resolve(this.compileModuleSync(e))}compileModuleAndAllComponentsSync(e){const o=this.compileModuleSync(e),h=Lc(ia(e).declarations).reduce((_,w)=>{const D=Cn(w);return D&&_.push(new e_(D)),_},[]);return new C_(o,h)}compileModuleAndAllComponentsAsync(e){return Promise.resolve(this.compileModuleAndAllComponentsSync(e))}clearCache(){}clearCacheFor(e){}getModuleId(e){}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const ws=(()=>Promise.resolve(0))();function Pw(i){typeof Zone>"u"?ws.then(()=>{i&&i.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",i)}class et{constructor({enableLongStackTrace:a=!1,shouldCoalesceEventChangeDetection:e=!1,shouldCoalesceRunChangeDetection:o=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new we(!1),this.onMicrotaskEmpty=new we(!1),this.onStable=new we(!1),this.onError=new we(!1),typeof Zone>"u")throw new Ce(908,!1);Zone.assertZonePatched();const d=this;d._nesting=0,d._outer=d._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(d._inner=d._inner.fork(new Zone.TaskTrackingZoneSpec)),a&&Zone.longStackTraceZoneSpec&&(d._inner=d._inner.fork(Zone.longStackTraceZoneSpec)),d.shouldCoalesceEventChangeDetection=!o&&e,d.shouldCoalesceRunChangeDetection=o,d.lastRequestAnimationFrameId=-1,d.nativeRequestAnimationFrame=function Rw(){let i=Ai.requestAnimationFrame,a=Ai.cancelAnimationFrame;if(typeof Zone<"u"&&i&&a){const e=i[Zone.__symbol__("OriginalDelegate")];e&&(i=e);const o=a[Zone.__symbol__("OriginalDelegate")];o&&(a=o)}return{nativeRequestAnimationFrame:i,nativeCancelAnimationFrame:a}}().nativeRequestAnimationFrame,function qM(i){const a=()=>{!function D_(i){i.isCheckStableRunning||-1!==i.lastRequestAnimationFrameId||(i.lastRequestAnimationFrameId=i.nativeRequestAnimationFrame.call(Ai,()=>{i.fakeTopEventTask||(i.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{i.lastRequestAnimationFrameId=-1,M_(i),i.isCheckStableRunning=!0,Sm(i),i.isCheckStableRunning=!1},void 0,()=>{},()=>{})),i.fakeTopEventTask.invoke()}),M_(i))}(i)};i._inner=i._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(e,o,d,h,_,w)=>{try{return T_(i),e.invokeTask(d,h,_,w)}finally{(i.shouldCoalesceEventChangeDetection&&"eventTask"===h.type||i.shouldCoalesceRunChangeDetection)&&a(),XM(i)}},onInvoke:(e,o,d,h,_,w,D)=>{try{return T_(i),e.invoke(d,h,_,w,D)}finally{i.shouldCoalesceRunChangeDetection&&a(),XM(i)}},onHasTask:(e,o,d,h)=>{e.hasTask(d,h),o===d&&("microTask"==h.change?(i._hasPendingMicrotasks=h.microTask,M_(i),Sm(i)):"macroTask"==h.change&&(i.hasPendingMacrotasks=h.macroTask))},onHandleError:(e,o,d,h)=>(e.handleError(d,h),i.runOutsideAngular(()=>i.onError.emit(h)),!1)})}(d)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!et.isInAngularZone())throw new Ce(909,!1)}static assertNotInAngularZone(){if(et.isInAngularZone())throw new Ce(909,!1)}run(a,e,o){return this._inner.run(a,e,o)}runTask(a,e,o,d){const h=this._inner,_=h.scheduleEventTask("NgZoneEvent: "+d,a,IX,da,da);try{return h.runTask(_,e,o)}finally{h.cancelTask(_)}}runGuarded(a,e,o){return this._inner.runGuarded(a,e,o)}runOutsideAngular(a){return this._outer.run(a)}}const IX={};function Sm(i){if(0==i._nesting&&!i.hasPendingMicrotasks&&!i.isStable)try{i._nesting++,i.onMicrotaskEmpty.emit(null)}finally{if(i._nesting--,!i.hasPendingMicrotasks)try{i.runOutsideAngular(()=>i.onStable.emit(null))}finally{i.isStable=!0}}}function M_(i){i.hasPendingMicrotasks=!!(i._hasPendingMicrotasks||(i.shouldCoalesceEventChangeDetection||i.shouldCoalesceRunChangeDetection)&&-1!==i.lastRequestAnimationFrameId)}function T_(i){i._nesting++,i.isStable&&(i.isStable=!1,i.onUnstable.emit(null))}function XM(i){i._nesting--,Sm(i)}class ZM{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new we,this.onMicrotaskEmpty=new we,this.onStable=new we,this.onError=new we}run(a,e,o){return a.apply(e,o)}runGuarded(a,e,o){return a.apply(e,o)}runOutsideAngular(a){return a()}runTask(a,e,o,d){return a.apply(e,o)}}const gu=new be(""),lf=new be("");let eT,KM=(()=>{class i{constructor(e,o,d){this._ngZone=e,this.registry=o,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,eT||(function JM(i){eT=i}(d),d.addToWindow(o)),this._watchAngularEvents(),e.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{et.assertNotInAngularZone(),Pw(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Pw(()=>{for(;0!==this._callbacks.length;){let e=this._callbacks.pop();clearTimeout(e.timeoutId),e.doneCb(this._didWork)}this._didWork=!1});else{let e=this.getPendingTasks();this._callbacks=this._callbacks.filter(o=>!o.updateCb||!o.updateCb(e)||(clearTimeout(o.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(e=>({source:e.source,creationLocation:e.creationLocation,data:e.data})):[]}addCallback(e,o,d){let h=-1;o&&o>0&&(h=setTimeout(()=>{this._callbacks=this._callbacks.filter(_=>_.timeoutId!==h),e(this._didWork,this.getPendingTasks())},o)),this._callbacks.push({doneCb:e,timeoutId:h,updateCb:d})}whenStable(e,o,d){if(d&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(e,o,d),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(e){this.registry.registerApplication(e,this)}unregisterApplication(e){this.registry.unregisterApplication(e)}findProviders(e,o,d){return[]}}return i.\u0275fac=function(e){return new(e||i)(ae(et),ae(QM),ae(lf))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),QM=(()=>{class i{constructor(){this._applications=new Map}registerApplication(e,o){this._applications.set(e,o)}unregisterApplication(e){this._applications.delete(e)}unregisterAllApplications(){this._applications.clear()}getTestability(e){return this._applications.get(e)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(e,o=!0){var d,h;return null!==(d=null===(h=eT)||void 0===h?void 0:h.findTestabilityInTree(this,e,o))&&void 0!==d?d:null}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"platform"}),i})();const Yc=!1;let qc=null;const sO=new be("AllowMultipleToken"),tT=new be("PlatformDestroyListeners"),Ow=new be("appBootstrapListener");class Lw{constructor(a,e){this.name=a,this.token=e}}function iT(i,a,e=[]){const o=`Platform: ${a}`,d=new be(o);return(h=[])=>{let _=Fw();if(!_||_.injector.get(sO,!1)){const w=[...e,...h,{provide:d,useValue:!0}];i?i(w):function cO(i){if(qc&&!qc.get(sO,!1))throw new Ce(400,!1);qc=i;const a=i.get(Nw);(function A_(i){const a=i.get(jM,null);a&&a.forEach(e=>e())})(i)}(function rT(i=[],a){return Qi.create({name:a,providers:[{provide:Bv,useValue:"platform"},{provide:tT,useValue:new Set([()=>qc=null])},...i]})}(w,o))}return function sG(i){const a=Fw();if(!a)throw new Ce(401,!1);return a}()}}function Fw(){var i,a;return null!==(i=null===(a=qc)||void 0===a?void 0:a.get(Nw))&&void 0!==i?i:null}let Nw=(()=>{class i{constructor(e){this._injector=e,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(e,o){const d=function uO(i,a){let e;return e="noop"===i?new ZM:("zone.js"===i?void 0:i)||new et(a),e}(null==o?void 0:o.ngZone,function Bw(i){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!i||!i.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!i||!i.ngZoneRunCoalescing)||!1}}(o)),h=[{provide:et,useValue:d}];return d.run(()=>{const _=Qi.create({providers:h,parent:this.injector,name:e.moduleType.name}),w=e.create(_),D=w.injector.get(Fl,null);if(!D)throw new Ce(402,!1);return d.runOutsideAngular(()=>{const k=d.onError.subscribe({next:P=>{D.handleError(P)}});w.onDestroy(()=>{Vw(this._modules,w),k.unsubscribe()})}),function aT(i,a,e){try{const o=e();return im(o)?o.catch(d=>{throw a.runOutsideAngular(()=>i.handleError(d)),d}):o}catch(o){throw a.runOutsideAngular(()=>i.handleError(o)),o}}(D,d,()=>{const k=w.injector.get(wm);return k.runInitializers(),k.donePromise.then(()=>(function iM(i){io(i,"Expected localeId to be defined"),"string"==typeof i&&(s2=i.toLowerCase().replace(/_/g,"-"))}(w.injector.get(Oo,sm)||sm),this._moduleDoBootstrap(w),w))})})}bootstrapModule(e,o=[]){const d=hO({},o);return function oG(i,a,e){const o=new wM(e);return Promise.resolve(o)}(0,0,e).then(h=>this.bootstrapModuleFactory(h,d))}_moduleDoBootstrap(e){const o=e.injector.get(vu);if(e._bootstrapComponents.length>0)e._bootstrapComponents.forEach(d=>o.bootstrap(d));else{if(!e.instance.ngDoBootstrap)throw new Ce(-403,!1);e.instance.ngDoBootstrap(o)}this._modules.push(e)}onDestroy(e){this._destroyListeners.push(e)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new Ce(404,!1);this._modules.slice().forEach(o=>o.destroy()),this._destroyListeners.forEach(o=>o());const e=this._injector.get(tT,null);e&&(e.forEach(o=>o()),e.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return i.\u0275fac=function(e){return new(e||i)(ae(Qi))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"platform"}),i})();function hO(i,a){return Array.isArray(a)?a.reduce(hO,i):{...i,...a}}let vu=(()=>{class i{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(e,o,d){this._zone=e,this._injector=o,this._exceptionHandler=d,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const h=new Hn(w=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{w.next(this._stable),w.complete()})}),_=new Hn(w=>{let D;this._zone.runOutsideAngular(()=>{D=this._zone.onStable.subscribe(()=>{et.assertNotInAngularZone(),Pw(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,w.next(!0))})})});const k=this._zone.onUnstable.subscribe(()=>{et.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{w.next(!1)}))});return()=>{D.unsubscribe(),k.unsubscribe()}});this.isStable=Wn(h,_.pipe(Lb()))}bootstrap(e,o){const d=e instanceof Rl;if(!this._injector.get(wm).done){!d&&function is(i){const a=Cn(i)||Xi(i)||vr(i);return null!==a&&a.standalone}(e);throw new Ce(405,Yc)}let _;_=d?e:this._injector.get(Ol).resolveComponentFactory(e),this.componentTypes.push(_.componentType);const w=function nT(i){return i.isBoundToModule}(_)?void 0:this._injector.get(ef),k=_.create(Qi.NULL,[],o||_.selector,w),P=k.location.nativeElement,B=k.injector.get(gu,null);return null==B||B.registerApplication(P),k.onDestroy(()=>{this.detachView(k.hostView),Vw(this.components,k),null==B||B.unregisterApplication(P)}),this._loadComponent(k),k}tick(){if(this._runningTick)throw new Ce(101,!1);try{this._runningTick=!0;for(let e of this._views)e.detectChanges()}catch(e){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(e))}finally{this._runningTick=!1}}attachView(e){const o=e;this._views.push(o),o.attachToAppRef(this)}detachView(e){const o=e;Vw(this._views,o),o.detachFromAppRef()}_loadComponent(e){this.attachView(e.hostView),this.tick(),this.components.push(e);const o=this._injector.get(Ow,[]);o.push(...this._bootstrapListeners),o.forEach(d=>d(e))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(e=>e()),this._views.slice().forEach(e=>e.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(e){return this._destroyListeners.push(e),()=>Vw(this._destroyListeners,e)}destroy(){if(this._destroyed)throw new Ce(406,!1);const e=this._injector;e.destroy&&!e.destroyed&&e.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return i.\u0275fac=function(e){return new(e||i)(ae(et),ae(qr),ae(Fl))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function Vw(i,a){const e=i.indexOf(a);e>-1&&i.splice(e,1)}let Jt=(()=>{class i{}return i.__NG_ELEMENT_ID__=dG,i})();function dG(i){return function sT(i,a,e){if(vp(i)&&!e){const o=aa(i.index,a);return new Gh(o,o)}return 47&i.type?new Gh(a[ra],a):null}(yr(),De(),16==(16&i))}class $w{constructor(){}supports(a){return t_(a)}create(a){return new pT(a)}}const Ww=(i,a)=>a;class pT{constructor(a){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=a||Ww}forEachItem(a){let e;for(e=this._itHead;null!==e;e=e._next)a(e)}forEachOperation(a){let e=this._itHead,o=this._removalsHead,d=0,h=null;for(;e||o;){const _=!o||e&&e.currentIndex{_=this._trackByFn(d,w),null!==e&&Object.is(e.trackById,_)?(o&&(e=this._verifyReinsertion(e,w,_,d)),Object.is(e.item,w)||this._addIdentityChange(e,w)):(e=this._mismatch(e,w,_,d),o=!0),e=e._next,d++}),this.length=d;return this._truncate(e),this.collection=a,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let a;for(a=this._previousItHead=this._itHead;null!==a;a=a._next)a._nextPrevious=a._next;for(a=this._additionsHead;null!==a;a=a._nextAdded)a.previousIndex=a.currentIndex;for(this._additionsHead=this._additionsTail=null,a=this._movesHead;null!==a;a=a._nextMoved)a.previousIndex=a.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(a,e,o,d){let h;return null===a?h=this._itTail:(h=a._prev,this._remove(a)),null!==(a=null===this._unlinkedRecords?null:this._unlinkedRecords.get(o,null))?(Object.is(a.item,e)||this._addIdentityChange(a,e),this._reinsertAfter(a,h,d)):null!==(a=null===this._linkedRecords?null:this._linkedRecords.get(o,d))?(Object.is(a.item,e)||this._addIdentityChange(a,e),this._moveAfter(a,h,d)):a=this._addAfter(new pG(e,o),h,d),a}_verifyReinsertion(a,e,o,d){let h=null===this._unlinkedRecords?null:this._unlinkedRecords.get(o,null);return null!==h?a=this._reinsertAfter(h,a._prev,d):a.currentIndex!=d&&(a.currentIndex=d,this._addToMoves(a,d)),a}_truncate(a){for(;null!==a;){const e=a._next;this._addToRemovals(this._unlink(a)),a=e}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(a,e,o){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(a);const d=a._prevRemoved,h=a._nextRemoved;return null===d?this._removalsHead=h:d._nextRemoved=h,null===h?this._removalsTail=d:h._prevRemoved=d,this._insertAfter(a,e,o),this._addToMoves(a,o),a}_moveAfter(a,e,o){return this._unlink(a),this._insertAfter(a,e,o),this._addToMoves(a,o),a}_addAfter(a,e,o){return this._insertAfter(a,e,o),this._additionsTail=null===this._additionsTail?this._additionsHead=a:this._additionsTail._nextAdded=a,a}_insertAfter(a,e,o){const d=null===e?this._itHead:e._next;return a._next=d,a._prev=e,null===d?this._itTail=a:d._prev=a,null===e?this._itHead=a:e._next=a,null===this._linkedRecords&&(this._linkedRecords=new mO),this._linkedRecords.put(a),a.currentIndex=o,a}_remove(a){return this._addToRemovals(this._unlink(a))}_unlink(a){null!==this._linkedRecords&&this._linkedRecords.remove(a);const e=a._prev,o=a._next;return null===e?this._itHead=o:e._next=o,null===o?this._itTail=e:o._prev=e,a}_addToMoves(a,e){return a.previousIndex===e||(this._movesTail=null===this._movesTail?this._movesHead=a:this._movesTail._nextMoved=a),a}_addToRemovals(a){return null===this._unlinkedRecords&&(this._unlinkedRecords=new mO),this._unlinkedRecords.put(a),a.currentIndex=null,a._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=a,a._prevRemoved=null):(a._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=a),a}_addIdentityChange(a,e){return a.item=e,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=a:this._identityChangesTail._nextIdentityChange=a,a}}class pG{constructor(a,e){this.item=a,this.trackById=e,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class Pa{constructor(){this._head=null,this._tail=null}add(a){null===this._head?(this._head=this._tail=a,a._nextDup=null,a._prevDup=null):(this._tail._nextDup=a,a._prevDup=this._tail,a._nextDup=null,this._tail=a)}get(a,e){let o;for(o=this._head;null!==o;o=o._nextDup)if((null===e||e<=o.currentIndex)&&Object.is(o.trackById,a))return o;return null}remove(a){const e=a._prevDup,o=a._nextDup;return null===e?this._head=o:e._nextDup=o,null===o?this._tail=e:o._prevDup=e,null===this._head}}class mO{constructor(){this.map=new Map}put(a){const e=a.trackById;let o=this.map.get(e);o||(o=new Pa,this.map.set(e,o)),o.add(a)}get(a,e){const d=this.map.get(a);return d?d.get(a,e):null}remove(a){const e=a.trackById;return this.map.get(e).remove(a)&&this.map.delete(e),a}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function df(i,a,e){const o=i.previousIndex;if(null===o)return o;let d=0;return e&&o{if(e&&e.key===d)this._maybeAddToChanges(e,o),this._appendAfter=e,e=e._next;else{const h=this._getOrCreateRecordForKey(d,o);e=this._insertBeforeOrAppend(e,h)}}),e){e._prev&&(e._prev._next=null),this._removalsHead=e;for(let o=e;null!==o;o=o._nextRemoved)o===this._mapHead&&(this._mapHead=null),this._records.delete(o.key),o._nextRemoved=o._next,o.previousValue=o.currentValue,o.currentValue=null,o._prev=null,o._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(a,e){if(a){const o=a._prev;return e._next=a,e._prev=o,a._prev=e,o&&(o._next=e),a===this._mapHead&&(this._mapHead=e),this._appendAfter=a,a}return this._appendAfter?(this._appendAfter._next=e,e._prev=this._appendAfter):this._mapHead=e,this._appendAfter=e,null}_getOrCreateRecordForKey(a,e){if(this._records.has(a)){const d=this._records.get(a);this._maybeAddToChanges(d,e);const h=d._prev,_=d._next;return h&&(h._next=_),_&&(_._prev=h),d._next=null,d._prev=null,d}const o=new gG(a);return this._records.set(a,o),o.currentValue=e,this._addToAdditions(o),o}_reset(){if(this.isDirty){let a;for(this._previousMapHead=this._mapHead,a=this._previousMapHead;null!==a;a=a._next)a._nextPrevious=a._next;for(a=this._changesHead;null!==a;a=a._nextChanged)a.previousValue=a.currentValue;for(a=this._additionsHead;null!=a;a=a._nextAdded)a.previousValue=a.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(a,e){Object.is(e,a.currentValue)||(a.previousValue=a.currentValue,a.currentValue=e,this._addToChanges(a))}_addToAdditions(a){null===this._additionsHead?this._additionsHead=this._additionsTail=a:(this._additionsTail._nextAdded=a,this._additionsTail=a)}_addToChanges(a){null===this._changesHead?this._changesHead=this._changesTail=a:(this._changesTail._nextChanged=a,this._changesTail=a)}_forEach(a,e){a instanceof Map?a.forEach(e):Object.keys(a).forEach(o=>e(a[o],o))}}class gG{constructor(a){this.key=a,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function vO(){return new Xc([new $w])}let Xc=(()=>{class i{constructor(e){this.factories=e}static create(e,o){if(null!=o){const d=o.factories.slice();e=e.concat(d)}return new i(e)}static extend(e){return{provide:i,useFactory:o=>i.create(e,o||vO()),deps:[[i,new Mo,new wa]]}}find(e){const o=this.factories.find(d=>d.supports(e));if(null!=o)return o;throw new Ce(901,!1)}}return i.\u0275prov=ke({token:i,providedIn:"root",factory:vO}),i})();function uf(){return new Mm([new gO])}let Mm=(()=>{class i{constructor(e){this.factories=e}static create(e,o){if(o){const d=o.factories.slice();e=e.concat(d)}return new i(e)}static extend(e){return{provide:i,useFactory:o=>i.create(e,o||uf()),deps:[[i,new Mo,new wa]]}}find(e){const o=this.factories.find(d=>d.supports(e));if(o)return o;throw new Ce(901,!1)}}return i.\u0275prov=ke({token:i,providedIn:"root",factory:uf}),i})();const _G=iT(null,"core",[]);let yG=(()=>{class i{constructor(e){}}return i.\u0275fac=function(e){return new(e||i)(ae(vu))},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();function Tm(i){return"boolean"==typeof i?i:null!=i&&"false"!==i}let E_=null;function Ql(){return E_}class xG{}const ht=new be("DocumentToken");let Am=(()=>{class i{historyGo(e){throw new Error("Not implemented")}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(){return function Yw(){return ae(qw)}()},providedIn:"platform"}),i})();const xO=new be("Location Initialized");let qw=(()=>{class i extends Am{constructor(e){super(),this._doc=e,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return Ql().getBaseHref(this._doc)}onPopState(e){const o=Ql().getGlobalEventTarget(this._doc,"window");return o.addEventListener("popstate",e,!1),()=>o.removeEventListener("popstate",e)}onHashChange(e){const o=Ql().getGlobalEventTarget(this._doc,"window");return o.addEventListener("hashchange",e,!1),()=>o.removeEventListener("hashchange",e)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(e){this._location.pathname=e}pushState(e,o,d){bu()?this._history.pushState(e,o,d):this._location.hash=d}replaceState(e,o,d){bu()?this._history.replaceState(e,o,d):this._location.hash=d}forward(){this._history.forward()}back(){this._history.back()}historyGo(e=0){this._history.go(e)}getState(){return this._history.state}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:function(){return function CO(){return new qw(ae(ht))}()},providedIn:"platform"}),i})();function bu(){return!!window.history.pushState}function Jl(i,a){if(0==i.length)return a;if(0==a.length)return i;let e=0;return i.endsWith("/")&&e++,a.startsWith("/")&&e++,2==e?i+a.substring(1):1==e?i+a:i+"/"+a}function mT(i){const a=i.match(/#|\?|$/),e=a&&a.index||i.length;return i.slice(0,e-("/"===i[e-1]?1:0))+i.slice(e)}function Qc(i){return i&&"?"!==i[0]?"?"+i:i}let Ra=(()=>{class i{historyGo(e){throw new Error("Not implemented")}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(){return St(Zw)},providedIn:"root"}),i})();const Xw=new be("appBaseHref");let Zw=(()=>{class i extends Ra{constructor(e,o){var d,h,_;super(),this._platformLocation=e,this._removeListenerFns=[],this._baseHref=null!==(d=null!==(h=o??this._platformLocation.getBaseHrefFromDOM())&&void 0!==h?h:null===(_=St(ht).location)||void 0===_?void 0:_.origin)&&void 0!==d?d:""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}prepareExternalUrl(e){return Jl(this._baseHref,e)}path(e=!1){const o=this._platformLocation.pathname+Qc(this._platformLocation.search),d=this._platformLocation.hash;return d&&e?`${o}${d}`:o}pushState(e,o,d,h){const _=this.prepareExternalUrl(d+Qc(h));this._platformLocation.pushState(e,o,_)}replaceState(e,o,d,h){const _=this.prepareExternalUrl(d+Qc(h));this._platformLocation.replaceState(e,o,_)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){var o,d;null===(o=(d=this._platformLocation).historyGo)||void 0===o||o.call(d,e)}}return i.\u0275fac=function(e){return new(e||i)(ae(Am),ae(Xw,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),gT=(()=>{class i extends Ra{constructor(e,o){super(),this._platformLocation=e,this._baseHref="",this._removeListenerFns=[],null!=o&&(this._baseHref=o)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(e){this._removeListenerFns.push(this._platformLocation.onPopState(e),this._platformLocation.onHashChange(e))}getBaseHref(){return this._baseHref}path(e=!1){let o=this._platformLocation.hash;return null==o&&(o="#"),o.length>0?o.substring(1):o}prepareExternalUrl(e){const o=Jl(this._baseHref,e);return o.length>0?"#"+o:o}pushState(e,o,d,h){let _=this.prepareExternalUrl(d+Qc(h));0==_.length&&(_=this._platformLocation.pathname),this._platformLocation.pushState(e,o,_)}replaceState(e,o,d,h){let _=this.prepareExternalUrl(d+Qc(h));0==_.length&&(_=this._platformLocation.pathname),this._platformLocation.replaceState(e,o,_)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(e=0){var o,d;null===(o=(d=this._platformLocation).historyGo)||void 0===o||o.call(d,e)}}return i.\u0275fac=function(e){return new(e||i)(ae(Am),ae(Xw,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),I_=(()=>{class i{constructor(e){this._subject=new we,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=e;const o=this._locationStrategy.getBaseHref();this._basePath=function DO(i){if(new RegExp("^(https?:)?//").test(i)){const[,e]=i.split(/\/\/[^\/]+/);return e}return i}(mT(vT(o))),this._locationStrategy.onPopState(d=>{this._subject.emit({url:this.path(!0),pop:!0,state:d.state,type:d.type})})}ngOnDestroy(){var e;null===(e=this._urlChangeSubscription)||void 0===e||e.unsubscribe(),this._urlChangeListeners=[]}path(e=!1){return this.normalize(this._locationStrategy.path(e))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(e,o=""){return this.path()==this.normalize(e+Qc(o))}normalize(e){return i.stripTrailingSlash(function CG(i,a){if(!i||!a.startsWith(i))return a;const e=a.substring(i.length);return""===e||["/",";","?","#"].includes(e[0])?e:a}(this._basePath,vT(e)))}prepareExternalUrl(e){return e&&"/"!==e[0]&&(e="/"+e),this._locationStrategy.prepareExternalUrl(e)}go(e,o="",d=null){this._locationStrategy.pushState(d,"",e,o),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Qc(o)),d)}replaceState(e,o="",d=null){this._locationStrategy.replaceState(d,"",e,o),this._notifyUrlChangeListeners(this.prepareExternalUrl(e+Qc(o)),d)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(e=0){var o,d;null===(o=(d=this._locationStrategy).historyGo)||void 0===o||o.call(d,e)}onUrlChange(e){return this._urlChangeListeners.push(e),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(o=>{this._notifyUrlChangeListeners(o.url,o.state)})),()=>{const o=this._urlChangeListeners.indexOf(e);var d;this._urlChangeListeners.splice(o,1),0===this._urlChangeListeners.length&&(null===(d=this._urlChangeSubscription)||void 0===d||d.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(e="",o){this._urlChangeListeners.forEach(d=>d(e,o))}subscribe(e,o,d){return this._subject.subscribe({next:e,error:o,complete:d})}}return i.normalizeQueryParams=Qc,i.joinWithSlash=Jl,i.stripTrailingSlash=mT,i.\u0275fac=function(e){return new(e||i)(ae(Ra))},i.\u0275prov=ke({token:i,factory:function(){return function SO(){return new I_(ae(Ra))}()},providedIn:"root"}),i})();function vT(i){return i.replace(/\/index.html$/,"")}function ST(i,a){a=encodeURIComponent(a);for(const e of i.split(";")){const o=e.indexOf("="),[d,h]=-1==o?[e,""]:[e.slice(0,o),e.slice(o+1)];if(d.trim()===a)return decodeURIComponent(h)}return null}const DT=/\s+/,Fo=[];let Ss=(()=>{class i{constructor(e,o,d,h){this._iterableDiffers=e,this._keyValueDiffers=o,this._ngEl=d,this._renderer=h,this.initialClasses=Fo,this.stateMap=new Map}set klass(e){this.initialClasses=null!=e?e.trim().split(DT):Fo}set ngClass(e){this.rawClass="string"==typeof e?e.trim().split(DT):e}ngDoCheck(){for(const o of this.initialClasses)this._updateState(o,!0);const e=this.rawClass;if(Array.isArray(e)||e instanceof Set)for(const o of e)this._updateState(o,!0);else if(null!=e)for(const o of Object.keys(e))this._updateState(o,Boolean(e[o]));this._applyStateDiff()}_updateState(e,o){const d=this.stateMap.get(e);void 0!==d?(d.enabled!==o&&(d.changed=!0,d.enabled=o),d.touched=!0):this.stateMap.set(e,{enabled:o,changed:!0,touched:!0})}_applyStateDiff(){for(const e of this.stateMap){const o=e[0],d=e[1];d.changed?(this._toggleClass(o,d.enabled),d.changed=!1):d.touched||(d.enabled&&this._toggleClass(o,!1),this.stateMap.delete(o)),d.touched=!1}}_toggleClass(e,o){(e=e.trim()).length>0&&e.split(DT).forEach(d=>{o?this._renderer.addClass(this._ngEl.nativeElement,d):this._renderer.removeClass(this._ngEl.nativeElement,d)})}}return i.\u0275fac=function(e){return new(e||i)(F(Xc),F(Mm),F(Be),F(Oc))},i.\u0275dir=me({type:i,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),i})();class N_{constructor(a,e,o,d){this.$implicit=a,this.ngForOf=e,this.index=o,this.count=d}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let Mn=(()=>{class i{set ngForOf(e){this._ngForOf=e,this._ngForOfDirty=!0}set ngForTrackBy(e){this._trackByFn=e}get ngForTrackBy(){return this._trackByFn}constructor(e,o,d){this._viewContainer=e,this._template=o,this._differs=d,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(e){e&&(this._template=e)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const e=this._ngForOf;!this._differ&&e&&(this._differ=this._differs.find(e).create(this.ngForTrackBy))}if(this._differ){const e=this._differ.diff(this._ngForOf);e&&this._applyChanges(e)}}_applyChanges(e){const o=this._viewContainer;e.forEachOperation((d,h,_)=>{if(null==d.previousIndex)o.createEmbeddedView(this._template,new N_(d.item,this._ngForOf,-1,-1),null===_?void 0:_);else if(null==_)o.remove(null===h?void 0:h);else if(null!==h){const w=o.get(h);o.move(w,_),UO(w,d)}});for(let d=0,h=o.length;d{UO(o.get(d.currentIndex),d)})}static ngTemplateContextGuard(e,o){return!0}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(ii),F(Xc))},i.\u0275dir=me({type:i,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),i})();function UO(i,a){i.context.$implicit=a.item}let en=(()=>{class i{constructor(e,o){this._viewContainer=e,this._context=new fx,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=o}set ngIf(e){this._context.$implicit=this._context.ngIf=e,this._updateView()}set ngIfThen(e){MT("ngIfThen",e),this._thenTemplateRef=e,this._thenViewRef=null,this._updateView()}set ngIfElse(e){MT("ngIfElse",e),this._elseTemplateRef=e,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(e,o){return!0}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(ii))},i.\u0275dir=me({type:i,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),i})();class fx{constructor(){this.$implicit=null,this.ngIf=null}}function MT(i,a){if(a&&!a.createEmbeddedView)throw new Error(`${i} must be a TemplateRef, but received '${li(a)}'.`)}class No{constructor(a,e){this._viewContainerRef=a,this._templateRef=e,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(a){a&&!this._created?this.create():!a&&this._created&&this.destroy()}}let td=(()=>{class i{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(e){this._ngSwitch=e,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(e){this._defaultViews.push(e)}_matchCase(e){const o=e==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||o,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),o}_updateDefaultCases(e){if(this._defaultViews.length>0&&e!==this._defaultUsed){this._defaultUsed=e;for(const o of this._defaultViews)o.enforceState(e)}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0}),i})(),mf=(()=>{class i{constructor(e,o,d){this.ngSwitch=d,d._addCase(),this._view=new No(e,o)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(ii),F(td,9))},i.\u0275dir=me({type:i,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0}),i})(),Bo=(()=>{class i{constructor(e,o,d){d._addDefault(new No(e,o))}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(ii),F(td,9))},i.\u0275dir=me({type:i,selectors:[["","ngSwitchDefault",""]],standalone:!0}),i})(),rl=(()=>{class i{constructor(e,o,d){this._ngEl=e,this._differs=o,this._renderer=d,this._ngStyle=null,this._differ=null}set ngStyle(e){this._ngStyle=e,!this._differ&&e&&(this._differ=this._differs.find(e).create())}ngDoCheck(){if(this._differ){const e=this._differ.diff(this._ngStyle);e&&this._applyChanges(e)}}_setStyle(e,o){const[d,h]=e.split("."),_=-1===d.indexOf("-")?void 0:Ga.DashCase;null!=o?this._renderer.setStyle(this._ngEl.nativeElement,d,h?`${o}${h}`:o,_):this._renderer.removeStyle(this._ngEl.nativeElement,d,_)}_applyChanges(e){e.forEachRemovedItem(o=>this._setStyle(o.key,null)),e.forEachAddedItem(o=>this._setStyle(o.key,o.currentValue)),e.forEachChangedItem(o=>this._setStyle(o.key,o.currentValue))}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Mm),F(Oc))},i.\u0275dir=me({type:i,selectors:[["","ngStyle",""]],inputs:{ngStyle:"ngStyle"},standalone:!0}),i})(),px=(()=>{class i{constructor(e){this._viewContainerRef=e,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(e){if(e.ngTemplateOutlet||e.ngTemplateOutletInjector){const o=this._viewContainerRef;if(this._viewRef&&o.remove(o.indexOf(this._viewRef)),this.ngTemplateOutlet){const{ngTemplateOutlet:d,ngTemplateOutletContext:h,ngTemplateOutletInjector:_}=this;this._viewRef=o.createEmbeddedView(d,h,_?{injector:_}:void 0)}else this._viewRef=null}else this._viewRef&&e.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return i.\u0275fac=function(e){return new(e||i)(F(mi))},i.\u0275dir=me({type:i,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[jn]}),i})();class jO{createSubscription(a,e){return a.subscribe({next:e,error:o=>{throw o}})}dispose(a){a.unsubscribe()}}class UG{createSubscription(a,e){return a.then(e,o=>{throw o})}dispose(a){}}const $O=new UG,jG=new jO;let mx=(()=>{class i{constructor(e){this._latestValue=null,this._subscription=null,this._obj=null,this._strategy=null,this._ref=e}ngOnDestroy(){this._subscription&&this._dispose(),this._ref=null}transform(e){return this._obj?e!==this._obj?(this._dispose(),this.transform(e)):this._latestValue:(e&&this._subscribe(e),this._latestValue)}_subscribe(e){this._obj=e,this._strategy=this._selectStrategy(e),this._subscription=this._strategy.createSubscription(e,o=>this._updateLatestValue(e,o))}_selectStrategy(e){if(im(e))return $O;if(BD(e))return jG;throw function Ii(i,a){return new Ce(2100,!1)}()}_dispose(){this._strategy.dispose(this._subscription),this._latestValue=null,this._subscription=null,this._obj=null}_updateLatestValue(e,o){e===this._obj&&(this._latestValue=o,this._ref.markForCheck())}}return i.\u0275fac=function(e){return new(e||i)(F(Jt,16))},i.\u0275pipe=kr({name:"async",type:i,pure:!1,standalone:!0}),i})(),B_=(()=>{class i{constructor(e){this.differs=e,this.keyValues=[],this.compareFn=KO}transform(e,o=KO){if(!e||!(e instanceof Map)&&"object"!=typeof e)return null;this.differ||(this.differ=this.differs.find(e).create());const d=this.differ.diff(e),h=o!==this.compareFn;return d&&(this.keyValues=[],d.forEachItem(_=>{this.keyValues.push(function gx(i,a){return{key:i,value:a}}(_.key,_.currentValue))})),(d||h)&&(this.keyValues.sort(o),this.compareFn=o),this.keyValues}}return i.\u0275fac=function(e){return new(e||i)(F(Mm,16))},i.\u0275pipe=kr({name:"keyvalue",type:i,pure:!1,standalone:!0}),i})();function KO(i,a){const e=i.key,o=a.key;if(e===o)return 0;if(void 0===e)return 1;if(void 0===o)return-1;if(null===e)return 1;if(null===o)return-1;if("string"==typeof e&&"string"==typeof o)return e{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();const V_="browser";let nL=(()=>{class i{}return i.\u0275prov=ke({token:i,providedIn:"root",factory:()=>new gf(ae(ht),window)}),i})();class gf{constructor(a,e){this.document=a,this.window=e,this.offset=()=>[0,0]}setOffset(a){this.offset=Array.isArray(a)?()=>a:a}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(a){this.supportsScrolling()&&this.window.scrollTo(a[0],a[1])}scrollToAnchor(a){if(!this.supportsScrolling())return;const e=function tU(i,a){const e=i.getElementById(a)||i.getElementsByName(a)[0];if(e)return e;if("function"==typeof i.createTreeWalker&&i.body&&(i.body.createShadowRoot||i.body.attachShadow)){const o=i.createTreeWalker(i.body,NodeFilter.SHOW_ELEMENT);let d=o.currentNode;for(;d;){const h=d.shadowRoot;if(h){const _=h.getElementById(a)||h.querySelector(`[name="${a}"]`);if(_)return _}d=o.nextNode()}}return null}(this.document,a);e&&(this.scrollToElement(e),e.focus())}setHistoryScrollRestoration(a){if(this.supportScrollRestoration()){const e=this.window.history;e&&e.scrollRestoration&&(e.scrollRestoration=a)}}scrollToElement(a){const e=a.getBoundingClientRect(),o=e.left+this.window.pageXOffset,d=e.top+this.window.pageYOffset,h=this.offset();this.window.scrollTo(o-h[0],d-h[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const a=iL(this.window.history)||iL(Object.getPrototypeOf(this.window.history));return!(!a||!a.writable&&!a.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function iL(i){return Object.getOwnPropertyDescriptor(i,"scrollRestoration")}class Im{}class yL extends xG{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class zT extends yL{static makeCurrent(){!function wO(i){E_||(E_=i)}(new zT)}onAndCancel(a,e,o){return a.addEventListener(e,o,!1),()=>{a.removeEventListener(e,o,!1)}}dispatchEvent(a,e){a.dispatchEvent(e)}remove(a){a.parentNode&&a.parentNode.removeChild(a)}createElement(a,e){return(e=e||this.getDefaultDocument()).createElement(a)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(a){return a.nodeType===Node.ELEMENT_NODE}isShadowRoot(a){return a instanceof DocumentFragment}getGlobalEventTarget(a,e){return"window"===e?window:"document"===e?a:"body"===e?a.body:null}getBaseHref(a){const e=function DU(){return j_=j_||document.querySelector("base"),j_?j_.getAttribute("href"):null}();return null==e?null:function MU(i){Cx=Cx||document.createElement("a"),Cx.setAttribute("href",i);const a=Cx.pathname;return"/"===a.charAt(0)?a:`/${a}`}(e)}resetBaseElement(){j_=null}getUserAgent(){return window.navigator.userAgent}getCookie(a){return ST(document.cookie,a)}}let Cx,j_=null;const _f=new be("TRANSITION_ID"),TU=[{provide:w_,useFactory:function bL(i,a,e){return()=>{e.get(wm).donePromise.then(()=>{const o=Ql(),d=a.querySelectorAll(`style[ng-transition="${i}"]`);for(let h=0;h{class i{build(){return new XMLHttpRequest}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const Rm=new be("EventManagerPlugins");let W_=(()=>{class i{constructor(e,o){this._zone=o,this._eventNameToPlugin=new Map,e.forEach(d=>{d.manager=this}),this._plugins=e.slice().reverse()}addEventListener(e,o,d){return this._findPluginFor(o).addEventListener(e,o,d)}addGlobalEventListener(e,o,d){return this._findPluginFor(o).addGlobalEventListener(e,o,d)}getZone(){return this._zone}_findPluginFor(e){const o=this._eventNameToPlugin.get(e);if(o)return o;const d=this._plugins;for(let h=0;h{class i{constructor(){this.usageCount=new Map}addStyles(e){for(const o of e)1===this.changeUsageCount(o,1)&&this.onStyleAdded(o)}removeStyles(e){for(const o of e)0===this.changeUsageCount(o,-1)&&this.onStyleRemoved(o)}onStyleRemoved(e){}onStyleAdded(e){}getAllStyles(){return this.usageCount.keys()}changeUsageCount(e,o){var d;const h=this.usageCount;let _=null!==(d=h.get(e))&&void 0!==d?d:0;return _+=o,_>0?h.set(e,_):h.delete(e),_}ngOnDestroy(){for(const e of this.getAllStyles())this.onStyleRemoved(e);this.usageCount.clear()}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),nd=(()=>{class i extends wL{constructor(e){super(),this.doc=e,this.styleRef=new Map,this.hostNodes=new Set,this.resetHostNodes()}onStyleAdded(e){for(const o of this.hostNodes)this.addStyleToHost(o,e)}onStyleRemoved(e){const o=this.styleRef,d=o.get(e);null==d||d.forEach(h=>h.remove()),o.delete(e)}ngOnDestroy(){super.ngOnDestroy(),this.styleRef.clear(),this.resetHostNodes()}addHost(e){this.hostNodes.add(e);for(const o of this.getAllStyles())this.addStyleToHost(e,o)}removeHost(e){this.hostNodes.delete(e)}addStyleToHost(e,o){const d=this.doc.createElement("style");d.textContent=o,e.appendChild(d);const h=this.styleRef.get(o);h?h.push(d):this.styleRef.set(o,[d])}resetHostNodes(){const e=this.hostNodes;e.clear(),e.add(this.doc.head)}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const Sx={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},GT=/%COMP%/g,Cu=new be("RemoveStylesOnCompDestory",{providedIn:"root",factory:()=>!1});function SL(i,a){return a.flat(100).map(e=>e.replace(GT,i))}function DL(i){return a=>{if("__ngUnwrap__"===a)return i;!1===i(a)&&(a.preventDefault(),a.returnValue=!1)}}let Y_=(()=>{class i{constructor(e,o,d,h){this.eventManager=e,this.sharedStylesHost=o,this.appId=d,this.removeStylesOnCompDestory=h,this.rendererByCompId=new Map,this.defaultRenderer=new Dx(e)}createRenderer(e,o){if(!e||!o)return this.defaultRenderer;const d=this.getOrCreateRenderer(e,o);return d instanceof $T?d.applyToHost(e):d instanceof Mx&&d.applyStyles(),d}getOrCreateRenderer(e,o){const d=this.rendererByCompId;let h=d.get(o.id);if(!h){const _=this.eventManager,w=this.sharedStylesHost,D=this.removeStylesOnCompDestory;switch(o.encapsulation){case Ar.Emulated:h=new $T(_,w,o,this.appId,D);break;case Ar.ShadowDom:return new TL(_,w,e,o);default:h=new Mx(_,w,o,D)}h.onDestroy=()=>d.delete(o.id),d.set(o.id,h)}return h}ngOnDestroy(){this.rendererByCompId.clear()}begin(){}end(){}}return i.\u0275fac=function(e){return new(e||i)(ae(W_),ae(nd),ae(sf),ae(Cu))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();class Dx{constructor(a){this.eventManager=a,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(a,e){return e?document.createElementNS(Sx[e]||e,a):document.createElement(a)}createComment(a){return document.createComment(a)}createText(a){return document.createTextNode(a)}appendChild(a,e){(Su(a)?a.content:a).appendChild(e)}insertBefore(a,e,o){a&&(Su(a)?a.content:a).insertBefore(e,o)}removeChild(a,e){a&&a.removeChild(e)}selectRootElement(a,e){let o="string"==typeof a?document.querySelector(a):a;if(!o)throw new Error(`The selector "${a}" did not match any elements`);return e||(o.textContent=""),o}parentNode(a){return a.parentNode}nextSibling(a){return a.nextSibling}setAttribute(a,e,o,d){if(d){e=d+":"+e;const h=Sx[d];h?a.setAttributeNS(h,e,o):a.setAttribute(e,o)}else a.setAttribute(e,o)}removeAttribute(a,e,o){if(o){const d=Sx[o];d?a.removeAttributeNS(d,e):a.removeAttribute(`${o}:${e}`)}else a.removeAttribute(e)}addClass(a,e){a.classList.add(e)}removeClass(a,e){a.classList.remove(e)}setStyle(a,e,o,d){d&(Ga.DashCase|Ga.Important)?a.style.setProperty(e,o,d&Ga.Important?"important":""):a.style[e]=o}removeStyle(a,e,o){o&Ga.DashCase?a.style.removeProperty(e):a.style[e]=""}setProperty(a,e,o){a[e]=o}setValue(a,e){a.nodeValue=e}listen(a,e,o){return"string"==typeof a?this.eventManager.addGlobalEventListener(a,e,DL(o)):this.eventManager.addEventListener(a,e,DL(o))}}function Su(i){return"TEMPLATE"===i.tagName&&void 0!==i.content}class TL extends Dx{constructor(a,e,o,d){super(a),this.sharedStylesHost=e,this.hostEl=o,this.shadowRoot=o.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const h=SL(d.id,d.styles);for(const _ of h){const w=document.createElement("style");w.textContent=_,this.shadowRoot.appendChild(w)}}nodeOrShadowRoot(a){return a===this.hostEl?this.shadowRoot:a}appendChild(a,e){return super.appendChild(this.nodeOrShadowRoot(a),e)}insertBefore(a,e,o){return super.insertBefore(this.nodeOrShadowRoot(a),e,o)}removeChild(a,e){return super.removeChild(this.nodeOrShadowRoot(a),e)}parentNode(a){return this.nodeOrShadowRoot(super.parentNode(this.nodeOrShadowRoot(a)))}destroy(){this.sharedStylesHost.removeHost(this.shadowRoot)}}class Mx extends Dx{constructor(a,e,o,d,h=o.id){super(a),this.sharedStylesHost=e,this.removeStylesOnCompDestory=d,this.rendererUsageCount=0,this.styles=SL(h,o.styles)}applyStyles(){this.sharedStylesHost.addStyles(this.styles),this.rendererUsageCount++}destroy(){var a;this.removeStylesOnCompDestory&&(this.sharedStylesHost.removeStyles(this.styles),this.rendererUsageCount--,0===this.rendererUsageCount)&&(null===(a=this.onDestroy)||void 0===a||a.call(this))}}class $T extends Mx{constructor(a,e,o,d,h){const _=d+"-"+o.id;super(a,e,o,h,_),this.contentAttr=function jT(i){return"_ngcontent-%COMP%".replace(GT,i)}(_),this.hostAttr=function CL(i){return"_nghost-%COMP%".replace(GT,i)}(_)}applyToHost(a){this.applyStyles(),this.setAttribute(a,this.hostAttr,"")}createElement(a,e){const o=super.createElement(a,e);return super.setAttribute(o,this.contentAttr,""),o}}let AL=(()=>{class i extends HT{constructor(e){super(e)}supports(e){return!0}addEventListener(e,o,d){return e.addEventListener(o,d,!1),()=>this.removeEventListener(e,o,d)}removeEventListener(e,o,d){return e.removeEventListener(o,d)}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const kL=["alt","control","meta","shift"],Du={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},EU={alt:i=>i.altKey,control:i=>i.ctrlKey,meta:i=>i.metaKey,shift:i=>i.shiftKey};let IU=(()=>{class i extends HT{constructor(e){super(e)}supports(e){return null!=i.parseEventName(e)}addEventListener(e,o,d){const h=i.parseEventName(o),_=i.eventCallback(h.fullKey,d,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>Ql().onAndCancel(e,h.domEventName,_))}static parseEventName(e){const o=e.toLowerCase().split("."),d=o.shift();if(0===o.length||"keydown"!==d&&"keyup"!==d)return null;const h=i._normalizeKey(o.pop());let _="",w=o.indexOf("code");if(w>-1&&(o.splice(w,1),_="code."),kL.forEach(k=>{const P=o.indexOf(k);P>-1&&(o.splice(P,1),_+=k+".")}),_+=h,0!=o.length||0===h.length)return null;const D={};return D.domEventName=d,D.fullKey=_,D}static matchEventFullKeyCode(e,o){let d=Du[e.key]||e.key,h="";return o.indexOf("code.")>-1&&(d=e.code,h="code."),!(null==d||!d)&&(d=d.toLowerCase()," "===d?d="space":"."===d&&(d="dot"),kL.forEach(_=>{_!==d&&(0,EU[_])(e)&&(h+=_+".")}),h+=d,h===o)}static eventCallback(e,o,d){return h=>{i.matchEventFullKeyCode(h,e)&&d.runGuarded(()=>o(h))}}static _normalizeKey(e){return"esc"===e?"escape":e}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const OU=iT(_G,"browser",[{provide:x_,useValue:V_},{provide:jM,useValue:function RU(){zT.makeCurrent()},multi:!0},{provide:ht,useFactory:function YT(){return function $4(i){Mh=i}(document),document},deps:[]}]),RL=new be(""),Om=[{provide:lf,useClass:class AU{addToWindow(a){Ai.getAngularTestability=(o,d=!0)=>{const h=a.findTestabilityInTree(o,d);if(null==h)throw new Error("Could not find testability for element.");return h},Ai.getAllAngularTestabilities=()=>a.getAllTestabilities(),Ai.getAllAngularRootElements=()=>a.getAllRootElements(),Ai.frameworkStabilizers||(Ai.frameworkStabilizers=[]),Ai.frameworkStabilizers.push(o=>{const d=Ai.getAllAngularTestabilities();let h=d.length,_=!1;const w=function(D){_=_||D,h--,0==h&&o(_)};d.forEach(function(D){D.whenStable(w)})})}findTestabilityInTree(a,e,o){return null==e?null:a.getTestability(e)??(o?Ql().isShadowRoot(e)?this.findTestabilityInTree(a,e.host,!0):this.findTestabilityInTree(a,e.parentElement,!0):null)}},deps:[]},{provide:gu,useClass:KM,deps:[et,QM,lf]},{provide:KM,useClass:KM,deps:[et,QM,lf]}],OL=[{provide:Bv,useValue:"root"},{provide:Fl,useFactory:function IL(){return new Fl},deps:[]},{provide:Rm,useClass:AL,multi:!0,deps:[ht,et,x_]},{provide:Rm,useClass:IU,multi:!0,deps:[ht]},{provide:Y_,useClass:Y_,deps:[W_,nd,sf,Cu]},{provide:Ph,useExisting:Y_},{provide:wL,useExisting:nd},{provide:nd,useClass:nd,deps:[ht]},{provide:W_,useClass:W_,deps:[Rm,et]},{provide:Im,useClass:$_,deps:[]},[]];let LL=(()=>{class i{constructor(e){}static withServerTransition(e){return{ngModule:i,providers:[{provide:sf,useValue:e.appId},{provide:_f,useExisting:sf},TU]}}}return i.\u0275fac=function(e){return new(e||i)(ae(RL,12))},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[...OL,...Om],imports:[Ri,yG]}),i})(),FL=(()=>{class i{constructor(e){this._doc=e}getTitle(){return this._doc.title}setTitle(e){this._doc.title=e||""}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:function(e){let o=null;return o=e?new e:function Tx(){return new FL(ae(ht))}(),o},providedIn:"root"}),i})();typeof window<"u"&&window;let X_=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(e){let o=null;return o=e?new(e||i):ae(JT),o},providedIn:"root"}),i})(),JT=(()=>{class i extends X_{constructor(e){super(),this._doc=e}sanitize(e,o){if(null==o)return null;switch(e){case Bn.NONE:return o;case Bn.HTML:return Pl(o,"HTML")?Eo(o):XS(this._doc,String(o)).toString();case Bn.STYLE:return Pl(o,"Style")?Eo(o):o;case Bn.SCRIPT:if(Pl(o,"Script"))return Eo(o);throw new Error("unsafe value used in a script context");case Bn.URL:return Pl(o,"URL")?Eo(o):Pv(String(o));case Bn.RESOURCE_URL:if(Pl(o,"ResourceURL"))return Eo(o);throw new Error(`unsafe value used in a resource URL context (see ${K1})`);default:throw new Error(`Unexpected SecurityContext ${e} (see ${K1})`)}}bypassSecurityTrustHtml(e){return function Z4(i){return new W4(i)}(e)}bypassSecurityTrustStyle(e){return function jS(i){return new Y4(i)}(e)}bypassSecurityTrustScript(e){return function K4(i){return new q4(i)}(e)}bypassSecurityTrustUrl(e){return function Ht(i){return new X4(i)}(e)}bypassSecurityTrustResourceUrl(e){return function Q4(i){return new RP(i)}(e)}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:function(e){let o=null;return o=e?new e:function zL(i){return new JT(i.get(ht))}(ae(Qi)),o},providedIn:"root"}),i})();function Ze(...i){return Ti(i,Ad(i))}function id(i,a){return $t(a)?Vi(i,a,1):Vi(i,1)}function Kn(i,a){return Gn((e,o)=>{let d=0;e.subscribe(si(o,h=>i.call(a,h,d++)&&o.next(h)))})}class Z_{}class eA{}class al{constructor(a){this.normalizedNames=new Map,this.lazyUpdate=null,a?this.lazyInit="string"==typeof a?()=>{this.headers=new Map,a.split("\n").forEach(e=>{const o=e.indexOf(":");if(o>0){const d=e.slice(0,o),h=d.toLowerCase(),_=e.slice(o+1).trim();this.maybeSetNormalizedName(d,h),this.headers.has(h)?this.headers.get(h).push(_):this.headers.set(h,[_])}})}:()=>{this.headers=new Map,Object.keys(a).forEach(e=>{let o=a[e];const d=e.toLowerCase();"string"==typeof o&&(o=[o]),o.length>0&&(this.headers.set(d,o),this.maybeSetNormalizedName(e,d))})}:this.headers=new Map}has(a){return this.init(),this.headers.has(a.toLowerCase())}get(a){this.init();const e=this.headers.get(a.toLowerCase());return e&&e.length>0?e[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(a){return this.init(),this.headers.get(a.toLowerCase())||null}append(a,e){return this.clone({name:a,value:e,op:"a"})}set(a,e){return this.clone({name:a,value:e,op:"s"})}delete(a,e){return this.clone({name:a,value:e,op:"d"})}maybeSetNormalizedName(a,e){this.normalizedNames.has(e)||this.normalizedNames.set(e,a)}init(){this.lazyInit&&(this.lazyInit instanceof al?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(a=>this.applyUpdate(a)),this.lazyUpdate=null))}copyFrom(a){a.init(),Array.from(a.headers.keys()).forEach(e=>{this.headers.set(e,a.headers.get(e)),this.normalizedNames.set(e,a.normalizedNames.get(e))})}clone(a){const e=new al;return e.lazyInit=this.lazyInit&&this.lazyInit instanceof al?this.lazyInit:this,e.lazyUpdate=(this.lazyUpdate||[]).concat([a]),e}applyUpdate(a){const e=a.name.toLowerCase();switch(a.op){case"a":case"s":let o=a.value;if("string"==typeof o&&(o=[o]),0===o.length)return;this.maybeSetNormalizedName(a.name,e);const d=("a"===a.op?this.headers.get(e):void 0)||[];d.push(...o),this.headers.set(e,d);break;case"d":const h=a.value;if(h){let _=this.headers.get(e);if(!_)return;_=_.filter(w=>-1===h.indexOf(w)),0===_.length?(this.headers.delete(e),this.normalizedNames.delete(e)):this.headers.set(e,_)}else this.headers.delete(e),this.normalizedNames.delete(e)}}forEach(a){this.init(),Array.from(this.normalizedNames.keys()).forEach(e=>a(this.normalizedNames.get(e),this.headers.get(e)))}}class $U{encodeKey(a){return tA(a)}encodeValue(a){return tA(a)}decodeKey(a){return decodeURIComponent(a)}decodeValue(a){return decodeURIComponent(a)}}const kx=/%(\d[a-f0-9])/gi,HL={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function tA(i){return encodeURIComponent(i).replace(kx,(a,e)=>{var o;return null!==(o=HL[e])&&void 0!==o?o:a})}function K_(i){return`${i}`}class Tu{constructor(a={}){if(this.updates=null,this.cloneFrom=null,this.encoder=a.encoder||new $U,a.fromString){if(a.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function WU(i,a){const e=new Map;return i.length>0&&i.replace(/^\?/,"").split("&").forEach(d=>{const h=d.indexOf("="),[_,w]=-1==h?[a.decodeKey(d),""]:[a.decodeKey(d.slice(0,h)),a.decodeValue(d.slice(h+1))],D=e.get(_)||[];D.push(w),e.set(_,D)}),e}(a.fromString,this.encoder)}else a.fromObject?(this.map=new Map,Object.keys(a.fromObject).forEach(e=>{const o=a.fromObject[e],d=Array.isArray(o)?o.map(K_):[K_(o)];this.map.set(e,d)})):this.map=null}has(a){return this.init(),this.map.has(a)}get(a){this.init();const e=this.map.get(a);return e?e[0]:null}getAll(a){return this.init(),this.map.get(a)||null}keys(){return this.init(),Array.from(this.map.keys())}append(a,e){return this.clone({param:a,value:e,op:"a"})}appendAll(a){const e=[];return Object.keys(a).forEach(o=>{const d=a[o];Array.isArray(d)?d.forEach(h=>{e.push({param:o,value:h,op:"a"})}):e.push({param:o,value:d,op:"a"})}),this.clone(e)}set(a,e){return this.clone({param:a,value:e,op:"s"})}delete(a,e){return this.clone({param:a,value:e,op:"d"})}toString(){return this.init(),this.keys().map(a=>{const e=this.encoder.encodeKey(a);return this.map.get(a).map(o=>e+"="+this.encoder.encodeValue(o)).join("&")}).filter(a=>""!==a).join("&")}clone(a){const e=new Tu({encoder:this.encoder});return e.cloneFrom=this.cloneFrom||this,e.updates=(this.updates||[]).concat(a),e}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(a=>this.map.set(a,this.cloneFrom.map.get(a))),this.updates.forEach(a=>{switch(a.op){case"a":case"s":const e=("a"===a.op?this.map.get(a.param):void 0)||[];e.push(K_(a.value)),this.map.set(a.param,e);break;case"d":if(void 0===a.value){this.map.delete(a.param);break}{let o=this.map.get(a.param)||[];const d=o.indexOf(K_(a.value));-1!==d&&o.splice(d,1),o.length>0?this.map.set(a.param,o):this.map.delete(a.param)}}}),this.cloneFrom=this.updates=null)}}class YU{constructor(){this.map=new Map}set(a,e){return this.map.set(a,e),this}get(a){return this.map.has(a)||this.map.set(a,a.defaultValue()),this.map.get(a)}delete(a){return this.map.delete(a),this}has(a){return this.map.has(a)}keys(){return this.map.keys()}}function UL(i){return typeof ArrayBuffer<"u"&&i instanceof ArrayBuffer}function nA(i){return typeof Blob<"u"&&i instanceof Blob}function Ix(i){return typeof FormData<"u"&&i instanceof FormData}class Q_{constructor(a,e,o,d){let h;if(this.url=e,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=a.toUpperCase(),function GL(i){switch(i){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||d?(this.body=void 0!==o?o:null,h=d):h=o,h&&(this.reportProgress=!!h.reportProgress,this.withCredentials=!!h.withCredentials,h.responseType&&(this.responseType=h.responseType),h.headers&&(this.headers=h.headers),h.context&&(this.context=h.context),h.params&&(this.params=h.params)),this.headers||(this.headers=new al),this.context||(this.context=new YU),this.params){const _=this.params.toString();if(0===_.length)this.urlWithParams=e;else{const w=e.indexOf("?");this.urlWithParams=e+(-1===w?"?":wW.set(Z,a.setHeaders[Z]),k)),a.setParams&&(P=Object.keys(a.setParams).reduce((W,Z)=>W.set(Z,a.setParams[Z]),P)),new Q_(o,d,_,{params:P,headers:k,context:B,reportProgress:D,responseType:h,withCredentials:w})}}var Cr=(()=>((Cr=Cr||{})[Cr.Sent=0]="Sent",Cr[Cr.UploadProgress=1]="UploadProgress",Cr[Cr.ResponseHeader=2]="ResponseHeader",Cr[Cr.DownloadProgress=3]="DownloadProgress",Cr[Cr.Response=4]="Response",Cr[Cr.User=5]="User",Cr))();class iA{constructor(a,e=200,o="OK"){this.headers=a.headers||new al,this.status=void 0!==a.status?a.status:e,this.statusText=a.statusText||o,this.url=a.url||null,this.ok=this.status>=200&&this.status<300}}class Au extends iA{constructor(a={}){super(a),this.type=Cr.ResponseHeader}clone(a={}){return new Au({headers:a.headers||this.headers,status:void 0!==a.status?a.status:this.status,statusText:a.statusText||this.statusText,url:a.url||this.url||void 0})}}class Px extends iA{constructor(a={}){super(a),this.type=Cr.Response,this.body=void 0!==a.body?a.body:null}clone(a={}){return new Px({body:void 0!==a.body?a.body:this.body,headers:a.headers||this.headers,status:void 0!==a.status?a.status:this.status,statusText:a.statusText||this.statusText,url:a.url||this.url||void 0})}}class Fm extends iA{constructor(a){super(a,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${a.url||"(unknown url)"}`:`Http failure response for ${a.url||"(unknown url)"}: ${a.status} ${a.statusText}`,this.error=a.error||null}}function rA(i,a){return{body:a,headers:i.headers,context:i.context,observe:i.observe,params:i.params,reportProgress:i.reportProgress,responseType:i.responseType,withCredentials:i.withCredentials}}let Rx=(()=>{class i{constructor(e){this.handler=e}request(e,o,d={}){let h;if(e instanceof Q_)h=e;else{let D,k;D=d.headers instanceof al?d.headers:new al(d.headers),d.params&&(k=d.params instanceof Tu?d.params:new Tu({fromObject:d.params})),h=new Q_(e,o,void 0!==d.body?d.body:null,{headers:D,context:d.context,params:k,reportProgress:d.reportProgress,responseType:d.responseType||"json",withCredentials:d.withCredentials})}const _=Ze(h).pipe(id(D=>this.handler.handle(D)));if(e instanceof Q_||"events"===d.observe)return _;const w=_.pipe(Kn(D=>D instanceof Px));switch(d.observe||"body"){case"body":switch(h.responseType){case"arraybuffer":return w.pipe(vt(D=>{if(null!==D.body&&!(D.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return D.body}));case"blob":return w.pipe(vt(D=>{if(null!==D.body&&!(D.body instanceof Blob))throw new Error("Response is not a Blob.");return D.body}));case"text":return w.pipe(vt(D=>{if(null!==D.body&&"string"!=typeof D.body)throw new Error("Response is not a string.");return D.body}));default:return w.pipe(vt(D=>D.body))}case"response":return w;default:throw new Error(`Unreachable: unhandled observe type ${d.observe}}`)}}delete(e,o={}){return this.request("DELETE",e,o)}get(e,o={}){return this.request("GET",e,o)}head(e,o={}){return this.request("HEAD",e,o)}jsonp(e,o){return this.request("JSONP",e,{params:(new Tu).append(o,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(e,o={}){return this.request("OPTIONS",e,o)}patch(e,o,d={}){return this.request("PATCH",e,rA(d,o))}post(e,o,d={}){return this.request("POST",e,rA(d,o))}put(e,o,d={}){return this.request("PUT",e,rA(d,o))}}return i.\u0275fac=function(e){return new(e||i)(ae(Z_))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();function jL(i,a){return a(i)}function XU(i,a){return(e,o)=>a.intercept(e,{handle:d=>i(d,o)})}const KU=new be("HTTP_INTERCEPTORS"),J_=new be("HTTP_INTERCEPTOR_FNS");function $L(){let i=null;return(a,e)=>{var o;return null===i&&(i=(null!==(o=St(KU,{optional:!0}))&&void 0!==o?o:[]).reduceRight(XU,jL)),i(a,e)}}let WL=(()=>{class i extends Z_{constructor(e,o){super(),this.backend=e,this.injector=o,this.chain=null}handle(e){if(null===this.chain){const o=Array.from(new Set(this.injector.get(J_)));this.chain=o.reduceRight((d,h)=>function ZU(i,a,e){return(o,d)=>e.runInContext(()=>a(o,h=>i(h,d)))}(d,h,this.injector),jL)}return this.chain(e,o=>this.backend.handle(o))}}return i.\u0275fac=function(e){return new(e||i)(ae(eA),ae(qr))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const oA=/^\)\]\}',?\n/;let qL=(()=>{class i{constructor(e){this.xhrFactory=e}handle(e){if("JSONP"===e.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new Hn(o=>{const d=this.xhrFactory.build();if(d.open(e.method,e.urlWithParams),e.withCredentials&&(d.withCredentials=!0),e.headers.forEach((Z,te)=>d.setRequestHeader(Z,te.join(","))),e.headers.has("Accept")||d.setRequestHeader("Accept","application/json, text/plain, */*"),!e.headers.has("Content-Type")){const Z=e.detectContentTypeHeader();null!==Z&&d.setRequestHeader("Content-Type",Z)}if(e.responseType){const Z=e.responseType.toLowerCase();d.responseType="json"!==Z?Z:"text"}const h=e.serializeBody();let _=null;const w=()=>{if(null!==_)return _;const Z=d.statusText||"OK",te=new al(d.getAllResponseHeaders()),ie=function e6(i){return"responseURL"in i&&i.responseURL?i.responseURL:/^X-Request-URL:/m.test(i.getAllResponseHeaders())?i.getResponseHeader("X-Request-URL"):null}(d)||e.url;return _=new Au({headers:te,status:d.status,statusText:Z,url:ie}),_},D=()=>{let{headers:Z,status:te,statusText:ie,url:de}=w(),he=null;204!==te&&(he=typeof d.response>"u"?d.responseText:d.response),0===te&&(te=he?200:0);let Me=te>=200&&te<300;if("json"===e.responseType&&"string"==typeof he){const fe=he;he=he.replace(oA,"");try{he=""!==he?JSON.parse(he):null}catch(Fe){he=fe,Me&&(Me=!1,he={error:Fe,text:he})}}Me?(o.next(new Px({body:he,headers:Z,status:te,statusText:ie,url:de||void 0})),o.complete()):o.error(new Fm({error:he,headers:Z,status:te,statusText:ie,url:de||void 0}))},k=Z=>{const{url:te}=w(),ie=new Fm({error:Z,status:d.status||0,statusText:d.statusText||"Unknown Error",url:te||void 0});o.error(ie)};let P=!1;const B=Z=>{P||(o.next(w()),P=!0);let te={type:Cr.DownloadProgress,loaded:Z.loaded};Z.lengthComputable&&(te.total=Z.total),"text"===e.responseType&&d.responseText&&(te.partialText=d.responseText),o.next(te)},W=Z=>{let te={type:Cr.UploadProgress,loaded:Z.loaded};Z.lengthComputable&&(te.total=Z.total),o.next(te)};return d.addEventListener("load",D),d.addEventListener("error",k),d.addEventListener("timeout",k),d.addEventListener("abort",k),e.reportProgress&&(d.addEventListener("progress",B),null!==h&&d.upload&&d.upload.addEventListener("progress",W)),d.send(h),o.next({type:Cr.Sent}),()=>{d.removeEventListener("error",k),d.removeEventListener("abort",k),d.removeEventListener("load",D),d.removeEventListener("timeout",k),e.reportProgress&&(d.removeEventListener("progress",B),null!==h&&d.upload&&d.upload.removeEventListener("progress",W)),d.readyState!==d.DONE&&d.abort()}})}}return i.\u0275fac=function(e){return new(e||i)(ae(Im))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const Ox=new be("XSRF_ENABLED"),yf=new be("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>"XSRF-TOKEN"}),ZL=new be("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>"X-XSRF-TOKEN"});class KL{}let sA=(()=>{class i{constructor(e,o,d){this.doc=e,this.platform=o,this.cookieName=d,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const e=this.doc.cookie||"";return e!==this.lastCookieString&&(this.parseCount++,this.lastToken=ST(e,this.cookieName),this.lastCookieString=e),this.lastToken}}return i.\u0275fac=function(e){return new(e||i)(ae(ht),ae(x_),ae(yf))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();function QL(i,a){const e=i.url.toLowerCase();if(!St(Ox)||"GET"===i.method||"HEAD"===i.method||e.startsWith("http://")||e.startsWith("https://"))return a(i);const o=St(KL).getToken(),d=St(ZL);return null!=o&&!i.headers.has(d)&&(i=i.clone({headers:i.headers.set(d,o)})),a(i)}var fr=(()=>((fr=fr||{})[fr.Interceptors=0]="Interceptors",fr[fr.LegacyInterceptors=1]="LegacyInterceptors",fr[fr.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",fr[fr.NoXsrfProtection=3]="NoXsrfProtection",fr[fr.JsonpSupport=4]="JsonpSupport",fr[fr.RequestsMadeViaParent=5]="RequestsMadeViaParent",fr))();function Nm(i,a){return{\u0275kind:i,\u0275providers:a}}function n6(...i){const a=[Rx,qL,WL,{provide:Z_,useExisting:WL},{provide:eA,useExisting:qL},{provide:J_,useValue:QL,multi:!0},{provide:Ox,useValue:!0},{provide:KL,useClass:sA}];for(const e of i)a.push(...e.\u0275providers);return function Hp(i){return{\u0275providers:i}}(a)}const lA=new be("LEGACY_INTERCEPTOR_FN");let iF=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[n6(Nm(fr.LegacyInterceptors,[{provide:lA,useFactory:$L},{provide:J_,useExisting:lA,multi:!0}]))]}),i})();class Oi extends He{constructor(a){super(),this._value=a}get value(){return this.getValue()}_subscribe(a){const e=super._subscribe(a);return!e.closed&&a.next(this._value),e}getValue(){const{hasError:a,thrownError:e,_value:o}=this;if(a)throw e;return this._throwIfClosed(),o}next(a){super.next(this._value=a)}}const ol=Qo(i=>function(){i(this),this.name="EmptyError",this.message="no elements in sequence"}),{isArray:rF}=Array,{getPrototypeOf:a6,prototype:o6,keys:Ds}=Object;function cA(i){if(1===i.length){const a=i[0];if(rF(a))return{args:a,keys:null};if(function aF(i){return i&&"object"==typeof i&&a6(i)===o6}(a)){const e=Ds(a);return{args:e.map(o=>a[o]),keys:e}}}return{args:i,keys:null}}const{isArray:oF}=Array;function dA(i){return vt(a=>function s6(i,a){return oF(a)?i(...a):i(a)}(i,a))}function sF(i,a){return i.reduce((e,o,d)=>(e[o]=a[d],e),{})}function Za(...i){const a=Ad(i),e=Bg(i),{args:o,keys:d}=cA(i);if(0===o.length)return Ti([],a);const h=new Hn(function l6(i,a,e=Ku){return o=>{lF(a,()=>{const{length:d}=i,h=new Array(d);let _=d,w=d;for(let D=0;D{const k=Ti(i[D],a);let P=!1;k.subscribe(si(o,B=>{h[D]=B,P||(P=!0,w--),w||o.next(e(h.slice()))},()=>{--_||o.complete()}))},o)},o)}}(o,a,d?_=>sF(d,_):Ku));return e?h.pipe(dA(e)):h}function lF(i,a,e){i?Bi(e,i,a):a()}function ey(...i){return function c6(){return eh(1)}()(Ti(i,Ad(i)))}function Bm(i){return new Hn(a=>{$e(i()).subscribe(a)})}function rd(i,a){const e=$t(i)?i:()=>i,o=d=>d.error(e());return new Hn(a?d=>a.schedule(o,0,d):o)}function uA(){return Gn((i,a)=>{let e=null;i._refCount++;const o=si(a,void 0,void 0,void 0,()=>{if(!i||i._refCount<=0||0<--i._refCount)return void(e=null);const d=i._connection,h=e;e=null,d&&(!h||d===h)&&d.unsubscribe(),a.unsubscribe()});i.subscribe(o),o.closed||(e=i.connect())})}class ty extends Hn{constructor(a,e){super(),this.source=a,this.subjectFactory=e,this._subject=null,this._refCount=0,this._connection=null,AI(a)&&(this.lift=a.lift)}_subscribe(a){return this.getSubject().subscribe(a)}getSubject(){const a=this._subject;return(!a||a.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:a}=this;this._subject=this._connection=null,null==a||a.unsubscribe()}connect(){let a=this._connection;if(!a){a=this._connection=new xt;const e=this.getSubject();a.add(this.source.subscribe(si(e,void 0,()=>{this._teardown(),e.complete()},o=>{this._teardown(),e.error(o)},()=>this._teardown()))),a.closed&&(this._connection=null,a=xt.EMPTY)}return a}refCount(){return uA()(this)}}function nr(i,a){return Gn((e,o)=>{let d=null,h=0,_=!1;const w=()=>_&&!d&&o.complete();e.subscribe(si(o,D=>{null==d||d.unsubscribe();let k=0;const P=h++;$e(i(D,P)).subscribe(d=si(o,B=>o.next(a?a(D,B,P,k++):B),()=>{d=null,w()}))},()=>{_=!0,w()}))})}function Tn(i){return i<=0?()=>_o:Gn((a,e)=>{let o=0;a.subscribe(si(e,d=>{++o<=i&&(e.next(d),i<=o&&e.complete())}))})}function wi(...i){const a=Ad(i);return Gn((e,o)=>{(a?ey(i,e,a):ey(i,e)).subscribe(o)})}function ny(i){return Gn((a,e)=>{let o=!1;a.subscribe(si(e,d=>{o=!0,e.next(d)},()=>{o||e.next(i),e.complete()}))})}function cF(i=bf){return Gn((a,e)=>{let o=!1;a.subscribe(si(e,d=>{o=!0,e.next(d)},()=>o?e.complete():e.error(i())))})}function bf(){return new ol}function nc(i,a){const e=arguments.length>=2;return o=>o.pipe(i?Kn((d,h)=>i(d,h,o)):Ku,Tn(1),e?ny(a):cF(()=>new ol))}function Li(i,a,e){const o=$t(i)||a||e?{next:i,error:a,complete:e}:i;return o?Gn((d,h)=>{var _;null===(_=o.subscribe)||void 0===_||_.call(o);let w=!0;d.subscribe(si(h,D=>{var k;null===(k=o.next)||void 0===k||k.call(o,D),h.next(D)},()=>{var D;w=!1,null===(D=o.complete)||void 0===D||D.call(o),h.complete()},D=>{var k;w=!1,null===(k=o.error)||void 0===k||k.call(o,D),h.error(D)},()=>{var D,k;w&&(null===(D=o.unsubscribe)||void 0===D||D.call(o)),null===(k=o.finalize)||void 0===k||k.call(o)}))}):Ku}function Oa(i){return Gn((a,e)=>{let h,o=null,d=!1;o=a.subscribe(si(e,void 0,void 0,_=>{h=$e(i(_,Oa(i)(a))),o?(o.unsubscribe(),o=null,h.subscribe(e)):d=!0})),d&&(o.unsubscribe(),o=null,h.subscribe(e))})}function dF(i,a){return Gn(function d6(i,a,e,o,d){return(h,_)=>{let w=e,D=a,k=0;h.subscribe(si(_,P=>{const B=k++;D=w?i(D,P,B):(w=!0,P),o&&_.next(D)},d&&(()=>{w&&_.next(D),_.complete()})))}}(i,a,arguments.length>=2,!0))}function Lx(i){return i<=0?()=>_o:Gn((a,e)=>{let o=[];a.subscribe(si(e,d=>{o.push(d),i{for(const d of o)e.next(d);e.complete()},void 0,()=>{o=null}))})}function uF(i,a){const e=arguments.length>=2;return o=>o.pipe(i?Kn((d,h)=>i(d,h,o)):Ku,Lx(1),e?ny(a):cF(()=>new ol))}function hA(i,a=!1){return Gn((e,o)=>{let d=0;e.subscribe(si(o,h=>{const _=i(h,d++);(_||a)&&o.next(h),!_&&o.complete()}))})}function hF(i){return vt(()=>i)}function fA(i){return Gn((a,e)=>{try{a.subscribe(e)}finally{e.add(i)}})}const tn="primary",Vm=Symbol("RouteTitle");class fF{constructor(a){this.params=a||{}}has(a){return Object.prototype.hasOwnProperty.call(this.params,a)}get(a){if(this.has(a)){const e=this.params[a];return Array.isArray(e)?e[0]:e}return null}getAll(a){if(this.has(a)){const e=this.params[a];return Array.isArray(e)?e:[e]}return[]}get keys(){return Object.keys(this.params)}}function zm(i){return new fF(i)}function u6(i,a,e){const o=e.path.split("/");if(o.length>i.length||"full"===e.pathMatch&&(a.hasChildren()||o.lengtho[h]===d)}return i===a}function gF(i){return Array.prototype.concat.apply([],i)}function vF(i){return i.length>0?i[i.length-1]:null}function ua(i,a){for(const e in i)i.hasOwnProperty(e)&&a(i[e],e)}function Ms(i){return zc(i)?i:im(i)?Ti(Promise.resolve(i)):Ze(i)}const wf=!1,h6={exact:function bF(i,a,e){if(!xf(i.segments,a.segments)||!Fx(i.segments,a.segments,e)||i.numberOfChildren!==a.numberOfChildren)return!1;for(const o in a.children)if(!i.children[o]||!bF(i.children[o],a.children[o],e))return!1;return!0},subset:wF},_F={exact:function f6(i,a){return sl(i,a)},subset:function p6(i,a){return Object.keys(a).length<=Object.keys(i).length&&Object.keys(a).every(e=>mF(i[e],a[e]))},ignored:()=>!0};function yF(i,a,e){return h6[e.paths](i.root,a.root,e.matrixParams)&&_F[e.queryParams](i.queryParams,a.queryParams)&&!("exact"===e.fragment&&i.fragment!==a.fragment)}function wF(i,a,e){return xF(i,a,a.segments,e)}function xF(i,a,e,o){if(i.segments.length>e.length){const d=i.segments.slice(0,e.length);return!(!xf(d,e)||a.hasChildren()||!Fx(d,e,o))}if(i.segments.length===e.length){if(!xf(i.segments,e)||!Fx(i.segments,e,o))return!1;for(const d in a.children)if(!i.children[d]||!wF(i.children[d],a.children[d],o))return!1;return!0}{const d=e.slice(0,i.segments.length),h=e.slice(i.segments.length);return!!(xf(i.segments,d)&&Fx(i.segments,d,o)&&i.children[tn])&&xF(i.children[tn],a,h,o)}}function Fx(i,a,e){return a.every((o,d)=>_F[e](i[d].parameters,o.parameters))}class ku{constructor(a=new pn([],{}),e={},o=null){this.root=a,this.queryParams=e,this.fragment=o}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=zm(this.queryParams)),this._queryParamMap}toString(){return mA.serialize(this)}}class pn{constructor(a,e){this.segments=a,this.children=e,this.parent=null,ua(e,(o,d)=>o.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return iy(this)}}class Hm{constructor(a,e){this.path=a,this.parameters=e}get parameterMap(){return this._parameterMap||(this._parameterMap=zm(this.parameters)),this._parameterMap}toString(){return Nx(this)}}function xf(i,a){return i.length===a.length&&i.every((e,o)=>e.path===a[o].path)}let Cf=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(){return new pA},providedIn:"root"}),i})();class pA{parse(a){const e=new Ts(a);return new ku(e.parseRootSegment(),e.parseQueryParams(),e.parseFragment())}serialize(a){const e=`/${Eu(a.root,!0)}`,o=function SF(i){const a=Object.keys(i).map(e=>{const o=i[e];return Array.isArray(o)?o.map(d=>`${Um(e)}=${Um(d)}`).join("&"):`${Um(e)}=${Um(o)}`}).filter(e=>!!e);return a.length?`?${a.join("&")}`:""}(a.queryParams);return`${e}${o}${"string"==typeof a.fragment?`#${function gA(i){return encodeURI(i)}(a.fragment)}`:""}`}}const mA=new pA;function iy(i){return i.segments.map(a=>Nx(a)).join("/")}function Eu(i,a){if(!i.hasChildren())return iy(i);if(a){const e=i.children[tn]?Eu(i.children[tn],!1):"",o=[];return ua(i.children,(d,h)=>{h!==tn&&o.push(`${h}:${Eu(d,!1)}`)}),o.length>0?`${e}(${o.join("//")})`:e}{const e=function CF(i,a){let e=[];return ua(i.children,(o,d)=>{d===tn&&(e=e.concat(a(o,d)))}),ua(i.children,(o,d)=>{d!==tn&&(e=e.concat(a(o,d)))}),e}(i,(o,d)=>d===tn?[Eu(i.children[tn],!1)]:[`${d}:${Eu(o,!1)}`]);return 1===Object.keys(i.children).length&&null!=i.children[tn]?`${iy(i)}/${e[0]}`:`${iy(i)}/(${e.join("//")})`}}function Gm(i){return encodeURIComponent(i).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function Um(i){return Gm(i).replace(/%3B/gi,";")}function vA(i){return Gm(i).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function Sf(i){return decodeURIComponent(i)}function _A(i){return Sf(i.replace(/\+/g,"%20"))}function Nx(i){return`${vA(i.path)}${function Bx(i){return Object.keys(i).map(a=>`;${vA(a)}=${vA(i[a])}`).join("")}(i.parameters)}`}const Vx=/^[^\/()?;=#]+/;function ry(i){const a=i.match(Vx);return a?a[0]:""}const g6=/^[^=?&#]+/,MF=/^[^&#]+/;class Ts{constructor(a){this.url=a,this.remaining=a}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new pn([],{}):new pn([],this.parseChildren())}parseQueryParams(){const a={};if(this.consumeOptional("?"))do{this.parseQueryParam(a)}while(this.consumeOptional("&"));return a}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const a=[];for(this.peekStartsWith("(")||a.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),a.push(this.parseSegment());let e={};this.peekStartsWith("/(")&&(this.capture("/"),e=this.parseParens(!0));let o={};return this.peekStartsWith("(")&&(o=this.parseParens(!1)),(a.length>0||Object.keys(e).length>0)&&(o[tn]=new pn(a,e)),o}parseSegment(){const a=ry(this.remaining);if(""===a&&this.peekStartsWith(";"))throw new Ce(4009,wf);return this.capture(a),new Hm(Sf(a),this.parseMatrixParams())}parseMatrixParams(){const a={};for(;this.consumeOptional(";");)this.parseParam(a);return a}parseParam(a){const e=ry(this.remaining);if(!e)return;this.capture(e);let o="";if(this.consumeOptional("=")){const d=ry(this.remaining);d&&(o=d,this.capture(o))}a[Sf(e)]=Sf(o)}parseQueryParam(a){const e=function DF(i){const a=i.match(g6);return a?a[0]:""}(this.remaining);if(!e)return;this.capture(e);let o="";if(this.consumeOptional("=")){const _=function TF(i){const a=i.match(MF);return a?a[0]:""}(this.remaining);_&&(o=_,this.capture(o))}const d=_A(e),h=_A(o);if(a.hasOwnProperty(d)){let _=a[d];Array.isArray(_)||(_=[_],a[d]=_),_.push(h)}else a[d]=h}parseParens(a){const e={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const o=ry(this.remaining),d=this.remaining[o.length];if("/"!==d&&")"!==d&&";"!==d)throw new Ce(4010,wf);let h;o.indexOf(":")>-1?(h=o.slice(0,o.indexOf(":")),this.capture(h),this.capture(":")):a&&(h=tn);const _=this.parseChildren();e[h]=1===Object.keys(_).length?_[tn]:new pn([],_),this.consumeOptional("//")}return e}peekStartsWith(a){return this.remaining.startsWith(a)}consumeOptional(a){return!!this.peekStartsWith(a)&&(this.remaining=this.remaining.substring(a.length),!0)}capture(a){if(!this.consumeOptional(a))throw new Ce(4011,wf)}}function zx(i){return i.segments.length>0?new pn([],{[tn]:i}):i}function La(i){const a={};for(const o of Object.keys(i.children)){const h=La(i.children[o]);(h.segments.length>0||h.hasChildren())&&(a[o]=h)}return function v6(i){if(1===i.numberOfChildren&&i.children[tn]){const a=i.children[tn];return new pn(i.segments.concat(a.segments),a.children)}return i}(new pn(i.segments,a))}function Df(i){return i instanceof ku}const Hx=!1;function _6(i,a,e,o,d){var h;if(0===e.length)return Tf(a.root,a.root,a.root,o,d);const _=function bA(i){if("string"==typeof i[0]&&1===i.length&&"/"===i[0])return new kF(!0,0,i);let a=0,e=!1;const o=i.reduce((d,h,_)=>{if("object"==typeof h&&null!=h){if(h.outlets){const w={};return ua(h.outlets,(D,k)=>{w[k]="string"==typeof D?D.split("/"):D}),[...d,{outlets:w}]}if(h.segmentPath)return[...d,h.segmentPath]}return"string"!=typeof h?[...d,h]:0===_?(h.split("/").forEach((w,D)=>{0==D&&"."===w||(0==D&&""===w?e=!0:".."===w?a++:""!=w&&d.push(w))}),d):[...d,h]},[]);return new kF(e,a,o)}(e);return _.toRoot()?Tf(a.root,a.root,new pn([],{}),o,d):function w(k){var P;const B=function b6(i,a,e,o){if(i.isAbsolute)return new jm(a.root,!0,0);if(-1===o)return new jm(e,e===a.root,0);return function EF(i,a,e){let o=i,d=a,h=e;for(;h>d;){if(h-=d,o=o.parent,!o)throw new Ce(4005,Hx&&"Invalid number of '../'");d=o.segments.length}return new jm(o,!1,d-h)}(e,o+(Mf(i.commands[0])?0:1),i.numberOfDoubleDots)}(_,a,null===(P=i.snapshot)||void 0===P?void 0:P._urlSegment,k),W=B.processChildren?Af(B.segmentGroup,B.index,_.commands):sy(B.segmentGroup,B.index,_.commands);return Tf(a.root,B.segmentGroup,W,o,d)}(null===(h=i.snapshot)||void 0===h?void 0:h._lastPathIndex)}function Mf(i){return"object"==typeof i&&null!=i&&!i.outlets&&!i.segmentPath}function oy(i){return"object"==typeof i&&null!=i&&i.outlets}function Tf(i,a,e,o,d){let _,h={};o&&ua(o,(D,k)=>{h[k]=Array.isArray(D)?D.map(P=>`${P}`):`${D}`}),_=i===a?e:yA(i,a,e);const w=zx(La(_));return new ku(w,h,d)}function yA(i,a,e){const o={};return ua(i.children,(d,h)=>{o[h]=d===a?e:yA(d,a,e)}),new pn(i.segments,o)}class kF{constructor(a,e,o){if(this.isAbsolute=a,this.numberOfDoubleDots=e,this.commands=o,a&&o.length>0&&Mf(o[0]))throw new Ce(4003,Hx&&"Root segment cannot have matrix parameters");const d=o.find(oy);if(d&&d!==vF(o))throw new Ce(4004,Hx&&"{outlets:{}} has to be the last command")}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class jm{constructor(a,e,o){this.segmentGroup=a,this.processChildren=e,this.index=o}}function sy(i,a,e){if(i||(i=new pn([],{})),0===i.segments.length&&i.hasChildren())return Af(i,a,e);const o=function kf(i,a,e){let o=0,d=a;const h={match:!1,pathIndex:0,commandIndex:0};for(;d=e.length)return h;const _=i.segments[d],w=e[o];if(oy(w))break;const D=`${w}`,k=o0&&void 0===D)break;if(D&&k&&"object"==typeof k&&void 0===k.outlets){if(!PF(D,k,_))return h;o+=2}else{if(!PF(D,{},_))return h;o++}d++}return{match:!0,pathIndex:d,commandIndex:o}}(i,a,e),d=e.slice(o.commandIndex);if(o.match&&o.pathIndex{"string"==typeof h&&(h=[h]),null!==h&&(d[_]=sy(i.children[_],a,h))}),ua(i.children,(h,_)=>{void 0===o[_]&&(d[_]=h)}),new pn(i.segments,d)}}function ad(i,a,e){const o=i.segments.slice(0,a);let d=0;for(;d{"string"==typeof e&&(e=[e]),null!==e&&(a[o]=ad(new pn([],{}),0,e))}),a}function IF(i){const a={};return ua(i,(e,o)=>a[o]=`${e}`),a}function PF(i,a,e){return i==e.path&&sl(a,e.parameters)}const ly="imperative";class ic{constructor(a,e){this.id=a,this.url=e}}class wA extends ic{constructor(a,e,o="imperative",d=null){super(a,e),this.type=0,this.navigationTrigger=o,this.restoredState=d}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class Ef extends ic{constructor(a,e,o){super(a,e),this.urlAfterRedirects=o,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Gx extends ic{constructor(a,e,o,d){super(a,e),this.reason=o,this.code=d,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class Ux extends ic{constructor(a,e,o,d){super(a,e),this.reason=o,this.code=d,this.type=16}}class xA extends ic{constructor(a,e,o,d){super(a,e),this.error=o,this.target=d,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class cy extends ic{constructor(a,e,o,d){super(a,e),this.urlAfterRedirects=o,this.state=d,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class od extends ic{constructor(a,e,o,d){super(a,e),this.urlAfterRedirects=o,this.state=d,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class CA extends ic{constructor(a,e,o,d,h){super(a,e),this.urlAfterRedirects=o,this.state=d,this.shouldActivate=h,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class x6 extends ic{constructor(a,e,o,d){super(a,e),this.urlAfterRedirects=o,this.state=d,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class C6 extends ic{constructor(a,e,o,d){super(a,e),this.urlAfterRedirects=o,this.state=d,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class S6{constructor(a){this.route=a,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class RF{constructor(a){this.route=a,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class jx{constructor(a){this.snapshot=a,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class OF{constructor(a){this.snapshot=a,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class D6{constructor(a){this.snapshot=a,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class LF{constructor(a){this.snapshot=a,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class SA{constructor(a,e,o){this.routerEvent=a,this.position=e,this.anchor=o,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}let BF=(()=>{class i{createUrlTree(e,o,d,h,_,w){return _6(e||o.root,d,h,_,w)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),zF=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(a){return BF.\u0275fac(a)},providedIn:"root"}),i})();class HF{constructor(a){this._root=a}get root(){return this._root.value}parent(a){const e=this.pathFromRoot(a);return e.length>1?e[e.length-2]:null}children(a){const e=DA(a,this._root);return e?e.children.map(o=>o.value):[]}firstChild(a){const e=DA(a,this._root);return e&&e.children.length>0?e.children[0].value:null}siblings(a){const e=MA(a,this._root);return e.length<2?[]:e[e.length-2].children.map(d=>d.value).filter(d=>d!==a)}pathFromRoot(a){return MA(a,this._root).map(e=>e.value)}}function DA(i,a){if(i===a.value)return a;for(const e of a.children){const o=DA(i,e);if(o)return o}return null}function MA(i,a){if(i===a.value)return[a];for(const e of a.children){const o=MA(i,e);if(o.length)return o.unshift(a),o}return[]}class sd{constructor(a,e){this.value=a,this.children=e}toString(){return`TreeNode(${this.value})`}}function Wm(i){const a={};return i&&i.children.forEach(e=>a[e.value.outlet]=e),a}class GF extends HF{constructor(a,e){super(a),this.snapshot=e,Wx(this,a)}toString(){return this.snapshot.toString()}}function UF(i,a){const e=function jF(i,a){const _=new $x([],{},{},"",{},tn,a,null,i.root,-1,{});return new AA("",new sd(_,[]))}(i,a),o=new Oi([new Hm("",{})]),d=new Oi({}),h=new Oi({}),_=new Oi({}),w=new Oi(""),D=new xi(o,d,_,w,h,tn,a,e.root);return D.snapshot=e.root,new GF(new sd(D,[]),e)}class xi{constructor(a,e,o,d,h,_,w,D){var k,P;this.url=a,this.params=e,this.queryParams=o,this.fragment=d,this.data=h,this.outlet=_,this.component=w,this.title=null!==(k=null===(P=this.data)||void 0===P?void 0:P.pipe(vt(B=>B[Vm])))&&void 0!==k?k:Ze(void 0),this._futureSnapshot=D}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe(vt(a=>zm(a)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe(vt(a=>zm(a)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function TA(i,a="emptyOnly"){const e=i.pathFromRoot;let o=0;if("always"!==a)for(o=e.length-1;o>=1;){const d=e[o],h=e[o-1];if(d.routeConfig&&""===d.routeConfig.path)o--;else{if(h.component)break;o--}}return function dy(i){return i.reduce((a,e)=>{var o;return{params:{...a.params,...e.params},data:{...a.data,...e.data},resolve:{...e.data,...a.resolve,...null===(o=e.routeConfig)||void 0===o?void 0:o.data,...e._resolvedData}}},{params:{},data:{},resolve:{}})}(e.slice(o))}class $x{get title(){var a;return null===(a=this.data)||void 0===a?void 0:a[Vm]}constructor(a,e,o,d,h,_,w,D,k,P,B){this.url=a,this.params=e,this.queryParams=o,this.fragment=d,this.data=h,this.outlet=_,this.component=w,this.routeConfig=D,this._urlSegment=k,this._lastPathIndex=P,this._resolve=B}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=zm(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=zm(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(o=>o.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class AA extends HF{constructor(a,e){super(e),this.url=a,Wx(this,e)}toString(){return kA(this._root)}}function Wx(i,a){a.value._routerState=i,a.children.forEach(e=>Wx(i,e))}function kA(i){const a=i.children.length>0?` { ${i.children.map(kA).join(", ")} } `:"";return`${i.value}${a}`}function Yx(i){if(i.snapshot){const a=i.snapshot,e=i._futureSnapshot;i.snapshot=e,sl(a.queryParams,e.queryParams)||i.queryParams.next(e.queryParams),a.fragment!==e.fragment&&i.fragment.next(e.fragment),sl(a.params,e.params)||i.params.next(e.params),function pF(i,a){if(i.length!==a.length)return!1;for(let e=0;esl(e.parameters,a[o].parameters))}(i.url,a.url);return e&&!(!i.parent!=!a.parent)&&(!i.parent||qx(i.parent,a.parent))}function uy(i,a,e){if(e&&i.shouldReuseRoute(a.value,e.value.snapshot)){const o=e.value;o._futureSnapshot=a.value;const d=function T6(i,a,e){return a.children.map(o=>{for(const d of e.children)if(i.shouldReuseRoute(o.value,d.value.snapshot))return uy(i,o,d);return uy(i,o)})}(i,a,e);return new sd(o,d)}{if(i.shouldAttach(a.value)){const h=i.retrieve(a.value);if(null!==h){const _=h.route;return _.value._futureSnapshot=a.value,_.children=a.children.map(w=>uy(i,w)),_}}const o=function $F(i){return new xi(new Oi(i.url),new Oi(i.params),new Oi(i.queryParams),new Oi(i.fragment),new Oi(i.data),i.outlet,i.component,i)}(a.value),d=a.children.map(h=>uy(i,h));return new sd(o,d)}}const EA="ngNavigationCancelingError";function WF(i,a){const{redirectTo:e,navigationBehaviorOptions:o}=Df(a)?{redirectTo:a,navigationBehaviorOptions:void 0}:a,d=IA(!1,0,a);return d.url=e,d.navigationBehaviorOptions=o,d}function IA(i,a,e){const o=new Error("NavigationCancelingError: "+(i||""));return o[EA]=!0,o.cancellationCode=a,e&&(o.url=e),o}function Xx(i){return YF(i)&&Df(i.url)}function YF(i){return i&&i[EA]}class A6{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new hy,this.attachRef=null}}let hy=(()=>{class i{constructor(){this.contexts=new Map}onChildOutletCreated(e,o){const d=this.getOrCreateContext(e);d.outlet=o,this.contexts.set(e,d)}onChildOutletDestroyed(e){const o=this.getContext(e);o&&(o.outlet=null,o.attachRef=null)}onOutletDeactivated(){const e=this.contexts;return this.contexts=new Map,e}onOutletReAttached(e){this.contexts=e}getOrCreateContext(e){let o=this.getContext(e);return o||(o=new A6,this.contexts.set(e,o)),o}getContext(e){return this.contexts.get(e)||null}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const fy=!1;let PA=(()=>{class i{constructor(){this.activated=null,this._activatedRoute=null,this.name=tn,this.activateEvents=new we,this.deactivateEvents=new we,this.attachEvents=new we,this.detachEvents=new we,this.parentContexts=St(hy),this.location=St(mi),this.changeDetector=St(Jt),this.environmentInjector=St(qr)}ngOnChanges(e){if(e.name){const{firstChange:o,previousValue:d}=e.name;if(o)return;this.isTrackedInParentContexts(d)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(d)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(e){var o;return(null===(o=this.parentContexts.getContext(e))||void 0===o?void 0:o.outlet)===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const e=this.parentContexts.getContext(this.name);null!=e&&e.route&&(e.attachRef?this.attach(e.attachRef,e.route):this.activateWith(e.route,e.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new Ce(4012,fy);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new Ce(4012,fy);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new Ce(4012,fy);this.location.detach();const e=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(e.instance),e}attach(e,o){this.activated=e,this._activatedRoute=o,this.location.insert(e.hostView),this.attachEvents.emit(e.instance)}deactivate(){if(this.activated){const e=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(e)}}activateWith(e,o){if(this.isActivated)throw new Ce(4013,fy);this._activatedRoute=e;const d=this.location,_=e.snapshot.component,w=this.parentContexts.getOrCreateContext(this.name).children,D=new k6(e,w,d.injector);if(o&&function E6(i){return!!i.resolveComponentFactory}(o)){const k=o.resolveComponentFactory(_);this.activated=d.createComponent(k,d.length,D)}else this.activated=d.createComponent(_,{index:d.length,injector:D,environmentInjector:o??this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[jn]}),i})();class k6{constructor(a,e,o){this.route=a,this.childContexts=e,this.parent=o}get(a,e){return a===xi?this.route:a===hy?this.childContexts:this.parent.get(a,e)}}let RA=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["ng-component"]],standalone:!0,features:[fm],decls:1,vars:0,template:function(e,o){1&e&&pe(0,"router-outlet")},dependencies:[PA],encapsulation:2}),i})();function OA(i,a){var e;return i.providers&&!i._injector&&(i._injector=yw(i.providers,a,`Route: ${i.path}`)),null!==(e=i._injector)&&void 0!==e?e:a}function FA(i){const a=i.children&&i.children.map(FA),e=a?{...i,children:a}:{...i};return!e.component&&!e.loadComponent&&(a||e.loadChildren)&&e.outlet&&e.outlet!==tn&&(e.component=RA),e}function As(i){return i.outlet||tn}function qF(i,a){const e=i.filter(o=>As(o)===a);return e.push(...i.filter(o=>As(o)!==a)),e}function my(i){var a;if(!i)return null;if(null!==(a=i.routeConfig)&&void 0!==a&&a._injector)return i.routeConfig._injector;for(let e=i.parent;e;e=e.parent){const o=e.routeConfig;if(null!=o&&o._loadedInjector)return o._loadedInjector;if(null!=o&&o._injector)return o._injector}return null}class ZF{constructor(a,e,o,d){this.routeReuseStrategy=a,this.futureState=e,this.currState=o,this.forwardEvent=d}activate(a){const e=this.futureState._root,o=this.currState?this.currState._root:null;this.deactivateChildRoutes(e,o,a),Yx(this.futureState.root),this.activateChildRoutes(e,o,a)}deactivateChildRoutes(a,e,o){const d=Wm(e);a.children.forEach(h=>{const _=h.value.outlet;this.deactivateRoutes(h,d[_],o),delete d[_]}),ua(d,(h,_)=>{this.deactivateRouteAndItsChildren(h,o)})}deactivateRoutes(a,e,o){const d=a.value,h=e?e.value:null;if(d===h)if(d.component){const _=o.getContext(d.outlet);_&&this.deactivateChildRoutes(a,e,_.children)}else this.deactivateChildRoutes(a,e,o);else h&&this.deactivateRouteAndItsChildren(e,o)}deactivateRouteAndItsChildren(a,e){a.value.component&&this.routeReuseStrategy.shouldDetach(a.value.snapshot)?this.detachAndStoreRouteSubtree(a,e):this.deactivateRouteAndOutlet(a,e)}detachAndStoreRouteSubtree(a,e){const o=e.getContext(a.value.outlet),d=o&&a.value.component?o.children:e,h=Wm(a);for(const _ of Object.keys(h))this.deactivateRouteAndItsChildren(h[_],d);if(o&&o.outlet){const _=o.outlet.detach(),w=o.children.onOutletDeactivated();this.routeReuseStrategy.store(a.value.snapshot,{componentRef:_,route:a,contexts:w})}}deactivateRouteAndOutlet(a,e){const o=e.getContext(a.value.outlet),d=o&&a.value.component?o.children:e,h=Wm(a);for(const _ of Object.keys(h))this.deactivateRouteAndItsChildren(h[_],d);o&&(o.outlet&&(o.outlet.deactivate(),o.children.onOutletDeactivated()),o.attachRef=null,o.resolver=null,o.route=null)}activateChildRoutes(a,e,o){const d=Wm(e);a.children.forEach(h=>{this.activateRoutes(h,d[h.value.outlet],o),this.forwardEvent(new LF(h.value.snapshot))}),a.children.length&&this.forwardEvent(new OF(a.value.snapshot))}activateRoutes(a,e,o){const d=a.value,h=e?e.value:null;if(Yx(d),d===h)if(d.component){const w=o.getOrCreateContext(d.outlet);this.activateChildRoutes(a,e,w.children)}else this.activateChildRoutes(a,e,o);else if(d.component){const w=o.getOrCreateContext(d.outlet);if(this.routeReuseStrategy.shouldAttach(d.snapshot)){const D=this.routeReuseStrategy.retrieve(d.snapshot);this.routeReuseStrategy.store(d.snapshot,null),w.children.onOutletReAttached(D.contexts),w.attachRef=D.componentRef,w.route=D.route.value,w.outlet&&w.outlet.attach(D.componentRef,D.route.value),Yx(D.route.value),this.activateChildRoutes(a,null,w.children)}else{var _;const D=my(d.snapshot),k=null!==(_=null==D?void 0:D.get(Ol))&&void 0!==_?_:null;w.attachRef=null,w.route=d,w.resolver=k,w.injector=D,w.outlet&&w.outlet.activateWith(d,w.injector),this.activateChildRoutes(a,null,w.children)}}else this.activateChildRoutes(a,null,o)}}class KF{constructor(a){this.path=a,this.route=this.path[this.path.length-1]}}class gy{constructor(a,e){this.component=a,this.route=e}}function QF(i,a,e){const o=i._root;return vy(o,a?a._root:null,e,[o.value])}function Iu(i,a){const e=Symbol(),o=a.get(i,e);return o===e?"function"!=typeof i||function Gz(i){return null!==Nb(i)}(i)?a.get(i):i:o}function vy(i,a,e,o,d={canDeactivateChecks:[],canActivateChecks:[]}){const h=Wm(a);return i.children.forEach(_=>{(function ks(i,a,e,o,d={canDeactivateChecks:[],canActivateChecks:[]}){const h=i.value,_=a?a.value:null,w=e?e.getContext(i.value.outlet):null;if(_&&h.routeConfig===_.routeConfig){const D=function R6(i,a,e){if("function"==typeof e)return e(i,a);switch(e){case"pathParamsChange":return!xf(i.url,a.url);case"pathParamsOrQueryParamsChange":return!xf(i.url,a.url)||!sl(i.queryParams,a.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!qx(i,a)||!sl(i.queryParams,a.queryParams);default:return!qx(i,a)}}(_,h,h.routeConfig.runGuardsAndResolvers);D?d.canActivateChecks.push(new KF(o)):(h.data=_.data,h._resolvedData=_._resolvedData),vy(i,a,h.component?w?w.children:null:e,o,d),D&&w&&w.outlet&&w.outlet.isActivated&&d.canDeactivateChecks.push(new gy(w.outlet.component,_))}else _&&_y(a,w,d),d.canActivateChecks.push(new KF(o)),vy(i,null,h.component?w?w.children:null:e,o,d)})(_,h[_.value.outlet],e,o.concat([_.value]),d),delete h[_.value.outlet]}),ua(h,(_,w)=>_y(_,e.getContext(w),d)),d}function _y(i,a,e){const o=Wm(i),d=i.value;ua(o,(h,_)=>{_y(h,d.component?a?a.children.getContext(_):null:a,e)}),e.canDeactivateChecks.push(new gy(d.component&&a&&a.outlet&&a.outlet.isActivated?a.outlet.component:null,d))}function yy(i){return"function"==typeof i}function BA(i){return i instanceof ol||"EmptyError"===(null==i?void 0:i.name)}const Kx=Symbol("INITIAL_VALUE");function Pu(){return nr(i=>Za(i.map(a=>a.pipe(Tn(1),wi(Kx)))).pipe(vt(a=>{for(const e of a)if(!0!==e){if(e===Kx)return Kx;if(!1===e||e instanceof ku)return e}return!0}),Kn(a=>a!==Kx),Tn(1)))}function nN(i){return function Mq(...i){return Oz(i)}(Li(a=>{if(Df(a))throw WF(0,a)}),vt(a=>!0===a))}const zA={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function iN(i,a,e,o,d){const h=Jx(i,a,e);return h.matched?function j6(i,a,e,o){const d=a.canMatch;return d&&0!==d.length?Ze(d.map(_=>{const w=Iu(_,i);return Ms(function NA(i){return i&&yy(i.canMatch)}(w)?w.canMatch(a,e):i.runInContext(()=>w(a,e)))})).pipe(Pu(),nN()):Ze(!0)}(o=OA(a,o),a,e).pipe(vt(_=>!0===_?h:{...zA})):Ze(h)}function Jx(i,a,e){var o;if(""===a.path)return"full"===a.pathMatch&&(i.hasChildren()||e.length>0)?{...zA}:{matched:!0,consumedSegments:[],remainingSegments:e,parameters:{},positionalParamSegments:{}};const h=(a.matcher||u6)(e,i,a);if(!h)return{...zA};const _={};ua(h.posParams,(D,k)=>{_[k]=D.path});const w=h.consumed.length>0?{..._,...h.consumed[h.consumed.length-1].parameters}:_;return{matched:!0,consumedSegments:h.consumed,remainingSegments:e.slice(h.consumed.length),parameters:w,positionalParamSegments:null!==(o=h.posParams)&&void 0!==o?o:{}}}function eC(i,a,e,o){if(e.length>0&&function aN(i,a,e){return e.some(o=>tC(i,a,o)&&As(o)!==tn)}(i,e,o)){const h=new pn(a,function $6(i,a,e,o){const d={};d[tn]=o,o._sourceSegment=i,o._segmentIndexShift=a.length;for(const h of e)if(""===h.path&&As(h)!==tn){const _=new pn([],{});_._sourceSegment=i,_._segmentIndexShift=a.length,d[As(h)]=_}return d}(i,a,o,new pn(e,i.children)));return h._sourceSegment=i,h._segmentIndexShift=a.length,{segmentGroup:h,slicedSegments:[]}}if(0===e.length&&function W6(i,a,e){return e.some(o=>tC(i,a,o))}(i,e,o)){const h=new pn(i.segments,function rN(i,a,e,o,d){const h={};for(const _ of o)if(tC(i,e,_)&&!d[As(_)]){const w=new pn([],{});w._sourceSegment=i,w._segmentIndexShift=a.length,h[As(_)]=w}return{...d,...h}}(i,a,e,o,i.children));return h._sourceSegment=i,h._segmentIndexShift=a.length,{segmentGroup:h,slicedSegments:e}}const d=new pn(i.segments,i.children);return d._sourceSegment=i,d._segmentIndexShift=a.length,{segmentGroup:d,slicedSegments:e}}function tC(i,a,e){return(!(i.hasChildren()||a.length>0)||"full"!==e.pathMatch)&&""===e.path}function oN(i,a,e,o){return!!(As(i)===o||o!==tn&&tC(a,e,i))&&("**"===i.path||Jx(a,i,e).matched)}function HA(i,a,e){return 0===a.length&&!i.children[e]}const Ym=!1;class nC{constructor(a){this.segmentGroup=a||null}}class sN{constructor(a){this.urlTree=a}}function xy(i){return rd(new nC(i))}function lN(i){return rd(new sN(i))}class cN{constructor(a,e,o,d,h){this.injector=a,this.configLoader=e,this.urlSerializer=o,this.urlTree=d,this.config=h,this.allowRedirects=!0}apply(){const a=eC(this.urlTree.root,[],[],this.config).segmentGroup,e=new pn(a.segments,a.children);return this.expandSegmentGroup(this.injector,this.config,e,tn).pipe(vt(h=>this.createUrlTree(La(h),this.urlTree.queryParams,this.urlTree.fragment))).pipe(Oa(h=>{if(h instanceof sN)return this.allowRedirects=!1,this.match(h.urlTree);throw h instanceof nC?this.noMatchError(h):h}))}match(a){return this.expandSegmentGroup(this.injector,this.config,a.root,tn).pipe(vt(d=>this.createUrlTree(La(d),a.queryParams,a.fragment))).pipe(Oa(d=>{throw d instanceof nC?this.noMatchError(d):d}))}noMatchError(a){return new Ce(4002,Ym)}createUrlTree(a,e,o){const d=zx(a);return new ku(d,e,o)}expandSegmentGroup(a,e,o,d){return 0===o.segments.length&&o.hasChildren()?this.expandChildren(a,e,o).pipe(vt(h=>new pn([],h))):this.expandSegment(a,o,e,o.segments,d,!0)}expandChildren(a,e,o){const d=[];for(const h of Object.keys(o.children))"primary"===h?d.unshift(h):d.push(h);return Ti(d).pipe(id(h=>{const _=o.children[h],w=qF(e,h);return this.expandSegmentGroup(a,w,_,h).pipe(vt(D=>({segment:D,outlet:h})))}),dF((h,_)=>(h[_.outlet]=_.segment,h),{}),uF())}expandSegment(a,e,o,d,h,_){return Ti(o).pipe(id(w=>this.expandSegmentAgainstRoute(a,e,o,w,d,h,_).pipe(Oa(k=>{if(k instanceof nC)return Ze(null);throw k}))),nc(w=>!!w),Oa((w,D)=>{if(BA(w))return HA(e,d,h)?Ze(new pn([],{})):xy(e);throw w}))}expandSegmentAgainstRoute(a,e,o,d,h,_,w){return oN(d,e,h,_)?void 0===d.redirectTo?this.matchSegmentAgainstRoute(a,e,d,h,_):w&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(a,e,o,d,h,_):xy(e):xy(e)}expandSegmentAgainstRouteUsingRedirect(a,e,o,d,h,_){return"**"===d.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(a,o,d,_):this.expandRegularSegmentAgainstRouteUsingRedirect(a,e,o,d,h,_)}expandWildCardWithParamsAgainstRouteUsingRedirect(a,e,o,d){const h=this.applyRedirectCommands([],o.redirectTo,{});return o.redirectTo.startsWith("/")?lN(h):this.lineralizeSegments(o,h).pipe(Vi(_=>{const w=new pn(_,{});return this.expandSegment(a,w,e,_,d,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(a,e,o,d,h,_){const{matched:w,consumedSegments:D,remainingSegments:k,positionalParamSegments:P}=Jx(e,d,h);if(!w)return xy(e);const B=this.applyRedirectCommands(D,d.redirectTo,P);return d.redirectTo.startsWith("/")?lN(B):this.lineralizeSegments(d,B).pipe(Vi(W=>this.expandSegment(a,e,o,W.concat(k),_,!1)))}matchSegmentAgainstRoute(a,e,o,d,h){return"**"===o.path?(a=OA(o,a),o.loadChildren?(o._loadedRoutes?Ze({routes:o._loadedRoutes,injector:o._loadedInjector}):this.configLoader.loadChildren(a,o)).pipe(vt(w=>(o._loadedRoutes=w.routes,o._loadedInjector=w.injector,new pn(d,{})))):Ze(new pn(d,{}))):iN(e,o,d,a).pipe(nr(({matched:_,consumedSegments:w,remainingSegments:D})=>{var k;return _?(a=null!==(k=o._injector)&&void 0!==k?k:a,this.getChildConfig(a,o,d).pipe(Vi(B=>{var W;const Z=null!==(W=B.injector)&&void 0!==W?W:a,te=B.routes,{segmentGroup:ie,slicedSegments:de}=eC(e,w,D,te),he=new pn(ie.segments,ie.children);if(0===de.length&&he.hasChildren())return this.expandChildren(Z,te,he).pipe(vt(yn=>new pn(w,yn)));if(0===te.length&&0===de.length)return Ze(new pn(w,{}));const Me=As(o)===h;return this.expandSegment(Z,he,te,de,Me?tn:h,!0).pipe(vt(Fe=>new pn(w.concat(Fe.segments),Fe.children)))}))):xy(e)}))}getChildConfig(a,e,o){return e.children?Ze({routes:e.children,injector:a}):e.loadChildren?void 0!==e._loadedRoutes?Ze({routes:e._loadedRoutes,injector:e._loadedInjector}):function U6(i,a,e,o){const d=a.canLoad;return void 0===d||0===d.length?Ze(!0):Ze(d.map(_=>{const w=Iu(_,i);return Ms(function L6(i){return i&&yy(i.canLoad)}(w)?w.canLoad(a,e):i.runInContext(()=>w(a,e)))})).pipe(Pu(),nN())}(a,e,o).pipe(Vi(d=>d?this.configLoader.loadChildren(a,e).pipe(Li(h=>{e._loadedRoutes=h.routes,e._loadedInjector=h.injector})):function q6(i){return rd(IA(Ym,3))}())):Ze({routes:[],injector:a})}lineralizeSegments(a,e){let o=[],d=e.root;for(;;){if(o=o.concat(d.segments),0===d.numberOfChildren)return Ze(o);if(d.numberOfChildren>1||!d.children[tn])return a.redirectTo,rd(new Ce(4e3,Ym));d=d.children[tn]}}applyRedirectCommands(a,e,o){return this.applyRedirectCreateUrlTree(e,this.urlSerializer.parse(e),a,o)}applyRedirectCreateUrlTree(a,e,o,d){const h=this.createSegmentGroup(a,e.root,o,d);return new ku(h,this.createQueryParams(e.queryParams,this.urlTree.queryParams),e.fragment)}createQueryParams(a,e){const o={};return ua(a,(d,h)=>{if("string"==typeof d&&d.startsWith(":")){const w=d.substring(1);o[h]=e[w]}else o[h]=d}),o}createSegmentGroup(a,e,o,d){const h=this.createSegments(a,e.segments,o,d);let _={};return ua(e.children,(w,D)=>{_[D]=this.createSegmentGroup(a,w,o,d)}),new pn(h,_)}createSegments(a,e,o,d){return e.map(h=>h.path.startsWith(":")?this.findPosParam(a,h,d):this.findOrReturn(h,o))}findPosParam(a,e,o){const d=o[e.path.substring(1)];if(!d)throw new Ce(4001,Ym);return d}findOrReturn(a,e){let o=0;for(const d of e){if(d.path===a.path)return e.splice(o),d;o++}return a}}class uN{}class K6{constructor(a,e,o,d,h,_,w){this.injector=a,this.rootComponentType=e,this.config=o,this.urlTree=d,this.url=h,this.paramsInheritanceStrategy=_,this.urlSerializer=w}recognize(){const a=eC(this.urlTree.root,[],[],this.config.filter(e=>void 0===e.redirectTo)).segmentGroup;return this.processSegmentGroup(this.injector,this.config,a,tn).pipe(vt(e=>{if(null===e)return null;const o=new $x([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},tn,this.rootComponentType,null,this.urlTree.root,-1,{}),d=new sd(o,e),h=new AA(this.url,d);return this.inheritParamsAndData(h._root),h}))}inheritParamsAndData(a){const e=a.value,o=TA(e,this.paramsInheritanceStrategy);e.params=Object.freeze(o.params),e.data=Object.freeze(o.data),a.children.forEach(d=>this.inheritParamsAndData(d))}processSegmentGroup(a,e,o,d){return 0===o.segments.length&&o.hasChildren()?this.processChildren(a,e,o):this.processSegment(a,e,o,o.segments,d)}processChildren(a,e,o){return Ti(Object.keys(o.children)).pipe(id(d=>{const h=o.children[d],_=qF(e,d);return this.processSegmentGroup(a,_,h,d)}),dF((d,h)=>d&&h?(d.push(...h),d):null),hA(d=>null!==d),ny(null),uF(),vt(d=>{if(null===d)return null;const h=fN(d);return function If(i){i.sort((a,e)=>a.value.outlet===tn?-1:e.value.outlet===tn?1:a.value.outlet.localeCompare(e.value.outlet))}(h),h}))}processSegment(a,e,o,d,h){return Ti(e).pipe(id(_=>{var w;return this.processSegmentAgainstRoute(null!==(w=_._injector)&&void 0!==w?w:a,_,o,d,h)}),nc(_=>!!_),Oa(_=>{if(BA(_))return HA(o,d,h)?Ze([]):Ze(null);throw _}))}processSegmentAgainstRoute(a,e,o,d,h){if(e.redirectTo||!oN(e,o,d,h))return Ze(null);let _;if("**"===e.path){var w,D;const k=d.length>0?vF(d).parameters:{},P=mN(o)+d.length;_=Ze({snapshot:new $x(d,k,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,qm(e),As(e),null!==(w=null!==(D=e.component)&&void 0!==D?D:e._loadedComponent)&&void 0!==w?w:null,e,pN(o),P,gN(e)),consumedSegments:[],remainingSegments:[]})}else _=iN(o,e,d,a).pipe(vt(({matched:k,consumedSegments:P,remainingSegments:B,parameters:W})=>{var Z,te;if(!k)return null;const ie=mN(o)+P.length;return{snapshot:new $x(P,W,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,qm(e),As(e),null!==(Z=null!==(te=e.component)&&void 0!==te?te:e._loadedComponent)&&void 0!==Z?Z:null,e,pN(o),ie,gN(e)),consumedSegments:P,remainingSegments:B}}));return _.pipe(nr(k=>{var P,B;if(null===k)return Ze(null);const{snapshot:W,consumedSegments:Z,remainingSegments:te}=k;a=null!==(P=e._injector)&&void 0!==P?P:a;const ie=null!==(B=e._loadedInjector)&&void 0!==B?B:a,de=function hN(i){return i.children?i.children:i.loadChildren?i._loadedRoutes:[]}(e),{segmentGroup:he,slicedSegments:Me}=eC(o,Z,te,de.filter(Fe=>void 0===Fe.redirectTo));if(0===Me.length&&he.hasChildren())return this.processChildren(ie,de,he).pipe(vt(Fe=>null===Fe?null:[new sd(W,Fe)]));if(0===de.length&&0===Me.length)return Ze([new sd(W,[])]);const fe=As(e)===h;return this.processSegment(ie,de,he,Me,fe?tn:h).pipe(vt(Fe=>null===Fe?null:[new sd(W,Fe)]))}))}}function iC(i){const a=i.value.routeConfig;return a&&""===a.path&&void 0===a.redirectTo}function fN(i){const a=[],e=new Set;for(const o of i){if(!iC(o)){a.push(o);continue}const d=a.find(h=>o.value.routeConfig===h.value.routeConfig);void 0!==d?(d.children.push(...o.children),e.add(d)):a.push(o)}for(const o of e){const d=fN(o.children);a.push(new sd(o.value,d))}return a.filter(o=>!e.has(o))}function pN(i){let a=i;for(;a._sourceSegment;)a=a._sourceSegment;return a}function mN(i){var a;let e=i,o=null!==(a=e._segmentIndexShift)&&void 0!==a?a:0;for(;e._sourceSegment;){var d;e=e._sourceSegment,o+=null!==(d=e._segmentIndexShift)&&void 0!==d?d:0}return o-1}function qm(i){return i.data||{}}function gN(i){return i.resolve||{}}function WA(i){return"string"==typeof i.title||null===i.title}function Pf(i){return nr(a=>{const e=i(a);return e?Ti(e).pipe(vt(()=>a)):Ze(a)})}const Es=new be("ROUTES");let Sy=(()=>{class i{constructor(){this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap,this.compiler=St(Cm)}loadComponent(e){if(this.componentLoaders.get(e))return this.componentLoaders.get(e);if(e._loadedComponent)return Ze(e._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(e);const o=Ms(e.loadComponent()).pipe(vt(qA),Li(h=>{this.onLoadEndListener&&this.onLoadEndListener(e),e._loadedComponent=h}),fA(()=>{this.componentLoaders.delete(e)})),d=new ty(o,()=>new He).pipe(uA());return this.componentLoaders.set(e,d),d}loadChildren(e,o){if(this.childrenLoaders.get(o))return this.childrenLoaders.get(o);if(o._loadedRoutes)return Ze({routes:o._loadedRoutes,injector:o._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(o);const h=this.loadModuleFactoryOrRoutes(o.loadChildren).pipe(vt(w=>{this.onLoadEndListener&&this.onLoadEndListener(o);let D,k,P=!1;Array.isArray(w)?k=w:(D=w.create(e).injector,k=gF(D.get(Es,[],at.Self|at.Optional)));return{routes:k.map(FA),injector:D}}),fA(()=>{this.childrenLoaders.delete(o)})),_=new ty(h,()=>new He).pipe(uA());return this.childrenLoaders.set(o,_),_}loadModuleFactoryOrRoutes(e){return Ms(e()).pipe(vt(qA),Vi(o=>o instanceof C2||Array.isArray(o)?Ze(o):Ti(this.compiler.compileModuleAsync(o))))}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function qA(i){return function YA(i){return i&&"object"==typeof i&&"default"in i}(i)?i.default:i}let Rf=(()=>{class i{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new He,this.configLoader=St(Sy),this.environmentInjector=St(qr),this.urlSerializer=St(Cf),this.rootContexts=St(hy),this.navigationId=0,this.afterPreactivation=()=>Ze(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=d=>this.events.next(new RF(d)),this.configLoader.onLoadStartListener=d=>this.events.next(new S6(d))}complete(){var e;null===(e=this.transitions)||void 0===e||e.complete()}handleNavigationRequest(e){var o;const d=++this.navigationId;null===(o=this.transitions)||void 0===o||o.next({...this.transitions.value,...e,id:d})}setupNavigations(e){return this.transitions=new Oi({id:0,targetPageId:0,currentUrlTree:e.currentUrlTree,currentRawUrl:e.currentUrlTree,extractedUrl:e.urlHandlingStrategy.extract(e.currentUrlTree),urlAfterRedirects:e.urlHandlingStrategy.extract(e.currentUrlTree),rawUrl:e.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:ly,restoredState:null,currentSnapshot:e.routerState.snapshot,targetSnapshot:null,currentRouterState:e.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe(Kn(o=>0!==o.id),vt(o=>({...o,extractedUrl:e.urlHandlingStrategy.extract(o.rawUrl)})),nr(o=>{let d=!1,h=!1;return Ze(o).pipe(Li(_=>{this.currentNavigation={id:_.id,initialUrl:_.rawUrl,extractedUrl:_.extractedUrl,trigger:_.source,extras:_.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),nr(_=>{var w;const D=e.browserUrlTree.toString(),k=!e.navigated||_.extractedUrl.toString()!==D||D!==e.currentUrlTree.toString(),P=null!==(w=_.extras.onSameUrlNavigation)&&void 0!==w?w:e.onSameUrlNavigation;if(!k&&"reload"!==P){const B="";return this.events.next(new Ux(_.id,e.serializeUrl(o.rawUrl),B,0)),e.rawUrlTree=_.rawUrl,_.resolve(null),_o}if(e.urlHandlingStrategy.shouldProcessUrl(_.rawUrl))return Jr(_.source)&&(e.browserUrlTree=_.extractedUrl),Ze(_).pipe(nr(B=>{var W,Z;const te=null===(W=this.transitions)||void 0===W?void 0:W.getValue();return this.events.next(new wA(B.id,this.urlSerializer.serialize(B.extractedUrl),B.source,B.restoredState)),te!==(null===(Z=this.transitions)||void 0===Z?void 0:Z.getValue())?_o:Promise.resolve(B)}),function dN(i,a,e,o){return nr(d=>function GA(i,a,e,o,d){return new cN(i,a,e,o,d).apply()}(i,a,e,d.extractedUrl,o).pipe(vt(h=>({...d,urlAfterRedirects:h}))))}(this.environmentInjector,this.configLoader,this.urlSerializer,e.config),Li(B=>{this.currentNavigation={...this.currentNavigation,finalUrl:B.urlAfterRedirects},o.urlAfterRedirects=B.urlAfterRedirects}),function rC(i,a,e,o,d){return Vi(h=>function Z6(i,a,e,o,d,h,_="emptyOnly"){return new K6(i,a,e,o,d,_,h).recognize().pipe(nr(w=>null===w?function X6(i){return new Hn(a=>a.error(i))}(new uN):Ze(w)))}(i,a,e,h.urlAfterRedirects,o.serialize(h.urlAfterRedirects),o,d).pipe(vt(_=>({...h,targetSnapshot:_}))))}(this.environmentInjector,this.rootComponentType,e.config,this.urlSerializer,e.paramsInheritanceStrategy),Li(B=>{if(o.targetSnapshot=B.targetSnapshot,"eager"===e.urlUpdateStrategy){if(!B.extras.skipLocationChange){const Z=e.urlHandlingStrategy.merge(B.urlAfterRedirects,B.rawUrl);e.setBrowserUrl(Z,B)}e.browserUrlTree=B.urlAfterRedirects}const W=new cy(B.id,this.urlSerializer.serialize(B.extractedUrl),this.urlSerializer.serialize(B.urlAfterRedirects),B.targetSnapshot);this.events.next(W)}));if(k&&e.urlHandlingStrategy.shouldProcessUrl(e.rawUrlTree)){const{id:B,extractedUrl:W,source:Z,restoredState:te,extras:ie}=_,de=new wA(B,this.urlSerializer.serialize(W),Z,te);this.events.next(de);const he=UF(W,this.rootComponentType).snapshot;return Ze(o={..._,targetSnapshot:he,urlAfterRedirects:W,extras:{...ie,skipLocationChange:!1,replaceUrl:!1}})}{const B="";return this.events.next(new Ux(_.id,e.serializeUrl(o.extractedUrl),B,1)),e.rawUrlTree=_.rawUrl,_.resolve(null),_o}}),Li(_=>{const w=new od(_.id,this.urlSerializer.serialize(_.extractedUrl),this.urlSerializer.serialize(_.urlAfterRedirects),_.targetSnapshot);this.events.next(w)}),vt(_=>o={..._,guards:QF(_.targetSnapshot,_.currentSnapshot,this.rootContexts)}),function by(i,a){return Vi(e=>{const{targetSnapshot:o,currentSnapshot:d,guards:{canActivateChecks:h,canDeactivateChecks:_}}=e;return 0===_.length&&0===h.length?Ze({...e,guardsResult:!0}):function tN(i,a,e,o){return Ti(i).pipe(Vi(d=>function wy(i,a,e,o,d){const h=a&&a.routeConfig?a.routeConfig.canDeactivate:null;return h&&0!==h.length?Ze(h.map(w=>{var D;const k=null!==(D=my(a))&&void 0!==D?D:d,P=Iu(w,k);return Ms(function eN(i){return i&&yy(i.canDeactivate)}(P)?P.canDeactivate(i,a,e,o):k.runInContext(()=>P(i,a,e,o))).pipe(nc())})).pipe(Pu()):Ze(!0)}(d.component,d.route,e,a,o)),nc(d=>!0!==d,!0))}(_,o,d,i).pipe(Vi(w=>w&&function O6(i){return"boolean"==typeof i}(w)?function VA(i,a,e,o){return Ti(a).pipe(id(d=>ey(function z6(i,a){return null!==i&&a&&a(new jx(i)),Ze(!0)}(d.route.parent,o),function Qx(i,a){return null!==i&&a&&a(new D6(i)),Ze(!0)}(d.route,o),function G6(i,a,e){const o=a[a.length-1],h=a.slice(0,a.length-1).reverse().map(_=>function JF(i){const a=i.routeConfig?i.routeConfig.canActivateChild:null;return a&&0!==a.length?{node:i,guards:a}:null}(_)).filter(_=>null!==_).map(_=>Bm(()=>Ze(_.guards.map(D=>{var k;const P=null!==(k=my(_.node))&&void 0!==k?k:e,B=Iu(D,P);return Ms(function N6(i){return i&&yy(i.canActivateChild)}(B)?B.canActivateChild(o,i):P.runInContext(()=>B(o,i))).pipe(nc())})).pipe(Pu())));return Ze(h).pipe(Pu())}(i,d.path,e),function H6(i,a,e){const o=a.routeConfig?a.routeConfig.canActivate:null;if(!o||0===o.length)return Ze(!0);const d=o.map(h=>Bm(()=>{var _;const w=null!==(_=my(a))&&void 0!==_?_:e,D=Iu(h,w);return Ms(function F6(i){return i&&yy(i.canActivate)}(D)?D.canActivate(a,i):w.runInContext(()=>D(a,i))).pipe(nc())}));return Ze(d).pipe(Pu())}(i,d.route,e))),nc(d=>!0!==d,!0))}(o,h,i,a):Ze(w)),vt(w=>({...e,guardsResult:w})))})}(this.environmentInjector,_=>this.events.next(_)),Li(_=>{if(o.guardsResult=_.guardsResult,Df(_.guardsResult))throw WF(0,_.guardsResult);const w=new CA(_.id,this.urlSerializer.serialize(_.extractedUrl),this.urlSerializer.serialize(_.urlAfterRedirects),_.targetSnapshot,!!_.guardsResult);this.events.next(w)}),Kn(_=>!!_.guardsResult||(e.restoreHistory(_),this.cancelNavigationTransition(_,"",3),!1)),Pf(_=>{if(_.guards.canActivateChecks.length)return Ze(_).pipe(Li(w=>{const D=new x6(w.id,this.urlSerializer.serialize(w.extractedUrl),this.urlSerializer.serialize(w.urlAfterRedirects),w.targetSnapshot);this.events.next(D)}),nr(w=>{let D=!1;return Ze(w).pipe(function jA(i,a){return Vi(e=>{const{targetSnapshot:o,guards:{canActivateChecks:d}}=e;if(!d.length)return Ze(e);let h=0;return Ti(d).pipe(id(_=>function Q6(i,a,e,o){const d=i.routeConfig,h=i._resolve;return void 0!==(null==d?void 0:d.title)&&!WA(d)&&(h[Vm]=d.title),function J6(i,a,e,o){const d=function $A(i){return[...Object.keys(i),...Object.getOwnPropertySymbols(i)]}(i);if(0===d.length)return Ze({});const h={};return Ti(d).pipe(Vi(_=>function aC(i,a,e,o){var d;const h=null!==(d=my(a))&&void 0!==d?d:o,_=Iu(i,h);return Ms(_.resolve?_.resolve(a,e):h.runInContext(()=>_(a,e)))}(i[_],a,e,o).pipe(nc(),Li(w=>{h[_]=w}))),Lx(1),hF(h),Oa(_=>BA(_)?_o:rd(_)))}(h,i,a,o).pipe(vt(_=>(i._resolvedData=_,i.data=TA(i,e).resolve,d&&WA(d)&&(i.data[Vm]=d.title),null)))}(_.route,o,i,a)),Li(()=>h++),Lx(1),Vi(_=>h===d.length?Ze(e):_o))})}(e.paramsInheritanceStrategy,this.environmentInjector),Li({next:()=>D=!0,complete:()=>{D||(e.restoreHistory(w),this.cancelNavigationTransition(w,"",2))}}))}),Li(w=>{const D=new C6(w.id,this.urlSerializer.serialize(w.extractedUrl),this.urlSerializer.serialize(w.urlAfterRedirects),w.targetSnapshot);this.events.next(D)}))}),Pf(_=>{const w=D=>{var k;const P=[];null!==(k=D.routeConfig)&&void 0!==k&&k.loadComponent&&!D.routeConfig._loadedComponent&&P.push(this.configLoader.loadComponent(D.routeConfig).pipe(Li(B=>{D.component=B}),vt(()=>{})));for(const B of D.children)P.push(...w(B));return P};return Za(w(_.targetSnapshot.root)).pipe(ny(),Tn(1))}),Pf(()=>this.afterPreactivation()),vt(_=>{const w=function M6(i,a,e){const o=uy(i,a._root,e?e._root:void 0);return new GF(o,a)}(e.routeReuseStrategy,_.targetSnapshot,_.currentRouterState);return o={..._,targetRouterState:w}}),Li(_=>{e.currentUrlTree=_.urlAfterRedirects,e.rawUrlTree=e.urlHandlingStrategy.merge(_.urlAfterRedirects,_.rawUrl),e.routerState=_.targetRouterState,"deferred"===e.urlUpdateStrategy&&(_.extras.skipLocationChange||e.setBrowserUrl(e.rawUrlTree,_),e.browserUrlTree=_.urlAfterRedirects)}),((i,a,e)=>vt(o=>(new ZF(a,o.targetRouterState,o.currentRouterState,e).activate(i),o)))(this.rootContexts,e.routeReuseStrategy,_=>this.events.next(_)),Tn(1),Li({next:_=>{var w;d=!0,this.lastSuccessfulNavigation=this.currentNavigation,e.navigated=!0,this.events.next(new Ef(_.id,this.urlSerializer.serialize(_.extractedUrl),this.urlSerializer.serialize(e.currentUrlTree))),null===(w=e.titleStrategy)||void 0===w||w.updateTitle(_.targetRouterState.snapshot),_.resolve(!0)},complete:()=>{d=!0}}),fA(()=>{var _;d||h||this.cancelNavigationTransition(o,"",1),(null===(_=this.currentNavigation)||void 0===_?void 0:_.id)===o.id&&(this.currentNavigation=null)}),Oa(_=>{if(h=!0,YF(_)){Xx(_)||(e.navigated=!0,e.restoreHistory(o,!0));const D=new Gx(o.id,this.urlSerializer.serialize(o.extractedUrl),_.message,_.cancellationCode);if(this.events.next(D),Xx(_)){const k=e.urlHandlingStrategy.merge(_.url,e.rawUrlTree),P={skipLocationChange:o.extras.skipLocationChange,replaceUrl:"eager"===e.urlUpdateStrategy||Jr(o.source)};e.scheduleNavigation(k,ly,null,P,{resolve:o.resolve,reject:o.reject,promise:o.promise})}else o.resolve(!1)}else{var w;e.restoreHistory(o,!0);const D=new xA(o.id,this.urlSerializer.serialize(o.extractedUrl),_,null!==(w=o.targetSnapshot)&&void 0!==w?w:void 0);this.events.next(D);try{o.resolve(e.errorHandler(_))}catch(k){o.reject(k)}}return _o}))}))}cancelNavigationTransition(e,o,d){const h=new Gx(e.id,this.urlSerializer.serialize(e.extractedUrl),o,d);this.events.next(h),e.resolve(!1)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function Jr(i){return i!==ly}let vN=(()=>{class i{buildTitle(e){let o,d=e.root;for(;void 0!==d;){var h;o=null!==(h=this.getResolvedTitleForRoute(d))&&void 0!==h?h:o,d=d.children.find(_=>_.outlet===tn)}return o}getResolvedTitleForRoute(e){return e.data[Vm]}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(){return St(_N)},providedIn:"root"}),i})(),_N=(()=>{class i extends vN{constructor(e){super(),this.title=e}updateTitle(e){const o=this.buildTitle(e);void 0!==o&&this.title.setTitle(o)}}return i.\u0275fac=function(e){return new(e||i)(ae(FL))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),ej=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(){return St(tj)},providedIn:"root"}),i})();class yN{shouldDetach(a){return!1}store(a,e){}shouldAttach(a){return!1}retrieve(a){return null}shouldReuseRoute(a,e){return a.routeConfig===e.routeConfig}}let tj=(()=>{class i extends yN{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const sC=new be("",{providedIn:"root",factory:()=>({})});let XA=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:function(){return St(nj)},providedIn:"root"}),i})(),nj=(()=>{class i{shouldProcessUrl(e){return!0}extract(e){return e}merge(e,o){return e}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function ij(i){throw i}function My(i,a,e){return a.parse("/")}const lC={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},wN={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let Fa=(()=>{class i{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){var e;return null===(e=this.location.getState())||void 0===e?void 0:e.\u0275routerPageId}get events(){return this.navigationTransitions.events}constructor(){var e;this.disposed=!1,this.currentPageId=0,this.console=St(xm),this.isNgZoneEnabled=!1,this.options=St(sC,{optional:!0})||{},this.errorHandler=this.options.errorHandler||ij,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||My,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=St(XA),this.routeReuseStrategy=St(ej),this.urlCreationStrategy=St(zF),this.titleStrategy=St(vN),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=gF(null!==(e=St(Es,{optional:!0}))&&void 0!==e?e:[]),this.navigationTransitions=St(Rf),this.urlSerializer=St(Cf),this.location=St(I_),this.isNgZoneEnabled=St(et)instanceof et&&et.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new ku,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=UF(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe(o=>{this.lastSuccessfulId=o.id,this.currentPageId=o.targetPageId},o=>{this.console.warn(`Unhandled Navigation Error: ${o}`)})}resetRootComponentType(e){this.routerState.root.component=e,this.navigationTransitions.rootComponentType=e}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const e=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),ly,e)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(e=>{const o="popstate"===e.type?"popstate":"hashchange";"popstate"===o&&setTimeout(()=>{this.navigateToSyncWithBrowser(e.url,o,e.state)},0)}))}navigateToSyncWithBrowser(e,o,d){const h={replaceUrl:!0},_=null!=d&&d.navigationId?d:null;if(d){const D={...d};delete D.navigationId,delete D.\u0275routerPageId,0!==Object.keys(D).length&&(h.state=D)}const w=this.parseUrl(e);this.scheduleNavigation(w,o,_,h)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(e){this.config=e.map(FA),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(e,o={}){const{relativeTo:d,queryParams:h,fragment:_,queryParamsHandling:w,preserveFragment:D}=o,k=D?this.currentUrlTree.fragment:_;let P=null;switch(w){case"merge":P={...this.currentUrlTree.queryParams,...h};break;case"preserve":P=this.currentUrlTree.queryParams;break;default:P=h||null}return null!==P&&(P=this.removeEmptyProps(P)),this.urlCreationStrategy.createUrlTree(d,this.routerState,this.currentUrlTree,e,P,k??null)}navigateByUrl(e,o={skipLocationChange:!1}){const d=Df(e)?e:this.parseUrl(e),h=this.urlHandlingStrategy.merge(d,this.rawUrlTree);return this.scheduleNavigation(h,ly,null,o)}navigate(e,o={skipLocationChange:!1}){return function xN(i){for(let a=0;a{const h=e[d];return null!=h&&(o[d]=h),o},{})}scheduleNavigation(e,o,d,h,_){if(this.disposed)return Promise.resolve(!1);let w,D,k,P;if(_?(w=_.resolve,D=_.reject,k=_.promise):k=new Promise((Z,te)=>{w=Z,D=te}),"computed"===this.canceledNavigationResolution)if(d&&d.\u0275routerPageId)P=d.\u0275routerPageId;else if(h.replaceUrl||h.skipLocationChange){var B;P=null!==(B=this.browserPageId)&&void 0!==B?B:0}else{var W;P=(null!==(W=this.browserPageId)&&void 0!==W?W:0)+1}else P=0;return this.navigationTransitions.handleNavigationRequest({targetPageId:P,source:o,restoredState:d,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:e,extras:h,resolve:w,reject:D,promise:k,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),k.catch(Z=>Promise.reject(Z))}setBrowserUrl(e,o){const d=this.urlSerializer.serialize(e),h={...o.extras.state,...this.generateNgRouterState(o.id,o.targetPageId)};this.location.isCurrentPathEqualTo(d)||o.extras.replaceUrl?this.location.replaceState(d,"",h):this.location.go(d,"",h)}restoreHistory(e,o=!1){if("computed"===this.canceledNavigationResolution){var d,h;const _=this.currentPageId-e.targetPageId;"popstate"!==e.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==(null===(d=this.getCurrentNavigation())||void 0===d?void 0:d.finalUrl)||0===_?this.currentUrlTree===(null===(h=this.getCurrentNavigation())||void 0===h?void 0:h.finalUrl)&&0===_&&(this.resetState(e),this.browserUrlTree=e.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(_)}else"replace"===this.canceledNavigationResolution&&(o&&this.resetState(e),this.resetUrlToCurrentUrlTree())}resetState(e){this.routerState=e.currentRouterState,this.currentUrlTree=e.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,e.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(e,o){return"computed"===this.canceledNavigationResolution?{navigationId:e,\u0275routerPageId:o}:{navigationId:e}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),Is=(()=>{class i{constructor(e,o,d,h,_,w){var D;this.router=e,this.route=o,this.tabIndexAttribute=d,this.renderer=h,this.el=_,this.locationStrategy=w,this._preserveFragment=!1,this._skipLocationChange=!1,this._replaceUrl=!1,this.href=null,this.commands=null,this.onChanges=new He;const k=null===(D=_.nativeElement.tagName)||void 0===D?void 0:D.toLowerCase();this.isAnchorElement="a"===k||"area"===k,this.isAnchorElement?this.subscription=e.events.subscribe(P=>{P instanceof Ef&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}set preserveFragment(e){this._preserveFragment=Tm(e)}get preserveFragment(){return this._preserveFragment}set skipLocationChange(e){this._skipLocationChange=Tm(e)}get skipLocationChange(){return this._skipLocationChange}set replaceUrl(e){this._replaceUrl=Tm(e)}get replaceUrl(){return this._replaceUrl}setTabIndexIfNotOnNativeEl(e){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",e)}ngOnChanges(e){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(e){null!=e?(this.commands=Array.isArray(e)?e:[e],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(e,o,d,h,_){return!!(null===this.urlTree||this.isAnchorElement&&(0!==e||o||d||h||_||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(this.urlTree,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state}),!this.isAnchorElement)}ngOnDestroy(){var e;null===(e=this.subscription)||void 0===e||e.unsubscribe()}updateHref(){var e;this.href=null!==this.urlTree&&this.locationStrategy?null===(e=this.locationStrategy)||void 0===e?void 0:e.prepareExternalUrl(this.router.serializeUrl(this.urlTree)):null;const o=null===this.href?null:function QS(i,a,e){return function VP(i,a){return"src"===a&&("embed"===i||"frame"===i||"iframe"===i||"media"===i||"script"===i)||"href"===a&&("base"===i||"link"===i)?T0:Kt}(a,e)(i)}(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",o)}applyAttributeValue(e,o){const d=this.renderer,h=this.el.nativeElement;null!==o?d.setAttribute(h,e,o):d.removeAttribute(h,e)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}}return i.\u0275fac=function(e){return new(e||i)(F(Fa),F(xi),Co("tabindex"),F(Oc),F(Be),F(Ra))},i.\u0275dir=me({type:i,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(e,o){1&e&&Q("click",function(h){return o.onClick(h.button,h.ctrlKey,h.shiftKey,h.altKey,h.metaKey)}),2&e&&Ve("target",o.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",relativeTo:"relativeTo",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",routerLink:"routerLink"},standalone:!0,features:[jn]}),i})();class CN{}let sj=(()=>{class i{constructor(e,o,d,h,_){this.router=e,this.injector=d,this.preloadingStrategy=h,this.loader=_}setUpPreloading(){this.subscription=this.router.events.pipe(Kn(e=>e instanceof Ef),id(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(e,o){const d=[];for(const D of o){var h,_;D.providers&&!D._injector&&(D._injector=yw(D.providers,e,`Route: ${D.path}`));const k=null!==(h=D._injector)&&void 0!==h?h:e,P=null!==(_=D._loadedInjector)&&void 0!==_?_:k;var w;(D.loadChildren&&!D._loadedRoutes&&void 0===D.canLoad||D.loadComponent&&!D._loadedComponent)&&d.push(this.preloadConfig(k,D)),(D.children||D._loadedRoutes)&&d.push(this.processRoutes(P,null!==(w=D.children)&&void 0!==w?w:D._loadedRoutes))}return Ti(d).pipe(eh())}preloadConfig(e,o){return this.preloadingStrategy.preload(o,()=>{let d;d=o.loadChildren&&void 0===o.canLoad?this.loader.loadChildren(e,o):Ze(null);const h=d.pipe(Vi(_=>{var w;return null===_?Ze(void 0):(o._loadedRoutes=_.routes,o._loadedInjector=_.injector,this.processRoutes(null!==(w=_.injector)&&void 0!==w?w:e,_.routes))}));return o.loadComponent&&!o._loadedComponent?Ti([h,this.loader.loadComponent(o)]).pipe(eh()):h})}}return i.\u0275fac=function(e){return new(e||i)(ae(Fa),ae(Cm),ae(qr),ae(CN),ae(Sy))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const ZA=new be("");let SN=(()=>{class i{constructor(e,o,d,h,_={}){this.urlSerializer=e,this.transitions=o,this.viewportScroller=d,this.zone=h,this.options=_,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},_.scrollPositionRestoration=_.scrollPositionRestoration||"disabled",_.anchorScrolling=_.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof wA?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=e.navigationTrigger,this.restoredId=e.restoredState?e.restoredState.navigationId:0):e instanceof Ef&&(this.lastId=e.id,this.scheduleScrollEvent(e,this.urlSerializer.parse(e.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(e=>{e instanceof SA&&(e.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(e.position):e.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(e.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(e,o){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new SA(e,"popstate"===this.lastSource?this.store[this.restoredId]:null,o))})},0)})}ngOnDestroy(){var e,o;null===(e=this.routerEventsSubscription)||void 0===e||e.unsubscribe(),null===(o=this.scrollEventsSubscription)||void 0===o||o.unsubscribe()}}return i.\u0275fac=function(e){Js()},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();var zo=(()=>((zo=zo||{})[zo.COMPLETE=0]="COMPLETE",zo[zo.FAILED=1]="FAILED",zo[zo.REDIRECTING=2]="REDIRECTING",zo))();const Zm=!1;function ld(i,a){return{\u0275kind:i,\u0275providers:a}}const QA=new be("",{providedIn:"root",factory:()=>!1});function MN(){const i=St(Qi);return a=>{var e,o;const d=i.get(vu);if(a!==d.components[0])return;const h=i.get(Fa),_=i.get(cC);1===i.get(Km)&&h.initialNavigation(),null===(e=i.get(kN,null,at.Optional))||void 0===e||e.setUpPreloading(),null===(o=i.get(ZA,null,at.Optional))||void 0===o||o.init(),h.resetRootComponentType(d.componentTypes[0]),_.closed||(_.next(),_.complete(),_.unsubscribe())}}const cC=new be(Zm?"bootstrap done indicator":"",{factory:()=>new He}),Km=new be(Zm?"initial navigation":"",{providedIn:"root",factory:()=>1});function AN(){let i=[];return i=Zm?[{provide:Gd,multi:!0,useFactory:()=>{const a=St(Fa);return()=>a.events.subscribe(e=>{var o,d,h,_;null===(o=(d=console).group)||void 0===o||o.call(d,`Router Event: ${e.constructor.name}`),console.log(function FF(i){var a,e,o,d;if(!("type"in i))return`Unknown Router Event: ${i.constructor.name}`;switch(i.type){case 14:return`ActivationEnd(path: '${(null===(a=i.snapshot.routeConfig)||void 0===a?void 0:a.path)||""}')`;case 13:return`ActivationStart(path: '${(null===(e=i.snapshot.routeConfig)||void 0===e?void 0:e.path)||""}')`;case 12:return`ChildActivationEnd(path: '${(null===(o=i.snapshot.routeConfig)||void 0===o?void 0:o.path)||""}')`;case 11:return`ChildActivationStart(path: '${(null===(d=i.snapshot.routeConfig)||void 0===d?void 0:d.path)||""}')`;case 8:return`GuardsCheckEnd(id: ${i.id}, url: '${i.url}', urlAfterRedirects: '${i.urlAfterRedirects}', state: ${i.state}, shouldActivate: ${i.shouldActivate})`;case 7:return`GuardsCheckStart(id: ${i.id}, url: '${i.url}', urlAfterRedirects: '${i.urlAfterRedirects}', state: ${i.state})`;case 2:return`NavigationCancel(id: ${i.id}, url: '${i.url}')`;case 16:return`NavigationSkipped(id: ${i.id}, url: '${i.url}')`;case 1:return`NavigationEnd(id: ${i.id}, url: '${i.url}', urlAfterRedirects: '${i.urlAfterRedirects}')`;case 3:return`NavigationError(id: ${i.id}, url: '${i.url}', error: ${i.error})`;case 0:return`NavigationStart(id: ${i.id}, url: '${i.url}')`;case 6:return`ResolveEnd(id: ${i.id}, url: '${i.url}', urlAfterRedirects: '${i.urlAfterRedirects}', state: ${i.state})`;case 5:return`ResolveStart(id: ${i.id}, url: '${i.url}', urlAfterRedirects: '${i.urlAfterRedirects}', state: ${i.state})`;case 10:return`RouteConfigLoadEnd(path: ${i.route.path})`;case 9:return`RouteConfigLoadStart(path: ${i.route.path})`;case 4:return`RoutesRecognized(id: ${i.id}, url: '${i.url}', urlAfterRedirects: '${i.urlAfterRedirects}', state: ${i.state})`;case 15:return`Scroll(anchor: '${i.anchor}', position: '${i.position?`${i.position[0]}, ${i.position[1]}`:null}')`}}(e)),console.log(e),null===(h=(_=console).groupEnd)||void 0===h||h.call(_)})}}]:[],ld(1,i)}const kN=new be(Zm?"router preloader":"");function cj(i){return ld(0,[{provide:kN,useExisting:sj},{provide:CN,useExisting:i}])}const Of=!1,dC=new be(Of?"router duplicate forRoot guard":"ROUTER_FORROOT_GUARD"),uj=[I_,{provide:Cf,useClass:pA},Fa,hy,{provide:xi,useFactory:function KA(i){return i.routerState.root},deps:[Fa]},Sy,Of?{provide:QA,useValue:!0}:[]];function Ay(){return new Lw("Router",Fa)}let Qm=(()=>{class i{constructor(e){}static forRoot(e,o){return{ngModule:i,providers:[uj,Of&&null!=o&&o.enableTracing?AN().\u0275providers:[],{provide:Es,multi:!0,useValue:e},{provide:dC,useFactory:hj,deps:[[Fa,new wa,new Mo]]},{provide:sC,useValue:o||{}},null!=o&&o.useHash?{provide:Ra,useClass:gT}:{provide:Ra,useClass:Zw},{provide:ZA,useFactory:()=>{const i=St(nL),a=St(et),e=St(sC),o=St(Rf),d=St(Cf);return e.scrollOffset&&i.setOffset(e.scrollOffset),new SN(d,o,i,a,e)}},null!=o&&o.preloadingStrategy?cj(o.preloadingStrategy).\u0275providers:[],{provide:Lw,multi:!0,useFactory:Ay},null!=o&&o.initialNavigation?PN(o):[],[{provide:RN,useFactory:MN},{provide:Ow,multi:!0,useExisting:RN}]]}}static forChild(e){return{ngModule:i,providers:[{provide:Es,multi:!0,useValue:e}]}}}return i.\u0275fac=function(e){return new(e||i)(ae(dC,8))},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[RA]}),i})();function hj(i){if(Of&&i)throw new Ce(4007,"The Router was provided more than once. This can happen if 'forRoot' is used outside of the root injector. Lazy loaded modules should use RouterModule.forChild() instead.");return"guarded"}function PN(i){return["disabled"===i.initialNavigation?ld(3,[{provide:w_,multi:!0,useFactory:()=>{const a=St(Fa);return()=>{a.setUpLocationChangeListener()}}},{provide:Km,useValue:2}]).\u0275providers:[],"enabledBlocking"===i.initialNavigation?ld(2,[{provide:Km,useValue:0},{provide:w_,multi:!0,deps:[Qi],useFactory:a=>{const e=a.get(xO,Promise.resolve());return()=>e.then(()=>new Promise(o=>{const d=a.get(Fa),h=a.get(cC);(function DN(i,a){i.events.pipe(Kn(e=>e instanceof Ef||e instanceof Gx||e instanceof xA||e instanceof Ux),vt(e=>e instanceof Ef||e instanceof Ux?zo.COMPLETE:e instanceof Gx&&(0===e.code||1===e.code)?zo.REDIRECTING:zo.FAILED),Kn(e=>e!==zo.REDIRECTING),Tn(1)).subscribe(()=>{a()})})(d,()=>{o(!0)}),a.get(Rf).afterPreactivation=()=>(o(!0),h.closed?Ze(void 0):h),d.initialNavigation()}))}}]).\u0275providers:[]]}const RN=new be(Of?"Router Initializer":"");class fj{constructor(a){this.user=a.user,this.role=a.role,this.admin=a.admin}get isStaff(){return"staff"===this.role||"admin"===this.role}get isAdmin(){return"admin"===this.role}get isLogged(){return null!=this.user}}function ON(i,a,e,o,d,h,_){try{var w=i[h](_),D=w.value}catch(k){return void e(k)}w.done?a(D):Promise.resolve(D).then(o,d)}function Qe(i){return function(){var a=this,e=arguments;return new Promise(function(o,d){var h=i.apply(a,e);function _(D){ON(h,o,d,_,w,"next",D)}function w(D){ON(h,o,d,_,w,"throw",D)}_(void 0)})}}function Ge(i){return null!=i&&"false"!=`${i}`}function Br(i,a=0){return nk(i)?Number(i):a}function nk(i){return!isNaN(parseFloat(i))&&!isNaN(Number(i))}function ik(i){return Array.isArray(i)?i:[i]}function ir(i){return null==i?"":"string"==typeof i?i:`${i}px`}function cd(i){return i instanceof Be?i.nativeElement:i}function LN(i,a=/\s+/){const e=[];if(null!=i){const o=Array.isArray(i)?i:`${i}`.split(a);for(const d of o){const h=`${d}`.trim();h&&e.push(h)}}return e}const rk=["addListener","removeListener"],FN=["addEventListener","removeEventListener"],NN=["on","off"];function rc(i,a,e,o){if($t(e)&&(o=e,e=void 0),o)return rc(i,a,e).pipe(dA(o));const[d,h]=function mj(i){return $t(i.addEventListener)&&$t(i.removeEventListener)}(i)?FN.map(_=>w=>i[_](a,w,e)):function pj(i){return $t(i.addListener)&&$t(i.removeListener)}(i)?rk.map(uC(i,a)):function ak(i){return $t(i.on)&&$t(i.off)}(i)?NN.map(uC(i,a)):[];if(!d&&Mi(i))return Vi(_=>rc(_,a,e))($e(i));if(!d)throw new TypeError("Invalid event target");return new Hn(_=>{const w=(...D)=>_.next(1h(w)})}function uC(i,a){return e=>o=>i[e](a,o)}class gj extends xt{constructor(a,e){super()}schedule(a,e=0){return this}}const ky={setInterval(i,a,...e){const{delegate:o}=ky;return null!=o&&o.setInterval?o.setInterval(i,a,...e):setInterval(i,a,...e)},clearInterval(i){const{delegate:a}=ky;return((null==a?void 0:a.clearInterval)||clearInterval)(i)},delegate:void 0};class hC extends gj{constructor(a,e){super(a,e),this.scheduler=a,this.work=e,this.pending=!1}schedule(a,e=0){var o;if(this.closed)return this;this.state=a;const d=this.id,h=this.scheduler;return null!=d&&(this.id=this.recycleAsyncId(h,d,e)),this.pending=!0,this.delay=e,this.id=null!==(o=this.id)&&void 0!==o?o:this.requestAsyncId(h,this.id,e),this}requestAsyncId(a,e,o=0){return ky.setInterval(a.flush.bind(a,this),o)}recycleAsyncId(a,e,o=0){if(null!=o&&this.delay===o&&!1===this.pending)return e;null!=e&&ky.clearInterval(e)}execute(a,e){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const o=this._execute(a,e);if(o)return o;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(a,e){let d,o=!1;try{this.work(a)}catch(h){o=!0,d=h||new Error("Scheduled action threw falsy error")}if(o)return this.unsubscribe(),d}unsubscribe(){if(!this.closed){const{id:a,scheduler:e}=this,{actions:o}=e;this.work=this.state=this.scheduler=null,this.pending=!1,Bs(o,this),null!=a&&(this.id=this.recycleAsyncId(e,a,null)),this.delay=null,super.unsubscribe()}}}const Lf={schedule(i){let a=requestAnimationFrame,e=cancelAnimationFrame;const{delegate:o}=Lf;o&&(a=o.requestAnimationFrame,e=o.cancelAnimationFrame);const d=a(h=>{e=void 0,i(h)});return new xt(()=>null==e?void 0:e(d))},requestAnimationFrame(...i){const{delegate:a}=Lf;return((null==a?void 0:a.requestAnimationFrame)||requestAnimationFrame)(...i)},cancelAnimationFrame(...i){const{delegate:a}=Lf;return((null==a?void 0:a.cancelAnimationFrame)||cancelAnimationFrame)(...i)},delegate:void 0},Ey={now:()=>(Ey.delegate||Date).now(),delegate:void 0};class Ff{constructor(a,e=Ff.now){this.schedulerActionCtor=a,this.now=e}schedule(a,e=0,o){return new this.schedulerActionCtor(this,a).schedule(o,e)}}Ff.now=Ey.now;class Iy extends Ff{constructor(a,e=Ff.now){super(a,e),this.actions=[],this._active=!1}flush(a){const{actions:e}=this;if(this._active)return void e.push(a);let o;this._active=!0;do{if(o=a.execute(a.state,a.delay))break}while(a=e.shift());if(this._active=!1,o){for(;a=e.shift();)a.unsubscribe();throw o}}}const sk=new class eg extends Iy{flush(a){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:o}=this;let d;a=a||o.shift();do{if(d=a.execute(a.state,a.delay))break}while((a=o[0])&&a.id===e&&o.shift());if(this._active=!1,d){for(;(a=o[0])&&a.id===e&&o.shift();)a.unsubscribe();throw d}}}(class ok extends hC{constructor(a,e){super(a,e),this.scheduler=a,this.work=e}requestAsyncId(a,e,o=0){return null!==o&&o>0?super.requestAsyncId(a,e,o):(a.actions.push(this),a._scheduled||(a._scheduled=Lf.requestAnimationFrame(()=>a.flush(void 0))))}recycleAsyncId(a,e,o=0){var d;if(null!=o?o>0:this.delay>0)return super.recycleAsyncId(a,e,o);const{actions:h}=a;null!=e&&(null===(d=h[h.length-1])||void 0===d?void 0:d.id)!==e&&(Lf.cancelAnimationFrame(e),a._scheduled=void 0)}});let Py,BN=1;const Ry={};function VN(i){return i in Ry&&(delete Ry[i],!0)}const _j={setImmediate(i){const a=BN++;return Ry[a]=!0,Py||(Py=Promise.resolve()),Py.then(()=>VN(a)&&i()),a},clearImmediate(i){VN(i)}},{setImmediate:yj,clearImmediate:Nf}=_j,Ly={setImmediate(...i){const{delegate:a}=Ly;return((null==a?void 0:a.setImmediate)||yj)(...i)},clearImmediate(i){const{delegate:a}=Ly;return((null==a?void 0:a.clearImmediate)||Nf)(i)},delegate:void 0},fC=new class bj extends Iy{flush(a){this._active=!0;const e=this._scheduled;this._scheduled=void 0;const{actions:o}=this;let d;a=a||o.shift();do{if(d=a.execute(a.state,a.delay))break}while((a=o[0])&&a.id===e&&o.shift());if(this._active=!1,d){for(;(a=o[0])&&a.id===e&&o.shift();)a.unsubscribe();throw d}}}(class zN extends hC{constructor(a,e){super(a,e),this.scheduler=a,this.work=e}requestAsyncId(a,e,o=0){return null!==o&&o>0?super.requestAsyncId(a,e,o):(a.actions.push(this),a._scheduled||(a._scheduled=Ly.setImmediate(a.flush.bind(a,void 0))))}recycleAsyncId(a,e,o=0){var d;if(null!=o?o>0:this.delay>0)return super.recycleAsyncId(a,e,o);const{actions:h}=a;null!=e&&(null===(d=h[h.length-1])||void 0===d?void 0:d.id)!==e&&(Ly.clearImmediate(e),a._scheduled=void 0)}}),Ru=new Iy(hC),wj=Ru;function HN(i){return i instanceof Date&&!isNaN(i)}function Fy(i=0,a,e=wj){let o=-1;return null!=a&&(Ct(a)?e=a:o=a),new Hn(d=>{let h=HN(i)?+i-e.now():i;h<0&&(h=0);let _=0;return e.schedule(function(){d.closed||(d.next(_++),0<=o?this.schedule(void 0,o):d.complete())},h)})}function lk(i,a=Ru){return function xj(i){return Gn((a,e)=>{let o=!1,d=null,h=null,_=!1;const w=()=>{if(null==h||h.unsubscribe(),h=null,o){o=!1;const k=d;d=null,e.next(k)}_&&e.complete()},D=()=>{h=null,_&&e.complete()};a.subscribe(si(e,k=>{o=!0,d=k,h||$e(i(k)).subscribe(h=si(e,w,D))},()=>{_=!0,(!o||!h||h.closed)&&e.complete()}))})}(()=>Fy(i,a))}function Et(i){return Gn((a,e)=>{$e(i).subscribe(si(e,()=>e.complete(),Td)),!e.closed&&a.subscribe(e)})}let tg;try{tg=typeof Intl<"u"&&Intl.v8BreakIterator}catch{tg=!1}let ng,Qn=(()=>{class i{constructor(e){this._platformId=e,this.isBrowser=this._platformId?function eU(i){return i===V_}(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!tg)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return i.\u0275fac=function(e){return new(e||i)(ae(x_))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const GN=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function UN(){if(ng)return ng;if("object"!=typeof document||!document)return ng=new Set(GN),ng;let i=document.createElement("input");return ng=new Set(GN.filter(a=>(i.setAttribute("type",a),i.type===a))),ng}let Ny,pC,Bf,ck;function Ou(i){return function Cj(){if(null==Ny&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>Ny=!0}))}finally{Ny=Ny||!1}return Ny}()?i:!!i.capture}function jN(){if(null==Bf){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Bf=!1,Bf;if("scrollBehavior"in document.documentElement.style)Bf=!0;else{const i=Element.prototype.scrollTo;Bf=!!i&&!/\{\s*\[native code\]\s*\}/.test(i.toString())}}return Bf}function By(){if("object"!=typeof document||!document)return 0;if(null==pC){const i=document.createElement("div"),a=i.style;i.dir="rtl",a.width="1px",a.overflow="auto",a.visibility="hidden",a.pointerEvents="none",a.position="absolute";const e=document.createElement("div"),o=e.style;o.width="2px",o.height="1px",i.appendChild(e),document.body.appendChild(i),pC=0,0===i.scrollLeft&&(i.scrollLeft=1,pC=0===i.scrollLeft?1:2),i.remove()}return pC}function Vy(){let i=typeof document<"u"&&document?document.activeElement:null;for(;i&&i.shadowRoot;){const a=i.shadowRoot.activeElement;if(a===i)break;i=a}return i}function dd(i){return i.composedPath?i.composedPath()[0]:i.target}function dk(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}const Mj=new be("cdk-dir-doc",{providedIn:"root",factory:function $N(){return St(ht)}}),WN=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let Ci=(()=>{class i{constructor(e){this.value="ltr",this.change=new we,e&&(this.value=function YN(i){var a;const e=(null==i?void 0:i.toLowerCase())||"";return"auto"===e&&typeof navigator<"u"&&null!==(a=navigator)&&void 0!==a&&a.language?WN.test(navigator.language)?"rtl":"ltr":"rtl"===e?"rtl":"ltr"}((e.body?e.body.dir:null)||(e.documentElement?e.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return i.\u0275fac=function(e){return new(e||i)(ae(Mj,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),zy=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();const Tj=["contentWrapper"],Aj=["*"],kj=new be("VIRTUAL_SCROLL_STRATEGY");let Hy=(()=>{class i{constructor(e,o,d){this._ngZone=e,this._platform=o,this._scrolled=new He,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=d}register(e){this.scrollContainers.has(e)||this.scrollContainers.set(e,e.elementScrolled().subscribe(()=>this._scrolled.next(e)))}deregister(e){const o=this.scrollContainers.get(e);o&&(o.unsubscribe(),this.scrollContainers.delete(e))}scrolled(e=20){return this._platform.isBrowser?new Hn(o=>{this._globalSubscription||this._addGlobalListener();const d=e>0?this._scrolled.pipe(lk(e)).subscribe(o):this._scrolled.subscribe(o);return this._scrolledCount++,()=>{d.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):Ze()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((e,o)=>this.deregister(o)),this._scrolled.complete()}ancestorScrolled(e,o){const d=this.getAncestorScrollContainers(e);return this.scrolled(o).pipe(Kn(h=>!h||d.indexOf(h)>-1))}getAncestorScrollContainers(e){const o=[];return this.scrollContainers.forEach((d,h)=>{this._scrollableContainsElement(h,e)&&o.push(h)}),o}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(e,o){let d=cd(o),h=e.getElementRef().nativeElement;do{if(d==h)return!0}while(d=d.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>rc(this._getWindow().document,"scroll").subscribe(()=>this._scrolled.next()))}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return i.\u0275fac=function(e){return new(e||i)(ae(et),ae(Qn),ae(ht,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),qN=(()=>{class i{constructor(e,o,d,h){this.elementRef=e,this.scrollDispatcher=o,this.ngZone=d,this.dir=h,this._destroyed=new He,this._elementScrolled=new Hn(_=>this.ngZone.runOutsideAngular(()=>rc(this.elementRef.nativeElement,"scroll").pipe(Et(this._destroyed)).subscribe(_)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(e){const o=this.elementRef.nativeElement,d=this.dir&&"rtl"==this.dir.value;null==e.left&&(e.left=d?e.end:e.start),null==e.right&&(e.right=d?e.start:e.end),null!=e.bottom&&(e.top=o.scrollHeight-o.clientHeight-e.bottom),d&&0!=By()?(null!=e.left&&(e.right=o.scrollWidth-o.clientWidth-e.left),2==By()?e.left=e.right:1==By()&&(e.left=e.right?-e.right:e.right)):null!=e.right&&(e.left=o.scrollWidth-o.clientWidth-e.right),this._applyScrollToOptions(e)}_applyScrollToOptions(e){const o=this.elementRef.nativeElement;jN()?o.scrollTo(e):(null!=e.top&&(o.scrollTop=e.top),null!=e.left&&(o.scrollLeft=e.left))}measureScrollOffset(e){const o="left",d="right",h=this.elementRef.nativeElement;if("top"==e)return h.scrollTop;if("bottom"==e)return h.scrollHeight-h.clientHeight-h.scrollTop;const _=this.dir&&"rtl"==this.dir.value;return"start"==e?e=_?d:o:"end"==e&&(e=_?o:d),_&&2==By()?e==o?h.scrollWidth-h.clientWidth-h.scrollLeft:h.scrollLeft:_&&1==By()?e==o?h.scrollLeft+h.scrollWidth-h.clientWidth:-h.scrollLeft:e==o?h.scrollLeft:h.scrollWidth-h.clientWidth-h.scrollLeft}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Hy),F(et),F(Ci,8))},i.\u0275dir=me({type:i,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),i})(),ac=(()=>{class i{constructor(e,o,d){this._platform=e,this._change=new He,this._changeListener=h=>{this._change.next(h)},this._document=d,o.runOutsideAngular(()=>{if(e.isBrowser){const h=this._getWindow();h.addEventListener("resize",this._changeListener),h.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const e=this._getWindow();e.removeEventListener("resize",this._changeListener),e.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const e={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),e}getViewportRect(){const e=this.getViewportScrollPosition(),{width:o,height:d}=this.getViewportSize();return{top:e.top,left:e.left,bottom:e.top+d,right:e.left+o,height:d,width:o}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const e=this._document,o=this._getWindow(),d=e.documentElement,h=d.getBoundingClientRect();return{top:-h.top||e.body.scrollTop||o.scrollY||d.scrollTop||0,left:-h.left||e.body.scrollLeft||o.scrollX||d.scrollLeft||0}}change(e=20){return e>0?this._change.pipe(lk(e)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const e=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:e.innerWidth,height:e.innerHeight}:{width:0,height:0}}}return i.\u0275fac=function(e){return new(e||i)(ae(Qn),ae(et),ae(ht,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const XN=new be("VIRTUAL_SCROLLABLE");let Pj=(()=>{class i extends qN{constructor(e,o,d,h){super(e,o,d,h)}measureViewportSize(e){const o=this.elementRef.nativeElement;return"horizontal"===e?o.clientWidth:o.clientHeight}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Hy),F(et),F(Ci,8))},i.\u0275dir=me({type:i,features:[Se]}),i})();const Rj=typeof requestAnimationFrame<"u"?sk:fC;let Oj=(()=>{class i extends Pj{get orientation(){return this._orientation}set orientation(e){this._orientation!==e&&(this._orientation=e,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(e){this._appendOnly=Ge(e)}constructor(e,o,d,h,_,w,D,k){super(e,w,d,_),this.elementRef=e,this._changeDetectorRef=o,this._scrollStrategy=h,this.scrollable=k,this._platform=St(Qn),this._detachedSubject=new He,this._renderedRangeSubject=new He,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new Hn(P=>this._scrollStrategy.scrolledIndexChange.subscribe(B=>Promise.resolve().then(()=>this.ngZone.run(()=>P.next(B))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=xt.EMPTY,this._viewportChanges=D.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe(wi(null),lk(0,Rj)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(e){this.ngZone.runOutsideAngular(()=>{this._forOf=e,this._forOf.dataStream.pipe(Et(this._detachedSubject)).subscribe(o=>{const d=o.length;d!==this._dataLength&&(this._dataLength=d,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(e){return this.getElementRef().nativeElement.getBoundingClientRect()[e]}setTotalContentSize(e){this._totalContentSize!==e&&(this._totalContentSize=e,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(e){(function uk(i,a){return i.start==a.start&&i.end==a.end})(this._renderedRange,e)||(this.appendOnly&&(e={start:0,end:Math.max(this._renderedRange.end,e.end)}),this._renderedRangeSubject.next(this._renderedRange=e),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(e,o="to-start"){e=this.appendOnly&&"to-start"===o?0:e;const h="horizontal"==this.orientation,_=h?"X":"Y";let D=`translate${_}(${Number((h&&this.dir&&"rtl"==this.dir.value?-1:1)*e)}px)`;this._renderedContentOffset=e,"to-end"===o&&(D+=` translate${_}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=D&&(this._renderedContentTransform=D,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(e,o="auto"){const d={behavior:o};"horizontal"===this.orientation?d.start=e:d.top=e,this.scrollable.scrollTo(d)}scrollToIndex(e,o="auto"){this._scrollStrategy.scrollToIndex(e,o)}measureScrollOffset(e){let o;return o=this.scrollable==this?d=>super.measureScrollOffset(d):d=>this.scrollable.measureScrollOffset(d),Math.max(0,o(e??("horizontal"===this.orientation?"start":"top"))-this.measureViewportOffset())}measureViewportOffset(e){var o;let d;const h="left",_="right",w="rtl"==(null===(o=this.dir)||void 0===o?void 0:o.value);d="start"==e?w?_:h:"end"==e?w?h:_:e||("horizontal"===this.orientation?"left":"top");const D=this.scrollable.measureBoundingClientRectWithScrollOffset(d);return this.elementRef.nativeElement.getBoundingClientRect()[d]-D}measureRenderedContentSize(){const e=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?e.offsetWidth:e.offsetHeight}measureRangeSize(e){return this._forOf?this._forOf.measureRangeSize(e,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(e){e&&this._runAfterChangeDetection.push(e),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const e=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const o of e)o()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(et),F(kj,8),F(Ci,8),F(Hy),F(ac),F(XN,8))},i.\u0275cmp=_e({type:i,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(e,o){if(1&e&&ct(Tj,7),2&e){let d;Pe(d=Ae())&&(o._contentWrapper=d.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(e,o){2&e&&st("cdk-virtual-scroll-orientation-horizontal","horizontal"===o.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==o.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[Ue([{provide:qN,useFactory:(a,e)=>a||e,deps:[[new wa,new xh(XN)],i]}]),Se,fm],ngContentSelectors:Aj,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(e,o){1&e&&(On(),I(0,"div",0,1),ut(2),O(),pe(3,"div",2)),2&e&&(N(3),Ta("width",o._totalContentWidth)("height",o._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),i})(),ud=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})(),Lu=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[zy,ud,Oj,zy,ud]}),i})();class hk{attach(a){return this._attachedHost=a,a.attach(this)}detach(){let a=this._attachedHost;null!=a&&(this._attachedHost=null,a.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost(a){this._attachedHost=a}}class Fu extends hk{constructor(a,e,o,d,h){super(),this.component=a,this.viewContainerRef=e,this.injector=o,this.componentFactoryResolver=d,this.projectableNodes=h}}class Ps extends hk{constructor(a,e,o,d){super(),this.templateRef=a,this.viewContainerRef=e,this.context=o,this.injector=d}get origin(){return this.templateRef.elementRef}attach(a,e=this.context){return this.context=e,super.attach(a)}detach(){return this.context=void 0,super.detach()}}class Vj extends hk{constructor(a){super(),this.element=a instanceof Be?a.nativeElement:a}}class mC{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach(a){return a instanceof Fu?(this._attachedPortal=a,this.attachComponentPortal(a)):a instanceof Ps?(this._attachedPortal=a,this.attachTemplatePortal(a)):this.attachDomPortal&&a instanceof Vj?(this._attachedPortal=a,this.attachDomPortal(a)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn(a){this._disposeFn=a}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class KN extends mC{constructor(a,e,o,d,h){super(),this.outletElement=a,this._componentFactoryResolver=e,this._appRef=o,this._defaultInjector=d,this.attachDomPortal=_=>{const w=_.element,D=this._document.createComment("dom-portal");w.parentNode.insertBefore(D,w),this.outletElement.appendChild(w),this._attachedPortal=_,super.setDisposeFn(()=>{D.parentNode&&D.parentNode.replaceChild(w,D)})},this._document=h}attachComponentPortal(a){const o=(a.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(a.component);let d;return a.viewContainerRef?(d=a.viewContainerRef.createComponent(o,a.viewContainerRef.length,a.injector||a.viewContainerRef.injector,a.projectableNodes||void 0),this.setDisposeFn(()=>d.destroy())):(d=o.create(a.injector||this._defaultInjector||Qi.NULL),this._appRef.attachView(d.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(d.hostView),d.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(d)),this._attachedPortal=a,d}attachTemplatePortal(a){let e=a.viewContainerRef,o=e.createEmbeddedView(a.templateRef,a.context,{injector:a.injector});return o.rootNodes.forEach(d=>this.outletElement.appendChild(d)),o.detectChanges(),this.setDisposeFn(()=>{let d=e.indexOf(o);-1!==d&&e.remove(d)}),this._attachedPortal=a,o}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode(a){return a.hostView.rootNodes[0]}}let zj=(()=>{class i extends Ps{constructor(e,o){super(e,o)}}return i.\u0275fac=function(e){return new(e||i)(F(ii),F(mi))},i.\u0275dir=me({type:i,selectors:[["","cdkPortal",""]],exportAs:["cdkPortal"],features:[Se]}),i})(),ll=(()=>{class i extends mC{constructor(e,o,d){super(),this._componentFactoryResolver=e,this._viewContainerRef=o,this._isInitialized=!1,this.attached=new we,this.attachDomPortal=h=>{const _=h.element,w=this._document.createComment("dom-portal");h.setAttachedHost(this),_.parentNode.insertBefore(w,_),this._getRootNode().appendChild(_),this._attachedPortal=h,super.setDisposeFn(()=>{w.parentNode&&w.parentNode.replaceChild(_,w)})},this._document=d}get portal(){return this._attachedPortal}set portal(e){this.hasAttached()&&!e&&!this._isInitialized||(this.hasAttached()&&super.detach(),e&&super.attach(e),this._attachedPortal=e||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(e){e.setAttachedHost(this);const o=null!=e.viewContainerRef?e.viewContainerRef:this._viewContainerRef,h=(e.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(e.component),_=o.createComponent(h,o.length,e.injector||o.injector,e.projectableNodes||void 0);return o!==this._viewContainerRef&&this._getRootNode().appendChild(_.hostView.rootNodes[0]),super.setDisposeFn(()=>_.destroy()),this._attachedPortal=e,this._attachedRef=_,this.attached.emit(_),_}attachTemplatePortal(e){e.setAttachedHost(this);const o=this._viewContainerRef.createEmbeddedView(e.templateRef,e.context,{injector:e.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=e,this._attachedRef=o,this.attached.emit(o),o}_getRootNode(){const e=this._viewContainerRef.element.nativeElement;return e.nodeType===e.ELEMENT_NODE?e:e.parentNode}}return i.\u0275fac=function(e){return new(e||i)(F(Ol),F(mi),F(ht))},i.\u0275dir=me({type:i,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[Se]}),i})(),Rs=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();function pr(i,...a){return a.length?a.some(e=>i[e]):i.altKey||i.shiftKey||i.ctrlKey||i.metaKey}const cB=jN();class _k{constructor(a,e){this._viewportRuler=a,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=e}attach(){}enable(){if(this._canBeEnabled()){const a=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=a.style.left||"",this._previousHTMLStyles.top=a.style.top||"",a.style.left=ir(-this._previousScrollPosition.left),a.style.top=ir(-this._previousScrollPosition.top),a.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const a=this._document.documentElement,o=a.style,d=this._document.body.style,h=o.scrollBehavior||"",_=d.scrollBehavior||"";this._isEnabled=!1,o.left=this._previousHTMLStyles.left,o.top=this._previousHTMLStyles.top,a.classList.remove("cdk-global-scrollblock"),cB&&(o.scrollBehavior=d.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),cB&&(o.scrollBehavior=h,d.scrollBehavior=_)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const e=this._document.body,o=this._viewportRuler.getViewportSize();return e.scrollHeight>o.height||e.scrollWidth>o.width}}class yk{constructor(a,e,o,d){this._scrollDispatcher=a,this._ngZone=e,this._viewportRuler=o,this._config=d,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(a){this._overlayRef=a}enable(){if(this._scrollSubscription)return;const a=this._scrollDispatcher.scrolled(0).pipe(Kn(e=>!e||!this._overlayRef.overlayElement.contains(e.getElementRef().nativeElement)));this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=a.subscribe(()=>{const e=this._viewportRuler.getViewportScrollPosition().top;Math.abs(e-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=a.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class dB{enable(){}disable(){}attach(){}}function yC(i,a){return a.some(e=>i.bottome.bottom||i.righte.right)}function uB(i,a){return a.some(e=>i.tope.bottom||i.lefte.right)}class u7{constructor(a,e,o,d){this._scrollDispatcher=a,this._viewportRuler=e,this._ngZone=o,this._config=d,this._scrollSubscription=null}attach(a){this._overlayRef=a}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const e=this._overlayRef.overlayElement.getBoundingClientRect(),{width:o,height:d}=this._viewportRuler.getViewportSize();yC(e,[{width:o,height:d,bottom:d,right:o,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let h7=(()=>{class i{constructor(e,o,d,h){this._scrollDispatcher=e,this._viewportRuler=o,this._ngZone=d,this.noop=()=>new dB,this.close=_=>new yk(this._scrollDispatcher,this._ngZone,this._viewportRuler,_),this.block=()=>new _k(this._viewportRuler,this._document),this.reposition=_=>new u7(this._scrollDispatcher,this._viewportRuler,this._ngZone,_),this._document=h}}return i.\u0275fac=function(e){return new(e||i)(ae(Hy),ae(ac),ae(et),ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();class Hf{constructor(a){if(this.scrollStrategy=new dB,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,a){const e=Object.keys(a);for(const o of e)void 0!==a[o]&&(this[o]=a[o])}}}class f7{constructor(a,e){this.connectionPair=a,this.scrollableViewProperties=e}}let hB=(()=>{class i{constructor(e){this._attachedOverlays=[],this._document=e}ngOnDestroy(){this.detach()}add(e){this.remove(e),this._attachedOverlays.push(e)}remove(e){const o=this._attachedOverlays.indexOf(e);o>-1&&this._attachedOverlays.splice(o,1),0===this._attachedOverlays.length&&this.detach()}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),fB=(()=>{class i extends hB{constructor(e,o){super(e),this._ngZone=o,this._keydownListener=d=>{const h=this._attachedOverlays;for(let _=h.length-1;_>-1;_--)if(h[_]._keydownEvents.observers.length>0){const w=h[_]._keydownEvents;this._ngZone?this._ngZone.run(()=>w.next(d)):w.next(d);break}}}add(e){super.add(e),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return i.\u0275fac=function(e){return new(e||i)(ae(ht),ae(et,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),p7=(()=>{class i extends hB{constructor(e,o,d){super(e),this._platform=o,this._ngZone=d,this._cursorStyleIsSet=!1,this._pointerDownListener=h=>{this._pointerDownEventTarget=dd(h)},this._clickListener=h=>{const _=dd(h),w="click"===h.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:_;this._pointerDownEventTarget=null;const D=this._attachedOverlays.slice();for(let k=D.length-1;k>-1;k--){const P=D[k];if(P._outsidePointerEvents.observers.length<1||!P.hasAttached())continue;if(P.overlayElement.contains(_)||P.overlayElement.contains(w))break;const B=P._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>B.next(h)):B.next(h)}}}add(e){if(super.add(e),!this._isAttached){const o=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(o)):this._addEventListeners(o),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=o.style.cursor,o.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const e=this._document.body;e.removeEventListener("pointerdown",this._pointerDownListener,!0),e.removeEventListener("click",this._clickListener,!0),e.removeEventListener("auxclick",this._clickListener,!0),e.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(e.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(e){e.addEventListener("pointerdown",this._pointerDownListener,!0),e.addEventListener("click",this._clickListener,!0),e.addEventListener("auxclick",this._clickListener,!0),e.addEventListener("contextmenu",this._clickListener,!0)}}return i.\u0275fac=function(e){return new(e||i)(ae(ht),ae(Qn),ae(et,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),bC=(()=>{class i{constructor(e,o){this._platform=o,this._document=e}ngOnDestroy(){var e;null===(e=this._containerElement)||void 0===e||e.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const e="cdk-overlay-container";if(this._platform.isBrowser||dk()){const d=this._document.querySelectorAll(`.${e}[platform="server"], .${e}[platform="test"]`);for(let h=0;hthis._backdropClick.next(B),this._backdropTransitionendHandler=B=>{this._disposeBackdrop(B.target)},this._keydownEvents=new He,this._outsidePointerEvents=new He,d.scrollStrategy&&(this._scrollStrategy=d.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=d.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(a){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const e=this._portalOutlet.attach(a);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe(Tn(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof(null==e?void 0:e.onDestroy)&&e.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),e}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const a=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),a}dispose(){var a;const e=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),null===(a=this._host)||void 0===a||a.remove(),this._previousHostParent=this._pane=this._host=null,e&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(a){a!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=a,this.hasAttached()&&(a.attach(this),this.updatePosition()))}updateSize(a){this._config={...this._config,...a},this._updateElementSize()}setDirection(a){this._config={...this._config,direction:a},this._updateElementDirection()}addPanelClass(a){this._pane&&this._toggleClasses(this._pane,a,!0)}removePanelClass(a){this._pane&&this._toggleClasses(this._pane,a,!1)}getDirection(){const a=this._config.direction;return a?"string"==typeof a?a:a.value:"ltr"}updateScrollStrategy(a){a!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=a,this.hasAttached()&&(a.attach(this),a.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const a=this._pane.style;a.width=ir(this._config.width),a.height=ir(this._config.height),a.minWidth=ir(this._config.minWidth),a.minHeight=ir(this._config.minHeight),a.maxWidth=ir(this._config.maxWidth),a.maxHeight=ir(this._config.maxHeight)}_togglePointerEvents(a){this._pane.style.pointerEvents=a?"":"none"}_attachBackdrop(){const a="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(a)})}):this._backdropElement.classList.add(a)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const a=this._backdropElement;if(a){if(this._animationsDisabled)return void this._disposeBackdrop(a);a.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{a.addEventListener("transitionend",this._backdropTransitionendHandler)}),a.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(a)},500))}}_toggleClasses(a,e,o){const d=ik(e||[]).filter(h=>!!h);d.length&&(o?a.classList.add(...d):a.classList.remove(...d))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const a=this._ngZone.onStable.pipe(Et(Wn(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),a.unsubscribe())})})}_disposeScrollStrategy(){const a=this._scrollStrategy;a&&(a.disable(),a.detach&&a.detach())}_disposeBackdrop(a){a&&(a.removeEventListener("click",this._backdropClickHandler),a.removeEventListener("transitionend",this._backdropTransitionendHandler),a.remove(),this._backdropElement===a&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const bk="cdk-overlay-connected-position-bounding-box",m7=/([A-Za-z%]+)$/;class pB{get positions(){return this._preferredPositions}constructor(a,e,o,d,h){this._viewportRuler=e,this._document=o,this._platform=d,this._overlayContainer=h,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new He,this._resizeSubscription=xt.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(a)}attach(a){this._validatePositions(),a.hostElement.classList.add(bk),this._overlayRef=a,this._boundingBox=a.hostElement,this._pane=a.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const a=this._originRect,e=this._overlayRect,o=this._viewportRect,d=this._containerRect,h=[];let _;for(let w of this._preferredPositions){let D=this._getOriginPoint(a,d,w),k=this._getOverlayPoint(D,e,w),P=this._getOverlayFit(k,e,o,w);if(P.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(w,D);this._canFitWithFlexibleDimensions(P,k,o)?h.push({position:w,origin:D,overlayRect:e,boundingBoxRect:this._calculateBoundingBoxRect(D,w)}):(!_||_.overlayFit.visibleAreaD&&(D=P,w=k)}return this._isPushed=!1,void this._applyPosition(w.position,w.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(_.position,_.originPoint);this._applyPosition(_.position,_.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&Gf(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(bk),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const a=this._lastPosition;if(a){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const e=this._getOriginPoint(this._originRect,this._containerRect,a);this._applyPosition(a,e)}else this.apply()}withScrollableContainers(a){return this._scrollables=a,this}withPositions(a){return this._preferredPositions=a,-1===a.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(a){return this._viewportMargin=a,this}withFlexibleDimensions(a=!0){return this._hasFlexibleDimensions=a,this}withGrowAfterOpen(a=!0){return this._growAfterOpen=a,this}withPush(a=!0){return this._canPush=a,this}withLockedPosition(a=!0){return this._positionLocked=a,this}setOrigin(a){return this._origin=a,this}withDefaultOffsetX(a){return this._offsetX=a,this}withDefaultOffsetY(a){return this._offsetY=a,this}withTransformOriginOn(a){return this._transformOriginSelector=a,this}_getOriginPoint(a,e,o){let d,h;if("center"==o.originX)d=a.left+a.width/2;else{const _=this._isRtl()?a.right:a.left,w=this._isRtl()?a.left:a.right;d="start"==o.originX?_:w}return e.left<0&&(d-=e.left),h="center"==o.originY?a.top+a.height/2:"top"==o.originY?a.top:a.bottom,e.top<0&&(h-=e.top),{x:d,y:h}}_getOverlayPoint(a,e,o){let d,h;return d="center"==o.overlayX?-e.width/2:"start"===o.overlayX?this._isRtl()?-e.width:0:this._isRtl()?0:-e.width,h="center"==o.overlayY?-e.height/2:"top"==o.overlayY?0:-e.height,{x:a.x+d,y:a.y+h}}_getOverlayFit(a,e,o,d){const h=gB(e);let{x:_,y:w}=a,D=this._getOffset(d,"x"),k=this._getOffset(d,"y");D&&(_+=D),k&&(w+=k);let W=0-w,Z=w+h.height-o.height,te=this._subtractOverflows(h.width,0-_,_+h.width-o.width),ie=this._subtractOverflows(h.height,W,Z),de=te*ie;return{visibleArea:de,isCompletelyWithinViewport:h.width*h.height===de,fitsInViewportVertically:ie===h.height,fitsInViewportHorizontally:te==h.width}}_canFitWithFlexibleDimensions(a,e,o){if(this._hasFlexibleDimensions){const d=o.bottom-e.y,h=o.right-e.x,_=mB(this._overlayRef.getConfig().minHeight),w=mB(this._overlayRef.getConfig().minWidth);return(a.fitsInViewportVertically||null!=_&&_<=d)&&(a.fitsInViewportHorizontally||null!=w&&w<=h)}return!1}_pushOverlayOnScreen(a,e,o){if(this._previousPushAmount&&this._positionLocked)return{x:a.x+this._previousPushAmount.x,y:a.y+this._previousPushAmount.y};const d=gB(e),h=this._viewportRect,_=Math.max(a.x+d.width-h.width,0),w=Math.max(a.y+d.height-h.height,0),D=Math.max(h.top-o.top-a.y,0),k=Math.max(h.left-o.left-a.x,0);let P=0,B=0;return P=d.width<=h.width?k||-_:a.xte&&!this._isInitialRender&&!this._growAfterOpen&&(_=a.y-te/2)}if("end"===e.overlayX&&!d||"start"===e.overlayX&&d)W=o.width-a.x+this._viewportMargin,P=a.x-this._viewportMargin;else if("start"===e.overlayX&&!d||"end"===e.overlayX&&d)B=a.x,P=o.right-a.x;else{const Z=Math.min(o.right-a.x+o.left,a.x),te=this._lastBoundingBoxSize.width;P=2*Z,B=a.x-Z,P>te&&!this._isInitialRender&&!this._growAfterOpen&&(B=a.x-te/2)}return{top:_,left:B,bottom:w,right:W,width:P,height:h}}_setBoundingBoxStyles(a,e){const o=this._calculateBoundingBoxRect(a,e);!this._isInitialRender&&!this._growAfterOpen&&(o.height=Math.min(o.height,this._lastBoundingBoxSize.height),o.width=Math.min(o.width,this._lastBoundingBoxSize.width));const d={};if(this._hasExactPosition())d.top=d.left="0",d.bottom=d.right=d.maxHeight=d.maxWidth="",d.width=d.height="100%";else{const h=this._overlayRef.getConfig().maxHeight,_=this._overlayRef.getConfig().maxWidth;d.height=ir(o.height),d.top=ir(o.top),d.bottom=ir(o.bottom),d.width=ir(o.width),d.left=ir(o.left),d.right=ir(o.right),d.alignItems="center"===e.overlayX?"center":"end"===e.overlayX?"flex-end":"flex-start",d.justifyContent="center"===e.overlayY?"center":"bottom"===e.overlayY?"flex-end":"flex-start",h&&(d.maxHeight=ir(h)),_&&(d.maxWidth=ir(_))}this._lastBoundingBoxSize=o,Gf(this._boundingBox.style,d)}_resetBoundingBoxStyles(){Gf(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){Gf(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(a,e){const o={},d=this._hasExactPosition(),h=this._hasFlexibleDimensions,_=this._overlayRef.getConfig();if(d){const P=this._viewportRuler.getViewportScrollPosition();Gf(o,this._getExactOverlayY(e,a,P)),Gf(o,this._getExactOverlayX(e,a,P))}else o.position="static";let w="",D=this._getOffset(e,"x"),k=this._getOffset(e,"y");D&&(w+=`translateX(${D}px) `),k&&(w+=`translateY(${k}px)`),o.transform=w.trim(),_.maxHeight&&(d?o.maxHeight=ir(_.maxHeight):h&&(o.maxHeight="")),_.maxWidth&&(d?o.maxWidth=ir(_.maxWidth):h&&(o.maxWidth="")),Gf(this._pane.style,o)}_getExactOverlayY(a,e,o){let d={top:"",bottom:""},h=this._getOverlayPoint(e,this._overlayRect,a);return this._isPushed&&(h=this._pushOverlayOnScreen(h,this._overlayRect,o)),"bottom"===a.overlayY?d.bottom=this._document.documentElement.clientHeight-(h.y+this._overlayRect.height)+"px":d.top=ir(h.y),d}_getExactOverlayX(a,e,o){let _,d={left:"",right:""},h=this._getOverlayPoint(e,this._overlayRect,a);return this._isPushed&&(h=this._pushOverlayOnScreen(h,this._overlayRect,o)),_=this._isRtl()?"end"===a.overlayX?"left":"right":"end"===a.overlayX?"right":"left","right"===_?d.right=this._document.documentElement.clientWidth-(h.x+this._overlayRect.width)+"px":d.left=ir(h.x),d}_getScrollVisibility(){const a=this._getOriginRect(),e=this._pane.getBoundingClientRect(),o=this._scrollables.map(d=>d.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:uB(a,o),isOriginOutsideView:yC(a,o),isOverlayClipped:uB(e,o),isOverlayOutsideView:yC(e,o)}}_subtractOverflows(a,...e){return e.reduce((o,d)=>o-Math.max(d,0),a)}_getNarrowedViewportRect(){const a=this._document.documentElement.clientWidth,e=this._document.documentElement.clientHeight,o=this._viewportRuler.getViewportScrollPosition();return{top:o.top+this._viewportMargin,left:o.left+this._viewportMargin,right:o.left+a-this._viewportMargin,bottom:o.top+e-this._viewportMargin,width:a-2*this._viewportMargin,height:e-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(a,e){return"x"===e?null==a.offsetX?this._offsetX:a.offsetX:null==a.offsetY?this._offsetY:a.offsetY}_validatePositions(){}_addPanelClasses(a){this._pane&&ik(a).forEach(e=>{""!==e&&-1===this._appliedPanelClasses.indexOf(e)&&(this._appliedPanelClasses.push(e),this._pane.classList.add(e))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(a=>{this._pane.classList.remove(a)}),this._appliedPanelClasses=[])}_getOriginRect(){const a=this._origin;if(a instanceof Be)return a.nativeElement.getBoundingClientRect();if(a instanceof Element)return a.getBoundingClientRect();const e=a.width||0,o=a.height||0;return{top:a.y,bottom:a.y+o,left:a.x,right:a.x+e,height:o,width:e}}}function Gf(i,a){for(let e in a)a.hasOwnProperty(e)&&(i[e]=a[e]);return i}function mB(i){if("number"!=typeof i&&null!=i){const[a,e]=i.split(m7);return e&&"px"!==e?null:parseFloat(a)}return i||null}function gB(i){return{top:Math.floor(i.top),right:Math.floor(i.right),bottom:Math.floor(i.bottom),left:Math.floor(i.left),width:Math.floor(i.width),height:Math.floor(i.height)}}const vB="cdk-global-overlay-wrapper";class _B{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(a){const e=a.getConfig();this._overlayRef=a,this._width&&!e.width&&a.updateSize({width:this._width}),this._height&&!e.height&&a.updateSize({height:this._height}),a.hostElement.classList.add(vB),this._isDisposed=!1}top(a=""){return this._bottomOffset="",this._topOffset=a,this._alignItems="flex-start",this}left(a=""){return this._xOffset=a,this._xPosition="left",this}bottom(a=""){return this._topOffset="",this._bottomOffset=a,this._alignItems="flex-end",this}right(a=""){return this._xOffset=a,this._xPosition="right",this}start(a=""){return this._xOffset=a,this._xPosition="start",this}end(a=""){return this._xOffset=a,this._xPosition="end",this}width(a=""){return this._overlayRef?this._overlayRef.updateSize({width:a}):this._width=a,this}height(a=""){return this._overlayRef?this._overlayRef.updateSize({height:a}):this._height=a,this}centerHorizontally(a=""){return this.left(a),this._xPosition="center",this}centerVertically(a=""){return this.top(a),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const a=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement.style,o=this._overlayRef.getConfig(),{width:d,height:h,maxWidth:_,maxHeight:w}=o,D=!("100%"!==d&&"100vw"!==d||_&&"100%"!==_&&"100vw"!==_),k=!("100%"!==h&&"100vh"!==h||w&&"100%"!==w&&"100vh"!==w),P=this._xPosition,B=this._xOffset,W="rtl"===this._overlayRef.getConfig().direction;let Z="",te="",ie="";D?ie="flex-start":"center"===P?(ie="center",W?te=B:Z=B):W?"left"===P||"end"===P?(ie="flex-end",Z=B):("right"===P||"start"===P)&&(ie="flex-start",te=B):"left"===P||"start"===P?(ie="flex-start",Z=B):("right"===P||"end"===P)&&(ie="flex-end",te=B),a.position=this._cssPosition,a.marginLeft=D?"0":Z,a.marginTop=k?"0":this._topOffset,a.marginBottom=this._bottomOffset,a.marginRight=D?"0":te,e.justifyContent=ie,e.alignItems=k?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const a=this._overlayRef.overlayElement.style,e=this._overlayRef.hostElement,o=e.style;e.classList.remove(vB),o.justifyContent=o.alignItems=a.marginTop=a.marginBottom=a.marginLeft=a.marginRight=a.position="",this._overlayRef=null,this._isDisposed=!0}}let g7=(()=>{class i{constructor(e,o,d,h){this._viewportRuler=e,this._document=o,this._platform=d,this._overlayContainer=h}global(){return new _B}flexibleConnectedTo(e){return new pB(e,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return i.\u0275fac=function(e){return new(e||i)(ae(ac),ae(ht),ae(Qn),ae(bC))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),yB=0,ea=(()=>{class i{constructor(e,o,d,h,_,w,D,k,P,B,W,Z){this.scrollStrategies=e,this._overlayContainer=o,this._componentFactoryResolver=d,this._positionBuilder=h,this._keyboardDispatcher=_,this._injector=w,this._ngZone=D,this._document=k,this._directionality=P,this._location=B,this._outsideClickDispatcher=W,this._animationsModuleType=Z}create(e){const o=this._createHostElement(),d=this._createPaneElement(o),h=this._createPortalOutlet(d),_=new Hf(e);return _.direction=_.direction||this._directionality.value,new jy(h,o,d,_,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(e){const o=this._document.createElement("div");return o.id="cdk-overlay-"+yB++,o.classList.add("cdk-overlay-pane"),e.appendChild(o),o}_createHostElement(){const e=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(e),e}_createPortalOutlet(e){return this._appRef||(this._appRef=this._injector.get(vu)),new KN(e,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return i.\u0275fac=function(e){return new(e||i)(ae(h7),ae(bC),ae(Ol),ae(g7),ae(fB),ae(Qi),ae(et),ae(ht),ae(Ci),ae(I_),ae(p7),ae(Ei,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const v7=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],bB=new be("cdk-connected-overlay-scroll-strategy");let wk=(()=>{class i{constructor(e){this.elementRef=e}}return i.\u0275fac=function(e){return new(e||i)(F(Be))},i.\u0275dir=me({type:i,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),i})(),wB=(()=>{class i{get offsetX(){return this._offsetX}set offsetX(e){this._offsetX=e,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(e){this._offsetY=e,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(e){this._hasBackdrop=Ge(e)}get lockPosition(){return this._lockPosition}set lockPosition(e){this._lockPosition=Ge(e)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(e){this._flexibleDimensions=Ge(e)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(e){this._growAfterOpen=Ge(e)}get push(){return this._push}set push(e){this._push=Ge(e)}constructor(e,o,d,h,_){this._overlay=e,this._dir=_,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=xt.EMPTY,this._attachSubscription=xt.EMPTY,this._detachSubscription=xt.EMPTY,this._positionSubscription=xt.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new we,this.positionChange=new we,this.attach=new we,this.detach=new we,this.overlayKeydown=new we,this.overlayOutsideClick=new we,this._templatePortal=new Ps(o,d),this._scrollStrategyFactory=h,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(e){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),e.origin&&this.open&&this._position.apply()),e.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=v7);const e=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=e.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=e.detachments().subscribe(()=>this.detach.emit()),e.keydownEvents().subscribe(o=>{this.overlayKeydown.next(o),27===o.keyCode&&!this.disableClose&&!pr(o)&&(o.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(o=>{this.overlayOutsideClick.next(o)})}_buildConfig(){const e=this._position=this.positionStrategy||this._createPositionStrategy(),o=new Hf({direction:this._dir,positionStrategy:e,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(o.width=this.width),(this.height||0===this.height)&&(o.height=this.height),(this.minWidth||0===this.minWidth)&&(o.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(o.minHeight=this.minHeight),this.backdropClass&&(o.backdropClass=this.backdropClass),this.panelClass&&(o.panelClass=this.panelClass),o}_updatePositionStrategy(e){const o=this.positions.map(d=>({originX:d.originX,originY:d.originY,overlayX:d.overlayX,overlayY:d.overlayY,offsetX:d.offsetX||this.offsetX,offsetY:d.offsetY||this.offsetY,panelClass:d.panelClass||void 0}));return e.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(o).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const e=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(e),e}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof wk?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(e=>{this.backdropClick.emit(e)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe(hA(()=>this.positionChange.observers.length>0)).subscribe(e=>{this.positionChange.emit(e),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return i.\u0275fac=function(e){return new(e||i)(F(ea),F(ii),F(mi),F(bB),F(Ci,8))},i.\u0275dir=me({type:i,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[jn]}),i})();const y7={provide:bB,deps:[ea],useFactory:function _7(i){return()=>i.scrollStrategies.reposition()}};let pd=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[ea,y7],imports:[zy,Rs,Lu,Lu]}),i})();function xk(i,a=Ru){return Gn((e,o)=>{let d=null,h=null,_=null;const w=()=>{if(d){d.unsubscribe(),d=null;const k=h;h=null,o.next(k)}};function D(){const k=_+i,P=a.now();if(P{h=k,_=a.now(),d||(d=a.schedule(D,i),o.add(d))},()=>{w(),o.complete()},void 0,()=>{h=d=null}))})}function Ck(i){return Kn((a,e)=>i<=e)}function Sk(i,a=Ku){return i=i??xB,Gn((e,o)=>{let d,h=!0;e.subscribe(si(o,_=>{const w=a(_);(h||!i(d,w))&&(h=!1,d=w,o.next(_))}))})}function xB(i,a){return i===a}let CB=(()=>{class i{create(e){return typeof MutationObserver>"u"?null:new MutationObserver(e)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),b7=(()=>{class i{constructor(e){this._mutationObserverFactory=e,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((e,o)=>this._cleanupObserver(o))}observe(e){const o=cd(e);return new Hn(d=>{const _=this._observeElement(o).subscribe(d);return()=>{_.unsubscribe(),this._unobserveElement(o)}})}_observeElement(e){if(this._observedElements.has(e))this._observedElements.get(e).count++;else{const o=new He,d=this._mutationObserverFactory.create(h=>o.next(h));d&&d.observe(e,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(e,{observer:d,stream:o,count:1})}return this._observedElements.get(e).stream}_unobserveElement(e){this._observedElements.has(e)&&(this._observedElements.get(e).count--,this._observedElements.get(e).count||this._cleanupObserver(e))}_cleanupObserver(e){if(this._observedElements.has(e)){const{observer:o,stream:d}=this._observedElements.get(e);o&&o.disconnect(),d.complete(),this._observedElements.delete(e)}}}return i.\u0275fac=function(e){return new(e||i)(ae(CB))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),$y=(()=>{class i{get disabled(){return this._disabled}set disabled(e){this._disabled=Ge(e),this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(e){this._debounce=Br(e),this._subscribe()}constructor(e,o,d){this._contentObserver=e,this._elementRef=o,this._ngZone=d,this.event=new we,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const e=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?e.pipe(xk(this.debounce)):e).subscribe(this.event)})}_unsubscribe(){var e;null===(e=this._currentSubscription)||void 0===e||e.unsubscribe()}}return i.\u0275fac=function(e){return new(e||i)(F(b7),F(Be),F(et))},i.\u0275dir=me({type:i,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),i})(),Dk=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[CB]}),i})();const SB=new Set;let sg,w7=(()=>{class i{constructor(e){this._platform=e,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):C7}matchMedia(e){return(this._platform.WEBKIT||this._platform.BLINK)&&function x7(i){if(!SB.has(i))try{sg||(sg=document.createElement("style"),sg.setAttribute("type","text/css"),document.head.appendChild(sg)),sg.sheet&&(sg.sheet.insertRule(`@media ${i} {body{ }}`,0),SB.add(i))}catch(a){console.error(a)}}(e),this._matchMedia(e)}}return i.\u0275fac=function(e){return new(e||i)(ae(Qn))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function C7(i){return{matches:"all"===i||""===i,media:i,addListener:()=>{},removeListener:()=>{}}}let Mk=(()=>{class i{constructor(e,o){this._mediaMatcher=e,this._zone=o,this._queries=new Map,this._destroySubject=new He}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(e){return Tk(ik(e)).some(d=>this._registerQuery(d).mql.matches)}observe(e){let h=Za(Tk(ik(e)).map(_=>this._registerQuery(_).observable));return h=ey(h.pipe(Tn(1)),h.pipe(Ck(1),xk(0))),h.pipe(vt(_=>{const w={matches:!1,breakpoints:{}};return _.forEach(({matches:D,query:k})=>{w.matches=w.matches||D,w.breakpoints[k]=D}),w}))}_registerQuery(e){if(this._queries.has(e))return this._queries.get(e);const o=this._mediaMatcher.matchMedia(e),h={observable:new Hn(_=>{const w=D=>this._zone.run(()=>_.next(D));return o.addListener(w),()=>{o.removeListener(w)}}).pipe(wi(o),vt(({matches:_})=>({query:e,matches:_})),Et(this._destroySubject)),mql:o};return this._queries.set(e,h),h}}return i.\u0275fac=function(e){return new(e||i)(ae(w7),ae(et))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function Tk(i){return i.map(a=>a.split(",")).reduce((a,e)=>a.concat(e)).map(a=>a.trim())}function wC(i,a){return(i.getAttribute(a)||"").match(/\S+/g)||[]}const Ak="cdk-describedby-message",lg="cdk-describedby-host";let kk=0,Ek=(()=>{class i{constructor(e,o){this._platform=o,this._messageRegistry=new Map,this._messagesContainer=null,this._id=""+kk++,this._document=e,this._id=St(sf)+"-"+kk++}describe(e,o,d){if(!this._canBeDescribed(e,o))return;const h=Ik(o,d);"string"!=typeof o?(xC(o,this._id),this._messageRegistry.set(h,{messageElement:o,referenceCount:0})):this._messageRegistry.has(h)||this._createMessageElement(o,d),this._isElementDescribedByMessage(e,h)||this._addMessageReference(e,h)}removeDescription(e,o,d){var h;if(!o||!this._isElementNode(e))return;const _=Ik(o,d);if(this._isElementDescribedByMessage(e,_)&&this._removeMessageReference(e,_),"string"==typeof o){const w=this._messageRegistry.get(_);w&&0===w.referenceCount&&this._deleteMessageElement(_)}0===(null===(h=this._messagesContainer)||void 0===h?void 0:h.childNodes.length)&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){var e;const o=this._document.querySelectorAll(`[${lg}="${this._id}"]`);for(let d=0;d0!=d.indexOf(Ak));e.setAttribute("aria-describedby",o.join(" "))}_addMessageReference(e,o){const d=this._messageRegistry.get(o);(function D7(i,a,e){const o=wC(i,a);o.some(d=>d.trim()==e.trim())||(o.push(e.trim()),i.setAttribute(a,o.join(" ")))})(e,"aria-describedby",d.messageElement.id),e.setAttribute(lg,this._id),d.referenceCount++}_removeMessageReference(e,o){const d=this._messageRegistry.get(o);d.referenceCount--,function M7(i,a,e){const d=wC(i,a).filter(h=>h!=e.trim());d.length?i.setAttribute(a,d.join(" ")):i.removeAttribute(a)}(e,"aria-describedby",d.messageElement.id),e.removeAttribute(lg)}_isElementDescribedByMessage(e,o){const d=wC(e,"aria-describedby"),h=this._messageRegistry.get(o),_=h&&h.messageElement.id;return!!_&&-1!=d.indexOf(_)}_canBeDescribed(e,o){if(!this._isElementNode(e))return!1;if(o&&"object"==typeof o)return!0;const d=null==o?"":`${o}`.trim(),h=e.getAttribute("aria-label");return!(!d||h&&h.trim()===d)}_isElementNode(e){return e.nodeType===this._document.ELEMENT_NODE}}return i.\u0275fac=function(e){return new(e||i)(ae(ht),ae(Qn))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function Ik(i,a){return"string"==typeof i?`${a||""}/${i}`:i}function xC(i,a){i.id||(i.id=`${Ak}-${a}-${kk++}`)}class MB{constructor(a){this._items=a,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new He,this._typeaheadSubscription=xt.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=e=>e.disabled,this._pressedLetters=[],this.tabOut=new He,this.change=new He,a instanceof _s&&(this._itemChangesSubscription=a.changes.subscribe(e=>{if(this._activeItem){const d=e.toArray().indexOf(this._activeItem);d>-1&&d!==this._activeItemIndex&&(this._activeItemIndex=d)}}))}skipPredicate(a){return this._skipPredicateFn=a,this}withWrap(a=!0){return this._wrap=a,this}withVerticalOrientation(a=!0){return this._vertical=a,this}withHorizontalOrientation(a){return this._horizontal=a,this}withAllowedModifierKeys(a){return this._allowedModifierKeys=a,this}withTypeAhead(a=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe(Li(e=>this._pressedLetters.push(e)),xk(a),Kn(()=>this._pressedLetters.length>0),vt(()=>this._pressedLetters.join(""))).subscribe(e=>{const o=this._getItemsArray();for(let d=1;d!a[h]||this._allowedModifierKeys.indexOf(h)>-1);switch(e){case 9:return void this.tabOut.next();case 40:if(this._vertical&&d){this.setNextItemActive();break}return;case 38:if(this._vertical&&d){this.setPreviousItemActive();break}return;case 39:if(this._horizontal&&d){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case 37:if(this._horizontal&&d){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case 36:if(this._homeAndEnd&&d){this.setFirstItemActive();break}return;case 35:if(this._homeAndEnd&&d){this.setLastItemActive();break}return;case 33:if(this._pageUpAndDown.enabled&&d){const h=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(h>0?h:0,1);break}return;case 34:if(this._pageUpAndDown.enabled&&d){const h=this._activeItemIndex+this._pageUpAndDown.delta,_=this._getItemsArray().length;this._setActiveItemByIndex(h<_?h:_-1,-1);break}return;default:return void((d||pr(a,"shiftKey"))&&(a.key&&1===a.key.length?this._letterKeyStream.next(a.key.toLocaleUpperCase()):(e>=65&&e<=90||e>=48&&e<=57)&&this._letterKeyStream.next(String.fromCharCode(e))))}this._pressedLetters=[],a.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(a){const e=this._getItemsArray(),o="number"==typeof a?a:e.indexOf(a);this._activeItem=e[o]??null,this._activeItemIndex=o}destroy(){var a;this._typeaheadSubscription.unsubscribe(),null===(a=this._itemChangesSubscription)||void 0===a||a.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(a){this._wrap?this._setActiveInWrapMode(a):this._setActiveInDefaultMode(a)}_setActiveInWrapMode(a){const e=this._getItemsArray();for(let o=1;o<=e.length;o++){const d=(this._activeItemIndex+a*o+e.length)%e.length;if(!this._skipPredicateFn(e[d]))return void this.setActiveItem(d)}}_setActiveInDefaultMode(a){this._setActiveItemByIndex(this._activeItemIndex+a,a)}_setActiveItemByIndex(a,e){const o=this._getItemsArray();if(o[a]){for(;this._skipPredicateFn(o[a]);)if(!o[a+=e])return;this.setActiveItem(a)}}_getItemsArray(){return this._items instanceof _s?this._items.toArray():this._items}}class TB extends MB{setActiveItem(a){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(a),this.activeItem&&this.activeItem.setActiveStyles()}}class Pk extends MB{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(a){return this._origin=a,this}setActiveItem(a){super.setActiveItem(a),this.activeItem&&this.activeItem.focus(this._origin)}}let Wy=(()=>{class i{constructor(e){this._platform=e}isDisabled(e){return e.hasAttribute("disabled")}isVisible(e){return function kB(i){return!!(i.offsetWidth||i.offsetHeight||"function"==typeof i.getClientRects&&i.getClientRects().length)}(e)&&"visible"===getComputedStyle(e).visibility}isTabbable(e){if(!this._platform.isBrowser)return!1;const o=function AB(i){try{return i.frameElement}catch{return null}}(function cg(i){return i.ownerDocument&&i.ownerDocument.defaultView||window}(e));if(o&&(-1===Rk(o)||!this.isVisible(o)))return!1;let d=e.nodeName.toLowerCase(),h=Rk(e);return e.hasAttribute("contenteditable")?-1!==h:!("iframe"===d||"object"===d||this._platform.WEBKIT&&this._platform.IOS&&!function OB(i){let a=i.nodeName.toLowerCase(),e="input"===a&&i.type;return"text"===e||"password"===e||"select"===a||"textarea"===a}(e))&&("audio"===d?!!e.hasAttribute("controls")&&-1!==h:"video"===d?-1!==h&&(null!==h||this._platform.FIREFOX||e.hasAttribute("controls")):e.tabIndex>=0)}isFocusable(e,o){return function Ok(i){return!function IB(i){return function k7(i){return"input"==i.nodeName.toLowerCase()}(i)&&"hidden"==i.type}(i)&&(function EB(i){let a=i.nodeName.toLowerCase();return"input"===a||"select"===a||"button"===a||"textarea"===a}(i)||function A7(i){return function PB(i){return"a"==i.nodeName.toLowerCase()}(i)&&i.hasAttribute("href")}(i)||i.hasAttribute("contenteditable")||RB(i))}(e)&&!this.isDisabled(e)&&((null==o?void 0:o.ignoreVisibility)||this.isVisible(e))}}return i.\u0275fac=function(e){return new(e||i)(ae(Qn))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();function RB(i){if(!i.hasAttribute("tabindex")||void 0===i.tabIndex)return!1;let a=i.getAttribute("tabindex");return!(!a||isNaN(parseInt(a,10)))}function Rk(i){if(!RB(i))return null;const a=parseInt(i.getAttribute("tabindex")||"",10);return isNaN(a)?-1:a}class LB{get enabled(){return this._enabled}set enabled(a){this._enabled=a,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(a,this._startAnchor),this._toggleAnchorTabIndex(a,this._endAnchor))}constructor(a,e,o,d,h=!1){this._element=a,this._checker=e,this._ngZone=o,this._document=d,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,h||this.attachAnchors()}destroy(){const a=this._startAnchor,e=this._endAnchor;a&&(a.removeEventListener("focus",this.startAnchorListener),a.remove()),e&&(e.removeEventListener("focus",this.endAnchorListener),e.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(a){return new Promise(e=>{this._executeOnStable(()=>e(this.focusInitialElement(a)))})}focusFirstTabbableElementWhenReady(a){return new Promise(e=>{this._executeOnStable(()=>e(this.focusFirstTabbableElement(a)))})}focusLastTabbableElementWhenReady(a){return new Promise(e=>{this._executeOnStable(()=>e(this.focusLastTabbableElement(a)))})}_getRegionBoundary(a){const e=this._element.querySelectorAll(`[cdk-focus-region-${a}], [cdkFocusRegion${a}], [cdk-focus-${a}]`);return"start"==a?e.length?e[0]:this._getFirstTabbableElement(this._element):e.length?e[e.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(a){const e=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(e){if(!this._checker.isFocusable(e)){const o=this._getFirstTabbableElement(e);return null==o||o.focus(a),!!o}return e.focus(a),!0}return this.focusFirstTabbableElement(a)}focusFirstTabbableElement(a){const e=this._getRegionBoundary("start");return e&&e.focus(a),!!e}focusLastTabbableElement(a){const e=this._getRegionBoundary("end");return e&&e.focus(a),!!e}hasAttached(){return this._hasAttached}_getFirstTabbableElement(a){if(this._checker.isFocusable(a)&&this._checker.isTabbable(a))return a;const e=a.children;for(let o=0;o=0;o--){const d=e[o].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(e[o]):null;if(d)return d}return null}_createAnchor(){const a=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,a),a.classList.add("cdk-visually-hidden"),a.classList.add("cdk-focus-trap-anchor"),a.setAttribute("aria-hidden","true"),a}_toggleAnchorTabIndex(a,e){a?e.setAttribute("tabindex","0"):e.removeAttribute("tabindex")}toggleAnchors(a){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(a,this._startAnchor),this._toggleAnchorTabIndex(a,this._endAnchor))}_executeOnStable(a){this._ngZone.isStable?a():this._ngZone.onStable.pipe(Tn(1)).subscribe(a)}}let Yy=(()=>{class i{constructor(e,o,d){this._checker=e,this._ngZone=o,this._document=d}create(e,o=!1){return new LB(e,this._checker,this._ngZone,this._document,o)}}return i.\u0275fac=function(e){return new(e||i)(ae(Wy),ae(et),ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),E7=(()=>{class i{get enabled(){return this.focusTrap.enabled}set enabled(e){this.focusTrap.enabled=Ge(e)}get autoCapture(){return this._autoCapture}set autoCapture(e){this._autoCapture=Ge(e)}constructor(e,o,d){this._elementRef=e,this._focusTrapFactory=o,this._previouslyFocusedElement=null,this.focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement,!0)}ngOnDestroy(){this.focusTrap.destroy(),this._previouslyFocusedElement&&(this._previouslyFocusedElement.focus(),this._previouslyFocusedElement=null)}ngAfterContentInit(){this.focusTrap.attachAnchors(),this.autoCapture&&this._captureFocus()}ngDoCheck(){this.focusTrap.hasAttached()||this.focusTrap.attachAnchors()}ngOnChanges(e){const o=e.autoCapture;o&&!o.firstChange&&this.autoCapture&&this.focusTrap.hasAttached()&&this._captureFocus()}_captureFocus(){this._previouslyFocusedElement=Vy(),this.focusTrap.focusInitialElementWhenReady()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Yy),F(ht))},i.\u0275dir=me({type:i,selectors:[["","cdkTrapFocus",""]],inputs:{enabled:["cdkTrapFocus","enabled"],autoCapture:["cdkTrapFocusAutoCapture","autoCapture"]},exportAs:["cdkTrapFocus"],features:[jn]}),i})();function Lk(i){return 0===i.buttons||0===i.offsetX&&0===i.offsetY}function qy(i){const a=i.touches&&i.touches[0]||i.changedTouches&&i.changedTouches[0];return!(!a||-1!==a.identifier||null!=a.radiusX&&1!==a.radiusX||null!=a.radiusY&&1!==a.radiusY)}const I7=new be("cdk-input-modality-detector-options"),P7={ignoreKeys:[18,17,224,91,16]},Uf=Ou({passive:!0,capture:!0});let R7=(()=>{class i{get mostRecentModality(){return this._modality.value}constructor(e,o,d,h){this._platform=e,this._mostRecentTarget=null,this._modality=new Oi(null),this._lastTouchMs=0,this._onKeydown=_=>{var w,D;null!==(w=this._options)&&void 0!==w&&null!==(D=w.ignoreKeys)&&void 0!==D&&D.some(k=>k===_.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=dd(_))},this._onMousedown=_=>{Date.now()-this._lastTouchMs<650||(this._modality.next(Lk(_)?"keyboard":"mouse"),this._mostRecentTarget=dd(_))},this._onTouchstart=_=>{qy(_)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=dd(_))},this._options={...P7,...h},this.modalityDetected=this._modality.pipe(Ck(1)),this.modalityChanged=this.modalityDetected.pipe(Sk()),e.isBrowser&&o.runOutsideAngular(()=>{d.addEventListener("keydown",this._onKeydown,Uf),d.addEventListener("mousedown",this._onMousedown,Uf),d.addEventListener("touchstart",this._onTouchstart,Uf)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,Uf),document.removeEventListener("mousedown",this._onMousedown,Uf),document.removeEventListener("touchstart",this._onTouchstart,Uf))}}return i.\u0275fac=function(e){return new(e||i)(ae(Qn),ae(et),ae(ht),ae(I7,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const O7=new be("liveAnnouncerElement",{providedIn:"root",factory:function L7(){return null}}),F7=new be("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let N7=0,CC=(()=>{class i{constructor(e,o,d,h){this._ngZone=o,this._defaultOptions=h,this._document=d,this._liveElement=e||this._createLiveElement()}announce(e,...o){const d=this._defaultOptions;let h,_;return 1===o.length&&"number"==typeof o[0]?_=o[0]:[h,_]=o,this.clear(),clearTimeout(this._previousTimeout),h||(h=d&&d.politeness?d.politeness:"polite"),null==_&&d&&(_=d.duration),this._liveElement.setAttribute("aria-live",h),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(w=>this._currentResolve=w)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=e,"number"==typeof _&&(this._previousTimeout=setTimeout(()=>this.clear(),_)),this._currentResolve(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){var e,o;clearTimeout(this._previousTimeout),null===(e=this._liveElement)||void 0===e||e.remove(),this._liveElement=null,null===(o=this._currentResolve)||void 0===o||o.call(this),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const e="cdk-live-announcer-element",o=this._document.getElementsByClassName(e),d=this._document.createElement("div");for(let h=0;h .cdk-overlay-container [aria-modal="true"]');for(let d=0;d{class i{constructor(e,o,d,h,_){this._ngZone=e,this._platform=o,this._inputModalityDetector=d,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new He,this._rootNodeFocusAndBlurListener=w=>{for(let k=dd(w);k;k=k.parentElement)"focus"===w.type?this._onFocus(w,k):this._onBlur(w,k)},this._document=h,this._detectionMode=(null==_?void 0:_.detectionMode)||0}monitor(e,o=!1){const d=cd(e);if(!this._platform.isBrowser||1!==d.nodeType)return Ze(null);const h=function Dj(i){if(function Sj(){if(null==ck){const i=typeof document<"u"?document.head:null;ck=!(!i||!i.createShadowRoot&&!i.attachShadow)}return ck}()){const a=i.getRootNode?i.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&a instanceof ShadowRoot)return a}return null}(d)||this._getDocument(),_=this._elementInfo.get(d);if(_)return o&&(_.checkChildren=!0),_.subject;const w={checkChildren:o,subject:new He,rootNode:h};return this._elementInfo.set(d,w),this._registerGlobalListeners(w),w.subject}stopMonitoring(e){const o=cd(e),d=this._elementInfo.get(o);d&&(d.subject.complete(),this._setClasses(o),this._elementInfo.delete(o),this._removeGlobalListeners(d))}focusVia(e,o,d){const h=cd(e);h===this._getDocument().activeElement?this._getClosestElementsInfo(h).forEach(([w,D])=>this._originChanged(w,o,D)):(this._setOrigin(o),"function"==typeof h.focus&&h.focus(d))}ngOnDestroy(){this._elementInfo.forEach((e,o)=>this.stopMonitoring(o))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(e){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(e)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:e&&this._isLastInteractionFromInputLabel(e)?"mouse":"program"}_shouldBeAttributedToTouch(e){return 1===this._detectionMode||!(null==e||!e.contains(this._inputModalityDetector._mostRecentTarget))}_setClasses(e,o){e.classList.toggle("cdk-focused",!!o),e.classList.toggle("cdk-touch-focused","touch"===o),e.classList.toggle("cdk-keyboard-focused","keyboard"===o),e.classList.toggle("cdk-mouse-focused","mouse"===o),e.classList.toggle("cdk-program-focused","program"===o)}_setOrigin(e,o=!1){this._ngZone.runOutsideAngular(()=>{this._origin=e,this._originFromTouchInteraction="touch"===e&&o,0===this._detectionMode&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(e,o){const d=this._elementInfo.get(o),h=dd(e);!d||!d.checkChildren&&o!==h||this._originChanged(o,this._getFocusOrigin(h),d)}_onBlur(e,o){const d=this._elementInfo.get(o);!d||d.checkChildren&&e.relatedTarget instanceof Node&&o.contains(e.relatedTarget)||(this._setClasses(o),this._emitOrigin(d,null))}_emitOrigin(e,o){e.subject.observers.length&&this._ngZone.run(()=>e.subject.next(o))}_registerGlobalListeners(e){if(!this._platform.isBrowser)return;const o=e.rootNode,d=this._rootNodeFocusListenerCount.get(o)||0;d||this._ngZone.runOutsideAngular(()=>{o.addEventListener("focus",this._rootNodeFocusAndBlurListener,SC),o.addEventListener("blur",this._rootNodeFocusAndBlurListener,SC)}),this._rootNodeFocusListenerCount.set(o,d+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe(Et(this._stopInputModalityDetector)).subscribe(h=>{this._setOrigin(h,!0)}))}_removeGlobalListeners(e){const o=e.rootNode;if(this._rootNodeFocusListenerCount.has(o)){const d=this._rootNodeFocusListenerCount.get(o);d>1?this._rootNodeFocusListenerCount.set(o,d-1):(o.removeEventListener("focus",this._rootNodeFocusAndBlurListener,SC),o.removeEventListener("blur",this._rootNodeFocusAndBlurListener,SC),this._rootNodeFocusListenerCount.delete(o))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(e,o,d){this._setClasses(e,o),this._emitOrigin(d,o),this._lastFocusOrigin=o}_getClosestElementsInfo(e){const o=[];return this._elementInfo.forEach((d,h)=>{(h===e||d.checkChildren&&h.contains(e))&&o.push([h,d])}),o}_isLastInteractionFromInputLabel(e){const{_mostRecentTarget:o,mostRecentModality:d}=this._inputModalityDetector;if("mouse"!==d||!o||o===e||"INPUT"!==e.nodeName&&"TEXTAREA"!==e.nodeName||e.disabled)return!1;const h=e.labels;if(h)for(let _=0;_{class i{constructor(e,o){this._elementRef=e,this._focusMonitor=o,this._focusOrigin=null,this.cdkFocusChange=new we}get focusOrigin(){return this._focusOrigin}ngAfterViewInit(){const e=this._elementRef.nativeElement;this._monitorSubscription=this._focusMonitor.monitor(e,1===e.nodeType&&e.hasAttribute("cdkMonitorSubtreeFocus")).subscribe(o=>{this._focusOrigin=o,this.cdkFocusChange.emit(o)})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._monitorSubscription&&this._monitorSubscription.unsubscribe()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Go))},i.\u0275dir=me({type:i,selectors:[["","cdkMonitorElementFocus",""],["","cdkMonitorSubtreeFocus",""]],outputs:{cdkFocusChange:"cdkFocusChange"},exportAs:["cdkMonitorFocus"]}),i})();const zB="cdk-high-contrast-black-on-white",HB="cdk-high-contrast-white-on-black",DC="cdk-high-contrast-active";let GB=(()=>{class i{constructor(e,o){this._platform=e,this._document=o,this._breakpointSubscription=St(Mk).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return 0;const e=this._document.createElement("div");e.style.backgroundColor="rgb(1,2,3)",e.style.position="absolute",this._document.body.appendChild(e);const o=this._document.defaultView||window,d=o&&o.getComputedStyle?o.getComputedStyle(e):null,h=(d&&d.backgroundColor||"").replace(/ /g,"");switch(e.remove(),h){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return 2;case"rgb(255,255,255)":case"rgb(255,250,239)":return 1}return 0}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const e=this._document.body.classList;e.remove(DC,zB,HB),this._hasCheckedHighContrastMode=!0;const o=this.getHighContrastMode();1===o?e.add(DC,zB):2===o&&e.add(DC,HB)}}}return i.\u0275fac=function(e){return new(e||i)(ae(Qn),ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),Xy=(()=>{class i{constructor(e){e._applyBodyHighContrastModeCssClasses()}}return i.\u0275fac=function(e){return new(e||i)(ae(GB))},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[Dk]}),i})();function B7(i,a){}class Zy{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0,this.closeOnOverlayDetachments=!0}}let UB=(()=>{class i extends mC{constructor(e,o,d,h,_,w,D,k){super(),this._elementRef=e,this._focusTrapFactory=o,this._config=h,this._interactivityChecker=_,this._ngZone=w,this._overlayRef=D,this._focusMonitor=k,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this.attachDomPortal=P=>{this._portalOutlet.hasAttached();const B=this._portalOutlet.attachDomPortal(P);return this._contentAttached(),B},this._ariaLabelledBy=this._config.ariaLabelledBy||null,this._document=d}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(e){this._portalOutlet.hasAttached();const o=this._portalOutlet.attachComponentPortal(e);return this._contentAttached(),o}attachTemplatePortal(e){this._portalOutlet.hasAttached();const o=this._portalOutlet.attachTemplatePortal(e);return this._contentAttached(),o}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(e,o){this._interactivityChecker.isFocusable(e)||(e.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const d=()=>{e.removeEventListener("blur",d),e.removeEventListener("mousedown",d),e.removeAttribute("tabindex")};e.addEventListener("blur",d),e.addEventListener("mousedown",d)})),e.focus(o)}_focusByCssSelector(e,o){let d=this._elementRef.nativeElement.querySelector(e);d&&this._forceFocus(d,o)}_trapFocus(){const e=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||e.focus();break;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(o=>{o||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus)}}_restoreFocus(){const e=this._config.restoreFocus;let o=null;if("string"==typeof e?o=this._document.querySelector(e):"boolean"==typeof e?o=e?this._elementFocusedBeforeDialogWasOpened:null:e&&(o=e),this._config.restoreFocus&&o&&"function"==typeof o.focus){const d=Vy(),h=this._elementRef.nativeElement;(!d||d===this._document.body||d===h||h.contains(d))&&(this._focusMonitor?(this._focusMonitor.focusVia(o,this._closeInteractionType),this._closeInteractionType=null):o.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){const e=this._elementRef.nativeElement,o=Vy();return e===o||e.contains(o)}_initializeFocusTrap(){this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=Vy())}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Yy),F(ht,8),F(Zy),F(Wy),F(et),F(jy),F(Go))},i.\u0275cmp=_e({type:i,selectors:[["cdk-dialog-container"]],viewQuery:function(e,o){if(1&e&&ct(ll,7),2&e){let d;Pe(d=Ae())&&(o._portalOutlet=d.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(e,o){2&e&&Ve("id",o._config.id||null)("role",o._config.role)("aria-modal",o._config.ariaModal)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledBy)("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null)},features:[Se],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(e,o){1&e&&J(0,B7,0,0,"ng-template",0)},dependencies:[ll],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2}),i})();class Fk{constructor(a,e){this.overlayRef=a,this.config=e,this.closed=new He,this.disableClose=e.disableClose,this.backdropClick=a.backdropClick(),this.keydownEvents=a.keydownEvents(),this.outsidePointerEvents=a.outsidePointerEvents(),this.id=e.id,this.keydownEvents.subscribe(o=>{27===o.keyCode&&!this.disableClose&&!pr(o)&&(o.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})}),this._detachSubscription=a.detachments().subscribe(()=>{!1!==e.closeOnOverlayDetachments&&this.close()})}close(a,e){if(this.containerInstance){const o=this.closed;this.containerInstance._closeInteractionType=(null==e?void 0:e.focusOrigin)||"program",this._detachSubscription.unsubscribe(),this.overlayRef.dispose(),o.next(a),o.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(a="",e=""){return this.overlayRef.updateSize({width:a,height:e}),this}addPanelClass(a){return this.overlayRef.addPanelClass(a),this}removePanelClass(a){return this.overlayRef.removePanelClass(a),this}}const Nk=new be("DialogScrollStrategy"),V7=new be("DialogData"),md=new be("DefaultDialogConfig"),H7={provide:Nk,deps:[ea],useFactory:function z7(i){return()=>i.scrollStrategies.block()}};let G7=0,jB=(()=>{class i{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(e,o,d,h,_,w){this._overlay=e,this._injector=o,this._defaultOptions=d,this._parentDialog=h,this._overlayContainer=_,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new He,this._afterOpenedAtThisLevel=new He,this._ariaHiddenElements=new Map,this.afterAllClosed=Bm(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(wi(void 0))),this._scrollStrategy=w}open(e,o){(o={...this._defaultOptions||new Zy,...o}).id=o.id||"cdk-dialog-"+G7++,o.id&&this.getDialogById(o.id);const h=this._getOverlayConfig(o),_=this._overlay.create(h),w=new Fk(_,o),D=this._attachContainer(_,w,o);return w.containerInstance=D,this._attachDialogContent(e,w,D,o),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(w),w.closed.subscribe(()=>this._removeOpenDialog(w,!0)),this.afterOpened.next(w),w}closeAll(){Bk(this.openDialogs,e=>e.close())}getDialogById(e){return this.openDialogs.find(o=>o.id===e)}ngOnDestroy(){Bk(this._openDialogsAtThisLevel,e=>{!1===e.config.closeOnDestroy&&this._removeOpenDialog(e,!1)}),Bk(this._openDialogsAtThisLevel,e=>e.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(e){const o=new Hf({positionStrategy:e.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:e.scrollStrategy||this._scrollStrategy(),panelClass:e.panelClass,hasBackdrop:e.hasBackdrop,direction:e.direction,minWidth:e.minWidth,minHeight:e.minHeight,maxWidth:e.maxWidth,maxHeight:e.maxHeight,width:e.width,height:e.height,disposeOnNavigation:e.closeOnNavigation});return e.backdropClass&&(o.backdropClass=e.backdropClass),o}_attachContainer(e,o,d){var h;const _=d.injector||(null===(h=d.viewContainerRef)||void 0===h?void 0:h.injector),w=[{provide:Zy,useValue:d},{provide:Fk,useValue:o},{provide:jy,useValue:e}];let D;d.container?"function"==typeof d.container?D=d.container:(D=d.container.type,w.push(...d.container.providers(d))):D=UB;const k=new Fu(D,d.viewContainerRef,Qi.create({parent:_||this._injector,providers:w}),d.componentFactoryResolver);return e.attach(k).instance}_attachDialogContent(e,o,d,h){if(e instanceof ii){const _=this._createInjector(h,o,d,void 0);let w={$implicit:h.data,dialogRef:o};h.templateContext&&(w={...w,..."function"==typeof h.templateContext?h.templateContext():h.templateContext}),d.attachTemplatePortal(new Ps(e,null,w,_))}else{const _=this._createInjector(h,o,d,this._injector),w=d.attachComponentPortal(new Fu(e,h.viewContainerRef,_,h.componentFactoryResolver));o.componentInstance=w.instance}}_createInjector(e,o,d,h){var _;const w=e.injector||(null===(_=e.viewContainerRef)||void 0===_?void 0:_.injector),D=[{provide:V7,useValue:e.data},{provide:Fk,useValue:o}];return e.providers&&("function"==typeof e.providers?D.push(...e.providers(o,e,d)):D.push(...e.providers)),e.direction&&(!w||!w.get(Ci,null,{optional:!0}))&&D.push({provide:Ci,useValue:{value:e.direction,change:Ze()}}),Qi.create({parent:w||h,providers:D})}_removeOpenDialog(e,o){const d=this.openDialogs.indexOf(e);d>-1&&(this.openDialogs.splice(d,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((h,_)=>{h?_.setAttribute("aria-hidden",h):_.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),o&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){const e=this._overlayContainer.getContainerElement();if(e.parentElement){const o=e.parentElement.children;for(let d=o.length-1;d>-1;d--){const h=o[d];h!==e&&"SCRIPT"!==h.nodeName&&"STYLE"!==h.nodeName&&!h.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(h,h.getAttribute("aria-hidden")),h.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}}return i.\u0275fac=function(e){return new(e||i)(ae(ea),ae(Qi),ae(md,8),ae(i,12),ae(bC),ae(Nk))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();function Bk(i,a){let e=i.length;for(;e--;)a(i[e])}let U7=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[jB,H7],imports:[pd,Rs,Xy,Rs]}),i})();const j7=["text"];function $7(i,a){if(1&i&&pe(0,"mat-pseudo-checkbox",6),2&i){const e=X();z("state",e.selected?"checked":"unchecked")("disabled",e.disabled)}}function CQ(i,a){1&i&&pe(0,"mat-pseudo-checkbox",7),2&i&&z("disabled",X().disabled)}function WB(i,a){if(1&i&&(I(0,"span",8),Y(1),O()),2&i){const e=X();N(1),Ie("(",e.group.label,")")}}const YB=[[["mat-icon"]],"*"],qB=["mat-icon","*"];let XB=(()=>{class i{}return i.STANDARD_CURVE="cubic-bezier(0.4,0.0,0.2,1)",i.DECELERATION_CURVE="cubic-bezier(0.0,0.0,0.2,1)",i.ACCELERATION_CURVE="cubic-bezier(0.4,0.0,1,1)",i.SHARP_CURVE="cubic-bezier(0.4,0.0,0.6,1)",i})(),SQ=(()=>{class i{}return i.COMPLEX="375ms",i.ENTERING="225ms",i.EXITING="195ms",i})();const KB=new be("mat-sanity-checks",{providedIn:"root",factory:function ZB(){return!0}});let nn=(()=>{class i{constructor(e,o,d){this._sanityChecks=o,this._document=d,this._hasDoneGlobalChecks=!1,e._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(e){return!dk()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[e])}}return i.\u0275fac=function(e){return new(e||i)(ae(GB),ae(KB,8),ae(ht))},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[zy,zy]}),i})();function Uo(i){return class extends i{get disabled(){return this._disabled}set disabled(a){this._disabled=Ge(a)}constructor(...a){super(...a),this._disabled=!1}}}function Fs(i,a){return class extends i{get color(){return this._color}set color(e){const o=e||this.defaultColor;o!==this._color&&(this._color&&this._elementRef.nativeElement.classList.remove(`mat-${this._color}`),o&&this._elementRef.nativeElement.classList.add(`mat-${o}`),this._color=o)}constructor(...e){super(...e),this.defaultColor=a,this.color=a}}}function oc(i){return class extends i{get disableRipple(){return this._disableRipple}set disableRipple(a){this._disableRipple=Ge(a)}constructor(...a){super(...a),this._disableRipple=!1}}}function gd(i,a=0){return class extends i{get tabIndex(){return this.disabled?-1:this._tabIndex}set tabIndex(e){this._tabIndex=null!=e?Br(e):this.defaultTabIndex}constructor(...e){super(...e),this._tabIndex=a,this.defaultTabIndex=a}}}function vd(i){return class extends i{updateErrorState(){const a=this.errorState,h=(this.errorStateMatcher||this._defaultErrorStateMatcher).isErrorState(this.ngControl?this.ngControl.control:null,this._parentFormGroup||this._parentForm);h!==a&&(this.errorState=h,this.stateChanges.next())}constructor(...a){super(...a),this.errorState=!1}}}function QB(i){return class extends i{constructor(...a){super(...a),this._isInitialized=!1,this._pendingSubscribers=[],this.initialized=new Hn(e=>{this._isInitialized?this._notifySubscriber(e):this._pendingSubscribers.push(e)})}_markInitialized(){this._isInitialized=!0,this._pendingSubscribers.forEach(this._notifySubscriber),this._pendingSubscribers=null}_notifySubscriber(a){a.next(),a.complete()}}}const JB=new be("MAT_DATE_LOCALE",{providedIn:"root",factory:function W7(){return St(Oo)}});class gi{constructor(){this._localeChanges=new He,this.localeChanges=this._localeChanges}getValidDateOrNull(a){return this.isDateInstance(a)&&this.isValid(a)?a:null}deserialize(a){return null==a||this.isDateInstance(a)&&this.isValid(a)?a:this.invalid()}setLocale(a){this.locale=a,this._localeChanges.next()}compareDate(a,e){return this.getYear(a)-this.getYear(e)||this.getMonth(a)-this.getMonth(e)||this.getDate(a)-this.getDate(e)}sameDate(a,e){if(a&&e){let o=this.isValid(a),d=this.isValid(e);return o&&d?!this.compareDate(a,e):o==d}return a==e}clampDate(a,e,o){return e&&this.compareDate(a,e)<0?e:o&&this.compareDate(a,o)>0?o:a}}const jf=new be("mat-date-formats"),DQ=/^\d{4}-\d{2}-\d{2}(?:T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|(?:(?:\+|-)\d{2}:\d{2}))?)?$/;function Hk(i,a){const e=Array(i);for(let o=0;o{class i extends gi{constructor(e,o){super(),this.useUtcForDisplay=!1,super.setLocale(e)}getYear(e){return e.getFullYear()}getMonth(e){return e.getMonth()}getDate(e){return e.getDate()}getDayOfWeek(e){return e.getDay()}getMonthNames(e){const o=new Intl.DateTimeFormat(this.locale,{month:e,timeZone:"utc"});return Hk(12,d=>this._format(o,new Date(2017,d,1)))}getDateNames(){const e=new Intl.DateTimeFormat(this.locale,{day:"numeric",timeZone:"utc"});return Hk(31,o=>this._format(e,new Date(2017,0,o+1)))}getDayOfWeekNames(e){const o=new Intl.DateTimeFormat(this.locale,{weekday:e,timeZone:"utc"});return Hk(7,d=>this._format(o,new Date(2017,0,d+1)))}getYearName(e){const o=new Intl.DateTimeFormat(this.locale,{year:"numeric",timeZone:"utc"});return this._format(o,e)}getFirstDayOfWeek(){return 0}getNumDaysInMonth(e){return this.getDate(this._createDateWithOverflow(this.getYear(e),this.getMonth(e)+1,0))}clone(e){return new Date(e.getTime())}createDate(e,o,d){let h=this._createDateWithOverflow(e,o,d);return h.getMonth(),h}today(){return new Date}parse(e,o){return"number"==typeof e?new Date(e):e?new Date(Date.parse(e)):null}format(e,o){if(!this.isValid(e))throw Error("NativeDateAdapter: Cannot format invalid date.");const d=new Intl.DateTimeFormat(this.locale,{...o,timeZone:"utc"});return this._format(d,e)}addCalendarYears(e,o){return this.addCalendarMonths(e,12*o)}addCalendarMonths(e,o){let d=this._createDateWithOverflow(this.getYear(e),this.getMonth(e)+o,this.getDate(e));return this.getMonth(d)!=((this.getMonth(e)+o)%12+12)%12&&(d=this._createDateWithOverflow(this.getYear(d),this.getMonth(d),0)),d}addCalendarDays(e,o){return this._createDateWithOverflow(this.getYear(e),this.getMonth(e),this.getDate(e)+o)}toIso8601(e){return[e.getUTCFullYear(),this._2digit(e.getUTCMonth()+1),this._2digit(e.getUTCDate())].join("-")}deserialize(e){if("string"==typeof e){if(!e)return null;if(DQ.test(e)){let o=new Date(e);if(this.isValid(o))return o}}return super.deserialize(e)}isDateInstance(e){return e instanceof Date}isValid(e){return!isNaN(e.getTime())}invalid(){return new Date(NaN)}_createDateWithOverflow(e,o,d){const h=new Date;return h.setFullYear(e,o,d),h.setHours(0,0,0,0),h}_2digit(e){return("00"+e).slice(-2)}_format(e,o){const d=new Date;return d.setUTCFullYear(o.getFullYear(),o.getMonth(),o.getDate()),d.setUTCHours(o.getHours(),o.getMinutes(),o.getSeconds(),o.getMilliseconds()),e.format(d)}}return i.\u0275fac=function(e){return new(e||i)(ae(JB,8),ae(Qn))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const tV={parse:{dateInput:null},display:{dateInput:{year:"numeric",month:"numeric",day:"numeric"},monthYearLabel:{year:"numeric",month:"short"},dateA11yLabel:{year:"numeric",month:"long",day:"numeric"},monthYearA11yLabel:{year:"numeric",month:"long"}}};let Y7=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[{provide:gi,useClass:eV}]}),i})(),q7=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[{provide:jf,useValue:tV}],imports:[Y7]}),i})(),MC=(()=>{class i{isErrorState(e,o){return!!(e&&e.invalid&&(e.touched||o&&o.submitted))}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();class TC{constructor(a,e,o,d=!1){this._renderer=a,this.element=e,this.config=o,this._animationForciblyDisabledThroughCss=d,this.state=3}fadeOut(){this._renderer.fadeOutRipple(this)}}const sc=Ou({passive:!0,capture:!0});class Bu{constructor(){this._events=new Map,this._delegateEventHandler=a=>{const e=dd(a);var o;e&&(null===(o=this._events.get(a.type))||void 0===o||o.forEach((d,h)=>{(h===e||h.contains(e))&&d.forEach(_=>_.handleEvent(a))}))}}addHandler(a,e,o,d){const h=this._events.get(e);if(h){const _=h.get(o);_?_.add(d):h.set(o,new Set([d]))}else this._events.set(e,new Map([[o,new Set([d])]])),a.runOutsideAngular(()=>{document.addEventListener(e,this._delegateEventHandler,sc)})}removeHandler(a,e,o){const d=this._events.get(a);if(!d)return;const h=d.get(e);h&&(h.delete(o),0===h.size&&d.delete(e),0===d.size&&(this._events.delete(a),document.removeEventListener(a,this._delegateEventHandler,sc)))}}const AC={enterDuration:225,exitDuration:150},_d=Ou({passive:!0,capture:!0}),kC=["mousedown","touchstart"],EC=["mouseup","mouseleave","touchend","touchcancel"];class Jy{constructor(a,e,o,d){this._target=a,this._ngZone=e,this._platform=d,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,d.isBrowser&&(this._containerElement=cd(o))}fadeInRipple(a,e,o={}){const d=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),h={...AC,...o.animation};o.centered&&(a=d.left+d.width/2,e=d.top+d.height/2);const _=o.radius||function K7(i,a,e){const o=Math.max(Math.abs(i-e.left),Math.abs(i-e.right)),d=Math.max(Math.abs(a-e.top),Math.abs(a-e.bottom));return Math.sqrt(o*o+d*d)}(a,e,d),w=a-d.left,D=e-d.top,k=h.enterDuration,P=document.createElement("div");P.classList.add("mat-ripple-element"),P.style.left=w-_+"px",P.style.top=D-_+"px",P.style.height=2*_+"px",P.style.width=2*_+"px",null!=o.color&&(P.style.backgroundColor=o.color),P.style.transitionDuration=`${k}ms`,this._containerElement.appendChild(P);const B=window.getComputedStyle(P),Z=B.transitionDuration,te="none"===B.transitionProperty||"0s"===Z||"0s, 0s"===Z||0===d.width&&0===d.height,ie=new TC(this,P,o,te);P.style.transform="scale3d(1, 1, 1)",ie.state=0,o.persistent||(this._mostRecentTransientRipple=ie);let de=null;return!te&&(k||h.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const he=()=>this._finishRippleTransition(ie),Me=()=>this._destroyRipple(ie);P.addEventListener("transitionend",he),P.addEventListener("transitioncancel",Me),de={onTransitionEnd:he,onTransitionCancel:Me}}),this._activeRipples.set(ie,de),(te||!k)&&this._finishRippleTransition(ie),ie}fadeOutRipple(a){if(2===a.state||3===a.state)return;const e=a.element,o={...AC,...a.config.animation};e.style.transitionDuration=`${o.exitDuration}ms`,e.style.opacity="0",a.state=2,(a._animationForciblyDisabledThroughCss||!o.exitDuration)&&this._finishRippleTransition(a)}fadeOutAll(){this._getActiveRipples().forEach(a=>a.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(a=>{a.config.persistent||a.fadeOut()})}setupTriggerEvents(a){const e=cd(a);!this._platform.isBrowser||!e||e===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=e,kC.forEach(o=>{Jy._eventManager.addHandler(this._ngZone,o,e,this)}))}handleEvent(a){"mousedown"===a.type?this._onMousedown(a):"touchstart"===a.type?this._onTouchStart(a):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{EC.forEach(e=>{this._triggerElement.addEventListener(e,this,_d)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(a){0===a.state?this._startFadeOutTransition(a):2===a.state&&this._destroyRipple(a)}_startFadeOutTransition(a){const e=a===this._mostRecentTransientRipple,{persistent:o}=a.config;a.state=1,!o&&(!e||!this._isPointerDown)&&a.fadeOut()}_destroyRipple(a){var e;const o=null!==(e=this._activeRipples.get(a))&&void 0!==e?e:null;this._activeRipples.delete(a),this._activeRipples.size||(this._containerRect=null),a===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),a.state=3,null!==o&&(a.element.removeEventListener("transitionend",o.onTransitionEnd),a.element.removeEventListener("transitioncancel",o.onTransitionCancel)),a.element.remove()}_onMousedown(a){const e=Lk(a),o=this._lastTouchStartEvent&&Date.now(){!a.config.persistent&&(1===a.state||a.config.terminateOnPointerUp&&0===a.state)&&a.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const a=this._triggerElement;a&&(kC.forEach(e=>Jy._eventManager.removeHandler(e,a,this)),this._pointerUpEventsRegistered&&EC.forEach(e=>a.removeEventListener(e,this,_d)))}}Jy._eventManager=new Bu;const fo=new be("mat-ripple-global-options");let fa=(()=>{class i{get disabled(){return this._disabled}set disabled(e){e&&this.fadeOutAllNonPersistent(),this._disabled=e,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(e){this._trigger=e,this._setupTriggerEventsIfEnabled()}constructor(e,o,d,h,_){this._elementRef=e,this._animationMode=_,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=h||{},this._rippleRenderer=new Jy(this,o,e,d)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(e,o=0,d){return"number"==typeof e?this._rippleRenderer.fadeInRipple(e,o,{...this.rippleConfig,...d}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...e})}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(et),F(Qn),F(fo,8),F(Ei,8))},i.\u0275dir=me({type:i,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(e,o){2&e&&st("mat-ripple-unbounded",o.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"]}),i})(),lc=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,nn]}),i})(),Uk=(()=>{class i{constructor(e){this._animationMode=e,this.state="unchecked",this.disabled=!1,this.appearance="full"}}return i.\u0275fac=function(e){return new(e||i)(F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:12,hostBindings:function(e,o){2&e&&st("mat-pseudo-checkbox-indeterminate","indeterminate"===o.state)("mat-pseudo-checkbox-checked","checked"===o.state)("mat-pseudo-checkbox-disabled",o.disabled)("mat-pseudo-checkbox-minimal","minimal"===o.appearance)("mat-pseudo-checkbox-full","full"===o.appearance)("_mat-animation-noopable","NoopAnimations"===o._animationMode)},inputs:{state:"state",disabled:"disabled",appearance:"appearance"},decls:0,vars:0,template:function(e,o){},styles:['.mat-pseudo-checkbox{border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox-full{border:2px solid}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-checked::after{width:14px;height:6px;transform-origin:center;top:-4.2426406871px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-minimal.mat-pseudo-checkbox-indeterminate::after{top:8px;width:16px}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-checked::after{width:10px;height:4px;transform-origin:center;top:-2.8284271247px;left:0;bottom:0;right:0;margin:auto}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}'],encapsulation:2,changeDetection:0}),i})(),Q7=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn]}),i})();const jk=new be("MAT_OPTION_PARENT_COMPONENT"),IC=new be("MatOptgroup");let J7=0;class $k{constructor(a,e=!1){this.source=a,this.isUserInput=e}}let e$=(()=>{class i{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(e){this._disabled=Ge(e)}get disableRipple(){return!(!this._parent||!this._parent.disableRipple)}get hideSingleSelectionIndicator(){return!(!this._parent||!this._parent.hideSingleSelectionIndicator)}constructor(e,o,d,h){this._element=e,this._changeDetectorRef=o,this._parent=d,this.group=h,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id="mat-option-"+J7++,this.onSelectionChange=new we,this._stateChanges=new He}get active(){return this._active}get viewValue(){var e;return((null===(e=this._text)||void 0===e?void 0:e.nativeElement.textContent)||"").trim()}select(){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}deselect(){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}focus(e,o){const d=this._getHostElement();"function"==typeof d.focus&&d.focus(o)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!pr(e)&&(this._selectViaInteraction(),e.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const e=this.viewValue;e!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=e)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(e=!1){this.onSelectionChange.emit(new $k(this,e))}}return i.\u0275fac=function(e){Js()},i.\u0275dir=me({type:i,viewQuery:function(e,o){if(1&e&&ct(j7,7),2&e){let d;Pe(d=Ae())&&(o._text=d.first)}},inputs:{value:"value",id:"id",disabled:"disabled"},outputs:{onSelectionChange:"onSelectionChange"}}),i})(),$i=(()=>{class i extends e${constructor(e,o,d,h){super(e,o,d,h)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(jk,8),F(IC,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-option"]],hostAttrs:["role","option",1,"mat-mdc-option","mdc-list-item"],hostVars:12,hostBindings:function(e,o){1&e&&Q("click",function(){return o._selectViaInteraction()})("keydown",function(h){return o._handleKeydown(h)}),2&e&&(la("id",o.id),Ve("tabindex",o._getTabIndex())("aria-selected",o.selected)("aria-disabled",o.disabled.toString()),st("mdc-list-item--selected",o.selected)("mat-mdc-option-multiple",o.multiple)("mat-mdc-option-active",o.active)("mdc-list-item--disabled",o.disabled))},exportAs:["matOption"],features:[Se],ngContentSelectors:qB,decls:8,vars:5,consts:[["class","mat-mdc-option-pseudo-checkbox",3,"state","disabled",4,"ngIf"],[1,"mdc-list-item__primary-text"],["text",""],["class","mat-mdc-option-pseudo-checkbox","state","checked","appearance","minimal",3,"disabled",4,"ngIf"],["class","cdk-visually-hidden",4,"ngIf"],["mat-ripple","",1,"mat-mdc-option-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled"],[1,"mat-mdc-option-pseudo-checkbox",3,"state","disabled"],["state","checked","appearance","minimal",1,"mat-mdc-option-pseudo-checkbox",3,"disabled"],[1,"cdk-visually-hidden"]],template:function(e,o){1&e&&(On(YB),J(0,$7,1,2,"mat-pseudo-checkbox",0),ut(1),I(2,"span",1,2),ut(4,1),O(),J(5,CQ,1,1,"mat-pseudo-checkbox",3),J(6,WB,2,1,"span",4),pe(7,"div",5)),2&e&&(z("ngIf",o.multiple),N(5),z("ngIf",!o.multiple&&o.selected&&!o.hideSingleSelectionIndicator),N(1),z("ngIf",o.group&&o.group._inert),N(1),z("matRippleTrigger",o._getHostElement())("matRippleDisabled",o.disabled||o.disableRipple))},dependencies:[fa,en,Uk],styles:['.mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox-full{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-full{margin-right:0;margin-left:16px}.mat-mdc-option .mat-pseudo-checkbox-minimal{margin-left:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox-minimal{margin-right:16px;margin-left:0}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit;margin-right:auto}[dir=rtl] .mat-mdc-option .mdc-list-item__primary-text{margin-right:0;margin-left:auto}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),i})();function PC(i,a,e){if(e.length){let o=a.toArray(),d=e.toArray(),h=0;for(let _=0;_e+o?Math.max(0,i-o+a):e}let RC=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[lc,Ri,nn,Q7]}),i})();class rV{}class aV{}const Ns="*";function rr(i,a){return{type:7,name:i,definitions:a,options:{}}}function Ln(i,a=null){return{type:4,styles:a,timings:i}}function Yk(i,a=null){return{type:3,steps:i,options:a}}function oV(i,a=null){return{type:2,steps:i,options:a}}function dt(i){return{type:6,styles:i,offset:null}}function Fn(i,a,e){return{type:0,name:i,styles:a,options:e}}function dg(i){return{type:5,steps:i}}function An(i,a,e=null){return{type:1,expr:i,animation:a,options:e}}function OC(i=null){return{type:9,options:i}}function eb(i,a,e=null){return{type:11,selector:i,animation:a,options:e}}function lV(i){Promise.resolve().then(i)}class hg{constructor(a=0,e=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=a+e}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(a=>a()),this._onDoneFns=[])}onStart(a){this._originalOnStartFns.push(a),this._onStartFns.push(a)}onDone(a){this._originalOnDoneFns.push(a),this._onDoneFns.push(a)}onDestroy(a){this._onDestroyFns.push(a)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){lV(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(a=>a()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(a=>a()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(a){this._position=this.totalTime?a*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(a){const e="start"==a?this._onStartFns:this._onDoneFns;e.forEach(o=>o()),e.length=0}}class qk{constructor(a){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=a;let e=0,o=0,d=0;const h=this.players.length;0==h?lV(()=>this._onFinish()):this.players.forEach(_=>{_.onDone(()=>{++e==h&&this._onFinish()}),_.onDestroy(()=>{++o==h&&this._onDestroy()}),_.onStart(()=>{++d==h&&this._onStart()})}),this.totalTime=this.players.reduce((_,w)=>Math.max(_,w.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(a=>a()),this._onDoneFns=[])}init(){this.players.forEach(a=>a.init())}onStart(a){this._onStartFns.push(a)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(a=>a()),this._onStartFns=[])}onDone(a){this._onDoneFns.push(a)}onDestroy(a){this._onDestroyFns.push(a)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(a=>a.play())}pause(){this.players.forEach(a=>a.pause())}restart(){this.players.forEach(a=>a.restart())}finish(){this._onFinish(),this.players.forEach(a=>a.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(a=>a.destroy()),this._onDestroyFns.forEach(a=>a()),this._onDestroyFns=[])}reset(){this.players.forEach(a=>a.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(a){const e=a*this.totalTime;this.players.forEach(o=>{const d=o.totalTime?Math.min(1,e/o.totalTime):1;o.setPosition(d)})}getPosition(){const a=this.players.reduce((e,o)=>null===e||o.totalTime>e.totalTime?o:e,null);return null!=a?a.getPosition():0}beforeDestroy(){this.players.forEach(a=>{a.beforeDestroy&&a.beforeDestroy()})}triggerCallback(a){const e="start"==a?this._onStartFns:this._onDoneFns;e.forEach(o=>o()),e.length=0}}const LC="!";function Xk(i,a){}class tb{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}}const nb="mdc-dialog--open",FC="mdc-dialog--opening",Zk="mdc-dialog--closing";let Kk=(()=>{class i extends UB{constructor(e,o,d,h,_,w,D,k){super(e,o,d,h,_,w,D,k),this._animationStateChanged=new we}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(e){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:e})}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Yy),F(ht,8),F(tb),F(Wy),F(et),F(jy),F(Go))},i.\u0275cmp=_e({type:i,selectors:[["ng-component"]],features:[Se],decls:0,vars:0,template:function(e,o){},encapsulation:2}),i})();const Qk="--mat-dialog-transition-duration";function NC(i){return null==i?null:"number"==typeof i?i:i.endsWith("ms")?Br(i.substring(0,i.length-2)):i.endsWith("s")?1e3*Br(i.substring(0,i.length-1)):"0"===i?0:null}let dV=(()=>{class i extends Kk{constructor(e,o,d,h,_,w,D,k,P){var B,W;super(e,o,d,h,_,w,D,P),this._animationMode=k,this._animationsEnabled="NoopAnimations"!==this._animationMode,this._hostElement=this._elementRef.nativeElement,this._openAnimationDuration=this._animationsEnabled?null!==(B=NC(this._config.enterAnimationDuration))&&void 0!==B?B:150:0,this._closeAnimationDuration=this._animationsEnabled?null!==(W=NC(this._config.exitAnimationDuration))&&void 0!==W?W:75:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._openAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._closeAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._openAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(Qk,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(FC),this._hostElement.classList.add(nb),this._waitForAnimationToComplete(this._openAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(nb),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._closeAnimationDuration}),this._hostElement.classList.remove(nb),this._animationsEnabled?(this._hostElement.style.setProperty(Qk,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(Zk),this._waitForAnimationToComplete(this._closeAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_clearAnimationClasses(){this._hostElement.classList.remove(FC),this._hostElement.classList.remove(Zk)}_waitForAnimationToComplete(e,o){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(o,e)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Yy),F(ht,8),F(tb),F(Wy),F(et),F(jy),F(Ei,8),F(Go))},i.\u0275cmp=_e({type:i,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:8,hostBindings:function(e,o){2&e&&(la("id",o._config.id),Ve("aria-modal",o._config.ariaModal)("role",o._config.role)("aria-labelledby",o._config.ariaLabel?null:o._ariaLabelledBy)("aria-label",o._config.ariaLabel)("aria-describedby",o._config.ariaDescribedBy||null),st("_mat-animation-noopable",!o._animationsEnabled))},features:[Se],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1),J(2,Xk,0,0,"ng-template",2),O()())},dependencies:[ll],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 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-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, var(--mdc-shape-medium, 4px))}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title,.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__actions,.mat-mdc-dialog-container.mdc-dialog--scrollable.mdc-dialog-scroll-divider-footer .mdc-dialog__actions{border-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title{border-bottom-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, "Arial");line-height:var(--mdc-dialog-subhead-line-height, 14px);font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500);letter-spacing:var(--mdc-dialog-subhead-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, black)}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, "Arial");line-height:var(--mdc-dialog-supporting-text-line-height, 14px);font-size:var(--mdc-dialog-supporting-text-size, 14px);font-weight:var(--mdc-dialog-supporting-text-weight, 500);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, black)}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2}),i})();class Si{constructor(a,e,o){this._ref=a,this._containerInstance=o,this._afterOpened=new He,this._beforeClosed=new He,this._state=0,this.disableClose=e.disableClose,this.id=a.id,o._animationStateChanged.pipe(Kn(d=>"opened"===d.state),Tn(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),o._animationStateChanged.pipe(Kn(d=>"closed"===d.state),Tn(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),a.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),Wn(this.backdropClick(),this.keydownEvents().pipe(Kn(d=>27===d.keyCode&&!this.disableClose&&!pr(d)))).subscribe(d=>{this.disableClose||(d.preventDefault(),uV(this,"keydown"===d.type?"keyboard":"mouse"))})}close(a){this._result=a,this._containerInstance._animationStateChanged.pipe(Kn(e=>"closing"===e.state),Tn(1)).subscribe(e=>{this._beforeClosed.next(a),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),e.totalTime+100)}),this._state=1,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(a){let e=this._ref.config.positionStrategy;return a&&(a.left||a.right)?a.left?e.left(a.left):e.right(a.right):e.centerHorizontally(),a&&(a.top||a.bottom)?a.top?e.top(a.top):e.bottom(a.bottom):e.centerVertically(),this._ref.updatePosition(),this}updateSize(a="",e=""){return this._ref.updateSize(a,e),this}addPanelClass(a){return this._ref.addPanelClass(a),this}removePanelClass(a){return this._ref.removePanelClass(a),this}getState(){return this._state}_finishDialogClose(){this._state=2,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function uV(i,a,e){return i._closeInteractionType=a,i.close(e)}const Fi=new be("MatMdcDialogData"),n$=new be("mat-mdc-dialog-default-options"),Jk=new be("mat-mdc-dialog-scroll-strategy"),r$={provide:Jk,deps:[ea],useFactory:function i$(i){return()=>i.scrollStrategies.block()}};let yd=0,a$=(()=>{class i{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const e=this._parentDialog;return e?e._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(e,o,d,h,_,w,D,k,P,B){this._overlay=e,this._defaultOptions=d,this._parentDialog=h,this._dialogRefConstructor=D,this._dialogContainerType=k,this._dialogDataToken=P,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new He,this._afterOpenedAtThisLevel=new He,this._idPrefix="mat-dialog-",this.dialogConfigClass=tb,this.afterAllClosed=Bm(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe(wi(void 0))),this._scrollStrategy=w,this._dialog=o.get(jB)}open(e,o){let d;(o={...this._defaultOptions||new tb,...o}).id=o.id||`${this._idPrefix}${yd++}`,o.scrollStrategy=o.scrollStrategy||this._scrollStrategy();const h=this._dialog.open(e,{...o,positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,closeOnOverlayDetachments:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:o},{provide:Zy,useValue:o}]},templateContext:()=>({dialogRef:d}),providers:(_,w,D)=>{var k;return d=new this._dialogRefConstructor(_,o,D),d.updatePosition(null===(k=o)||void 0===k?void 0:k.position),[{provide:this._dialogContainerType,useValue:D},{provide:this._dialogDataToken,useValue:w.data},{provide:this._dialogRefConstructor,useValue:d}]}});return d.componentInstance=h.componentInstance,this.openDialogs.push(d),this.afterOpened.next(d),d.afterClosed().subscribe(()=>{const _=this.openDialogs.indexOf(d);_>-1&&(this.openDialogs.splice(_,1),this.openDialogs.length||this._getAfterAllClosed().next())}),d}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(e){return this.openDialogs.find(o=>o.id===e)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(e){let o=e.length;for(;o--;)e[o].close()}}return i.\u0275fac=function(e){Js()},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),ib=(()=>{class i extends a${constructor(e,o,d,h,_,w,D,k){super(e,o,h,w,D,_,Si,dV,Fi,k),this._idPrefix="mat-mdc-dialog-"}}return i.\u0275fac=function(e){return new(e||i)(ae(ea),ae(Qi),ae(I_,8),ae(n$,8),ae(Jk),ae(i,12),ae(bC),ae(Ei,8))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),o$=0,jo=(()=>{class i{constructor(e,o,d){this.dialogRef=e,this._elementRef=o,this._dialog=d,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=BC(this._elementRef,this._dialog.openDialogs))}ngOnChanges(e){const o=e._matDialogClose||e._matDialogCloseResult;o&&(this.dialogResult=o.currentValue)}_onButtonClick(e){uV(this.dialogRef,0===e.screenX&&0===e.screenY?"keyboard":"mouse",this.dialogResult)}}return i.\u0275fac=function(e){return new(e||i)(F(Si,8),F(Be),F(ib))},i.\u0275dir=me({type:i,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(e,o){1&e&&Q("click",function(h){return o._onButtonClick(h)}),2&e&&Ve("aria-label",o.ariaLabel||null)("type",o.type)},inputs:{ariaLabel:["aria-label","ariaLabel"],type:"type",dialogResult:["mat-dialog-close","dialogResult"],_matDialogClose:["matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[jn]}),i})(),ar=(()=>{class i{constructor(e,o,d){this._dialogRef=e,this._elementRef=o,this._dialog=d,this.id="mat-mdc-dialog-title-"+o$++}ngOnInit(){this._dialogRef||(this._dialogRef=BC(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{const e=this._dialogRef._containerInstance;e&&!e._ariaLabelledBy&&(e._ariaLabelledBy=this.id)})}}return i.\u0275fac=function(e){return new(e||i)(F(Si,8),F(Be),F(ib))},i.\u0275dir=me({type:i,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(e,o){2&e&&la("id",o.id)},inputs:{id:"id"},exportAs:["matDialogTitle"]}),i})(),Wi=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"]}),i})(),or=(()=>{class i{constructor(){this.align="start"}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:4,hostBindings:function(e,o){2&e&&st("mat-mdc-dialog-actions-align-center","center"===o.align)("mat-mdc-dialog-actions-align-end","end"===o.align)},inputs:{align:"align"}}),i})();function BC(i,a){let e=i.nativeElement.parentElement;for(;e&&!e.classList.contains("mat-mdc-dialog-container");)e=e.parentElement;return e?a.find(o=>o.id===e.id):null}let s$=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[ib,r$],imports:[U7,pd,Rs,nn,nn]}),i})();const c$=Qo(i=>function(e=null){i(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=e});function d$(i){throw new c$(i)}function mV(i,a){const e="object"==typeof a;return new Promise((o,d)=>{const h=new Zu({next:_=>{o(_),h.unsubscribe()},error:d,complete:()=>{e?o(a.defaultValue):d(new ol)}});i.subscribe(h)})}var gV;const vV=[django.gettext("Sunday"),django.gettext("Monday"),django.gettext("Tuesday"),django.gettext("Wednesday"),django.gettext("Thursday"),django.gettext("Friday"),django.gettext("Saturday")],_V=[django.gettext("January"),django.gettext("February"),django.gettext("March"),django.gettext("April"),django.gettext("May"),django.gettext("June"),django.gettext("July"),django.gettext("August"),django.gettext("September"),django.gettext("October"),django.gettext("November"),django.gettext("December")],fg=i=>{const a=[];return i.forEach(e=>{a.push(e.substring(0,3))}),a},pg=(i,a,e)=>(typeof a>"u"&&(a=new Date),bd(i,a,e)),bd=(i,a,e,o)=>{o=o||{},a=a||new Date;const d=e||m$;d.formats=d.formats||{};const h=a.getTime();return(o.utc||"number"==typeof o.timezone)&&(a=h$(a)),"number"==typeof o.timezone&&(a=new Date(a.getTime()+6e4*o.timezone)),i.replace(/%([-_0]?.)/g,(_,w)=>{let D,k,P,B,W,Z,te,ie;if(P=null,W=null,2===w.length){if(P=w[0],"-"===P)W="";else if("_"===P)W=" ";else{if("0"!==P)return _;W="0"}w=w[1]}switch(w){case"A":return d.days[a.getDay()];case"a":return d.shortDays[a.getDay()];case"B":return d.months[a.getMonth()];case"b":case"h":return d.shortMonths[a.getMonth()];case"C":return Ka(Math.floor(a.getFullYear()/100),W);case"D":return bd(d.formats.D||"%m/%d/%y",a,d);case"d":return Ka(a.getDate(),W);case"e":return a.getDate();case"F":return bd(d.formats.F||"%Y-%m-%d",a,d);case"H":return Ka(a.getHours(),W);case"I":return Ka(yV(a),W);case"j":return te=new Date(a.getFullYear(),0,1),D=Math.ceil((a.getTime()-te.getTime())/864e5),Ka(D,3);case"k":return Ka(a.getHours(),void 0===W?" ":W);case"L":return Ka(Math.floor(h%1e3),3);case"l":return Ka(yV(a),void 0===W?" ":W);case"M":return Ka(a.getMinutes(),W);case"m":return Ka(a.getMonth()+1,W);case"n":return"\n";case"o":return String(a.getDate())+tE(a.getDate());case"P":case"p":return"";case"R":return bd(d.formats.R||"%H:%M",a,d);case"r":return bd(d.formats.r||"%I:%M:%S %p",a,d);case"S":return Ka(a.getSeconds(),W);case"s":return Math.floor(h/1e3);case"T":return bd(d.formats.T||"%H:%M:%S",a,d);case"t":return"\t";case"U":return Ka(bV(a,"sunday"),W);case"u":return k=a.getDay(),0===k?7:k;case"v":return bd(d.formats.v||"%e-%b-%Y",a,d);case"W":return Ka(bV(a,"monday"),W);case"w":return a.getDay();case"Y":return a.getFullYear();case"y":return ie=String(a.getFullYear()),ie.slice(ie.length-2);case"Z":return o.utc?"GMT":(Z=a.toString().match(/\((\w+)\)/),Z&&Z[1]||"");case"z":return o.utc?"+0000":(B="number"==typeof o.timezone?o.timezone:-a.getTimezoneOffset(),(B<0?"-":"+")+Ka(Math.abs(B/60))+Ka(B%60));default:return w}})},h$=i=>{const a=6e4*(i.getTimezoneOffset()||0);return new Date(i.getTime()+a)},Ka=(i,a,e)=>{"number"==typeof a&&(e=a,a="0"),a=a??"0",e=e??2;let o=String(i);if(a)for(;o.length{let a;return a=i.getHours(),0===a?a=12:a>12&&(a-=12),a},tE=i=>{const a=i%10,e=i%100;if(e>=11&&e<=13||0===a||a>=4)return"th";switch(a){case 1:return"st";case 2:return"nd";case 3:return"rd"}return"th"},bV=(i,a)=>{a=a||"sunday";let e=i.getDay();"monday"===a&&(0===e?e=6:e--);const o=new Date(i.getFullYear(),0,1),d=Math.floor((i.getTime()-o.getTime())/864e5);return Math.floor((d+7-e)/7)},wV=i=>i.replace(/./g,a=>{switch(a){case"a":case"A":return"%p";case"b":case"d":case"m":case"w":case"W":case"y":case"Y":return"%"+a;case"c":return"%FT%TZ";case"D":return"%a";case"e":case"O":return"%z";case"f":return"%I:%M";case"F":return"%F";case"h":case"g":return"%I";case"H":case"G":return"%H";case"i":return"%M";case"I":case"L":case"S":case"t":case"U":return"";case"j":return"%d";case"l":return"%A";case"M":case"N":return"%b";case"n":return"%m";case"o":return"%W";case"P":return"%R %p";case"r":return"%a, %d %b %Y %T %z";case"s":return"%S";case"T":return"%Z";case"u":return"0";case"z":return"%j";case"Z":return"z";default:return a}}),po=(i,a,e=null)=>{let o;if("None"===a||null==a)a=7226578800,o=django.gettext("Never");else{let d=django.get_format(i);e&&(d+=e),o=pg(wV(d),new Date(1e3*a))}return o},rb=i=>"yes"===i||!0===i||"true"===i||1===i,m$={days:vV,shortDays:fg(vV),months:_V,shortMonths:fg(_V),AM:"AM",PM:"PM",am:"am",pm:"pm"},wd=(i,a)=>{let e;if(i instanceof Promise)e=i;else if(i instanceof dl)e=i;else{if(a)return mV(i.pipe(function pV(i,a){const{first:e,each:o,with:d=d$,scheduler:h=a??Ru,meta:_=null}=HN(i)?{first:i}:"number"==typeof i?{each:i}:i;if(null==e&&null==o)throw new TypeError("No timeout provided.");return Gn((w,D)=>{let k,P,B=null,W=0;const Z=te=>{P=Bi(D,h,()=>{try{k.unsubscribe(),$e(d({meta:_,lastValue:B,seen:W})).subscribe(D)}catch(ie){D.error(ie)}},te)};k=w.subscribe(si(D,te=>{null==P||P.unsubscribe(),W++,D.next(B=te),o>0&&Z(o)},void 0,void 0,()=>{null!=P&&P.closed||null==P||P.unsubscribe(),B=null})),!W&&Z(null!=e?"number"==typeof e?e:+e-h.now():o)})}(a)));e=mV(i)}return e};class dl{constructor(){this[gV]="Future",this.resolve=()=>{},this.reject=()=>{},this.promise=new Promise((a,e)=>{this.resolve=a,this.reject=e})}then(a,e){return this.promise.then(a,e)}catch(a){return this.promise.catch(a)}finally(a){return this.promise.finally(a)}}gV=Symbol.toStringTag;const nE=["mat-button",""],iE=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],rE=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],aE=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",xV=["mat-icon-button",""],VC=["*"],y$=[{selector:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{selector:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{selector:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{selector:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{selector:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{selector:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{selector:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],b$=Fs(Uo(oc(class{constructor(i){this._elementRef=i}})));let oE=(()=>{class i extends b${constructor(e,o,d,h){super(e),this._platform=o,this._ngZone=d,this._animationMode=h,this._focusMonitor=St(Go),this._isFab=!1;const _=e.nativeElement.classList;for(const w of y$)this._hasHostAttributes(w.selector)&&w.mdcClasses.forEach(D=>{_.add(D)})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}focus(e="program",o){e?this._focusMonitor.focusVia(this._elementRef.nativeElement,e,o):this._elementRef.nativeElement.focus(o)}_hasHostAttributes(...e){return e.some(o=>this._elementRef.nativeElement.hasAttribute(o))}_isRippleDisabled(){return this.disableRipple||this.disabled}}return i.\u0275fac=function(e){Js()},i.\u0275dir=me({type:i,viewQuery:function(e,o){if(1&e&&ct(fa,5),2&e){let d;Pe(d=Ae())&&(o.ripple=d.first)}},features:[Se]}),i})(),CV=(()=>{class i extends oE{constructor(e,o,d,h){super(e,o,d,h),this._haltDisabledEvents=_=>{this.disabled&&(_.preventDefault(),_.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}}return i.\u0275fac=function(e){Js()},i.\u0275dir=me({type:i,features:[Se]}),i})(),hi=(()=>{class i extends oE{constructor(e,o,d,h){super(e,o,d,h)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Qn),F(et),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:7,hostBindings:function(e,o){2&e&&(Ve("disabled",o.disabled||null),st("_mat-animation-noopable","NoopAnimations"===o._animationMode)("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[Se],attrs:nE,ngContentSelectors:rE,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,o){1&e&&(On(iE),pe(0,"span",0),ut(1),I(2,"span",1),ut(3,1),O(),ut(4,2),pe(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(st("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab),N(6),z("matRippleDisabled",o._isRippleDisabled())("matRippleTrigger",o._elementRef.nativeElement))},dependencies:[fa],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),i})(),HC=(()=>{class i extends CV{constructor(e,o,d,h){super(e,o,d,h)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Qn),F(et),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:9,hostBindings:function(e,o){2&e&&(Ve("disabled",o.disabled||null)("tabindex",o.disabled?-1:o.tabIndex)("aria-disabled",o.disabled.toString()),st("_mat-animation-noopable","NoopAnimations"===o._animationMode)("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[Se],attrs:nE,ngContentSelectors:rE,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,o){1&e&&(On(iE),pe(0,"span",0),ut(1),I(2,"span",1),ut(3,1),O(),ut(4,2),pe(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(st("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab),N(6),z("matRippleDisabled",o._isRippleDisabled())("matRippleTrigger",o._elementRef.nativeElement))},dependencies:[fa],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',aE],encapsulation:2,changeDetection:0}),i})(),xd=(()=>{class i extends oE{constructor(e,o,d,h){super(e,o,d,h)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Qn),F(et),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["button","mat-icon-button",""]],hostVars:7,hostBindings:function(e,o){2&e&&(Ve("disabled",o.disabled||null),st("_mat-animation-noopable","NoopAnimations"===o._animationMode)("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[Se],attrs:xV,ngContentSelectors:VC,decls:5,vars:3,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,o){1&e&&(On(),pe(0,"span",0),ut(1),pe(2,"span",1)(3,"span",2)(4,"span",3)),2&e&&(N(3),z("matRippleDisabled",o._isRippleDisabled())("matRippleCentered",!0)("matRippleTrigger",o._elementRef.nativeElement))},dependencies:[fa],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',aE],encapsulation:2,changeDetection:0}),i})(),GC=(()=>{class i extends CV{constructor(e,o,d,h){super(e,o,d,h)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Qn),F(et),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["a","mat-icon-button",""]],hostVars:9,hostBindings:function(e,o){2&e&&(Ve("disabled",o.disabled||null)("tabindex",o.disabled?-1:o.tabIndex)("aria-disabled",o.disabled.toString()),st("_mat-animation-noopable","NoopAnimations"===o._animationMode)("mat-unthemed",!o.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[Se],attrs:xV,ngContentSelectors:rE,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(e,o){1&e&&(On(iE),pe(0,"span",0),ut(1),I(2,"span",1),ut(3,1),O(),ut(4,2),pe(5,"span",2)(6,"span",3)(7,"span",4)),2&e&&(st("mdc-button__ripple",!o._isFab)("mdc-fab__ripple",o._isFab),N(6),z("matRippleDisabled",o._isRippleDisabled())("matRippleTrigger",o._elementRef.nativeElement))},dependencies:[fa],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',aE],encapsulation:2,changeDetection:0}),i})(),ab=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,lc,nn]}),i})(),Pn=(()=>{class i{constructor(e){this.el=e}ngOnInit(){this.el.nativeElement.innerHTML=django.gettext(this.el.nativeElement.innerHTML.trim().replaceAll("&","&"))}}return i.\u0275fac=function(e){return new(e||i)(F(Be))},i.\u0275dir=me({type:i,selectors:[["uds-translate"]]}),i})(),DV=(()=>{class i{constructor(e){this.sanitizer=e}transform(e,o){return e=(e=(e=e.replace(/<\s*script\s*/gi,"")).replace(/onclick|onmouseover|onmouseout|onmousemove|onmouseenter|onmouseleave|onmouseup|onmousedown|onkeyup|onkeydown|onkeypress|onkeydown|onkeypress|onkeyup|onchange|onfocus|onblur|onload|onunload|onabort|onerror|onresize|onscroll/gi,"")).replace(/javascript\s*\:/gi,""),this.sanitizer.bypassSecurityTrustHtml(e)}}return i.\u0275fac=function(e){return new(e||i)(F(X_,16))},i.\u0275pipe=kr({name:"safeHtml",type:i,pure:!0}),i})();function C$(i,a){if(1&i){const e=Ee();I(0,"button",4),Q("click",function(){return le(e),oe(X().resolveAndClose(!1))}),I(1,"uds-translate"),Y(2,"Close"),O(),Y(3),O()}if(2&i){const e=X();N(3),Sn(e.extra)}}function S$(i,a){if(1&i){const e=Ee();I(0,"button",5),Q("click",function(){return le(e),oe(X().resolveAndClose(!0))}),I(1,"uds-translate"),Y(2,"Yes"),O()()}2&i&&z("color",X().yesColor)}function MV(i,a){if(1&i){const e=Ee();I(0,"button",5),Q("click",function(){return le(e),oe(X().resolveAndClose(!1))}),I(1,"uds-translate"),Y(2,"No"),O()()}2&i&&z("color",X().noColor)}var Vu=(()=>{return(i=Vu||(Vu={}))[i.alert=0]="alert",i[i.question=1]="question",Vu;var i})();let TV=(()=>{class i{constructor(e,o){this.dialogRef=e,this.data=o,this.yesColor="primary",this.noColor="warn",this.extra="",this.subscription={},this.acceptance=new dl}resolveAndClose(e){this.acceptance.resolve(e),this.close()}close(){this.dialogRef.close()}closed(){null!==this.subscription&&this.subscription.unsubscribe()}setExtra(e){this.extra=" ("+Math.floor(e/1e3)+" "+django.gettext("seconds")+") "}initAlert(){var e=this;return Qe(function*(){const o=e.data.autoclose||0;o>0&&(e.dialogRef.afterClosed().subscribe(d=>{e.closed()}),e.setExtra(o),e.subscription=function fV(i=0,a=Ru){return i<0&&(i=0),Fy(i,i,a)}(1e3).subscribe(d=>{const h=o-1e3*(d+1);e.setExtra(h),h<=0&&e.close()}))})()}ngOnInit(){!0===this.data.warnOnYes&&(this.yesColor="warn",this.noColor="primary"),this.data.type===Vu.alert&&this.initAlert()}}return i.\u0275fac=function(e){return new(e||i)(F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-modal"]],decls:8,vars:9,consts:[["mat-dialog-title","",3,"innerHtml"],[3,"innerHTML"],["mat-raised-button","","mat-dialog-close","",3,"click",4,"ngIf"],["mat-raised-button","","mat-dialog-close","",3,"color","click",4,"ngIf"],["mat-raised-button","","mat-dialog-close","",3,"click"],["mat-raised-button","","mat-dialog-close","",3,"color","click"]],template:function(e,o){1&e&&(pe(0,"h4",0),uu(1,"safeHtml"),pe(2,"mat-dialog-content",1),uu(3,"safeHtml"),I(4,"mat-dialog-actions"),J(5,C$,4,1,"button",2),J(6,S$,3,1,"button",3),J(7,MV,3,1,"button",3),O()),2&e&&(z("innerHtml",Wc(1,5,o.data.title),Rr),N(2),z("innerHTML",Wc(3,7,o.data.body),Rr),N(3),z("ngIf",0===o.data.type),N(1),z("ngIf",1===o.data.type),N(1),z("ngIf",1===o.data.type))},dependencies:[en,hi,jo,ar,Wi,or,Pn,DV],styles:[".uds-modal-footer[_ngcontent-%COMP%]{display:flex;justify-content:left}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})();var $o=(()=>{return(i=$o||($o={})).TEXT="text",i.TEXT_AUTOCOMPLETE="text-autocomplete",i.TEXTBOX="textbox",i.NUMERIC="numeric",i.PASSWORD="password",i.HIDDEN="hidden",i.CHOICE="choice",i.MULTI_CHOICE="multichoice",i.EDITLIST="editlist",i.CHECKBOX="checkbox",i.IMAGECHOICE="imgchoice",i.DATE="date",i.DATETIME="datetime",i.TAGLIST="taglist",$o;var i})();class sE{static locateChoice(a,e){const o=e.gui.values;if(void 0===o)return{id:"",img:"",text:""};let d=o.find(h=>h.id===a);if(void 0===d)try{d=o[0]}catch{d={id:"",img:"",text:""}}return d}}function AV(...i){const a=Bg(i),{args:e,keys:o}=cA(i),d=new Hn(h=>{const{length:_}=e;if(!_)return void h.complete();const w=new Array(_);let D=_,k=_;for(let P=0;P<_;P++){let B=!1;$e(e[P]).subscribe(si(h,W=>{B||(B=!0,k--),w[P]=W},()=>D--,void 0,()=>{(!D||!B)&&(k||h.next(o?sF(o,w):w),h.complete())}))}});return a?d.pipe(dA(a)):d}let lE=(()=>{class i{constructor(e,o){this._renderer=e,this._elementRef=o,this.onChange=d=>{},this.onTouched=()=>{}}setProperty(e,o){this._renderer.setProperty(this._elementRef.nativeElement,e,o)}registerOnTouched(e){this.onTouched=e}registerOnChange(e){this.onChange=e}setDisabledState(e){this.setProperty("disabled",e)}}return i.\u0275fac=function(e){return new(e||i)(F(Oc),F(Be))},i.\u0275dir=me({type:i}),i})(),$f=(()=>{class i extends lE{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,features:[Se]}),i})();const pa=new be("NgValueAccessor"),EV={provide:pa,useExisting:bn(()=>sr),multi:!0},T$=new be("CompositionEventMode");let sr=(()=>{class i extends lE{constructor(e,o,d){super(e,o),this._compositionMode=d,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function M$(){const i=Ql()?Ql().getUserAgent():"";return/android (\d+)/.test(i.toLowerCase())}())}writeValue(e){this.setProperty("value",e??"")}_handleInput(e){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(e)}_compositionStart(){this._composing=!0}_compositionEnd(e){this._composing=!1,this._compositionMode&&this.onChange(e)}}return i.\u0275fac=function(e){return new(e||i)(F(Oc),F(Be),F(T$,8))},i.\u0275dir=me({type:i,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(e,o){1&e&&Q("input",function(h){return o._handleInput(h.target.value)})("blur",function(){return o.onTouched()})("compositionstart",function(){return o._compositionStart()})("compositionend",function(h){return o._compositionEnd(h.target.value)})},features:[Ue([EV]),Se]}),i})();const UC=!1;function cc(i){return null==i||("string"==typeof i||Array.isArray(i))&&0===i.length}function IV(i){return null!=i&&"number"==typeof i.length}const Vr=new be("NgValidators"),zu=new be("NgAsyncValidators"),A$=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class ob{static min(a){return function PV(i){return a=>{if(cc(a.value)||cc(i))return null;const e=parseFloat(a.value);return!isNaN(e)&&e{if(cc(a.value)||cc(i))return null;const e=parseFloat(a.value);return!isNaN(e)&&e>i?{max:{max:i,actual:a.value}}:null}}(a)}static required(a){return OV(a)}static requiredTrue(a){return jC(a)}static email(a){return function LV(i){return cc(i.value)||A$.test(i.value)?null:{email:!0}}(a)}static minLength(a){return function cE(i){return a=>cc(a.value)||!IV(a.value)?null:a.value.length{if(cc(o.value))return null;const d=o.value;return a.test(d)?null:{pattern:{requiredPattern:e,actualValue:d}}}}(a)}static nullValidator(a){return null}static compose(a){return HV(a)}static composeAsync(a){return Wo(a)}}function OV(i){return cc(i.value)?{required:!0}:null}function jC(i){return!0===i.value?null:{required:!0}}function FV(i){return a=>IV(a.value)&&a.value.length>i?{maxlength:{requiredLength:i,actualLength:a.value.length}}:null}function $C(i){return null}function dE(i){return null!=i}function BV(i){const a=im(i)?Ti(i):i;if(UC&&!zc(a)){let e="Expected async validator to return Promise or Observable.";throw"object"==typeof i&&(e+=" Are you using a synchronous validator where an async validator is expected?"),new Ce(-1101,e)}return a}function uE(i){let a={};return i.forEach(e=>{a=null!=e?{...a,...e}:a}),0===Object.keys(a).length?null:a}function VV(i,a){return a.map(e=>e(i))}function zV(i){return i.map(a=>function WC(i){return!i.validate}(a)?a:e=>a.validate(e))}function HV(i){if(!i)return null;const a=i.filter(dE);return 0==a.length?null:function(e){return uE(VV(e,a))}}function YC(i){return null!=i?HV(zV(i)):null}function Wo(i){if(!i)return null;const a=i.filter(dE);return 0==a.length?null:function(e){return AV(VV(e,a).map(BV)).pipe(vt(uE))}}function hE(i){return null!=i?Wo(zV(i)):null}function qC(i,a){return null===i?[a]:Array.isArray(i)?[...i,a]:[i,a]}function fE(i){return i._rawValidators}function sb(i){return i._rawAsyncValidators}function XC(i){return i?Array.isArray(i)?i:[i]:[]}function ZC(i,a){return Array.isArray(i)?i.includes(a):i===a}function GV(i,a){const e=XC(a);return XC(i).forEach(d=>{ZC(e,d)||e.push(d)}),e}function UV(i,a){return XC(a).filter(e=>!ZC(i,e))}class pE{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(a){this._rawValidators=a||[],this._composedValidatorFn=YC(this._rawValidators)}_setAsyncValidators(a){this._rawAsyncValidators=a||[],this._composedAsyncValidatorFn=hE(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(a){this._onDestroyCallbacks.push(a)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(a=>a()),this._onDestroyCallbacks=[]}reset(a){this.control&&this.control.reset(a)}hasError(a,e){return!!this.control&&this.control.hasError(a,e)}getError(a,e){return this.control?this.control.getError(a,e):null}}class Qa extends pE{get formDirective(){return null}get path(){return null}}class ul extends pE{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class Cd{constructor(a){this._cd=a}get isTouched(){var a,e;return!(null===(a=this._cd)||void 0===a||null===(e=a.control)||void 0===e||!e.touched)}get isUntouched(){var a,e;return!(null===(a=this._cd)||void 0===a||null===(e=a.control)||void 0===e||!e.untouched)}get isPristine(){var a,e;return!(null===(a=this._cd)||void 0===a||null===(e=a.control)||void 0===e||!e.pristine)}get isDirty(){var a,e;return!(null===(a=this._cd)||void 0===a||null===(e=a.control)||void 0===e||!e.dirty)}get isValid(){var a,e;return!(null===(a=this._cd)||void 0===a||null===(e=a.control)||void 0===e||!e.valid)}get isInvalid(){var a,e;return!(null===(a=this._cd)||void 0===a||null===(e=a.control)||void 0===e||!e.invalid)}get isPending(){var a,e;return!(null===(a=this._cd)||void 0===a||null===(e=a.control)||void 0===e||!e.pending)}get isSubmitted(){var a;return!(null===(a=this._cd)||void 0===a||!a.submitted)}}let Jn=(()=>{class i extends Cd{constructor(e){super(e)}}return i.\u0275fac=function(e){return new(e||i)(F(ul,2))},i.\u0275dir=me({type:i,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(e,o){2&e&&st("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)},features:[Se]}),i})(),KC=(()=>{class i extends Cd{constructor(e){super(e)}}return i.\u0275fac=function(e){return new(e||i)(F(Qa,10))},i.\u0275dir=me({type:i,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(e,o){2&e&&st("ng-untouched",o.isUntouched)("ng-touched",o.isTouched)("ng-pristine",o.isPristine)("ng-dirty",o.isDirty)("ng-valid",o.isValid)("ng-invalid",o.isInvalid)("ng-pending",o.isPending)("ng-submitted",o.isSubmitted)},features:[Se]}),i})();function WV(i,a){return i?`with name: '${a}'`:`at index: ${a}`}const mE=!1,mg="VALID",gg="INVALID",vg="PENDING",Ba="DISABLED";function JC(i){return(t1(i)?i.validators:i)||null}function e1(i,a){return(t1(a)?a.asyncValidators:i)||null}function t1(i){return null!=i&&!Array.isArray(i)&&"object"==typeof i}class qV{constructor(a,e){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(a),this._assignAsyncValidators(e)}get validator(){return this._composedValidatorFn}set validator(a){this._rawValidators=this._composedValidatorFn=a}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(a){this._rawAsyncValidators=this._composedAsyncValidatorFn=a}get parent(){return this._parent}get valid(){return this.status===mg}get invalid(){return this.status===gg}get pending(){return this.status==vg}get disabled(){return this.status===Ba}get enabled(){return this.status!==Ba}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(a){this._assignValidators(a)}setAsyncValidators(a){this._assignAsyncValidators(a)}addValidators(a){this.setValidators(GV(a,this._rawValidators))}addAsyncValidators(a){this.setAsyncValidators(GV(a,this._rawAsyncValidators))}removeValidators(a){this.setValidators(UV(a,this._rawValidators))}removeAsyncValidators(a){this.setAsyncValidators(UV(a,this._rawAsyncValidators))}hasValidator(a){return ZC(this._rawValidators,a)}hasAsyncValidator(a){return ZC(this._rawAsyncValidators,a)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(a={}){this.touched=!0,this._parent&&!a.onlySelf&&this._parent.markAsTouched(a)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(a=>a.markAllAsTouched())}markAsUntouched(a={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(e=>{e.markAsUntouched({onlySelf:!0})}),this._parent&&!a.onlySelf&&this._parent._updateTouched(a)}markAsDirty(a={}){this.pristine=!1,this._parent&&!a.onlySelf&&this._parent.markAsDirty(a)}markAsPristine(a={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(e=>{e.markAsPristine({onlySelf:!0})}),this._parent&&!a.onlySelf&&this._parent._updatePristine(a)}markAsPending(a={}){this.status=vg,!1!==a.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!a.onlySelf&&this._parent.markAsPending(a)}disable(a={}){const e=this._parentMarkedDirty(a.onlySelf);this.status=Ba,this.errors=null,this._forEachChild(o=>{o.disable({...a,onlySelf:!0})}),this._updateValue(),!1!==a.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...a,skipPristineCheck:e}),this._onDisabledChange.forEach(o=>o(!0))}enable(a={}){const e=this._parentMarkedDirty(a.onlySelf);this.status=mg,this._forEachChild(o=>{o.enable({...a,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:a.emitEvent}),this._updateAncestors({...a,skipPristineCheck:e}),this._onDisabledChange.forEach(o=>o(!1))}_updateAncestors(a){this._parent&&!a.onlySelf&&(this._parent.updateValueAndValidity(a),a.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(a){this._parent=a}getRawValue(){return this.value}updateValueAndValidity(a={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===mg||this.status===vg)&&this._runAsyncValidator(a.emitEvent)),!1!==a.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!a.onlySelf&&this._parent.updateValueAndValidity(a)}_updateTreeValidity(a={emitEvent:!0}){this._forEachChild(e=>e._updateTreeValidity(a)),this.updateValueAndValidity({onlySelf:!0,emitEvent:a.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?Ba:mg}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(a){if(this.asyncValidator){this.status=vg,this._hasOwnPendingAsyncValidator=!0;const e=BV(this.asyncValidator(this));this._asyncValidationSubscription=e.subscribe(o=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(o,{emitEvent:a})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(a,e={}){this.errors=a,this._updateControlsErrors(!1!==e.emitEvent)}get(a){let e=a;return null==e||(Array.isArray(e)||(e=e.split(".")),0===e.length)?null:e.reduce((o,d)=>o&&o._find(d),this)}getError(a,e){const o=e?this.get(e):this;return o&&o.errors?o.errors[a]:null}hasError(a,e){return!!this.getError(a,e)}get root(){let a=this;for(;a._parent;)a=a._parent;return a}_updateControlsErrors(a){this.status=this._calculateStatus(),a&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(a)}_initObservables(){this.valueChanges=new we,this.statusChanges=new we}_calculateStatus(){return this._allControlsDisabled()?Ba:this.errors?gg:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(vg)?vg:this._anyControlsHaveStatus(gg)?gg:mg}_anyControlsHaveStatus(a){return this._anyControls(e=>e.status===a)}_anyControlsDirty(){return this._anyControls(a=>a.dirty)}_anyControlsTouched(){return this._anyControls(a=>a.touched)}_updatePristine(a={}){this.pristine=!this._anyControlsDirty(),this._parent&&!a.onlySelf&&this._parent._updatePristine(a)}_updateTouched(a={}){this.touched=this._anyControlsTouched(),this._parent&&!a.onlySelf&&this._parent._updateTouched(a)}_registerOnCollectionChange(a){this._onCollectionChange=a}_setUpdateStrategy(a){t1(a)&&null!=a.updateOn&&(this._updateOn=a.updateOn)}_parentMarkedDirty(a){return!a&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(a){return null}_assignValidators(a){this._rawValidators=Array.isArray(a)?a.slice():a,this._composedValidatorFn=function _g(i){return Array.isArray(i)?YC(i):i||null}(this._rawValidators)}_assignAsyncValidators(a){this._rawAsyncValidators=Array.isArray(a)?a.slice():a,this._composedAsyncValidatorFn=function L$(i){return Array.isArray(i)?hE(i):i||null}(this._rawAsyncValidators)}}class vE extends qV{constructor(a,e,o){super(JC(e),e1(o,e)),this.controls=a,this._initObservables(),this._setUpdateStrategy(e),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(a,e){return this.controls[a]?this.controls[a]:(this.controls[a]=e,e.setParent(this),e._registerOnCollectionChange(this._onCollectionChange),e)}addControl(a,e,o={}){this.registerControl(a,e),this.updateValueAndValidity({emitEvent:o.emitEvent}),this._onCollectionChange()}removeControl(a,e={}){this.controls[a]&&this.controls[a]._registerOnCollectionChange(()=>{}),delete this.controls[a],this.updateValueAndValidity({emitEvent:e.emitEvent}),this._onCollectionChange()}setControl(a,e,o={}){this.controls[a]&&this.controls[a]._registerOnCollectionChange(()=>{}),delete this.controls[a],e&&this.registerControl(a,e),this.updateValueAndValidity({emitEvent:o.emitEvent}),this._onCollectionChange()}contains(a){return this.controls.hasOwnProperty(a)&&this.controls[a].enabled}setValue(a,e={}){(function gE(i,a,e){i._forEachChild((o,d)=>{if(void 0===e[d])throw new Ce(1002,mE?function O$(i,a){return`Must supply a value for form control ${WV(i,a)}`}(a,d):"")})})(this,!0,a),Object.keys(a).forEach(o=>{(function YV(i,a,e){const o=i.controls;if(!(a?Object.keys(o):o).length)throw new Ce(1e3,mE?function P$(i){return`\n There are no form controls registered with this ${i?"group":"array"} yet. If you're using ngModel,\n you may want to check next tick (e.g. use setTimeout).\n `}(a):"");if(!o[e])throw new Ce(1001,mE?function R$(i,a){return`Cannot find form control ${WV(i,a)}`}(a,e):"")})(this,!0,o),this.controls[o].setValue(a[o],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e)}patchValue(a,e={}){null!=a&&(Object.keys(a).forEach(o=>{const d=this.controls[o];d&&d.patchValue(a[o],{onlySelf:!0,emitEvent:e.emitEvent})}),this.updateValueAndValidity(e))}reset(a={},e={}){this._forEachChild((o,d)=>{o.reset(a[d],{onlySelf:!0,emitEvent:e.emitEvent})}),this._updatePristine(e),this._updateTouched(e),this.updateValueAndValidity(e)}getRawValue(){return this._reduceChildren({},(a,e,o)=>(a[o]=e.getRawValue(),a))}_syncPendingControls(){let a=this._reduceChildren(!1,(e,o)=>!!o._syncPendingControls()||e);return a&&this.updateValueAndValidity({onlySelf:!0}),a}_forEachChild(a){Object.keys(this.controls).forEach(e=>{const o=this.controls[e];o&&a(o,e)})}_setUpControls(){this._forEachChild(a=>{a.setParent(this),a._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(a){for(const[e,o]of Object.entries(this.controls))if(this.contains(e)&&a(o))return!0;return!1}_reduceValue(){return this._reduceChildren({},(e,o,d)=>((o.enabled||this.disabled)&&(e[d]=o.value),e))}_reduceChildren(a,e){let o=a;return this._forEachChild((d,h)=>{o=e(o,d,h)}),o}_allControlsDisabled(){for(const a of Object.keys(this.controls))if(this.controls[a].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(a){return this.controls.hasOwnProperty(a)?this.controls[a]:null}}const yg=new be("CallSetDisabledState",{providedIn:"root",factory:()=>n1}),n1="always";function db(i,a,e=n1){var o,d;Hu(i,a),a.valueAccessor.writeValue(i.value),(i.disabled||"always"===e)&&(null===(o=(d=a.valueAccessor).setDisabledState)||void 0===o||o.call(d,i.disabled)),function B$(i,a){a.valueAccessor.registerOnChange(e=>{i._pendingValue=e,i._pendingChange=!0,i._pendingDirty=!0,"change"===i.updateOn&&XV(i,a)})}(i,a),function l1(i,a){const e=(o,d)=>{a.valueAccessor.writeValue(o),d&&a.viewToModelUpdate(o)};i.registerOnChange(e),a._registerOnDestroy(()=>{i._unregisterOnChange(e)})}(i,a),function V$(i,a){a.valueAccessor.registerOnTouched(()=>{i._pendingTouched=!0,"blur"===i.updateOn&&i._pendingChange&&XV(i,a),"submit"!==i.updateOn&&i.markAsTouched()})}(i,a),function o1(i,a){if(a.valueAccessor.setDisabledState){const e=o=>{a.valueAccessor.setDisabledState(o)};i.registerOnDisabledChange(e),a._registerOnDestroy(()=>{i._unregisterOnDisabledChange(e)})}}(i,a)}function ub(i,a,e=!0){const o=()=>{};a.valueAccessor&&(a.valueAccessor.registerOnChange(o),a.valueAccessor.registerOnTouched(o)),s1(i,a),i&&(a._invokeOnDestroyCallbacks(),i._registerOnCollectionChange(()=>{}))}function a1(i,a){i.forEach(e=>{e.registerOnValidatorChange&&e.registerOnValidatorChange(a)})}function Hu(i,a){const e=fE(i);null!==a.validator?i.setValidators(qC(e,a.validator)):"function"==typeof e&&i.setValidators([e]);const o=sb(i);null!==a.asyncValidator?i.setAsyncValidators(qC(o,a.asyncValidator)):"function"==typeof o&&i.setAsyncValidators([o]);const d=()=>i.updateValueAndValidity();a1(a._rawValidators,d),a1(a._rawAsyncValidators,d)}function s1(i,a){let e=!1;if(null!==i){if(null!==a.validator){const d=fE(i);if(Array.isArray(d)&&d.length>0){const h=d.filter(_=>_!==a.validator);h.length!==d.length&&(e=!0,i.setValidators(h))}}if(null!==a.asyncValidator){const d=sb(i);if(Array.isArray(d)&&d.length>0){const h=d.filter(_=>_!==a.asyncValidator);h.length!==d.length&&(e=!0,i.setAsyncValidators(h))}}}const o=()=>{};return a1(a._rawValidators,o),a1(a._rawAsyncValidators,o),e}function XV(i,a){i._pendingDirty&&i.markAsDirty(),i.setValue(i._pendingValue,{emitModelToViewChange:!1}),a.viewToModelUpdate(i._pendingValue),i._pendingChange=!1}function ZV(i,a){Hu(i,a)}function bE(i,a){if(!i.hasOwnProperty("model"))return!1;const e=i.model;return!!e.isFirstChange()||!Object.is(a,e.currentValue)}function wE(i,a){i._syncPendingControls(),a.forEach(e=>{const o=e.control;"submit"===o.updateOn&&o._pendingChange&&(e.viewToModelUpdate(o._pendingValue),o._pendingChange=!1)})}function xE(i,a){if(!a)return null;let e,o,d;return Array.isArray(a),a.forEach(h=>{h.constructor===sr?e=h:function KV(i){return Object.getPrototypeOf(i.constructor)===$f}(h)?o=h:d=h}),d||o||e||null}const G$={provide:Qa,useExisting:bn(()=>Gu)},Yf=(()=>Promise.resolve())();let Gu=(()=>{class i extends Qa{constructor(e,o,d){super(),this.callSetDisabledState=d,this.submitted=!1,this._directives=new Set,this.ngSubmit=new we,this.form=new vE({},YC(e),hE(o))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(e){Yf.then(()=>{const o=this._findContainer(e.path);e.control=o.registerControl(e.name,e.control),db(e.control,e,this.callSetDisabledState),e.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(e)})}getControl(e){return this.form.get(e.path)}removeControl(e){Yf.then(()=>{const o=this._findContainer(e.path);o&&o.removeControl(e.name),this._directives.delete(e)})}addFormGroup(e){Yf.then(()=>{const o=this._findContainer(e.path),d=new vE({});ZV(d,e),o.registerControl(e.name,d),d.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(e){Yf.then(()=>{const o=this._findContainer(e.path);o&&o.removeControl(e.name)})}getFormGroup(e){return this.form.get(e.path)}updateModel(e,o){Yf.then(()=>{this.form.get(e.path).setValue(o)})}setValue(e){this.control.setValue(e)}onSubmit(e){var o;return this.submitted=!0,wE(this.form,this._directives),this.ngSubmit.emit(e),"dialog"===(null==e||null===(o=e.target)||void 0===o?void 0:o.method)}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(e){return e.pop(),e.length?this.form.get(e):this.form}}return i.\u0275fac=function(e){return new(e||i)(F(Vr,10),F(zu,10),F(yg,8))},i.\u0275dir=me({type:i,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(e,o){1&e&&Q("submit",function(h){return o.onSubmit(h)})("reset",function(){return o.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Ue([G$]),Se]}),i})();function QV(i,a){const e=i.indexOf(a);e>-1&&i.splice(e,1)}function JV(i){return"object"==typeof i&&null!==i&&2===Object.keys(i).length&&"value"in i&&"disabled"in i}const CE=class extends qV{constructor(a=null,e,o){super(JC(e),e1(o,e)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(a),this._setUpdateStrategy(e),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),t1(e)&&(e.nonNullable||e.initialValueIsDefault)&&(this.defaultValue=JV(a)?a.value:a)}setValue(a,e={}){this.value=this._pendingValue=a,this._onChange.length&&!1!==e.emitModelToViewChange&&this._onChange.forEach(o=>o(this.value,!1!==e.emitViewToModelChange)),this.updateValueAndValidity(e)}patchValue(a,e={}){this.setValue(a,e)}reset(a=this.defaultValue,e={}){this._applyFormState(a),this.markAsPristine(e),this.markAsUntouched(e),this.setValue(this.value,e),this._pendingChange=!1}_updateValue(){}_anyControls(a){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(a){this._onChange.push(a)}_unregisterOnChange(a){QV(this._onChange,a)}registerOnDisabledChange(a){this._onDisabledChange.push(a)}_unregisterOnDisabledChange(a){QV(this._onDisabledChange,a)}_forEachChild(a){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(a){JV(a)?(this.value=this._pendingValue=a.value,a.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=a}},W$={provide:ul,useExisting:bn(()=>zn)},DE=(()=>Promise.resolve())();let zn=(()=>{class i extends ul{constructor(e,o,d,h,_,w){super(),this._changeDetectorRef=_,this.callSetDisabledState=w,this.control=new CE,this._registered=!1,this.update=new we,this._parent=e,this._setValidators(o),this._setAsyncValidators(d),this.valueAccessor=xE(0,h)}ngOnChanges(e){if(this._checkForErrors(),!this._registered||"name"in e){if(this._registered&&(this._checkName(),this.formDirective)){const o=e.name.previousValue;this.formDirective.removeControl({name:o,path:this._getPath(o)})}this._setUpControl()}"isDisabled"in e&&this._updateDisabled(e),bE(e,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){db(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(e){DE.then(()=>{var o;this.control.setValue(e,{emitViewToModelChange:!1}),null===(o=this._changeDetectorRef)||void 0===o||o.markForCheck()})}_updateDisabled(e){const o=e.isDisabled.currentValue,d=0!==o&&Tm(o);DE.then(()=>{var h;d&&!this.control.disabled?this.control.disable():!d&&this.control.disabled&&this.control.enable(),null===(h=this._changeDetectorRef)||void 0===h||h.markForCheck()})}_getPath(e){return this._parent?function r1(i,a){return[...a.path,i]}(e,this._parent):[e]}}return i.\u0275fac=function(e){return new(e||i)(F(Qa,9),F(Vr,10),F(zu,10),F(pa,10),F(Jt,8),F(yg,8))},i.\u0275dir=me({type:i,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[Ue([W$]),Se,jn]}),i})(),hb=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]}),i})();const Y$={provide:pa,useExisting:bn(()=>qf),multi:!0};let qf=(()=>{class i extends $f{writeValue(e){this.setProperty("value",e??"")}registerOnChange(e){this.onChange=o=>{e(""==o?null:parseFloat(o))}}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["input","type","number","formControlName",""],["input","type","number","formControl",""],["input","type","number","ngModel",""]],hostBindings:function(e,o){1&e&&Q("input",function(h){return o.onChange(h.target.value)})("blur",function(){return o.onTouched()})},features:[Ue([Y$]),Se]}),i})(),c1=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();const ME=new be("NgModelWithFormControlWarning"),K$={provide:ul,useExisting:bn(()=>d1)};let d1=(()=>{class i extends ul{set isDisabled(e){}constructor(e,o,d,h,_){super(),this._ngModelWarningConfig=h,this.callSetDisabledState=_,this.update=new we,this._ngModelWarningSent=!1,this._setValidators(e),this._setAsyncValidators(o),this.valueAccessor=xE(0,d)}ngOnChanges(e){if(this._isControlChanged(e)){const o=e.form.previousValue;o&&ub(o,this,!1),db(this.form,this,this.callSetDisabledState),this.form.updateValueAndValidity({emitEvent:!1})}bE(e,this.viewModel)&&(this.form.setValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.form&&ub(this.form,this,!1)}get path(){return[]}get control(){return this.form}viewToModelUpdate(e){this.viewModel=e,this.update.emit(e)}_isControlChanged(e){return e.hasOwnProperty("form")}}return i._ngModelWarningSentOnce=!1,i.\u0275fac=function(e){return new(e||i)(F(Vr,10),F(zu,10),F(pa,10),F(ME,8),F(yg,8))},i.\u0275dir=me({type:i,selectors:[["","formControl",""]],inputs:{form:["formControl","form"],isDisabled:["disabled","isDisabled"],model:["ngModel","model"]},outputs:{update:"ngModelChange"},exportAs:["ngForm"],features:[Ue([K$]),Se,jn]}),i})();const l3={provide:Qa,useExisting:bn(()=>Xf)};let Xf=(()=>{class i extends Qa{constructor(e,o,d){super(),this.callSetDisabledState=d,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new we,this._setValidators(e),this._setAsyncValidators(o)}ngOnChanges(e){this._checkFormPresent(),e.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(s1(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(e){const o=this.form.get(e.path);return db(o,e,this.callSetDisabledState),o.updateValueAndValidity({emitEvent:!1}),this.directives.push(e),o}getControl(e){return this.form.get(e.path)}removeControl(e){ub(e.control||null,e,!1),function H$(i,a){const e=i.indexOf(a);e>-1&&i.splice(e,1)}(this.directives,e)}addFormGroup(e){this._setUpFormContainer(e)}removeFormGroup(e){this._cleanUpFormContainer(e)}getFormGroup(e){return this.form.get(e.path)}addFormArray(e){this._setUpFormContainer(e)}removeFormArray(e){this._cleanUpFormContainer(e)}getFormArray(e){return this.form.get(e.path)}updateModel(e,o){this.form.get(e.path).setValue(o)}onSubmit(e){var o;return this.submitted=!0,wE(this.form,this.directives),this.ngSubmit.emit(e),"dialog"===(null==e||null===(o=e.target)||void 0===o?void 0:o.method)}onReset(){this.resetForm()}resetForm(e){this.form.reset(e),this.submitted=!1}_updateDomValue(){this.directives.forEach(e=>{const o=e.control,d=this.form.get(e.path);o!==d&&(ub(o||null,e),(i=>i instanceof CE)(d)&&(db(d,e,this.callSetDisabledState),e.control=d))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(e){const o=this.form.get(e.path);ZV(o,e),o.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(e){if(this.form){const o=this.form.get(e.path);o&&function _E(i,a){return s1(i,a)}(o,e)&&o.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){Hu(this.form,this),this._oldForm&&s1(this._oldForm,this)}_checkFormPresent(){}}return i.\u0275fac=function(e){return new(e||i)(F(Vr,10),F(zu,10),F(yg,8))},i.\u0275dir=me({type:i,selectors:[["","formGroup",""]],hostBindings:function(e,o){1&e&&Q("submit",function(h){return o.onSubmit(h)})("reset",function(){return o.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[Ue([l3]),Se,jn]}),i})();let Zf=(()=>{class i{constructor(){this._validator=$C}ngOnChanges(e){if(this.inputName in e){const o=this.normalizeInput(e[this.inputName].currentValue);this._enabled=this.enabled(o),this._validator=this._enabled?this.createValidator(o):$C,this._onChange&&this._onChange()}}validate(e){return this._validator(e)}registerOnValidatorChange(e){this._onChange=e}enabled(e){return null!=e}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,features:[jn]}),i})();const aW={provide:Vr,useExisting:bn(()=>Yo),multi:!0},oW={provide:Vr,useExisting:bn(()=>f1),multi:!0};let Yo=(()=>{class i extends Zf{constructor(){super(...arguments),this.inputName="required",this.normalizeInput=Tm,this.createValidator=e=>OV}enabled(e){return e}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(e,o){2&e&&Ve("required",o._enabled?"":null)},inputs:{required:"required"},features:[Ue([aW]),Se]}),i})(),f1=(()=>{class i extends Yo{constructor(){super(...arguments),this.createValidator=e=>jC}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["input","type","checkbox","required","","formControlName",""],["input","type","checkbox","required","","formControl",""],["input","type","checkbox","required","","ngModel",""]],hostVars:1,hostBindings:function(e,o){2&e&&Ve("required",o._enabled?"":null)},features:[Ue([oW]),Se]}),i})();const cW={provide:Vr,useExisting:bn(()=>wg),multi:!0};let wg=(()=>{class i extends Zf{constructor(){super(...arguments),this.inputName="maxlength",this.normalizeInput=e=>function kE(i){return"number"==typeof i?i:parseInt(i,10)}(e),this.createValidator=e=>FV(e)}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","maxlength","","formControlName",""],["","maxlength","","formControl",""],["","maxlength","","ngModel",""]],hostVars:1,hostBindings:function(e,o){2&e&&Ve("maxlength",o._enabled?o.maxlength:null)},inputs:{maxlength:"maxlength"},features:[Ue([cW]),Se]}),i})(),w3=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[c1]}),i})(),pW=(()=>{class i{static withConfig(e){var o;return{ngModule:i,providers:[{provide:yg,useValue:null!==(o=e.callSetDisabledState)&&void 0!==o?o:n1}]}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[w3]}),i})(),D3=(()=>{class i{static withConfig(e){var o,d;return{ngModule:i,providers:[{provide:ME,useValue:null!==(o=e.warnOnNgModelWithFormControl)&&void 0!==o?o:"always"},{provide:yg,useValue:null!==(d=e.callSetDisabledState)&&void 0!==d?d:n1}]}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[w3]}),i})();function mW(i,a){}const M3=function(i){return{animationDuration:i}},gW=function(i,a){return{value:i,params:a}};function vW(i,a){1&i&&ut(0)}const EE=["*"],_W=["tabListContainer"],yW=["tabList"],bW=["tabListInner"],wW=["nextPaginator"],T3=["previousPaginator"],xW=["tabBodyWrapper"],CW=["tabHeader"];function SW(i,a){}function DW(i,a){1&i&&J(0,SW,0,0,"ng-template",14),2&i&&z("cdkPortalOutlet",X().$implicit.templateLabel)}function MW(i,a){1&i&&Y(0),2&i&&Sn(X().$implicit.textLabel)}function TW(i,a){if(1&i){const e=Ee();I(0,"div",6,7),Q("click",function(){const d=le(e),h=d.$implicit,_=d.index,w=X(),D=on(1);return oe(w._handleClick(h,D,_))})("cdkFocusChange",function(d){const _=le(e).index;return oe(X()._tabFocusChanged(d,_))}),pe(2,"span",8)(3,"div",9),I(4,"span",10)(5,"span",11),J(6,DW,1,1,"ng-template",12),J(7,MW,1,1,"ng-template",null,13,Zr),O()()()}if(2&i){const e=a.$implicit,o=a.index,d=on(1),h=on(8),_=X();st("mdc-tab--active",_.selectedIndex===o),z("id",_._getTabLabelId(o))("ngClass",e.labelClass)("disabled",e.disabled)("fitInkBarToContent",_.fitInkBarToContent),Ve("tabIndex",_._getTabIndex(o))("aria-posinset",o+1)("aria-setsize",_._tabs.length)("aria-controls",_._getTabContentId(o))("aria-selected",_.selectedIndex===o)("aria-label",e.ariaLabel||null)("aria-labelledby",!e.ariaLabel&&e.ariaLabelledby?e.ariaLabelledby:null),N(3),z("matRippleTrigger",d)("matRippleDisabled",e.disabled||_.disableRipple),N(3),z("ngIf",e.templateLabel)("ngIfElse",h)}}function AW(i,a){if(1&i){const e=Ee();I(0,"mat-tab-body",15),Q("_onCentered",function(){return le(e),oe(X()._removeTabBodyWrapperHeight())})("_onCentering",function(d){return le(e),oe(X()._setTabBodyWrapperHeight(d))}),O()}if(2&i){const e=a.$implicit,o=a.index,d=X();st("mat-mdc-tab-body-active",d.selectedIndex===o),z("id",d._getTabContentId(o))("ngClass",e.bodyClass)("content",e.content)("position",e.position)("origin",e.origin)("animationDuration",d.animationDuration)("preserveContent",d.preserveContent),Ve("tabindex",null!=d.contentTabIndex&&d.selectedIndex===o?d.contentTabIndex:null)("aria-labelledby",d._getTabLabelId(o))}}const A3={translateTab:rr("translateTab",[Fn("center, void, left-origin-center, right-origin-center",dt({transform:"none"})),Fn("left",dt({transform:"translate3d(-100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),Fn("right",dt({transform:"translate3d(100%, 0, 0)",minHeight:"1px",visibility:"hidden"})),An("* => left, * => right, left => center, right => center",Ln("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")),An("void => left-origin-center",[dt({transform:"translate3d(-100%, 0, 0)",visibility:"hidden"}),Ln("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")]),An("void => right-origin-center",[dt({transform:"translate3d(100%, 0, 0)",visibility:"hidden"}),Ln("{{animationDuration}} cubic-bezier(0.35, 0, 0.25, 1)")])])};let k3=(()=>{class i extends ll{constructor(e,o,d,h){super(e,o,h),this._host=d,this._centeringSub=xt.EMPTY,this._leavingSub=xt.EMPTY}ngOnInit(){super.ngOnInit(),this._centeringSub=this._host._beforeCentering.pipe(wi(this._host._isCenterPosition(this._host._position))).subscribe(e=>{e&&!this.hasAttached()&&this.attach(this._host._content)}),this._leavingSub=this._host._afterLeavingCenter.subscribe(()=>{this._host.preserveContent||this.detach()})}ngOnDestroy(){super.ngOnDestroy(),this._centeringSub.unsubscribe(),this._leavingSub.unsubscribe()}}return i.\u0275fac=function(e){return new(e||i)(F(Ol),F(mi),F(bn(()=>E3)),F(ht))},i.\u0275dir=me({type:i,selectors:[["","matTabBodyHost",""]],features:[Se]}),i})(),kW=(()=>{class i{set position(e){this._positionIndex=e,this._computePositionAnimationState()}constructor(e,o,d){this._elementRef=e,this._dir=o,this._dirChangeSubscription=xt.EMPTY,this._translateTabComplete=new He,this._onCentering=new we,this._beforeCentering=new we,this._afterLeavingCenter=new we,this._onCentered=new we(!0),this.animationDuration="500ms",this.preserveContent=!1,o&&(this._dirChangeSubscription=o.change.subscribe(h=>{this._computePositionAnimationState(h),d.markForCheck()})),this._translateTabComplete.pipe(Sk((h,_)=>h.fromState===_.fromState&&h.toState===_.toState)).subscribe(h=>{this._isCenterPosition(h.toState)&&this._isCenterPosition(this._position)&&this._onCentered.emit(),this._isCenterPosition(h.fromState)&&!this._isCenterPosition(this._position)&&this._afterLeavingCenter.emit()})}ngOnInit(){"center"==this._position&&null!=this.origin&&(this._position=this._computePositionFromOrigin(this.origin))}ngOnDestroy(){this._dirChangeSubscription.unsubscribe(),this._translateTabComplete.complete()}_onTranslateTabStarted(e){const o=this._isCenterPosition(e.toState);this._beforeCentering.emit(o),o&&this._onCentering.emit(this._elementRef.nativeElement.clientHeight)}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_isCenterPosition(e){return"center"==e||"left-origin-center"==e||"right-origin-center"==e}_computePositionAnimationState(e=this._getLayoutDirection()){this._position=this._positionIndex<0?"ltr"==e?"left":"right":this._positionIndex>0?"ltr"==e?"right":"left":"center"}_computePositionFromOrigin(e){const o=this._getLayoutDirection();return"ltr"==o&&e<=0||"rtl"==o&&e>0?"left-origin-center":"right-origin-center"}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Ci,8),F(Jt))},i.\u0275dir=me({type:i,inputs:{_content:["content","_content"],origin:"origin",animationDuration:"animationDuration",preserveContent:"preserveContent",position:"position"},outputs:{_onCentering:"_onCentering",_beforeCentering:"_beforeCentering",_afterLeavingCenter:"_afterLeavingCenter",_onCentered:"_onCentered"}}),i})(),E3=(()=>{class i extends kW{constructor(e,o,d){super(e,o,d)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Ci,8),F(Jt))},i.\u0275cmp=_e({type:i,selectors:[["mat-tab-body"]],viewQuery:function(e,o){if(1&e&&ct(ll,5),2&e){let d;Pe(d=Ae())&&(o._portalHost=d.first)}},hostAttrs:[1,"mat-mdc-tab-body"],features:[Se],decls:3,vars:6,consts:[["cdkScrollable","",1,"mat-mdc-tab-body-content"],["content",""],["matTabBodyHost",""]],template:function(e,o){1&e&&(I(0,"div",0,1),Q("@translateTab.start",function(h){return o._onTranslateTabStarted(h)})("@translateTab.done",function(h){return o._translateTabComplete.next(h)}),J(2,mW,0,0,"ng-template",2),O()),2&e&&z("@translateTab",xw(3,gW,o._position,du(1,M3,o.animationDuration)))},dependencies:[k3],styles:['.mat-mdc-tab-body{top:0;left:0;right:0;bottom:0;position:absolute;display:block;overflow:hidden;outline:0;flex-basis:100%}.mat-mdc-tab-body.mat-mdc-tab-body-active{position:relative;overflow-x:hidden;overflow-y:auto;z-index:1;flex-grow:1}.mat-mdc-tab-group.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body.mat-mdc-tab-body-active{overflow-y:hidden}.mat-mdc-tab-body-content{height:100%;overflow:auto}.mat-mdc-tab-group-dynamic-height .mat-mdc-tab-body-content{overflow:hidden}.mat-mdc-tab-body-content[style*="visibility: hidden"]{display:none}'],encapsulation:2,data:{animation:[A3.translateTab]}}),i})();const EW=new be("MatTabContent");let IW=(()=>{class i{constructor(e){this.template=e}}return i.\u0275fac=function(e){return new(e||i)(F(ii))},i.\u0275dir=me({type:i,selectors:[["","matTabContent",""]],features:[Ue([{provide:EW,useExisting:i}])]}),i})();const PW=new be("MatTabLabel"),g1=new be("MAT_TAB");let qo=(()=>{class i extends zj{constructor(e,o,d){super(e,o),this._closestTab=d}}return i.\u0275fac=function(e){return new(e||i)(F(ii),F(mi),F(g1,8))},i.\u0275dir=me({type:i,selectors:[["","mat-tab-label",""],["","matTabLabel",""]],features:[Ue([{provide:PW,useExisting:i}]),Se]}),i})();const IE="mdc-tab-indicator--active",I3="mdc-tab-indicator--no-transition";class RW{constructor(a){this._items=a}hide(){this._items.forEach(a=>a.deactivateInkBar())}alignToElement(a){const e=this._items.find(_=>_.elementRef.nativeElement===a),o=this._currentItem;if(null==o||o.deactivateInkBar(),e){var d,h;const _=null==o||null===(d=(h=o.elementRef.nativeElement).getBoundingClientRect)||void 0===d?void 0:d.call(h);e.activateInkBar(_),this._currentItem=e}}}function OW(i){return class extends i{constructor(...a){super(...a),this._fitToContent=!1}get fitInkBarToContent(){return this._fitToContent}set fitInkBarToContent(a){const e=Ge(a);this._fitToContent!==e&&(this._fitToContent=e,this._inkBarElement&&this._appendInkBarElement())}activateInkBar(a){const e=this.elementRef.nativeElement;if(!a||!e.getBoundingClientRect||!this._inkBarContentElement)return void e.classList.add(IE);const o=e.getBoundingClientRect(),d=a.width/o.width,h=a.left-o.left;e.classList.add(I3),this._inkBarContentElement.style.setProperty("transform",`translateX(${h}px) scaleX(${d})`),e.getBoundingClientRect(),e.classList.remove(I3),e.classList.add(IE),this._inkBarContentElement.style.setProperty("transform","")}deactivateInkBar(){this.elementRef.nativeElement.classList.remove(IE)}ngOnInit(){this._createInkBarElement()}ngOnDestroy(){var a;null===(a=this._inkBarElement)||void 0===a||a.remove(),this._inkBarElement=this._inkBarContentElement=null}_createInkBarElement(){const a=this.elementRef.nativeElement.ownerDocument||document;this._inkBarElement=a.createElement("span"),this._inkBarContentElement=a.createElement("span"),this._inkBarElement.className="mdc-tab-indicator",this._inkBarContentElement.className="mdc-tab-indicator__content mdc-tab-indicator__content--underline",this._inkBarElement.appendChild(this._inkBarContentElement),this._appendInkBarElement()}_appendInkBarElement(){(this._fitToContent?this.elementRef.nativeElement.querySelector(".mdc-tab__content"):this.elementRef.nativeElement).appendChild(this._inkBarElement)}}}const FW=Uo(class{}),NW=OW((()=>{class i extends FW{constructor(e){super(),this.elementRef=e}focus(){this.elementRef.nativeElement.focus()}getOffsetLeft(){return this.elementRef.nativeElement.offsetLeft}getOffsetWidth(){return this.elementRef.nativeElement.offsetWidth}}return i.\u0275fac=function(e){return new(e||i)(F(Be))},i.\u0275dir=me({type:i,features:[Se]}),i})());let R3=(()=>{class i extends NW{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","matTabLabelWrapper",""]],hostVars:3,hostBindings:function(e,o){2&e&&(Ve("aria-disabled",!!o.disabled),st("mat-mdc-tab-disabled",o.disabled))},inputs:{disabled:"disabled",fitInkBarToContent:"fitInkBarToContent"},features:[Se]}),i})();const O3=Uo(class{}),Uu=new be("MAT_TAB_GROUP");let BW=(()=>{class i extends O3{get content(){return this._contentPortal}constructor(e,o){super(),this._viewContainerRef=e,this._closestTabGroup=o,this.textLabel="",this._contentPortal=null,this._stateChanges=new He,this.position=null,this.origin=null,this.isActive=!1}ngOnChanges(e){(e.hasOwnProperty("textLabel")||e.hasOwnProperty("disabled"))&&this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}ngOnInit(){this._contentPortal=new Ps(this._explicitContent||this._implicitContent,this._viewContainerRef)}_setTemplateLabelInput(e){e&&e._closestTab===this&&(this._templateLabel=e)}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(Uu,8))},i.\u0275dir=me({type:i,viewQuery:function(e,o){if(1&e&&ct(ii,7),2&e){let d;Pe(d=Ae())&&(o._implicitContent=d.first)}},inputs:{textLabel:["label","textLabel"],ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],labelClass:"labelClass",bodyClass:"bodyClass"},features:[Se,jn]}),i})(),mo=(()=>{class i extends BW{get templateLabel(){return this._templateLabel}set templateLabel(e){this._setTemplateLabelInput(e)}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-tab"]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,IW,7,ii),Qt(d,qo,5)),2&e){let h;Pe(h=Ae())&&(o._explicitContent=h.first),Pe(h=Ae())&&(o.templateLabel=h.first)}},inputs:{disabled:"disabled"},exportAs:["matTab"],features:[Ue([{provide:g1,useExisting:i}]),Se],ngContentSelectors:EE,decls:1,vars:0,template:function(e,o){1&e&&(On(),J(0,vW,1,0,"ng-template"))},encapsulation:2}),i})();const fb=Ou({passive:!0});let ju=(()=>{class i{get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=Ge(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){e=Br(e),this._selectedIndex!=e&&(this._selectedIndexChanged=!0,this._selectedIndex=e,this._keyManager&&this._keyManager.updateActiveItem(e))}constructor(e,o,d,h,_,w,D){this._elementRef=e,this._changeDetectorRef=o,this._viewportRuler=d,this._dir=h,this._ngZone=_,this._platform=w,this._animationMode=D,this._scrollDistance=0,this._selectedIndexChanged=!1,this._destroyed=new He,this._showPaginationControls=!1,this._disableScrollAfter=!0,this._disableScrollBefore=!0,this._stopScrolling=new He,this._disablePagination=!1,this._selectedIndex=0,this.selectFocusedIndex=new we,this.indexFocused=new we,_.runOutsideAngular(()=>{rc(e.nativeElement,"mouseleave").pipe(Et(this._destroyed)).subscribe(()=>{this._stopInterval()})})}ngAfterViewInit(){rc(this._previousPaginator.nativeElement,"touchstart",fb).pipe(Et(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("before")}),rc(this._nextPaginator.nativeElement,"touchstart",fb).pipe(Et(this._destroyed)).subscribe(()=>{this._handlePaginatorPress("after")})}ngAfterContentInit(){const e=this._dir?this._dir.change:Ze("ltr"),o=this._viewportRuler.change(150),d=()=>{this.updatePagination(),this._alignInkBarToSelectedTab()};this._keyManager=new Pk(this._items).withHorizontalOrientation(this._getLayoutDirection()).withHomeAndEnd().withWrap().skipPredicate(()=>!1),this._keyManager.updateActiveItem(this._selectedIndex),this._ngZone.onStable.pipe(Tn(1)).subscribe(d),Wn(e,o,this._items.changes,this._itemsResized()).pipe(Et(this._destroyed)).subscribe(()=>{this._ngZone.run(()=>{Promise.resolve().then(()=>{this._scrollDistance=Math.max(0,Math.min(this._getMaxScrollDistance(),this._scrollDistance)),d()})}),this._keyManager.withHorizontalOrientation(this._getLayoutDirection())}),this._keyManager.change.subscribe(h=>{this.indexFocused.emit(h),this._setTabFocus(h)})}_itemsResized(){return"function"!=typeof ResizeObserver?_o:this._items.changes.pipe(wi(this._items),nr(e=>new Hn(o=>this._ngZone.runOutsideAngular(()=>{const d=new ResizeObserver(h=>o.next(h));return e.forEach(h=>d.observe(h.elementRef.nativeElement)),()=>{d.disconnect()}}))),Ck(1),Kn(e=>e.some(o=>o.contentRect.width>0&&o.contentRect.height>0)))}ngAfterContentChecked(){this._tabLabelCount!=this._items.length&&(this.updatePagination(),this._tabLabelCount=this._items.length,this._changeDetectorRef.markForCheck()),this._selectedIndexChanged&&(this._scrollToLabel(this._selectedIndex),this._checkScrollingControls(),this._alignInkBarToSelectedTab(),this._selectedIndexChanged=!1,this._changeDetectorRef.markForCheck()),this._scrollDistanceChanged&&(this._updateTabScrollPosition(),this._scrollDistanceChanged=!1,this._changeDetectorRef.markForCheck())}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._destroyed.next(),this._destroyed.complete(),this._stopScrolling.complete()}_handleKeydown(e){if(!pr(e))switch(e.keyCode){case 13:case 32:if(this.focusIndex!==this.selectedIndex){const o=this._items.get(this.focusIndex);o&&!o.disabled&&(this.selectFocusedIndex.emit(this.focusIndex),this._itemSelected(e))}break;default:this._keyManager.onKeydown(e)}}_onContentChanges(){const e=this._elementRef.nativeElement.textContent;e!==this._currentTextContent&&(this._currentTextContent=e||"",this._ngZone.run(()=>{this.updatePagination(),this._alignInkBarToSelectedTab(),this._changeDetectorRef.markForCheck()}))}updatePagination(){this._checkPaginationEnabled(),this._checkScrollingControls(),this._updateTabScrollPosition()}get focusIndex(){return this._keyManager?this._keyManager.activeItemIndex:0}set focusIndex(e){!this._isValidIndex(e)||this.focusIndex===e||!this._keyManager||this._keyManager.setActiveItem(e)}_isValidIndex(e){return!this._items||!!this._items.toArray()[e]}_setTabFocus(e){if(this._showPaginationControls&&this._scrollToLabel(e),this._items&&this._items.length){this._items.toArray()[e].focus();const o=this._tabListContainer.nativeElement;o.scrollLeft="ltr"==this._getLayoutDirection()?0:o.scrollWidth-o.offsetWidth}}_getLayoutDirection(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}_updateTabScrollPosition(){if(this.disablePagination)return;const e=this.scrollDistance,o="ltr"===this._getLayoutDirection()?-e:e;this._tabList.nativeElement.style.transform=`translateX(${Math.round(o)}px)`,(this._platform.TRIDENT||this._platform.EDGE)&&(this._tabListContainer.nativeElement.scrollLeft=0)}get scrollDistance(){return this._scrollDistance}set scrollDistance(e){this._scrollTo(e)}_scrollHeader(e){return this._scrollTo(this._scrollDistance+("before"==e?-1:1)*this._tabListContainer.nativeElement.offsetWidth/3)}_handlePaginatorClick(e){this._stopInterval(),this._scrollHeader(e)}_scrollToLabel(e){if(this.disablePagination)return;const o=this._items?this._items.toArray()[e]:null;if(!o)return;const d=this._tabListContainer.nativeElement.offsetWidth,{offsetLeft:h,offsetWidth:_}=o.elementRef.nativeElement;let w,D;"ltr"==this._getLayoutDirection()?(w=h,D=w+_):(D=this._tabListInner.nativeElement.offsetWidth-h,w=D-_);const k=this.scrollDistance,P=this.scrollDistance+d;wP&&(this.scrollDistance+=Math.min(D-P,w-k))}_checkPaginationEnabled(){if(this.disablePagination)this._showPaginationControls=!1;else{const e=this._tabListInner.nativeElement.scrollWidth>this._elementRef.nativeElement.offsetWidth;e||(this.scrollDistance=0),e!==this._showPaginationControls&&this._changeDetectorRef.markForCheck(),this._showPaginationControls=e}}_checkScrollingControls(){this.disablePagination?this._disableScrollAfter=this._disableScrollBefore=!0:(this._disableScrollBefore=0==this.scrollDistance,this._disableScrollAfter=this.scrollDistance==this._getMaxScrollDistance(),this._changeDetectorRef.markForCheck())}_getMaxScrollDistance(){return this._tabListInner.nativeElement.scrollWidth-this._tabListContainer.nativeElement.offsetWidth||0}_alignInkBarToSelectedTab(){const e=this._items&&this._items.length?this._items.toArray()[this.selectedIndex]:null,o=e?e.elementRef.nativeElement:null;o?this._inkBar.alignToElement(o):this._inkBar.hide()}_stopInterval(){this._stopScrolling.next()}_handlePaginatorPress(e,o){o&&null!=o.button&&0!==o.button||(this._stopInterval(),Fy(650,100).pipe(Et(Wn(this._stopScrolling,this._destroyed))).subscribe(()=>{const{maxScrollDistance:d,distance:h}=this._scrollHeader(e);(0===h||h>=d)&&this._stopInterval()}))}_scrollTo(e){if(this.disablePagination)return{maxScrollDistance:0,distance:0};const o=this._getMaxScrollDistance();return this._scrollDistance=Math.max(0,Math.min(o,e)),this._scrollDistanceChanged=!0,this._checkScrollingControls(),{maxScrollDistance:o,distance:this._scrollDistance}}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(ac),F(Ci,8),F(et),F(Qn),F(Ei,8))},i.\u0275dir=me({type:i,inputs:{disablePagination:"disablePagination"}}),i})(),VW=(()=>{class i extends ju{get disableRipple(){return this._disableRipple}set disableRipple(e){this._disableRipple=Ge(e)}constructor(e,o,d,h,_,w,D){super(e,o,d,h,_,w,D),this._disableRipple=!1}_itemSelected(e){e.preventDefault()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(ac),F(Ci,8),F(et),F(Qn),F(Ei,8))},i.\u0275dir=me({type:i,inputs:{disableRipple:"disableRipple"},features:[Se]}),i})(),zW=(()=>{class i extends VW{constructor(e,o,d,h,_,w,D){super(e,o,d,h,_,w,D)}ngAfterContentInit(){this._inkBar=new RW(this._items),super.ngAfterContentInit()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(ac),F(Ci,8),F(et),F(Qn),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-tab-header"]],contentQueries:function(e,o,d){if(1&e&&Qt(d,R3,4),2&e){let h;Pe(h=Ae())&&(o._items=h)}},viewQuery:function(e,o){if(1&e&&(ct(_W,7),ct(yW,7),ct(bW,7),ct(wW,5),ct(T3,5)),2&e){let d;Pe(d=Ae())&&(o._tabListContainer=d.first),Pe(d=Ae())&&(o._tabList=d.first),Pe(d=Ae())&&(o._tabListInner=d.first),Pe(d=Ae())&&(o._nextPaginator=d.first),Pe(d=Ae())&&(o._previousPaginator=d.first)}},hostAttrs:[1,"mat-mdc-tab-header"],hostVars:4,hostBindings:function(e,o){2&e&&st("mat-mdc-tab-header-pagination-controls-enabled",o._showPaginationControls)("mat-mdc-tab-header-rtl","rtl"==o._getLayoutDirection())},inputs:{selectedIndex:"selectedIndex"},outputs:{selectFocusedIndex:"selectFocusedIndex",indexFocused:"indexFocused"},features:[Se],ngContentSelectors:EE,decls:13,vars:10,consts:[["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-before",3,"matRippleDisabled","disabled","click","mousedown","touchend"],["previousPaginator",""],[1,"mat-mdc-tab-header-pagination-chevron"],[1,"mat-mdc-tab-label-container",3,"keydown"],["tabListContainer",""],["role","tablist",1,"mat-mdc-tab-list",3,"cdkObserveContent"],["tabList",""],[1,"mat-mdc-tab-labels"],["tabListInner",""],["aria-hidden","true","type","button","mat-ripple","","tabindex","-1",1,"mat-mdc-tab-header-pagination","mat-mdc-tab-header-pagination-after",3,"matRippleDisabled","disabled","mousedown","click","touchend"],["nextPaginator",""]],template:function(e,o){1&e&&(On(),I(0,"button",0,1),Q("click",function(){return o._handlePaginatorClick("before")})("mousedown",function(h){return o._handlePaginatorPress("before",h)})("touchend",function(){return o._stopInterval()}),pe(2,"div",2),O(),I(3,"div",3,4),Q("keydown",function(h){return o._handleKeydown(h)}),I(5,"div",5,6),Q("cdkObserveContent",function(){return o._onContentChanges()}),I(7,"div",7,8),ut(9),O()()(),I(10,"button",9,10),Q("mousedown",function(h){return o._handlePaginatorPress("after",h)})("click",function(){return o._handlePaginatorClick("after")})("touchend",function(){return o._stopInterval()}),pe(12,"div",2),O()),2&e&&(st("mat-mdc-tab-header-pagination-disabled",o._disableScrollBefore),z("matRippleDisabled",o._disableScrollBefore||o.disableRipple)("disabled",o._disableScrollBefore||null),N(3),st("_mat-animation-noopable","NoopAnimations"===o._animationMode),N(7),st("mat-mdc-tab-header-pagination-disabled",o._disableScrollAfter),z("matRippleDisabled",o._disableScrollAfter||o.disableRipple)("disabled",o._disableScrollAfter||null))},dependencies:[fa,$y],styles:[".mat-mdc-tab-header{display:flex;overflow:hidden;position:relative;flex-shrink:0}.mat-mdc-tab-header-pagination{-webkit-user-select:none;user-select:none;position:relative;display:none;justify-content:center;align-items:center;min-width:32px;cursor:pointer;z-index:2;-webkit-tap-highlight-color:rgba(0,0,0,0);touch-action:none;box-sizing:content-box;background:none;border:none;outline:0;padding:0}.mat-mdc-tab-header-pagination::-moz-focus-inner{border:0}.mat-mdc-tab-header-pagination .mat-ripple-element{opacity:.12}.mat-mdc-tab-header-pagination-controls-enabled .mat-mdc-tab-header-pagination{display:flex}.mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after{padding-left:4px}.mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(-135deg)}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before,.mat-mdc-tab-header-pagination-after{padding-right:4px}.mat-mdc-tab-header-rtl .mat-mdc-tab-header-pagination-before .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-header-pagination-after .mat-mdc-tab-header-pagination-chevron{transform:rotate(45deg)}.mat-mdc-tab-header-pagination-chevron{border-style:solid;border-width:2px 2px 0 0;height:8px;width:8px}.mat-mdc-tab-header-pagination-disabled{box-shadow:none;cursor:default;pointer-events:none}.mat-mdc-tab-header-pagination-disabled .mat-mdc-tab-header-pagination-chevron{opacity:.4}.mat-mdc-tab-list{flex-grow:1;position:relative;transition:transform 500ms cubic-bezier(0.35, 0, 0.25, 1)}._mat-animation-noopable .mat-mdc-tab-list{transition:none}._mat-animation-noopable span.mdc-tab-indicator__content,._mat-animation-noopable span.mdc-tab__text-label{transition:none}.mat-mdc-tab-label-container{display:flex;flex-grow:1;overflow:hidden;z-index:1}.mat-mdc-tab-labels{display:flex;flex:1 0 auto}[mat-align-tabs=center]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:center}[mat-align-tabs=end]>.mat-mdc-tab-header .mat-mdc-tab-labels{justify-content:flex-end}.mat-mdc-tab::before{margin:5px}.cdk-high-contrast-active .mat-mdc-tab[aria-disabled=true]{color:GrayText}"],encapsulation:2}),i})();const _1=new be("MAT_TABS_CONFIG");let HW=0;const y1=Fs(oc(class{constructor(i){this._elementRef=i}}),"primary");let PE=(()=>{class i extends y1{get dynamicHeight(){return this._dynamicHeight}set dynamicHeight(e){this._dynamicHeight=Ge(e)}get selectedIndex(){return this._selectedIndex}set selectedIndex(e){this._indexToSelect=Br(e,null)}get animationDuration(){return this._animationDuration}set animationDuration(e){this._animationDuration=/^\d+$/.test(e+"")?e+"ms":e}get contentTabIndex(){return this._contentTabIndex}set contentTabIndex(e){this._contentTabIndex=Br(e,null)}get disablePagination(){return this._disablePagination}set disablePagination(e){this._disablePagination=Ge(e)}get preserveContent(){return this._preserveContent}set preserveContent(e){this._preserveContent=Ge(e)}get backgroundColor(){return this._backgroundColor}set backgroundColor(e){const o=this._elementRef.nativeElement.classList;o.remove("mat-tabs-with-background",`mat-background-${this.backgroundColor}`),e&&o.add("mat-tabs-with-background",`mat-background-${e}`),this._backgroundColor=e}constructor(e,o,d,h){var _;super(e),this._changeDetectorRef=o,this._animationMode=h,this._tabs=new _s,this._indexToSelect=0,this._lastFocusedTabIndex=null,this._tabBodyWrapperHeight=0,this._tabsSubscription=xt.EMPTY,this._tabLabelSubscription=xt.EMPTY,this._dynamicHeight=!1,this._selectedIndex=null,this.headerPosition="above",this._disablePagination=!1,this._preserveContent=!1,this.selectedIndexChange=new we,this.focusChange=new we,this.animationDone=new we,this.selectedTabChange=new we(!0),this._groupId=HW++,this.animationDuration=d&&d.animationDuration?d.animationDuration:"500ms",this.disablePagination=!(!d||null==d.disablePagination)&&d.disablePagination,this.dynamicHeight=!(!d||null==d.dynamicHeight)&&d.dynamicHeight,this.contentTabIndex=null!==(_=null==d?void 0:d.contentTabIndex)&&void 0!==_?_:null,this.preserveContent=!(null==d||!d.preserveContent)}ngAfterContentChecked(){const e=this._indexToSelect=this._clampTabIndex(this._indexToSelect);if(this._selectedIndex!=e){const o=null==this._selectedIndex;if(!o){this.selectedTabChange.emit(this._createChangeEvent(e));const d=this._tabBodyWrapper.nativeElement;d.style.minHeight=d.clientHeight+"px"}Promise.resolve().then(()=>{this._tabs.forEach((d,h)=>d.isActive=h===e),o||(this.selectedIndexChange.emit(e),this._tabBodyWrapper.nativeElement.style.minHeight="")})}this._tabs.forEach((o,d)=>{o.position=d-e,null!=this._selectedIndex&&0==o.position&&!o.origin&&(o.origin=e-this._selectedIndex)}),this._selectedIndex!==e&&(this._selectedIndex=e,this._lastFocusedTabIndex=null,this._changeDetectorRef.markForCheck())}ngAfterContentInit(){this._subscribeToAllTabChanges(),this._subscribeToTabLabels(),this._tabsSubscription=this._tabs.changes.subscribe(()=>{const e=this._clampTabIndex(this._indexToSelect);if(e===this._selectedIndex){const o=this._tabs.toArray();let d;for(let h=0;h{o[e].isActive=!0,this.selectedTabChange.emit(this._createChangeEvent(e))})}this._changeDetectorRef.markForCheck()})}_subscribeToAllTabChanges(){this._allTabs.changes.pipe(wi(this._allTabs)).subscribe(e=>{this._tabs.reset(e.filter(o=>o._closestTabGroup===this||!o._closestTabGroup)),this._tabs.notifyOnChanges()})}ngOnDestroy(){this._tabs.destroy(),this._tabsSubscription.unsubscribe(),this._tabLabelSubscription.unsubscribe()}realignInkBar(){this._tabHeader&&this._tabHeader._alignInkBarToSelectedTab()}updatePagination(){this._tabHeader&&this._tabHeader.updatePagination()}focusTab(e){const o=this._tabHeader;o&&(o.focusIndex=e)}_focusChanged(e){this._lastFocusedTabIndex=e,this.focusChange.emit(this._createChangeEvent(e))}_createChangeEvent(e){const o=new F3;return o.index=e,this._tabs&&this._tabs.length&&(o.tab=this._tabs.toArray()[e]),o}_subscribeToTabLabels(){this._tabLabelSubscription&&this._tabLabelSubscription.unsubscribe(),this._tabLabelSubscription=Wn(...this._tabs.map(e=>e._stateChanges)).subscribe(()=>this._changeDetectorRef.markForCheck())}_clampTabIndex(e){return Math.min(this._tabs.length-1,Math.max(e||0,0))}_getTabLabelId(e){return`mat-tab-label-${this._groupId}-${e}`}_getTabContentId(e){return`mat-tab-content-${this._groupId}-${e}`}_setTabBodyWrapperHeight(e){if(!this._dynamicHeight||!this._tabBodyWrapperHeight)return;const o=this._tabBodyWrapper.nativeElement;o.style.height=this._tabBodyWrapperHeight+"px",this._tabBodyWrapper.nativeElement.offsetHeight&&(o.style.height=e+"px")}_removeTabBodyWrapperHeight(){const e=this._tabBodyWrapper.nativeElement;this._tabBodyWrapperHeight=e.clientHeight,e.style.height="",this.animationDone.emit()}_handleClick(e,o,d){o.focusIndex=d,e.disabled||(this.selectedIndex=d)}_getTabIndex(e){var o;return e===(null!==(o=this._lastFocusedTabIndex)&&void 0!==o?o:this.selectedIndex)?0:-1}_tabFocusChanged(e,o){e&&"mouse"!==e&&"touch"!==e&&(this._tabHeader.focusIndex=o)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(_1,8),F(Ei,8))},i.\u0275dir=me({type:i,inputs:{dynamicHeight:"dynamicHeight",selectedIndex:"selectedIndex",headerPosition:"headerPosition",animationDuration:"animationDuration",contentTabIndex:"contentTabIndex",disablePagination:"disablePagination",preserveContent:"preserveContent",backgroundColor:"backgroundColor"},outputs:{selectedIndexChange:"selectedIndexChange",focusChange:"focusChange",animationDone:"animationDone",selectedTabChange:"selectedTabChange"},features:[Se]}),i})(),Ja=(()=>{class i extends PE{get fitInkBarToContent(){return this._fitInkBarToContent}set fitInkBarToContent(e){this._fitInkBarToContent=Ge(e),this._changeDetectorRef.markForCheck()}get stretchTabs(){return this._stretchTabs}set stretchTabs(e){this._stretchTabs=Ge(e)}constructor(e,o,d,h){super(e,o,d,h),this._fitInkBarToContent=!1,this._stretchTabs=!0,this.fitInkBarToContent=!(!d||null==d.fitInkBarToContent)&&d.fitInkBarToContent}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(_1,8),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-tab-group"]],contentQueries:function(e,o,d){if(1&e&&Qt(d,mo,5),2&e){let h;Pe(h=Ae())&&(o._allTabs=h)}},viewQuery:function(e,o){if(1&e&&(ct(xW,5),ct(CW,5)),2&e){let d;Pe(d=Ae())&&(o._tabBodyWrapper=d.first),Pe(d=Ae())&&(o._tabHeader=d.first)}},hostAttrs:[1,"mat-mdc-tab-group"],hostVars:6,hostBindings:function(e,o){2&e&&st("mat-mdc-tab-group-dynamic-height",o.dynamicHeight)("mat-mdc-tab-group-inverted-header","below"===o.headerPosition)("mat-mdc-tab-group-stretch-tabs",o.stretchTabs)},inputs:{color:"color",disableRipple:"disableRipple",fitInkBarToContent:"fitInkBarToContent",stretchTabs:["mat-stretch-tabs","stretchTabs"]},exportAs:["matTabGroup"],features:[Ue([{provide:Uu,useExisting:i}]),Se],decls:6,vars:7,consts:[[3,"selectedIndex","disableRipple","disablePagination","indexFocused","selectFocusedIndex"],["tabHeader",""],["class","mdc-tab mat-mdc-tab mat-mdc-focus-indicator","role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",3,"id","mdc-tab--active","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange",4,"ngFor","ngForOf"],[1,"mat-mdc-tab-body-wrapper"],["tabBodyWrapper",""],["role","tabpanel",3,"id","mat-mdc-tab-body-active","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering",4,"ngFor","ngForOf"],["role","tab","matTabLabelWrapper","","cdkMonitorElementFocus","",1,"mdc-tab","mat-mdc-tab","mat-mdc-focus-indicator",3,"id","ngClass","disabled","fitInkBarToContent","click","cdkFocusChange"],["tabNode",""],[1,"mdc-tab__ripple"],["mat-ripple","",1,"mat-mdc-tab-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mdc-tab__content"],[1,"mdc-tab__text-label"],[3,"ngIf","ngIfElse"],["tabTextLabel",""],[3,"cdkPortalOutlet"],["role","tabpanel",3,"id","ngClass","content","position","origin","animationDuration","preserveContent","_onCentered","_onCentering"]],template:function(e,o){1&e&&(I(0,"mat-tab-header",0,1),Q("indexFocused",function(h){return o._focusChanged(h)})("selectFocusedIndex",function(h){return o.selectedIndex=h}),J(2,TW,9,17,"div",2),O(),I(3,"div",3,4),J(5,AW,1,11,"mat-tab-body",5),O()),2&e&&(z("selectedIndex",o.selectedIndex||0)("disableRipple",o.disableRipple)("disablePagination",o.disablePagination),N(2),z("ngForOf",o._tabs),N(1),st("_mat-animation-noopable","NoopAnimations"===o._animationMode),N(2),z("ngForOf",o._tabs))},dependencies:[Ss,Mn,en,ll,fa,VB,E3,R3,zW],styles:['.mdc-tab{min-width:90px;padding-right:24px;padding-left:24px;display:flex;flex:1 0 auto;justify-content:center;box-sizing:border-box;margin:0;padding-top:0;padding-bottom:0;border:none;outline:none;text-align:center;white-space:nowrap;cursor:pointer;-webkit-appearance:none;z-index:1}.mdc-tab::-moz-focus-inner{padding:0;border:0}.mdc-tab[hidden]{display:none}.mdc-tab--min-width{flex:0 1 auto}.mdc-tab__content{display:flex;align-items:center;justify-content:center;height:inherit;pointer-events:none}.mdc-tab__text-label{transition:150ms color linear;display:inline-block;line-height:1;z-index:2}.mdc-tab__icon{transition:150ms color linear;z-index:2}.mdc-tab--stacked .mdc-tab__content{flex-direction:column;align-items:center;justify-content:center}.mdc-tab--stacked .mdc-tab__text-label{padding-top:6px;padding-bottom:4px}.mdc-tab--active .mdc-tab__text-label,.mdc-tab--active .mdc-tab__icon{transition-delay:100ms}.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label{padding-left:8px;padding-right:0}[dir=rtl] .mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label,.mdc-tab:not(.mdc-tab--stacked) .mdc-tab__icon+.mdc-tab__text-label[dir=rtl]{padding-left:0;padding-right:8px}.mdc-tab-indicator .mdc-tab-indicator__content--underline{border-top-width:2px}.mdc-tab-indicator .mdc-tab-indicator__content--icon{height:34px;font-size:34px}.mdc-tab-indicator{display:flex;position:absolute;top:0;left:0;justify-content:center;width:100%;height:100%;pointer-events:none;z-index:1}.mdc-tab-indicator__content{transform-origin:left;opacity:0}.mdc-tab-indicator__content--underline{align-self:flex-end;box-sizing:border-box;width:100%;border-top-style:solid}.mdc-tab-indicator__content--icon{align-self:center;margin:0 auto}.mdc-tab-indicator--active .mdc-tab-indicator__content{opacity:1}.mdc-tab-indicator .mdc-tab-indicator__content{transition:250ms transform cubic-bezier(0.4, 0, 0.2, 1)}.mdc-tab-indicator--no-transition .mdc-tab-indicator__content{transition:none}.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition:150ms opacity linear}.mdc-tab-indicator--active.mdc-tab-indicator--fade .mdc-tab-indicator__content{transition-delay:100ms}.mat-mdc-tab-ripple{position:absolute;top:0;left:0;bottom:0;right:0;pointer-events:none}.mat-mdc-tab{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-tab.mdc-tab{height:48px;flex-grow:0}.mat-mdc-tab .mdc-tab__ripple::before{content:"";display:block;position:absolute;top:0;left:0;right:0;bottom:0;opacity:0;pointer-events:none}.mat-mdc-tab .mdc-tab__text-label{display:inline-flex;align-items:center}.mat-mdc-tab .mdc-tab__content{position:relative;pointer-events:auto}.mat-mdc-tab:hover .mdc-tab__ripple::before{opacity:.04}.mat-mdc-tab.cdk-program-focused .mdc-tab__ripple::before,.mat-mdc-tab.cdk-keyboard-focused .mdc-tab__ripple::before{opacity:.12}.mat-mdc-tab .mat-ripple-element{opacity:.12}.mat-mdc-tab-group.mat-mdc-tab-group-stretch-tabs>.mat-mdc-tab-header .mat-mdc-tab{flex-grow:1}.mat-mdc-tab-disabled{opacity:.4}.mat-mdc-tab-group{display:flex;flex-direction:column;max-width:100%}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination{background-color:var(--mat-mdc-tab-header-with-background-background-color, transparent)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-link .mdc-tab__text-label{color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-focus-indicator::before{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mdc-tab__ripple::before,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mdc-tab__ripple::before{background-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header .mat-mdc-tab-header-pagination-chevron,.mat-mdc-tab-group.mat-tabs-with-background>.mat-mdc-tab-header-pagination .mat-mdc-tab-header-pagination-chevron{border-color:var(--mat-mdc-tab-header-with-background-foreground-color, inherit)}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header{flex-direction:column-reverse}.mat-mdc-tab-group.mat-mdc-tab-group-inverted-header .mdc-tab-indicator__content--underline{align-self:flex-start}.mat-mdc-tab-body-wrapper{position:relative;overflow:hidden;display:flex;transition:height 500ms cubic-bezier(0.35, 0, 0.25, 1)}.mat-mdc-tab-body-wrapper._mat-animation-noopable{transition:none !important;animation:none !important}'],encapsulation:2}),i})();class F3{}let z3=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[Ri,nn,Rs,lc,Dk,Xy,nn]}),i})();function UW(i,a){if(1&i){const e=Ee();I(0,"uds-field-text",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function jW(i,a){if(1&i){const e=Ee();I(0,"uds-field-autocomplete",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function $W(i,a){if(1&i){const e=Ee();I(0,"uds-field-textbox",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function WW(i,a){if(1&i){const e=Ee();I(0,"uds-field-numeric",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function YW(i,a){if(1&i){const e=Ee();I(0,"uds-field-password",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function qW(i,a){if(1&i){const e=Ee();I(0,"uds-field-hidden",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function w1(i,a){if(1&i){const e=Ee();I(0,"uds-field-choice",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function XW(i,a){if(1&i){const e=Ee();I(0,"uds-field-multichoice",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function x1(i,a){if(1&i){const e=Ee();I(0,"uds-field-editlist",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function H3(i,a){if(1&i){const e=Ee();I(0,"uds-field-checkbox",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function ZW(i,a){if(1&i){const e=Ee();I(0,"uds-field-imgchoice",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function RE(i,a){if(1&i){const e=Ee();I(0,"uds-field-date",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}function KW(i,a){if(1&i){const e=Ee();I(0,"uds-field-tags",2),Q("changed",function(d){return le(e),oe(X().changed.emit(d))}),O()}2&i&&z("field",X().field)}let G3=(()=>{class i{constructor(){this.field={},this.changed=new we,this.udsGuiFieldType=$o}ngOnInit(){}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:14,vars:15,consts:[["matTooltipShowDelay","1000",1,"field",3,"ngSwitch","matTooltip"],[3,"field","changed",4,"ngSwitchCase"],[3,"field","changed"]],template:function(e,o){1&e&&(I(0,"div",0),J(1,UW,1,1,"uds-field-text",1),J(2,jW,1,1,"uds-field-autocomplete",1),J(3,$W,1,1,"uds-field-textbox",1),J(4,WW,1,1,"uds-field-numeric",1),J(5,YW,1,1,"uds-field-password",1),J(6,qW,1,1,"uds-field-hidden",1),J(7,w1,1,1,"uds-field-choice",1),J(8,XW,1,1,"uds-field-multichoice",1),J(9,x1,1,1,"uds-field-editlist",1),J(10,H3,1,1,"uds-field-checkbox",1),J(11,ZW,1,1,"uds-field-imgchoice",1),J(12,RE,1,1,"uds-field-date",1),J(13,KW,1,1,"uds-field-tags",1),O()),2&e&&(z("ngSwitch",o.field.gui.type)("matTooltip",o.field.gui.tooltip),N(1),z("ngSwitchCase",o.udsGuiFieldType.TEXT),N(1),z("ngSwitchCase",o.udsGuiFieldType.TEXT_AUTOCOMPLETE),N(1),z("ngSwitchCase",o.udsGuiFieldType.TEXTBOX),N(1),z("ngSwitchCase",o.udsGuiFieldType.NUMERIC),N(1),z("ngSwitchCase",o.udsGuiFieldType.PASSWORD),N(1),z("ngSwitchCase",o.udsGuiFieldType.HIDDEN),N(1),z("ngSwitchCase",o.udsGuiFieldType.CHOICE),N(1),z("ngSwitchCase",o.udsGuiFieldType.MULTI_CHOICE),N(1),z("ngSwitchCase",o.udsGuiFieldType.EDITLIST),N(1),z("ngSwitchCase",o.udsGuiFieldType.CHECKBOX),N(1),z("ngSwitchCase",o.udsGuiFieldType.IMAGECHOICE),N(1),z("ngSwitchCase",o.udsGuiFieldType.DATE),N(1),z("ngSwitchCase",o.udsGuiFieldType.TAGLIST))},styles:["uds-field[_ngcontent-%COMP%]{flex:1 50%} .mat-mdc-form-field{width:calc(100% - 1px)} .mat-form-field-flex{padding-top:0!important} .mat-mdc-tooltip{font-size:.9rem!important;margin:0!important;max-width:26em!important}"]}),i})();function QW(i,a){1&i&&Y(0),2&i&&Ie(" ",X().$implicit," ")}function JW(i,a){if(1&i){const e=Ee();I(0,"uds-field",8),Q("changed",function(d){return le(e),oe(X(3).changed.emit(d))}),O()}2&i&&z("field",a.$implicit)}function e9(i,a){if(1&i&&(I(0,"mat-tab"),J(1,QW,1,1,"ng-template",4),I(2,"div",5)(3,"div",6),J(4,JW,1,1,"uds-field",7),O()()()),2&i){const e=a.$implicit,o=X(2);N(4),z("ngForOf",o.fieldsByTab[e])}}function t9(i,a){if(1&i&&(I(0,"mat-tab-group",2),J(1,e9,5,1,"mat-tab",3),O()),2&i){const e=X();z("disableRipple",!0)("@.disabled",!0),N(1),z("ngForOf",e.tabs)}}function C1(i,a){if(1&i){const e=Ee();I(0,"div")(1,"uds-field",8),Q("changed",function(d){return le(e),oe(X(2).changed.emit(d))}),O()()}if(2&i){const e=a.$implicit;N(1),z("field",e)}}function n9(i,a){if(1&i&&(I(0,"div",5),J(1,C1,2,1,"div",3),O()),2&i){const e=X();N(1),z("ngForOf",e.fields)}}const S1=django.gettext("Main");let U3=(()=>{class i{constructor(){this.fields=[],this.changed=new we,this.tabs=new Array,this.fieldsByTab={}}ngOnInit(){this.fieldsByTab={};for(const e of this.fields){const o=void 0===e.gui.tab?S1:e.gui.tab;this.tabs.includes(o)||(this.tabs.push(o),this.fieldsByTab[o]=new Array),this.fieldsByTab[o].push(e)}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-form"]],inputs:{fields:"fields"},outputs:{changed:"changed"},decls:3,vars:2,consts:[[3,"disableRipple",4,"ngIf","ngIfElse"],["onlyone",""],[3,"disableRipple"],[4,"ngFor","ngForOf"],["mat-tab-label",""],[1,"form-content"],[1,"content"],[3,"field","changed",4,"ngFor","ngForOf"],[3,"field","changed"]],template:function(e,o){if(1&e&&(J(0,t9,2,3,"mat-tab-group",0),J(1,n9,2,1,"ng-template",null,1,Zr)),2&e){const d=on(2);z("ngIf",o.tabs.length>1)("ngIfElse",d)}},dependencies:[Mn,en,qo,mo,Ja,G3],styles:[".content[_ngcontent-%COMP%]{margin-top:.5rem;display:flex;flex-wrap:wrap}.form-content[_ngcontent-%COMP%]{padding-top:1rem} .mat-mdc-form-field-infix{min-height:3rem}"]}),i})();function i9(i,a){if(1&i){const e=Ee();I(0,"button",10),Q("click",function(){return le(e),oe(X().customButtonClicked())}),Y(1),O()}if(2&i){const e=X();N(1),Sn(e.data.customButton)}}let j3=(()=>{class i{constructor(e,o){this.dialogRef=e,this.data=o,this.onEvent=new we(!0),this.saving=!1}ngOnInit(){this.onEvent.emit({type:"init",data:null,dialog:this.dialogRef})}changed(e){this.onEvent.emit({type:"changed",data:e,dialog:this.dialogRef})}getFields(){const e={},o=[];return this.data.guiFields.forEach(d=>{let h=void 0!==d.values?d.values:d.value;if(d.gui.required&&0!==h&&(!h||h instanceof Array&&0===h.length)&&o.push(d.gui.label),"number"==typeof h){const _=parseInt((d.gui.minValue||987654321).toString(),10),w=parseInt((d.gui.maxValue||987654321).toString(),10);987654321!==_&&h<_&&o.push(d.gui.label+" >= "+d.gui.minValue),987654321!==w&&h>w&&o.push(d.gui.label+" <= "+d.gui.maxValue),h=h.toString()}e[d.name]=h}),{data:e,errors:o}}save(){const e=this.getFields();e.errors.length>0?this.data.gui.alert(django.gettext("Error"),django.gettext("Please, fill in require fields: ")+e.errors.join(", ")):this.onEvent.emit({data:e.data,type:"save",dialog:this.dialogRef})}cancel(){this.onEvent.emit({data:null,type:"cancel",dialog:this.dialogRef})}customButtonClicked(){const e=this.getFields();this.onEvent.emit({data:e.data,type:this.data.customButton||"",errors:e.errors,dialog:this.dialogRef})}}return i.\u0275fac=function(e){return new(e||i)(F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-modal-form"]],decls:17,vars:7,consts:[["mat-dialog-title","",3,"innerHtml"],["vc",""],["autocomplete","off"],[3,"fields","changed"],[1,"buttons"],[1,"group1"],["ngClass","custom","mat-raised-button","",3,"click",4,"ngIf"],[1,"group2"],["mat-raised-button","",3,"disabled","click"],["mat-raised-button","","color","primary",3,"disabled","click"],["ngClass","custom","mat-raised-button","",3,"click"]],template:function(e,o){1&e&&(pe(0,"h4",0),uu(1,"safeHtml"),I(2,"mat-dialog-content",null,1)(4,"form",2)(5,"uds-form",3),Q("changed",function(h){return o.changed(h)}),O()()(),I(6,"mat-dialog-actions")(7,"div",4)(8,"div",5),J(9,i9,2,1,"button",6),O(),I(10,"div",7)(11,"button",8),Q("click",function(){return o.dialogRef.close()})("click",function(){return o.cancel()}),I(12,"uds-translate"),Y(13,"Discard & close"),O()(),I(14,"button",9),Q("click",function(){return o.save()}),I(15,"uds-translate"),Y(16,"Save"),O()()()()()),2&e&&(z("innerHtml",Wc(1,5,o.data.title),Rr),N(5),z("fields",o.data.guiFields),N(4),z("ngIf",void 0!==o.data.customButton),N(2),z("disabled",o.saving),N(3),z("disabled",o.saving))},dependencies:[Ss,en,hb,KC,Gu,hi,ar,Wi,or,Pn,U3,DV],styles:["h4[_ngcontent-%COMP%]{margin-bottom:0}.buttons[_ngcontent-%COMP%]{display:flex;justify-content:space-between;width:100%} uds-field{flex:1 100%}button.custom[_ngcontent-%COMP%]{background-color:#4682b4;color:#fff}.modal-form[_ngcontent-%COMP%]{padding-top:1.5rem}"]}),i})();class $3{constructor(a){this.gui=a}modalForm(a,e,o=null,d){e.sort((D,k)=>D.gui.order>k.gui.order?1:-1);const h=null!=o;o=h?o:{},e.forEach(D=>{(!1===h||void 0===D.gui.rdonly)&&(D.gui.rdonly=!1),D.gui.type===$o.TEXT&&D.gui.multiline&&(D.gui.type=$o.TEXTBOX);const k=o[D.name];if(void 0!==k)if(k instanceof Array){const P=new Array;k.forEach(B=>P.push(B)),D.values=P}else D.value=k});const _=window.innerWidth<800?"80%":"50%";return this.gui.dialog.open(j3,{position:{top:"64px"},width:_,data:{title:a,guiFields:e,customButton:d,gui:this.gui},disableClose:!0}).componentInstance.onEvent}typedForm(a,e,o,d,h,_,w){var D=this;return Qe(function*(){const k=w||{},P=k.callback||(()=>{}),B=d||[],W=o?django.gettext("Test"):void 0,Z={},te={},ie=he=>{te.hasOwnProperty(he.name)&&""!==he.value&&void 0!==he.value&&D.executeCallback(a,he,Z)},de=k.snack||D.gui.snackbar.open(django.gettext("Loading data..."),django.gettext("dismiss"));a.table.rest.gui(_).then(he=>{de.dismiss(),void 0!==B&&B.forEach(Me=>{he.push(Me)}),he.forEach(Me=>{Z[Me.name]=Me,void 0!==Me.gui.fills&&(te[Me.name]=Me.gui.fills)}),D.modalForm(e,he,h,W).subscribe(function(){var Me=Qe(function*(fe){switch(fe.data&&(fe.data.data_type=_),fe.type){case W:if(fe.errors&&fe.errors.length>0)return void D.gui.alert(django.gettext("Error"),django.gettext("Please, fill in require fields: ")+fe.errors.join(", "));D.gui.snackbar.open(django.gettext("Testing..."),django.gettext("dismiss")),a.table.rest.test(_,fe.data).then(Fe=>{"ok"!==Fe?D.gui.snackbar.open(django.gettext("Test failed:")+" "+Fe,django.gettext("dismiss")):D.gui.snackbar.open(django.gettext("Test passed successfully"),django.gettext("dismiss"),{duration:2e3})});break;case"changed":case"init":if(null===fe.data)for(const Fe of he)ie(Fe);else ie(fe.data.field);P({on:fe.data,all:Z});break;case"save":if(void 0===k.save){fe.dialog.componentInstance.saving=!0;try{h?yield a.table.rest.save(fe.data,h.id):yield a.table.rest.create(fe.data),D.gui.snackbar.open(django.gettext("Successfully saved"),django.gettext("dismiss"),{duration:2e3}),fe.dialog.close(),a.table.overview()}finally{fe.dialog.componentInstance.saving=!1}}else fe.dialog.close(),k.save.resolve(fe.data);break;case"cancel":fe.dialog.close()}});return function(fe){return Me.apply(this,arguments)}}())})})()}typedEditForm(a,e,o=!1,d,h=(()=>{})){var _=this;return Qe(function*(){const w=a.table.selection.selected[0],D=w.type,P=(new we,_.gui.snackbar.open(django.gettext("Loading data..."),django.gettext("dismiss"))),B=yield a.table.rest.get(w.id);return _.typedForm(a,e,o,d,B,D,{snack:P,callback:h})})()}typedNewForm(a,e,o=!1,d,h=(()=>{})){var _=this;return Qe(function*(){return _.typedForm(a,e,o,d,null,a.param?a.param.type:void 0,{callback:h})})()}deleteForm(a,e){var o=this;return Qe(function*(){const d=new Array,h=new Array;for(const D of a.table.selection.selected){let k=D.name||D.friendly_name;k.changingThisBreaksApplicationSecurity&&(k=k.changingThisBreaksApplicationSecurity),d.push(k),h.push(D.id)}const _=django.gettext("Are you sure do you want to delete the following items?")+"
"+d.join(", ")+"";if(yield o.gui.questionDialog(e,_,!0)){for(const k of h)try{yield a.table.rest.delete(k)}catch(P){console.warn("Error deleting item",k,P)}o.gui.snackbar.open(django.gettext("Deletion finished"),django.gettext("dismiss"),{duration:2e3}),a.table.overview()}})()}executeCallback(a,e,o,d={}){var h=this;return Qe(function*(){const _=new Array;if(!e.gui.fills)return;for(const k of e.gui.fills.parameters)_.push(k+"="+encodeURIComponent(o[k].value));const w=yield a.table.rest.callback(e.gui.fills.callbackName,_.join("&")),D=new Array;for(const k of w){const P=o[k.name];if(void 0!==P){void 0!==P.gui.fills&&D.push(P);const B=new Array;k.values.forEach(W=>B.push(W)),P.gui.values=B,P.value||(P.value=k.values.length>0?k.values[0].id:"")}}for(const k of D)void 0===d[k.name]&&(d[k.name]=!0,h.executeCallback(a,k,o,d))})()}}class a9{constructor(a,e){this.dialog=a,this.snackbar=e,this.forms=new $3(this)}alert(a,e,o=0,d){var h=this;return Qe(function*(){const _=d||(window.innerWidth<800?"80%":"40%");return h.dialog.open(TV,{width:_,data:{title:a,body:e,autoclose:o,type:Vu.alert},disableClose:!0}).componentInstance.acceptance})()}questionDialog(a,e,o=!1){var d=this;return Qe(function*(){const h=window.innerWidth<800?"80%":"40%",_=d.dialog.open(TV,{width:h,data:{title:a,body:e,type:Vu.question,warnOnYes:o},disableClose:!0});return wd(_.componentInstance.acceptance)})()}icon(a,e="24px"){return''}}var Dr=(()=>{return(i=Dr||(Dr={})).NUMERIC="numeric",i.ALPHANUMERIC="alphanumeric",i.DATETIME="datetime",i.DATETIMESEC="datetimesec",i.DATE="date",i.TIME="time",i.ICON="iconType",i.CALLBACK="callback",i.DICTIONARY="dict",i.IMAGE="image",Dr;var i})(),ri=(()=>{return(i=ri||(ri={}))[i.ALWAYS=0]="ALWAYS",i[i.SINGLE_SELECT=1]="SINGLE_SELECT",i[i.MULTI_SELECT=2]="MULTI_SELECT",i[i.ONLY_MENU=3]="ONLY_MENU",i[i.ACCELERATOR=4]="ACCELERATOR",ri;var i})();const Y3="provider",D1="service",$u="pool",xg="user",X3="transport",Z3="osmanager",M1="calendar",LE="poolgroup",FE={provider:django.gettext("provider"),service:django.gettext("service"),pool:django.gettext("service pool"),authenticator:django.gettext("authenticator"),mfa:django.gettext("MFA"),user:django.gettext("user"),group:django.gettext("group"),transport:django.gettext("transport"),osmanager:django.gettext("OS manager"),calendar:django.gettext("calendar"),poolgroup:django.gettext("pool group")};class eo{constructor(a){this.router=a}static getGotoButton(a,e,o){return{id:a,html:'link'+django.gettext("Go to")+" "+FE[a]+"",type:ri.ACCELERATOR,acceleratorProperties:[e,o||""]}}gotoProvider(a){this.router.navigate(void 0!==a?["providers",a]:["providers"])}gotoService(a,e){this.router.navigate(void 0!==e?["providers",a,"detail",e]:["providers",a,"detail"])}gotoServicePool(a){this.router.navigate(["pools","service-pools",a])}gotoServicePoolDetail(a){this.router.navigate(["pools","service-pools",a,"detail"])}gotoMetapool(a){this.router.navigate(["pools","meta-pools",a])}gotoMetapoolDetail(a){this.router.navigate(["pools","meta-pools",a,"detail"])}gotoCalendar(a){this.router.navigate(["pools","calendars",a])}gotoCalendarDetail(a){this.router.navigate(["pools","calendars",a,"detail"])}gotoAccount(a){this.router.navigate(["pools","accounts",a])}gotoAccountDetail(a){this.router.navigate(["pools","accounts",a,"detail"])}gotoPoolGroup(a){this.router.navigate(["pools","pool-groups",a=a||""])}gotoAuthenticator(a){this.router.navigate(["authenticators",a])}gotoAuthenticatorDetail(a){this.router.navigate(["authenticators",a,"detail"])}gotoMFA(a){this.router.navigate(["mfas",a])}gotoUser(a,e){this.router.navigate(["authenticators",a,"detail","users",e])}gotoGroup(a,e){this.router.navigate(["authenticators",a,"detail","groups",e])}gotoTransport(a){this.router.navigate(["transports",a])}gotoOSManager(a){this.router.navigate(["osmanagers",a])}goto(a,e,o){const d=h=>{let _=e;if(o[h].split(".").forEach(w=>_=_[w]),!_)throw new Error("not going :)");return _};try{switch(a){case Y3:this.gotoProvider(d(0));break;case D1:this.gotoService(d(0),d(1));break;case $u:this.gotoServicePool(d(0));break;case"authenticator":this.gotoAuthenticator(d(0));break;case xg:this.gotoUser(d(0),d(1));break;case"group":this.gotoGroup(d(0),d(1));break;case X3:this.gotoTransport(d(0));break;case Z3:this.gotoOSManager(d(0));break;case M1:this.gotoCalendar(d(0));break;case LE:this.gotoPoolGroup(d(0))}}catch{}}}function K3(i,a){if(1&i){const e=Ee();I(0,"div",2)(1,"button",3),Q("click",function(){return le(e),oe(X().action())}),Y(2),O()()}if(2&i){const e=X();N(2),Ie(" ",e.data.action," ")}}const o9=["label"];function pb(i,a){}const s9=Math.pow(2,31)-1;class T1{constructor(a,e){this._overlayRef=e,this._afterDismissed=new He,this._afterOpened=new He,this._onAction=new He,this._dismissedByAction=!1,this.containerInstance=a,a._onExit.subscribe(()=>this._finishDismiss())}dismiss(){this._afterDismissed.closed||this.containerInstance.exit(),clearTimeout(this._durationTimeoutId)}dismissWithAction(){this._onAction.closed||(this._dismissedByAction=!0,this._onAction.next(),this._onAction.complete(),this.dismiss()),clearTimeout(this._durationTimeoutId)}closeWithAction(){this.dismissWithAction()}_dismissAfter(a){this._durationTimeoutId=setTimeout(()=>this.dismiss(),Math.min(a,s9))}_open(){this._afterOpened.closed||(this._afterOpened.next(),this._afterOpened.complete())}_finishDismiss(){this._overlayRef.dispose(),this._onAction.closed||this._onAction.complete(),this._afterDismissed.next({dismissedByAction:this._dismissedByAction}),this._afterDismissed.complete(),this._dismissedByAction=!1}afterDismissed(){return this._afterDismissed}afterOpened(){return this.containerInstance._onEnter}onAction(){return this._onAction}}const Q3=new be("MatSnackBarData");class mb{constructor(){this.politeness="assertive",this.announcementMessage="",this.duration=0,this.data=null,this.horizontalPosition="center",this.verticalPosition="bottom"}}let l9=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","matSnackBarLabel",""]],hostAttrs:[1,"mat-mdc-snack-bar-label","mdc-snackbar__label"]}),i})(),J3=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","matSnackBarActions",""]],hostAttrs:[1,"mat-mdc-snack-bar-actions","mdc-snackbar__actions"]}),i})(),NE=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","matSnackBarAction",""]],hostAttrs:[1,"mat-mdc-snack-bar-action","mdc-snackbar__action"]}),i})(),BE=(()=>{class i{constructor(e,o){this.snackBarRef=e,this.data=o}action(){this.snackBarRef.dismissWithAction()}get hasAction(){return!!this.data.action}}return i.\u0275fac=function(e){return new(e||i)(F(T1),F(Q3))},i.\u0275cmp=_e({type:i,selectors:[["simple-snack-bar"]],hostAttrs:[1,"mat-mdc-simple-snack-bar"],exportAs:["matSnackBar"],decls:3,vars:2,consts:[["matSnackBarLabel",""],["matSnackBarActions","",4,"ngIf"],["matSnackBarActions",""],["mat-button","","matSnackBarAction","",3,"click"]],template:function(e,o){1&e&&(I(0,"div",0),Y(1),O(),J(2,K3,3,1,"div",1)),2&e&&(N(1),Ie(" ",o.data.message,"\n"),N(1),z("ngIf",o.hasAction))},dependencies:[en,hi,l9,J3,NE],styles:[".mat-mdc-simple-snack-bar{display:flex}"],encapsulation:2,changeDetection:0}),i})();const c9={snackBarState:rr("state",[Fn("void, hidden",dt({transform:"scale(0.8)",opacity:0})),Fn("visible",dt({transform:"scale(1)",opacity:1})),An("* => visible",Ln("150ms cubic-bezier(0, 0, 0.2, 1)")),An("* => void, * => hidden",Ln("75ms cubic-bezier(0.4, 0.0, 1, 1)",dt({opacity:0})))])};let d9=0,u9=(()=>{class i extends mC{constructor(e,o,d,h,_){super(),this._ngZone=e,this._elementRef=o,this._changeDetectorRef=d,this._platform=h,this.snackBarConfig=_,this._document=St(ht),this._trackedModals=new Set,this._announceDelay=150,this._destroyed=!1,this._onAnnounce=new He,this._onExit=new He,this._onEnter=new He,this._animationState="void",this._liveElementId="mat-snack-bar-container-live-"+d9++,this.attachDomPortal=w=>{this._assertNotAttached();const D=this._portalOutlet.attachDomPortal(w);return this._afterPortalAttached(),D},this._live="assertive"!==_.politeness||_.announcementMessage?"off"===_.politeness?"off":"polite":"assertive",this._platform.FIREFOX&&("polite"===this._live&&(this._role="status"),"assertive"===this._live&&(this._role="alert"))}attachComponentPortal(e){this._assertNotAttached();const o=this._portalOutlet.attachComponentPortal(e);return this._afterPortalAttached(),o}attachTemplatePortal(e){this._assertNotAttached();const o=this._portalOutlet.attachTemplatePortal(e);return this._afterPortalAttached(),o}onAnimationEnd(e){const{fromState:o,toState:d}=e;if(("void"===d&&"void"!==o||"hidden"===d)&&this._completeExit(),"visible"===d){const h=this._onEnter;this._ngZone.run(()=>{h.next(),h.complete()})}}enter(){this._destroyed||(this._animationState="visible",this._changeDetectorRef.detectChanges(),this._screenReaderAnnounce())}exit(){return this._ngZone.run(()=>{this._animationState="hidden",this._elementRef.nativeElement.setAttribute("mat-exit",""),clearTimeout(this._announceTimeoutId)}),this._onExit}ngOnDestroy(){this._destroyed=!0,this._clearFromModals(),this._completeExit()}_completeExit(){this._ngZone.onMicrotaskEmpty.pipe(Tn(1)).subscribe(()=>{this._ngZone.run(()=>{this._onExit.next(),this._onExit.complete()})})}_afterPortalAttached(){const e=this._elementRef.nativeElement,o=this.snackBarConfig.panelClass;o&&(Array.isArray(o)?o.forEach(d=>e.classList.add(d)):e.classList.add(o)),this._exposeToModals()}_exposeToModals(){const e=this._liveElementId,o=this._document.querySelectorAll('body > .cdk-overlay-container [aria-modal="true"]');for(let d=0;d{const o=e.getAttribute("aria-owns");if(o){const d=o.replace(this._liveElementId,"").trim();d.length>0?e.setAttribute("aria-owns",d):e.removeAttribute("aria-owns")}}),this._trackedModals.clear()}_assertNotAttached(){this._portalOutlet.hasAttached()}_screenReaderAnnounce(){this._announceTimeoutId||this._ngZone.runOutsideAngular(()=>{this._announceTimeoutId=setTimeout(()=>{const e=this._elementRef.nativeElement.querySelector("[aria-hidden]"),o=this._elementRef.nativeElement.querySelector("[aria-live]");if(e&&o){var d;let h=null;this._platform.isBrowser&&document.activeElement instanceof HTMLElement&&e.contains(document.activeElement)&&(h=document.activeElement),e.removeAttribute("aria-hidden"),o.appendChild(e),null===(d=h)||void 0===d||d.focus(),this._onAnnounce.next(),this._onAnnounce.complete()}},this._announceDelay)})}}return i.\u0275fac=function(e){return new(e||i)(F(et),F(Be),F(Jt),F(Qn),F(mb))},i.\u0275dir=me({type:i,viewQuery:function(e,o){if(1&e&&ct(ll,7),2&e){let d;Pe(d=Ae())&&(o._portalOutlet=d.first)}},features:[Se]}),i})(),h9=(()=>{class i extends u9{_afterPortalAttached(){super._afterPortalAttached();const e=this._label.nativeElement,o="mdc-snackbar__label";e.classList.toggle(o,!e.querySelector(`.${o}`))}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-snack-bar-container"]],viewQuery:function(e,o){if(1&e&&ct(o9,7),2&e){let d;Pe(d=Ae())&&(o._label=d.first)}},hostAttrs:[1,"mdc-snackbar","mat-mdc-snack-bar-container","mdc-snackbar--open"],hostVars:1,hostBindings:function(e,o){1&e&&Ul("@state.done",function(h){return o.onAnimationEnd(h)}),2&e&&om("@state",o._animationState)},features:[Se],decls:6,vars:3,consts:[[1,"mdc-snackbar__surface"],[1,"mat-mdc-snack-bar-label"],["label",""],["aria-hidden","true"],["cdkPortalOutlet",""]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1,2)(3,"div",3),J(4,pb,0,0,"ng-template",4),O(),pe(5,"div"),O()()),2&e&&(N(5),Ve("aria-live",o._live)("role",o._role)("id",o._liveElementId))},dependencies:[ll],styles:['.mdc-snackbar{display:none;position:fixed;right:0;bottom:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;pointer-events:none;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mdc-snackbar--opening,.mdc-snackbar--open,.mdc-snackbar--closing{display:flex}.mdc-snackbar--open .mdc-snackbar__label,.mdc-snackbar--open .mdc-snackbar__actions{visibility:visible}.mdc-snackbar__surface{padding-left:0;padding-right:8px;display:flex;align-items:center;justify-content:flex-start;box-sizing:border-box;transform:scale(0.8);opacity:0}.mdc-snackbar__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-snackbar__surface::before{border-color:CanvasText}}[dir=rtl] .mdc-snackbar__surface,.mdc-snackbar__surface[dir=rtl]{padding-left:8px;padding-right:0}.mdc-snackbar--open .mdc-snackbar__surface{transform:scale(1);opacity:1;pointer-events:auto}.mdc-snackbar--closing .mdc-snackbar__surface{transform:scale(1)}.mdc-snackbar__label{padding-left:16px;padding-right:8px;width:100%;flex-grow:1;box-sizing:border-box;margin:0;visibility:hidden;padding-top:14px;padding-bottom:14px}[dir=rtl] .mdc-snackbar__label,.mdc-snackbar__label[dir=rtl]{padding-left:8px;padding-right:16px}.mdc-snackbar__label::before{display:inline;content:attr(data-mdc-snackbar-label-text)}.mdc-snackbar__actions{display:flex;flex-shrink:0;align-items:center;box-sizing:border-box;visibility:hidden}.mdc-snackbar__action+.mdc-snackbar__dismiss{margin-left:8px;margin-right:0}[dir=rtl] .mdc-snackbar__action+.mdc-snackbar__dismiss,.mdc-snackbar__action+.mdc-snackbar__dismiss[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-snack-bar-container{margin:8px;position:static}.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:344px}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container .mdc-snackbar__surface{min-width:100%}}@media(max-width: 480px),(max-width: 344px){.mat-mdc-snack-bar-container{width:100vw}}.mat-mdc-snack-bar-container .mdc-snackbar__surface{max-width:672px}.mat-mdc-snack-bar-container .mdc-snackbar__surface{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-mdc-snack-bar-container .mdc-snackbar__dismiss .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, var(--mdc-snackbar-icon-size, 24px))}.mat-mdc-snack-bar-container .mdc-snackbar__dismiss svg,.mat-mdc-snack-bar-container .mdc-snackbar__dismiss img{width:var(--mdc-icon-button-icon-size, var(--mdc-snackbar-icon-size, 24px));height:var(--mdc-icon-button-icon-size, var(--mdc-snackbar-icon-size, 24px))}.mat-mdc-snack-bar-container .mdc-snackbar__surface{background-color:var(--mdc-snackbar-container-color, inherit)}.mat-mdc-snack-bar-container .mdc-snackbar__surface{border-radius:var(--mdc-snackbar-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-snack-bar-container .mdc-snackbar__label{color:var(--mdc-snackbar-supporting-text-color, inherit)}.mat-mdc-snack-bar-container .mdc-snackbar__label{font-size:var(--mdc-snackbar-supporting-text-size, inherit);font-family:var(--mdc-snackbar-supporting-text-font, inherit);font-weight:var(--mdc-snackbar-supporting-text-weight, inherit);line-height:var(--mdc-snackbar-supporting-text-line-height, inherit)}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled){color:var(--mat-mdc-snack-bar-button-color, transparent);--mat-mdc-button-persistent-ripple-color: currentColor}.mat-mdc-snack-bar-container .mat-mdc-button.mat-mdc-snack-bar-action:not(:disabled) .mat-ripple-element{background-color:currentColor;opacity:.1}.mat-mdc-snack-bar-container .mdc-snackbar__label::before{display:none}.mat-mdc-snack-bar-handset,.mat-mdc-snack-bar-container,.mat-mdc-snack-bar-label{flex:1 1 auto}.mat-mdc-snack-bar-handset .mdc-snackbar__surface{width:100%}'],encapsulation:2,data:{animation:[c9.snackBarState]}}),i})(),e5=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[pd,Rs,Ri,ab,nn,nn]}),i})();const t5=new be("mat-snack-bar-default-options",{providedIn:"root",factory:function f9(){return new mb}});let VE=(()=>{class i{get _openedSnackBarRef(){const e=this._parentSnackBar;return e?e._openedSnackBarRef:this._snackBarRefAtThisLevel}set _openedSnackBarRef(e){this._parentSnackBar?this._parentSnackBar._openedSnackBarRef=e:this._snackBarRefAtThisLevel=e}constructor(e,o,d,h,_,w){this._overlay=e,this._live=o,this._injector=d,this._breakpointObserver=h,this._parentSnackBar=_,this._defaultConfig=w,this._snackBarRefAtThisLevel=null}openFromComponent(e,o){return this._attach(e,o)}openFromTemplate(e,o){return this._attach(e,o)}open(e,o="",d){const h={...this._defaultConfig,...d};return h.data={message:e,action:o},h.announcementMessage===e&&(h.announcementMessage=void 0),this.openFromComponent(this.simpleSnackBarComponent,h)}dismiss(){this._openedSnackBarRef&&this._openedSnackBarRef.dismiss()}ngOnDestroy(){this._snackBarRefAtThisLevel&&this._snackBarRefAtThisLevel.dismiss()}_attachSnackBarContainer(e,o){const h=Qi.create({parent:o&&o.viewContainerRef&&o.viewContainerRef.injector||this._injector,providers:[{provide:mb,useValue:o}]}),_=new Fu(this.snackBarContainerComponent,o.viewContainerRef,h),w=e.attach(_);return w.instance.snackBarConfig=o,w.instance}_attach(e,o){const d={...new mb,...this._defaultConfig,...o},h=this._createOverlay(d),_=this._attachSnackBarContainer(h,d),w=new T1(_,h);if(e instanceof ii){const D=new Ps(e,null,{$implicit:d.data,snackBarRef:w});w.instance=_.attachTemplatePortal(D)}else{const D=this._createInjector(d,w),k=new Fu(e,void 0,D),P=_.attachComponentPortal(k);w.instance=P.instance}return this._breakpointObserver.observe("(max-width: 599.98px) and (orientation: portrait)").pipe(Et(h.detachments())).subscribe(D=>{h.overlayElement.classList.toggle(this.handsetCssClass,D.matches)}),d.announcementMessage&&_._onAnnounce.subscribe(()=>{this._live.announce(d.announcementMessage,d.politeness)}),this._animateSnackBar(w,d),this._openedSnackBarRef=w,this._openedSnackBarRef}_animateSnackBar(e,o){e.afterDismissed().subscribe(()=>{this._openedSnackBarRef==e&&(this._openedSnackBarRef=null),o.announcementMessage&&this._live.clear()}),this._openedSnackBarRef?(this._openedSnackBarRef.afterDismissed().subscribe(()=>{e.containerInstance.enter()}),this._openedSnackBarRef.dismiss()):e.containerInstance.enter(),o.duration&&o.duration>0&&e.afterOpened().subscribe(()=>e._dismissAfter(o.duration))}_createOverlay(e){const o=new Hf;o.direction=e.direction;let d=this._overlay.position().global();const h="rtl"===e.direction,_="left"===e.horizontalPosition||"start"===e.horizontalPosition&&!h||"end"===e.horizontalPosition&&h,w=!_&&"center"!==e.horizontalPosition;return _?d.left("0"):w?d.right("0"):d.centerHorizontally(),"top"===e.verticalPosition?d.top("0"):d.bottom("0"),o.positionStrategy=d,this._overlay.create(o)}_createInjector(e,o){return Qi.create({parent:e&&e.viewContainerRef&&e.viewContainerRef.injector||this._injector,providers:[{provide:T1,useValue:o},{provide:Q3,useValue:e.data}]})}}return i.\u0275fac=function(e){return new(e||i)(ae(ea),ae(CC),ae(Qi),ae(Mk),ae(i,12),ae(t5))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),p9=(()=>{class i extends VE{constructor(e,o,d,h,_,w){super(e,o,d,h,_,w),this.simpleSnackBarComponent=BE,this.snackBarContainerComponent=h9,this.handsetCssClass="mat-mdc-snack-bar-handset"}}return i.\u0275fac=function(e){return new(e||i)(ae(ea),ae(CC),ae(Qi),ae(Mk),ae(i,12),ae(t5))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:e5}),i})();const n5="dark-theme",zE="light-theme";let bt=(()=>{class i{constructor(e,o,d,h,_,w){this.http=e,this.router=o,this.dialog=d,this.snackbar=h,this.sanitizer=_,this.dateAdapter=w,this.user=new fj(udsData.profile),this.navigation=new eo(this.router),this.gui=new a9(this.dialog,this.snackbar),this.dateAdapter.setLocale(this.config.language)}get config(){return udsData.config}get csrfField(){return csrf.csrfField}get csrfToken(){return csrf.csrfToken}get notices(){return udsData.errors}restPath(e){return this.config.urls.rest+e}staticURL(e){return this.config.urls.static+e}logout(){window.location.href=this.config.urls.logout}gotoUser(){window.location.href=this.config.urls.user}putOnStorage(e,o){void 0!==typeof Storage&&sessionStorage.setItem(e,o)}getFromStorage(e){return void 0!==typeof Storage?sessionStorage.getItem(e):null}safeString(e){return this.sanitizer.bypassSecurityTrustHtml(e)}boolAsHumanString(e){return e?django.gettext("yes"):django.gettext("no")}switchTheme(e){const o=document.getElementsByTagName("html")[0];[n5,zE].forEach(d=>{o.classList.contains(d)&&o.classList.remove(d)}),o.classList.add(e?n5:zE)}}return i.\u0275fac=function(e){return new(e||i)(ae(Rx),ae(Fa),ae(ib),ae(p9),ae(X_),ae(gi))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),m9=(()=>{class i{constructor(e){this.api=e}canActivate(e,o){return!!this.api.user.isStaff||(window.location.href=this.api.config.urls.user,!1)}}return i.\u0275fac=function(e){return new(e||i)(ae(bt))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const Cg=3e4;var Sd=(()=>{return(i=Sd||(Sd={}))[i.NONE=0]="NONE",i[i.READ=32]="READ",i[i.MANAGEMENT=64]="MANAGEMENT",i[i.ALL=96]="ALL",Sd;var i})();class zr{constructor(a,e,o){this.api=a,void 0===o&&(o={}),void 0===o.base&&(o.base=e);const d=(h,_)=>void 0===h?_:h;this.id=e,this.paths={base:o.base,get:d(o.get,o.base),log:d(o.log,o.base),put:d(o.put,o.base),test:d(o.test,o.base+"/test"),delete:d(o.delete,o.base),types:d(o.types,o.base+"/types"),gui:d(o.gui,o.base+"/gui"),tableInfo:d(o.tableInfo,o.base+"/tableinfo")},this.headers=(new al).set("Content-Type","application/json; charset=utf8").set(this.api.config.auth_header,this.api.config.auth_token)}get(a){return this.typedGet(a)}getLogs(a){return this.doGet(this.getPath(this.paths.log,a)+"/log")}overview(a){return this.typedGet("overview"+(void 0!==a?"?filter="+a:""))}summary(a){return this.typedGet("overview?summarize"+(void 0!==a?"&filter="+a:""))}put(a,e){return this.typedPut(a,e)}create(a){return this.typedPut(a)}save(a,e){return this.typedPut(a,e=void 0!==e?e:a.id)}test(a,e){return wd(this.api.http.post(this.getPath(this.paths.test,a),e,{headers:this.headers}).pipe(Oa(o=>this.handleError(o))),Cg)}delete(a){return wd(this.api.http.delete(this.getPath(this.paths.delete,a),{headers:this.headers}).pipe(Oa(e=>this.handleError(e))),Cg)}permision(){return this.api.user.isAdmin?Sd.ALL:Sd.NONE}getPermissions(a){return this.doGet(this.getPath("permissions/"+this.paths.base+"/"+a))}addPermission(a,e,o,d){const h=this.getPath("permissions/"+this.paths.base+"/"+a+"/"+e+"/add/"+o);return wd(this.api.http.put(h,{perm:d},{headers:this.headers}).pipe(Oa(w=>this.handleError(w))),Cg)}revokePermission(a){const e=this.getPath("permissions/revoke");return wd(this.api.http.put(e,{items:a},{headers:this.headers}).pipe(Oa(d=>this.handleError(d))),Cg)}types(){return this.doGet(this.getPath(this.paths.types))}gui(a){const e=this.getPath(this.paths.gui+(void 0!==a?"/"+a:""));return this.doGet(e)}callback(a,e){const o=this.getPath("gui/callback/"+a+"?"+e);return this.doGet(o)}tableInfo(){return this.doGet(this.getPath(this.paths.tableInfo))}detail(a,e){return new g9(this,a,e)}invoke(a,e){return this.typedGet(a+(e?"?"+e:""))}getPath(a,e){if(void 0===a)throw new Error("Path is undefined");return this.api.restPath(a+(void 0!==e?"/"+e:""))}doGet(a){return wd(this.api.http.get(a,{headers:this.headers}).pipe(Oa(e=>this.handleError(e))),Cg)}typedGet(a){return this.doGet(this.getPath(this.paths.get,a))}typedPut(a,e){return wd(this.api.http.put(this.getPath(this.paths.put,e),a,{headers:this.headers}).pipe(Oa(o=>this.handleError(o,!0))),Cg)}handleError(a,e=!1){let o="";return o=a.error instanceof ErrorEvent?a.error.message:e?django.gettext("Error saving: ")+a.error:`Error ${a.status}: ${a.error}`,this.api.gui.alert(e?django.gettext("Error saving element"):django.gettext("Error handling your request"),o),rd(()=>new Error(o))}}class g9 extends zr{constructor(a,e,o,d){super(a.api,[a.paths.base,e,o].join("/")),this.parentModel=a,this.parentId=e,this.model=o,this.perm=d}permision(){return this.perm||Sd.ALL}}class HE extends zr{constructor(a){super(a,"providers"),this.api=a}allServices(){return this.get("allservices")}service(a){return this.get("service/"+a)}maintenance(a){return this.get(a+"/maintenance")}}class r5 extends zr{constructor(a){super(a,"authenticators"),this.api=a}search(a,e,o,d=12){return this.get(a+"/search?type="+encodeURIComponent(e)+"&term="+encodeURIComponent(o)+"&limit="+d)}}class GE extends zr{constructor(a){super(a,"osmanagers"),this.api=a}}class v9 extends zr{constructor(a){super(a,"transports"),this.api=a}}class a5 extends zr{constructor(a){super(a,"networks"),this.api=a}}class _9 extends zr{constructor(a){super(a,"servicespools"),this.api=a}setFallbackAccess(a,e){return this.get(a+"/setFallbackAccess?fallbackAccess="+e)}getFallbackAccess(a){return this.get(a+"/getFallbackAccess")}actionsList(a){return this.get(a+"/actionsList")}listAssignables(a){return this.get(a+"/listAssignables")}createFromAssignable(a,e,o){return this.get(a+"/createFromAssignable?user_id="+encodeURIComponent(e)+"&assignable_id="+encodeURIComponent(o))}}class y9 extends zr{constructor(a){super(a,"metapools"),this.api=a}setFallbackAccess(a,e){return this.get(a+"/setFallbackAccess?fallbackAccess="+e)}getFallbackAccess(a){return this.get(a+"/getFallbackAccess")}}class gb extends zr{constructor(a){super(a,"config"),this.api=a}}class o5 extends zr{constructor(a){super(a,"gallery/images"),this.api=a}}class b9 extends zr{constructor(a){super(a,"gallery/servicespoolgroups"),this.api=a}}class UE extends zr{constructor(a){super(a,"system"),this.api=a}information(){return this.get("overview")}stats(a,e){let o="stats/"+a;return e&&(o+="/"+e),this.get(o)}flushCache(){return this.doGet(this.getPath("cache","flush"))}}class w9 extends zr{constructor(a){super(a,"reports"),this.api=a}types(){return wd(Ze([]))}}class vb extends zr{constructor(a){super(a,"calendars"),this.api=a}}class s5 extends zr{constructor(a){super(a,"accounts"),this.api=a}timemark(a){return this.get(a+"/timemark")}}class x9 extends zr{constructor(a){super(a,"actortokens"),this.api=a}}class C9 extends zr{constructor(a){super(a,"tunneltokens"),this.api=a}}class S9 extends zr{constructor(a){super(a,"mfa"),this.api=a}}class D9 extends zr{constructor(a){super(a,"messaging/notifiers"),this.api=a}}let jt=(()=>{class i{constructor(e){this.api=e,this.providers=new HE(e),this.authenticators=new r5(e),this.mfas=new S9(e),this.osManagers=new GE(e),this.transports=new v9(e),this.networks=new a5(e),this.servicesPools=new _9(e),this.metaPools=new y9(e),this.gallery=new o5(e),this.servicesPoolGroups=new b9(e),this.calendars=new vb(e),this.accounts=new s5(e),this.system=new UE(e),this.configuration=new gb(e),this.actorToken=new x9(e),this.tunnelToken=new C9(e),this.reports=new w9(e),this.notifiers=new D9(e)}}return i.\u0275fac=function(e){return new(e||i)(ae(bt))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();class jE extends He{constructor(a=1/0,e=1/0,o=Ey){super(),this._bufferSize=a,this._windowTime=e,this._timestampProvider=o,this._buffer=[],this._infiniteTimeWindow=!0,this._infiniteTimeWindow=e===1/0,this._bufferSize=Math.max(1,a),this._windowTime=Math.max(1,e)}next(a){const{isStopped:e,_buffer:o,_infiniteTimeWindow:d,_timestampProvider:h,_windowTime:_}=this;e||(o.push(a),!d&&o.push(h.now()+_)),this._trimBuffer(),super.next(a)}_subscribe(a){this._throwIfClosed(),this._trimBuffer();const e=this._innerSubscribe(a),{_infiniteTimeWindow:o,_buffer:d}=this,h=d.slice();for(let _=0;_{if(o[a]){const d=o[a].currentValue;null!=d&&e(d)}}))}has(a,e){this.subscriptions.add(this.subject.subscribe(o=>{o[a]&&e(o[a].currentValue)}))}notFirst(a,e){this.subscriptions.add(this.subject.subscribe(o=>{o[a]&&!o[a].isFirstChange()&&e(o[a].currentValue)}))}notFirstAndEmpty(a,e){this.subscriptions.add(this.subject.subscribe(o=>{if(o[a]&&!o[a].isFirstChange()){const d=o[a].currentValue;null!=d&&e(d)}}))}}const d5=new be("NGX_ECHARTS_CONFIG");let $E=(()=>{class i{constructor(e,o,d){this.el=o,this.ngZone=d,this.options=null,this.theme=null,this.initOpts=null,this.merge=null,this.autoResize=!0,this.loading=!1,this.loadingType="default",this.loadingOpts=null,this.chartInit=new we,this.optionsError=new we,this.chartClick=this.createLazyEvent("click"),this.chartDblClick=this.createLazyEvent("dblclick"),this.chartMouseDown=this.createLazyEvent("mousedown"),this.chartMouseMove=this.createLazyEvent("mousemove"),this.chartMouseUp=this.createLazyEvent("mouseup"),this.chartMouseOver=this.createLazyEvent("mouseover"),this.chartMouseOut=this.createLazyEvent("mouseout"),this.chartGlobalOut=this.createLazyEvent("globalout"),this.chartContextMenu=this.createLazyEvent("contextmenu"),this.chartLegendSelectChanged=this.createLazyEvent("legendselectchanged"),this.chartLegendSelected=this.createLazyEvent("legendselected"),this.chartLegendUnselected=this.createLazyEvent("legendunselected"),this.chartLegendScroll=this.createLazyEvent("legendscroll"),this.chartDataZoom=this.createLazyEvent("datazoom"),this.chartDataRangeSelected=this.createLazyEvent("datarangeselected"),this.chartTimelineChanged=this.createLazyEvent("timelinechanged"),this.chartTimelinePlayChanged=this.createLazyEvent("timelineplaychanged"),this.chartRestore=this.createLazyEvent("restore"),this.chartDataViewChanged=this.createLazyEvent("dataviewchanged"),this.chartMagicTypeChanged=this.createLazyEvent("magictypechanged"),this.chartPieSelectChanged=this.createLazyEvent("pieselectchanged"),this.chartPieSelected=this.createLazyEvent("pieselected"),this.chartPieUnselected=this.createLazyEvent("pieunselected"),this.chartMapSelectChanged=this.createLazyEvent("mapselectchanged"),this.chartMapSelected=this.createLazyEvent("mapselected"),this.chartMapUnselected=this.createLazyEvent("mapunselected"),this.chartAxisAreaSelected=this.createLazyEvent("axisareaselected"),this.chartFocusNodeAdjacency=this.createLazyEvent("focusnodeadjacency"),this.chartUnfocusNodeAdjacency=this.createLazyEvent("unfocusnodeadjacency"),this.chartBrush=this.createLazyEvent("brush"),this.chartBrushEnd=this.createLazyEvent("brushend"),this.chartBrushSelected=this.createLazyEvent("brushselected"),this.chartRendered=this.createLazyEvent("rendered"),this.chartFinished=this.createLazyEvent("finished"),this.animationFrameID=null,this.chart$=new jE(1),this.resize$=new He,this.changeFilter=new T9,this.echarts=e.echarts}ngOnChanges(e){this.changeFilter.doFilter(e)}ngOnInit(){if(!window.ResizeObserver)throw new Error("please install a polyfill for ResizeObserver");this.resizeSub=this.resize$.pipe(function M9(i,a=Ru,e=l5){const o=Fy(i,a);return function c5(i,a=l5){return Gn((e,o)=>{const{leading:d,trailing:h}=a;let _=!1,w=null,D=null,k=!1;const P=()=>{null==D||D.unsubscribe(),D=null,h&&(Z(),k&&o.complete())},B=()=>{D=null,k&&o.complete()},W=te=>D=$e(i(te)).subscribe(si(o,P,B)),Z=()=>{if(_){_=!1;const te=w;w=null,o.next(te),!k&&W(te)}};e.subscribe(si(o,te=>{_=!0,w=te,(!D||D.closed)&&(d?Z():W(te))},()=>{k=!0,(!(h&&_&&D)||D.closed)&&o.complete()}))})}(()=>o,e)}(100,Ru,{leading:!1,trailing:!0})).subscribe(()=>this.resize()),this.autoResize&&(this.resizeOb=this.ngZone.runOutsideAngular(()=>new window.ResizeObserver(()=>{this.animationFrameID=window.requestAnimationFrame(()=>this.resize$.next())})),this.resizeOb.observe(this.el.nativeElement)),this.changeFilter.notFirstAndEmpty("options",e=>this.onOptionsChange(e)),this.changeFilter.notFirstAndEmpty("merge",e=>this.setOption(e)),this.changeFilter.has("loading",e=>this.toggleLoading(!!e)),this.changeFilter.notFirst("theme",()=>this.refreshChart())}ngOnDestroy(){window.clearTimeout(this.initChartTimer),this.resizeSub&&this.resizeSub.unsubscribe(),this.animationFrameID&&window.cancelAnimationFrame(this.animationFrameID),this.resizeOb&&this.resizeOb.unobserve(this.el.nativeElement),this.loadingSub&&this.loadingSub.unsubscribe(),this.changeFilter.dispose(),this.dispose()}ngAfterViewInit(){this.initChartTimer=window.setTimeout(()=>this.initChart())}dispose(){this.chart&&(this.chart.isDisposed()||this.chart.dispose(),this.chart=null)}resize(){this.chart&&this.chart.resize()}toggleLoading(e){this.chart?e?this.chart.showLoading(this.loadingType,this.loadingOpts):this.chart.hideLoading():this.loadingSub=this.chart$.subscribe(o=>e?o.showLoading(this.loadingType,this.loadingOpts):o.hideLoading())}setOption(e,o){if(this.chart)try{this.chart.setOption(e,o)}catch(d){console.error(d),this.optionsError.emit(d)}}refreshChart(){var e=this;return Qe(function*(){e.dispose(),yield e.initChart()})()}createChart(){const e=this.el.nativeElement;if(window&&window.getComputedStyle){const o=window.getComputedStyle(e,null).getPropertyValue("height");(!o||"0px"===o)&&(!e.style.height||"0px"===e.style.height)&&(e.style.height="400px")}return this.ngZone.runOutsideAngular(()=>("function"==typeof this.echarts?this.echarts:()=>Promise.resolve(this.echarts))().then(({init:d})=>d(e,this.theme,this.initOpts)))}initChart(){var e=this;return Qe(function*(){yield e.onOptionsChange(e.options),e.merge&&e.chart&&e.setOption(e.merge)})()}onOptionsChange(e){var o=this;return Qe(function*(){e&&(o.chart||(o.chart=yield o.createChart(),o.chart$.next(o.chart),o.chartInit.emit(o.chart)),o.setOption(o.options,!0))})()}createLazyEvent(e){return this.chartInit.pipe(nr(o=>new Hn(d=>(o.on(e,h=>this.ngZone.run(()=>d.next(h))),()=>{this.chart&&(this.chart.isDisposed()||o.off(e))}))))}}return i.\u0275fac=function(e){return new(e||i)(F(d5),F(Be),F(et))},i.\u0275dir=me({type:i,selectors:[["echarts"],["","echarts",""]],inputs:{options:"options",theme:"theme",initOpts:"initOpts",merge:"merge",autoResize:"autoResize",loading:"loading",loadingType:"loadingType",loadingOpts:"loadingOpts"},outputs:{chartInit:"chartInit",optionsError:"optionsError",chartClick:"chartClick",chartDblClick:"chartDblClick",chartMouseDown:"chartMouseDown",chartMouseMove:"chartMouseMove",chartMouseUp:"chartMouseUp",chartMouseOver:"chartMouseOver",chartMouseOut:"chartMouseOut",chartGlobalOut:"chartGlobalOut",chartContextMenu:"chartContextMenu",chartLegendSelectChanged:"chartLegendSelectChanged",chartLegendSelected:"chartLegendSelected",chartLegendUnselected:"chartLegendUnselected",chartLegendScroll:"chartLegendScroll",chartDataZoom:"chartDataZoom",chartDataRangeSelected:"chartDataRangeSelected",chartTimelineChanged:"chartTimelineChanged",chartTimelinePlayChanged:"chartTimelinePlayChanged",chartRestore:"chartRestore",chartDataViewChanged:"chartDataViewChanged",chartMagicTypeChanged:"chartMagicTypeChanged",chartPieSelectChanged:"chartPieSelectChanged",chartPieSelected:"chartPieSelected",chartPieUnselected:"chartPieUnselected",chartMapSelectChanged:"chartMapSelectChanged",chartMapSelected:"chartMapSelected",chartMapUnselected:"chartMapUnselected",chartAxisAreaSelected:"chartAxisAreaSelected",chartFocusNodeAdjacency:"chartFocusNodeAdjacency",chartUnfocusNodeAdjacency:"chartUnfocusNodeAdjacency",chartBrush:"chartBrush",chartBrushEnd:"chartBrushEnd",chartBrushSelected:"chartBrushSelected",chartRendered:"chartRendered",chartFinished:"chartFinished"},exportAs:["echarts"],features:[jn]}),i})(),u5=(()=>{class i{static forRoot(e){return{ngModule:i,providers:[{provide:d5,useValue:e}]}}static forChild(){return{ngModule:i}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();function A9(i,a){if(1&i&&(I(0,"div",21)(1,"div",11),pe(2,"img",3),I(3,"div",12),Y(4),O()(),I(5,"div",13)(6,"a",15)(7,"uds-translate"),Y(8,"View service pools"),O()()()()),2&i){const e=X(2);N(2),z("src",e.api.staticURL("admin/img/icons/logs.png"),Kt),N(2),Ie(" ",e.data.restrained," ")}}function k9(i,a){if(1&i){const e=Ee();I(0,"div")(1,"div",8)(2,"div",9)(3,"div",10)(4,"div",11),pe(5,"img",3),I(6,"div",12),Y(7),O()(),I(8,"div",13)(9,"a",14)(10,"uds-translate"),Y(11,"View authenticators"),O()()()(),I(12,"div",10)(13,"div",11),pe(14,"img",3),I(15,"div",12),Y(16),O()(),I(17,"div",13)(18,"a",15)(19,"uds-translate"),Y(20,"View service pools"),O()()()(),I(21,"div",10)(22,"div",11),pe(23,"img",3),I(24,"div",12),Y(25),O()(),I(26,"div",13)(27,"a",15)(28,"uds-translate"),Y(29,"View service pools"),O()()()(),J(30,A9,9,2,"div",16),O(),I(31,"div",17)(32,"div",18)(33,"div",19)(34,"uds-translate"),Y(35,"Assigned services chart"),O()(),I(36,"div",20),Q("chartInit",function(d){return le(e),oe(X().chartInit("assigned",d))}),O()(),I(37,"div",18)(38,"div",19)(39,"uds-translate"),Y(40,"In use services chart"),O()(),I(41,"div",20),Q("chartInit",function(d){return le(e),oe(X().chartInit("inuse",d))}),O()()()()()}if(2&i){const e=X();N(5),z("src",e.api.staticURL("admin/img/icons/authenticators.png"),Kt),N(2),Ie(" ",e.data.users," "),N(7),z("src",e.api.staticURL("admin/img/icons/pools.png"),Kt),N(2),Ie(" ",e.data.pools," "),N(7),z("src",e.api.staticURL("admin/img/icons/services.png"),Kt),N(2),Ie(" ",e.data.user_services," "),N(5),z("ngIf",e.data.restrained),N(6),z("options",e.assignedChartOpts),N(5),z("options",e.inuseChartOpts)}}function h5(i,a){1&i&&(I(0,"div",22)(1,"div",23)(2,"div",24)(3,"uds-translate"),Y(4,"UDS Administration"),O()(),I(5,"div",25)(6,"p")(7,"uds-translate"),Y(8,"You are accessing UDS Administration as staff member."),O()(),I(9,"p")(10,"uds-translate"),Y(11,"This means that you have restricted access to elements."),O()(),I(12,"p")(13,"uds-translate"),Y(14,"In order to increase your access privileges, please contact your local UDS administrator. "),O()(),pe(15,"br"),I(16,"p")(17,"uds-translate"),Y(18,"Thank you."),O()()()()())}let E9=(()=>{class i{constructor(e,o){this.api=e,this.rest=o,this.data={},this.assignedChartInstance=null,this.assignedChartOpts={},this.inuseChartOpts={},this.inuseChartInstance=null}onResize(e){this.assignedChartInstance&&this.assignedChartInstance.resize(),this.inuseChartInstance&&this.inuseChartInstance.resize()}ngOnInit(){if(this.api.user.isAdmin){this.rest.system.information().then(e=>{this.data={users:django.gettext("#USR_NUMBER# users, #GRP_NUMBER# groups").replace("#USR_NUMBER#",e.users).replace("#GRP_NUMBER#",e.groups),pools:django.gettext("#POOLS_NUMBER# service pools").replace("#POOLS_NUMBER#",e.service_pools),user_services:django.gettext("#SERVICES_NUMBER# user services").replace("#SERVICES_NUMBER#",e.user_services)},e.restrained_services_pools>0&&(this.data.restrained=django.gettext("#RESTRAINED_NUMBER# restrained services!").replace("#RESTRAINED_NUMBER#",e.restrained_services_pools))});for(const e of["assigned","inuse"])this.rest.system.stats(e).then(o=>{const d={tooltip:{trigger:"axis"},toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{}}},xAxis:{type:"category",data:o.map(h=>po("SHORT_DATE_FORMAT",new Date(h.stamp))),boundaryGap:!1},yAxis:{type:"value",boundaryGap:!1},series:[{name:"assigned"===e?django.gettext("Assigned services"):django.gettext("Services in use"),type:"line",smooth:!0,areaStyle:{},data:o.map(h=>h.value)}]};"assigned"===e?this.assignedChartOpts=d:this.inuseChartOpts=d})}}chartInit(e,o){"assigned"===e?this.assignedChartInstance=o:this.inuseChartInstance=o}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-summary"]],hostBindings:function(e,o){1&e&&Q("resize",function(h){return o.onResize(h)},0,rD)},decls:11,vars:3,consts:[[1,"card"],[1,"card-header"],[1,"card-title"],[3,"src"],[1,"card-subtitle"],[1,"card-content"],[4,"ngIf","ngIfElse"],["noAdmin",""],[1,"admin"],[1,"information"],[1,"info-panel"],[1,"info-panel-data"],[1,"info-text"],[1,"info-panel-link"],["mat-button","","routerLink","/authenticators"],["mat-button","","routerLink","/pools/service-pools"],["class","info-panel info-danger",4,"ngIf"],[1,"statistics"],[1,"statistics-chart"],[1,"statistics-title"],["echarts","","theme","dark-digerati",3,"options","chartInit"],[1,"info-panel","info-danger"],[1,"staff-container"],[1,"staff","mat-elevation-z8"],[1,"staff-header"],[1,"staff-content"]],template:function(e,o){if(1&e&&(I(0,"div",0)(1,"div",1)(2,"div",2),pe(3,"img",3),I(4,"uds-translate"),Y(5,"Dashboard"),O()(),pe(6,"div",4),O(),I(7,"div",5),J(8,k9,42,9,"div",6),J(9,h5,19,0,"ng-template",null,7,Zr),O()()),2&e){const d=on(10);N(3),z("src",o.api.staticURL("admin/img/icons/dashboard-monitor.png"),Kt),N(5),z("ngIf",o.api.user.isAdmin)("ngIfElse",d)}},dependencies:[en,Is,HC,$E,Pn],styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}.staff-container[_ngcontent-%COMP%]{margin-top:2rem;display:flex;justify-content:center}.staff[_ngcontent-%COMP%]{border:#337ab7;border-width:1px;border-style:solid}.staff-header[_ngcontent-%COMP%]{display:flex;justify-content:center;background-color:#337ab7;color:#fff;font-weight:700;padding:.5rem 1rem}.staff-content[_ngcontent-%COMP%]{padding:.5rem 1rem}.admin[_ngcontent-%COMP%]{display:flex;flex-direction:column}.information[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-around;width:100%}.info-panel[_ngcontent-%COMP%]{border-color:#333;background-image:linear-gradient(135deg,#fdfcfb 0%,#e2d1c3 100%);box-shadow:#00000024 0 1px 4px;box-sizing:border-box;color:#333;display:flex;flex-direction:column;margin:2rem 1rem;width:100%}.info-danger[_ngcontent-%COMP%]{background-image:linear-gradient(to right,#f83600 0%,#f9d423 100%);color:#fff;font-weight:700;font-size:1.5em}.info-panel-data[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;padding:1rem}.info-panel-data[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{margin-right:1rem;width:5rem}.info-text[_ngcontent-%COMP%]{width:100%;text-align:center}.info-panel-link[_ngcontent-%COMP%]{background:steelblue}.info-panel-link[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{width:100%;color:#fff}.statistics[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-around;width:100%}.statistics-title[_ngcontent-%COMP%]{background:steelblue;width:100%;color:#fff;padding:1rem 0rem;text-align:center}.statistics-chart[_ngcontent-%COMP%]{border-color:#333;box-shadow:#00000024 0 1px 4px;box-sizing:border-box;color:#333;display:flex;flex-direction:column;margin:2rem 1rem;width:100%;height:400px} .dark-theme .staff{border:#337ab7} .dark-theme .staff-header{color:#fff} .dark-theme .info-panel{border-color:lightned(#303030,60%);background-image:linear-gradient(135deg,#fdfcfb 0%,#e2d1c3 100%);box-shadow:#00000024 0 1px 4px;color:#b3b3b3} .dark-theme .info-danger{background-image:linear-gradient(to right,#f83600 0%,#f9d423 100%);color:#fff} .dark-theme .info-panel-link{background:steelblue} .dark-theme .info-panel-link a{color:#fff} .dark-theme .statistics-title{color:#fff} .dark-theme .statistics-chart{border-color:#333;box-shadow:#00000024 0 1px 4px;color:#333}']}),i})();class I9{}function WE(i){return i&&"function"==typeof i.connect&&!(i instanceof ty)}class qE{applyChanges(a,e,o,d,h){a.forEachOperation((_,w,D)=>{let k,P;if(null==_.previousIndex){const W=o(_,w,D);k=e.createEmbeddedView(W.templateRef,W.context,W.index),P=1}else null==D?(e.remove(w),P=3):(k=e.get(w),e.move(k,D),P=2);var B;h&&h({context:null===(B=k)||void 0===B?void 0:B.context,operation:P,record:_})})}detach(){}}class Sg{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(a=!1,e,o=!0,d){this._multiple=a,this._emitChanges=o,this.compareWith=d,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new He,e&&e.length&&(a?e.forEach(h=>this._markSelected(h)):this._markSelected(e[0]),this._selectedToEmit.length=0)}select(...a){this._verifyValueAssignment(a),a.forEach(o=>this._markSelected(o));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}deselect(...a){this._verifyValueAssignment(a),a.forEach(o=>this._unmarkSelected(o));const e=this._hasQueuedChanges();return this._emitChangeEvent(),e}setSelection(...a){this._verifyValueAssignment(a);const e=this.selected,o=new Set(a);a.forEach(h=>this._markSelected(h)),e.filter(h=>!o.has(h)).forEach(h=>this._unmarkSelected(h));const d=this._hasQueuedChanges();return this._emitChangeEvent(),d}toggle(a){return this.isSelected(a)?this.deselect(a):this.select(a)}clear(a=!0){this._unmarkAll();const e=this._hasQueuedChanges();return a&&this._emitChangeEvent(),e}isSelected(a){return this._selection.has(this._getConcreteValue(a))}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(a){this._multiple&&this.selected&&this._selected.sort(a)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(a){a=this._getConcreteValue(a),this.isSelected(a)||(this._multiple||this._unmarkAll(),this.isSelected(a)||this._selection.add(a),this._emitChanges&&this._selectedToEmit.push(a))}_unmarkSelected(a){a=this._getConcreteValue(a),this.isSelected(a)&&(this._selection.delete(a),this._emitChanges&&this._deselectedToEmit.push(a))}_unmarkAll(){this.isEmpty()||this._selection.forEach(a=>this._unmarkSelected(a))}_verifyValueAssignment(a){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}_getConcreteValue(a){if(this.compareWith){for(let e of this._selection)if(this.compareWith(a,e))return e;return a}return a}}const Dg=new be("_ViewRepeater"),p5=["matFormFieldNotchedOutline",""],m5=["*"],A1=["textField"],uc=["iconPrefixContainer"],P9=["textPrefixContainer"];function g5(i,a){1&i&&pe(0,"span",19)}function XE(i,a){if(1&i){const e=Ee();I(0,"label",17),Q("cdkObserveContent",function(){return le(e),oe(X(2)._refreshOutlineNotchWidth())}),ut(1,1),J(2,g5,1,0,"span",18),O()}if(2&i){const e=X(2);z("floating",e._shouldLabelFloat())("cdkObserveContentDisabled",!e._hasOutline())("id",e._labelId),Ve("for",e._control.id)("aria-owns",e._control.id),N(2),z("ngIf",!e.hideRequiredMarker&&e._control.required)}}function R9(i,a){1&i&&J(0,XE,3,6,"label",16),2&i&&z("ngIf",X()._hasFloatingLabel())}function O9(i,a){1&i&&pe(0,"div",20)}function L9(i,a){}function v5(i,a){1&i&&J(0,L9,0,0,"ng-template",22),2&i&&(X(2),z("ngTemplateOutlet",on(1)))}function F9(i,a){if(1&i&&(I(0,"div",21),J(1,v5,1,1,"ng-template",9),O()),2&i){const e=X();z("matFormFieldNotchedOutlineOpen",e._shouldLabelFloat())("matFormFieldNotchedOutlineLabelWidth",e._labelWidth),N(1),z("ngIf",!e._forceDisplayInfixLabel())}}function _5(i,a){1&i&&(I(0,"div",23,24),ut(2,2),O())}function y5(i,a){1&i&&(I(0,"div",25,26),ut(2,3),O())}function N9(i,a){}function B9(i,a){1&i&&J(0,N9,0,0,"ng-template",22),2&i&&(X(),z("ngTemplateOutlet",on(1)))}function V9(i,a){1&i&&(I(0,"div",27),ut(1,4),O())}function z9(i,a){1&i&&(I(0,"div",28),ut(1,5),O())}function H9(i,a){1&i&&pe(0,"div",29)}function b5(i,a){1&i&&(I(0,"div",30),ut(1,6),O()),2&i&&z("@transitionMessages",X()._subscriptAnimationState)}function G9(i,a){if(1&i&&(I(0,"mat-hint",34),Y(1),O()),2&i){const e=X(2);z("id",e._hintLabelId),N(1),Sn(e.hintLabel)}}function Mg(i,a){if(1&i&&(I(0,"div",31),J(1,G9,2,2,"mat-hint",32),ut(2,7),pe(3,"div",33),ut(4,8),O()),2&i){const e=X();z("@transitionMessages",e._subscriptAnimationState),N(1),z("ngIf",e.hintLabel)}}const w5=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],x5=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];let fi=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["mat-label"]]}),i})();const U9=new be("MatError");let $9=0,C5=(()=>{class i{constructor(){this.align="start",this.id="mat-mdc-hint-"+$9++}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(e,o){2&e&&(la("id",o.id),Ve("align",null),st("mat-mdc-form-field-hint-end","end"===o.align))},inputs:{align:"align",id:"id"}}),i})();const W9=new be("MatPrefix"),S5=new be("MatSuffix");let Tg=(()=>{class i{constructor(){this._isText=!1}set _isTextSelector(e){this._isText=!0}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:["matTextSuffix","_isTextSelector"]},features:[Ue([{provide:S5,useExisting:i}])]}),i})(),ZE=(()=>{class i{constructor(e){this._elementRef=e,this.floating=!1}getWidth(){return function q9(i){if(null!==i.offsetParent)return i.scrollWidth;const e=i.cloneNode(!0);e.style.setProperty("position","absolute"),e.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(e);const o=e.scrollWidth;return e.remove(),o}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}}return i.\u0275fac=function(e){return new(e||i)(F(Be))},i.\u0275dir=me({type:i,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(e,o){2&e&&st("mdc-floating-label--float-above",o.floating)},inputs:{floating:"floating"}}),i})();const D5="mdc-line-ripple--active",k1="mdc-line-ripple--deactivating";let M5=(()=>{class i{constructor(e,o){this._elementRef=e,this._handleTransitionEnd=d=>{const h=this._elementRef.nativeElement.classList,_=h.contains(k1);"opacity"===d.propertyName&&_&&h.remove(D5,k1)},o.runOutsideAngular(()=>{e.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const e=this._elementRef.nativeElement.classList;e.remove(k1),e.add(D5)}deactivate(){this._elementRef.nativeElement.classList.add(k1)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(et))},i.\u0275dir=me({type:i,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]}),i})(),KE=(()=>{class i{constructor(e,o){this._elementRef=e,this._ngZone=o,this.labelWidth=0,this.open=!1}ngAfterViewInit(){const e=this._elementRef.nativeElement.querySelector(".mdc-floating-label");e?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(e.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>e.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_getNotchWidth(){return this.open?this.labelWidth>0?`calc(${this.labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:"0px":null}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(et))},i.\u0275cmp=_e({type:i,selectors:[["div","matFormFieldNotchedOutline",""]],hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(e,o){2&e&&st("mdc-notched-outline--notched",o.open)},inputs:{labelWidth:["matFormFieldNotchedOutlineLabelWidth","labelWidth"],open:["matFormFieldNotchedOutlineOpen","open"]},attrs:p5,ngContentSelectors:m5,decls:4,vars:2,consts:[[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(e,o){1&e&&(On(),pe(0,"div",0),I(1,"div",1),ut(2),O(),pe(3,"div",2)),2&e&&(N(1),Ta("width",o._getNotchWidth()))},encapsulation:2,changeDetection:0}),i})();const X9={transitionMessages:rr("transitionMessages",[Fn("enter",dt({opacity:1,transform:"translateY(0%)"})),An("void => enter",[dt({opacity:0,transform:"translateY(-5px)"}),Ln("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let E1=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i}),i})();const Ag=new be("MatFormField"),I1=new be("MAT_FORM_FIELD_DEFAULT_OPTIONS");let QE=0,ei=(()=>{class i{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(e){this._hideRequiredMarker=Ge(e)}get floatLabel(){var e;return this._floatLabel||(null===(e=this._defaults)||void 0===e?void 0:e.floatLabel)||"auto"}set floatLabel(e){e!==this._floatLabel&&(this._floatLabel=e,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(e){var o;const d=this._appearance,h=e||(null===(o=this._defaults)||void 0===o?void 0:o.appearance)||"fill";this._appearance=h,"outline"===this._appearance&&this._appearance!==d&&(this._refreshOutlineNotchWidth(),this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){var e;return this._subscriptSizing||(null===(e=this._defaults)||void 0===e?void 0:e.subscriptSizing)||"fixed"}set subscriptSizing(e){var o;this._subscriptSizing=e||(null===(o=this._defaults)||void 0===o?void 0:o.subscriptSizing)||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(e){this._hintLabel=e,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(e){this._explicitFormFieldControl=e}constructor(e,o,d,h,_,w,D,k){this._elementRef=e,this._changeDetectorRef=o,this._ngZone=d,this._dir=h,this._platform=_,this._defaults=w,this._animationMode=D,this._document=k,this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+QE++,this._hintLabelId="mat-mdc-hint-"+QE++,this._subscriptAnimationState="",this._labelWidth=0,this._destroyed=new He,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,w&&(w.appearance&&(this.appearance=w.appearance),this._hideRequiredMarker=Boolean(null==w?void 0:w.hideRequiredMarker),w.color&&(this.color=w.color))}ngAfterViewInit(){var e,o;this._updateFocusState(),this._refreshOutlineNotchWidth(),null!==(e=this._document)&&void 0!==e&&null!==(o=e.fonts)&&void 0!==o&&o.ready?this._document.fonts.ready.then(()=>{this._refreshOutlineNotchWidth(),this._changeDetectorRef.markForCheck()}):setTimeout(()=>this._refreshOutlineNotchWidth(),100),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){const e=this._control;e.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${e.controlType}`),e.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),e.ngControl&&e.ngControl.valueChanges&&e.ngControl.valueChanges.pipe(Et(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(e=>!e._isText),this._hasTextPrefix=!!this._prefixChildren.find(e=>e._isText),this._hasIconSuffix=!!this._suffixChildren.find(e=>!e._isText),this._hasTextSuffix=!!this._suffixChildren.find(e=>e._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),Wn(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){var e,o;if(this._control.focused&&!this._isFocused)this._isFocused=!0,null===(o=this._lineRipple)||void 0===o||o.activate();else if(!this._control.focused&&(this._isFocused||null===this._isFocused)){var d;this._isFocused=!1,null===(d=this._lineRipple)||void 0===d||d.deactivate()}null===(e=this._textField)||void 0===e||e.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(Et(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe(Et(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(e){const o=this._control?this._control.ngControl:null;return o&&o[e]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||(this._labelWidth=this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let e=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&e.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const o=this._hintChildren?this._hintChildren.find(h=>"start"===h.align):null,d=this._hintChildren?this._hintChildren.find(h=>"end"===h.align):null;o?e.push(o.id):this._hintLabel&&e.push(this._hintLabelId),d&&e.push(d.id)}else this._errorChildren&&e.push(...this._errorChildren.map(o=>o.id));this._control.setDescribedByIds(e)}}_updateOutlineLabelOffset(){var e,o,d,h;if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;const _=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(_.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdateOnStable=!0);const w=null===(e=this._iconPrefixContainer)||void 0===e?void 0:e.nativeElement,D=null===(o=this._textPrefixContainer)||void 0===o?void 0:o.nativeElement,k=null!==(d=null==w?void 0:w.getBoundingClientRect().width)&&void 0!==d?d:0,P=null!==(h=null==D?void 0:D.getBoundingClientRect().width)&&void 0!==h?h:0;_.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${k+P}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`}_isAttachedToDom(){const e=this._elementRef.nativeElement;if(e.getRootNode){const o=e.getRootNode();return o&&o!==e}return document.documentElement.contains(e)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(et),F(Ci),F(Qn),F(I1,8),F(Ei,8),F(ht))},i.\u0275cmp=_e({type:i,selectors:[["mat-form-field"]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,fi,5),Qt(d,fi,7),Qt(d,E1,5),Qt(d,W9,5),Qt(d,S5,5),Qt(d,U9,5),Qt(d,C5,5)),2&e){let h;Pe(h=Ae())&&(o._labelChildNonStatic=h.first),Pe(h=Ae())&&(o._labelChildStatic=h.first),Pe(h=Ae())&&(o._formFieldControl=h.first),Pe(h=Ae())&&(o._prefixChildren=h),Pe(h=Ae())&&(o._suffixChildren=h),Pe(h=Ae())&&(o._errorChildren=h),Pe(h=Ae())&&(o._hintChildren=h)}},viewQuery:function(e,o){if(1&e&&(ct(A1,5),ct(uc,5),ct(P9,5),ct(ZE,5),ct(KE,5),ct(M5,5)),2&e){let d;Pe(d=Ae())&&(o._textField=d.first),Pe(d=Ae())&&(o._iconPrefixContainer=d.first),Pe(d=Ae())&&(o._textPrefixContainer=d.first),Pe(d=Ae())&&(o._floatingLabel=d.first),Pe(d=Ae())&&(o._notchedOutline=d.first),Pe(d=Ae())&&(o._lineRipple=d.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(e,o){2&e&&st("mat-mdc-form-field-label-always-float",o._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",o._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",o._hasIconSuffix)("mat-form-field-invalid",o._control.errorState)("mat-form-field-disabled",o._control.disabled)("mat-form-field-autofilled",o._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===o._animationMode)("mat-form-field-appearance-fill","fill"==o.appearance)("mat-form-field-appearance-outline","outline"==o.appearance)("mat-form-field-hide-placeholder",o._hasFloatingLabel()&&!o._shouldLabelFloat())("mat-focused",o._control.focused)("mat-primary","accent"!==o.color&&"warn"!==o.color)("mat-accent","accent"===o.color)("mat-warn","warn"===o.color)("ng-untouched",o._shouldForward("untouched"))("ng-touched",o._shouldForward("touched"))("ng-pristine",o._shouldForward("pristine"))("ng-dirty",o._shouldForward("dirty"))("ng-valid",o._shouldForward("valid"))("ng-invalid",o._shouldForward("invalid"))("ng-pending",o._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[Ue([{provide:Ag,useExisting:i}])],ngContentSelectors:x5,decls:18,vars:23,consts:[["labelTemplate",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],["textField",""],["class","mat-mdc-form-field-focus-overlay",4,"ngIf"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth",4,"ngIf"],["class","mat-mdc-form-field-icon-prefix",4,"ngIf"],["class","mat-mdc-form-field-text-prefix",4,"ngIf"],[1,"mat-mdc-form-field-infix"],[3,"ngIf"],["class","mat-mdc-form-field-text-suffix",4,"ngIf"],["class","mat-mdc-form-field-icon-suffix",4,"ngIf"],["matFormFieldLineRipple","",4,"ngIf"],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align",3,"ngSwitch"],["class","mat-mdc-form-field-error-wrapper",4,"ngSwitchCase"],["class","mat-mdc-form-field-hint-wrapper",4,"ngSwitchCase"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent",4,"ngIf"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent"],["aria-hidden","true","class","mat-mdc-form-field-required-marker mdc-floating-label--required",4,"ngIf"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-focus-overlay"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-icon-prefix"],["iconPrefixContainer",""],[1,"mat-mdc-form-field-text-prefix"],["textPrefixContainer",""],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id",4,"ngIf"],[1,"mat-mdc-form-field-hint-spacer"],[3,"id"]],template:function(e,o){1&e&&(On(w5),J(0,R9,1,1,"ng-template",null,0,Zr),I(2,"div",1,2),Q("click",function(h){return o._control.onContainerClick&&o._control.onContainerClick(h)}),J(4,O9,1,0,"div",3),I(5,"div",4),J(6,F9,2,3,"div",5),J(7,_5,3,0,"div",6),J(8,y5,3,0,"div",7),I(9,"div",8),J(10,B9,1,1,"ng-template",9),ut(11),O(),J(12,V9,2,0,"div",10),J(13,z9,2,0,"div",11),O(),J(14,H9,1,0,"div",12),O(),I(15,"div",13),J(16,b5,2,1,"div",14),J(17,Mg,5,2,"div",15),O()),2&e&&(N(2),st("mdc-text-field--filled",!o._hasOutline())("mdc-text-field--outlined",o._hasOutline())("mdc-text-field--no-label",!o._hasFloatingLabel())("mdc-text-field--disabled",o._control.disabled)("mdc-text-field--invalid",o._control.errorState),N(2),z("ngIf",!o._hasOutline()&&!o._control.disabled),N(2),z("ngIf",o._hasOutline()),N(1),z("ngIf",o._hasIconPrefix),N(1),z("ngIf",o._hasTextPrefix),N(2),z("ngIf",!o._hasOutline()||o._forceDisplayInfixLabel()),N(2),z("ngIf",o._hasTextSuffix),N(1),z("ngIf",o._hasIconSuffix),N(1),z("ngIf",!o._hasOutline()),N(1),st("mat-mdc-form-field-subscript-dynamic-size","dynamic"===o.subscriptSizing),z("ngSwitch",o._getDisplayedMessages()),N(1),z("ngSwitchCase","error"),N(1),z("ngSwitchCase","hint"))},dependencies:[en,px,td,mf,$y,C5,ZE,KE,M5],styles:['.mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)::after,.mdc-floating-label--required:not(.mdc-floating-label--hide-required-marker)[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal;pointer-events:all}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}'],encapsulation:2,data:{animation:[X9.transitionMessages]},changeDetection:0}),i})(),P1=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,Ri,Dk,nn]}),i})();const vJ=["trigger"],Q9=["panel"];function J9(i,a){if(1&i&&(I(0,"span",10),Y(1),O()),2&i){const e=X();N(1),Sn(e.placeholder)}}function eY(i,a){if(1&i&&(I(0,"span",14),Y(1),O()),2&i){const e=X(2);N(1),Sn(e.triggerValue)}}function tY(i,a){1&i&&ut(0,0,["*ngSwitchCase","true"])}function nY(i,a){1&i&&(I(0,"span",11),J(1,eY,2,1,"span",12),J(2,tY,1,0,"ng-content",13),O()),2&i&&(z("ngSwitch",!!X().customTrigger),N(2),z("ngSwitchCase",!0))}function hc(i,a){if(1&i){const e=Ee();Wr(),xc(),I(0,"div",15,16),Q("@transformPanel.done",function(d){return le(e),oe(X()._panelDoneAnimatingStream.next(d.toState))})("keydown",function(d){return le(e),oe(X()._handleKeydown(d))}),ut(2,1),O()}if(2&i){const e=X();eM("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",e._getPanelTheme(),""),z("ngClass",e.panelClass)("@transformPanel","showing"),Ve("id",e.id+"-panel")("aria-multiselectable",e.multiple)("aria-label",e.ariaLabel||null)("aria-labelledby",e._getPanelAriaLabelledby())}}const kg=[[["mat-select-trigger"]],"*"],eI=["mat-select-trigger","*"],tI={transformPanelWrap:rr("transformPanelWrap",[An("* => void",eb("@transformPanel",[OC()],{optional:!0}))]),transformPanel:rr("transformPanel",[Fn("void",dt({opacity:0,transform:"scale(1, 0.8)"})),An("void => showing",Ln("120ms cubic-bezier(0, 0, 0.2, 1)",dt({opacity:1,transform:"scale(1, 1)"}))),An("* => void",Ln("100ms linear",dt({opacity:0})))])};let A5=0;const nI=new be("mat-select-scroll-strategy"),oY=new be("MAT_SELECT_CONFIG"),Eg={provide:nI,deps:[ea],useFactory:function aY(i){return()=>i.scrollStrategies.reposition()}},k5=new be("MatSelectTrigger");class E5{constructor(a,e){this.source=a,this.value=e}}const R1=oc(gd(Uo(vd(class{constructor(i,a,e,o,d){this._elementRef=i,this._defaultErrorStateMatcher=a,this._parentForm=e,this._parentFormGroup=o,this.ngControl=d,this.stateChanges=new He}}))));let sY=(()=>{class i extends R1{get focused(){return this._focused||this._panelOpen}get placeholder(){return this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get required(){var e,o,d,h;return null!==(e=null!==(o=this._required)&&void 0!==o?o:null===(d=this.ngControl)||void 0===d||null===(h=d.control)||void 0===h?void 0:h.hasValidator(ob.required))&&void 0!==e&&e}set required(e){this._required=Ge(e),this.stateChanges.next()}get multiple(){return this._multiple}set multiple(e){this._multiple=Ge(e)}get disableOptionCentering(){return this._disableOptionCentering}set disableOptionCentering(e){this._disableOptionCentering=Ge(e)}get compareWith(){return this._compareWith}set compareWith(e){this._compareWith=e,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(e){this._assignValue(e)&&this._onChange(e)}get typeaheadDebounceInterval(){return this._typeaheadDebounceInterval}set typeaheadDebounceInterval(e){this._typeaheadDebounceInterval=Br(e)}get id(){return this._id}set id(e){this._id=e||this._uid,this.stateChanges.next()}constructor(e,o,d,h,_,w,D,k,P,B,W,Z,te,ie){var de,he,Me;super(_,h,D,k,B),this._viewportRuler=e,this._changeDetectorRef=o,this._ngZone=d,this._dir=w,this._parentFormField=P,this._liveAnnouncer=te,this._defaultOptions=ie,this._panelOpen=!1,this._compareWith=(fe,Fe)=>fe===Fe,this._uid="mat-select-"+A5++,this._triggerAriaLabelledBy=null,this._destroy=new He,this._onChange=()=>{},this._onTouched=()=>{},this._valueId="mat-select-value-"+A5++,this._panelDoneAnimatingStream=new He,this._overlayPanelClass=(null===(de=this._defaultOptions)||void 0===de?void 0:de.overlayPanelClass)||"",this._focused=!1,this.controlType="mat-select",this._multiple=!1,this._disableOptionCentering=null!==(he=null===(Me=this._defaultOptions)||void 0===Me?void 0:Me.disableOptionCentering)&&void 0!==he&&he,this.ariaLabel="",this.optionSelectionChanges=Bm(()=>{const fe=this.options;return fe?fe.changes.pipe(wi(fe),nr(()=>Wn(...fe.map(Fe=>Fe.onSelectionChange)))):this._ngZone.onStable.pipe(Tn(1),nr(()=>this.optionSelectionChanges))}),this.openedChange=new we,this._openedStream=this.openedChange.pipe(Kn(fe=>fe),vt(()=>{})),this._closedStream=this.openedChange.pipe(Kn(fe=>!fe),vt(()=>{})),this.selectionChange=new we,this.valueChange=new we,this.ngControl&&(this.ngControl.valueAccessor=this),null!=(null==ie?void 0:ie.typeaheadDebounceInterval)&&(this._typeaheadDebounceInterval=ie.typeaheadDebounceInterval),this._scrollStrategyFactory=Z,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(W)||0,this.id=this.id}ngOnInit(){this._selectionModel=new Sg(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe(Sk(),Et(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen))}ngAfterContentInit(){this._initKeyManager(),this._selectionModel.changed.pipe(Et(this._destroy)).subscribe(e=>{e.added.forEach(o=>o.select()),e.removed.forEach(o=>o.deselect())}),this.options.changes.pipe(wi(null),Et(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const e=this._getTriggerAriaLabelledby(),o=this.ngControl;if(e!==this._triggerAriaLabelledBy){const d=this._elementRef.nativeElement;this._triggerAriaLabelledBy=e,e?d.setAttribute("aria-labelledby",e):d.removeAttribute("aria-labelledby")}o&&(this._previousControl!==o.control&&(void 0!==this._previousControl&&null!==o.disabled&&o.disabled!==this.disabled&&(this.disabled=o.disabled),this._previousControl=o.control),this.updateErrorState())}ngOnChanges(e){(e.disabled||e.userAriaDescribedBy)&&this.stateChanges.next(),e.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this._typeaheadDebounceInterval)}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck())}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched())}writeValue(e){this._assignValue(e)}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){var e,o;return this.multiple?(null===(e=this._selectionModel)||void 0===e?void 0:e.selected)||[]:null===(o=this._selectionModel)||void 0===o?void 0:o.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const e=this._selectionModel.selected.map(o=>o.viewValue);return this._isRtl()&&e.reverse(),e.join(", ")}return this._selectionModel.selected[0].viewValue}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(e){this.disabled||(this.panelOpen?this._handleOpenKeydown(e):this._handleClosedKeydown(e))}_handleClosedKeydown(e){const o=e.keyCode,d=40===o||38===o||37===o||39===o,h=13===o||32===o,_=this._keyManager;if(!_.isTyping()&&h&&!pr(e)||(this.multiple||e.altKey)&&d)e.preventDefault(),this.open();else if(!this.multiple){const w=this.selected;_.onKeydown(e);const D=this.selected;D&&w!==D&&this._liveAnnouncer.announce(D.viewValue,1e4)}}_handleOpenKeydown(e){const o=this._keyManager,d=e.keyCode,h=40===d||38===d,_=o.isTyping();if(h&&e.altKey)e.preventDefault(),this.close();else if(_||13!==d&&32!==d||!o.activeItem||pr(e))if(!_&&this._multiple&&65===d&&e.ctrlKey){e.preventDefault();const w=this.options.some(D=>!D.disabled&&!D.selected);this.options.forEach(D=>{D.disabled||(w?D.select():D.deselect())})}else{const w=o.activeItemIndex;o.onKeydown(e),this._multiple&&h&&e.shiftKey&&o.activeItem&&o.activeItemIndex!==w&&o.activeItem._selectViaInteraction()}else e.preventDefault(),o.activeItem._selectViaInteraction()}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){var e;this._focused=!1,null===(e=this._keyManager)||void 0===e||e.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe(Tn(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(e){if(this.options.forEach(o=>o.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&e)Array.isArray(e),e.forEach(o=>this._selectOptionByValue(o)),this._sortValues();else{const o=this._selectOptionByValue(e);o?this._keyManager.updateActiveItem(o):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(e){const o=this.options.find(d=>{if(this._selectionModel.isSelected(d))return!1;try{return null!=d.value&&this._compareWith(d.value,e)}catch{return!1}});return o&&this._selectionModel.select(o),o}_assignValue(e){return!!(e!==this._value||this._multiple&&Array.isArray(e))&&(this.options&&this._setSelectionByValue(e),this._value=e,!0)}_initKeyManager(){this._keyManager=new TB(this.options).withTypeAhead(this._typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const e=Wn(this.options.changes,this._destroy);this.optionSelectionChanges.pipe(Et(e)).subscribe(o=>{this._onSelect(o.source,o.isUserInput),o.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),Wn(...this.options.map(o=>o._stateChanges)).pipe(Et(e)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(e,o){const d=this._selectionModel.isSelected(e);null!=e.value||this._multiple?(d!==e.selected&&(e.selected?this._selectionModel.select(e):this._selectionModel.deselect(e)),o&&this._keyManager.setActiveItem(e),this.multiple&&(this._sortValues(),o&&this.focus())):(e.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(e.value)),d!==this._selectionModel.isSelected(e)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const e=this.options.toArray();this._selectionModel.sort((o,d)=>this.sortComparator?this.sortComparator(o,d,e):e.indexOf(o)-e.indexOf(d)),this.stateChanges.next()}}_propagateChanges(e){let o=null;o=this.multiple?this.selected.map(d=>d.value):this.selected?this.selected.value:e,this._value=o,this.valueChange.emit(o),this._onChange(o),this.selectionChange.emit(this._getChangeEvent(o)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){this._keyManager&&(this.empty?this._keyManager.setFirstItemActive():this._keyManager.setActiveItem(this._selectionModel.selected[0]))}_canOpen(){var e;return!this._panelOpen&&!this.disabled&&(null===(e=this.options)||void 0===e?void 0:e.length)>0}focus(e){this._elementRef.nativeElement.focus(e)}_getPanelAriaLabelledby(){var e;if(this.ariaLabel)return null;const o=null===(e=this._parentFormField)||void 0===e?void 0:e.getLabelId();return this.ariaLabelledby?(o?o+" ":"")+this.ariaLabelledby:o}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){var e;if(this.ariaLabel)return null;const o=null===(e=this._parentFormField)||void 0===e?void 0:e.getLabelId();let d=(o?o+" ":"")+this._valueId;return this.ariaLabelledby&&(d+=" "+this.ariaLabelledby),d}_panelDoneAnimating(e){this.openedChange.emit(e)}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this._panelOpen||!this.empty||this._focused&&!!this._placeholder}}return i.\u0275fac=function(e){return new(e||i)(F(ac),F(Jt),F(et),F(MC),F(Be),F(Ci,8),F(Gu,8),F(Xf,8),F(Ag,8),F(ul,10),Co("tabindex"),F(nI),F(CC),F(oY,8))},i.\u0275dir=me({type:i,viewQuery:function(e,o){if(1&e&&(ct(vJ,5),ct(Q9,5),ct(wB,5)),2&e){let d;Pe(d=Ae())&&(o.trigger=d.first),Pe(d=Ae())&&(o.panel=d.first),Pe(d=Ae())&&(o._overlayDir=d.first)}},inputs:{userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",placeholder:"placeholder",required:"required",multiple:"multiple",disableOptionCentering:"disableOptionCentering",compareWith:"compareWith",value:"value",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:"typeaheadDebounceInterval",sortComparator:"sortComparator",id:"id"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},features:[Se,jn]}),i})(),I5=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["mat-select-trigger"]],features:[Ue([{provide:k5,useExisting:i}])]}),i})(),ma=(()=>{class i extends sY{constructor(){var e,o;super(...arguments),this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}],this._hideSingleSelectionIndicator=null!==(e=null===(o=this._defaultOptions)||void 0===o?void 0:o.hideSingleSelectionIndicator)&&void 0!==e&&e}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}ngOnInit(){super.ngOnInit(),this._viewportRuler.change().pipe(Et(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(),this._changeDetectorRef.detectChanges())})}ngAfterViewInit(){this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin())}open(){this._overlayWidth=this._getOverlayWidth(),super.open(),this.stateChanges.next()}close(){super.close(),this.stateChanges.next()}_scrollOptionIntoView(e){const o=this.options.toArray()[e];if(o){const d=this.panel.nativeElement,h=PC(e,this.options,this.optionGroups),_=o._getHostElement();d.scrollTop=0===e&&1===h?0:Wk(_.offsetTop,_.offsetHeight,d.scrollTop,d.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(e){return new E5(this,e)}_getOverlayWidth(){return(this._preferredOverlayOrigin instanceof wk?this._preferredOverlayOrigin.elementRef:this._preferredOverlayOrigin||this._elementRef).nativeElement.getBoundingClientRect().width}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=Ge(e),this._syncParentProperties()}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-select"]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,k5,5),Qt(d,$i,5),Qt(d,IC,5)),2&e){let h;Pe(h=Ae())&&(o.customTrigger=h.first),Pe(h=Ae())&&(o.options=h),Pe(h=Ae())&&(o.optionGroups=h)}},hostAttrs:["role","combobox","aria-autocomplete","none","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(e,o){1&e&&Q("keydown",function(h){return o._handleKeydown(h)})("focus",function(){return o._onFocus()})("blur",function(){return o._onBlur()}),2&e&&(Ve("id",o.id)("tabindex",o.tabIndex)("aria-controls",o.panelOpen?o.id+"-panel":null)("aria-expanded",o.panelOpen)("aria-label",o.ariaLabel||null)("aria-required",o.required.toString())("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState)("aria-activedescendant",o._getAriaActiveDescendant()),st("mat-mdc-select-disabled",o.disabled)("mat-mdc-select-invalid",o.errorState)("mat-mdc-select-required",o.required)("mat-mdc-select-empty",o.empty)("mat-mdc-select-multiple",o.multiple))},inputs:{disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex",hideSingleSelectionIndicator:"hideSingleSelectionIndicator"},exportAs:["matSelect"],features:[Ue([{provide:E1,useExisting:i},{provide:jk,useExisting:i}]),Se],ngContentSelectors:eI,decls:11,vars:11,consts:[["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],[1,"mat-mdc-select-value",3,"ngSwitch"],["class","mat-mdc-select-placeholder mat-mdc-select-min-line",4,"ngSwitchCase"],["class","mat-mdc-select-value-text",3,"ngSwitch",4,"ngSwitchCase"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","backdropClick","attach","detach"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text",3,"ngSwitch"],["class","mat-mdc-select-min-line",4,"ngSwitchDefault"],[4,"ngSwitchCase"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"ngClass","keydown"],["panel",""]],template:function(e,o){if(1&e&&(On(kg),I(0,"div",0,1),Q("click",function(){return o.toggle()}),I(3,"div",2),J(4,J9,2,1,"span",3),J(5,nY,3,2,"span",4),O(),I(6,"div",5)(7,"div",6),Wr(),I(8,"svg",7),pe(9,"path",8),O()()()(),J(10,hc,3,9,"ng-template",9),Q("backdropClick",function(){return o.close()})("attach",function(){return o._onAttached()})("detach",function(){return o.close()})),2&e){const d=on(1);Ve("aria-owns",o.panelOpen?o.id+"-panel":null),N(3),z("ngSwitch",o.empty),Ve("id",o._valueId),N(1),z("ngSwitchCase",!0),N(1),z("ngSwitchCase",!1),N(5),z("cdkConnectedOverlayPanelClass",o._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",o._scrollStrategy)("cdkConnectedOverlayOrigin",o._preferredOverlayOrigin||d)("cdkConnectedOverlayOpen",o.panelOpen)("cdkConnectedOverlayPositions",o._positions)("cdkConnectedOverlayWidth",o._overlayWidth)}},dependencies:[Ss,td,mf,Bo,wB,wk],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}.mat-mdc-select{display:inline-block;width:100%;outline:none}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:translateY(-8px)}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-select-arrow{width:10px;height:5px;position:relative}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}.mdc-menu-surface.mat-mdc-select-panel{width:100%;max-height:275px;position:static;outline:0;margin:0;padding:8px 0;list-style-type:none}.mdc-menu-surface.mat-mdc-select-panel:focus{outline:none}.cdk-high-contrast-active .mdc-menu-surface.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) .mdc-menu-surface.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above .mdc-menu-surface.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}'],encapsulation:2,data:{animation:[tI.transformPanel]},changeDetection:0}),i})(),P5=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[Eg],imports:[Ri,pd,RC,nn,ud,P1,RC,nn]}),i})();const lY=["tooltip"],iI=new be("mat-tooltip-scroll-strategy"),dY={provide:iI,deps:[ea],useFactory:function cY(i){return()=>i.scrollStrategies.reposition({scrollThrottle:20})}},O1=new be("mat-tooltip-default-options",{providedIn:"root",factory:function uY(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}}),rI="tooltip-panel",_b=Ou({passive:!0});let L1=(()=>{class i{get position(){return this._position}set position(e){var o;e!==this._position&&(this._position=e,this._overlayRef)&&(this._updatePosition(this._overlayRef),null===(o=this._tooltipInstance)||void 0===o||o.show(0),this._overlayRef.updatePosition())}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(e){this._positionAtOrigin=Ge(e),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(e){this._disabled=Ge(e),this._disabled?this.hide(0):this._setupPointerEnterEventsIfNeeded()}get showDelay(){return this._showDelay}set showDelay(e){this._showDelay=Br(e)}get hideDelay(){return this._hideDelay}set hideDelay(e){this._hideDelay=Br(e),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(e){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message,"tooltip"),this._message=null!=e?String(e).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}get tooltipClass(){return this._tooltipClass}set tooltipClass(e){this._tooltipClass=e,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(e,o,d,h,_,w,D,k,P,B,W,Z){this._overlay=e,this._elementRef=o,this._scrollDispatcher=d,this._viewContainerRef=h,this._ngZone=_,this._platform=w,this._ariaDescriber=D,this._focusMonitor=k,this._dir=B,this._defaultOptions=W,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._viewportMargin=8,this._cssClassPrefix="mat",this._showDelay=this._defaultOptions.showDelay,this._hideDelay=this._defaultOptions.hideDelay,this.touchGestures="auto",this._message="",this._passiveListeners=[],this._destroyed=new He,this._scrollStrategy=P,this._document=Z,W&&(W.position&&(this.position=W.position),W.positionAtOrigin&&(this.positionAtOrigin=W.positionAtOrigin),W.touchGestures&&(this.touchGestures=W.touchGestures)),B.change.pipe(Et(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe(Et(this._destroyed)).subscribe(e=>{e?"keyboard"===e&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const e=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([o,d])=>{e.removeEventListener(o,d,_b)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(e,this.message,"tooltip"),this._focusMonitor.stopMonitoring(e)}show(e=this.showDelay,o){var d;if(this.disabled||!this.message||this._isTooltipVisible())return void(null===(d=this._tooltipInstance)||void 0===d||d._cancelPendingAnimations());const h=this._createOverlay(o);this._detach(),this._portal=this._portal||new Fu(this._tooltipComponent,this._viewContainerRef);const _=this._tooltipInstance=h.attach(this._portal).instance;_._triggerElement=this._elementRef.nativeElement,_._mouseLeaveHideDelay=this._hideDelay,_.afterHidden().pipe(Et(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),_.show(e)}hide(e=this.hideDelay){const o=this._tooltipInstance;o&&(o.isVisible()?o.hide(e):(o._cancelPendingAnimations(),this._detach()))}toggle(e){this._isTooltipVisible()?this.hide():this.show(void 0,e)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(e){var o;if(this._overlayRef){const _=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!e)&&_._origin instanceof Be)return this._overlayRef;this._detach()}const d=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),h=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin&&e||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(d);return h.positionChanges.pipe(Et(this._destroyed)).subscribe(_=>{this._updateCurrentPositionClass(_.connectionPair),this._tooltipInstance&&_.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:h,panelClass:`${this._cssClassPrefix}-${rI}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe(Et(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe(Et(this._destroyed)).subscribe(()=>{var _;return null===(_=this._tooltipInstance)||void 0===_?void 0:_._handleBodyInteraction()}),this._overlayRef.keydownEvents().pipe(Et(this._destroyed)).subscribe(_=>{this._isTooltipVisible()&&27===_.keyCode&&!pr(_)&&(_.preventDefault(),_.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),null!==(o=this._defaultOptions)&&void 0!==o&&o.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(e){const o=e.getConfig().positionStrategy,d=this._getOrigin(),h=this._getOverlayPosition();o.withPositions([this._addOffset({...d.main,...h.main}),this._addOffset({...d.fallback,...h.fallback})])}_addOffset(e){return e}_getOrigin(){const e=!this._dir||"ltr"==this._dir.value,o=this.position;let d;"above"==o||"below"==o?d={originX:"center",originY:"above"==o?"top":"bottom"}:"before"==o||"left"==o&&e||"right"==o&&!e?d={originX:"start",originY:"center"}:("after"==o||"right"==o&&e||"left"==o&&!e)&&(d={originX:"end",originY:"center"});const{x:h,y:_}=this._invertPosition(d.originX,d.originY);return{main:d,fallback:{originX:h,originY:_}}}_getOverlayPosition(){const e=!this._dir||"ltr"==this._dir.value,o=this.position;let d;"above"==o?d={overlayX:"center",overlayY:"bottom"}:"below"==o?d={overlayX:"center",overlayY:"top"}:"before"==o||"left"==o&&e||"right"==o&&!e?d={overlayX:"end",overlayY:"center"}:("after"==o||"right"==o&&e||"left"==o&&!e)&&(d={overlayX:"start",overlayY:"center"});const{x:h,y:_}=this._invertPosition(d.overlayX,d.overlayY);return{main:d,fallback:{overlayX:h,overlayY:_}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),this._ngZone.onMicrotaskEmpty.pipe(Tn(1),Et(this._destroyed)).subscribe(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()}))}_setTooltipClass(e){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=e,this._tooltipInstance._markForCheck())}_invertPosition(e,o){return"above"===this.position||"below"===this.position?"top"===o?o="bottom":"bottom"===o&&(o="top"):"end"===e?e="start":"start"===e&&(e="end"),{x:e,y:o}}_updateCurrentPositionClass(e){const{overlayY:o,originX:d,originY:h}=e;let _;if(_="center"===o?this._dir&&"rtl"===this._dir.value?"end"===d?"left":"right":"start"===d?"left":"right":"bottom"===o&&"top"===h?"above":"below",_!==this._currentPosition){const w=this._overlayRef;if(w){const D=`${this._cssClassPrefix}-${rI}-`;w.removePanelClass(D+this._currentPosition),w.addPanelClass(D+_)}this._currentPosition=_}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",e=>{let o;this._setupPointerExitEventsIfNeeded(),void 0!==e.x&&void 0!==e.y&&(o=e),this.show(void 0,o)}]):"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",e=>{var o;const d=null===(o=e.targetTouches)||void 0===o?void 0:o[0],h=d?{x:d.clientX,y:d.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>this.show(void 0,h),500)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;const e=[];if(this._platformSupportsMouseEvents())e.push(["mouseleave",o=>{var d;const h=o.relatedTarget;(!h||null===(d=this._overlayRef)||void 0===d||!d.overlayElement.contains(h))&&this.hide()}],["wheel",o=>this._wheelListener(o)]);else if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const o=()=>{clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};e.push(["touchend",o],["touchcancel",o])}this._addListeners(e),this._passiveListeners.push(...e)}_addListeners(e){e.forEach(([o,d])=>{this._elementRef.nativeElement.addEventListener(o,d,_b)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(e){if(this._isTooltipVisible()){const o=this._document.elementFromPoint(e.clientX,e.clientY),d=this._elementRef.nativeElement;o!==d&&!d.contains(o)&&this.hide()}}_disableNativeGesturesIfNecessary(){const e=this.touchGestures;if("off"!==e){const o=this._elementRef.nativeElement,d=o.style;("on"===e||"INPUT"!==o.nodeName&&"TEXTAREA"!==o.nodeName)&&(d.userSelect=d.msUserSelect=d.webkitUserSelect=d.MozUserSelect="none"),("on"===e||!o.draggable)&&(d.webkitUserDrag="none"),d.touchAction="none",d.webkitTapHighlightColor="transparent"}}}return i.\u0275fac=function(e){Js()},i.\u0275dir=me({type:i,inputs:{position:["matTooltipPosition","position"],positionAtOrigin:["matTooltipPositionAtOrigin","positionAtOrigin"],disabled:["matTooltipDisabled","disabled"],showDelay:["matTooltipShowDelay","showDelay"],hideDelay:["matTooltipHideDelay","hideDelay"],touchGestures:["matTooltipTouchGestures","touchGestures"],message:["matTooltip","message"],tooltipClass:["matTooltipClass","tooltipClass"]}}),i})(),bb=(()=>{class i extends L1{constructor(e,o,d,h,_,w,D,k,P,B,W,Z){super(e,o,d,h,_,w,D,k,P,B,W,Z),this._tooltipComponent=fY,this._cssClassPrefix="mat-mdc",this._viewportMargin=8}_addOffset(e){const d=!this._dir||"ltr"==this._dir.value;return"top"===e.originY?e.offsetY=-8:"bottom"===e.originY?e.offsetY=8:"start"===e.originX?e.offsetX=d?-8:8:"end"===e.originX&&(e.offsetX=d?8:-8),e}}return i.\u0275fac=function(e){return new(e||i)(F(ea),F(Be),F(Hy),F(mi),F(et),F(Qn),F(Ek),F(Go),F(iI),F(Ci,8),F(O1,8),F(ht))},i.\u0275dir=me({type:i,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],exportAs:["matTooltip"],features:[Se]}),i})(),oI=(()=>{class i{constructor(e,o){this._changeDetectorRef=e,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new He,this._animationsDisabled="NoopAnimations"===o}show(e){clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},e)}hide(e){clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},e)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:e}){(!e||!this._triggerElement.contains(e))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){}_handleAnimationEnd({animationName:e}){(e===this._showAnimation||e===this._hideAnimation)&&this._finalizeAnimation(e===this._showAnimation)}_cancelPendingAnimations(){clearTimeout(this._showTimeoutId),clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(e){e?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(e){const o=this._tooltip.nativeElement,d=this._showAnimation,h=this._hideAnimation;if(o.classList.remove(e?h:d),o.classList.add(e?d:h),this._isVisible=e,e&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const _=getComputedStyle(o);("0s"===_.getPropertyValue("animation-duration")||"none"===_.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}e&&this._onShow(),this._animationsDisabled&&(o.classList.add("_mat-animation-noopable"),this._finalizeAnimation(e))}}return i.\u0275fac=function(e){return new(e||i)(F(Jt),F(Ei,8))},i.\u0275dir=me({type:i}),i})(),fY=(()=>{class i extends oI{constructor(e,o,d){super(e,d),this._elementRef=o,this._isMultiline=!1,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide"}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const e=this._elementRef.nativeElement.getBoundingClientRect();return e.height>24&&e.width>=200}}return i.\u0275fac=function(e){return new(e||i)(F(Jt),F(Be),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-tooltip-component"]],viewQuery:function(e,o){if(1&e&&ct(lY,7),2&e){let d;Pe(d=Ae())&&(o._tooltip=d.first)}},hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(e,o){1&e&&Q("mouseleave",function(h){return o._handleMouseLeave(h)}),2&e&&Ta("zoom",o.isVisible()?1:null)},features:[Se],decls:4,vars:4,consts:[[1,"mdc-tooltip","mdc-tooltip--shown","mat-mdc-tooltip",3,"ngClass","animationend"],["tooltip",""],[1,"mdc-tooltip__surface","mdc-tooltip__surface-animation"]],template:function(e,o){1&e&&(I(0,"div",0,1),Q("animationend",function(h){return o._handleAnimationEnd(h)}),I(2,"div",2),Y(3),O()()),2&e&&(st("mdc-tooltip--multiline",o._isMultiline),z("ngClass",o.tooltipClass),N(3),Sn(o.message))},dependencies:[Ss],styles:['.mdc-tooltip__surface{word-break:var(--mdc-tooltip-word-break, normal);overflow-wrap:anywhere}.mdc-tooltip{position:fixed;display:none;z-index:9}.mdc-tooltip-wrapper--rich{position:relative}.mdc-tooltip--shown,.mdc-tooltip--showing,.mdc-tooltip--hide{display:inline-flex}.mdc-tooltip--shown.mdc-tooltip--rich,.mdc-tooltip--showing.mdc-tooltip--rich,.mdc-tooltip--hide.mdc-tooltip--rich{display:inline-block;left:-320px;position:absolute}.mdc-tooltip__surface{line-height:16px;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center}.mdc-tooltip__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-tooltip__surface::before{border-color:CanvasText}}.mdc-tooltip--rich .mdc-tooltip__surface{align-items:flex-start;display:flex;flex-direction:column;min-height:24px;min-width:40px;max-width:320px;position:relative}.mdc-tooltip--multiline .mdc-tooltip__surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mdc-tooltip__surface,.mdc-tooltip--multiline .mdc-tooltip__surface[dir=rtl]{text-align:right}.mdc-tooltip__surface .mdc-tooltip__title{margin:0 8px}.mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(200px - (2 * 8px));margin:8px;text-align:left}[dir=rtl] .mdc-tooltip__surface .mdc-tooltip__content,.mdc-tooltip__surface .mdc-tooltip__content[dir=rtl]{text-align:right}.mdc-tooltip--rich .mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(320px - (2 * 8px));align-self:stretch}.mdc-tooltip__surface .mdc-tooltip__content-link{text-decoration:none}.mdc-tooltip--rich-actions,.mdc-tooltip__content,.mdc-tooltip__title{z-index:1}.mdc-tooltip__surface-animation{opacity:0;transform:scale(0.8);will-change:transform,opacity}.mdc-tooltip--shown .mdc-tooltip__surface-animation{transform:scale(1);opacity:1}.mdc-tooltip--hide .mdc-tooltip__surface-animation{transform:scale(1)}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{position:absolute;height:24px;width:24px;transform:rotate(35deg) skewY(20deg) scaleX(0.9396926208)}.mdc-tooltip__caret-surface-top .mdc-elevation-overlay,.mdc-tooltip__caret-surface-bottom .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-tooltip__caret-surface-bottom{outline:1px solid rgba(0,0,0,0);z-index:-1}@media screen and (forced-colors: active){.mdc-tooltip__caret-surface-bottom{outline-color:CanvasText}}.mdc-tooltip__surface{background-color:var(--mdc-plain-tooltip-container-color, #fff)}.mdc-tooltip__surface{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__surface{color:var(--mdc-plain-tooltip-supporting-text-color, #000)}.mdc-tooltip__surface{font-family:var(--mdc-plain-tooltip-supporting-text-font, inherit);font-size:var(--mdc-plain-tooltip-supporting-text-size, inherit);font-weight:var(--mdc-plain-tooltip-supporting-text-weight, inherit);letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, inherit)}.mat-mdc-tooltip{position:relative;transform:scale(0)}.mat-mdc-tooltip::before{content:"";top:0;right:0;bottom:0;left:0;z-index:-1;position:absolute}.mat-mdc-tooltip-panel-below .mat-mdc-tooltip::before{top:-8px}.mat-mdc-tooltip-panel-above .mat-mdc-tooltip::before{bottom:-8px}.mat-mdc-tooltip-panel-right .mat-mdc-tooltip::before{left:-8px}.mat-mdc-tooltip-panel-left .mat-mdc-tooltip::before{right:-8px}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0}),i})(),F1=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[dY],imports:[Xy,Ri,pd,nn,nn,ud]}),i})();function F5(i,a){if(1&i&&(I(0,"mat-option",19),Y(1),O()),2&i){const e=a.$implicit;z("value",e),N(1),Ie(" ",e," ")}}function pY(i,a){if(1&i){const e=Ee();I(0,"mat-form-field",16)(1,"mat-select",17),Q("selectionChange",function(d){return le(e),oe(X(2)._changePageSize(d.value))}),J(2,F5,2,2,"mat-option",18),O()()}if(2&i){const e=X(2);z("appearance",e._formFieldAppearance)("color",e.color),N(1),z("value",e.pageSize)("disabled",e.disabled)("aria-labelledby",e._pageSizeLabelId)("panelClass",e.selectConfig.panelClass||"")("disableOptionCentering",e.selectConfig.disableOptionCentering),N(1),z("ngForOf",e._displayedPageSizeOptions)}}function sI(i,a){if(1&i&&(I(0,"div",20),Y(1),O()),2&i){const e=X(2);N(1),Sn(e.pageSize)}}function Kf(i,a){if(1&i&&(I(0,"div",12)(1,"div",13),Y(2),O(),J(3,pY,3,8,"mat-form-field",14),J(4,sI,2,1,"div",15),O()),2&i){const e=X();N(1),Hc("id",e._pageSizeLabelId),N(1),Ie(" ",e._intl.itemsPerPageLabel," "),N(1),z("ngIf",e._displayedPageSizeOptions.length>1),N(1),z("ngIf",e._displayedPageSizeOptions.length<=1)}}function N5(i,a){if(1&i){const e=Ee();I(0,"button",21),Q("click",function(){return le(e),oe(X().firstPage())}),Wr(),I(1,"svg",7),pe(2,"path",22),O()()}if(2&i){const e=X();z("matTooltip",e._intl.firstPageLabel)("matTooltipDisabled",e._previousButtonsDisabled())("matTooltipPosition","above")("disabled",e._previousButtonsDisabled()),Ve("aria-label",e._intl.firstPageLabel)}}function mY(i,a){if(1&i){const e=Ee();Wr(),xc(),I(0,"button",23),Q("click",function(){return le(e),oe(X().lastPage())}),Wr(),I(1,"svg",7),pe(2,"path",24),O()()}if(2&i){const e=X();z("matTooltip",e._intl.lastPageLabel)("matTooltipDisabled",e._nextButtonsDisabled())("matTooltipPosition","above")("disabled",e._nextButtonsDisabled()),Ve("aria-label",e._intl.lastPageLabel)}}let Ig=(()=>{class i{constructor(){this.changes=new He,this.itemsPerPageLabel="Items per page:",this.nextPageLabel="Next page",this.previousPageLabel="Previous page",this.firstPageLabel="First page",this.lastPageLabel="Last page",this.getRangeLabel=(e,o,d)=>{if(0==d||0==o)return`0 of ${d}`;const h=e*o;return`${h+1} \u2013 ${h<(d=Math.max(d,0))?Math.min(h+o,d):h+o} of ${d}`}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const lI={provide:Ig,deps:[[new wa,new Mo,Ig]],useFactory:function B5(i){return i||new Ig}},gY=new be("MAT_PAGINATOR_DEFAULT_OPTIONS"),vY=Uo(QB(class{}));let V5=(()=>{class i extends vY{get pageIndex(){return this._pageIndex}set pageIndex(e){this._pageIndex=Math.max(Br(e),0),this._changeDetectorRef.markForCheck()}get length(){return this._length}set length(e){this._length=Br(e),this._changeDetectorRef.markForCheck()}get pageSize(){return this._pageSize}set pageSize(e){this._pageSize=Math.max(Br(e),0),this._updateDisplayedPageSizeOptions()}get pageSizeOptions(){return this._pageSizeOptions}set pageSizeOptions(e){this._pageSizeOptions=(e||[]).map(o=>Br(o)),this._updateDisplayedPageSizeOptions()}get hidePageSize(){return this._hidePageSize}set hidePageSize(e){this._hidePageSize=Ge(e)}get showFirstLastButtons(){return this._showFirstLastButtons}set showFirstLastButtons(e){this._showFirstLastButtons=Ge(e)}constructor(e,o,d){if(super(),this._intl=e,this._changeDetectorRef=o,this._pageIndex=0,this._length=0,this._pageSizeOptions=[],this._hidePageSize=!1,this._showFirstLastButtons=!1,this.selectConfig={},this.page=new we,this._intlChanges=e.changes.subscribe(()=>this._changeDetectorRef.markForCheck()),d){const{pageSize:h,pageSizeOptions:_,hidePageSize:w,showFirstLastButtons:D}=d;null!=h&&(this._pageSize=h),null!=_&&(this._pageSizeOptions=_),null!=w&&(this._hidePageSize=w),null!=D&&(this._showFirstLastButtons=D)}}ngOnInit(){this._initialized=!0,this._updateDisplayedPageSizeOptions(),this._markInitialized()}ngOnDestroy(){this._intlChanges.unsubscribe()}nextPage(){if(!this.hasNextPage())return;const e=this.pageIndex;this.pageIndex=this.pageIndex+1,this._emitPageEvent(e)}previousPage(){if(!this.hasPreviousPage())return;const e=this.pageIndex;this.pageIndex=this.pageIndex-1,this._emitPageEvent(e)}firstPage(){if(!this.hasPreviousPage())return;const e=this.pageIndex;this.pageIndex=0,this._emitPageEvent(e)}lastPage(){if(!this.hasNextPage())return;const e=this.pageIndex;this.pageIndex=this.getNumberOfPages()-1,this._emitPageEvent(e)}hasPreviousPage(){return this.pageIndex>=1&&0!=this.pageSize}hasNextPage(){const e=this.getNumberOfPages()-1;return this.pageIndexe-o),this._changeDetectorRef.markForCheck())}_emitPageEvent(e){this.page.emit({previousPageIndex:e,pageIndex:this.pageIndex,pageSize:this.pageSize,length:this.length})}}return i.\u0275fac=function(e){Js()},i.\u0275dir=me({type:i,inputs:{color:"color",pageIndex:"pageIndex",length:"length",pageSize:"pageSize",pageSizeOptions:"pageSizeOptions",hidePageSize:"hidePageSize",showFirstLastButtons:"showFirstLastButtons",selectConfig:"selectConfig"},outputs:{page:"page"},features:[Se]}),i})(),z5=0,xb=(()=>{class i extends V5{constructor(e,o,d){super(e,o,d),this._pageSizeLabelId="mat-paginator-page-size-label-"+z5++,this._formFieldAppearance=(null==d?void 0:d.formFieldAppearance)||"outline"}}return i.\u0275fac=function(e){return new(e||i)(F(Ig),F(Jt),F(gY,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-paginator"]],hostAttrs:["role","group",1,"mat-mdc-paginator"],inputs:{disabled:"disabled"},exportAs:["matPaginator"],features:[Se],decls:14,vars:14,consts:[[1,"mat-mdc-paginator-outer-container"],[1,"mat-mdc-paginator-container"],["class","mat-mdc-paginator-page-size",4,"ngIf"],[1,"mat-mdc-paginator-range-actions"],["aria-live","polite",1,"mat-mdc-paginator-range-label"],["mat-icon-button","","type","button","class","mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click",4,"ngIf"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-previous",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["viewBox","0 0 24 24","focusable","false",1,"mat-mdc-paginator-icon"],["d","M15.41 7.41L14 6l-6 6 6 6 1.41-1.41L10.83 12z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-next",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M10 6L8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z"],["mat-icon-button","","type","button","class","mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click",4,"ngIf"],[1,"mat-mdc-paginator-page-size"],[1,"mat-mdc-paginator-page-size-label",3,"id"],["class","mat-mdc-paginator-page-size-select",3,"appearance","color",4,"ngIf"],["class","mat-mdc-paginator-page-size-value",4,"ngIf"],[1,"mat-mdc-paginator-page-size-select",3,"appearance","color"],["hideSingleSelectionIndicator","",3,"value","disabled","aria-labelledby","panelClass","disableOptionCentering","selectionChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],[1,"mat-mdc-paginator-page-size-value"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-first",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M18.41 16.59L13.82 12l4.59-4.59L17 6l-6 6 6 6zM6 6h2v12H6z"],["mat-icon-button","","type","button",1,"mat-mdc-paginator-navigation-last",3,"matTooltip","matTooltipDisabled","matTooltipPosition","disabled","click"],["d","M5.59 7.41L10.18 12l-4.59 4.59L7 18l6-6-6-6zM16 6h2v12h-2z"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1),J(2,Kf,5,4,"div",2),I(3,"div",3)(4,"div",4),Y(5),O(),J(6,N5,3,5,"button",5),I(7,"button",6),Q("click",function(){return o.previousPage()}),Wr(),I(8,"svg",7),pe(9,"path",8),O()(),xc(),I(10,"button",9),Q("click",function(){return o.nextPage()}),Wr(),I(11,"svg",7),pe(12,"path",10),O()(),J(13,mY,3,5,"button",11),O()()()),2&e&&(N(2),z("ngIf",!o.hidePageSize),N(3),Ie(" ",o._intl.getRangeLabel(o.pageIndex,o.pageSize,o.length)," "),N(1),z("ngIf",o.showFirstLastButtons),N(1),z("matTooltip",o._intl.previousPageLabel)("matTooltipDisabled",o._previousButtonsDisabled())("matTooltipPosition","above")("disabled",o._previousButtonsDisabled()),Ve("aria-label",o._intl.previousPageLabel),N(3),z("matTooltip",o._intl.nextPageLabel)("matTooltipDisabled",o._nextButtonsDisabled())("matTooltipPosition","above")("disabled",o._nextButtonsDisabled()),Ve("aria-label",o._intl.nextPageLabel),N(3),z("ngIf",o.showFirstLastButtons))},dependencies:[Mn,en,xd,ei,ma,$i,bb],styles:[".mat-mdc-paginator{display:block}.mat-mdc-paginator .mat-mdc-form-field-subscript-wrapper{display:none}.mat-mdc-paginator .mat-mdc-select{line-height:1.5}.mat-mdc-paginator-outer-container{display:flex}.mat-mdc-paginator-container{display:flex;align-items:center;justify-content:flex-end;padding:0 8px;flex-wrap:wrap-reverse;width:100%}.mat-mdc-paginator-page-size{display:flex;align-items:baseline;margin-right:8px}[dir=rtl] .mat-mdc-paginator-page-size{margin-right:0;margin-left:8px}.mat-mdc-paginator-page-size-label{margin:0 4px}.mat-mdc-paginator-page-size-select{margin:0 4px;width:84px}.mat-mdc-paginator-range-label{margin:0 32px 0 24px}.mat-mdc-paginator-range-actions{display:flex;align-items:center}.mat-mdc-paginator-icon{display:inline-block;width:28px}[dir=rtl] .mat-mdc-paginator-icon{transform:rotate(180deg)}.cdk-high-contrast-active .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon,.cdk-high-contrast-active .mat-mdc-paginator-icon{fill:currentColor;fill:CanvasText}.cdk-high-contrast-active .mat-mdc-paginator-range-actions .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),i})(),Wu=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[lI],imports:[Ri,ab,P5,F1]}),i})();const _Y=["mat-sort-header",""];function H5(i,a){if(1&i){const e=Ee();I(0,"div",3),Q("@arrowPosition.start",function(){return le(e),oe(X()._disableViewStateAnimation=!0)})("@arrowPosition.done",function(){return le(e),oe(X()._disableViewStateAnimation=!1)}),pe(1,"div",4),I(2,"div",5),pe(3,"div",6)(4,"div",7)(5,"div",8),O()()}if(2&i){const e=X();z("@arrowOpacity",e._getArrowViewState())("@arrowPosition",e._getArrowViewState())("@allowChildren",e._getArrowDirectionState()),N(2),z("@indicator",e._getArrowDirectionState()),N(1),z("@leftPointer",e._getArrowDirectionState()),N(1),z("@rightPointer",e._getArrowDirectionState())}}const yY=["*"],s=new be("MAT_SORT_DEFAULT_OPTIONS"),l=QB(Uo(class{}));let c=(()=>{class i extends l{get direction(){return this._direction}set direction(e){this._direction=e}get disableClear(){return this._disableClear}set disableClear(e){this._disableClear=Ge(e)}constructor(e){super(),this._defaultOptions=e,this.sortables=new Map,this._stateChanges=new He,this.start="asc",this._direction="",this.sortChange=new we}register(e){this.sortables.set(e.id,e)}deregister(e){this.sortables.delete(e.id)}sort(e){this.active!=e.id?(this.active=e.id,this.direction=e.start?e.start:this.start):this.direction=this.getNextSortDirection(e),this.sortChange.emit({active:this.active,direction:this.direction})}getNextSortDirection(e){var o,d,h;if(!e)return"";const _=null!==(o=null!==(d=null==e?void 0:e.disableClear)&&void 0!==d?d:this.disableClear)&&void 0!==o?o:!(null===(h=this._defaultOptions)||void 0===h||!h.disableClear);let w=function u(i,a){let e=["asc","desc"];return"desc"==i&&e.reverse(),a||e.push(""),e}(e.start||this.start,_),D=w.indexOf(this.direction)+1;return D>=w.length&&(D=0),w[D]}ngOnInit(){this._markInitialized()}ngOnChanges(){this._stateChanges.next()}ngOnDestroy(){this._stateChanges.complete()}}return i.\u0275fac=function(e){return new(e||i)(F(s,8))},i.\u0275dir=me({type:i,selectors:[["","matSort",""]],hostAttrs:[1,"mat-sort"],inputs:{disabled:["matSortDisabled","disabled"],active:["matSortActive","active"],start:["matSortStart","start"],direction:["matSortDirection","direction"],disableClear:["matSortDisableClear","disableClear"]},outputs:{sortChange:"matSortChange"},exportAs:["matSort"],features:[Se,jn]}),i})();const f=SQ.ENTERING+" "+XB.STANDARD_CURVE,p={indicator:rr("indicator",[Fn("active-asc, asc",dt({transform:"translateY(0px)"})),Fn("active-desc, desc",dt({transform:"translateY(10px)"})),An("active-asc <=> active-desc",Ln(f))]),leftPointer:rr("leftPointer",[Fn("active-asc, asc",dt({transform:"rotate(-45deg)"})),Fn("active-desc, desc",dt({transform:"rotate(45deg)"})),An("active-asc <=> active-desc",Ln(f))]),rightPointer:rr("rightPointer",[Fn("active-asc, asc",dt({transform:"rotate(45deg)"})),Fn("active-desc, desc",dt({transform:"rotate(-45deg)"})),An("active-asc <=> active-desc",Ln(f))]),arrowOpacity:rr("arrowOpacity",[Fn("desc-to-active, asc-to-active, active",dt({opacity:1})),Fn("desc-to-hint, asc-to-hint, hint",dt({opacity:.54})),Fn("hint-to-desc, active-to-desc, desc, hint-to-asc, active-to-asc, asc, void",dt({opacity:0})),An("* => asc, * => desc, * => active, * => hint, * => void",Ln("0ms")),An("* <=> *",Ln(f))]),arrowPosition:rr("arrowPosition",[An("* => desc-to-hint, * => desc-to-active",Ln(f,dg([dt({transform:"translateY(-25%)"}),dt({transform:"translateY(0)"})]))),An("* => hint-to-desc, * => active-to-desc",Ln(f,dg([dt({transform:"translateY(0)"}),dt({transform:"translateY(25%)"})]))),An("* => asc-to-hint, * => asc-to-active",Ln(f,dg([dt({transform:"translateY(25%)"}),dt({transform:"translateY(0)"})]))),An("* => hint-to-asc, * => active-to-asc",Ln(f,dg([dt({transform:"translateY(0)"}),dt({transform:"translateY(-25%)"})]))),Fn("desc-to-hint, asc-to-hint, hint, desc-to-active, asc-to-active, active",dt({transform:"translateY(0)"})),Fn("hint-to-desc, active-to-desc, desc",dt({transform:"translateY(-25%)"})),Fn("hint-to-asc, active-to-asc, asc",dt({transform:"translateY(25%)"}))]),allowChildren:rr("allowChildren",[An("* <=> *",[eb("@*",OC(),{optional:!0})])])};let m=(()=>{class i{constructor(){this.changes=new He}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();const v={provide:m,deps:[[new wa,new Mo,m]],useFactory:function g(i){return i||new m}},y=Uo(class{});let b=(()=>{class i extends y{get sortActionDescription(){return this._sortActionDescription}set sortActionDescription(e){this._updateSortActionDescription(e)}get disableClear(){return this._disableClear}set disableClear(e){this._disableClear=Ge(e)}constructor(e,o,d,h,_,w,D,k){super(),this._intl=e,this._changeDetectorRef=o,this._sort=d,this._columnDef=h,this._focusMonitor=_,this._elementRef=w,this._ariaDescriber=D,this._showIndicatorHint=!1,this._viewState={},this._arrowDirection="",this._disableViewStateAnimation=!1,this.arrowPosition="after",this._sortActionDescription="Sort",null!=k&&k.arrowPosition&&(this.arrowPosition=null==k?void 0:k.arrowPosition),this._handleStateChanges()}ngOnInit(){!this.id&&this._columnDef&&(this.id=this._columnDef.name),this._updateArrowDirection(),this._setAnimationTransitionState({toState:this._isSorted()?"active":this._arrowDirection}),this._sort.register(this),this._sortButton=this._elementRef.nativeElement.querySelector(".mat-sort-header-container"),this._updateSortActionDescription(this._sortActionDescription)}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{const o=!!e;o!==this._showIndicatorHint&&(this._setIndicatorHintVisible(o),this._changeDetectorRef.markForCheck())})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef),this._sort.deregister(this),this._rerenderSubscription.unsubscribe()}_setIndicatorHintVisible(e){this._isDisabled()&&e||(this._showIndicatorHint=e,this._isSorted()||(this._updateArrowDirection(),this._setAnimationTransitionState(this._showIndicatorHint?{fromState:this._arrowDirection,toState:"hint"}:{fromState:"hint",toState:this._arrowDirection})))}_setAnimationTransitionState(e){this._viewState=e||{},this._disableViewStateAnimation&&(this._viewState={toState:e.toState})}_toggleOnInteraction(){this._sort.sort(this),("hint"===this._viewState.toState||"active"===this._viewState.toState)&&(this._disableViewStateAnimation=!0)}_handleClick(){this._isDisabled()||this._sort.sort(this)}_handleKeydown(e){!this._isDisabled()&&(32===e.keyCode||13===e.keyCode)&&(e.preventDefault(),this._toggleOnInteraction())}_isSorted(){return this._sort.active==this.id&&("asc"===this._sort.direction||"desc"===this._sort.direction)}_getArrowDirectionState(){return`${this._isSorted()?"active-":""}${this._arrowDirection}`}_getArrowViewState(){const e=this._viewState.fromState;return(e?`${e}-to-`:"")+this._viewState.toState}_updateArrowDirection(){this._arrowDirection=this._isSorted()?this._sort.direction:this.start||this._sort.start}_isDisabled(){return this._sort.disabled||this.disabled}_getAriaSortAttribute(){return this._isSorted()?"asc"==this._sort.direction?"ascending":"descending":"none"}_renderArrow(){return!this._isDisabled()||this._isSorted()}_updateSortActionDescription(e){var o,d;this._sortButton&&(null===(o=this._ariaDescriber)||void 0===o||o.removeDescription(this._sortButton,this._sortActionDescription),null===(d=this._ariaDescriber)||void 0===d||d.describe(this._sortButton,e)),this._sortActionDescription=e}_handleStateChanges(){this._rerenderSubscription=Wn(this._sort.sortChange,this._sort._stateChanges,this._intl.changes).subscribe(()=>{this._isSorted()&&(this._updateArrowDirection(),("hint"===this._viewState.toState||"active"===this._viewState.toState)&&(this._disableViewStateAnimation=!0),this._setAnimationTransitionState({fromState:this._arrowDirection,toState:"active"}),this._showIndicatorHint=!1),!this._isSorted()&&this._viewState&&"active"===this._viewState.toState&&(this._disableViewStateAnimation=!1,this._setAnimationTransitionState({fromState:"active",toState:this._arrowDirection})),this._changeDetectorRef.markForCheck()})}}return i.\u0275fac=function(e){return new(e||i)(F(m),F(Jt),F(c,8),F("MAT_SORT_HEADER_COLUMN_DEF",8),F(Go),F(Be),F(Ek,8),F(s,8))},i.\u0275cmp=_e({type:i,selectors:[["","mat-sort-header",""]],hostAttrs:[1,"mat-sort-header"],hostVars:3,hostBindings:function(e,o){1&e&&Q("click",function(){return o._handleClick()})("keydown",function(h){return o._handleKeydown(h)})("mouseenter",function(){return o._setIndicatorHintVisible(!0)})("mouseleave",function(){return o._setIndicatorHintVisible(!1)}),2&e&&(Ve("aria-sort",o._getAriaSortAttribute()),st("mat-sort-header-disabled",o._isDisabled()))},inputs:{disabled:"disabled",id:["mat-sort-header","id"],arrowPosition:"arrowPosition",start:"start",sortActionDescription:"sortActionDescription",disableClear:"disableClear"},exportAs:["matSortHeader"],features:[Se],attrs:_Y,ngContentSelectors:yY,decls:4,vars:7,consts:[[1,"mat-sort-header-container","mat-focus-indicator"],[1,"mat-sort-header-content"],["class","mat-sort-header-arrow",4,"ngIf"],[1,"mat-sort-header-arrow"],[1,"mat-sort-header-stem"],[1,"mat-sort-header-indicator"],[1,"mat-sort-header-pointer-left"],[1,"mat-sort-header-pointer-right"],[1,"mat-sort-header-pointer-middle"]],template:function(e,o){1&e&&(On(),I(0,"div",0)(1,"div",1),ut(2),O(),J(3,H5,6,6,"div",2),O()),2&e&&(st("mat-sort-header-sorted",o._isSorted())("mat-sort-header-position-before","before"===o.arrowPosition),Ve("tabindex",o._isDisabled()?null:0)("role",o._isDisabled()?null:"button"),N(3),z("ngIf",o._renderArrow()))},dependencies:[en],styles:[".mat-sort-header-container{display:flex;cursor:pointer;align-items:center;letter-spacing:normal;outline:0}[mat-sort-header].cdk-keyboard-focused .mat-sort-header-container,[mat-sort-header].cdk-program-focused .mat-sort-header-container{border-bottom:solid 1px currentColor}.mat-sort-header-disabled .mat-sort-header-container{cursor:default}.mat-sort-header-container::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-sort-header-content{text-align:center;display:flex;align-items:center}.mat-sort-header-position-before{flex-direction:row-reverse}.mat-sort-header-arrow{height:12px;width:12px;min-width:12px;position:relative;display:flex;opacity:0}.mat-sort-header-arrow,[dir=rtl] .mat-sort-header-position-before .mat-sort-header-arrow{margin:0 0 0 6px}.mat-sort-header-position-before .mat-sort-header-arrow,[dir=rtl] .mat-sort-header-arrow{margin:0 6px 0 0}.mat-sort-header-stem{background:currentColor;height:10px;width:2px;margin:auto;display:flex;align-items:center}.cdk-high-contrast-active .mat-sort-header-stem{width:0;border-left:solid 2px}.mat-sort-header-indicator{width:100%;height:2px;display:flex;align-items:center;position:absolute;top:0;left:0}.mat-sort-header-pointer-middle{margin:auto;height:2px;width:2px;background:currentColor;transform:rotate(45deg)}.cdk-high-contrast-active .mat-sort-header-pointer-middle{width:0;height:0;border-top:solid 2px;border-left:solid 2px}.mat-sort-header-pointer-left,.mat-sort-header-pointer-right{background:currentColor;width:6px;height:2px;position:absolute;top:0}.cdk-high-contrast-active .mat-sort-header-pointer-left,.cdk-high-contrast-active .mat-sort-header-pointer-right{width:0;height:0;border-left:solid 6px;border-top:solid 2px}.mat-sort-header-pointer-left{transform-origin:right;left:0}.mat-sort-header-pointer-right{transform-origin:left;right:0}"],encapsulation:2,data:{animation:[p.indicator,p.leftPointer,p.rightPointer,p.arrowOpacity,p.arrowPosition,p.allowChildren]},changeDetection:0}),i})(),x=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[v],imports:[Ri,nn]}),i})();const S=[[["caption"]],[["colgroup"],["col"]]],M=["caption","colgroup, col"];function E(i){return class extends i{get sticky(){return this._sticky}set sticky(a){const e=this._sticky;this._sticky=Ge(a),this._hasStickyChanged=e!==this._sticky}hasStickyChanged(){const a=this._hasStickyChanged;return this._hasStickyChanged=!1,a}resetStickyChanged(){this._hasStickyChanged=!1}constructor(...a){super(...a),this._sticky=!1,this._hasStickyChanged=!1}}}const L=new be("CDK_TABLE");let V=(()=>{class i{constructor(e){this.template=e}}return i.\u0275fac=function(e){return new(e||i)(F(ii))},i.\u0275dir=me({type:i,selectors:[["","cdkCellDef",""]]}),i})(),H=(()=>{class i{constructor(e){this.template=e}}return i.\u0275fac=function(e){return new(e||i)(F(ii))},i.\u0275dir=me({type:i,selectors:[["","cdkHeaderCellDef",""]]}),i})(),G=(()=>{class i{constructor(e){this.template=e}}return i.\u0275fac=function(e){return new(e||i)(F(ii))},i.\u0275dir=me({type:i,selectors:[["","cdkFooterCellDef",""]]}),i})();class j{}const $=E(j);let q=(()=>{class i extends ${get name(){return this._name}set name(e){this._setNameInput(e)}get stickyEnd(){return this._stickyEnd}set stickyEnd(e){const o=this._stickyEnd;this._stickyEnd=Ge(e),this._hasStickyChanged=o!==this._stickyEnd}constructor(e){super(),this._table=e,this._stickyEnd=!1}_updateColumnCssClassName(){this._columnCssClassName=[`cdk-column-${this.cssClassFriendlyName}`]}_setNameInput(e){e&&(this._name=e,this.cssClassFriendlyName=e.replace(/[^a-z0-9_-]/gi,"-"),this._updateColumnCssClassName())}}return i.\u0275fac=function(e){return new(e||i)(F(L,8))},i.\u0275dir=me({type:i,selectors:[["","cdkColumnDef",""]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,V,5),Qt(d,H,5),Qt(d,G,5)),2&e){let h;Pe(h=Ae())&&(o.cell=h.first),Pe(h=Ae())&&(o.headerCell=h.first),Pe(h=Ae())&&(o.footerCell=h.first)}},inputs:{sticky:"sticky",name:["cdkColumnDef","name"],stickyEnd:"stickyEnd"},features:[Ue([{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:i}]),Se]}),i})();class K{constructor(a,e){e.nativeElement.classList.add(...a._columnCssClassName)}}let ee=(()=>{class i extends K{constructor(e,o){super(e,o)}}return i.\u0275fac=function(e){return new(e||i)(F(q),F(Be))},i.\u0275dir=me({type:i,selectors:[["cdk-header-cell"],["th","cdk-header-cell",""]],hostAttrs:["role","columnheader",1,"cdk-header-cell"],features:[Se]}),i})(),re=(()=>{class i extends K{constructor(e,o){var d;if(super(e,o),1===(null===(d=e._table)||void 0===d?void 0:d._elementRef.nativeElement.nodeType)){const h=e._table._elementRef.nativeElement.getAttribute("role");o.nativeElement.setAttribute("role","grid"===h||"treegrid"===h?"gridcell":"cell")}}}return i.\u0275fac=function(e){return new(e||i)(F(q),F(Be))},i.\u0275dir=me({type:i,selectors:[["cdk-cell"],["td","cdk-cell",""]],hostAttrs:[1,"cdk-cell"],features:[Se]}),i})();class ue{constructor(){this.tasks=[],this.endTasks=[]}}const ce=new be("_COALESCED_STYLE_SCHEDULER");let ve=(()=>{class i{constructor(e){this._ngZone=e,this._currentSchedule=null,this._destroyed=new He}schedule(e){this._createScheduleIfNeeded(),this._currentSchedule.tasks.push(e)}scheduleEnd(e){this._createScheduleIfNeeded(),this._currentSchedule.endTasks.push(e)}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}_createScheduleIfNeeded(){this._currentSchedule||(this._currentSchedule=new ue,this._getScheduleObservable().pipe(Et(this._destroyed)).subscribe(()=>{for(;this._currentSchedule.tasks.length||this._currentSchedule.endTasks.length;){const e=this._currentSchedule;this._currentSchedule=new ue;for(const o of e.tasks)o();for(const o of e.endTasks)o()}this._currentSchedule=null}))}_getScheduleObservable(){return this._ngZone.isStable?Ti(Promise.resolve(void 0)):this._ngZone.onStable.pipe(Tn(1))}}return i.\u0275fac=function(e){return new(e||i)(ae(et))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),Oe=(()=>{class i{constructor(e,o){this.template=e,this._differs=o}ngOnChanges(e){if(!this._columnsDiffer){const o=e.columns&&e.columns.currentValue||[];this._columnsDiffer=this._differs.find(o).create(),this._columnsDiffer.diff(o)}}getColumnsDiff(){return this._columnsDiffer.diff(this.columns)}extractCellTemplate(e){return this instanceof Ke?e.headerCell.template:this instanceof Pt?e.footerCell.template:e.cell.template}}return i.\u0275fac=function(e){return new(e||i)(F(ii),F(Xc))},i.\u0275dir=me({type:i,features:[jn]}),i})();class je extends Oe{}const nt=E(je);let Ke=(()=>{class i extends nt{constructor(e,o,d){super(e,o),this._table=d}ngOnChanges(e){super.ngOnChanges(e)}}return i.\u0275fac=function(e){return new(e||i)(F(ii),F(Xc),F(L,8))},i.\u0275dir=me({type:i,selectors:[["","cdkHeaderRowDef",""]],inputs:{columns:["cdkHeaderRowDef","columns"],sticky:["cdkHeaderRowDefSticky","sticky"]},features:[Se,jn]}),i})();class Gt extends Oe{}const mn=E(Gt);let Pt=(()=>{class i extends mn{constructor(e,o,d){super(e,o),this._table=d}ngOnChanges(e){super.ngOnChanges(e)}}return i.\u0275fac=function(e){return new(e||i)(F(ii),F(Xc),F(L,8))},i.\u0275dir=me({type:i,selectors:[["","cdkFooterRowDef",""]],inputs:{columns:["cdkFooterRowDef","columns"],sticky:["cdkFooterRowDefSticky","sticky"]},features:[Se,jn]}),i})(),ot=(()=>{class i extends Oe{constructor(e,o,d){super(e,o),this._table=d}}return i.\u0275fac=function(e){return new(e||i)(F(ii),F(Xc),F(L,8))},i.\u0275dir=me({type:i,selectors:[["","cdkRowDef",""]],inputs:{columns:["cdkRowDefColumns","columns"],when:["cdkRowDefWhen","when"]},features:[Se]}),i})(),Mt=(()=>{class i{constructor(e){this._viewContainer=e,i.mostRecentCellOutlet=this}ngOnDestroy(){i.mostRecentCellOutlet===this&&(i.mostRecentCellOutlet=null)}}return i.mostRecentCellOutlet=null,i.\u0275fac=function(e){return new(e||i)(F(mi))},i.\u0275dir=me({type:i,selectors:[["","cdkCellOutlet",""]]}),i})(),kt=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["cdk-header-row"],["tr","cdk-header-row",""]],hostAttrs:["role","row",1,"cdk-header-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,o){1&e&&uo(0,0)},dependencies:[Mt],encapsulation:2}),i})(),wt=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["cdk-row"],["tr","cdk-row",""]],hostAttrs:["role","row",1,"cdk-row"],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,o){1&e&&uo(0,0)},dependencies:[Mt],encapsulation:2}),i})(),ai=(()=>{class i{constructor(e){this.templateRef=e,this._contentClassName="cdk-no-data-row"}}return i.\u0275fac=function(e){return new(e||i)(F(ii))},i.\u0275dir=me({type:i,selectors:[["ng-template","cdkNoDataRow",""]]}),i})();const sn=["top","bottom","left","right"];class Yi{constructor(a,e,o,d,h=!0,_=!0,w){this._isNativeHtmlTable=a,this._stickCellCss=e,this.direction=o,this._coalescedStyleScheduler=d,this._isBrowser=h,this._needsPositionStickyOnElement=_,this._positionListener=w,this._cachedCellWidths=[],this._borderCellCss={top:`${e}-border-elem-top`,bottom:`${e}-border-elem-bottom`,left:`${e}-border-elem-left`,right:`${e}-border-elem-right`}}clearStickyPositioning(a,e){const o=[];for(const d of a)if(d.nodeType===d.ELEMENT_NODE){o.push(d);for(let h=0;h{for(const d of o)this._removeStickyStyle(d,e)})}updateStickyColumns(a,e,o,d=!0){if(!a.length||!this._isBrowser||!e.some(W=>W)&&!o.some(W=>W))return void(this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:[]}),this._positionListener.stickyEndColumnsUpdated({sizes:[]})));const h=a[0],_=h.children.length,w=this._getCellWidths(h,d),D=this._getStickyStartColumnPositions(w,e),k=this._getStickyEndColumnPositions(w,o),P=e.lastIndexOf(!0),B=o.indexOf(!0);this._coalescedStyleScheduler.schedule(()=>{const W="rtl"===this.direction,Z=W?"right":"left",te=W?"left":"right";for(const ie of a)for(let de=0;de<_;de++){const he=ie.children[de];e[de]&&this._addStickyStyle(he,Z,D[de],de===P),o[de]&&this._addStickyStyle(he,te,k[de],de===B)}this._positionListener&&(this._positionListener.stickyColumnsUpdated({sizes:-1===P?[]:w.slice(0,P+1).map((ie,de)=>e[de]?ie:null)}),this._positionListener.stickyEndColumnsUpdated({sizes:-1===B?[]:w.slice(B).map((ie,de)=>o[de+B]?ie:null).reverse()}))})}stickRows(a,e,o){if(!this._isBrowser)return;const d="bottom"===o?a.slice().reverse():a,h="bottom"===o?e.slice().reverse():e,_=[],w=[],D=[];for(let P=0,B=0;P{for(let W=0;W{e.some(d=>!d)?this._removeStickyStyle(o,["bottom"]):this._addStickyStyle(o,"bottom",0,!1)})}_removeStickyStyle(a,e){for(const d of e)a.style[d]="",a.classList.remove(this._borderCellCss[d]);sn.some(d=>-1===e.indexOf(d)&&a.style[d])?a.style.zIndex=this._getCalculatedZIndex(a):(a.style.zIndex="",this._needsPositionStickyOnElement&&(a.style.position=""),a.classList.remove(this._stickCellCss))}_addStickyStyle(a,e,o,d){a.classList.add(this._stickCellCss),d&&a.classList.add(this._borderCellCss[e]),a.style[e]=`${o}px`,a.style.zIndex=this._getCalculatedZIndex(a),this._needsPositionStickyOnElement&&(a.style.cssText+="position: -webkit-sticky; position: sticky; ")}_getCalculatedZIndex(a){const e={top:100,bottom:10,left:1,right:1};let o=0;for(const d of sn)a.style[d]&&(o+=e[d]);return o?`${o}`:""}_getCellWidths(a,e=!0){if(!e&&this._cachedCellWidths.length)return this._cachedCellWidths;const o=[],d=a.children;for(let h=0;h0;h--)e[h]&&(o[h]=d,d+=a[h]);return o}}const wY=new be("CDK_SPL");let U5=(()=>{class i{constructor(e,o){this.viewContainer=e,this.elementRef=o}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(Be))},i.\u0275dir=me({type:i,selectors:[["","rowOutlet",""]]}),i})(),j5=(()=>{class i{constructor(e,o){this.viewContainer=e,this.elementRef=o}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(Be))},i.\u0275dir=me({type:i,selectors:[["","headerRowOutlet",""]]}),i})(),$5=(()=>{class i{constructor(e,o){this.viewContainer=e,this.elementRef=o}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(Be))},i.\u0275dir=me({type:i,selectors:[["","footerRowOutlet",""]]}),i})(),W5=(()=>{class i{constructor(e,o){this.viewContainer=e,this.elementRef=o}}return i.\u0275fac=function(e){return new(e||i)(F(mi),F(Be))},i.\u0275dir=me({type:i,selectors:[["","noDataRowOutlet",""]]}),i})(),Y5=(()=>{class i{get trackBy(){return this._trackByFn}set trackBy(e){this._trackByFn=e}get dataSource(){return this._dataSource}set dataSource(e){this._dataSource!==e&&this._switchDataSource(e)}get multiTemplateDataRows(){return this._multiTemplateDataRows}set multiTemplateDataRows(e){this._multiTemplateDataRows=Ge(e),this._rowOutlet&&this._rowOutlet.viewContainer.length&&(this._forceRenderDataRows(),this.updateStickyColumnStyles())}get fixedLayout(){return this._fixedLayout}set fixedLayout(e){this._fixedLayout=Ge(e),this._forceRecalculateCellWidths=!0,this._stickyColumnStylesNeedReset=!0}constructor(e,o,d,h,_,w,D,k,P,B,W,Z){this._differs=e,this._changeDetectorRef=o,this._elementRef=d,this._dir=_,this._platform=D,this._viewRepeater=k,this._coalescedStyleScheduler=P,this._viewportRuler=B,this._stickyPositioningListener=W,this._ngZone=Z,this._onDestroy=new He,this._columnDefsByName=new Map,this._customColumnDefs=new Set,this._customRowDefs=new Set,this._customHeaderRowDefs=new Set,this._customFooterRowDefs=new Set,this._headerRowDefChanged=!0,this._footerRowDefChanged=!0,this._stickyColumnStylesNeedReset=!0,this._forceRecalculateCellWidths=!0,this._cachedRenderRowsMap=new Map,this.stickyCssClass="cdk-table-sticky",this.needsPositionStickyOnElement=!0,this._isShowingNoDataRow=!1,this._multiTemplateDataRows=!1,this._fixedLayout=!1,this.contentChanged=new we,this.viewChange=new Oi({start:0,end:Number.MAX_VALUE}),h||this._elementRef.nativeElement.setAttribute("role","table"),this._document=w,this._isNativeHtmlTable="TABLE"===this._elementRef.nativeElement.nodeName}ngOnInit(){this._setupStickyStyler(),this._isNativeHtmlTable&&this._applyNativeTableSections(),this._dataDiffer=this._differs.find([]).create((e,o)=>this.trackBy?this.trackBy(o.dataIndex,o.data):o),this._viewportRuler.change().pipe(Et(this._onDestroy)).subscribe(()=>{this._forceRecalculateCellWidths=!0})}ngAfterContentChecked(){this._cacheRowDefs(),this._cacheColumnDefs();const o=this._renderUpdatedColumns()||this._headerRowDefChanged||this._footerRowDefChanged;this._stickyColumnStylesNeedReset=this._stickyColumnStylesNeedReset||o,this._forceRecalculateCellWidths=o,this._headerRowDefChanged&&(this._forceRenderHeaderRows(),this._headerRowDefChanged=!1),this._footerRowDefChanged&&(this._forceRenderFooterRows(),this._footerRowDefChanged=!1),this.dataSource&&this._rowDefs.length>0&&!this._renderChangeSubscription?this._observeRenderChanges():this._stickyColumnStylesNeedReset&&this.updateStickyColumnStyles(),this._checkStickyStates()}ngOnDestroy(){[this._rowOutlet.viewContainer,this._headerRowOutlet.viewContainer,this._footerRowOutlet.viewContainer,this._cachedRenderRowsMap,this._customColumnDefs,this._customRowDefs,this._customHeaderRowDefs,this._customFooterRowDefs,this._columnDefsByName].forEach(e=>{e.clear()}),this._headerRowDefs=[],this._footerRowDefs=[],this._defaultRowDef=null,this._onDestroy.next(),this._onDestroy.complete(),WE(this.dataSource)&&this.dataSource.disconnect(this)}renderRows(){this._renderRows=this._getAllRenderRows();const e=this._dataDiffer.diff(this._renderRows);if(!e)return this._updateNoDataRow(),void this.contentChanged.next();const o=this._rowOutlet.viewContainer;this._viewRepeater.applyChanges(e,o,(d,h,_)=>this._getEmbeddedViewArgs(d.item,_),d=>d.item.data,d=>{1===d.operation&&d.context&&this._renderCellTemplateForItem(d.record.item.rowDef,d.context)}),this._updateRowIndexContext(),e.forEachIdentityChange(d=>{o.get(d.currentIndex).context.$implicit=d.item.data}),this._updateNoDataRow(),this._ngZone&&et.isInAngularZone()?this._ngZone.onStable.pipe(Tn(1),Et(this._onDestroy)).subscribe(()=>{this.updateStickyColumnStyles()}):this.updateStickyColumnStyles(),this.contentChanged.next()}addColumnDef(e){this._customColumnDefs.add(e)}removeColumnDef(e){this._customColumnDefs.delete(e)}addRowDef(e){this._customRowDefs.add(e)}removeRowDef(e){this._customRowDefs.delete(e)}addHeaderRowDef(e){this._customHeaderRowDefs.add(e),this._headerRowDefChanged=!0}removeHeaderRowDef(e){this._customHeaderRowDefs.delete(e),this._headerRowDefChanged=!0}addFooterRowDef(e){this._customFooterRowDefs.add(e),this._footerRowDefChanged=!0}removeFooterRowDef(e){this._customFooterRowDefs.delete(e),this._footerRowDefChanged=!0}setNoDataRow(e){this._customNoDataRow=e}updateStickyHeaderRowStyles(){const e=this._getRenderedRows(this._headerRowOutlet),d=this._elementRef.nativeElement.querySelector("thead");d&&(d.style.display=e.length?"":"none");const h=this._headerRowDefs.map(_=>_.sticky);this._stickyStyler.clearStickyPositioning(e,["top"]),this._stickyStyler.stickRows(e,h,"top"),this._headerRowDefs.forEach(_=>_.resetStickyChanged())}updateStickyFooterRowStyles(){const e=this._getRenderedRows(this._footerRowOutlet),d=this._elementRef.nativeElement.querySelector("tfoot");d&&(d.style.display=e.length?"":"none");const h=this._footerRowDefs.map(_=>_.sticky);this._stickyStyler.clearStickyPositioning(e,["bottom"]),this._stickyStyler.stickRows(e,h,"bottom"),this._stickyStyler.updateStickyFooterContainer(this._elementRef.nativeElement,h),this._footerRowDefs.forEach(_=>_.resetStickyChanged())}updateStickyColumnStyles(){const e=this._getRenderedRows(this._headerRowOutlet),o=this._getRenderedRows(this._rowOutlet),d=this._getRenderedRows(this._footerRowOutlet);(this._isNativeHtmlTable&&!this._fixedLayout||this._stickyColumnStylesNeedReset)&&(this._stickyStyler.clearStickyPositioning([...e,...o,...d],["left","right"]),this._stickyColumnStylesNeedReset=!1),e.forEach((h,_)=>{this._addStickyColumnStyles([h],this._headerRowDefs[_])}),this._rowDefs.forEach(h=>{const _=[];for(let w=0;w{this._addStickyColumnStyles([h],this._footerRowDefs[_])}),Array.from(this._columnDefsByName.values()).forEach(h=>h.resetStickyChanged())}_getAllRenderRows(){const e=[],o=this._cachedRenderRowsMap;this._cachedRenderRowsMap=new Map;for(let d=0;d{const w=d&&d.has(_)?d.get(_):[];if(w.length){const D=w.shift();return D.dataIndex=o,D}return{data:e,rowDef:_,dataIndex:o}})}_cacheColumnDefs(){this._columnDefsByName.clear(),q5(this._getOwnDefs(this._contentColumnDefs),this._customColumnDefs).forEach(o=>{this._columnDefsByName.has(o.name),this._columnDefsByName.set(o.name,o)})}_cacheRowDefs(){this._headerRowDefs=q5(this._getOwnDefs(this._contentHeaderRowDefs),this._customHeaderRowDefs),this._footerRowDefs=q5(this._getOwnDefs(this._contentFooterRowDefs),this._customFooterRowDefs),this._rowDefs=q5(this._getOwnDefs(this._contentRowDefs),this._customRowDefs);const e=this._rowDefs.filter(o=>!o.when);this._defaultRowDef=e[0]}_renderUpdatedColumns(){const e=(_,w)=>_||!!w.getColumnsDiff(),o=this._rowDefs.reduce(e,!1);o&&this._forceRenderDataRows();const d=this._headerRowDefs.reduce(e,!1);d&&this._forceRenderHeaderRows();const h=this._footerRowDefs.reduce(e,!1);return h&&this._forceRenderFooterRows(),o||d||h}_switchDataSource(e){this._data=[],WE(this.dataSource)&&this.dataSource.disconnect(this),this._renderChangeSubscription&&(this._renderChangeSubscription.unsubscribe(),this._renderChangeSubscription=null),e||(this._dataDiffer&&this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear()),this._dataSource=e}_observeRenderChanges(){if(!this.dataSource)return;let e;WE(this.dataSource)?e=this.dataSource.connect(this):function C(i){return!!i&&(i instanceof Hn||$t(i.lift)&&$t(i.subscribe))}(this.dataSource)?e=this.dataSource:Array.isArray(this.dataSource)&&(e=Ze(this.dataSource)),this._renderChangeSubscription=e.pipe(Et(this._onDestroy)).subscribe(o=>{this._data=o||[],this.renderRows()})}_forceRenderHeaderRows(){this._headerRowOutlet.viewContainer.length>0&&this._headerRowOutlet.viewContainer.clear(),this._headerRowDefs.forEach((e,o)=>this._renderRow(this._headerRowOutlet,e,o)),this.updateStickyHeaderRowStyles()}_forceRenderFooterRows(){this._footerRowOutlet.viewContainer.length>0&&this._footerRowOutlet.viewContainer.clear(),this._footerRowDefs.forEach((e,o)=>this._renderRow(this._footerRowOutlet,e,o)),this.updateStickyFooterRowStyles()}_addStickyColumnStyles(e,o){const d=Array.from(o.columns||[]).map(w=>this._columnDefsByName.get(w)),h=d.map(w=>w.sticky),_=d.map(w=>w.stickyEnd);this._stickyStyler.updateStickyColumns(e,h,_,!this._fixedLayout||this._forceRecalculateCellWidths)}_getRenderedRows(e){const o=[];for(let d=0;d!h.when||h.when(o,e));else{let h=this._rowDefs.find(_=>_.when&&_.when(o,e))||this._defaultRowDef;h&&d.push(h)}return d}_getEmbeddedViewArgs(e,o){return{templateRef:e.rowDef.template,context:{$implicit:e.data},index:o}}_renderRow(e,o,d,h={}){const _=e.viewContainer.createEmbeddedView(o.template,h,d);return this._renderCellTemplateForItem(o,h),_}_renderCellTemplateForItem(e,o){for(let d of this._getCellTemplates(e))Mt.mostRecentCellOutlet&&Mt.mostRecentCellOutlet._viewContainer.createEmbeddedView(d,o);this._changeDetectorRef.markForCheck()}_updateRowIndexContext(){const e=this._rowOutlet.viewContainer;for(let o=0,d=e.length;o{const d=this._columnDefsByName.get(o);return e.extractCellTemplate(d)}):[]}_applyNativeTableSections(){const e=this._document.createDocumentFragment(),o=[{tag:"thead",outlets:[this._headerRowOutlet]},{tag:"tbody",outlets:[this._rowOutlet,this._noDataRowOutlet]},{tag:"tfoot",outlets:[this._footerRowOutlet]}];for(const d of o){const h=this._document.createElement(d.tag);h.setAttribute("role","rowgroup");for(const _ of d.outlets)h.appendChild(_.elementRef.nativeElement);e.appendChild(h)}this._elementRef.nativeElement.appendChild(e)}_forceRenderDataRows(){this._dataDiffer.diff([]),this._rowOutlet.viewContainer.clear(),this.renderRows()}_checkStickyStates(){const e=(o,d)=>o||d.hasStickyChanged();this._headerRowDefs.reduce(e,!1)&&this.updateStickyHeaderRowStyles(),this._footerRowDefs.reduce(e,!1)&&this.updateStickyFooterRowStyles(),Array.from(this._columnDefsByName.values()).reduce(e,!1)&&(this._stickyColumnStylesNeedReset=!0,this.updateStickyColumnStyles())}_setupStickyStyler(){this._stickyStyler=new Yi(this._isNativeHtmlTable,this.stickyCssClass,this._dir?this._dir.value:"ltr",this._coalescedStyleScheduler,this._platform.isBrowser,this.needsPositionStickyOnElement,this._stickyPositioningListener),(this._dir?this._dir.change:Ze()).pipe(Et(this._onDestroy)).subscribe(o=>{this._stickyStyler.direction=o,this.updateStickyColumnStyles()})}_getOwnDefs(e){return e.filter(o=>!o._table||o._table===this)}_updateNoDataRow(){const e=this._customNoDataRow||this._noDataRow;if(!e)return;const o=0===this._rowOutlet.viewContainer.length;if(o===this._isShowingNoDataRow)return;const d=this._noDataRowOutlet.viewContainer;if(o){const h=d.createEmbeddedView(e.templateRef),_=h.rootNodes[0];1===h.rootNodes.length&&(null==_?void 0:_.nodeType)===this._document.ELEMENT_NODE&&(_.setAttribute("role","row"),_.classList.add(e._contentClassName))}else d.clear();this._isShowingNoDataRow=o}}return i.\u0275fac=function(e){return new(e||i)(F(Xc),F(Jt),F(Be),Co("role"),F(Ci,8),F(ht),F(Qn),F(Dg),F(ce),F(ac),F(wY,12),F(et,8))},i.\u0275cmp=_e({type:i,selectors:[["cdk-table"],["table","cdk-table",""]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,ai,5),Qt(d,q,5),Qt(d,ot,5),Qt(d,Ke,5),Qt(d,Pt,5)),2&e){let h;Pe(h=Ae())&&(o._noDataRow=h.first),Pe(h=Ae())&&(o._contentColumnDefs=h),Pe(h=Ae())&&(o._contentRowDefs=h),Pe(h=Ae())&&(o._contentHeaderRowDefs=h),Pe(h=Ae())&&(o._contentFooterRowDefs=h)}},viewQuery:function(e,o){if(1&e&&(ct(U5,7),ct(j5,7),ct($5,7),ct(W5,7)),2&e){let d;Pe(d=Ae())&&(o._rowOutlet=d.first),Pe(d=Ae())&&(o._headerRowOutlet=d.first),Pe(d=Ae())&&(o._footerRowOutlet=d.first),Pe(d=Ae())&&(o._noDataRowOutlet=d.first)}},hostAttrs:[1,"cdk-table"],hostVars:2,hostBindings:function(e,o){2&e&&st("cdk-table-fixed-layout",o.fixedLayout)},inputs:{trackBy:"trackBy",dataSource:"dataSource",multiTemplateDataRows:"multiTemplateDataRows",fixedLayout:"fixedLayout"},outputs:{contentChanged:"contentChanged"},exportAs:["cdkTable"],features:[Ue([{provide:L,useExisting:i},{provide:Dg,useClass:qE},{provide:ce,useClass:ve},{provide:wY,useValue:null}])],ngContentSelectors:M,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,o){1&e&&(On(S),ut(0),ut(1,1),uo(2,0)(3,1)(4,2)(5,3))},dependencies:[U5,j5,$5,W5],styles:[".cdk-table-fixed-layout{table-layout:fixed}"],encapsulation:2}),i})();function q5(i,a){return i.concat(Array.from(a))}let gne=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[Lu]}),i})();const vne=[[["caption"]],[["colgroup"],["col"]]],_ne=["caption","colgroup, col"];let xY=(()=>{class i extends Y5{constructor(){super(...arguments),this.stickyCssClass="mat-mdc-table-sticky",this.needsPositionStickyOnElement=!1}ngOnInit(){super.ngOnInit(),this._isNativeHtmlTable&&this._elementRef.nativeElement.querySelector("tbody").classList.add("mdc-data-table__content")}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-table"],["table","mat-table",""]],hostAttrs:[1,"mat-mdc-table","mdc-data-table__table"],hostVars:2,hostBindings:function(e,o){2&e&&st("mdc-table-fixed-layout",o.fixedLayout)},exportAs:["matTable"],features:[Ue([{provide:Y5,useExisting:i},{provide:L,useExisting:i},{provide:ce,useClass:ve},{provide:Dg,useClass:qE},{provide:wY,useValue:null}]),Se],ngContentSelectors:_ne,decls:6,vars:0,consts:[["headerRowOutlet",""],["rowOutlet",""],["noDataRowOutlet",""],["footerRowOutlet",""]],template:function(e,o){1&e&&(On(vne),ut(0),ut(1,1),uo(2,0)(3,1)(4,2)(5,3))},dependencies:[U5,j5,$5,W5],styles:[".mdc-data-table{border-radius:var(--mdc-shape-medium, 4px);border-width:1px;border-style:solid}.mdc-data-table .mdc-data-table__header-cell:first-child{border-top-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:first-child,.mdc-data-table .mdc-data-table__header-cell:first-child[dir=rtl]{border-top-right-radius:var(--mdc-shape-medium, 4px);border-top-left-radius:0}.mdc-data-table .mdc-data-table__header-cell:last-child{border-top-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table .mdc-data-table__header-cell:last-child,.mdc-data-table .mdc-data-table__header-cell:last-child[dir=rtl]{border-top-left-radius:var(--mdc-shape-medium, 4px);border-top-right-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child{border-bottom-left-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:first-child[dir=rtl]{border-bottom-right-radius:var(--mdc-shape-medium, 4px);border-bottom-left-radius:0}.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child{border-bottom-right-radius:var(--mdc-shape-medium, 4px)}[dir=rtl] .mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child,.mdc-data-table.mdc-data-table--without-footer .mdc-data-table__row:last-child .mdc-data-table__cell:last-child[dir=rtl]{border-bottom-left-radius:var(--mdc-shape-medium, 4px);border-bottom-right-radius:0}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-width:1px;border-bottom-style:solid}.mdc-data-table__pagination{border-top-width:1px;border-top-style:solid}.mdc-data-table__row:last-child .mdc-data-table__cell{border-bottom:none}.mdc-data-table__row{height:52px}.mdc-data-table__pagination{min-height:52px}.mdc-data-table__header-row{height:56px}.mdc-data-table__cell,.mdc-data-table__header-cell{padding:0 16px 0 16px}.mdc-data-table__header-cell--checkbox,.mdc-data-table__cell--checkbox{padding-left:4px;padding-right:0}[dir=rtl] .mdc-data-table__header-cell--checkbox,[dir=rtl] .mdc-data-table__cell--checkbox,.mdc-data-table__header-cell--checkbox[dir=rtl],.mdc-data-table__cell--checkbox[dir=rtl]{padding-left:0;padding-right:4px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table--sticky-header .mdc-data-table__header-cell{position:sticky;top:0;z-index:1}.mdc-data-table{-webkit-overflow-scrolling:touch;display:inline-flex;flex-direction:column;box-sizing:border-box;position:relative}.mdc-data-table__table-container{-webkit-overflow-scrolling:touch;overflow-x:auto;width:100%}.mdc-data-table__table{min-width:100%;border:0;white-space:nowrap;border-spacing:0;table-layout:fixed}.mdc-data-table__header-cell{box-sizing:border-box;text-overflow:ellipsis;overflow:hidden;outline:none;text-align:left}[dir=rtl] .mdc-data-table__header-cell,.mdc-data-table__header-cell[dir=rtl]{text-align:right}.mdc-data-table__header-cell--checkbox{width:1px}.mdc-data-table__header-cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__header-cell--numeric,.mdc-data-table__header-cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__sort-icon-button{width:28px;height:28px;padding:2px;transform:rotate(0.0001deg);margin-left:4px;margin-right:0;opacity:0}.mdc-data-table__sort-icon-button .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:28px;height:28px;margin-top:0px;margin-bottom:0px;margin-right:0px;margin-left:0px}.mdc-data-table__sort-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:28px;max-width:28px}.mdc-data-table__sort-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:28px;left:50%;width:28px;transform:translate(-50%, -50%)}[dir=rtl] .mdc-data-table__sort-icon-button,.mdc-data-table__sort-icon-button[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--numeric .mdc-data-table__sort-icon-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__header-cell--sorted-descending .mdc-data-table__sort-icon-button{transform:rotate(-180deg)}.mdc-data-table__sort-icon-button:focus,.mdc-data-table__header-cell:hover .mdc-data-table__sort-icon-button,.mdc-data-table__header-cell--sorted .mdc-data-table__sort-icon-button{opacity:1}.mdc-data-table__header-cell-wrapper{align-items:center;display:inline-flex;vertical-align:middle}.mdc-data-table__header-cell--with-sort{cursor:pointer}.mdc-data-table__sort-status-label{clip:rect(1px, 1px, 1px, 1px);height:1px;overflow:hidden;position:absolute;white-space:nowrap;width:1px}.mdc-data-table__cell{box-sizing:border-box;overflow:hidden;text-align:left;text-overflow:ellipsis}[dir=rtl] .mdc-data-table__cell,.mdc-data-table__cell[dir=rtl]{text-align:right}.mdc-data-table__cell--numeric{text-align:right}[dir=rtl] .mdc-data-table__cell--numeric,.mdc-data-table__cell--numeric[dir=rtl]{text-align:left}.mdc-data-table__cell--checkbox{width:1px}.mdc-data-table__pagination{box-sizing:border-box;display:flex;justify-content:flex-end}.mdc-data-table__pagination-trailing{margin-left:4px;margin-right:0;align-items:center;display:flex;flex-wrap:wrap;justify-content:flex-end}[dir=rtl] .mdc-data-table__pagination-trailing,.mdc-data-table__pagination-trailing[dir=rtl]{margin-left:0;margin-right:4px}.mdc-data-table__pagination-navigation{align-items:center;display:flex}.mdc-data-table__pagination-button{margin-left:0;margin-right:4px}[dir=rtl] .mdc-data-table__pagination-button .mdc-button__icon,.mdc-data-table__pagination-button .mdc-button__icon[dir=rtl]{transform:rotate(180deg)}[dir=rtl] .mdc-data-table__pagination-button,.mdc-data-table__pagination-button[dir=rtl]{margin-left:4px;margin-right:0}.mdc-data-table__pagination-total{margin-left:14px;margin-right:36px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-total,.mdc-data-table__pagination-total[dir=rtl]{margin-left:36px;margin-right:14px}.mdc-data-table__pagination-rows-per-page{margin-left:0;margin-right:22px;align-items:center;display:inline-flex}[dir=rtl] .mdc-data-table__pagination-rows-per-page,.mdc-data-table__pagination-rows-per-page[dir=rtl]{margin-left:22px;margin-right:0}.mdc-data-table__pagination-rows-per-page-label{margin-left:0;margin-right:12px;white-space:nowrap}[dir=rtl] .mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__pagination-rows-per-page-label[dir=rtl]{margin-left:12px;margin-right:0}.mdc-data-table__pagination-rows-per-page-select{min-width:var(--mdc-menu-min-width, 80px);margin:8px 0}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{width:100%;min-width:80px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor{height:36px}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-floating-label--float-above{font-size:.75rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-data-table__pagination-rows-per-page-select .mdc-select__anchor .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-data-table__pagination-rows-per-page-select .mdc-select__dropdown-icon{width:20px;height:20px}.mdc-data-table__pagination-rows-per-page-select.mdc-select--outlined .mdc-select__anchor :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 56px)}.mdc-data-table__pagination-rows-per-page-select .mdc-list-item.mdc-list-item--with-one-line{height:36px}.mdc-data-table__progress-indicator{display:none;position:absolute;width:100%}.mdc-data-table--in-progress .mdc-data-table__progress-indicator{display:block}.mdc-data-table__scrim{background-color:var(--mdc-theme-surface, #fff);height:100%;opacity:.32;position:absolute;top:0;width:100%}mat-table{display:block}mat-header-row{min-height:56px}mat-row,mat-footer-row{min-height:48px}mat-row,mat-header-row,mat-footer-row{display:flex;border-width:0;border-bottom-width:1px;border-style:solid;align-items:center;box-sizing:border-box}mat-cell:first-of-type,mat-header-cell:first-of-type,mat-footer-cell:first-of-type{padding-left:24px}[dir=rtl] mat-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:first-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:first-of-type:not(:only-of-type){padding-left:0;padding-right:24px}mat-cell:last-of-type,mat-header-cell:last-of-type,mat-footer-cell:last-of-type{padding-right:24px}[dir=rtl] mat-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-header-cell:last-of-type:not(:only-of-type),[dir=rtl] mat-footer-cell:last-of-type:not(:only-of-type){padding-right:0;padding-left:24px}mat-cell,mat-header-cell,mat-footer-cell{flex:1;display:flex;align-items:center;overflow:hidden;word-wrap:break-word;min-height:inherit}.mat-mdc-table-sticky{position:sticky !important}.mat-mdc-table{table-layout:auto;white-space:normal}mat-row.mat-mdc-row,mat-header-row.mat-mdc-header-row,mat-footer-row.mat-mdc-footer-row{border-bottom:none}.mat-mdc-table tbody,.mat-mdc-table tfoot,.mat-mdc-table thead,.mat-mdc-cell,.mat-mdc-footer-cell,.mat-mdc-header-row,.mat-mdc-row,.mat-mdc-footer-row,.mat-mdc-table .mat-mdc-header-cell{background:inherit}.mat-mdc-table .mat-mdc-row:hover,.mat-mdc-table .mat-mdc-footer-row:hover{background-color:inherit}.mat-mdc-table mat-header-row.mat-mdc-header-row,.mat-mdc-table mat-row.mat-mdc-row,.mat-mdc-table mat-footer-row.mat-mdc-footer-cell{height:unset}mat-header-cell.mat-mdc-header-cell,mat-cell.mat-mdc-cell,mat-footer-cell.mat-mdc-footer-cell{align-self:stretch}"],encapsulation:2}),i})(),X5=(()=>{class i extends V{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","matCellDef",""]],features:[Ue([{provide:V,useExisting:i}]),Se]}),i})(),Z5=(()=>{class i extends H{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","matHeaderCellDef",""]],features:[Ue([{provide:H,useExisting:i}]),Se]}),i})(),K5=(()=>{class i extends q{get name(){return this._name}set name(e){this._setNameInput(e)}_updateColumnCssClassName(){super._updateColumnCssClassName(),this._columnCssClassName.push(`mat-column-${this.cssClassFriendlyName}`)}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","matColumnDef",""]],inputs:{sticky:"sticky",name:["matColumnDef","name"]},features:[Ue([{provide:q,useExisting:i},{provide:"MAT_SORT_HEADER_COLUMN_DEF",useExisting:i}]),Se]}),i})(),Q5=(()=>{class i extends ee{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["mat-header-cell"],["th","mat-header-cell",""]],hostAttrs:["role","columnheader",1,"mat-mdc-header-cell","mdc-data-table__header-cell"],features:[Se]}),i})(),J5=(()=>{class i extends re{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["mat-cell"],["td","mat-cell",""]],hostAttrs:[1,"mat-mdc-cell","mdc-data-table__cell"],features:[Se]}),i})(),CY=(()=>{class i extends Ke{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","matHeaderRowDef",""]],inputs:{columns:["matHeaderRowDef","columns"],sticky:["matHeaderRowDefSticky","sticky"]},features:[Ue([{provide:Ke,useExisting:i}]),Se]}),i})(),SY=(()=>{class i extends ot{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","matRowDef",""]],inputs:{columns:["matRowDefColumns","columns"],when:["matRowDefWhen","when"]},features:[Ue([{provide:ot,useExisting:i}]),Se]}),i})(),DY=(()=>{class i extends kt{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-header-row"],["tr","mat-header-row",""]],hostAttrs:["role","row",1,"mat-mdc-header-row","mdc-data-table__header-row"],exportAs:["matHeaderRow"],features:[Ue([{provide:kt,useExisting:i}]),Se],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,o){1&e&&uo(0,0)},dependencies:[Mt],encapsulation:2}),i})(),MY=(()=>{class i extends wt{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-row"],["tr","mat-row",""]],hostAttrs:["role","row",1,"mat-mdc-row","mdc-data-table__row"],exportAs:["matRow"],features:[Ue([{provide:wt,useExisting:i}]),Se],decls:1,vars:0,consts:[["cdkCellOutlet",""]],template:function(e,o){1&e&&uo(0,0)},dependencies:[Mt],encapsulation:2}),i})(),Ane=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,gne,nn]}),i})();class Ene extends I9{get data(){return this._data.value}set data(a){a=Array.isArray(a)?a:[],this._data.next(a),this._renderChangesSubscription||this._filterData(a)}get filter(){return this._filter.value}set filter(a){this._filter.next(a),this._renderChangesSubscription||this._filterData(this.data)}get sort(){return this._sort}set sort(a){this._sort=a,this._updateChangeSubscription()}get paginator(){return this._paginator}set paginator(a){this._paginator=a,this._updateChangeSubscription()}constructor(a=[]){super(),this._renderData=new Oi([]),this._filter=new Oi(""),this._internalPageChanges=new He,this._renderChangesSubscription=null,this.sortingDataAccessor=(e,o)=>{const d=e[o];if(nk(d)){const h=Number(d);return h<9007199254740991?h:d}return d},this.sortData=(e,o)=>{const d=o.active,h=o.direction;return d&&""!=h?e.sort((_,w)=>{let D=this.sortingDataAccessor(_,d),k=this.sortingDataAccessor(w,d);const P=typeof D,B=typeof k;P!==B&&("number"===P&&(D+=""),"number"===B&&(k+=""));let W=0;return null!=D&&null!=k?D>k?W=1:D{const d=Object.keys(e).reduce((_,w)=>_+e[w]+"\u25ec","").toLowerCase(),h=o.trim().toLowerCase();return-1!=d.indexOf(h)},this._data=new Oi(a),this._updateChangeSubscription()}_updateChangeSubscription(){var a;const e=this._sort?Wn(this._sort.sortChange,this._sort.initialized):Ze(null),o=this._paginator?Wn(this._paginator.page,this._internalPageChanges,this._paginator.initialized):Ze(null),h=Za([this._data,this._filter]).pipe(vt(([D])=>this._filterData(D))),_=Za([h,e]).pipe(vt(([D])=>this._orderData(D))),w=Za([_,o]).pipe(vt(([D])=>this._pageData(D)));null===(a=this._renderChangesSubscription)||void 0===a||a.unsubscribe(),this._renderChangesSubscription=w.subscribe(D=>this._renderData.next(D))}_filterData(a){return this.filteredData=null==this.filter||""===this.filter?a:a.filter(e=>this.filterPredicate(e,this.filter)),this.paginator&&this._updatePaginator(this.filteredData.length),this.filteredData}_orderData(a){return this.sort?this.sortData(a.slice(),this.sort):a}_pageData(a){if(!this.paginator)return a;const e=this.paginator.pageIndex*this.paginator.pageSize;return a.slice(e,e+this.paginator.pageSize)}_updatePaginator(a){Promise.resolve().then(()=>{const e=this.paginator;if(e&&(e.length=a,e.pageIndex>0)){const o=Math.ceil(e.length/e.pageSize)-1||0,d=Math.min(e.pageIndex,o);d!==e.pageIndex&&(e.pageIndex=d,this._internalPageChanges.next())}})}connect(){return this._renderChangesSubscription||this._updateChangeSubscription(),this._renderData}disconnect(){var a;null===(a=this._renderChangesSubscription)||void 0===a||a.unsubscribe(),this._renderChangesSubscription=null}}class CJ extends Ene{}function SJ(i,a){return a?e=>ey(a.pipe(Tn(1),function Ine(){return Gn((i,a)=>{i.subscribe(si(a,Td))})}()),e.pipe(SJ(i))):Vi((e,o)=>$e(i(e,o)).pipe(Tn(1),hF(e)))}function ez(i,a=Ru){const e=Fy(i,a);return SJ(()=>e)}const Pne=["input"],Rne=["label"],One=["*"],Lne=new be("mat-checkbox-default-options",{providedIn:"root",factory:DJ});function DJ(){return{color:"accent",clickAction:"check-indeterminate"}}const Fne={provide:pa,useExisting:bn(()=>TJ),multi:!0};class Nne{}let Bne=0;const MJ=DJ(),Vne=gd(Fs(oc(Uo(class{constructor(i){this._elementRef=i}}))));let zne=(()=>{class i extends Vne{get inputId(){return`${this.id||this._uniqueId}-input`}get required(){return this._required}set required(e){this._required=Ge(e)}constructor(e,o,d,h,_,w,D){super(o),this._changeDetectorRef=d,this._ngZone=h,this._animationMode=w,this._options=D,this.ariaLabel="",this.ariaLabelledby=null,this.labelPosition="after",this.name=null,this.change=new we,this.indeterminateChange=new we,this._onTouched=()=>{},this._currentAnimationClass="",this._currentCheckState=0,this._controlValueAccessorChangeFn=()=>{},this._checked=!1,this._disabled=!1,this._indeterminate=!1,this._options=this._options||MJ,this.color=this.defaultColor=this._options.color||MJ.color,this.tabIndex=parseInt(_)||0,this.id=this._uniqueId=`${e}${++Bne}`}ngAfterViewInit(){this._syncIndeterminate(this._indeterminate)}get checked(){return this._checked}set checked(e){const o=Ge(e);o!=this.checked&&(this._checked=o,this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(e){const o=Ge(e);o!==this.disabled&&(this._disabled=o,this._changeDetectorRef.markForCheck())}get indeterminate(){return this._indeterminate}set indeterminate(e){const o=e!=this._indeterminate;this._indeterminate=Ge(e),o&&(this._transitionCheckState(this._indeterminate?3:this.checked?1:2),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(e){this.checked=!!e}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_transitionCheckState(e){let o=this._currentCheckState,d=this._getAnimationTargetElement();if(o!==e&&d&&(this._currentAnimationClass&&d.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(o,e),this._currentCheckState=e,this._currentAnimationClass.length>0)){d.classList.add(this._currentAnimationClass);const h=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{d.classList.remove(h)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){var e;const o=null===(e=this._options)||void 0===e?void 0:e.clickAction;this.disabled||"noop"===o?!this.disabled&&"noop"===o&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==o&&Promise.resolve().then(()=>{this._indeterminate=!1,this.indeterminateChange.emit(this._indeterminate)}),this._checked=!this._checked,this._transitionCheckState(this._checked?1:2),this._emitChangeEvent())}_onInteractionEvent(e){e.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(e,o){if("NoopAnimations"===this._animationMode)return"";switch(e){case 0:if(1===o)return this._animationClasses.uncheckedToChecked;if(3==o)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case 2:return 1===o?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case 1:return 2===o?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case 3:return 1===o?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(e){const o=this._inputElement;o&&(o.nativeElement.indeterminate=e)}}return i.\u0275fac=function(e){Js()},i.\u0275dir=me({type:i,viewQuery:function(e,o){if(1&e&&(ct(Pne,5),ct(Rne,5),ct(fa,5)),2&e){let d;Pe(d=Ae())&&(o._inputElement=d.first),Pe(d=Ae())&&(o._labelElement=d.first),Pe(d=Ae())&&(o.ripple=d.first)}},inputs:{ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],id:"id",required:"required",labelPosition:"labelPosition",name:"name",value:"value",checked:"checked",disabled:"disabled",indeterminate:"indeterminate"},outputs:{change:"change",indeterminateChange:"indeterminateChange"},features:[Se]}),i})(),TJ=(()=>{class i extends zne{constructor(e,o,d,h,_,w){super("mat-mdc-checkbox-",e,o,d,h,_,w),this._animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"}}focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(e){const o=new Nne;return o.source=this,o.checked=e,o}_getAnimationTargetElement(){var e;return null===(e=this._inputElement)||void 0===e?void 0:e.nativeElement}_onInputClick(){super._handleInputClick()}_onTouchTargetClick(){super._handleInputClick(),this.disabled||this._inputElement.nativeElement.focus()}_preventBubblingFromLabel(e){e.target&&this._labelElement.nativeElement.contains(e.target)&&e.stopPropagation()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(et),Co("tabindex"),F(Ei,8),F(Lne,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-checkbox"]],hostAttrs:[1,"mat-mdc-checkbox"],hostVars:12,hostBindings:function(e,o){2&e&&(la("id",o.id),Ve("tabindex",null)("aria-label",null)("aria-labelledby",null),st("_mat-animation-noopable","NoopAnimations"===o._animationMode)("mdc-checkbox--disabled",o.disabled)("mat-mdc-checkbox-disabled",o.disabled)("mat-mdc-checkbox-checked",o.checked))},inputs:{disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matCheckbox"],features:[Ue([Fne]),Se],ngContentSelectors:One,decls:15,vars:19,consts:[[1,"mdc-form-field",3,"click"],[1,"mdc-checkbox"],["checkbox",""],[1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"checked","indeterminate","disabled","id","required","tabIndex","blur","click","change"],["input",""],[1,"mdc-checkbox__ripple"],[1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24","aria-hidden","true",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","",1,"mat-mdc-checkbox-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[3,"for"],["label",""]],template:function(e,o){if(1&e&&(On(),I(0,"div",0),Q("click",function(h){return o._preventBubblingFromLabel(h)}),I(1,"div",1,2)(3,"div",3),Q("click",function(){return o._onTouchTargetClick()}),O(),I(4,"input",4,5),Q("blur",function(){return o._onBlur()})("click",function(){return o._onInputClick()})("change",function(h){return o._onInteractionEvent(h)}),O(),pe(6,"div",6),I(7,"div",7),Wr(),I(8,"svg",8),pe(9,"path",9),O(),xc(),pe(10,"div",10),O(),pe(11,"div",11),O(),I(12,"label",12,13),ut(14),O()()),2&e){const d=on(2);st("mdc-form-field--align-end","before"==o.labelPosition),N(4),st("mdc-checkbox--selected",o.checked),z("checked",o.checked)("indeterminate",o.indeterminate)("disabled",o.disabled)("id",o.inputId)("required",o.required)("tabIndex",o.tabIndex),Ve("aria-label",o.ariaLabel||null)("aria-labelledby",o.ariaLabelledby)("aria-describedby",o.ariaDescribedby)("name",o.name)("value",o.value),N(7),z("matRippleTrigger",d)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),N(1),z("for",o.inputId)}},dependencies:[fa],styles:['.mdc-touch-target-wrapper{display:inline}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}.mdc-checkbox[hidden]{display:none}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{border-color:CanvasText}}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{border-color:CanvasText}}@media all and (-ms-high-contrast: none){.mdc-checkbox .mdc-checkbox__focus-ring{display:none}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox--touch{margin:calc((var(--mdc-checkbox-state-layer-size, 48px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mdc-checkbox--touch .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);width:var(--mdc-checkbox-state-layer-size, 48px);height:var(--mdc-checkbox-state-layer-size, 48px)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none}.mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color, rgba(0, 0, 0, 0.38));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:transparent;background-color:var(--mdc-checkbox-disabled-selected-icon-color, rgba(0, 0, 0, 0.38))}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);width:var(--mdc-checkbox-state-layer-size, 40px);height:var(--mdc-checkbox-state-layer-size, 40px)}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple{opacity:.04;transform:scale(1);transition:opacity 80ms 0 cubic-bezier(0, 0, 0.2, 1),transform 80ms 0 cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:not([disabled]):focus~.mdc-checkbox__ripple{opacity:.16}.mat-mdc-checkbox .mdc-checkbox__background{-webkit-print-color-adjust:exact;color-adjust:exact}.mat-mdc-checkbox._mat-animation-noopable *,.mat-mdc-checkbox._mat-animation-noopable *::before{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__native-control:focus:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, black)}.cdk-high-contrast-active .mat-mdc-checkbox.mat-mdc-checkbox-disabled{opacity:.5}.cdk-high-contrast-active .mat-mdc-checkbox .mdc-checkbox__checkmark{--mdc-checkbox-selected-checkmark-color: CanvasText;--mdc-checkbox-disabled-selected-checkmark-color: CanvasText}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),i})(),AJ=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})(),kJ=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,lc,AJ,nn,AJ]}),i})();const Une=["*"];let tz;function uI(i){var a;return(null===(a=function jne(){if(void 0===tz&&(tz=null,typeof window<"u")){const i=window;void 0!==i.trustedTypes&&(tz=i.trustedTypes.createPolicy("angular#components",{createHTML:a=>a}))}return tz}())||void 0===a?void 0:a.createHTML(i))||i}function EJ(i){return Error(`Unable to find icon with the name "${i}"`)}function IJ(i){return Error(`The URL provided to MatIconRegistry was not trusted as a resource URL via Angular's DomSanitizer. Attempted URL was "${i}".`)}function PJ(i){return Error(`The literal provided to MatIconRegistry was not trusted as safe HTML by Angular's DomSanitizer. Attempted literal was "${i}".`)}class Cb{constructor(a,e,o){this.url=a,this.svgText=e,this.options=o}}let nz=(()=>{class i{constructor(e,o,d,h){this._httpClient=e,this._sanitizer=o,this._errorHandler=h,this._svgIconConfigs=new Map,this._iconSetConfigs=new Map,this._cachedIconsByUrl=new Map,this._inProgressUrlFetches=new Map,this._fontCssClassesByAlias=new Map,this._resolvers=[],this._defaultFontSetClass=["material-icons","mat-ligature-font"],this._document=d}addSvgIcon(e,o,d){return this.addSvgIconInNamespace("",e,o,d)}addSvgIconLiteral(e,o,d){return this.addSvgIconLiteralInNamespace("",e,o,d)}addSvgIconInNamespace(e,o,d,h){return this._addSvgIconConfig(e,o,new Cb(d,null,h))}addSvgIconResolver(e){return this._resolvers.push(e),this}addSvgIconLiteralInNamespace(e,o,d,h){const _=this._sanitizer.sanitize(Bn.HTML,d);if(!_)throw PJ(d);const w=uI(_);return this._addSvgIconConfig(e,o,new Cb("",w,h))}addSvgIconSet(e,o){return this.addSvgIconSetInNamespace("",e,o)}addSvgIconSetLiteral(e,o){return this.addSvgIconSetLiteralInNamespace("",e,o)}addSvgIconSetInNamespace(e,o,d){return this._addSvgIconSetConfig(e,new Cb(o,null,d))}addSvgIconSetLiteralInNamespace(e,o,d){const h=this._sanitizer.sanitize(Bn.HTML,o);if(!h)throw PJ(o);const _=uI(h);return this._addSvgIconSetConfig(e,new Cb("",_,d))}registerFontClassAlias(e,o=e){return this._fontCssClassesByAlias.set(e,o),this}classNameForFontAlias(e){return this._fontCssClassesByAlias.get(e)||e}setDefaultFontSetClass(...e){return this._defaultFontSetClass=e,this}getDefaultFontSetClass(){return this._defaultFontSetClass}getSvgIconFromUrl(e){const o=this._sanitizer.sanitize(Bn.RESOURCE_URL,e);if(!o)throw IJ(e);const d=this._cachedIconsByUrl.get(o);return d?Ze(iz(d)):this._loadSvgIconFromConfig(new Cb(e,null)).pipe(Li(h=>this._cachedIconsByUrl.set(o,h)),vt(h=>iz(h)))}getNamedSvgIcon(e,o=""){const d=RJ(o,e);let h=this._svgIconConfigs.get(d);if(h)return this._getSvgFromConfig(h);if(h=this._getIconConfigFromResolvers(o,e),h)return this._svgIconConfigs.set(d,h),this._getSvgFromConfig(h);const _=this._iconSetConfigs.get(o);return _?this._getSvgFromIconSetConfigs(e,_):rd(EJ(d))}ngOnDestroy(){this._resolvers=[],this._svgIconConfigs.clear(),this._iconSetConfigs.clear(),this._cachedIconsByUrl.clear()}_getSvgFromConfig(e){return e.svgText?Ze(iz(this._svgElementFromConfig(e))):this._loadSvgIconFromConfig(e).pipe(vt(o=>iz(o)))}_getSvgFromIconSetConfigs(e,o){const d=this._extractIconWithNameFromAnySet(e,o);return d?Ze(d):AV(o.filter(_=>!_.svgText).map(_=>this._loadSvgIconSetFromConfig(_).pipe(Oa(w=>{const k=`Loading icon set URL: ${this._sanitizer.sanitize(Bn.RESOURCE_URL,_.url)} failed: ${w.message}`;return this._errorHandler.handleError(new Error(k)),Ze(null)})))).pipe(vt(()=>{const _=this._extractIconWithNameFromAnySet(e,o);if(!_)throw EJ(e);return _}))}_extractIconWithNameFromAnySet(e,o){for(let d=o.length-1;d>=0;d--){const h=o[d];if(h.svgText&&h.svgText.toString().indexOf(e)>-1){const _=this._svgElementFromConfig(h),w=this._extractSvgIconFromSet(_,e,h.options);if(w)return w}}return null}_loadSvgIconFromConfig(e){return this._fetchIcon(e).pipe(Li(o=>e.svgText=o),vt(()=>this._svgElementFromConfig(e)))}_loadSvgIconSetFromConfig(e){return e.svgText?Ze(null):this._fetchIcon(e).pipe(Li(o=>e.svgText=o))}_extractSvgIconFromSet(e,o,d){const h=e.querySelector(`[id="${o}"]`);if(!h)return null;const _=h.cloneNode(!0);if(_.removeAttribute("id"),"svg"===_.nodeName.toLowerCase())return this._setSvgAttributes(_,d);if("symbol"===_.nodeName.toLowerCase())return this._setSvgAttributes(this._toSvgElement(_),d);const w=this._svgElementFromString(uI(""));return w.appendChild(_),this._setSvgAttributes(w,d)}_svgElementFromString(e){const o=this._document.createElement("DIV");o.innerHTML=e;const d=o.querySelector("svg");if(!d)throw Error(" tag not found");return d}_toSvgElement(e){const o=this._svgElementFromString(uI("")),d=e.attributes;for(let h=0;huI(P)),fA(()=>this._inProgressUrlFetches.delete(w)),Lb());return this._inProgressUrlFetches.set(w,k),k}_addSvgIconConfig(e,o,d){return this._svgIconConfigs.set(RJ(e,o),d),this}_addSvgIconSetConfig(e,o){const d=this._iconSetConfigs.get(e);return d?d.push(o):this._iconSetConfigs.set(e,[o]),this}_svgElementFromConfig(e){if(!e.svgElement){const o=this._svgElementFromString(e.svgText);this._setSvgAttributes(o,e.options),e.svgElement=o}return e.svgElement}_getIconConfigFromResolvers(e,o){for(let d=0;da?a.pathname+a.search:""}}}),OJ=["clip-path","color-profile","src","cursor","fill","filter","marker","marker-start","marker-mid","marker-end","mask","stroke"],Qne=OJ.map(i=>`[${i}]`).join(", "),Jne=/^url\(['"]?#(.*?)['"]?\)$/;let eie=(()=>{class i extends qne{get inline(){return this._inline}set inline(e){this._inline=Ge(e)}get svgIcon(){return this._svgIcon}set svgIcon(e){e!==this._svgIcon&&(e?this._updateSvgIcon(e):this._svgIcon&&this._clearSvgElement(),this._svgIcon=e)}get fontSet(){return this._fontSet}set fontSet(e){const o=this._cleanupFontValue(e);o!==this._fontSet&&(this._fontSet=o,this._updateFontIconClasses())}get fontIcon(){return this._fontIcon}set fontIcon(e){const o=this._cleanupFontValue(e);o!==this._fontIcon&&(this._fontIcon=o,this._updateFontIconClasses())}constructor(e,o,d,h,_,w){super(e),this._iconRegistry=o,this._location=h,this._errorHandler=_,this._inline=!1,this._previousFontSetClass=[],this._currentIconFetch=xt.EMPTY,w&&(w.color&&(this.color=this.defaultColor=w.color),w.fontSet&&(this.fontSet=w.fontSet)),d||e.nativeElement.setAttribute("aria-hidden","true")}_splitIconName(e){if(!e)return["",""];const o=e.split(":");switch(o.length){case 1:return["",o[0]];case 2:return o;default:throw Error(`Invalid icon name: "${e}"`)}}ngOnInit(){this._updateFontIconClasses()}ngAfterViewChecked(){const e=this._elementsWithExternalReferences;if(e&&e.size){const o=this._location.getPathname();o!==this._previousPath&&(this._previousPath=o,this._prependPathToReferences(o))}}ngOnDestroy(){this._currentIconFetch.unsubscribe(),this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear()}_usingFontIcon(){return!this.svgIcon}_setSvgElement(e){this._clearSvgElement();const o=this._location.getPathname();this._previousPath=o,this._cacheChildrenWithExternalReferences(e),this._prependPathToReferences(o),this._elementRef.nativeElement.appendChild(e)}_clearSvgElement(){const e=this._elementRef.nativeElement;let o=e.childNodes.length;for(this._elementsWithExternalReferences&&this._elementsWithExternalReferences.clear();o--;){const d=e.childNodes[o];(1!==d.nodeType||"svg"===d.nodeName.toLowerCase())&&d.remove()}}_updateFontIconClasses(){if(!this._usingFontIcon())return;const e=this._elementRef.nativeElement,o=(this.fontSet?this._iconRegistry.classNameForFontAlias(this.fontSet).split(/ +/):this._iconRegistry.getDefaultFontSetClass()).filter(d=>d.length>0);this._previousFontSetClass.forEach(d=>e.classList.remove(d)),o.forEach(d=>e.classList.add(d)),this._previousFontSetClass=o,this.fontIcon!==this._previousFontIconClass&&!o.includes("mat-ligature-font")&&(this._previousFontIconClass&&e.classList.remove(this._previousFontIconClass),this.fontIcon&&e.classList.add(this.fontIcon),this._previousFontIconClass=this.fontIcon)}_cleanupFontValue(e){return"string"==typeof e?e.trim().split(" ")[0]:e}_prependPathToReferences(e){const o=this._elementsWithExternalReferences;o&&o.forEach((d,h)=>{d.forEach(_=>{h.setAttribute(_.name,`url('${e}#${_.value}')`)})})}_cacheChildrenWithExternalReferences(e){const o=e.querySelectorAll(Qne),d=this._elementsWithExternalReferences=this._elementsWithExternalReferences||new Map;for(let h=0;h{const w=o[h],D=w.getAttribute(_),k=D?D.match(Jne):null;if(k){let P=d.get(w);P||(P=[],d.set(w,P)),P.push({name:_,value:k[1]})}})}_updateSvgIcon(e){if(this._svgNamespace=null,this._svgName=null,this._currentIconFetch.unsubscribe(),e){const[o,d]=this._splitIconName(e);o&&(this._svgNamespace=o),d&&(this._svgName=d),this._currentIconFetch=this._iconRegistry.getNamedSvgIcon(d,o).pipe(Tn(1)).subscribe(h=>this._setSvgElement(h),h=>{this._errorHandler.handleError(new Error(`Error retrieving icon ${o}:${d}! ${h.message}`))})}}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(nz),Co("aria-hidden"),F(Zne),F(Fl),F(Xne,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-icon"]],hostAttrs:["role","img",1,"mat-icon","notranslate"],hostVars:8,hostBindings:function(e,o){2&e&&(Ve("data-mat-icon-type",o._usingFontIcon()?"font":"svg")("data-mat-icon-name",o._svgName||o.fontIcon)("data-mat-icon-namespace",o._svgNamespace||o.fontSet)("fontIcon",o._usingFontIcon()?o.fontIcon:null),st("mat-icon-inline",o.inline)("mat-icon-no-color","primary"!==o.color&&"accent"!==o.color&&"warn"!==o.color))},inputs:{color:"color",inline:"inline",svgIcon:"svgIcon",fontSet:"fontSet",fontIcon:"fontIcon"},exportAs:["matIcon"],features:[Se],ngContentSelectors:Une,decls:1,vars:0,template:function(e,o){1&e&&(On(),ut(0))},styles:[".mat-icon{-webkit-user-select:none;user-select:none;background-repeat:no-repeat;display:inline-block;fill:currentColor;height:24px;width:24px;overflow:hidden}.mat-icon.mat-icon-inline{font-size:inherit;height:inherit;line-height:inherit;width:inherit}.mat-icon.mat-ligature-font[fontIcon]::before{content:attr(fontIcon)}[dir=rtl] .mat-icon-rtl-mirror{transform:scale(-1, 1)}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon{display:block}.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-prefix .mat-icon-button .mat-icon,.mat-form-field:not(.mat-form-field-appearance-legacy) .mat-form-field-suffix .mat-icon-button .mat-icon{margin:auto}"],encapsulation:2,changeDetection:0}),i})(),tie=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,nn]}),i})();const nie=["determinateSpinner"];function iie(i,a){if(1&i&&(Wr(),I(0,"svg",11),pe(1,"circle",12),O()),2&i){const e=X();Ve("viewBox",e._viewBox()),N(1),Ta("stroke-dasharray",e._strokeCircumference(),"px")("stroke-dashoffset",e._strokeCircumference()/2,"px")("stroke-width",e._circleStrokeWidth(),"%"),Ve("r",e._circleRadius())}}const rie=Fs(class{constructor(i){this._elementRef=i}},"primary"),aie=new be("mat-progress-spinner-default-options",{providedIn:"root",factory:function oie(){return{diameter:LJ}}}),LJ=100;let FJ=(()=>{class i extends rie{constructor(e,o,d){super(e),this.mode="mat-spinner"===this._elementRef.nativeElement.nodeName.toLowerCase()?"indeterminate":"determinate",this._value=0,this._diameter=LJ,this._noopAnimations="NoopAnimations"===o&&!!d&&!d._forceAnimations,d&&(d.color&&(this.color=this.defaultColor=d.color),d.diameter&&(this.diameter=d.diameter),d.strokeWidth&&(this.strokeWidth=d.strokeWidth))}get value(){return"determinate"===this.mode?this._value:0}set value(e){this._value=Math.max(0,Math.min(100,Br(e)))}get diameter(){return this._diameter}set diameter(e){this._diameter=Br(e)}get strokeWidth(){var e;return null!==(e=this._strokeWidth)&&void 0!==e?e:this.diameter/10}set strokeWidth(e){this._strokeWidth=Br(e)}_circleRadius(){return(this.diameter-10)/2}_viewBox(){const e=2*this._circleRadius()+this.strokeWidth;return`0 0 ${e} ${e}`}_strokeCircumference(){return 2*Math.PI*this._circleRadius()}_strokeDashOffset(){return"determinate"===this.mode?this._strokeCircumference()*(100-this._value)/100:null}_circleStrokeWidth(){return this.strokeWidth/this.diameter*100}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Ei,8),F(aie))},i.\u0275cmp=_e({type:i,selectors:[["mat-progress-spinner"],["mat-spinner"]],viewQuery:function(e,o){if(1&e&&ct(nie,5),2&e){let d;Pe(d=Ae())&&(o._determinateCircle=d.first)}},hostAttrs:["role","progressbar","tabindex","-1",1,"mat-mdc-progress-spinner","mdc-circular-progress"],hostVars:12,hostBindings:function(e,o){2&e&&(Ve("aria-valuemin",0)("aria-valuemax",100)("aria-valuenow","determinate"===o.mode?o.value:null)("mode",o.mode),Ta("width",o.diameter,"px")("height",o.diameter,"px"),st("_mat-animation-noopable",o._noopAnimations)("mdc-circular-progress--indeterminate","indeterminate"===o.mode))},inputs:{color:"color",mode:"mode",value:"value",diameter:"diameter",strokeWidth:"strokeWidth"},exportAs:["matProgressSpinner"],features:[Se],decls:14,vars:11,consts:[["circle",""],["aria-hidden","true",1,"mdc-circular-progress__determinate-container"],["determinateSpinner",""],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__determinate-circle-graphic"],["cx","50%","cy","50%",1,"mdc-circular-progress__determinate-circle"],["aria-hidden","true",1,"mdc-circular-progress__indeterminate-container"],[1,"mdc-circular-progress__spinner-layer"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-left"],[3,"ngTemplateOutlet"],[1,"mdc-circular-progress__gap-patch"],[1,"mdc-circular-progress__circle-clipper","mdc-circular-progress__circle-right"],["xmlns","http://www.w3.org/2000/svg","focusable","false",1,"mdc-circular-progress__indeterminate-circle-graphic"],["cx","50%","cy","50%"]],template:function(e,o){if(1&e&&(J(0,iie,2,8,"ng-template",null,0,Zr),I(2,"div",1,2),Wr(),I(4,"svg",3),pe(5,"circle",4),O()(),xc(),I(6,"div",5)(7,"div",6)(8,"div",7),uo(9,8),O(),I(10,"div",9),uo(11,8),O(),I(12,"div",10),uo(13,8),O()()()),2&e){const d=on(1);N(4),Ve("viewBox",o._viewBox()),N(1),Ta("stroke-dasharray",o._strokeCircumference(),"px")("stroke-dashoffset",o._strokeDashOffset(),"px")("stroke-width",o._circleStrokeWidth(),"%"),Ve("r",o._circleRadius()),N(4),z("ngTemplateOutlet",d),N(2),z("ngTemplateOutlet",d),N(2),z("ngTemplateOutlet",d)}},dependencies:[px],styles:["@keyframes mdc-circular-progress-container-rotate{to{transform:rotate(360deg)}}@keyframes mdc-circular-progress-spinner-layer-rotate{12.5%{transform:rotate(135deg)}25%{transform:rotate(270deg)}37.5%{transform:rotate(405deg)}50%{transform:rotate(540deg)}62.5%{transform:rotate(675deg)}75%{transform:rotate(810deg)}87.5%{transform:rotate(945deg)}100%{transform:rotate(1080deg)}}@keyframes mdc-circular-progress-color-1-fade-in-out{from{opacity:.99}25%{opacity:.99}26%{opacity:0}89%{opacity:0}90%{opacity:.99}to{opacity:.99}}@keyframes mdc-circular-progress-color-2-fade-in-out{from{opacity:0}15%{opacity:0}25%{opacity:.99}50%{opacity:.99}51%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-3-fade-in-out{from{opacity:0}40%{opacity:0}50%{opacity:.99}75%{opacity:.99}76%{opacity:0}to{opacity:0}}@keyframes mdc-circular-progress-color-4-fade-in-out{from{opacity:0}65%{opacity:0}75%{opacity:.99}90%{opacity:.99}to{opacity:0}}@keyframes mdc-circular-progress-left-spin{from{transform:rotate(265deg)}50%{transform:rotate(130deg)}to{transform:rotate(265deg)}}@keyframes mdc-circular-progress-right-spin{from{transform:rotate(-265deg)}50%{transform:rotate(-130deg)}to{transform:rotate(-265deg)}}.mdc-circular-progress{display:inline-flex;position:relative;direction:ltr;line-height:0;transition:opacity 250ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-circular-progress__determinate-container,.mdc-circular-progress__indeterminate-circle-graphic,.mdc-circular-progress__indeterminate-container,.mdc-circular-progress__spinner-layer{position:absolute;width:100%;height:100%}.mdc-circular-progress__determinate-container{transform:rotate(-90deg)}.mdc-circular-progress__indeterminate-container{font-size:0;letter-spacing:0;white-space:nowrap;opacity:0}.mdc-circular-progress__determinate-circle-graphic,.mdc-circular-progress__indeterminate-circle-graphic{fill:rgba(0,0,0,0)}.mdc-circular-progress__determinate-circle{transition:stroke-dashoffset 500ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-circular-progress__gap-patch{position:absolute;top:0;left:47.5%;box-sizing:border-box;width:5%;height:100%;overflow:hidden}.mdc-circular-progress__gap-patch .mdc-circular-progress__indeterminate-circle-graphic{left:-900%;width:2000%;transform:rotate(180deg)}.mdc-circular-progress__circle-clipper{display:inline-flex;position:relative;width:50%;height:100%;overflow:hidden}.mdc-circular-progress__circle-clipper .mdc-circular-progress__indeterminate-circle-graphic{width:200%}.mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{left:-100%}.mdc-circular-progress--indeterminate .mdc-circular-progress__determinate-container{opacity:0}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{opacity:1}.mdc-circular-progress--indeterminate .mdc-circular-progress__indeterminate-container{animation:mdc-circular-progress-container-rotate 1568.2352941176ms linear infinite}.mdc-circular-progress--indeterminate .mdc-circular-progress__spinner-layer{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-1{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-1-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-2{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-2-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-3{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-3-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__color-4{animation:mdc-circular-progress-spinner-layer-rotate 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both,mdc-circular-progress-color-4-fade-in-out 5332ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-left .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-left-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--indeterminate .mdc-circular-progress__circle-right .mdc-circular-progress__indeterminate-circle-graphic{animation:mdc-circular-progress-right-spin 1333ms cubic-bezier(0.4, 0, 0.2, 1) infinite both}.mdc-circular-progress--closed{opacity:0}.mat-mdc-progress-spinner{display:block;overflow:hidden;line-height:0}.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:var(--mdc-circular-progress-active-indicator-color, transparent)}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle,.mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-1 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-2 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-3 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mat-mdc-progress-spinner .mdc-circular-progress--four-color .mdc-circular-progress__color-4 .mdc-circular-progress__indeterminate-circle-graphic{stroke:CanvasText}}.mat-mdc-progress-spinner._mat-animation-noopable,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__determinate-circle{transition:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-circle-graphic,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__spinner-layer,.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container{animation:none}.mat-mdc-progress-spinner._mat-animation-noopable .mdc-circular-progress__indeterminate-container circle{stroke-dasharray:0 !important}.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__indeterminate-circle-graphic,.cdk-high-contrast-active .mat-mdc-progress-spinner .mdc-circular-progress__determinate-circle{stroke:currentColor;stroke:CanvasText}"],encapsulation:2,changeDetection:0}),i})(),NJ=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[Ri,nn]}),i})(),BJ=(()=>{class i{constructor(){this._vertical=!1,this._inset=!1}get vertical(){return this._vertical}set vertical(e){this._vertical=Ge(e)}get inset(){return this._inset}set inset(e){this._inset=Ge(e)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["mat-divider"]],hostAttrs:["role","separator",1,"mat-divider"],hostVars:7,hostBindings:function(e,o){2&e&&(Ve("aria-orientation",o.vertical?"vertical":"horizontal"),st("mat-divider-vertical",o.vertical)("mat-divider-horizontal",!o.vertical)("mat-divider-inset",o.inset))},inputs:{vertical:"vertical",inset:"inset"},decls:0,vars:0,template:function(e,o){},styles:[".mat-divider{display:block;margin:0;border-top-width:1px;border-top-style:solid}.mat-divider.mat-divider-vertical{border-top:0;border-right-width:1px;border-right-style:solid}.mat-divider.mat-divider-inset{margin-left:80px}[dir=rtl] .mat-divider.mat-divider-inset{margin-left:auto;margin-right:80px}"],encapsulation:2,changeDetection:0}),i})(),VJ=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,nn]}),i})();const lie=["searchSelectInput"],cie=["innerSelectSearch"];function die(i,a){if(1&i){const e=Ee();I(0,"mat-checkbox",9),Q("change",function(d){return le(e),oe(X()._emitSelectAllBooleanToParent(d.checked))}),O()}if(2&i){const e=X();z("color",null==e.matFormField?null:e.matFormField.color)("checked",e.toggleAllCheckboxChecked)("indeterminate",e.toggleAllCheckboxIndeterminate)("matTooltip",e.toggleAllCheckboxTooltipMessage)("matTooltipPosition",e.toggleAllCheckboxTooltipPosition)}}function uie(i,a){1&i&&pe(0,"mat-spinner",10)}function hie(i,a){1&i&&ut(0,1,["*ngIf","clearIcon; else defaultIcon"])}function fie(i,a){if(1&i&&(I(0,"mat-icon",14),Y(1),O()),2&i){const e=X(2);z("svgIcon",e.closeSvgIcon),N(1),Ie(" ",e.closeSvgIcon?null:e.closeIcon," ")}}function pie(i,a){if(1&i){const e=Ee();I(0,"button",11),Q("click",function(){return le(e),oe(X()._reset(!0))}),J(1,hie,1,0,"ng-content",12),J(2,fie,2,2,"ng-template",null,13,Zr),O()}if(2&i){const e=on(3),o=X();N(1),z("ngIf",o.clearIcon)("ngIfElse",e)}}function mie(i,a){1&i&&ut(0,2,["*ngIf","noEntriesFound; else defaultNoEntriesFound"])}function gie(i,a){1&i&&Y(0),2&i&&Sn(X(2).noEntriesFoundLabel)}function vie(i,a){if(1&i&&(I(0,"div",15),J(1,mie,1,0,"ng-content",12),J(2,gie,1,1,"ng-template",null,16,Zr),O()),2&i){const e=on(3),o=X();N(1),z("ngIf",o.noEntriesFound)("ngIfElse",e)}}const _ie=[[["",8,"mat-select-search-custom-header-content"]],[["","ngxMatSelectSearchClear",""]],[["","ngxMatSelectNoEntriesFound",""]]],yie=function(i,a){return{"mat-select-search-inner-multiple":i,"mat-select-search-inner-toggle-all":a}},bie=[".mat-select-search-custom-header-content","[ngxMatSelectSearchClear]","[ngxMatSelectNoEntriesFound]"];let wie=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","ngxMatSelectSearchClear",""]]}),i})();const xie=["ariaLabel","clearSearchInput","closeIcon","closeSvgIcon","disableInitialFocus","disableScrollToActiveOnOptionsChanged","enableClearOnEscapePressed","hideClearSearchButton","noEntriesFoundLabel","placeholderLabel","preventHomeEndKeyPropagation","searching"],Cie=new be("mat-selectsearch-default-options");let Sie=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","ngxMatSelectNoEntriesFound",""]]}),i})(),Die=(()=>{class i{constructor(e,o,d,h=null,_=null,w){this.matSelect=e,this.changeDetectorRef=o,this._viewportRuler=d,this.matOption=h,this.matFormField=_,this.placeholderLabel="Suche",this.type="text",this.closeIcon="close",this.noEntriesFoundLabel="Keine Optionen gefunden",this.clearSearchInput=!0,this.searching=!1,this.disableInitialFocus=!1,this.enableClearOnEscapePressed=!1,this.preventHomeEndKeyPropagation=!1,this.disableScrollToActiveOnOptionsChanged=!1,this.ariaLabel="dropdown search",this.showToggleAllCheckbox=!1,this.toggleAllCheckboxChecked=!1,this.toggleAllCheckboxIndeterminate=!1,this.toggleAllCheckboxTooltipMessage="",this.toggleAllCheckboxTooltipPosition="below",this.hideClearSearchButton=!1,this.alwaysRestoreSelectedOptionsMulti=!1,this.toggleAll=new we,this.onTouched=D=>{},this._options$=new Oi(null),this.optionsList$=this._options$.pipe(nr(D=>D?D.changes.pipe(vt(k=>k.toArray()),wi(D.toArray())):Ze(null))),this.optionsLength$=this.optionsList$.pipe(vt(D=>D?D.length:0)),this._formControl=new CE(""),this._showNoEntriesFound$=Za([this._formControl.valueChanges,this.optionsLength$]).pipe(vt(([D,k])=>this.noEntriesFoundLabel&&D&&k===this.getOptionsLengthOffset())),this._onDestroy=new He,this.applyDefaultOptions(w)}get value(){return this._formControl.value}set _options(e){this._options$.next(e)}get _options(){return this._options$.getValue()}applyDefaultOptions(e){if(e)for(const o of xie)e.hasOwnProperty(o)&&(this[o]=e[o])}ngOnInit(){this.matOption?(this.matOption.disabled=!0,this.matOption._getHostElement().classList.add("contains-mat-select-search"),this.matOption._getHostElement().setAttribute("aria-hidden","true")):console.error(" must be placed inside a element"),this.matSelect.openedChange.pipe(ez(1),Et(this._onDestroy)).subscribe(e=>{e?(this.updateInputWidth(),this.disableInitialFocus||this._focus()):this.clearSearchInput&&this._reset()}),this.matSelect.openedChange.pipe(Tn(1),nr(e=>{this._options=this.matSelect.options;let o=this._options.toArray()[this.getOptionsLengthOffset()];return this._options.changes.pipe(Li(()=>{setTimeout(()=>{const d=this._options.toArray(),h=d[this.getOptionsLengthOffset()],_=this.matSelect._keyManager;_&&this.matSelect.panelOpen&&((!this.matSelect.compareWith(o,h)||!_.activeItem||!d.find(D=>this.matSelect.compareWith(D,_.activeItem)))&&_.setFirstItemActive(),setTimeout(()=>{this.updateInputWidth()})),o=h})}))})).pipe(Et(this._onDestroy)).subscribe(),this._showNoEntriesFound$.pipe(Et(this._onDestroy)).subscribe(e=>{this.matOption&&(e?this.matOption._getHostElement().classList.add("mat-select-search-no-entries-found"):this.matOption._getHostElement().classList.remove("mat-select-search-no-entries-found"))}),this._viewportRuler.change().pipe(Et(this._onDestroy)).subscribe(()=>{this.matSelect.panelOpen&&this.updateInputWidth()}),this.initMultipleHandling(),this.optionsList$.pipe(Et(this._onDestroy)).subscribe(()=>{this.changeDetectorRef.markForCheck()})}_emitSelectAllBooleanToParent(e){this.toggleAll.emit(e)}ngOnDestroy(){this._onDestroy.next(),this._onDestroy.complete()}_isToggleAllCheckboxVisible(){return this.matSelect.multiple&&this.showToggleAllCheckbox}_handleKeydown(e){(e.key&&1===e.key.length||e.keyCode>=65&&e.keyCode<=90||e.keyCode>=48&&e.keyCode<=57||32===e.keyCode||this.preventHomeEndKeyPropagation&&(36===e.keyCode||35===e.keyCode))&&e.stopPropagation(),this.matSelect.multiple&&e.key&&13===e.keyCode&&setTimeout(()=>this._focus()),!0===this.enableClearOnEscapePressed&&27===e.keyCode&&this.value&&(this._reset(!0),e.stopPropagation())}_handleKeyup(e){if(38===e.keyCode||40===e.keyCode){const o=this.matSelect._getAriaActiveDescendant(),d=this._options.toArray().findIndex(h=>h.id===o);-1!==d&&(this.unselectActiveDescendant(),this.activeDescendant=this._options.toArray()[d]._getHostElement(),this.activeDescendant.setAttribute("aria-selected","true"),this.searchSelectInput.nativeElement.setAttribute("aria-activedescendant",o))}}writeValue(e){this._lastExternalInputValue=e,this._formControl.setValue(e),this.changeDetectorRef.markForCheck()}onBlur(){this.unselectActiveDescendant(),this.onTouched()}registerOnChange(e){this._formControl.valueChanges.pipe(Kn(o=>o!==this._lastExternalInputValue),Li(()=>this._lastExternalInputValue=void 0),Et(this._onDestroy)).subscribe(e)}registerOnTouched(e){this.onTouched=e}_focus(){if(!this.searchSelectInput||!this.matSelect.panel)return;const e=this.matSelect.panel.nativeElement,o=e.scrollTop;this.searchSelectInput.nativeElement.focus(),e.scrollTop=o}_reset(e){this._formControl.setValue(""),e&&this._focus()}initMultipleHandling(){this.matSelect.ngControl?(this.previousSelectedValues=this.matSelect.ngControl.value,this.matSelect.ngControl.valueChanges.pipe(Et(this._onDestroy)).subscribe(e=>{let o=!1;if(this.matSelect.multiple&&(this.alwaysRestoreSelectedOptionsMulti||this._formControl.value&&this._formControl.value.length)&&this.previousSelectedValues&&Array.isArray(this.previousSelectedValues)){(!e||!Array.isArray(e))&&(e=[]);const d=this.matSelect.options.map(h=>h.value);this.previousSelectedValues.forEach(h=>{!e.some(_=>this.matSelect.compareWith(_,h))&&!d.some(_=>this.matSelect.compareWith(_,h))&&(e.push(h),o=!0)})}this.previousSelectedValues=e,o&&this.matSelect._onChange(e)})):this.matSelect.multiple&&console.error("the mat-select containing ngx-mat-select-search must have a ngModel or formControl directive when multiple=true")}updateInputWidth(){if(!this.innerSelectSearch||!this.innerSelectSearch.nativeElement)return;let o,e=this.innerSelectSearch.nativeElement;for(;e=e.parentElement;)if(e.classList.contains("mat-select-panel")){o=e;break}o&&(this.innerSelectSearch.nativeElement.style.width=o.clientWidth+"px")}getOptionsLengthOffset(){return this.matOption?1:0}unselectActiveDescendant(){var e;null===(e=this.activeDescendant)||void 0===e||e.removeAttribute("aria-selected"),this.searchSelectInput.nativeElement.removeAttribute("aria-activedescendant")}}return i.\u0275fac=function(e){return new(e||i)(F(ma),F(Jt),F(ac),F($i,8),F(ei,8),F(Cie,8))},i.\u0275cmp=_e({type:i,selectors:[["ngx-mat-select-search"]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,wie,5),Qt(d,Sie,5)),2&e){let h;Pe(h=Ae())&&(o.clearIcon=h.first),Pe(h=Ae())&&(o.noEntriesFound=h.first)}},viewQuery:function(e,o){if(1&e&&(ct(lie,7,Be),ct(cie,7,Be)),2&e){let d;Pe(d=Ae())&&(o.searchSelectInput=d.first),Pe(d=Ae())&&(o.innerSelectSearch=d.first)}},inputs:{placeholderLabel:"placeholderLabel",type:"type",closeIcon:"closeIcon",closeSvgIcon:"closeSvgIcon",noEntriesFoundLabel:"noEntriesFoundLabel",clearSearchInput:"clearSearchInput",searching:"searching",disableInitialFocus:"disableInitialFocus",enableClearOnEscapePressed:"enableClearOnEscapePressed",preventHomeEndKeyPropagation:"preventHomeEndKeyPropagation",disableScrollToActiveOnOptionsChanged:"disableScrollToActiveOnOptionsChanged",ariaLabel:"ariaLabel",showToggleAllCheckbox:"showToggleAllCheckbox",toggleAllCheckboxChecked:"toggleAllCheckboxChecked",toggleAllCheckboxIndeterminate:"toggleAllCheckboxIndeterminate",toggleAllCheckboxTooltipMessage:"toggleAllCheckboxTooltipMessage",toggleAllCheckboxTooltipPosition:"toggleAllCheckboxTooltipPosition",hideClearSearchButton:"hideClearSearchButton",alwaysRestoreSelectedOptionsMulti:"alwaysRestoreSelectedOptionsMulti"},outputs:{toggleAll:"toggleAll"},features:[Ue([{provide:pa,useExisting:bn(()=>i),multi:!0}])],ngContentSelectors:bie,decls:12,vars:14,consts:[["matInput","",1,"mat-select-search-input","mat-select-search-hidden"],[1,"mat-select-search-inner","mat-typography","mat-datepicker-content","mat-tab-header",3,"ngClass"],["innerSelectSearch",""],["class","mat-select-search-toggle-all-checkbox","matTooltipClass","ngx-mat-select-search-toggle-all-tooltip",3,"color","checked","indeterminate","matTooltip","matTooltipPosition","change",4,"ngIf"],["autocomplete","off",1,"mat-select-search-input",3,"type","formControl","placeholder","keydown","keyup","blur"],["searchSelectInput",""],["class","mat-select-search-spinner","diameter","16",4,"ngIf"],["mat-icon-button","","aria-label","Clear","class","mat-select-search-clear",3,"click",4,"ngIf"],["class","mat-select-search-no-entries-found",4,"ngIf"],["matTooltipClass","ngx-mat-select-search-toggle-all-tooltip",1,"mat-select-search-toggle-all-checkbox",3,"color","checked","indeterminate","matTooltip","matTooltipPosition","change"],["diameter","16",1,"mat-select-search-spinner"],["mat-icon-button","","aria-label","Clear",1,"mat-select-search-clear",3,"click"],[4,"ngIf","ngIfElse"],["defaultIcon",""],[3,"svgIcon"],[1,"mat-select-search-no-entries-found"],["defaultNoEntriesFound",""]],template:function(e,o){1&e&&(On(_ie),pe(0,"input",0),I(1,"div",1,2),J(3,die,1,5,"mat-checkbox",3),I(4,"input",4,5),Q("keydown",function(h){return o._handleKeydown(h)})("keyup",function(h){return o._handleKeyup(h)})("blur",function(){return o.onBlur()}),O(),J(6,uie,1,0,"mat-spinner",6),J(7,pie,4,2,"button",7),ut(8),pe(9,"mat-divider"),O(),J(10,vie,4,2,"div",8),uu(11,"async")),2&e&&(N(1),z("ngClass",xw(11,yie,o.matSelect.multiple,o._isToggleAllCheckboxVisible())),N(2),z("ngIf",o._isToggleAllCheckboxVisible()),N(1),z("type",o.type)("formControl",o._formControl)("placeholder",o.placeholderLabel),Ve("aria-label",o.ariaLabel),N(2),z("ngIf",o.searching),N(1),z("ngIf",!o.hideClearSearchButton&&o.value&&!o.searching),N(3),z("ngIf",Wc(11,9,o._showNoEntriesFound$)))},dependencies:[Ss,en,sr,Jn,d1,xd,TJ,eie,FJ,bb,BJ,mx],styles:[".mat-select-search-hidden[_ngcontent-%COMP%]{visibility:hidden}.mat-select-search-inner[_ngcontent-%COMP%]{position:absolute;top:0;left:0;width:100%;z-index:100;font-size:inherit;box-shadow:none}.mat-select-search-inner.mat-select-search-inner-multiple.mat-select-search-inner-toggle-all[_ngcontent-%COMP%]{display:flex;align-items:center}.mat-select-search-input[_ngcontent-%COMP%]{box-sizing:border-box;width:100%;border:none;font-family:inherit;font-size:inherit;color:currentColor;outline:none;background:none;padding:0 44px 0 16px;height:calc(3em - 1px);line-height:calc(3em - 1px)}[dir=rtl][_nghost-%COMP%] .mat-select-search-input[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-input[_ngcontent-%COMP%]{padding-right:16px;padding-left:44px}.mat-select-search-inner-toggle-all[_ngcontent-%COMP%] .mat-select-search-input[_ngcontent-%COMP%]{padding-left:5px}.mat-select-search-no-entries-found[_ngcontent-%COMP%]{padding-top:8px}.mat-select-search-clear[_ngcontent-%COMP%]{position:absolute;right:4px;top:0}[dir=rtl][_nghost-%COMP%] .mat-select-search-clear[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-clear[_ngcontent-%COMP%]{right:auto;left:4px}.mat-select-search-spinner[_ngcontent-%COMP%]{position:absolute;right:16px;top:calc(50% - 8px)}[dir=rtl][_nghost-%COMP%] .mat-select-search-spinner[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-spinner[_ngcontent-%COMP%]{right:auto;left:16px} .mat-mdc-option[aria-disabled=true].contains-mat-select-search{position:sticky;top:-8px;z-index:1;opacity:1;margin-top:-8px} .mat-mdc-option[aria-disabled=true].contains-mat-select-search .mat-icon{margin-right:0;margin-left:0} .mat-mdc-option[aria-disabled=true].contains-mat-select-search mat-pseudo-checkbox{display:none}.mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%]{padding-left:5px}[dir=rtl][_nghost-%COMP%] .mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%], [dir=rtl] [_nghost-%COMP%] .mat-select-search-toggle-all-checkbox[_ngcontent-%COMP%]{padding-left:0;padding-right:5px}"],changeDetection:0}),i})(),Mie=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[Ri,D3,ab,kJ,tie,NJ,F1,VJ]}),i})();function Tie(i,a){if(1&i){const e=Ee();I(0,"mat-option")(1,"ngx-mat-select-search",1),Q("ngModelChange",function(d){return le(e),oe(X().changed.emit(d))}),O()()}if(2&i){const e=X();N(1),z("placeholderLabel",e.placeholderLabel)("noEntriesFoundLabel",e.noEntriesFoundLabel)}}let Dd=(()=>{class i{constructor(){this.placeholderLabel=django.gettext("Filter"),this.noEntriesFoundLabel=django.gettext("No entries found"),this.changed=new we,this.notIfLessThan=7}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-cond-select-search"]],inputs:{placeholderLabel:"placeholderLabel",noEntriesFoundLabel:"noEntriesFoundLabel",options:"options",notIfLessThan:"notIfLessThan"},outputs:{changed:"changed"},decls:1,vars:1,consts:[[4,"ngIf"],["ngModel","",3,"placeholderLabel","noEntriesFoundLabel","ngModelChange"]],template:function(e,o){1&e&&J(0,Tie,2,2,"mat-option",0),2&e&&z("ngIf",o.options&&o.options.length>o.notIfLessThan)},dependencies:[en,Jn,zn,$i,Die]}),i})();function Aie(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New user permission for"),O())}function kie(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New group permission for"),O())}function Eie(i,a){if(1&i&&(I(0,"mat-option",11),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Sn(e.text)}}function Iie(i,a){if(1&i&&(I(0,"mat-option",11),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Sn(e.text)}}function Pie(i,a){if(1&i&&(I(0,"mat-option",11),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Sn(e.text)}}let Rie=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.data=h,this.filterUser="",this.authenticators=[],this.entities=[],this.permissions=[{id:"1",text:django.gettext("Read only")},{id:"2",text:django.gettext("Full Access")}],this.authenticator="",this.entity="",this.permission="1",this.done=new dl}static launch(e,o,d){return Qe(function*(){const h=window.innerWidth<800?"80%":"50%";return e.gui.dialog.open(i,{width:h,data:{type:o,item:d},disableClose:!0}).componentInstance.done})()}ngOnInit(){var e=this;return Qe(function*(){const o=yield e.rest.authenticators.summary();for(const d of o)e.authenticators.push({id:d.id,text:d.name})})()}changeAuth(e){var o=this;return Qe(function*(){o.entities.length=0,o.entity="";const d=yield o.rest.authenticators.detail(e,o.data.type+"s").summary();for(const h of d)o.entities.push({id:h.id,text:h.name})})()}save(){this.done.resolve({authenticator:this.authenticator,entity:this.entity,permissision:this.permission}),this.dialogRef.close()}cancel(){this.done.resolve(null),this.dialogRef.close()}filteredEntities(){const e=new Array;return this.entities.forEach(o=>{(!this.filterUser||o.text.toLocaleLowerCase().includes(this.filterUser.toLocaleLowerCase()))&&e.push(o)}),e}getFieldLabel(e){return"user"===e?django.gettext("User"):"group"===e?django.gettext("Group"):"auth"===e?django.gettext("Authenticator"):django.gettext("Permission")}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-new-permission"]],decls:24,vars:13,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],[3,"innerHTML"],["titleGroup",""],[1,"container"],[3,"placeholder","ngModel","valueChange","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[3,"placeholder","ngModel","ngModelChange"],[3,"options","changed"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"]],template:function(e,o){if(1&e&&(I(0,"h4",0),J(1,Aie,2,0,"uds-translate",1),pe(2,"b",2),J(3,kie,2,0,"ng-template",null,3,Zr),O(),I(5,"mat-dialog-content")(6,"div",4)(7,"mat-form-field")(8,"mat-select",5),Q("valueChange",function(h){return o.changeAuth(h)})("ngModelChange",function(h){return o.authenticator=h}),J(9,Eie,2,2,"mat-option",6),O()(),I(10,"mat-form-field")(11,"mat-select",7),Q("ngModelChange",function(h){return o.entity=h}),I(12,"uds-cond-select-search",8),Q("changed",function(h){return o.filterUser=h}),O(),J(13,Iie,2,2,"mat-option",6),O()(),I(14,"mat-form-field")(15,"mat-select",7),Q("ngModelChange",function(h){return o.permission=h}),J(16,Pie,2,2,"mat-option",6),O()()()(),I(17,"mat-dialog-actions")(18,"button",9),Q("click",function(){return o.cancel()}),I(19,"uds-translate"),Y(20,"Cancel"),O()(),I(21,"button",10),Q("click",function(){return o.save()}),I(22,"uds-translate"),Y(23,"Ok"),O()()()),2&e){const d=on(4);N(1),z("ngIf","user"===o.data.type)("ngIfElse",d),N(1),z("innerHTML",o.data.item.name,Rr),N(6),z("placeholder",o.getFieldLabel("auth"))("ngModel",o.authenticator),N(1),z("ngForOf",o.authenticators),N(2),z("placeholder",o.getFieldLabel(o.data.type))("ngModel",o.entity),N(1),z("options",o.entities),N(1),z("ngForOf",o.filteredEntities()),N(2),z("placeholder",o.getFieldLabel("perm"))("ngModel",o.permission),N(1),z("ngForOf",o.permissions)}},dependencies:[Mn,en,Jn,zn,hi,ar,Wi,or,ei,ma,$i,Pn,Dd],styles:[".container[_ngcontent-%COMP%]{display:flex;flex-direction:column}.container[_ngcontent-%COMP%] > *[_ngcontent-%COMP%]{width:100%}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})();function Oie(i,a){if(1&i){const e=Ee();I(0,"div",11)(1,"div",12),Y(2),O(),I(3,"div",13),Y(4),I(5,"a",14),Q("click",function(){const h=le(e).$implicit;return oe(X(2).revokePermission(h))}),I(6,"i",15),Y(7,"close"),O()()()()}if(2&i){const e=a.$implicit;N(2),qh(" ",e.entity_name,"@",e.auth_name," "),N(2),Ie(" ",e.perm_name," \xa0")}}function Lie(i,a){if(1&i){const e=Ee();I(0,"div",7)(1,"div",8)(2,"div",9),Q("click",function(d){const _=le(e).$implicit;return X().newPermission(_),oe(d.preventDefault())}),I(3,"uds-translate"),Y(4,"New permission..."),O()(),J(5,Oie,8,3,"div",10),O()()}if(2&i){const e=a.$implicit;N(5),z("ngForOf",e)}}const Fie=function(i,a){return[i,a]};let Nie=(()=>{class i{constructor(e,o,d){this.api=e,this.dialogRef=o,this.data=d,this.userPermissions=[],this.groupPermissions=[]}static launch(e,o,d){const h=window.innerWidth<800?"90%":"60%";e.gui.dialog.open(i,{width:h,data:{rest:o,item:d},disableClose:!1})}ngOnInit(){var e=this;return Qe(function*(){yield e.reload()})()}reload(){var e=this;return Qe(function*(){const o=yield e.data.rest.getPermissions(e.data.item.id);e.updatePermissions(o)})()}updatePermissions(e){this.userPermissions.length=0,this.groupPermissions.length=0;for(const o of e)"user"===o.type?this.userPermissions.push(o):this.groupPermissions.push(o)}revokePermission(e){var o=this;return Qe(function*(){(yield o.api.gui.questionDialog(django.gettext("Remove"),django.gettext("Confirm revokation of permission")+" "+e.entity_name+"@"+e.auth_name+" "+e.perm_name+""))&&(yield o.data.rest.revokePermission([e.id]),o.reload())})()}newPermission(e){var o=this;return Qe(function*(){const d=e===o.userPermissions?"user":"group",h=yield Rie.launch(o.api,d,o.data.item);h&&(yield o.data.rest.addPermission(o.data.item.id,d+"s",h.entity,h.permissision),o.reload())})()}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-permissions-form"]],decls:17,vars:5,consts:[["mat-dialog-title",""],[3,"innerHTML"],[1,"titles"],[1,"title"],[1,"permissions"],["class","content",4,"ngFor","ngForOf"],["mat-raised-button","","mat-dialog-close","","color","primary"],[1,"content"],[1,"perms"],[1,"perm","new",3,"click"],["class","perm",4,"ngFor","ngForOf"],[1,"perm"],[1,"owner"],[1,"permission"],[3,"click"],[1,"material-icons"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Permissions for"),O(),Y(3,"\xa0"),pe(4,"b",1),O(),I(5,"mat-dialog-content")(6,"div",2)(7,"uds-translate",3),Y(8,"Users"),O(),I(9,"uds-translate",3),Y(10,"Groups"),O()(),I(11,"div",4),J(12,Lie,6,1,"div",5),O()(),I(13,"mat-dialog-actions")(14,"button",6)(15,"uds-translate"),Y(16,"Ok"),O()()()),2&e&&(N(4),z("innerHTML",o.data.item.name,Rr),N(8),z("ngForOf",xw(2,Fie,o.userPermissions,o.groupPermissions)))},dependencies:[Mn,hi,jo,ar,Wi,or,Pn],styles:[".titles[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:space-around;margin-bottom:.4rem}.title[_ngcontent-%COMP%]{font-size:1.4rem}.permissions[_ngcontent-%COMP%]{display:flex;flex-direction:row;justify-content:flex-start}.perms[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:16rem;overflow-y:auto;border-color:#333;border-radius:1px;box-shadow:#00000024 0 1px 4px;margin-bottom:1rem;margin-right:1rem;padding:.5rem}.perm[_ngcontent-%COMP%]{font-family:Courier New,Courier,monospace;font-size:1.2rem;display:flex;justify-content:space-between;white-space:nowrap;flex-wrap:nowrap;margin-right:.4rem}.perm[_ngcontent-%COMP%]:hover:not(.new){background-color:#333;color:#fff;cursor:default}.owner[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:.2rem}.new[_ngcontent-%COMP%]{color:#00f;justify-content:center}.new[_ngcontent-%COMP%]:hover{color:#fff;background-color:#00f;cursor:pointer}.content[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;justify-content:space-between}.material-icons[_ngcontent-%COMP%]{font-size:1em;padding-bottom:1px}.material-icons[_ngcontent-%COMP%]:hover{cursor:pointer;color:red}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})();var TY=En(900);const GJ=i=>(void 0!==i.changingThisBreaksApplicationSecurity&&(i=i.changingThisBreaksApplicationSecurity.replace(/<.*>/g,"")),'"'+(i=""+i).replace('"','""')+'"'),UJ=i=>{let a="";i.columns.forEach(d=>{a+=GJ(d.title)+","}),a=a.slice(0,-1)+"\r\n";const e=i.dataSource.data;for(const d of e){for(const h of i.columns){let _=d[h.name];switch(h.type){case Dr.DATE:_=po("SHORT_DATE_FORMAT",_);break;case Dr.DATETIME:_=po("SHORT_DATETIME_FORMAT",_);break;case Dr.DATETIMESEC:_=po("SHORT_DATE_FORMAT",_," H:i:s");break;case Dr.TIME:_=po("TIME_FORMAT",_)}a+=GJ(_)+","}a=a.slice(0,-1)+"\r\n"}const o=new Blob([a],{type:"text/csv"});setTimeout(()=>{(0,TY.saveAs)(o,i.title+".csv")})};class Vie{constructor(a,e){this._document=e;const o=this._textarea=this._document.createElement("textarea"),d=o.style;d.position="fixed",d.top=d.opacity="0",d.left="-999em",o.setAttribute("aria-hidden","true"),o.value=a,o.readOnly=!0,this._document.body.appendChild(o)}copy(){const a=this._textarea;let e=!1;try{if(a){const o=this._document.activeElement;a.select(),a.setSelectionRange(0,a.value.length),e=this._document.execCommand("copy"),o&&o.focus()}}catch{}return e}destroy(){const a=this._textarea;a&&(a.remove(),this._textarea=void 0)}}let zie=(()=>{class i{constructor(e){this._document=e}copy(e){const o=this.beginCopy(e),d=o.copy();return o.destroy(),d}beginCopy(e){return new Vie(e,this._document)}}return i.\u0275fac=function(e){return new(e||i)(ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),Hie=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();const Gie=["mat-menu-item",""];function Uie(i,a){1&i&&(Wr(),I(0,"svg",3),pe(1,"polygon",4),O())}const jie=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],$ie=["mat-icon, [matMenuItemIcon]","*"];function Wie(i,a){if(1&i){const e=Ee();I(0,"div",0),Q("keydown",function(d){return le(e),oe(X()._handleKeydown(d))})("click",function(){return le(e),oe(X().closed.emit("click"))})("@transformMenu.start",function(d){return le(e),oe(X()._onAnimationStart(d))})("@transformMenu.done",function(d){return le(e),oe(X()._onAnimationDone(d))}),I(1,"div",1),ut(2),O()()}if(2&i){const e=X();z("id",e.panelId)("ngClass",e._classList)("@transformMenu",e._panelAnimationState),Ve("aria-label",e.ariaLabel||null)("aria-labelledby",e.ariaLabelledby||null)("aria-describedby",e.ariaDescribedby||null)}}const Yie=["*"],AY=new be("MAT_MENU_PANEL"),qie=oc(Uo(class{}));let hI=(()=>{class i extends qie{constructor(e,o,d,h,_){var w;super(),this._elementRef=e,this._document=o,this._focusMonitor=d,this._parentMenu=h,this._changeDetectorRef=_,this.role="menuitem",this._hovered=new He,this._focused=new He,this._highlighted=!1,this._triggersSubmenu=!1,null==h||null===(w=h.addItem)||void 0===w||w.call(h,this)}focus(e,o){this._focusMonitor&&e?this._focusMonitor.focusVia(this._getHostElement(),e,o):this._getHostElement().focus(o),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(e){this.disabled&&(e.preventDefault(),e.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){var e;const o=this._elementRef.nativeElement.cloneNode(!0),d=o.querySelectorAll("mat-icon, .material-icons");for(let h=0;h{class i{constructor(e,o,d,h,_,w,D){this._template=e,this._componentFactoryResolver=o,this._appRef=d,this._injector=h,this._viewContainerRef=_,this._document=w,this._changeDetectorRef=D,this._attached=new He}attach(e={}){var o;this._portal||(this._portal=new Ps(this._template,this._viewContainerRef)),this.detach(),this._outlet||(this._outlet=new KN(this._document.createElement("div"),this._componentFactoryResolver,this._appRef,this._injector));const d=this._template.elementRef.nativeElement;d.parentNode.insertBefore(this._outlet.outletElement,d),null===(o=this._changeDetectorRef)||void 0===o||o.markForCheck(),this._portal.attach(this._outlet,e),this._attached.next()}detach(){this._portal.isAttached&&this._portal.detach()}ngOnDestroy(){this._outlet&&this._outlet.dispose()}}return i.\u0275fac=function(e){return new(e||i)(F(ii),F(Ol),F(vu),F(Qi),F(mi),F(ht),F(Jt))},i.\u0275dir=me({type:i}),i})(),Zie=(()=>{class i extends Xie{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["ng-template","matMenuContent",""]],features:[Ue([{provide:jJ,useExisting:i}]),Se]}),i})();const rz={transformMenu:rr("transformMenu",[Fn("void",dt({opacity:0,transform:"scale(0.8)"})),An("void => enter",Ln("120ms cubic-bezier(0, 0, 0.2, 1)",dt({opacity:1,transform:"scale(1)"}))),An("* => void",Ln("100ms 25ms linear",dt({opacity:0})))]),fadeInItems:rr("fadeInItems",[Fn("showing",dt({opacity:1})),An("void => *",[dt({opacity:0}),Ln("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let Kie=0;const $J=new be("mat-menu-default-options",{providedIn:"root",factory:function Qie(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}});let fI=(()=>{class i{get xPosition(){return this._xPosition}set xPosition(e){this._xPosition=e,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(e){this._yPosition=e,this.setPositionClasses()}get overlapTrigger(){return this._overlapTrigger}set overlapTrigger(e){this._overlapTrigger=Ge(e)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(e){this._hasBackdrop=Ge(e)}set panelClass(e){const o=this._previousPanelClass;o&&o.length&&o.split(" ").forEach(d=>{this._classList[d]=!1}),this._previousPanelClass=e,e&&e.length&&(e.split(" ").forEach(d=>{this._classList[d]=!0}),this._elementRef.nativeElement.className="")}get classList(){return this.panelClass}set classList(e){this.panelClass=e}constructor(e,o,d,h){this._elementRef=e,this._ngZone=o,this._defaultOptions=d,this._changeDetectorRef=h,this._xPosition=this._defaultOptions.xPosition,this._yPosition=this._defaultOptions.yPosition,this._directDescendantItems=new _s,this._classList={},this._panelAnimationState="void",this._animationDone=new He,this.overlayPanelClass=this._defaultOptions.overlayPanelClass||"",this.backdropClass=this._defaultOptions.backdropClass,this._overlapTrigger=this._defaultOptions.overlapTrigger,this._hasBackdrop=this._defaultOptions.hasBackdrop,this.closed=new we,this.close=this.closed,this.panelId="mat-menu-panel-"+Kie++}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new Pk(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe(wi(this._directDescendantItems),nr(e=>Wn(...e.map(o=>o._focused)))).subscribe(e=>this._keyManager.updateActiveItem(e)),this._directDescendantItems.changes.subscribe(e=>{var o;const d=this._keyManager;if("enter"===this._panelAnimationState&&null!==(o=d.activeItem)&&void 0!==o&&o._hasFocus()){const h=e.toArray(),_=Math.max(0,Math.min(h.length-1,d.activeItemIndex||0));h[_]&&!h[_].disabled?d.setActiveItem(_):d.setNextItemActive()}})}ngOnDestroy(){var e,o;null===(e=this._keyManager)||void 0===e||e.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),null===(o=this._firstItemFocusSubscription)||void 0===o||o.unsubscribe()}_hovered(){return this._directDescendantItems.changes.pipe(wi(this._directDescendantItems),nr(o=>Wn(...o.map(d=>d._hovered))))}addItem(e){}removeItem(e){}_handleKeydown(e){const o=e.keyCode,d=this._keyManager;switch(o){case 27:pr(e)||(e.preventDefault(),this.closed.emit("keydown"));break;case 37:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case 39:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(38===o||40===o)&&d.setFocusOrigin("keyboard"),void d.onKeydown(e)}e.stopPropagation()}focusFirstItem(e="program"){var o;null===(o=this._firstItemFocusSubscription)||void 0===o||o.unsubscribe(),this._firstItemFocusSubscription=this._ngZone.onStable.pipe(Tn(1)).subscribe(()=>{let d=null;if(this._directDescendantItems.length&&(d=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!d||!d.contains(document.activeElement)){const h=this._keyManager;h.setFocusOrigin(e).setFirstItemActive(),!h.activeItem&&d&&d.focus()}})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(e){const o=Math.min(this._baseElevation+e,24),d=`${this._elevationPrefix}${o}`,h=Object.keys(this._classList).find(_=>_.startsWith(this._elevationPrefix));(!h||h===this._previousElevation)&&(this._previousElevation&&(this._classList[this._previousElevation]=!1),this._classList[d]=!0,this._previousElevation=d)}setPositionClasses(e=this.xPosition,o=this.yPosition){var d;const h=this._classList;h["mat-menu-before"]="before"===e,h["mat-menu-after"]="after"===e,h["mat-menu-above"]="above"===o,h["mat-menu-below"]="below"===o,null===(d=this._changeDetectorRef)||void 0===d||d.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(e){this._animationDone.next(e),this._isAnimating=!1}_onAnimationStart(e){this._isAnimating=!0,"enter"===e.toState&&0===this._keyManager.activeItemIndex&&(e.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe(wi(this._allItems)).subscribe(e=>{this._directDescendantItems.reset(e.filter(o=>o._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(et),F($J),F(Jt))},i.\u0275dir=me({type:i,contentQueries:function(e,o,d){if(1&e&&(Qt(d,jJ,5),Qt(d,hI,5),Qt(d,hI,4)),2&e){let h;Pe(h=Ae())&&(o.lazyContent=h.first),Pe(h=Ae())&&(o._allItems=h),Pe(h=Ae())&&(o.items=h)}},viewQuery:function(e,o){if(1&e&&ct(ii,5),2&e){let d;Pe(d=Ae())&&(o.templateRef=d.first)}},inputs:{backdropClass:"backdropClass",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:"overlapTrigger",hasBackdrop:"hasBackdrop",panelClass:["class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"}}),i})(),WJ=(()=>{class i extends fI{constructor(e,o,d,h){super(e,o,d,h),this._elevationPrefix="mat-elevation-z",this._baseElevation=8}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(et),F($J),F(Jt))},i.\u0275cmp=_e({type:i,selectors:[["mat-menu"]],hostVars:3,hostBindings:function(e,o){2&e&&Ve("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},exportAs:["matMenu"],features:[Ue([{provide:AY,useExisting:i}]),Se],ngContentSelectors:Yie,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mdc-menu-surface","mdc-menu-surface--open","mat-mdc-elevation-specific",3,"id","ngClass","keydown","click"],[1,"mat-mdc-menu-content","mdc-list"]],template:function(e,o){1&e&&(On(),J(0,Wie,3,6,"ng-template"))},dependencies:[Ss],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item.mdc-list-item{align-items:center}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[rz.transformMenu,rz.fadeInItems]},changeDetection:0}),i})();const YJ=new be("mat-menu-scroll-strategy"),ere={provide:YJ,deps:[ea],useFactory:function Jie(i){return()=>i.scrollStrategies.reposition()}},qJ=Ou({passive:!0});let tre=(()=>{class i{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(e){this.menu=e}get menu(){return this._menu}set menu(e){var o;e!==this._menu&&(this._menu=e,this._menuCloseSubscription.unsubscribe(),e&&(this._menuCloseSubscription=e.close.subscribe(d=>{this._destroyMenu(d),("click"===d||"tab"===d)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(d)})),null===(o=this._menuItemInstance)||void 0===o||o._setTriggersSubmenu(this.triggersSubmenu()))}constructor(e,o,d,h,_,w,D,k,P){this._overlay=e,this._element=o,this._viewContainerRef=d,this._menuItemInstance=w,this._dir=D,this._focusMonitor=k,this._ngZone=P,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=xt.EMPTY,this._hoverSubscription=xt.EMPTY,this._menuCloseSubscription=xt.EMPTY,this._changeDetectorRef=St(Jt),this._handleTouchStart=B=>{qy(B)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new we,this.onMenuOpen=this.menuOpened,this.menuClosed=new we,this.onMenuClose=this.menuClosed,this._scrollStrategy=h,this._parentMaterialMenu=_ instanceof fI?_:void 0,o.nativeElement.addEventListener("touchstart",this._handleTouchStart,qJ)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,qJ),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){const e=this.menu;if(this._menuOpen||!e)return;const o=this._createOverlay(e),d=o.getConfig(),h=d.positionStrategy;this._setPosition(e,h),d.hasBackdrop=null==e.hasBackdrop?!this.triggersSubmenu():e.hasBackdrop,o.attach(this._getPortal(e)),e.lazyContent&&e.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(e),e instanceof fI&&(e._startAnimation(),e._directDescendantItems.changes.pipe(Et(e.close)).subscribe(()=>{h.withLockedPosition(!1).reapplyLastPosition(),h.withLockedPosition(!0)}))}closeMenu(){var e;null===(e=this.menu)||void 0===e||e.close.emit()}focus(e,o){this._focusMonitor&&e?this._focusMonitor.focusVia(this._element,e,o):this._element.nativeElement.focus(o)}updatePosition(){var e;null===(e=this._overlayRef)||void 0===e||e.updatePosition()}_destroyMenu(e){if(!this._overlayRef||!this.menuOpen)return;const o=this.menu;var d;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&("keydown"===e||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,o instanceof fI?(o._resetAnimation(),o.lazyContent?o._animationDone.pipe(Kn(h=>"void"===h.toState),Tn(1),Et(o.lazyContent._attached)).subscribe({next:()=>o.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),null==o||null===(d=o.lazyContent)||void 0===d||d.detach())}_initMenu(e){e.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,e.direction=this.dir,this._setMenuElevation(e),e.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(e){if(e.setElevation){let o=0,d=e.parentMenu;for(;d;)o++,d=d.parentMenu;e.setElevation(o)}}_setIsMenuOpen(e){e!==this._menuOpen&&(this._menuOpen=e,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(e),this._changeDetectorRef.markForCheck())}_createOverlay(e){if(!this._overlayRef){const o=this._getOverlayConfig(e);this._subscribeToPositions(e,o.positionStrategy),this._overlayRef=this._overlay.create(o),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(e){return new Hf({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:e.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:e.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(e,o){e.setPositionClasses&&o.positionChanges.subscribe(d=>{const h="start"===d.connectionPair.overlayX?"after":"before",_="top"===d.connectionPair.overlayY?"below":"above";this._ngZone?this._ngZone.run(()=>e.setPositionClasses(h,_)):e.setPositionClasses(h,_)})}_setPosition(e,o){let[d,h]="before"===e.xPosition?["end","start"]:["start","end"],[_,w]="above"===e.yPosition?["bottom","top"]:["top","bottom"],[D,k]=[_,w],[P,B]=[d,h],W=0;if(this.triggersSubmenu()){if(B=d="before"===e.xPosition?"start":"end",h=P="end"===d?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const Z=this._parentMaterialMenu.items.first;this._parentInnerPadding=Z?Z._getHostElement().offsetTop:0}W="bottom"===_?this._parentInnerPadding:-this._parentInnerPadding}}else e.overlapTrigger||(D="top"===_?"bottom":"top",k="top"===w?"bottom":"top");o.withPositions([{originX:d,originY:D,overlayX:P,overlayY:_,offsetY:W},{originX:h,originY:D,overlayX:B,overlayY:_,offsetY:W},{originX:d,originY:k,overlayX:P,overlayY:w,offsetY:-W},{originX:h,originY:k,overlayX:B,overlayY:w,offsetY:-W}])}_menuClosingActions(){const e=this._overlayRef.backdropClick(),o=this._overlayRef.detachments();return Wn(e,this._parentMaterialMenu?this._parentMaterialMenu.closed:Ze(),this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe(Kn(_=>_!==this._menuItemInstance),Kn(()=>this._menuOpen)):Ze(),o)}_handleMousedown(e){Lk(e)||(this._openedBy=0===e.button?"mouse":void 0,this.triggersSubmenu()&&e.preventDefault())}_handleKeydown(e){const o=e.keyCode;(13===o||32===o)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(39===o&&"ltr"===this.dir||37===o&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(e){this.triggersSubmenu()?(e.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe(Kn(e=>e===this._menuItemInstance&&!e.disabled),ez(0,fC)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof fI&&this.menu._isAnimating?this.menu._animationDone.pipe(Tn(1),ez(0,fC),Et(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(e){return(!this._portal||this._portal.templateRef!==e.templateRef)&&(this._portal=new Ps(e.templateRef,this._viewContainerRef)),this._portal}}return i.\u0275fac=function(e){return new(e||i)(F(ea),F(Be),F(mi),F(YJ),F(AY,8),F(hI,10),F(Ci,8),F(Go),F(et))},i.\u0275dir=me({type:i,hostVars:3,hostBindings:function(e,o){1&e&&Q("click",function(h){return o._handleClick(h)})("mousedown",function(h){return o._handleMousedown(h)})("keydown",function(h){return o._handleKeydown(h)}),2&e&&Ve("aria-haspopup",o.menu?"menu":null)("aria-expanded",o.menuOpen)("aria-controls",o.menuOpen?o.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:["mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:["matMenuTriggerFor","menu"],menuData:["matMenuTriggerData","menuData"],restoreFocus:["matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"}}),i})(),XJ=(()=>{class i extends tre{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],exportAs:["matMenuTrigger"],features:[Se]}),i})(),nre=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[ere],imports:[Ri,lc,nn,pd,ud,nn]}),i})();const ZJ=Ou({passive:!0});let ire=(()=>{class i{constructor(e,o){this._platform=e,this._ngZone=o,this._monitoredElements=new Map}monitor(e){if(!this._platform.isBrowser)return _o;const o=cd(e),d=this._monitoredElements.get(o);if(d)return d.subject;const h=new He,_="cdk-text-field-autofilled",w=D=>{"cdk-text-field-autofill-start"!==D.animationName||o.classList.contains(_)?"cdk-text-field-autofill-end"===D.animationName&&o.classList.contains(_)&&(o.classList.remove(_),this._ngZone.run(()=>h.next({target:D.target,isAutofilled:!1}))):(o.classList.add(_),this._ngZone.run(()=>h.next({target:D.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{o.addEventListener("animationstart",w,ZJ),o.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set(o,{subject:h,unlisten:()=>{o.removeEventListener("animationstart",w,ZJ)}}),h}stopMonitoring(e){const o=cd(e),d=this._monitoredElements.get(o);d&&(d.unlisten(),d.subject.complete(),o.classList.remove("cdk-text-field-autofill-monitored"),o.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete(o))}ngOnDestroy(){this._monitoredElements.forEach((e,o)=>this.stopMonitoring(o))}}return i.\u0275fac=function(e){return new(e||i)(ae(Qn),ae(et))},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})(),rre=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})();const KJ=new be("MAT_INPUT_VALUE_ACCESSOR"),are=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let ore=0;const sre=vd(class{constructor(i,a,e,o){this._defaultErrorStateMatcher=i,this._parentForm=a,this._parentFormGroup=e,this.ngControl=o,this.stateChanges=new He}});let ga=(()=>{class i extends sre{get disabled(){return this._disabled}set disabled(e){this._disabled=Ge(e),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(e){this._id=e||this._uid}get required(){var e,o,d,h;return null!==(e=null!==(o=this._required)&&void 0!==o?o:null===(d=this.ngControl)||void 0===d||null===(h=d.control)||void 0===h?void 0:h.hasValidator(ob.required))&&void 0!==e&&e}set required(e){this._required=Ge(e)}get type(){return this._type}set type(e){this._type=e||"text",this._validateType(),!this._isTextarea&&UN().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get value(){return this._inputValueAccessor.value}set value(e){e!==this.value&&(this._inputValueAccessor.value=e,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(e){this._readonly=Ge(e)}constructor(e,o,d,h,_,w,D,k,P,B){super(w,h,_,d),this._elementRef=e,this._platform=o,this._autofillMonitor=k,this._formField=B,this._uid="mat-input-"+ore++,this.focused=!1,this.stateChanges=new He,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(te=>UN().has(te)),this._iOSKeyupListener=te=>{const ie=te.target;!ie.value&&0===ie.selectionStart&&0===ie.selectionEnd&&(ie.setSelectionRange(1,1),ie.setSelectionRange(0,0))};const W=this._elementRef.nativeElement,Z=W.nodeName.toLowerCase();this._inputValueAccessor=D||W,this._previousNativeValue=this.value,this.id=this.id,o.IOS&&P.runOutsideAngular(()=>{e.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===Z,this._isTextarea="textarea"===Z,this._isInFormField=!!B,this._isNativeSelect&&(this.controlType=W.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(e=>{this.autofilled=e.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(e){this._elementRef.nativeElement.focus(e)}_focusChanged(e){e!==this.focused&&(this.focused=e,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const e=this._elementRef.nativeElement.value;this._previousNativeValue!==e&&(this._previousNativeValue=e,this.stateChanges.next())}_dirtyCheckPlaceholder(){const e=this._getPlaceholder();if(e!==this._previousPlaceholder){const o=this._elementRef.nativeElement;this._previousPlaceholder=e,e?o.setAttribute("placeholder",e):o.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){are.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let e=this._elementRef.nativeElement.validity;return e&&e.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const e=this._elementRef.nativeElement,o=e.options[0];return this.focused||e.multiple||!this.empty||!!(e.selectedIndex>-1&&o&&o.label)}return this.focused||!this.empty}setDescribedByIds(e){e.length?this._elementRef.nativeElement.setAttribute("aria-describedby",e.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const e=this._elementRef.nativeElement;return this._isNativeSelect&&(e.multiple||e.size>1)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Qn),F(ul,10),F(Gu,8),F(Xf,8),F(MC),F(KJ,10),F(ire),F(et),F(Ag,8))},i.\u0275dir=me({type:i,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(e,o){1&e&&Q("focus",function(){return o._focusChanged(!0)})("blur",function(){return o._focusChanged(!1)})("input",function(){return o._onInput()}),2&e&&(la("id",o.id)("disabled",o.disabled)("required",o.required),Ve("name",o.name||null)("readonly",o.readonly&&!o._isNativeSelect||null)("aria-invalid",o.empty&&o.required?null:o.errorState)("aria-required",o.required)("id",o.id),st("mat-input-server",o._isServer)("mat-mdc-form-field-textarea-control",o._isInFormField&&o._isTextarea)("mat-mdc-form-field-input-control",o._isInFormField)("mdc-text-field__input",o._isInFormField)("mat-mdc-native-select-inline",o._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],features:[Ue([{provide:E1,useExisting:i}]),Se,jn]}),i})(),lre=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,P1,P1,rre,nn]}),i})(),cre=(()=>{class i{transform(e,o){let d;return d=void 0===o?(h,_)=>h>_?1:-1:(h,_)=>h[o]>_[o]?1:-1,e.sort(d)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275pipe=kr({name:"sort",type:i,pure:!0}),i})();const dre=["trigger"];function ure(i,a){1&i&&pe(0,"img",36),2&i&&z("src",X().icon,Kt)}function hre(i,a){if(1&i){const e=Ee();I(0,"button",46),Q("click",function(){const h=le(e).$implicit,_=X(5);return oe(_.newAction.emit({param:h,table:_}))}),O()}if(2&i){const e=a.$implicit,o=X(5);z("innerHTML",o.api.safeString(o.api.gui.icon(e.icon)+e.name),Rr)}}function fre(i,a){if(1&i&&(vn(0),I(1,"button",42),Y(2),O(),I(3,"mat-menu",43,44),J(5,hre,1,1,"button",45),uu(6,"sort"),O(),wn()),2&i){const e=a.$implicit,o=on(4);N(1),z("matMenuTriggerFor",o),N(1),Sn(e.key),N(1),z("overlapTrigger",!1),N(2),z("ngForOf",Cw(6,4,e.value,"name"))}}function pre(i,a){if(1&i&&(vn(0),I(1,"mat-menu",37,38),J(3,fre,7,7,"ng-container",39),uu(4,"keyvalue"),O(),I(5,"a",40)(6,"i",17),Y(7,"insert_drive_file"),O(),I(8,"span",41)(9,"uds-translate"),Y(10,"New"),O()(),I(11,"i",17),Y(12,"arrow_drop_down"),O()(),wn()),2&i){const e=on(2),o=X(3);N(1),z("overlapTrigger",!1),N(2),z("ngForOf",Wc(4,3,o.grpTypes)),N(2),z("matMenuTriggerFor",e)}}function mre(i,a){if(1&i){const e=Ee();I(0,"button",46),Q("click",function(){const h=le(e).$implicit,_=X(4);return oe(_.newAction.emit({param:h,table:_}))}),O()}if(2&i){const e=a.$implicit,o=X(4);z("innerHTML",o.api.safeString(o.api.gui.icon(e.icon)+e.name),Rr)}}function gre(i,a){if(1&i&&(vn(0),I(1,"mat-menu",37,38),J(3,mre,1,1,"button",45),uu(4,"sort"),O(),I(5,"a",40)(6,"i",17),Y(7,"insert_drive_file"),O(),I(8,"span",41)(9,"uds-translate"),Y(10,"New"),O()(),I(11,"i",17),Y(12,"arrow_drop_down"),O()(),wn()),2&i){const e=on(2),o=X(3);N(1),z("overlapTrigger",!1),N(2),z("ngForOf",Cw(4,3,o.oTypes,"name")),N(2),z("matMenuTriggerFor",e)}}function vre(i,a){if(1&i&&(vn(0),J(1,pre,13,5,"ng-container",8),J(2,gre,13,6,"ng-container",8),wn()),2&i){const e=X(2);N(1),z("ngIf",e.newGrouped),N(1),z("ngIf",!e.newGrouped)}}function _re(i,a){if(1&i){const e=Ee();vn(0),I(1,"a",47),Q("click",function(){le(e);const d=X(2);return oe(d.newAction.emit({param:void 0,table:d}))}),I(2,"i",17),Y(3,"insert_drive_file"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"New"),O()()(),wn()}}function yre(i,a){if(1&i&&(vn(0),J(1,vre,3,2,"ng-container",8),J(2,_re,7,0,"ng-container",8),wn()),2&i){const e=X();N(1),z("ngIf",void 0!==e.oTypes&&0!==e.oTypes.length),N(1),z("ngIf",void 0!==e.oTypes&&0===e.oTypes.length)}}function bre(i,a){if(1&i){const e=Ee();vn(0),I(1,"a",48),Q("click",function(){le(e);const d=X();return oe(d.emitIfSelection(d.editAction))}),I(2,"i",17),Y(3,"edit"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Edit"),O()()(),wn()}if(2&i){const e=X();N(1),z("disabled",1!==e.selection.selected.length)}}function wre(i,a){if(1&i){const e=Ee();vn(0),I(1,"a",48),Q("click",function(){return le(e),oe(X().permissions())}),I(2,"i",17),Y(3,"perm_identity"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Permissions"),O()()(),wn()}if(2&i){const e=X();N(1),z("disabled",1!==e.selection.selected.length)}}function xre(i,a){if(1&i){const e=Ee();I(0,"a",50),Q("click",function(){const h=le(e).$implicit;return oe(X(2).emitCustom(h))}),O()}if(2&i){const e=a.$implicit;z("disabled",X(2).isCustomDisabled(e))("innerHTML",e.html,Rr)}}function Cre(i,a){if(1&i&&(vn(0),J(1,xre,1,2,"a",49),wn()),2&i){const e=X();N(1),z("ngForOf",e.getcustomButtons())}}function Sre(i,a){if(1&i){const e=Ee();vn(0),I(1,"a",51),Q("click",function(){return le(e),oe(X().export())}),I(2,"i",17),Y(3,"import_export"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Export"),O()()(),wn()}}function Dre(i,a){if(1&i){const e=Ee();vn(0),I(1,"a",52),Q("click",function(){le(e);const d=X();return oe(d.emitIfSelection(d.deleteAction,!0))}),I(2,"i",17),Y(3,"delete_forever"),O(),I(4,"span",41)(5,"uds-translate"),Y(6,"Delete"),O()()(),wn()}if(2&i){const e=X();N(1),z("disabled",e.selection.isEmpty())}}function Mre(i,a){if(1&i){const e=Ee();I(0,"button",53),Q("click",function(){le(e);const d=X();return d.filterText="",oe(d.applyFilter())}),I(1,"i",17),Y(2,"clear"),O()()}}function Tre(i,a){1&i&&pe(0,"mat-header-cell")}function Are(i,a){1&i&&(I(0,"i",59),Y(1,"check_box"),O())}function kre(i,a){1&i&&(I(0,"i",60),Y(1,"check_box_outline_blank"),O())}function Ere(i,a){if(1&i){const e=Ee();I(0,"mat-cell",56),Q("click",function(d){const _=le(e).$implicit;return oe(X(2).clickRow(_,d))}),J(1,Are,2,0,"i",57),J(2,kre,2,0,"ng-template",null,58,Zr),O()}if(2&i){const e=a.$implicit,o=on(3),d=X(2);N(1),z("ngIf",d.selection.isSelected(e))("ngIfElse",o)}}function Ire(i,a){1&i&&(vn(0,54),J(1,Tre,1,0,"mat-header-cell",22),J(2,Ere,4,2,"mat-cell",55),wn())}function Pre(i,a){1&i&&pe(0,"mat-header-cell")}function Rre(i,a){if(1&i){const e=Ee();I(0,"mat-cell")(1,"div",61),Q("click",function(d){const _=le(e).$implicit,w=X();return w.detailAction.emit({param:_,table:w}),oe(d.stopPropagation())}),I(2,"i",17),Y(3,"subdirectory_arrow_right"),O()()()}}function Ore(i,a){if(1&i&&(I(0,"mat-header-cell",65),Y(1),O()),2&i){const e=X().$implicit;N(1),Sn(e.title)}}function Lre(i,a){if(1&i){const e=Ee();I(0,"mat-cell",66),Q("click",function(d){const _=le(e).$implicit;return oe(X(2).clickRow(_,d))})("contextmenu",function(d){const _=le(e).$implicit,w=X().$implicit;return oe(X().onContextMenu(_,w,d))}),pe(1,"div",67),O()}if(2&i){const e=a.$implicit,o=X().$implicit,d=X();N(1),z("innerHtml",d.getRowColumn(e,o),Rr)}}function Fre(i,a){1&i&&(vn(0,62),J(1,Ore,2,1,"mat-header-cell",63),J(2,Lre,2,1,"mat-cell",64),wn()),2&i&&Hc("matColumnDef",a.$implicit.name)}function Nre(i,a){1&i&&pe(0,"mat-header-row")}function Bre(i,a){if(1&i&&pe(0,"mat-row",68),2&i){const e=a.$implicit;z("ngClass",X().rowClass(e))}}function Vre(i,a){if(1&i&&(I(0,"div",69),Y(1),I(2,"uds-translate"),Y(3,"Selected items"),O()()),2&i){const e=X();N(1),Ie(" ",e.selection.selected.length," ")}}function zre(i,a){if(1&i){const e=Ee();I(0,"button",73),Q("click",function(){return le(e),oe(X(2).copyToClipboard())}),I(1,"i",74),Y(2,"content_copy"),O(),I(3,"uds-translate"),Y(4,"Copy"),O()()}}function Hre(i,a){if(1&i){const e=Ee();I(0,"button",73),Q("click",function(){le(e);const d=X().item,h=X();return oe(h.detailAction.emit({param:d,table:h}))}),I(1,"i",74),Y(2,"subdirectory_arrow_right"),O(),I(3,"uds-translate"),Y(4,"Detail"),O()()}}function Gre(i,a){if(1&i){const e=Ee();I(0,"button",73),Q("click",function(){le(e);const d=X(2);return oe(d.emitIfSelection(d.editAction))}),I(1,"i",74),Y(2,"edit"),O(),I(3,"uds-translate"),Y(4,"Edit"),O()()}}function Ure(i,a){if(1&i){const e=Ee();I(0,"button",73),Q("click",function(){return le(e),oe(X(2).permissions())}),I(1,"i",74),Y(2,"perm_identity"),O(),I(3,"uds-translate"),Y(4,"Permissions"),O()()}}function jre(i,a){if(1&i){const e=Ee();I(0,"button",75),Q("click",function(){const h=le(e).$implicit;return oe(X(2).emitCustom(h))}),O()}if(2&i){const e=a.$implicit;z("disabled",X(2).isCustomDisabled(e))("innerHTML",e.html,Rr)}}function $re(i,a){if(1&i){const e=Ee();I(0,"button",76),Q("click",function(){le(e);const d=X(2);return oe(d.emitIfSelection(d.deleteAction))}),I(1,"i",74),Y(2,"delete_forever"),O(),I(3,"uds-translate"),Y(4,"Delete"),O()()}}function Wre(i,a){if(1&i){const e=Ee();I(0,"button",75),Q("click",function(){const h=le(e).$implicit;return oe(X(3).emitCustom(h))}),O()}if(2&i){const e=a.$implicit;z("disabled",X(3).isCustomDisabled(e))("innerHTML",e.html,Rr)}}function Yre(i,a){if(1&i&&(vn(0),pe(1,"mat-divider"),J(2,Wre,1,2,"button",71),wn()),2&i){const e=X(2);N(2),z("ngForOf",e.getCustomAccelerators())}}function qre(i,a){if(1&i&&(J(0,zre,5,0,"button",70),J(1,Hre,5,0,"button",70),J(2,Gre,5,0,"button",70),J(3,Ure,5,0,"button",70),J(4,jre,1,2,"button",71),J(5,$re,5,0,"button",72),J(6,Yre,3,1,"ng-container",8)),2&i){const e=X();z("ngIf",!0===e.allowCopy),N(1),z("ngIf",e.detailAction.observed),N(1),z("ngIf",e.editAction.observed),N(1),z("ngIf",!0===e.hasPermissions),N(1),z("ngForOf",e.getCustomMenu()),N(1),z("ngIf",e.deleteAction.observed),N(1),z("ngIf",e.hasAccelerators)}}const Xre=function(){return[5,10,25,100,1e3]};let Ni=(()=>{class i{constructor(e,o){this.api=e,this.clipboard=o,this.contextMenu={},this.paginator={},this.sort={},this.rest={},this.tableId="",this.pageSize=10,this.newGrouped=!1,this.allowCopy=!0,this.loaded=new we,this.rowSelected=new we,this.newAction=new we,this.editAction=new we,this.deleteAction=new we,this.customButtonAction=new we,this.detailAction=new we,this.title="",this.subtitle="",this.displayedColumns=[],this.columns=[],this.types=new Map,this.oTypes=[],this.grpTypes=new Map,this.rowStyleInfo=null,this.selection=new Sg(!0,[]),this.lastSel=null,this.dataSource=new CJ([]),this.firstLoad=!0,this.loading=!1,this.lastClickInfo={time:0,x:-1e4,y:-1e4},this.clipValue="",this.contextMenuPosition={x:"0px",y:"0px"},this.filterText="",this.hasCustomButtons=!1,this.hasButtons=!1,this.hasActions=!1,this.hasAccelerators=!1}ngOnInit(){var e=this;return Qe(function*(){e.hasCustomButtons=!(void 0===e.customButtons||0===e.customButtons.length||!e.customButtonAction.observed)&&e.getcustomButtons().length>0,e.hasAccelerators=e.getCustomAccelerators().length>0,e.hasButtons=e.hasCustomButtons||e.detailAction.observed||e.editAction.observed||e.hasPermissions||e.deleteAction.observed,e.hasActions=e.hasButtons||void 0!==e.customButtons&&e.customButtons.length>0,e.tableId=e.tableId||e.rest.id,e.dataSource.paginator=e.paginator,e.dataSource.sort=e.sort,e.dataSource.sortingDataAccessor=(_,w)=>{if(!(w in _))return"";let D=_[w];return"number"==typeof D?D:"string"==typeof D?D.toLocaleLowerCase():(null===D&&(D=7226578800),D.changingThisBreaksApplicationSecurity&&(D=D.changingThisBreaksApplicationSecurity),(""+D).replace(/<(span|\/span)[^>]*>/g,"").toLocaleLowerCase())},e.dataSource.filterPredicate=(_,w)=>{try{e.columns.forEach(D=>{if((""+_[D.name]).replace(/<(span|\/span)[^>]*>/g,"").toLocaleLowerCase().includes(w))throw Error()})}catch{return!0}return!1},e.dataSource.sort.active=e.api.getFromStorage(e.tableId+"sort-column")||"name",e.dataSource.sort.direction=e.api.getFromStorage(e.tableId+"sort-direction")||"asc",e.filterText=e.api.getFromStorage(e.tableId+"filterValue")||"",e.applyFilter(),e.selection=new Sg(!0===e.multiSelect,[]);const o=e.rest.permision();o&Sd.MANAGEMENT||(e.newAction.unsubscribe(),e.editAction.unsubscribe(),e.deleteAction.unsubscribe(),e.customButtonAction.unsubscribe()),o!==Sd.ALL&&(e.hasPermissions=!1),void 0!==e.icon&&(e.icon=e.api.staticURL("admin/img/icons/"+e.icon+".png"));const d=yield e.rest.types(),h=yield e.rest.tableInfo();yield e.initialize(h,d)})()}initialize(e,o){var d=this;return Qe(function*(){d.oTypes=o,d.types=new Map,d.grpTypes=new Map;for(const _ of o)if(d.types.set(_.type,_),void 0!==_.group){d.grpTypes.has(_.group)||d.grpTypes.set(_.group,[]);const w=d.grpTypes.get(_.group);void 0!==w&&w.push(_)}d.rowStyleInfo=void 0!==e["row-style"]&&void 0!==e["row-style"].field?e["row-style"]:null,d.title=e.title,d.subtitle=e.subtitle||"",d.hasButtons&&d.displayedColumns.push("selection-column");const h=[];for(const _ of e.fields)for(const w in _)if(_.hasOwnProperty(w)){const D=_[w];h.push({name:w,title:D.title,type:void 0===D.type?Dr.ALPHANUMERIC:D.type,dict:D.dict}),(void 0===D.visible||D.visible)&&d.displayedColumns.push(w)}d.columns=h,d.detailAction.observed&&d.displayedColumns.push("detail-column"),yield d.overview()})()}overview(){var e=this;return Qe(function*(){if(!e.loading){e.selection.clear(),e.dataSource.data=[],e.loading=!0;try{const o=yield e.rest.overview();if(e.onItem)for(const d of o)e.onItem(d);e.dataSource.data=o,e.loaded.emit({param:e.firstLoad,table:e}),e.firstLoad=!1}finally{e.loading=!1}}})()}getcustomButtons(){return this.customButtons?this.customButtons.filter(e=>e.type!==ri.ONLY_MENU&&e.type!==ri.ACCELERATOR):[]}getCustomMenu(){return this.customButtons?this.customButtons.filter(e=>e.type!==ri.ACCELERATOR):[]}getCustomAccelerators(){return this.customButtons?this.customButtons.filter(e=>e.type===ri.ACCELERATOR):[]}getRowColumn(e,o){let d=e[o.name];switch(o.type){case Dr.IMAGE:return this.api.safeString(this.api.gui.icon(d,"48px"));case Dr.DATE:d=po("SHORT_DATE_FORMAT",d);break;case Dr.DATETIME:d=po("SHORT_DATETIME_FORMAT",d);break;case Dr.TIME:d=po("TIME_FORMAT",d);break;case Dr.DATETIMESEC:d=po("SHORT_DATE_FORMAT",d," H:i:s");break;case Dr.ICON:try{d=this.api.gui.icon(this.types.get(e.type).icon)+d}catch{}return this.api.safeString(d);case Dr.CALLBACK:break;case Dr.DICTIONARY:try{d=o.dict[d]}catch{d=""}}return d}applyFilter(){this.api.putOnStorage(this.tableId+"filterValue",this.filterText),this.dataSource.filter=this.filterText.trim().toLowerCase()}sortChanged(e){this.api.putOnStorage(this.tableId+"sort-column",e.active),this.api.putOnStorage(this.tableId+"sort-direction",e.direction)}copyToClipboard(){this.clipboard.copy(this.clipValue||"")}rowClass(e){const o=[];return this.selection.isSelected(e)&&o.push("selected"),null!==this.rowStyleInfo&&o.push(this.rowStyleInfo.prefix+e[this.rowStyleInfo.field]),o}emitIfSelection(e,o=!1){const d=this.selection.selected.length;d>0&&(!0===o||1===d)&&e.emit({table:this,param:d})}isCustomDisabled(e){switch(e.type){case void 0:case ri.SINGLE_SELECT:return 1!==this.selection.selected.length||!0===e.disabled;case ri.MULTI_SELECT:return this.selection.isEmpty()||!0===e.disabled;default:return!1}}emitCustom(e){!this.selection.selected.length&&e.type!==ri.ALWAYS||(e.type===ri.ACCELERATOR?this.api.navigation.goto(e.id,this.selection.selected[0],e.acceleratorProperties||[]):this.customButtonAction.emit({param:e,table:this}))}clickRow(e,o){const d=(new Date).getTime();if((this.detailAction.observed||this.editAction.observed)&&Math.abs(this.lastClickInfo.x-o.x)<16&&Math.abs(this.lastClickInfo.y-o.y)<16&&d-this.lastClickInfo.time<250)return this.selection.clear(),this.selection.select(e),void(this.detailAction.observed?this.detailAction.emit({param:e,table:this}):this.emitIfSelection(this.editAction,!1));this.lastClickInfo={time:d,x:o.x,y:o.y},this.doSelect(e,o)}doSelect(e,o){if(o.ctrlKey)this.lastSel=e,this.selection.toggle(e);else if(o.shiftKey){if(this.selection.isEmpty())this.selection.toggle(e);else if(this.selection.clear(),this.lastSel!==e){let d=!1;const h=this.dataSource.sort?this.dataSource.sortData(this.dataSource.data,this.dataSource.sort):this.dataSource.data;for(const _ of h){if((_===e||_===this.lastSel)&&(d=!d,!1===d)){this.selection.select(_);break}d&&this.selection.select(_)}}}else this.lastSel!==e&&this.selection.clear(),this.lastSel=e,this.selection.toggle(e);this.rowSelected.emit({param:null,table:this})}onContextMenu(e,o,d){d.preventDefault();let h=e[o.name];h.changingThisBreaksApplicationSecurity&&(h=h.changingThisBreaksApplicationSecurity.replace(/.*<\/span>/,"")),this.clipValue=""+h,this.hasActions&&(this.selection.clear(),this.selection.select(e),this.contextMenuPosition.x=d.clientX+"px",this.contextMenuPosition.y=d.clientY+"px",this.contextMenu.menuData={item:e},this.contextMenu.openMenu())}selectElement(e,o){(this.dataSource.sort?this.dataSource.sortData(this.dataSource.data,this.dataSource.sort):this.dataSource.data).forEach((h,_)=>{if(h[e]===o){const w=Math.floor(_/this.paginator.pageSize);this.selection.select(h),this.paginator.pageIndex=w,this.paginator.page.next({pageIndex:w,pageSize:this.paginator.pageSize,length:this.paginator.length})}})}export(){UJ(this)}permissions(){this.selection.selected.length&&Nie.launch(this.api,this.rest,this.selection.selected[0])}keyDown(e){switch(e.keyCode){case 36:this.paginator.firstPage(),e.preventDefault();break;case 35:this.paginator.lastPage(),e.preventDefault();break;case 39:this.paginator.nextPage(),e.preventDefault();break;case 37:this.paginator.previousPage(),e.preventDefault()}}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(zie))},i.\u0275cmp=_e({type:i,selectors:[["uds-table"]],viewQuery:function(e,o){if(1&e&&(ct(dre,7),ct(xb,7),ct(c,7)),2&e){let d;Pe(d=Ae())&&(o.contextMenu=d.first),Pe(d=Ae())&&(o.paginator=d.first),Pe(d=Ae())&&(o.sort=d.first)}},inputs:{rest:"rest",onItem:"onItem",icon:"icon",multiSelect:"multiSelect",allowExport:"allowExport",hasPermissions:"hasPermissions",customButtons:"customButtons",tableId:"tableId",pageSize:"pageSize",newGrouped:"newGrouped",allowCopy:"allowCopy"},outputs:{loaded:"loaded",rowSelected:"rowSelected",newAction:"newAction",editAction:"editAction",deleteAction:"deleteAction",customButtonAction:"customButtonAction",detailAction:"detailAction"},decls:50,vars:28,consts:[[1,"card"],[1,"card-header"],[1,"card-title"],[3,"src",4,"ngIf"],[1,"card-subtitle"],[1,"card-content"],[1,"header"],[1,"buttons"],[4,"ngIf"],[1,"navigation"],[1,"filter"],["matInput","",3,"ngModel","keyup","ngModelChange"],["matSuffix","","mat-icon-button","","aria-label","Clear",3,"click",4,"ngIf"],[1,"paginator"],[3,"pageSize","hidePageSize","pageSizeOptions","showFirstLastButtons"],[1,"reload"],["mat-icon-button","",3,"click"],[1,"material-icons"],["tabindex","0",1,"table",3,"keydown"],["matSort","",3,"dataSource","matSortChange"],["matColumnDef","selection-column",4,"ngIf"],["matColumnDef","detail-column"],[4,"matHeaderCellDef"],[4,"matCellDef"],[3,"matColumnDef",4,"ngFor","ngForOf"],[4,"matHeaderRowDef"],[3,"ngClass",4,"matRowDef","matRowDefColumns"],[3,"hidden"],[1,"loading"],["mode","indeterminate"],[1,"footer"],["class","selection",4,"ngIf"],[2,"position","fixed",3,"matMenuTriggerFor"],["trigger","matMenuTrigger"],["contextMenu","matMenu"],["matMenuContent",""],[3,"src"],[1,"wide-menu",3,"overlapTrigger"],["newMenu","matMenu"],[4,"ngFor","ngForOf"],["mat-raised-button","","color","primary",3,"matMenuTriggerFor"],[1,"button-text"],["mat-menu-item","",3,"matMenuTriggerFor"],[3,"overlapTrigger"],["sub_menu","matMenu"],["mat-menu-item","",3,"innerHTML","click",4,"ngFor","ngForOf"],["mat-menu-item","",3,"innerHTML","click"],["mat-raised-button","","color","primary",3,"click"],["mat-raised-button","",3,"disabled","click"],["mat-raised-button","",3,"disabled","innerHTML","click",4,"ngFor","ngForOf"],["mat-raised-button","",3,"disabled","innerHTML","click"],["mat-raised-button","",3,"click"],["mat-raised-button","","color","warn",3,"disabled","click"],["matSuffix","","mat-icon-button","","aria-label","Clear",3,"click"],["matColumnDef","selection-column"],[3,"click",4,"matCellDef"],[3,"click"],["class","material-icons check checked",4,"ngIf","ngIfElse"],["uncheck",""],[1,"material-icons","check","checked"],[1,"material-icons","check"],[1,"detail-launcher",3,"click"],[3,"matColumnDef"],["mat-sort-header","",4,"matHeaderCellDef"],[3,"click","contextmenu",4,"matCellDef"],["mat-sort-header",""],[3,"click","contextmenu"],[3,"innerHtml"],[3,"ngClass"],[1,"selection"],["mat-menu-item","",3,"click",4,"ngIf"],["mat-menu-item","",3,"disabled","innerHTML","click",4,"ngFor","ngForOf"],["mat-menu-item","","class","menu-warn",3,"click",4,"ngIf"],["mat-menu-item","",3,"click"],[1,"material-icons","spaced"],["mat-menu-item","",3,"disabled","innerHTML","click"],["mat-menu-item","",1,"menu-warn",3,"click"]],template:function(e,o){if(1&e&&(I(0,"div",0)(1,"div",1)(2,"div",2),J(3,ure,1,1,"img",3),Y(4),O(),I(5,"div",4),Y(6),O()(),I(7,"div",5)(8,"div",6)(9,"div",7),J(10,yre,3,2,"ng-container",8),J(11,bre,7,1,"ng-container",8),J(12,wre,7,1,"ng-container",8),J(13,Cre,2,1,"ng-container",8),J(14,Sre,7,0,"ng-container",8),J(15,Dre,7,1,"ng-container",8),O(),I(16,"div",9)(17,"div",10)(18,"mat-form-field")(19,"mat-label")(20,"uds-translate"),Y(21,"Filter"),O()(),I(22,"input",11),Q("keyup",function(){return o.applyFilter()})("ngModelChange",function(h){return o.filterText=h}),O(),J(23,Mre,3,0,"button",12),O()(),I(24,"div",13),pe(25,"mat-paginator",14),O(),I(26,"div",15)(27,"a",16),Q("click",function(){return o.overview()}),I(28,"i",17),Y(29,"autorenew"),O()()()()(),I(30,"div",18),Q("keydown",function(h){return o.keyDown(h)}),I(31,"mat-table",19),Q("matSortChange",function(h){return o.sortChanged(h)}),J(32,Ire,3,0,"ng-container",20),vn(33,21),J(34,Pre,1,0,"mat-header-cell",22),J(35,Rre,4,0,"mat-cell",23),wn(),J(36,Fre,3,1,"ng-container",24),J(37,Nre,1,0,"mat-header-row",25),J(38,Bre,1,1,"mat-row",26),O(),I(39,"div",27)(40,"div",28),pe(41,"mat-progress-spinner",29),O()()(),I(42,"div",30),Y(43," \xa0 "),J(44,Vre,4,1,"div",31),O()(),pe(45,"div",32,33),I(47,"mat-menu",null,34),J(49,qre,7,7,"ng-template",35),O()()),2&e){const d=on(48);N(3),z("ngIf",void 0!==o.icon),N(1),Ie(" ",o.title," "),N(2),Ie(" ",o.subtitle," "),N(4),z("ngIf",o.newAction.observed),N(1),z("ngIf",o.editAction.observed),N(1),z("ngIf",!0===o.hasPermissions),N(1),z("ngIf",o.hasCustomButtons),N(1),z("ngIf",!0===o.allowExport),N(1),z("ngIf",o.deleteAction.observed),N(7),z("ngModel",o.filterText),N(1),z("ngIf",o.filterText),N(2),z("pageSize",o.pageSize)("hidePageSize",!0)("pageSizeOptions",ww(27,Xre))("showFirstLastButtons",!0),N(6),z("dataSource",o.dataSource),N(1),z("ngIf",o.hasButtons),N(4),z("ngForOf",o.columns),N(1),z("matHeaderRowDef",o.displayedColumns),N(1),z("matRowDefColumns",o.displayedColumns),N(1),z("hidden",!o.loading),N(5),z("ngIf",o.hasButtons&&o.selection.selected.length>0),N(1),Ta("left",o.contextMenuPosition.x)("top",o.contextMenuPosition.y),z("matMenuTriggerFor",d)}},dependencies:[Ss,Mn,en,sr,Jn,zn,HC,GC,xd,WJ,hI,Zie,XJ,ei,fi,Tg,ga,xY,Z5,CY,K5,X5,SY,Q5,J5,DY,MY,xb,c,b,FJ,BJ,Pn,B_,cre],styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}.header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;flex-wrap:wrap;margin:1rem 1rem 0rem}.buttons[_ngcontent-%COMP%]{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}.buttons[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{margin-right:1rem;margin-bottom:1rem}.buttons[_ngcontent-%COMP%] .material-icons[_ngcontent-%COMP%]{margin-right:.1rem}.buttons[_ngcontent-%COMP%] .mat-mdc-raised-button[_ngcontent-%COMP%]:hover:not([disabled]){background-color:#fafafa;color:#000}button.mat-mdc-menu-item[_ngcontent-%COMP%]{height:2rem;line-height:2rem}.navigation[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;flex-wrap:wrap}.reload[_ngcontent-%COMP%]{margin-top:.5rem}.table[_ngcontent-%COMP%]{margin:0rem 1rem;-webkit-user-select:none;-o-user-select:none;user-select:none}.footer[_ngcontent-%COMP%]{margin:1em;display:flex;justify-content:flex-end}mat-cell[_ngcontent-%COMP%]:first-of-type, mat-header-cell[_ngcontent-%COMP%]:first-of-type{padding-left:.5rem}mat-row[_ngcontent-%COMP%]:hover{background-color:#a0b0d0;cursor:pointer}.check[_ngcontent-%COMP%]{margin-left:.5rem;font-size:1.5rem;width:1.5rem}mat-table[_ngcontent-%COMP%]{width:100%;font-weight:300}.mat-column-detail-column[_ngcontent-%COMP%]{max-width:1.5rem;justify-content:center;color:#000!important;padding-right:.5rem}.detail-launcher[_ngcontent-%COMP%]{display:none}.mat-mdc-row[_ngcontent-%COMP%]:hover .detail-launcher[_ngcontent-%COMP%]{display:block}.mat-column-selection-column[_ngcontent-%COMP%]{max-width:2rem;justify-content:center;color:#000!important}.menu-warn[_ngcontent-%COMP%]{color:red}.menu-link[_ngcontent-%COMP%]{color:#00f}.loading[_ngcontent-%COMP%]{margin-top:2rem;margin-bottom:2rem;display:flex;justify-content:center} .mat-mdc-menu-panel{min-height:3rem} .mat-mdc-menu-panel.mat-mdc-menu-panel{max-width:32rem} .mat-mdc-paginator-range-label{min-width:6em}.mat-mdc-menu-item[_ngcontent-%COMP%]{min-height:2.5rem} .dark-theme .mat-mdc-paginator-container{background-color:#303030} .dark-theme .buttons .mat-mdc-raised-button:hover:not([disabled]){background-color:#303030;color:#fff} .dark-theme .mat-column-detail-column{color:#fff!important} .dark-theme .mat-column-selection-column{color:#fff!important} .dark-theme .menu-warn{color:red} .dark-theme .menu-link{color:#00f}.filter[_ngcontent-%COMP%]{display:flex;align-items:center;width:16rem}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-infix{min-height:3rem;padding-top:1rem!important;padding-bottom:1rem!important}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{height:0px}']}),i})();const QJ='pause'+django.gettext("Maintenance")+"",Zre='pause'+django.gettext("Exit maintenance mode")+"",Kre='pause'+django.gettext("Enter maintenance mode")+"";let JJ=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.cButtons=[{id:"maintenance",html:QJ,type:ri.SINGLE_SELECT}]}get customButtons(){return this.api.user.isAdmin?this.cButtons:[]}ngOnInit(){}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New provider"),!0)}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit provider"),!0)}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete provider"))}onMaintenance(e){const o=e.table.selection.selected[0],d=o.maintenance_mode?django.gettext("Exit maintenance mode?"):django.gettext("Enter maintenance mode?");this.api.gui.questionDialog(django.gettext("Maintenance mode for")+" "+o.name,d).then(h=>{h&&this.rest.providers.maintenance(o.id).then(()=>{e.table.overview()})})}onRowSelect(e){const o=e.table;this.customButtons[0].html=o.selection.selected.length>1||0===o.selection.selected.length?QJ:o.selection.selected[0].maintenance_mode?Zre:Kre}onDetail(e){this.api.navigation.gotoService(e.param.id)}processElement(e){e.maintenance_state=e.maintenance_mode?django.gettext("In Maintenance"):django.gettext("Active")}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("provider"))}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-services"]],decls:1,vars:7,consts:[["tableId","service-providers","icon","providers",3,"rest","onItem","multiSelect","allowExport","hasPermissions","customButtons","pageSize","customButtonAction","newAction","editAction","deleteAction","rowSelected","detailAction","loaded"]],template:function(e,o){1&e&&(I(0,"uds-table",0),Q("customButtonAction",function(h){return o.onMaintenance(h)})("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("rowSelected",function(h){return o.onRowSelect(h)})("detailAction",function(h){return o.onDetail(h)})("loaded",function(h){return o.onLoad(h)}),O()),2&e&&z("rest",o.rest.providers)("onItem",o.processElement)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("customButtons",o.customButtons)("pageSize",o.api.config.admin.page_size)},dependencies:[Ni],styles:[".row-maintenance-true>mat-cell{color:orange!important} .mat-column-services_count, .mat-column-user_services_count, .mat-column-maintenance_state{max-width:7rem;justify-content:center}"]}),i})();class Sb{constructor(a,e,o,d){this.title=a,this.data=e,this.columns=o,this.id=d,this.columnsDefinition=Array.from(o,h=>{const _={};return _[h.field]={visible:!0,title:h.title,type:void 0===h.type?Dr.ALPHANUMERIC:h.type},_})}get(a){return Promise.resolve({})}getLogs(a){return Promise.resolve([])}overview(a){return"function"==typeof this.data?this.data():Promise.resolve(this.data)}summary(a){return this.overview()}put(a,e){return Promise.resolve({})}create(a){return Promise.resolve({})}save(a,e){return Promise.resolve({})}test(a,e){return Promise.resolve({})}delete(a){return Promise.resolve({})}permision(){return Sd.ALL}getPermissions(a){return Promise.resolve([])}addPermission(a,e,o,d){return Promise.resolve({})}revokePermission(a){return Promise.resolve({})}types(){return Promise.resolve({})}gui(a){return Promise.resolve({})}callback(a,e){return Promise.resolve([])}tableInfo(){return Promise.resolve({fields:this.columnsDefinition,title:this.title})}detail(a,e){return null}invoke(a,e){return Promise.resolve({})}}function Qre(i,a){if(1&i){const e=Ee();I(0,"button",24),Q("click",function(){le(e);const d=X();return d.filterText="",oe(d.applyFilter())}),I(1,"i",8),Y(2,"close"),O()()}}function Jre(i,a){if(1&i&&(I(0,"mat-header-cell",28),Y(1),O()),2&i){const e=X().$implicit;N(1),Sn(e)}}function eae(i,a){if(1&i&&(I(0,"mat-cell"),pe(1,"div",29),O()),2&i){const e=a.$implicit,o=X().$implicit,d=X();N(1),z("innerHtml",d.getRowColumn(e,o),Rr)}}function tae(i,a){1&i&&(vn(0,25),J(1,Jre,2,1,"mat-header-cell",26),J(2,eae,2,1,"mat-cell",27),wn()),2&i&&z("matColumnDef",a.$implicit)}function nae(i,a){1&i&&pe(0,"mat-header-row")}function iae(i,a){if(1&i&&pe(0,"mat-row",30),2&i){const e=a.$implicit;z("ngClass",X().rowClass(e))}}const rae=function(){return[5,10,25,100,1e3]};let N1=(()=>{class i{constructor(e){this.api=e,this.rest={},this.itemId="",this.tableId="",this.pageSize=10,this.paginator={},this.sort={},this.filterText="",this.title="Logs",this.displayedColumns=["date","level","source","message"],this.columns=[],this.dataSource=new CJ([]),this.selection=new Sg}ngOnInit(){this.tableId=this.tableId||this.rest.id,this.dataSource.paginator=this.paginator,this.dataSource.sort=this.sort,this.dataSource.sort.active=this.api.getFromStorage("logs-sort-column")||"date",this.dataSource.sort.direction=this.api.getFromStorage("logs-sort-direction")||"desc";for(const e of this.displayedColumns)this.columns.push({name:e,title:e,type:"date"===e?Dr.DATETIMESEC:Dr.ALPHANUMERIC});this.filterText=this.api.getFromStorage(this.tableId+"filterValue")||"",this.applyFilter(),this.overview()}overview(){var e=this;return Qe(function*(){e.dataSource.data=yield e.rest.getLogs(e.itemId)})()}selectElement(e,o){}getRowColumn(e,o){let d=e[o];return"date"===o?d=po("SHORT_DATE_FORMAT",d," H:i:s"):"level"===o&&(d=(i=>({1e4:"OTHER",2e4:"DEBUG",3e4:"INFO",4e4:"WARN",5e4:"ERROR",6e4:"FATAL"}[i]||"OTHER"))(d)),d}rowClass(e){return["level-"+e.level]}applyFilter(){this.api.putOnStorage(this.tableId+"filterValue",this.filterText),this.dataSource.filter=this.filterText.trim().toLowerCase()}sortChanged(e){this.api.putOnStorage("logs-sort-column",e.active),this.api.putOnStorage("logs-sort-direction",e.direction)}export(){UJ(this)}keyDown(e){switch(e.keyCode){case 36:this.paginator.firstPage(),e.preventDefault();break;case 35:this.paginator.lastPage(),e.preventDefault();break;case 39:this.paginator.nextPage(),e.preventDefault();break;case 37:this.paginator.previousPage(),e.preventDefault()}}}return i.\u0275fac=function(e){return new(e||i)(F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-logs-table"]],viewQuery:function(e,o){if(1&e&&(ct(xb,7),ct(c,7)),2&e){let d;Pe(d=Ae())&&(o.paginator=d.first),Pe(d=Ae())&&(o.sort=d.first)}},inputs:{rest:"rest",itemId:"itemId",tableId:"tableId",pageSize:"pageSize"},decls:36,vars:12,consts:[[1,"card"],[1,"card-header"],[1,"card-title"],[3,"src"],[1,"card-content"],[1,"header"],[1,"buttons"],["mat-raised-button","",3,"click"],[1,"material-icons"],[1,"button-text"],[1,"navigation"],[1,"filter"],["matInput","",3,"ngModel","keyup","ngModelChange"],["mat-button","","matSuffix","","mat-icon-button","","aria-label","Clear",3,"click",4,"ngIf"],[1,"paginator"],[3,"pageSize","hidePageSize","pageSizeOptions","showFirstLastButtons"],[1,"reload"],["mat-icon-button","",3,"click"],["tabindex","0",1,"table",3,"keydown"],["matSort","",3,"dataSource","matSortChange"],[3,"matColumnDef",4,"ngFor","ngForOf"],[4,"matHeaderRowDef"],[3,"ngClass",4,"matRowDef","matRowDefColumns"],[1,"footer"],["mat-button","","matSuffix","","mat-icon-button","","aria-label","Clear",3,"click"],[3,"matColumnDef"],["mat-sort-header","",4,"matHeaderCellDef"],[4,"matCellDef"],["mat-sort-header",""],[3,"innerHtml"],[3,"ngClass"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1)(2,"div",2),pe(3,"img",3),Y(4," \xa0"),I(5,"uds-translate"),Y(6,"Logs"),O()()(),I(7,"div",4)(8,"div",5)(9,"div",6)(10,"a",7),Q("click",function(){return o.export()}),I(11,"i",8),Y(12,"import_export"),O(),I(13,"span",9)(14,"uds-translate"),Y(15,"Export"),O()()()(),I(16,"div",10)(17,"div",11)(18,"uds-translate"),Y(19,"Filter"),O(),Y(20,"\xa0 "),I(21,"mat-form-field")(22,"input",12),Q("keyup",function(){return o.applyFilter()})("ngModelChange",function(h){return o.filterText=h}),O(),J(23,Qre,3,0,"button",13),O()(),I(24,"div",14),pe(25,"mat-paginator",15),O(),I(26,"div",16)(27,"a",17),Q("click",function(){return o.overview()}),I(28,"i",8),Y(29,"autorenew"),O()()()()(),I(30,"div",18),Q("keydown",function(h){return o.keyDown(h)}),I(31,"mat-table",19),Q("matSortChange",function(h){return o.sortChanged(h)}),J(32,tae,3,1,"ng-container",20),J(33,nae,1,0,"mat-header-row",21),J(34,iae,1,1,"mat-row",22),O()(),pe(35,"div",23),O()()),2&e&&(N(3),z("src",o.api.staticURL("admin/img/icons/logs.png"),Kt),N(19),z("ngModel",o.filterText),N(1),z("ngIf",o.filterText),N(2),z("pageSize",o.pageSize)("hidePageSize",!0)("pageSizeOptions",ww(11,rae))("showFirstLastButtons",!0),N(6),z("dataSource",o.dataSource),N(1),z("ngForOf",o.displayedColumns),N(1),z("matHeaderRowDef",o.displayedColumns),N(1),z("matRowDefColumns",o.displayedColumns))},dependencies:[Ss,Mn,en,sr,Jn,zn,HC,hi,GC,xd,ei,Tg,ga,xY,Z5,CY,K5,X5,SY,Q5,J5,DY,MY,xb,c,b,Pn],styles:[".header[_ngcontent-%COMP%]{display:flex;justify-content:space-between;flex-wrap:wrap;margin:1rem 1rem 0rem}.navigation[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;flex-wrap:wrap}.reload[_ngcontent-%COMP%]{margin-top:.5rem}.table[_ngcontent-%COMP%]{margin:0rem 1rem;-webkit-user-select:none;-o-user-select:none;user-select:none}.mat-column-date[_ngcontent-%COMP%]{min-width:12rem;max-width:20rem}.mat-column-level[_ngcontent-%COMP%]{max-width:8rem;text-align:center}.mat-column-source[_ngcontent-%COMP%]{max-width:8rem} .level-60000>.mat-mdc-cell{color:#ff1e1e!important} .level-50000>.mat-mdc-cell{color:#ff1e1e!important} .level-40000>.mat-mdc-cell{color:#d65014!important}.filter[_ngcontent-%COMP%]{display:flex;align-items:center;width:16rem}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-infix{min-height:3rem;padding-top:1rem!important;padding-bottom:1rem!important}.filter[_ngcontent-%COMP%] .mat-mdc-form-field-bottom-align{height:0px}"]}),i})();function aae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Services pools"),O())}function oae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Logs"),O())}const sae=[{field:"name",title:django.gettext("Pool")},{field:"state",title:django.gettext("State")},{field:"user_services_count",title:django.gettext("User Services")}];let lae=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.customButtons=[eo.getGotoButton($u,"id")],this.servicePools={},this.logs={},this.services=h.services,this.service=h.service}static launch(e,o,d){const h=window.innerWidth<800?"80%":"60%";e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{service:d,services:o},disableClose:!1})}ngOnInit(){this.servicePools=new Sb(django.gettext("Service pools"),()=>this.services.invoke(this.service.id+"/servicesPools"),sae,this.service.id+"infopsls")}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-information"]],decls:17,vars:8,consts:[["mat-dialog-title",""],["mat-tab-label",""],[3,"rest","customButtons","pageSize"],[1,"content"],[3,"rest","itemId","tableId","pageSize"],["mat-raised-button","","mat-dialog-close","","color","primary"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Information for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"mat-tab-group")(6,"mat-tab"),J(7,aae,2,0,"ng-template",1),pe(8,"uds-table",2),O(),I(9,"mat-tab"),J(10,oae,2,0,"ng-template",1),I(11,"div",3),pe(12,"uds-logs-table",4),O()()()(),I(13,"mat-dialog-actions")(14,"button",5)(15,"uds-translate"),Y(16,"Ok"),O()()()),2&e&&(N(3),Ie(" ",o.service.name,"\n"),N(5),z("rest",o.servicePools)("customButtons",o.customButtons)("pageSize",6),N(4),z("rest",o.services)("itemId",o.service.id)("tableId","serviceInfo-d-log"+o.service.id)("pageSize",5))},dependencies:[hi,jo,ar,Wi,or,qo,mo,Ja,Pn,Ni,N1],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.mat-column-count[_ngcontent-%COMP%], .mat-column-image[_ngcontent-%COMP%], .mat-column-state[_ngcontent-%COMP%]{max-width:7rem;justify-content:center}.navigation[_ngcontent-%COMP%]{margin-top:1rem;display:flex;justify-content:flex-end;flex-wrap:wrap}.reload[_ngcontent-%COMP%]{margin-top:.5rem}"]}),i})();function cae(i,a){if(1&i&&(I(0,"div",3),pe(1,"div",4)(2,"div",5),O()),2&i){const e=a.$implicit;N(1),z("innerHTML",e.gui.label,Rr),N(1),z("innerHTML",e.value,Rr)}}let az=(()=>{class i{constructor(e){this.api=e,this.gui=[],this.displayables=[]}ngOnInit(){this.processFields()}processFields(){if(!this.gui||!this.value)return;const e=this.gui.filter(o=>o.gui.type!==$o.HIDDEN);e.forEach(o=>{const d=this.value[o.name];switch(o.gui.type){case $o.CHECKBOX:o.value=d?django.gettext("Yes"):django.gettext("No");break;case $o.PASSWORD:o.value=django.gettext("(hidden)");break;case $o.CHOICE:{const h=sE.locateChoice(d,o);o.value=h.text;break}case $o.MULTI_CHOICE:o.value=django.gettext("Selected items :")+d.length;break;case $o.IMAGECHOICE:{const h=sE.locateChoice(d,o);h.img&&(o.value=this.api.safeString(this.api.gui.icon(h.img)+" "+h.text));break}default:o.value=d}(""===o.value||null==o.value)&&(o.value="(empty)")}),this.displayables=e}}return i.\u0275fac=function(e){return new(e||i)(F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-information"]],inputs:{value:"value",gui:"gui"},decls:4,vars:1,consts:[[1,"card"],[1,"card-content"],["class","item",4,"ngFor","ngForOf"],[1,"item"],[1,"label",3,"innerHTML"],[1,"value",3,"innerHTML"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1),J(2,cae,3,2,"div",2),O(),pe(3,"div"),O()),2&e&&(N(2),z("ngForOf",o.displayables))},dependencies:[Mn],styles:[".card-content[_ngcontent-%COMP%]{padding:1rem;display:flex;flex-direction:column}.item[_ngcontent-%COMP%]{padding-bottom:.5rem;display:flex}.label[_ngcontent-%COMP%]{font-weight:700;width:32rem;overflow-x:hidden;text-overflow:ellipsis;text-align:end;margin-right:1rem;align-self:center}"]}),i})();function dae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function uae(i,a){if(1&i&&pe(0,"uds-information",15),2&i){const e=X(2);z("value",e.provider)("gui",e.gui)}}function hae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Services"),O())}function fae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Usage"),O())}function pae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function mae(i,a){if(1&i){const e=Ee();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),Q("selectedIndexChange",function(d){return le(e),oe(X().selectedTab=d)}),I(3,"mat-tab"),J(4,dae,2,0,"ng-template",9),I(5,"div",10),J(6,uae,1,2,"uds-information",11),O()(),I(7,"mat-tab"),J(8,hae,2,0,"ng-template",9),I(9,"div",10)(10,"uds-table",12),Q("newAction",function(d){return le(e),oe(X().onNewService(d))})("editAction",function(d){return le(e),oe(X().onEditService(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteService(d))})("customButtonAction",function(d){return le(e),oe(X().onInformation(d))})("loaded",function(d){return le(e),oe(X().onLoad(d))}),O()()(),I(11,"mat-tab"),J(12,fae,2,0,"ng-template",9),I(13,"div",10)(14,"uds-table",13),Q("deleteAction",function(d){return le(e),oe(X().onDeleteUsage(d))}),O()()(),I(15,"mat-tab"),J(16,pae,2,0,"ng-template",9),I(17,"div",10),pe(18,"uds-logs-table",14),O()()()()()}if(2&i){const e=X();N(2),z("selectedIndex",e.selectedTab)("@.disabled",!0),N(4),z("ngIf",e.provider&&e.gui),N(4),z("rest",e.services)("multiSelect",!0)("allowExport",!0)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)("tableId","providers-d-services"+e.provider.id),N(4),z("rest",e.usage)("multiSelect",!0)("allowExport",!0)("pageSize",e.api.config.admin.page_size)("tableId","providers-d-usage"+e.provider.id),N(4),z("rest",e.services.parentModel)("itemId",e.provider.id)("tableId","providers-d-log"+e.provider.id)}}const gae=function(i){return["/providers",i]};let eee=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.customButtons=[{id:"info",html:'info '+django.gettext("Information")+"",type:ri.ONLY_MENU}],this.provider=null,this.gui=[],this.services={},this.usage={},this.selectedTab=1}ngOnInit(){const e=this.route.snapshot.paramMap.get("provider");e&&(this.services=this.rest.providers.detail(e,"services"),this.usage=this.rest.providers.detail(e,"usage"),this.services.parentModel.get(e).then(o=>{this.provider=o,this.services.parentModel.gui(o.type).then(d=>{this.gui=d})}))}onInformation(e){lae.launch(this.api,this.services,e.table.selection.selected[0])}onNewService(e){this.api.gui.forms.typedNewForm(e,django.gettext("New service"),!1)}onEditService(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit service"),!1)}onDeleteService(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete service"))}onDeleteUsage(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete user service"))}onLoad(e){if(!0===e.param){const o=this.route.snapshot.paramMap.get("service");if(void 0!==o){this.selectedTab=1;const d=e.table;d.dataSource.data.forEach(h=>{h.id===o&&d.selection.select(h)})}}}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-services-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","providers",3,"rest","multiSelect","allowExport","customButtons","pageSize","tableId","newAction","editAction","deleteAction","customButtonAction","loaded"],["icon","usage",3,"rest","multiSelect","allowExport","pageSize","tableId","deleteAction"],[3,"rest","itemId","tableId"],[3,"value","gui"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),pe(6,"img",4),Y(7),O(),J(8,mae,19,17,"div",5),O()),2&e&&(N(2),z("routerLink",du(4,gae,o.services.parentId)),N(4),z("src",o.api.staticURL("admin/img/icons/services.png"),Kt),N(1),Ie(" \xa0",null==o.provider?null:o.provider.name," "),N(1),z("ngIf",null!==o.provider))},dependencies:[en,Is,qo,mo,Ja,Pn,Ni,N1,az]}),i})(),tee=(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){var e=this;return Qe(function*(){e.route.snapshot.paramMap.get("authenticator")})()}onDetail(e){var o=this;return Qe(function*(){o.api.navigation.gotoAuthenticatorDetail(e.param.id)})()}onNew(e){var o=this;return Qe(function*(){o.api.gui.forms.typedNewForm(e,django.gettext("New Authenticator"),!0)})()}onEdit(e){var o=this;return Qe(function*(){o.api.gui.forms.typedEditForm(e,django.gettext("Edit Authenticator"),!0)})()}onDelete(e){var o=this;return Qe(function*(){o.api.gui.forms.deleteForm(e,django.gettext("Delete Authenticator"))})()}onLoad(e){var o=this;return Qe(function*(){!0===e.param&&e.table.selectElement("id",o.route.snapshot.paramMap.get("authenticator"))})()}processElement(e){e.visible=this.api.boolAsHumanString(e.visible)}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-authenticators"]],decls:2,vars:6,consts:[["icon","authenticators",3,"rest","multiSelect","allowExport","hasPermissions","onItem","pageSize","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("detailAction",function(h){return o.onDetail(h)})("loaded",function(h){return o.onLoad(h)}),O()()),2&e&&(N(1),z("rest",o.rest.authenticators)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("onItem",o.processElement)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni]}),i})(),nee=(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){this.route.snapshot.paramMap.get("mfa")}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New MFA"))}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit MFA"))}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete MFA"))}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("mfa"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-mfas"]],decls:2,vars:5,consts:[["icon","mfas",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("loaded",function(h){return o.onLoad(h)}),O()()),2&e&&(N(1),z("rest",o.rest.mfas)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni]}),i})();const vae=["panel"];function _ae(i,a){if(1&i&&(I(0,"div",0,1),ut(2),O()),2&i){const e=a.id,o=X();z("id",o.id)("ngClass",o._classList)("@panelAnimation",o.isOpen?"visible":"hidden"),Ve("aria-label",o.ariaLabel||null)("aria-labelledby",o._getPanelAriaLabelledby(e))}}const yae=["*"],bae=rr("panelAnimation",[Fn("void, hidden",dt({opacity:0,transform:"scaleY(0.8)"})),An(":enter, hidden => visible",[Yk([Ln("0.03s linear",dt({opacity:1})),Ln("0.12s cubic-bezier(0, 0, 0.2, 1)",dt({transform:"scaleY(1)"}))])]),An(":leave, visible => hidden",[Ln("0.075s linear",dt({opacity:0}))])]);let wae=0;class xae{constructor(a,e){this.source=a,this.option=e}}const Cae=oc(class{}),iee=new be("mat-autocomplete-default-options",{providedIn:"root",factory:function Sae(){return{autoActiveFirstOption:!1,autoSelectActiveOption:!1,hideSingleSelectionIndicator:!1}}});let Dae=(()=>{class i extends Cae{get isOpen(){return this._isOpen&&this.showPanel}_setColor(e){this._color=e,this._setThemeClasses(this._classList)}get autoActiveFirstOption(){return this._autoActiveFirstOption}set autoActiveFirstOption(e){this._autoActiveFirstOption=Ge(e)}get autoSelectActiveOption(){return this._autoSelectActiveOption}set autoSelectActiveOption(e){this._autoSelectActiveOption=Ge(e)}set classList(e){this._classList=e&&e.length?LN(e).reduce((o,d)=>(o[d]=!0,o),{}):{},this._setVisibilityClasses(this._classList),this._setThemeClasses(this._classList),this._elementRef.nativeElement.className=""}constructor(e,o,d,h){super(),this._changeDetectorRef=e,this._elementRef=o,this._defaults=d,this._activeOptionChanges=xt.EMPTY,this.showPanel=!1,this._isOpen=!1,this.displayWith=null,this._autoActiveFirstOption=!!this._defaults.autoActiveFirstOption,this._autoSelectActiveOption=!!this._defaults.autoSelectActiveOption,this.optionSelected=new we,this.opened=new we,this.closed=new we,this.optionActivated=new we,this._classList={},this.id="mat-autocomplete-"+wae++,this.inertGroups=(null==h?void 0:h.SAFARI)||!1}ngAfterContentInit(){this._keyManager=new TB(this.options).withWrap(),this._activeOptionChanges=this._keyManager.change.subscribe(e=>{this.isOpen&&this.optionActivated.emit({source:this,option:this.options.toArray()[e]||null})}),this._setVisibility()}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._activeOptionChanges.unsubscribe()}_setScrollTop(e){this.panel&&(this.panel.nativeElement.scrollTop=e)}_getScrollTop(){return this.panel?this.panel.nativeElement.scrollTop:0}_setVisibility(){this.showPanel=!!this.options.length,this._setVisibilityClasses(this._classList),this._changeDetectorRef.markForCheck()}_emitSelectEvent(e){const o=new xae(this,e);this.optionSelected.emit(o)}_getPanelAriaLabelledby(e){return this.ariaLabel?null:this.ariaLabelledby?(e?e+" ":"")+this.ariaLabelledby:e}_setVisibilityClasses(e){e[this._visibleClass]=this.showPanel,e[this._hiddenClass]=!this.showPanel}_setThemeClasses(e){e["mat-primary"]="primary"===this._color,e["mat-warn"]="warn"===this._color,e["mat-accent"]="accent"===this._color}}return i.\u0275fac=function(e){return new(e||i)(F(Jt),F(Be),F(iee),F(Qn))},i.\u0275dir=me({type:i,viewQuery:function(e,o){if(1&e&&(ct(ii,7),ct(vae,5)),2&e){let d;Pe(d=Ae())&&(o.template=d.first),Pe(d=Ae())&&(o.panel=d.first)}},inputs:{ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],displayWith:"displayWith",autoActiveFirstOption:"autoActiveFirstOption",autoSelectActiveOption:"autoSelectActiveOption",panelWidth:"panelWidth",classList:["class","classList"]},outputs:{optionSelected:"optionSelected",opened:"opened",closed:"closed",optionActivated:"optionActivated"},features:[Se]}),i})(),kY=(()=>{class i extends Dae{constructor(){var e;super(...arguments),this._visibleClass="mat-mdc-autocomplete-visible",this._hiddenClass="mat-mdc-autocomplete-hidden",this._hideSingleSelectionIndicator=null!==(e=this._defaults.hideSingleSelectionIndicator)&&void 0!==e&&e}get hideSingleSelectionIndicator(){return this._hideSingleSelectionIndicator}set hideSingleSelectionIndicator(e){this._hideSingleSelectionIndicator=Ge(e),this._syncParentProperties()}_syncParentProperties(){if(this.options)for(const e of this.options)e._changeDetectorRef.markForCheck()}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-autocomplete"]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,IC,5),Qt(d,$i,5)),2&e){let h;Pe(h=Ae())&&(o.optionGroups=h),Pe(h=Ae())&&(o.options=h)}},hostAttrs:[1,"mat-mdc-autocomplete"],inputs:{disableRipple:"disableRipple",hideSingleSelectionIndicator:"hideSingleSelectionIndicator"},exportAs:["matAutocomplete"],features:[Ue([{provide:jk,useExisting:i}]),Se],ngContentSelectors:yae,decls:1,vars:0,consts:[["role","listbox",1,"mat-mdc-autocomplete-panel","mdc-menu-surface","mdc-menu-surface--open",3,"id","ngClass"],["panel",""]],template:function(e,o){1&e&&(On(),J(0,_ae,3,5,"ng-template"))},dependencies:[Ss],styles:[".mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}.mdc-menu-surface.mat-mdc-autocomplete-panel{width:100%;max-height:256px;position:static;visibility:hidden;transform-origin:center top;margin:0;padding:8px 0;list-style-type:none}.mdc-menu-surface.mat-mdc-autocomplete-panel:focus{outline:none}.cdk-high-contrast-active .mdc-menu-surface.mat-mdc-autocomplete-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-autocomplete-panel-above) .mdc-menu-surface.mat-mdc-autocomplete-panel{border-top-left-radius:0;border-top-right-radius:0}.mat-mdc-autocomplete-panel-above .mdc-menu-surface.mat-mdc-autocomplete-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:center bottom}.mdc-menu-surface.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-visible{visibility:visible}.mdc-menu-surface.mat-mdc-autocomplete-panel.mat-mdc-autocomplete-hidden{visibility:hidden}mat-autocomplete{display:none}"],encapsulation:2,data:{animation:[bae]},changeDetection:0}),i})();const Mae={provide:pa,useExisting:bn(()=>oz),multi:!0},ree=new be("mat-autocomplete-scroll-strategy"),Aae={provide:ree,deps:[ea],useFactory:function Tae(i){return()=>i.scrollStrategies.reposition()}};let kae=(()=>{class i{get autocompleteDisabled(){return this._autocompleteDisabled}set autocompleteDisabled(e){this._autocompleteDisabled=Ge(e)}constructor(e,o,d,h,_,w,D,k,P,B,W){this._element=e,this._overlay=o,this._viewContainerRef=d,this._zone=h,this._changeDetectorRef=_,this._dir=D,this._formField=k,this._document=P,this._viewportRuler=B,this._defaults=W,this._componentDestroyed=!1,this._autocompleteDisabled=!1,this._manuallyFloatingLabel=!1,this._viewportSubscription=xt.EMPTY,this._canOpenOnNextFocus=!0,this._closeKeyEventStream=new He,this._windowBlurHandler=()=>{this._canOpenOnNextFocus=this._document.activeElement!==this._element.nativeElement||this.panelOpen},this._onChange=()=>{},this._onTouched=()=>{},this.position="auto",this.autocompleteAttribute="off",this._overlayAttached=!1,this.optionSelections=Bm(()=>{const Z=this.autocomplete?this.autocomplete.options:null;return Z?Z.changes.pipe(wi(Z),nr(()=>Wn(...Z.map(te=>te.onSelectionChange)))):this._zone.onStable.pipe(Tn(1),nr(()=>this.optionSelections))}),this._scrollStrategy=w}ngAfterViewInit(){const e=this._getWindow();typeof e<"u"&&this._zone.runOutsideAngular(()=>e.addEventListener("blur",this._windowBlurHandler))}ngOnChanges(e){e.position&&this._positionStrategy&&(this._setStrategyPositions(this._positionStrategy),this.panelOpen&&this._overlayRef.updatePosition())}ngOnDestroy(){const e=this._getWindow();typeof e<"u"&&e.removeEventListener("blur",this._windowBlurHandler),this._viewportSubscription.unsubscribe(),this._componentDestroyed=!0,this._destroyPanel(),this._closeKeyEventStream.complete()}get panelOpen(){return this._overlayAttached&&this.autocomplete.showPanel}openPanel(){this._attachOverlay(),this._floatLabel()}closePanel(){this._resetLabel(),this._overlayAttached&&(this.panelOpen&&this._zone.run(()=>{this.autocomplete.closed.emit()}),this.autocomplete._isOpen=this._overlayAttached=!1,this._pendingAutoselectedOption=null,this._overlayRef&&this._overlayRef.hasAttached()&&(this._overlayRef.detach(),this._closingActionsSubscription.unsubscribe()),this._componentDestroyed||this._changeDetectorRef.detectChanges())}updatePosition(){this._overlayAttached&&this._overlayRef.updatePosition()}get panelClosingActions(){return Wn(this.optionSelections,this.autocomplete._keyManager.tabOut.pipe(Kn(()=>this._overlayAttached)),this._closeKeyEventStream,this._getOutsideClickStream(),this._overlayRef?this._overlayRef.detachments().pipe(Kn(()=>this._overlayAttached)):Ze()).pipe(vt(e=>e instanceof $k?e:null))}get activeOption(){return this.autocomplete&&this.autocomplete._keyManager?this.autocomplete._keyManager.activeItem:null}_getOutsideClickStream(){return Wn(rc(this._document,"click"),rc(this._document,"auxclick"),rc(this._document,"touchend")).pipe(Kn(e=>{const o=dd(e),d=this._formField?this._formField._elementRef.nativeElement:null,h=this.connectedTo?this.connectedTo.elementRef.nativeElement:null;return this._overlayAttached&&o!==this._element.nativeElement&&this._document.activeElement!==this._element.nativeElement&&(!d||!d.contains(o))&&(!h||!h.contains(o))&&!!this._overlayRef&&!this._overlayRef.overlayElement.contains(o)}))}writeValue(e){Promise.resolve(null).then(()=>this._assignOptionValue(e))}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this._element.nativeElement.disabled=e}_handleKeydown(e){const o=e.keyCode,d=pr(e);if(27===o&&!d&&e.preventDefault(),this.activeOption&&13===o&&this.panelOpen&&!d)this.activeOption._selectViaInteraction(),this._resetActiveItem(),e.preventDefault();else if(this.autocomplete){const h=this.autocomplete._keyManager.activeItem,_=38===o||40===o;9===o||_&&!d&&this.panelOpen?this.autocomplete._keyManager.onKeydown(e):_&&this._canOpen()&&this.openPanel(),(_||this.autocomplete._keyManager.activeItem!==h)&&(this._scrollToOption(this.autocomplete._keyManager.activeItemIndex||0),this.autocomplete.autoSelectActiveOption&&this.activeOption&&(this._pendingAutoselectedOption||(this._valueBeforeAutoSelection=this._element.nativeElement.value),this._pendingAutoselectedOption=this.activeOption,this._assignOptionValue(this.activeOption.value)))}}_handleInput(e){let o=e.target,d=o.value;"number"===o.type&&(d=""==d?null:parseFloat(d)),this._previousValue!==d&&(this._previousValue=d,this._pendingAutoselectedOption=null,this._onChange(d),this._canOpen()&&this._document.activeElement===e.target&&this.openPanel())}_handleFocus(){this._canOpenOnNextFocus?this._canOpen()&&(this._previousValue=this._element.nativeElement.value,this._attachOverlay(),this._floatLabel(!0)):this._canOpenOnNextFocus=!0}_handleClick(){this._canOpen()&&!this.panelOpen&&this.openPanel()}_floatLabel(e=!1){this._formField&&"auto"===this._formField.floatLabel&&(e?this._formField._animateAndLockLabel():this._formField.floatLabel="always",this._manuallyFloatingLabel=!0)}_resetLabel(){this._manuallyFloatingLabel&&(this._formField&&(this._formField.floatLabel="auto"),this._manuallyFloatingLabel=!1)}_subscribeToClosingActions(){return Wn(this._zone.onStable.pipe(Tn(1)),this.autocomplete.options.changes.pipe(Li(()=>this._positionStrategy.reapplyLastPosition()),ez(0))).pipe(nr(()=>(this._zone.run(()=>{const d=this.panelOpen;this._resetActiveItem(),this.autocomplete._setVisibility(),this._changeDetectorRef.detectChanges(),this.panelOpen&&this._overlayRef.updatePosition(),d!==this.panelOpen&&(this.panelOpen?this.autocomplete.opened.emit():this.autocomplete.closed.emit())}),this.panelClosingActions)),Tn(1)).subscribe(d=>this._setValueAndClose(d))}_destroyPanel(){this._overlayRef&&(this.closePanel(),this._overlayRef.dispose(),this._overlayRef=null)}_assignOptionValue(e){const o=this.autocomplete&&this.autocomplete.displayWith?this.autocomplete.displayWith(e):e;this._updateNativeInputValue(o??"")}_updateNativeInputValue(e){this._formField?this._formField._control.value=e:this._element.nativeElement.value=e,this._previousValue=e}_setValueAndClose(e){const o=e?e.source:this._pendingAutoselectedOption;o&&(this._clearPreviousSelectedOption(o),this._assignOptionValue(o.value),this._onChange(o.value),this.autocomplete._emitSelectEvent(o),this._element.nativeElement.focus()),this.closePanel()}_clearPreviousSelectedOption(e){this.autocomplete.options.forEach(o=>{o!==e&&o.selected&&o.deselect()})}_attachOverlay(){var e;let o=this._overlayRef;var d;o?(this._positionStrategy.setOrigin(this._getConnectedElement()),o.updateSize({width:this._getPanelWidth()})):(this._portal=new Ps(this.autocomplete.template,this._viewContainerRef,{id:null===(d=this._formField)||void 0===d?void 0:d.getLabelId()}),o=this._overlay.create(this._getOverlayConfig()),this._overlayRef=o,this._handleOverlayEvents(o),this._viewportSubscription=this._viewportRuler.change().subscribe(()=>{this.panelOpen&&o&&o.updateSize({width:this._getPanelWidth()})})),o&&!o.hasAttached()&&(o.attach(this._portal),this._closingActionsSubscription=this._subscribeToClosingActions());const h=this.panelOpen;this.autocomplete._setVisibility(),this.autocomplete._isOpen=this._overlayAttached=!0,this.autocomplete._setColor(null===(e=this._formField)||void 0===e?void 0:e.color),this.panelOpen&&h!==this.panelOpen&&this.autocomplete.opened.emit()}_getOverlayConfig(){var e,o;return new Hf({positionStrategy:this._getOverlayPosition(),scrollStrategy:this._scrollStrategy(),width:this._getPanelWidth(),direction:null!==(e=this._dir)&&void 0!==e?e:void 0,panelClass:null===(o=this._defaults)||void 0===o?void 0:o.overlayPanelClass})}_getOverlayPosition(){const e=this._overlay.position().flexibleConnectedTo(this._getConnectedElement()).withFlexibleDimensions(!1).withPush(!1);return this._setStrategyPositions(e),this._positionStrategy=e,e}_setStrategyPositions(e){const o=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],d=this._aboveClass,h=[{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:d},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom",panelClass:d}];let _;_="above"===this.position?h:"below"===this.position?o:[...o,...h],e.withPositions(_)}_getConnectedElement(){return this.connectedTo?this.connectedTo.elementRef:this._formField?this._formField.getConnectedOverlayOrigin():this._element}_getPanelWidth(){return this.autocomplete.panelWidth||this._getHostWidth()}_getHostWidth(){return this._getConnectedElement().nativeElement.getBoundingClientRect().width}_resetActiveItem(){const e=this.autocomplete;e.autoActiveFirstOption?e._keyManager.setFirstItemActive():e._keyManager.setActiveItem(-1)}_canOpen(){const e=this._element.nativeElement;return!e.readOnly&&!e.disabled&&!this._autocompleteDisabled}_getWindow(){var e;return(null===(e=this._document)||void 0===e?void 0:e.defaultView)||window}_scrollToOption(e){const o=this.autocomplete,d=PC(e,o.options,o.optionGroups);if(0===e&&1===d)o._setScrollTop(0);else if(o.panel){const h=o.options.toArray()[e];if(h){const _=h._getHostElement(),w=Wk(_.offsetTop,_.offsetHeight,o._getScrollTop(),o.panel.nativeElement.offsetHeight);o._setScrollTop(w)}}}_handleOverlayEvents(e){e.keydownEvents().subscribe(o=>{var d;(27===o.keyCode&&!pr(o)||38===o.keyCode&&pr(o,"altKey"))&&(this._pendingAutoselectedOption&&(this._updateNativeInputValue(null!==(d=this._valueBeforeAutoSelection)&&void 0!==d?d:""),this._pendingAutoselectedOption=null),this._closeKeyEventStream.next(),this._resetActiveItem(),o.stopPropagation(),o.preventDefault())}),e.outsidePointerEvents().subscribe()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(ea),F(mi),F(et),F(Jt),F(ree),F(Ci,8),F(Ag,9),F(ht,8),F(ac),F(iee,8))},i.\u0275dir=me({type:i,inputs:{autocomplete:["matAutocomplete","autocomplete"],position:["matAutocompletePosition","position"],connectedTo:["matAutocompleteConnectedTo","connectedTo"],autocompleteAttribute:["autocomplete","autocompleteAttribute"],autocompleteDisabled:["matAutocompleteDisabled","autocompleteDisabled"]},features:[jn]}),i})(),oz=(()=>{class i extends kae{constructor(){super(...arguments),this._aboveClass="mat-mdc-autocomplete-panel-above"}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["input","matAutocomplete",""],["textarea","matAutocomplete",""]],hostAttrs:[1,"mat-mdc-autocomplete-trigger"],hostVars:7,hostBindings:function(e,o){1&e&&Q("focusin",function(){return o._handleFocus()})("blur",function(){return o._onTouched()})("input",function(h){return o._handleInput(h)})("keydown",function(h){return o._handleKeydown(h)})("click",function(){return o._handleClick()}),2&e&&Ve("autocomplete",o.autocompleteAttribute)("role",o.autocompleteDisabled?null:"combobox")("aria-autocomplete",o.autocompleteDisabled?null:"list")("aria-activedescendant",o.panelOpen&&o.activeOption?o.activeOption.id:null)("aria-expanded",o.autocompleteDisabled?null:o.panelOpen.toString())("aria-owns",o.autocompleteDisabled||!o.panelOpen||null==o.autocomplete?null:o.autocomplete.id)("aria-haspopup",o.autocompleteDisabled?null:"listbox")},exportAs:["matAutocompleteTrigger"],features:[Ue([Mae]),Se]}),i})(),Eae=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[Aae],imports:[pd,RC,nn,Ri,ud,RC,nn]}),i})();function Iae(i,a){if(1&i&&(I(0,"div")(1,"uds-translate"),Y(2,"Edit user"),O(),Y(3),O()),2&i){const e=X();N(3),Ie(" ",e.user.name," ")}}function Pae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New user"),O())}function Rae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",19),Q("ngModelChange",function(d){return le(e),oe(X().user.name=d)}),O()()}if(2&i){const e=X();N(2),Ie(" ",e.authenticator.type_info.userNameLabel," "),N(1),z("ngModel",e.user.name)("disabled",e.user.id)}}function Oae(i,a){if(1&i&&(I(0,"mat-option",22),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),qh(" ",e.id," (",e.name,") ")}}function Lae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",20),Q("ngModelChange",function(d){return le(e),oe(X().user.name=d)})("input",function(d){return le(e),oe(X().filterUser(d))}),O(),I(4,"mat-autocomplete",null,21),J(6,Oae,2,3,"mat-option",16),O()()}if(2&i){const e=on(5),o=X();N(2),Ie(" ",o.authenticator.type_info.userNameLabel," "),N(1),z("ngModel",o.user.name)("matAutocomplete",e),N(3),z("ngForOf",o.users)}}function Fae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",23),Q("ngModelChange",function(d){return le(e),oe(X().user.password=d)}),O()()}if(2&i){const e=X();N(2),Ie(" ",e.authenticator.type_info.passwordLabel," "),N(1),z("ngModel",e.user.password)}}function Nae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label")(2,"uds-translate"),Y(3,"MFA"),O()(),I(4,"input",24),Q("ngModelChange",function(d){return le(e),oe(X().user.mfa_data=d)}),O()()}if(2&i){const e=X();N(4),z("ngModel",e.user.mfa_data)}}function Bae(i,a){if(1&i&&(I(0,"mat-option",22),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}let aee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.groups=[],this.onSave=new we(!0),this.users=[],this.authenticator=h.authenticator,this.user={id:void 0,name:"",real_name:"",comments:"",state:"A",is_admin:!1,staff_member:!1,password:"",role:"user",mfa:"",groups:[]},void 0!==h.user&&(this.user.id=h.user.id,this.user.name=h.user.name)}static launch(e,o,d){const h=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{authenticator:o,user:d},disableClose:!1}).componentInstance.onSave}ngOnInit(){this.rest.authenticators.detail(this.authenticator.id,"groups").overview().then(e=>{this.groups=e}),this.user.id&&this.rest.authenticators.detail(this.authenticator.id,"users").get(this.user.id).then(e=>{this.user=e,this.user.role=e.is_admin?"admin":e.staff_member?"staff":"user"},e=>{this.dialogRef.close()})}roleChanged(e){this.user.is_admin="admin"===e,this.user.staff_member="admin"===e||"staff"===e}filterUser(e){this.rest.authenticators.search(this.authenticator.id,"user",e.target.value,100).then(d=>{this.users.length=0,d.forEach(h=>{this.users.push(h)})})}save(){this.rest.authenticators.detail(this.authenticator.id,"users").save(this.user).then(e=>{this.dialogRef.close(),this.onSave.emit(!0)})}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-new-user"]],decls:61,vars:12,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],["nousertitle",""],[1,"content"],[4,"ngIf"],["type","text","matInput","","autocomplete","new-real_name",3,"ngModel","ngModelChange"],["type","text","matInput","","autocomplete","new-comments",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],["value","A"],["value","I"],["value","B"],[3,"ngModel","ngModelChange","valueChange"],["value","admin"],["value","staff"],["value","user"],["multiple","",3,"ngModel","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],["type","text","matInput","","autocomplete","new-username",3,"ngModel","disabled","ngModelChange"],["type","text","aria-label","Number","matInput","",3,"ngModel","matAutocomplete","ngModelChange","input"],["auto","matAutocomplete"],[3,"value"],["type","password","matInput","","autocomplete","new-password",3,"ngModel","ngModelChange"],["type","text","matInput","",3,"ngModel","ngModelChange"]],template:function(e,o){if(1&e&&(I(0,"h4",0),J(1,Iae,4,1,"div",1),J(2,Pae,2,0,"ng-template",null,2,Zr),O(),I(4,"mat-dialog-content")(5,"div",3),J(6,Rae,4,3,"mat-form-field",4),J(7,Lae,7,4,"mat-form-field",4),I(8,"mat-form-field")(9,"mat-label")(10,"uds-translate"),Y(11,"Real name"),O()(),I(12,"input",5),Q("ngModelChange",function(h){return o.user.real_name=h}),O()(),I(13,"mat-form-field")(14,"mat-label")(15,"uds-translate"),Y(16,"Comments"),O()(),I(17,"input",6),Q("ngModelChange",function(h){return o.user.comments=h}),O()(),I(18,"mat-form-field")(19,"mat-label")(20,"uds-translate"),Y(21,"State"),O()(),I(22,"mat-select",7),Q("ngModelChange",function(h){return o.user.state=h}),I(23,"mat-option",8)(24,"uds-translate"),Y(25,"Enabled"),O()(),I(26,"mat-option",9)(27,"uds-translate"),Y(28,"Disabled"),O()(),I(29,"mat-option",10)(30,"uds-translate"),Y(31,"Blocked"),O()()()(),I(32,"mat-form-field")(33,"mat-label")(34,"uds-translate"),Y(35,"Role"),O()(),I(36,"mat-select",11),Q("ngModelChange",function(h){return o.user.role=h})("valueChange",function(h){return o.roleChanged(h)}),I(37,"mat-option",12)(38,"uds-translate"),Y(39,"Admin"),O()(),I(40,"mat-option",13)(41,"uds-translate"),Y(42,"Staff member"),O()(),I(43,"mat-option",14)(44,"uds-translate"),Y(45,"User"),O()()()(),J(46,Fae,4,2,"mat-form-field",4),J(47,Nae,5,1,"mat-form-field",4),I(48,"mat-form-field")(49,"mat-label")(50,"uds-translate"),Y(51,"Groups"),O()(),I(52,"mat-select",15),Q("ngModelChange",function(h){return o.user.groups=h}),J(53,Bae,2,2,"mat-option",16),O()()()(),I(54,"mat-dialog-actions")(55,"button",17)(56,"uds-translate"),Y(57,"Cancel"),O()(),I(58,"button",18),Q("click",function(){return o.save()}),I(59,"uds-translate"),Y(60,"Ok"),O()()()),2&e){const d=on(3);N(1),z("ngIf",o.user.id)("ngIfElse",d),N(5),z("ngIf",!1===o.authenticator.type_info.canSearchUsers||o.user.id),N(1),z("ngIf",!0===o.authenticator.type_info.canSearchUsers&&!o.user.id),N(5),z("ngModel",o.user.real_name),N(5),z("ngModel",o.user.comments),N(5),z("ngModel",o.user.state),N(14),z("ngModel",o.user.role),N(10),z("ngIf",o.authenticator.type_info.needsPassword),N(1),z("ngIf",!o.authenticator.type_info.isExternal),N(5),z("ngModel",o.user.groups),N(1),z("ngForOf",o.groups)}},dependencies:[Mn,en,sr,Jn,zn,hi,jo,ar,Wi,or,ei,fi,ga,ma,$i,kY,oz,Pn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})();function Vae(i,a){if(1&i&&(I(0,"div")(1,"uds-translate"),Y(2,"Edit group"),O(),Y(3),O()),2&i){const e=X();N(3),Ie(" ",e.group.name," ")}}function zae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New group"),O())}function Hae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",13),Q("ngModelChange",function(d){return le(e),oe(X(2).group.name=d)}),O()()}if(2&i){const e=X(2);N(2),Ie(" ",e.authenticator.type_info.groupNameLabel," "),N(1),z("ngModel",e.group.name)("disabled",e.group.id)}}function Gae(i,a){if(1&i&&(I(0,"mat-option",17),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),qh(" ",e.id," (",e.name,") ")}}function Uae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",14),Q("ngModelChange",function(d){return le(e),oe(X(2).group.name=d)})("input",function(d){return le(e),oe(X(2).filterGroup(d))}),O(),I(4,"mat-autocomplete",null,15),J(6,Gae,2,3,"mat-option",16),O()()}if(2&i){const e=on(5),o=X(2);N(2),Ie(" ",o.authenticator.type_info.groupNameLabel," "),N(1),z("ngModel",o.group.name)("matAutocomplete",e),N(3),z("ngForOf",o.fltrGroup)}}function jae(i,a){if(1&i&&(vn(0),J(1,Hae,4,3,"mat-form-field",12),J(2,Uae,7,4,"mat-form-field",12),wn()),2&i){const e=X();N(1),z("ngIf",!1===e.authenticator.type_info.canSearchGroups||e.group.id),N(1),z("ngIf",!0===e.authenticator.type_info.canSearchGroups&&!e.group.id)}}function $ae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label")(2,"uds-translate"),Y(3,"Meta group name"),O()(),I(4,"input",13),Q("ngModelChange",function(d){return le(e),oe(X().group.name=d)}),O()()}if(2&i){const e=X();N(4),z("ngModel",e.group.name)("disabled",e.group.id)}}function Wae(i,a){if(1&i&&(I(0,"mat-option",17),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function Yae(i,a){if(1&i){const e=Ee();vn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Service Pools"),O()(),I(5,"mat-select",18),Q("ngModelChange",function(d){return le(e),oe(X().group.pools=d)}),J(6,Wae,2,2,"mat-option",16),O()(),wn()}if(2&i){const e=X();N(5),z("ngModel",e.group.pools),N(1),z("ngForOf",e.servicePools)}}function qae(i,a){if(1&i&&(I(0,"mat-option",17),Y(1),O()),2&i){const e=X().$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function Xae(i,a){if(1&i&&(vn(0),J(1,qae,2,2,"mat-option",20),wn()),2&i){const e=a.$implicit;N(1),z("ngIf","group"===e.type)}}function Zae(i,a){if(1&i){const e=Ee();I(0,"mat-form-field")(1,"mat-label")(2,"uds-translate"),Y(3,"Match mode"),O()(),I(4,"mat-select",6),Q("ngModelChange",function(d){return le(e),oe(X().group.meta_if_any=d)}),I(5,"mat-option",17)(6,"uds-translate"),Y(7,"Any group"),O()(),I(8,"mat-option",17)(9,"uds-translate"),Y(10,"All groups"),O()()()(),I(11,"mat-form-field")(12,"mat-label")(13,"uds-translate"),Y(14,"Selected Groups"),O()(),I(15,"mat-select",18),Q("ngModelChange",function(d){return le(e),oe(X().group.groups=d)}),J(16,Xae,2,1,"ng-container",19),O()()}if(2&i){const e=X();N(4),z("ngModel",e.group.meta_if_any),N(1),z("value",!0),N(3),z("value",!1),N(7),z("ngModel",e.group.groups),N(1),z("ngForOf",e.groups)}}let oee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.onSave=new we(!0),this.servicePools=[],this.groups=[],this.fltrGroup=[],this.authenticator=h.authenticator,this.group={id:void 0,type:h.groupType,name:"",comments:"",meta_if_any:!1,state:"A",groups:[],pools:[]},void 0!==h.group&&(this.group.id=h.group.id,this.group.type=h.group.type,this.group.name=h.group.name)}static launch(e,o,d,h){const _=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:_,position:{top:window.innerWidth<800?"0px":"7rem"},data:{authenticator:o,groupType:d,group:h},disableClose:!0}).componentInstance.onSave}ngOnInit(){const e=this.rest.authenticators.detail(this.authenticator.id,"groups");void 0!==this.group.id&&e.get(this.group.id).then(o=>{this.group=o},o=>{this.dialogRef.close()}),"meta"===this.group.type?e.summary().then(o=>this.groups=o):this.rest.servicesPools.summary().then(o=>this.servicePools=o)}filterGroup(e){this.rest.authenticators.search(this.authenticator.id,"group",e.target.value,100).then(d=>{this.fltrGroup.length=0,d.forEach(h=>{this.fltrGroup.push(h)})})}getMatchValue(){return django.gettext("Match mode")+this.group.meta_if_any?django.gettext("Any"):django.gettext("All")}save(){this.rest.authenticators.detail(this.authenticator.id,"groups").save(this.group).then(e=>{this.dialogRef.close(),this.onSave.emit(!0)})}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-new-group"]],decls:35,vars:8,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],["nousertitle",""],[1,"content"],["metafirst",""],["type","text","matInput","",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],["value","A"],["value","I"],["metasecond",""],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],[4,"ngIf"],["type","text","matInput","",3,"ngModel","disabled","ngModelChange"],["type","text","aria-label","Number","matInput","",3,"ngModel","matAutocomplete","ngModelChange","input"],["auto","matAutocomplete"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],["multiple","",3,"ngModel","ngModelChange"],[4,"ngFor","ngForOf"],[3,"value",4,"ngIf"]],template:function(e,o){if(1&e&&(I(0,"h4",0),J(1,Vae,4,1,"div",1),J(2,zae,2,0,"ng-template",null,2,Zr),O(),I(4,"mat-dialog-content")(5,"div",3),J(6,jae,3,2,"ng-container",1),J(7,$ae,5,2,"ng-template",null,4,Zr),I(9,"mat-form-field")(10,"mat-label")(11,"uds-translate"),Y(12,"Comments"),O()(),I(13,"input",5),Q("ngModelChange",function(h){return o.group.comments=h}),O()(),I(14,"mat-form-field")(15,"mat-label")(16,"uds-translate"),Y(17,"State"),O()(),I(18,"mat-select",6),Q("ngModelChange",function(h){return o.group.state=h}),I(19,"mat-option",7)(20,"uds-translate"),Y(21,"Enabled"),O()(),I(22,"mat-option",8)(23,"uds-translate"),Y(24,"Disabled"),O()()()(),J(25,Yae,7,2,"ng-container",1),J(26,Zae,17,5,"ng-template",null,9,Zr),O()(),I(28,"mat-dialog-actions")(29,"button",10)(30,"uds-translate"),Y(31,"Cancel"),O()(),I(32,"button",11),Q("click",function(){return o.save()}),I(33,"uds-translate"),Y(34,"Ok"),O()()()),2&e){const d=on(3),h=on(8),_=on(27);N(1),z("ngIf",o.group.id)("ngIfElse",d),N(5),z("ngIf","group"===o.group.type)("ngIfElse",h),N(7),z("ngModel",o.group.comments),N(5),z("ngModel",o.group.state),N(7),z("ngIf","group"===o.group.type)("ngIfElse",_)}},dependencies:[Mn,en,sr,Jn,zn,hi,jo,ar,Wi,or,ei,fi,ga,ma,$i,kY,oz,Pn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.label-match[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}"]}),i})();function Kae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function Qae(i,a){if(1&i&&(I(0,"mat-tab"),J(1,Kae,2,0,"ng-template",3),pe(2,"uds-table",4),O()),2&i){const e=X();N(2),z("rest",e.group)("pageSize",6)}}function Jae(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Services Pools"),O())}function eoe(i,a){if(1&i&&(I(0,"mat-tab"),J(1,Jae,2,0,"ng-template",3),pe(2,"uds-table",4),O()),2&i){const e=X();N(2),z("rest",e.servicesPools)("pageSize",6)}}function toe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Assigned Services"),O())}function noe(i,a){if(1&i&&(I(0,"mat-tab"),J(1,toe,2,0,"ng-template",3),pe(2,"uds-table",4),O()),2&i){const e=X();N(2),z("rest",e.userServices)("pageSize",6)}}const ioe=[{field:"name",title:django.gettext("Group")},{field:"comments",title:django.gettext("Comments")}],roe=[{field:"name",title:django.gettext("Pool")},{field:"state",title:django.gettext("State")},{field:"user_services_count",title:django.gettext("User Services")}],aoe=[{field:"unique_id",title:django.gettext("Unique ID")},{field:"friendly_name",title:django.gettext("Friendly Name")},{field:"in_use",title:django.gettext("In Use")},{field:"ip",title:django.gettext("IP")},{field:"pool",title:django.gettext("Services Pool")}];let ooe=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.group={},this.servicesPools={},this.userServices={},this.users=h.users,this.user=h.user}static launch(e,o,d){const h=window.innerWidth<800?"80%":"60%";e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{users:o,user:d},disableClose:!1})}ngOnInit(){this.rest.authenticators.detail(this.users.parentId,"users").get(this.user.id).then(e=>{this.group=new Sb(django.gettext("Groups"),()=>this.rest.authenticators.detail(this.users.parentId,"groups").overview().then(_=>_.filter(w=>e.groups.includes(w.id))),ioe,this.user.id+"infogrp"),this.servicesPools=new Sb(django.gettext("Services Pools"),()=>this.users.invoke(this.user.id+"/servicesPools"),roe,this.user.id+"infopool"),this.userServices=new Sb(django.gettext("Assigned services"),()=>this.users.invoke(this.user.id+"/userServices").then(_=>_.map(w=>(w.in_use=this.api.boolAsHumanString(w.in_use),w))),aoe,this.user.id+"userservpool")})}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-user-information"]],decls:13,vars:4,consts:[["mat-dialog-title",""],[4,"ngIf"],["mat-raised-button","","mat-dialog-close","","color","primary"],["mat-tab-label",""],[3,"rest","pageSize"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Information for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"mat-tab-group"),J(6,Qae,3,2,"mat-tab",1),J(7,eoe,3,2,"mat-tab",1),J(8,noe,3,2,"mat-tab",1),O()(),I(9,"mat-dialog-actions")(10,"button",2)(11,"uds-translate"),Y(12,"Ok"),O()()()),2&e&&(N(3),Ie(" ",o.user.name,"\n"),N(3),z("ngIf",o.group),N(1),z("ngIf",o.servicesPools),N(1),z("ngIf",o.userServices))},dependencies:[en,hi,jo,ar,Wi,or,qo,mo,Ja,Pn,Ni],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})();function soe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Services Pools"),O())}function loe(i,a){if(1&i&&(I(0,"mat-tab"),J(1,soe,2,0,"ng-template",3),pe(2,"uds-table",4),O()),2&i){const e=X();N(2),z("rest",e.servicesPools)("pageSize",6)}}function coe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Users"),O())}function doe(i,a){if(1&i&&(I(0,"mat-tab"),J(1,coe,2,0,"ng-template",3),pe(2,"uds-table",4),O()),2&i){const e=X();N(2),z("rest",e.users)("pageSize",6)}}function uoe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function hoe(i,a){if(1&i&&(I(0,"mat-tab"),J(1,uoe,2,0,"ng-template",3),pe(2,"uds-table",4),O()),2&i){const e=X();N(2),z("rest",e.groups)("pageSize",6)}}const foe=[{field:"name",title:django.gettext("Pool")},{field:"state",title:django.gettext("State")},{field:"user_services_count",title:django.gettext("User Services")}],poe=[{field:"name",title:django.gettext("Name")},{field:"real_name",title:django.gettext("Real Name")},{field:"state",title:django.gettext("state")},{field:"last_access",title:django.gettext("Last access"),type:Dr.DATETIME}],moe=[{field:"name",title:django.gettext("Group")},{field:"comments",title:django.gettext("Comments")}];let goe=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.data=h,this.users={},this.groups={},this.servicesPools={}}static launch(e,o,d){const h=window.innerWidth<800?"80%":"60%";e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{group:d,groups:o},disableClose:!1})}ngOnInit(){const e=this.rest.authenticators.detail(this.data.groups.parentId,"groups");if(this.servicesPools=new Sb(django.gettext("Service pools"),()=>e.invoke(this.data.group.id+"/servicesPools"),foe,this.data.group.id+"infopls"),this.users=new Sb(django.gettext("Users"),()=>e.invoke(this.data.group.id+"/users").then(h=>h.map(_=>(_.state="A"===_.state?django.gettext("Enabled"):"I"===_.state?django.gettext("Disabled"):django.gettext("Blocked"),_))),poe,this.data.group.id+"infousr"),"meta"===this.data.group.type){const h=()=>e.overview().then(_=>_.filter(w=>this.data.group.groups.includes(w.id)));this.groups=new Sb(django.gettext("Groups"),h,moe,this.data.group.id+"infogrps")}}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-group-information"]],decls:12,vars:3,consts:[["mat-dialog-title",""],[4,"ngIf"],["mat-raised-button","","mat-dialog-close","","color","primary"],["mat-tab-label",""],[3,"rest","pageSize"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Information for"),O()(),I(3,"mat-dialog-content")(4,"mat-tab-group"),J(5,loe,3,2,"mat-tab",1),J(6,doe,3,2,"mat-tab",1),J(7,hoe,3,2,"mat-tab",1),O()(),I(8,"mat-dialog-actions")(9,"button",2)(10,"uds-translate"),Y(11,"Ok"),O()()()),2&e&&(N(5),z("ngIf",o.servicesPools),N(1),z("ngIf",o.users),N(1),z("ngIf",o.groups))},dependencies:[en,hi,jo,ar,Wi,or,qo,mo,Ja,Pn,Ni],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})();function voe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function _oe(i,a){if(1&i&&pe(0,"uds-information",16),2&i){const e=X(2);z("value",e.authenticator)("gui",e.gui)}}function yoe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Users"),O())}function boe(i,a){if(1&i){const e=Ee();I(0,"uds-table",17),Q("loaded",function(d){return le(e),oe(X(2).onLoad(d))})("newAction",function(d){return le(e),oe(X(2).onNewUser(d))})("editAction",function(d){return le(e),oe(X(2).onEditUser(d))})("deleteAction",function(d){return le(e),oe(X(2).onDeleteUser(d))})("customButtonAction",function(d){return le(e),oe(X(2).onUserCustom(d))}),O()}if(2&i){const e=X(2);z("rest",e.users)("multiSelect",!0)("allowExport",!0)("tableId","authenticators-d-users"+e.authenticator.id)("customButtons",e.usersCustomButtons)("pageSize",e.api.config.admin.page_size)}}function woe(i,a){if(1&i){const e=Ee();I(0,"uds-table",18),Q("loaded",function(d){return le(e),oe(X(2).onLoad(d))})("editAction",function(d){return le(e),oe(X(2).onEditUser(d))})("deleteAction",function(d){return le(e),oe(X(2).onDeleteUser(d))})("customButtonAction",function(d){return le(e),oe(X(2).onUserCustom(d))}),O()}if(2&i){const e=X(2);z("rest",e.users)("multiSelect",!0)("allowExport",!0)("tableId","authenticators-d-users"+e.authenticator.id)("customButtons",e.customButtons)("pageSize",e.api.config.admin.page_size)}}function xoe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function Coe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function Soe(i,a){if(1&i){const e=Ee();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),Q("selectedIndexChange",function(d){return le(e),oe(X().selectedTab=d)}),I(3,"mat-tab"),J(4,voe,2,0,"ng-template",9),I(5,"div",10),J(6,_oe,1,2,"uds-information",11),O()(),I(7,"mat-tab"),J(8,yoe,2,0,"ng-template",9),I(9,"div",10),J(10,boe,1,6,"uds-table",12),J(11,woe,1,6,"uds-table",13),O()(),I(12,"mat-tab"),J(13,xoe,2,0,"ng-template",9),I(14,"div",10)(15,"uds-table",14),Q("loaded",function(d){return le(e),oe(X().onLoad(d))})("newAction",function(d){return le(e),oe(X().onNewGroup(d))})("editAction",function(d){return le(e),oe(X().onEditGroup(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteGroup(d))})("customButtonAction",function(d){return le(e),oe(X().onGroupInformation(d))}),O()()(),I(16,"mat-tab"),J(17,Coe,2,0,"ng-template",9),I(18,"div",10),pe(19,"uds-logs-table",15),O()()()()()}if(2&i){const e=X();N(2),z("selectedIndex",e.selectedTab)("@.disabled",!0),N(4),z("ngIf",e.authenticator&&e.gui),N(4),z("ngIf",e.authenticator.type_info.canCreateUsers),N(1),z("ngIf",!e.authenticator.type_info.canCreateUsers),N(4),z("rest",e.groups)("multiSelect",!0)("allowExport",!0)("customButtons",e.customButtons)("tableId","authenticators-d-groups"+e.authenticator.id)("pageSize",e.api.config.admin.page_size),N(4),z("rest",e.rest.authenticators)("itemId",e.authenticator.id)("tableId","authenticators-d-log"+e.authenticator.id)}}const Doe=function(i){return["/authenticators",i]};let EY=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.customButtons=[{id:"info",html:'info '+django.gettext("Information")+"",type:ri.ONLY_MENU}],this.usersCustomButtons=[{id:"info",html:'info '+django.gettext("Information")+"",type:ri.ONLY_MENU},{id:"clean-related",html:'clear_all '+django.gettext("Clean related (mfa,...)")+"",type:ri.ONLY_MENU}],this.authenticator=null,this.gui=[],this.users={},this.groups={},this.selectedTab=1,this.selectedTab=this.route.snapshot.paramMap.get("group")?2:1}ngOnInit(){const e=this.route.snapshot.paramMap.get("authenticator");e&&(this.users=this.rest.authenticators.detail(e,"users"),this.groups=this.rest.authenticators.detail(e,"groups"),this.rest.authenticators.get(e).then(o=>{this.authenticator=o,this.rest.authenticators.gui(o.type).then(d=>{this.gui=d})}))}onLoad(e){if(!0===e.param){const o=this.route.snapshot.paramMap.get("user"),d=this.route.snapshot.paramMap.get("group");e.table.selectElement("id",o||d)}}processElement(e){e.maintenance_state=e.maintenance_mode?django.gettext("In Maintenance"):django.gettext("Active")}onNewUser(e){aee.launch(this.api,this.authenticator).subscribe(o=>e.table.overview())}onEditUser(e){aee.launch(this.api,this.authenticator,e.table.selection.selected[0]).subscribe(o=>e.table.overview())}onDeleteUser(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete user"))}onNewGroup(e){oee.launch(this.api,this.authenticator,e.param.type).subscribe(o=>e.table.overview())}onEditGroup(e){oee.launch(this.api,this.authenticator,e.param.type,e.table.selection.selected[0]).subscribe(o=>e.table.overview())}onDeleteGroup(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete group"))}onUserCustom(e){var o=this;"info"===e.param.id?ooe.launch(this.api,this.users,e.table.selection.selected[0]):"clean-related"===e.param.id&&this.api.gui.questionDialog(django.gettext("Clean data"),django.gettext("Clean related data (mfa, ...)?"),!0).then(d=>Qe(function*(){d&&(yield o.users.invoke(e.table.selection.selected[0].id+"/cleanRelated"),o.api.gui.snackbar.open(django.gettext("Related data cleaned"),django.gettext("dismiss"),{duration:2e3}),e.table.overview())}))}onGroupInformation(e){goe.launch(this.api,this.groups,e.table.selection.selected[0])}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-authenticators-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","newAction","editAction","deleteAction","customButtonAction",4,"ngIf"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","editAction","deleteAction","customButtonAction",4,"ngIf"],["icon","groups",3,"rest","multiSelect","allowExport","customButtons","tableId","pageSize","loaded","newAction","editAction","deleteAction","customButtonAction"],[3,"rest","itemId","tableId"],[3,"value","gui"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","newAction","editAction","deleteAction","customButtonAction"],["icon","users",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","loaded","editAction","deleteAction","customButtonAction"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),pe(6,"img",4),Y(7),O(),J(8,Soe,20,14,"div",5),O()),2&e&&(N(2),z("routerLink",du(4,Doe,o.authenticator?o.authenticator.id:"")),N(4),z("src",o.api.staticURL("admin/img/icons/services.png"),Kt),N(1),Ie(" \xa0",null==o.authenticator?null:o.authenticator.name," "),N(1),z("ngIf",o.authenticator))},dependencies:[en,Is,qo,mo,Ja,Pn,Ni,N1,az]}),i})(),see=(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){this.route.snapshot.paramMap.get("osmanager")}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New OS Manager"),!1)}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit OS Manager"),!1)}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete OS Manager"))}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("osmanager"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-osmanagers"]],decls:2,vars:5,consts:[["icon","osmanagers",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("loaded",function(h){return o.onLoad(h)}),O()()),2&e&&(N(1),z("rest",o.rest.osManagers)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni]}),i})(),lee=(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){this.route.snapshot.paramMap.get("transport")}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New Transport"))}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit Transport"))}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete Transport"))}processElement(e){try{e.allowed_oss=e.allowed_oss.map(o=>o.id).join(", ")}catch{e.allowed_oss=""}}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("transport"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-transports"]],decls:2,vars:7,consts:[["icon","transports",3,"rest","multiSelect","allowExport","hasPermissions","newGrouped","onItem","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("loaded",function(h){return o.onLoad(h)}),O()()),2&e&&(N(1),z("rest",o.rest.transports)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("newGrouped",!0)("onItem",o.processElement)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni],styles:[".mat-column-priority{max-width:7rem;justify-content:center}"]}),i})(),cee=(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){this.route.snapshot.paramMap.get("network")}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New Network"),!1)}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit Network"),!1)}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete Network"))}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("network"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-networks"]],decls:2,vars:5,consts:[["icon","networks",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("loaded",function(h){return o.onLoad(h)}),O()()),2&e&&(N(1),z("rest",o.rest.networks)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni]}),i})(),dee=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.customButtons=[eo.getGotoButton(Y3,"provider_id"),eo.getGotoButton(D1,"provider_id","service_id"),eo.getGotoButton(Z3,"osmanager_id"),eo.getGotoButton(LE,"pool_group_id")],this.editing=!1}ngOnInit(){return Qe(function*(){})()}onChange(e){var o=this;return Qe(function*(){const d=["initial_srvs","cache_l1_srvs","max_srvs"];if(null===e.on||"service_id"===e.on.field.name){if(""===e.all.service_id.value){e.all.osmanager_id.gui.values=[];for(const _ of d)e.all[_].gui.rdonly=!0;return void(e.all.cache_l2_srvs.gui.rdonly=!0)}const h=yield o.rest.providers.service(e.all.service_id.value);if(e.all.allow_users_reset.gui.rdonly=!h.info.can_reset,e.all.osmanager_id.gui.values=[],o.editing||(e.all.osmanager_id.gui.rdonly=!h.info.needs_manager),!0===h.info.needs_manager){const _=yield o.rest.osManagers.overview(),w=[];for(const D of _)for(const k of D.servicesTypes)h.info.servicesTypeProvided.includes(k)&&w.push({id:D.id,text:D.name});e.all.osmanager_id.value=w.length>0?e.all.osmanager_id.value||w[0].id:"",e.all.osmanager_id.gui.values=w}else e.all.osmanager_id.gui.values=[{id:"",text:django.gettext("(This service does not requires an OS Manager)")}],e.all.osmanager_id.value="";for(const _ of d)e.all[_].gui.rdonly=!h.info.uses_cache;e.all.cache_l2_srvs.gui.rdonly=!1===h.info.uses_cache||!1===h.info.uses_cache_l2,e.all.publish_on_save&&(e.all.publish_on_save.gui.rdonly=!h.info.needs_publication)}})()}onNew(e){var o=this;return Qe(function*(){o.editing=!1,yield o.api.gui.forms.typedNewForm(e,django.gettext("New service Pool"),!1,[{name:"publish_on_save",value:!0,gui:{label:django.gettext("Publish on creation"),tooltip:django.gettext("If selected, will initiate the publication inmediatly after creation"),type:$o.CHECKBOX,order:150,defvalue:"true"}}],o.onChange.bind(o))})()}onEdit(e){var o=this;return Qe(function*(){return o.editing=!0,o.api.gui.forms.typedEditForm(e,django.gettext("Edit Service Pool"),!1,void 0,o.onChange.bind(o))})()}onDelete(e){var o=this;return Qe(function*(){return o.api.gui.forms.deleteForm(e,django.gettext("Delete service pool"))})()}processElement(e){e.visible=this.api.boolAsHumanString(e.visible),e.show_transports=this.api.boolAsHumanString(e.show_transports),e.restrained?(e.name='warning '+this.api.gui.icon(e.info.icon)+e.name,e.state="T"):(e.name=this.api.gui.icon(e.info.icon)+e.name,e.meta_member.length>0&&(e.state="V")),e.name=this.api.safeString(e.name),e.pool_group_name=this.api.safeString(this.api.gui.icon(e.pool_group_thumb)+e.pool_group_name)}onDetail(e){this.api.navigation.gotoServicePoolDetail(e.param.id)}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("pool"))}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools"]],decls:1,vars:7,consts:[["icon","pools",3,"rest","multiSelect","allowExport","hasPermissions","onItem","customButtons","pageSize","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(e,o){1&e&&(I(0,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("detailAction",function(h){return o.onDetail(h)})("loaded",function(h){return o.onLoad(h)}),O()),2&e&&z("rest",o.rest.servicesPools)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("onItem",o.processElement)("customButtons",o.customButtons)("pageSize",o.api.config.admin.page_size)},dependencies:[Ni],styles:[".mat-column-user_services_count, .mat-column-user_services_in_preparation, .mat-column-visible, .mat-column-state, .mat-column-usage{max-width:7rem;justify-content:center} .mat-column-show_transports{max-width:10rem;justify-content:center} .mat-column-pool_group_name{max-width:12rem} .row-state-T>.mat-mdc-cell{color:#d65014!important}"]}),i})();function Moe(i,a){if(1&i&&(I(0,"mat-option",8),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function Toe(i,a){if(1&i&&(I(0,"mat-option",8),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}let uee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.done=new dl,this.auths=[],this.users=[],this.userFilter="",this.authId="",this.userId="",this.userService=h.userService,this.userServices=h.userServices}static launch(e,o,d){const h=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{userService:o,userServices:d},disableClose:!1}).componentInstance.done}ngOnInit(){var e=this;return Qe(function*(){e.authId=e.userService.owner_info.auth_id||"",e.userId=e.userService.owner_info.user_id||"",e.auths=yield e.rest.authenticators.summary(),e.authChanged()})()}changeAuth(e){this.userId="",this.authChanged()}filteredUsers(){if(!this.userFilter)return this.users;const e=new Array;return this.users.forEach(o=>{(""===this.userFilter||o.name.toLocaleLowerCase().includes(this.userFilter.toLocaleLowerCase()))&&e.push(o)}),e}save(){""!==this.userId&&""!==this.authId?this.userServices.save({id:this.userService.id,auth_id:this.authId,user_id:this.userId}).then(()=>{this.dialogRef.close(),this.done.resolve(!0)}):this.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid user"))}cancel(){this.dialogRef.close(),this.done.resolve(!1)}authChanged(){var e=this;return Qe(function*(){e.users=e.authId?yield e.rest.authenticators.detail(e.authId,"users").summary():[]})()}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-change-assigned-service-owner"]],decls:25,vars:5,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange","selectionChange"],[3,"value",4,"ngFor","ngForOf"],[3,"ngModel","ngModelChange"],[3,"options","changed"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Change owner of assigned service"),O()(),I(3,"mat-dialog-content")(4,"div",1)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Authenticator"),O()(),I(9,"mat-select",2),Q("ngModelChange",function(h){return o.authId=h})("selectionChange",function(h){return o.changeAuth(h)}),J(10,Moe,2,2,"mat-option",3),O()(),I(11,"mat-form-field")(12,"mat-label")(13,"uds-translate"),Y(14,"User"),O()(),I(15,"mat-select",4),Q("ngModelChange",function(h){return o.userId=h}),I(16,"uds-cond-select-search",5),Q("changed",function(h){return o.userFilter=h}),O(),J(17,Toe,2,2,"mat-option",3),O()()()(),I(18,"mat-dialog-actions")(19,"button",6),Q("click",function(){return o.cancel()}),I(20,"uds-translate"),Y(21,"Cancel"),O()(),I(22,"button",7),Q("click",function(){return o.save()}),I(23,"uds-translate"),Y(24,"Ok"),O()()()),2&e&&(N(9),z("ngModel",o.authId),N(1),z("ngForOf",o.auths),N(5),z("ngModel",o.userId),N(1),z("options",o.users),N(1),z("ngForOf",o.filteredUsers()))},dependencies:[Mn,Jn,zn,hi,ar,Wi,or,ei,fi,ma,$i,Pn,Dd],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})();function Aoe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New access rule for"),O())}function koe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Edit access rule for"),O())}function Eoe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Default fallback access for"),O())}function Ioe(i,a){if(1&i&&(I(0,"mat-option",11),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function Poe(i,a){if(1&i){const e=Ee();vn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Priority"),O()(),I(5,"input",8),Q("ngModelChange",function(d){return le(e),oe(X().accessRule.priority=d)}),O()(),I(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Calendar"),O()(),I(10,"mat-select",3),Q("ngModelChange",function(d){return le(e),oe(X().accessRule.calendarId=d)}),I(11,"uds-cond-select-search",9),Q("changed",function(d){return le(e),oe(X().calendarsFilter=d)}),O(),J(12,Ioe,2,2,"mat-option",10),O()(),wn()}if(2&i){const e=X();N(5),z("ngModel",e.accessRule.priority),N(5),z("ngModel",e.accessRule.calendarId),N(1),z("options",e.calendars),N(1),z("ngForOf",e.filtered(e.calendars,e.calendarsFilter))}}let sz=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.onSave=new we(!0),this.calendars=[],this.calendarsFilter="",this.pool=h.pool,this.model=h.model,this.accessRule={id:void 0,priority:0,access:"ALLOW",calendarId:""},h.accessRule&&(this.accessRule.id=h.accessRule.id)}static launch(e,o,d,h){const _=window.innerWidth<800?"80%":"60%";return e.gui.dialog.open(i,{width:_,position:{top:window.innerWidth<800?"0px":"7rem"},data:{pool:o,model:d,accessRule:h},disableClose:!1}).componentInstance.onSave}ngOnInit(){this.rest.calendars.summary().then(e=>{this.calendars=e}),void 0!==this.accessRule.id&&-1!==this.accessRule.id?this.model.get(this.accessRule.id).then(e=>{this.accessRule=e}):-1===this.accessRule.id&&this.model.parentModel.getFallbackAccess(this.pool.id).then(e=>this.accessRule.access=e)}filtered(e,o){return o?e.filter(d=>d.name.toLocaleLowerCase().includes(o.toLocaleLowerCase())):e}save(){const e=()=>{this.dialogRef.close(),this.onSave.emit(!0)};-1!==this.accessRule.id?this.model.save(this.accessRule).then(e):this.model.parentModel.setFallbackAccess(this.pool.id,this.accessRule.access).then(e)}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-access-calendars"]],decls:24,vars:6,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],[3,"ngModel","ngModelChange"],["value","ALLOW"],["value","DENY"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],["matInput","","type","number",3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(e,o){1&e&&(I(0,"h4",0),J(1,Aoe,2,0,"uds-translate",1),J(2,koe,2,0,"uds-translate",1),J(3,Eoe,2,0,"uds-translate",1),Y(4),O(),I(5,"mat-dialog-content")(6,"div",2),J(7,Poe,13,4,"ng-container",1),I(8,"mat-form-field")(9,"mat-label")(10,"uds-translate"),Y(11,"Action"),O()(),I(12,"mat-select",3),Q("ngModelChange",function(h){return o.accessRule.access=h}),I(13,"mat-option",4),Y(14," ALLOW "),O(),I(15,"mat-option",5),Y(16," DENY "),O()()()()(),I(17,"mat-dialog-actions")(18,"button",6)(19,"uds-translate"),Y(20,"Cancel"),O()(),I(21,"button",7),Q("click",function(){return o.save()}),I(22,"uds-translate"),Y(23,"Ok"),O()()()),2&e&&(N(1),z("ngIf",void 0===o.accessRule.id),N(1),z("ngIf",void 0!==o.accessRule.id&&-1!==o.accessRule.id),N(1),z("ngIf",-1===o.accessRule.id),N(1),Ie(" ",o.pool.name,"\n"),N(3),z("ngIf",-1!==o.accessRule.id),N(5),z("ngModel",o.accessRule.access))},dependencies:[Mn,en,sr,qf,Jn,zn,hi,jo,ar,Wi,or,ei,fi,ga,ma,$i,Pn,Dd],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})();function Roe(i,a){if(1&i&&(I(0,"mat-option",8),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function Ooe(i,a){if(1&i&&(vn(0),Y(1),wn()),2&i){const e=X().$implicit;N(1),Ie(" (",e.comments,")")}}function Loe(i,a){if(1&i&&(I(0,"mat-option",8),Y(1),J(2,Ooe,2,1,"ng-container",9),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name,""),N(1),z("ngIf",e.comments)}}let hee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.done=new dl,this.model={},this.auths=[],this.authFilter="",this.groups=[],this.groupFilter="",this.authId="",this.groupId="",this.pool=h.pool,this.model=h.model}static launch(e,o,d){const h=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{pool:o,model:d},disableClose:!1}).componentInstance.done}ngOnInit(){var e=this;return Qe(function*(){e.auths=yield e.rest.authenticators.summary()})()}changeAuth(e){var o=this;return Qe(function*(){o.groupId="",o.authChanged()})()}filteredGroups(){return!this.groupFilter||this.groupFilter.length<3?this.groups:this.groups.filter(e=>(e.name+e.comments).toLocaleLowerCase().includes(this.groupFilter.toLocaleLowerCase()))}filteredAuths(){return!this.authFilter||this.authFilter.length<3?this.auths:this.auths.filter(e=>e.name.toLocaleLowerCase().includes(this.authFilter.toLocaleLowerCase()))}save(){var e=this;return Qe(function*(){""!==e.groupId&&""!==e.authId?(yield e.model.create({id:e.groupId}),e.dialogRef.close(),e.done.resolve(!0)):e.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid group"))})()}cancel(){var e=this;return Qe(function*(){e.dialogRef.close(),e.done.resolve(!1)})()}authChanged(){var e=this;return Qe(function*(){e.groups=e.authId?yield e.rest.authenticators.detail(e.authId,"groups").summary():[]})()}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-add-group"]],decls:27,vars:7,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange","selectionChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"ngModel","ngModelChange"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"],[4,"ngIf"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"New group for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"div",1)(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Authenticator"),O()(),I(10,"mat-select",2),Q("ngModelChange",function(h){return o.authId=h})("selectionChange",function(h){return o.changeAuth(h)}),I(11,"uds-cond-select-search",3),Q("changed",function(h){return o.authFilter=h}),O(),J(12,Roe,2,2,"mat-option",4),O()(),I(13,"mat-form-field")(14,"mat-label")(15,"uds-translate"),Y(16,"Group"),O()(),I(17,"mat-select",5),Q("ngModelChange",function(h){return o.groupId=h}),I(18,"uds-cond-select-search",3),Q("changed",function(h){return o.groupFilter=h}),O(),J(19,Loe,3,3,"mat-option",4),O()()()(),I(20,"mat-dialog-actions")(21,"button",6),Q("click",function(){return o.cancel()}),I(22,"uds-translate"),Y(23,"Cancel"),O()(),I(24,"button",7),Q("click",function(){return o.save()}),I(25,"uds-translate"),Y(26,"Ok"),O()()()),2&e&&(N(3),Ie(" ",o.pool.name,""),N(7),z("ngModel",o.authId),N(1),z("options",o.auths),N(1),z("ngForOf",o.filteredAuths()),N(5),z("ngModel",o.groupId),N(1),z("options",o.groups),N(1),z("ngForOf",o.filteredGroups()))},dependencies:[Mn,en,Jn,zn,hi,ar,Wi,or,ei,fi,ma,$i,Pn,Dd],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})();function Foe(i,a){if(1&i&&(vn(0),Y(1),wn()),2&i){const e=X().$implicit;N(1),Ie(" (",e.comments,")")}}function Noe(i,a){if(1&i&&(I(0,"mat-option",7),Y(1),J(2,Foe,2,1,"ng-container",8),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name,""),N(1),z("ngIf",e.comments)}}let Boe=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.done=new dl,this.transports=[],this.transportsFilter="",this.transportId="",this.servicePool=h.servicePool}static launch(e,o){const d=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:o},disableClose:!1}).componentInstance.done}ngOnInit(){var e=this;return Qe(function*(){e.transports=(yield e.rest.transports.summary()).filter(o=>e.servicePool.info.allowedProtocols.includes(o.protocol))})()}filteredTransports(){return this.transportsFilter?this.transports.filter(e=>e.name.toLocaleLowerCase().includes(this.transportsFilter.toLocaleLowerCase())):this.transports}save(){var e=this;return Qe(function*(){""!==e.transportId?(yield e.rest.servicesPools.detail(e.servicePool.id,"transports").create({id:e.transportId}),e.done.resolve(!0),e.dialogRef.close()):e.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid transport"))})()}cancel(){var e=this;return Qe(function*(){e.done.resolve(!1),e.dialogRef.close()})()}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-add-transport"]],decls:20,vars:4,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"],[4,"ngIf"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"New transport for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"div",1)(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Transport"),O()(),I(10,"mat-select",2),Q("ngModelChange",function(h){return o.transportId=h}),I(11,"uds-cond-select-search",3),Q("changed",function(h){return o.transportsFilter=h}),O(),J(12,Noe,3,3,"mat-option",4),O()()()(),I(13,"mat-dialog-actions")(14,"button",5),Q("click",function(){return o.cancel()}),I(15,"uds-translate"),Y(16,"Cancel"),O()(),I(17,"button",6),Q("click",function(){return o.save()}),I(18,"uds-translate"),Y(19,"Ok"),O()()()),2&e&&(N(3),Ie(" ",o.servicePool.name,""),N(7),z("ngModel",o.transportId),N(1),z("options",o.transports),N(1),z("ngForOf",o.filteredTransports()))},dependencies:[Mn,en,Jn,zn,hi,ar,Wi,or,ei,fi,ma,$i,Pn,Dd],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})(),Voe=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.done=new dl,this.reason="",this.servicePool=h.servicePool}static launch(e,o){const d=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:o},disableClose:!1}).componentInstance.done}ngOnInit(){}save(){this.rest.servicesPools.detail(this.servicePool.id,"publications").invoke("publish","changelog="+encodeURIComponent(this.reason)).then(()=>{this.dialogRef.close(),this.done.resolve(!0)})}cancel(){this.dialogRef.close(),this.done.resolve(!1)}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-new-publication"]],decls:18,vars:2,consts:[["mat-dialog-title",""],[1,"content"],["matInput","","type","text",3,"ngModel","ngModelChange"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"New publication for"),O(),Y(3),O(),I(4,"mat-dialog-content")(5,"div",1)(6,"mat-form-field")(7,"mat-label")(8,"uds-translate"),Y(9,"Comments"),O()(),I(10,"input",2),Q("ngModelChange",function(h){return o.reason=h}),O()()()(),I(11,"mat-dialog-actions")(12,"button",3),Q("click",function(){return o.cancel()}),I(13,"uds-translate"),Y(14,"Cancel"),O()(),I(15,"button",4),Q("click",function(){return o.save()}),I(16,"uds-translate"),Y(17,"Ok"),O()()()),2&e&&(N(3),Ie(" ",o.servicePool.name,"\n"),N(7),z("ngModel",o.reason))},dependencies:[sr,Jn,zn,hi,ar,Wi,or,ei,fi,ga,Pn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})(),zoe=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.onSave=new we(!0),this.changeLogPubs={},this.servicePool=h.servicePool}static launch(e,o){const d=window.innerWidth<800?"80%":"60%";e.gui.dialog.open(i,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:o},disableClose:!1})}ngOnInit(){this.changeLogPubs=this.rest.servicesPools.detail(this.servicePool.id,"changelog")}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-publications-changelog"]],decls:11,vars:4,consts:[["mat-dialog-title",""],["icon","publications",3,"rest","allowExport","tableId"],["changeLog",""],["mat-raised-button","","color","primary","mat-dialog-close",""]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Changelog of"),O(),Y(3),O(),I(4,"mat-dialog-content"),pe(5,"uds-table",1,2),O(),I(7,"mat-dialog-actions")(8,"button",3)(9,"uds-translate"),Y(10,"Ok"),O()()()),2&e&&(N(3),Ie(" ",o.servicePool.name,"\n"),N(2),z("rest",o.changeLogPubs)("allowExport",!0)("tableId","servicePools-d-changelog"+o.servicePool.id))},dependencies:[hi,jo,ar,Wi,or,Pn,Ni],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})();const Hoe=["switch"],Goe=["*"],Uoe=new be("mat-slide-toggle-default-options",{providedIn:"root",factory:()=>({disableToggleValue:!1})}),joe={provide:pa,useExisting:bn(()=>pI),multi:!0};class fee{constructor(a,e){this.source=a,this.checked=e}}let $oe=0;const Woe=gd(Fs(oc(Uo(class{constructor(i){this._elementRef=i}}))));let Yoe=(()=>{class i extends Woe{get required(){return this._required}set required(e){this._required=Ge(e)}get checked(){return this._checked}set checked(e){this._checked=Ge(e),this._changeDetectorRef.markForCheck()}get inputId(){return`${this.id||this._uniqueId}-input`}constructor(e,o,d,h,_,w,D){super(e),this._focusMonitor=o,this._changeDetectorRef=d,this.defaults=_,this._onChange=k=>{},this._onTouched=()=>{},this._required=!1,this._checked=!1,this.name=null,this.labelPosition="after",this.ariaLabel=null,this.ariaLabelledby=null,this.change=new we,this.toggleChange=new we,this.tabIndex=parseInt(h)||0,this.color=this.defaultColor=_.color||"accent",this._noopAnimations="NoopAnimations"===w,this.id=this._uniqueId=`${D}${++$oe}`}ngAfterContentInit(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{"keyboard"===e||"program"===e?(this._focused=!0,this._changeDetectorRef.markForCheck()):e||Promise.resolve().then(()=>{this._focused=!1,this._onTouched(),this._changeDetectorRef.markForCheck()})})}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}writeValue(e){this.checked=!!e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this._changeDetectorRef.markForCheck()}toggle(){this.checked=!this.checked,this._onChange(this.checked)}_emitChangeEvent(){this._onChange(this.checked),this.change.emit(this._createChangeEvent(this.checked))}}return i.\u0275fac=function(e){Js()},i.\u0275dir=me({type:i,inputs:{name:"name",id:"id",labelPosition:"labelPosition",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],required:"required",checked:"checked"},outputs:{change:"change",toggleChange:"toggleChange"},features:[Se]}),i})(),pI=(()=>{class i extends Yoe{get buttonId(){return`${this.id||this._uniqueId}-button`}constructor(e,o,d,h,_,w){super(e,o,d,h,_,w,"mat-mdc-slide-toggle-"),this._labelId=this._uniqueId+"-label"}_handleClick(){this.toggleChange.emit(),this.defaults.disableToggleValue||(this.checked=!this.checked,this._onChange(this.checked),this.change.emit(new fee(this,this.checked)))}focus(){this._switchElement.nativeElement.focus()}_createChangeEvent(e){return new fee(this,e)}_getAriaLabelledBy(){return this.ariaLabelledby?this.ariaLabelledby:this.ariaLabel?null:this._labelId}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Go),F(Jt),Co("tabindex"),F(Uoe),F(Ei,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-slide-toggle"]],viewQuery:function(e,o){if(1&e&&ct(Hoe,5),2&e){let d;Pe(d=Ae())&&(o._switchElement=d.first)}},hostAttrs:[1,"mat-mdc-slide-toggle"],hostVars:11,hostBindings:function(e,o){2&e&&(la("id",o.id),Ve("tabindex",null)("aria-label",null)("name",null)("aria-labelledby",null),st("mat-mdc-slide-toggle-focused",o._focused)("mat-mdc-slide-toggle-checked",o.checked)("_mat-animation-noopable",o._noopAnimations))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matSlideToggle"],features:[Ue([joe]),Se],ngContentSelectors:Goe,decls:17,vars:24,consts:[[1,"mdc-form-field"],["role","switch","type","button",1,"mdc-switch",3,"tabIndex","disabled","click"],["switch",""],[1,"mdc-switch__track"],[1,"mdc-switch__handle-track"],[1,"mdc-switch__handle"],[1,"mdc-switch__shadow"],[1,"mdc-elevation-overlay"],[1,"mdc-switch__ripple"],["mat-ripple","",1,"mat-mdc-slide-toggle-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[1,"mdc-switch__icons"],["viewBox","0 0 24 24",1,"mdc-switch__icon","mdc-switch__icon--on"],["d","M19.69,5.23L8.96,15.96l-4.23-4.23L2.96,13.5l6,6L21.46,7L19.69,5.23z"],["viewBox","0 0 24 24",1,"mdc-switch__icon","mdc-switch__icon--off"],["d","M20 13H4v-2h16v2z"],[3,"for","click"]],template:function(e,o){if(1&e&&(On(),I(0,"div",0)(1,"button",1,2),Q("click",function(){return o._handleClick()}),pe(3,"div",3),I(4,"div",4)(5,"div",5)(6,"div",6),pe(7,"div",7),O(),I(8,"div",8),pe(9,"div",9),O(),I(10,"div",10),Wr(),I(11,"svg",11),pe(12,"path",12),O(),I(13,"svg",13),pe(14,"path",14),O()()()()(),xc(),I(15,"label",15),Q("click",function(h){return h.stopPropagation()}),ut(16),O()()),2&e){const d=on(2);st("mdc-form-field--align-end","before"==o.labelPosition),N(1),st("mdc-switch--selected",o.checked)("mdc-switch--unselected",!o.checked)("mdc-switch--checked",o.checked)("mdc-switch--disabled",o.disabled),z("tabIndex",o.tabIndex)("disabled",o.disabled),Ve("id",o.buttonId)("name",o.name)("aria-label",o.ariaLabel)("aria-labelledby",o._getAriaLabelledBy())("aria-describedby",o.ariaDescribedby)("aria-required",o.required||null)("aria-checked",o.checked),N(8),z("matRippleTrigger",d)("matRippleDisabled",o.disableRipple||o.disabled)("matRippleCentered",!0),N(6),z("for",o.buttonId),Ve("id",o._labelId)}},dependencies:[fa],styles:['.mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1);background-color:var(--mdc-elevation-overlay-color, #fff)}.mdc-switch{align-items:center;background:none;border:none;cursor:pointer;display:inline-flex;flex-shrink:0;margin:0;outline:none;overflow:visible;padding:0;position:relative}.mdc-switch[hidden]{display:none}.mdc-switch:disabled{cursor:default;pointer-events:none}.mdc-switch__track{overflow:hidden;position:relative;width:100%}.mdc-switch__track::before,.mdc-switch__track::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";height:100%;left:0;position:absolute;width:100%}@media screen and (forced-colors: active){.mdc-switch__track::before,.mdc-switch__track::after{border-color:currentColor}}.mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(-100%)}[dir=rtl] .mdc-switch__track::after,.mdc-switch__track[dir=rtl]::after{transform:translateX(100%)}.mdc-switch--selected .mdc-switch__track::before{transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.6, 1);transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__track::before,.mdc-switch--selected .mdc-switch__track[dir=rtl]::before{transform:translateX(-100%)}.mdc-switch--selected .mdc-switch__track::after{transition:transform 75ms 0ms cubic-bezier(0, 0, 0.2, 1);transform:translateX(0)}.mdc-switch__handle-track{height:100%;pointer-events:none;position:absolute;top:0;transition:transform 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);left:0;right:auto;transform:translateX(0)}[dir=rtl] .mdc-switch__handle-track,.mdc-switch__handle-track[dir=rtl]{left:auto;right:0}.mdc-switch--selected .mdc-switch__handle-track{transform:translateX(100%)}[dir=rtl] .mdc-switch--selected .mdc-switch__handle-track,.mdc-switch--selected .mdc-switch__handle-track[dir=rtl]{transform:translateX(-100%)}.mdc-switch__handle{display:flex;pointer-events:auto;position:absolute;top:50%;transform:translateY(-50%);left:0;right:auto}[dir=rtl] .mdc-switch__handle,.mdc-switch__handle[dir=rtl]{left:auto;right:0}.mdc-switch__handle::before,.mdc-switch__handle::after{border:1px solid rgba(0,0,0,0);border-radius:inherit;box-sizing:border-box;content:"";width:100%;height:100%;left:0;position:absolute;top:0;transition:background-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1),border-color 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);z-index:-1}@media screen and (forced-colors: active){.mdc-switch__handle::before,.mdc-switch__handle::after{border-color:currentColor}}.mdc-switch__shadow{border-radius:inherit;bottom:0;left:0;position:absolute;right:0;top:0}.mdc-elevation-overlay{bottom:0;left:0;right:0;top:0}.mdc-switch__ripple{left:50%;position:absolute;top:50%;transform:translate(-50%, -50%);z-index:-1}.mdc-switch:disabled .mdc-switch__ripple{display:none}.mdc-switch__icons{height:100%;position:relative;width:100%;z-index:1}.mdc-switch__icon{bottom:0;left:0;margin:auto;position:absolute;right:0;top:0;opacity:0;transition:opacity 30ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-switch--selected .mdc-switch__icon--on,.mdc-switch--unselected .mdc-switch__icon--off{opacity:1;transition:opacity 45ms 30ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle{display:inline-block;-webkit-tap-highlight-color:rgba(0,0,0,0);outline:0}.mat-mdc-slide-toggle .mdc-switch{width:var(--mdc-switch-track-width, 36px)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-selected-handle-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-hover-handle-color, #310077)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-selected-focus-handle-color, #310077)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-selected-pressed-handle-color, #310077)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-selected-handle-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled .mdc-switch__handle::after{background:var(--mdc-switch-unselected-handle-color, #616161)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-hover-handle-color, #212121)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus:not(:active) .mdc-switch__handle::after{background:var(--mdc-switch-unselected-focus-handle-color, #212121)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__handle::after{background:var(--mdc-switch-unselected-pressed-handle-color, #212121)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:disabled .mdc-switch__handle::after{background:var(--mdc-switch-disabled-unselected-handle-color, #424242)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle::before{background:var(--mdc-switch-handle-surface-color, var(--mdc-theme-surface, #fff))}.mat-mdc-slide-toggle .mdc-switch:enabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-handle-elevation, 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-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__shadow{box-shadow:var(--mdc-switch-disabled-handle-elevation, 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-mdc-slide-toggle .mdc-switch .mdc-switch__focus-ring-wrapper,.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle{height:var(--mdc-switch-handle-height, 20px)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__handle::after{opacity:var(--mdc-switch-disabled-handle-opacity, 0.38)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle{border-radius:var(--mdc-switch-handle-shape, 10px)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle{width:var(--mdc-switch-handle-width, 20px)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__handle-track{width:calc(100% - var(--mdc-switch-handle-width, 20px))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled .mdc-switch__icon{fill:var(--mdc-switch-selected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-selected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled .mdc-switch__icon{fill:var(--mdc-switch-unselected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icon{fill:var(--mdc-switch-disabled-unselected-icon-color, var(--mdc-theme-on-primary, #fff))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-selected-icon-opacity, 0.38)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:disabled .mdc-switch__icons{opacity:var(--mdc-switch-disabled-unselected-icon-opacity, 0.38)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected .mdc-switch__icon{width:var(--mdc-switch-selected-icon-size, 18px);height:var(--mdc-switch-selected-icon-size, 18px)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected .mdc-switch__icon{width:var(--mdc-switch-unselected-icon-size, 18px);height:var(--mdc-switch-unselected-icon-size, 18px)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-hover-state-layer-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-focus-state-layer-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-selected-pressed-state-layer-color, var(--mdc-theme-primary, #6200ee))}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus) .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-hover-state-layer-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-focus-state-layer-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active .mdc-switch__ripple::after{background-color:var(--mdc-switch-unselected-pressed-state-layer-color, #424242)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-selected-hover-state-layer-opacity, 0.04)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-selected-focus-state-layer-opacity, 0.12)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-selected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--selected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-selected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus):hover .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:hover:not(:focus).mdc-ripple-surface--hover .mdc-switch__ripple::before{opacity:var(--mdc-switch-unselected-hover-state-layer-opacity, 0.04)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus.mdc-ripple-upgraded--background-focused .mdc-switch__ripple::before,.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:focus:not(.mdc-ripple-upgraded):focus .mdc-switch__ripple::before{transition-duration:75ms;opacity:var(--mdc-switch-unselected-focus-state-layer-opacity, 0.12)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded) .mdc-switch__ripple::after{transition:opacity 150ms linear}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active:not(.mdc-ripple-upgraded):active .mdc-switch__ripple::after{transition-duration:75ms;opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch.mdc-switch--unselected:enabled:active.mdc-ripple-upgraded{--mdc-ripple-fg-opacity:var(--mdc-switch-unselected-pressed-state-layer-opacity, 0.1)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__ripple{height:var(--mdc-switch-state-layer-size, 48px);width:var(--mdc-switch-state-layer-size, 48px)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__track{height:var(--mdc-switch-track-height, 14px)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__track{opacity:var(--mdc-switch-disabled-track-opacity, 0.12)}.mat-mdc-slide-toggle .mdc-switch:enabled .mdc-switch__track::after{background:var(--mdc-switch-selected-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-hover-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:enabled:focus:not(:active) .mdc-switch__track::after{background:var(--mdc-switch-selected-focus-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:enabled:active .mdc-switch__track::after{background:var(--mdc-switch-selected-pressed-track-color, #d7bbff)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__track::after{background:var(--mdc-switch-disabled-selected-track-color, #424242)}.mat-mdc-slide-toggle .mdc-switch:enabled .mdc-switch__track::before{background:var(--mdc-switch-unselected-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:enabled:hover:not(:focus):not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-hover-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:enabled:focus:not(:active) .mdc-switch__track::before{background:var(--mdc-switch-unselected-focus-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:enabled:active .mdc-switch__track::before{background:var(--mdc-switch-unselected-pressed-track-color, #e0e0e0)}.mat-mdc-slide-toggle .mdc-switch:disabled .mdc-switch__track::before{background:var(--mdc-switch-disabled-unselected-track-color, #424242)}.mat-mdc-slide-toggle .mdc-switch .mdc-switch__track{border-radius:var(--mdc-switch-track-shape, 7px)}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple,.mat-mdc-slide-toggle .mdc-switch__ripple::after{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-slide-toggle .mat-mdc-slide-toggle-ripple:not(:empty),.mat-mdc-slide-toggle .mdc-switch__ripple::after:not(:empty){transform:translateZ(0)}.mat-mdc-slide-toggle .mdc-switch__ripple::after{content:"";opacity:0}.mat-mdc-slide-toggle .mdc-switch:hover .mdc-switch__ripple::after{opacity:.04;transition:opacity 75ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mdc-switch .mdc-switch__ripple::after{opacity:.12}.mat-mdc-slide-toggle.mat-mdc-slide-toggle-focused .mat-mdc-focus-indicator::before{content:""}.mat-mdc-slide-toggle .mat-ripple-element{opacity:.12}.mat-mdc-slide-toggle .mat-mdc-focus-indicator::before{border-radius:50%}.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle-track,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-elevation-overlay,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__icon,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__handle::after,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::before,.mat-mdc-slide-toggle._mat-animation-noopable .mdc-switch__track::after{transition:none}'],encapsulation:2,changeDetection:0}),i})();const qoe={provide:Vr,useExisting:bn(()=>pee),multi:!0};let pee=(()=>{class i extends f1{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["mat-slide-toggle","required","","formControlName",""],["mat-slide-toggle","required","","formControl",""],["mat-slide-toggle","required","","ngModel",""]],features:[Ue([qoe]),Se]}),i})(),mee=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})(),Xoe=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[mee,nn,lc,Ri,mee,nn]}),i})();function Zoe(i,a){1&i&&(vn(0),I(1,"uds-translate"),Y(2,"Edit action for"),O(),wn())}function Koe(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New action for"),O())}function Qoe(i,a){if(1&i&&(I(0,"mat-option",13),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function Joe(i,a){if(1&i&&(I(0,"mat-option",13),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.description," ")}}function ese(i,a){if(1&i&&(I(0,"mat-option",13),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function tse(i,a){if(1&i){const e=Ee();vn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Transport"),O()(),I(5,"mat-select",4),Q("ngModelChange",function(d){return le(e),oe(X().paramValue=d)}),I(6,"uds-cond-select-search",5),Q("changed",function(d){return le(e),oe(X().transportsFilter=d)}),O(),J(7,ese,2,2,"mat-option",6),O()(),wn()}if(2&i){const e=X();N(5),z("ngModel",e.paramValue),N(1),z("options",e.transports),N(1),z("ngForOf",e.filtered(e.transports,e.transportsFilter))}}function nse(i,a){if(1&i&&(I(0,"mat-option",13),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function ise(i,a){if(1&i&&(I(0,"mat-option",13),Y(1),O()),2&i){const e=a.$implicit;z("value",X(2).authenticator+"@"+e.id),N(1),Ie(" ",e.name," ")}}function rse(i,a){if(1&i){const e=Ee();vn(0),I(1,"mat-form-field")(2,"mat-label")(3,"uds-translate"),Y(4,"Authenticator"),O()(),I(5,"mat-select",9),Q("ngModelChange",function(d){return le(e),oe(X().authenticator=d)})("valueChange",function(d){return le(e),oe(X().authenticatorChangedTo(d))}),J(6,nse,2,2,"mat-option",6),O()(),I(7,"mat-form-field")(8,"mat-label")(9,"uds-translate"),Y(10,"Group"),O()(),I(11,"mat-select",4),Q("ngModelChange",function(d){return le(e),oe(X().paramValue=d)}),I(12,"uds-cond-select-search",5),Q("changed",function(d){return le(e),oe(X().groupsFilter=d)}),O(),J(13,ise,2,2,"mat-option",6),O()(),wn()}if(2&i){const e=X();N(5),z("ngModel",e.authenticator),N(1),z("ngForOf",e.authenticators),N(5),z("ngModel",e.paramValue),N(1),z("options",e.groups),N(1),z("ngForOf",e.filtered(e.groups,e.groupsFilter))}}function ase(i,a){if(1&i){const e=Ee();vn(0),I(1,"div",14)(2,"span",15),Y(3),O(),Y(4,"\xa0 "),I(5,"mat-slide-toggle",4),Q("ngModelChange",function(d){return le(e),oe(X().paramValue=d)}),O()(),wn()}if(2&i){const e=X();N(3),Sn(e.parameter.description),N(2),z("ngModel",e.paramValue)}}function ose(i,a){if(1&i){const e=Ee();vn(0),I(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",16),Q("ngModelChange",function(d){return le(e),oe(X().paramValue=d)}),O()(),wn()}if(2&i){const e=X();N(3),Ie(" ",e.parameter.description," "),N(1),z("type",e.parameter.type)("ngModel",e.paramValue)}}const sse=function(){return["transport","group","bool"]};let gee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.onSave=new we(!0),this.calendars=[],this.actionList=[],this.authenticators=[],this.transports=[],this.groups=[],this.paramsDict={},this.calendarsFilter="",this.groupsFilter="",this.transportsFilter="",this.authenticator="",this.parameter={},this.paramValue="",this.servicePool=h.servicePool,this.scheduledAction={id:void 0,action:"",calendar:"",calendarId:"",atStart:!0,eventsOffset:0,params:{}},void 0!==h.scheduledAction&&(this.scheduledAction.id=h.scheduledAction.id)}static launch(e,o,d){const h=window.innerWidth<800?"80%":"60%";return e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:o,scheduledAction:d},disableClose:!1}).componentInstance.onSave}ngOnInit(){this.rest.authenticators.summary().then(e=>this.authenticators=e),this.rest.transports.summary().then(e=>this.transports=e),this.rest.calendars.summary().then(e=>this.calendars=e),this.rest.servicesPools.actionsList(this.servicePool.id).then(e=>{this.actionList=e,this.actionList.forEach(o=>{this.paramsDict[o.id]=o.params[0]}),void 0!==this.scheduledAction.id&&this.rest.servicesPools.detail(this.servicePool.id,"actions").get(this.scheduledAction.id).then(o=>{this.scheduledAction=o,this.actionChangedTo(this.scheduledAction.action)})})}filtered(e,o){return o?e.filter(d=>d.name.toLocaleLowerCase().includes(o.toLocaleLowerCase())):e}actionChangedTo(e){if(this.parameter=this.paramsDict[e],void 0!==this.parameter&&(this.paramValue=this.scheduledAction.params[this.parameter.name],void 0===this.paramValue&&(this.paramValue=!1!==this.parameter.default&&(this.parameter.default||"")),"group"===this.parameter.type)){let o=this.paramValue.split("@");2!==o.length&&(o=["",""]),this.authenticator=o[0],this.authenticatorChangedTo(this.authenticator)}}authenticatorChangedTo(e){var o=this;return Qe(function*(){e&&(o.groups=yield o.rest.authenticators.detail(e,"groups").summary())})()}save(){var e=this;return Qe(function*(){e.scheduledAction.params={},e.parameter&&(e.scheduledAction.params[e.parameter.name]=e.paramValue),yield e.rest.servicesPools.detail(e.servicePool.id,"actions").save(e.scheduledAction),e.dialogRef.close(),e.onSave.emit(!0)})()}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-scheduled-action"]],decls:40,vars:15,consts:[["mat-dialog-title",""],[4,"ngIf","ngIfElse"],["editTitle",""],[1,"content"],[3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],["matInput","","type","number",3,"ngModel","ngModelChange"],[1,"toggle"],[3,"ngModel","ngModelChange","valueChange"],[4,"ngIf"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"],[3,"value"],[1,"mat-form-field-infix"],[1,"label"],["matInput","",3,"type","ngModel","ngModelChange"]],template:function(e,o){if(1&e&&(I(0,"h4",0),J(1,Zoe,3,0,"ng-container",1),J(2,Koe,2,0,"ng-template",null,2,Zr),Y(4),O(),I(5,"mat-dialog-content")(6,"div",3)(7,"mat-form-field")(8,"mat-label")(9,"uds-translate"),Y(10,"Calendar"),O()(),I(11,"mat-select",4),Q("ngModelChange",function(h){return o.scheduledAction.calendarId=h}),I(12,"uds-cond-select-search",5),Q("changed",function(h){return o.calendarsFilter=h}),O(),J(13,Qoe,2,2,"mat-option",6),O()(),I(14,"mat-form-field")(15,"mat-label")(16,"uds-translate"),Y(17,"Events offset (minutes)"),O()(),I(18,"input",7),Q("ngModelChange",function(h){return o.scheduledAction.eventsOffset=h}),O()(),I(19,"div",8)(20,"mat-slide-toggle",4),Q("ngModelChange",function(h){return o.scheduledAction.atStart=h}),I(21,"uds-translate"),Y(22,"At the beginning of the interval?"),O()()(),I(23,"mat-form-field")(24,"mat-label")(25,"uds-translate"),Y(26,"Action"),O()(),I(27,"mat-select",9),Q("ngModelChange",function(h){return o.scheduledAction.action=h})("valueChange",function(h){return o.actionChangedTo(h)}),J(28,Joe,2,2,"mat-option",6),O()(),J(29,tse,8,3,"ng-container",10),J(30,rse,14,5,"ng-container",10),J(31,ase,6,2,"ng-container",10),J(32,ose,5,3,"ng-container",10),O()(),I(33,"mat-dialog-actions")(34,"button",11)(35,"uds-translate"),Y(36,"Cancel"),O()(),I(37,"button",12),Q("click",function(){return o.save()}),I(38,"uds-translate"),Y(39,"Ok"),O()()()),2&e){const d=on(3);N(1),z("ngIf",void 0!==o.scheduledAction.id)("ngIfElse",d),N(3),Ie(" ",o.servicePool.name,"\n"),N(7),z("ngModel",o.scheduledAction.calendarId),N(1),z("options",o.calendars),N(1),z("ngForOf",o.filtered(o.calendars,o.calendarsFilter)),N(5),z("ngModel",o.scheduledAction.eventsOffset),N(2),z("ngModel",o.scheduledAction.atStart),N(7),z("ngModel",o.scheduledAction.action),N(1),z("ngForOf",o.actionList),N(1),z("ngIf","transport"===(null==o.parameter?null:o.parameter.type)),N(1),z("ngIf","group"===(null==o.parameter?null:o.parameter.type)),N(1),z("ngIf","bool"===(null==o.parameter?null:o.parameter.type)),N(1),z("ngIf",(null==o.parameter?null:o.parameter.type)&&!ww(14,sse).includes(o.parameter.type))}},dependencies:[Mn,en,sr,qf,Jn,zn,hi,jo,ar,Wi,or,ei,fi,ga,ma,$i,pI,Pn,Dd],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})(),IY=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.onSave=new we(!0),this.userService=h.userService,this.model=h.model}static launch(e,o,d){const h=window.innerWidth<800?"80%":"60%";e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{userService:o,model:d},disableClose:!1})}ngOnInit(){}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-userservices-log"]],decls:10,vars:4,consts:[["mat-dialog-title",""],[3,"rest","itemId","tableId"],["mat-raised-button","","color","primary","mat-dialog-close",""]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Logs of"),O(),Y(3),O(),I(4,"mat-dialog-content"),pe(5,"uds-logs-table",1),O(),I(6,"mat-dialog-actions")(7,"button",2)(8,"uds-translate"),Y(9,"Ok"),O()()()),2&e&&(N(3),Ie(" ",o.userService.name,"\n"),N(2),z("rest",o.model)("itemId",o.userService.id)("tableId","servicePools-d-uslog"+o.userService.id))},dependencies:[hi,jo,ar,Wi,or,Pn,N1],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})();function lse(i,a){if(1&i&&(I(0,"mat-option",8),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.text," ")}}function cse(i,a){if(1&i&&(I(0,"mat-option",8),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}function dse(i,a){if(1&i&&(I(0,"mat-option",8),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}let use=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.done=new dl,this.auths=[],this.assignablesServices=[],this.assignablesServicesFilter="",this.users=[],this.userFilter="",this.serviceId="",this.authId="",this.userId="",this.servicePool=h.servicePool}static launch(e,o){const d=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{servicePool:o},disableClose:!1}).componentInstance.done}ngOnInit(){var e=this;return Qe(function*(){e.authId="",e.userId="";const o=yield e.rest.authenticators.summary(),d=yield e.rest.servicesPools.listAssignables(e.servicePool.id);e.auths=o,e.assignablesServices=d})()}changeAuth(e){var o=this;return Qe(function*(){o.userId="",o.authChanged()})()}filteredUsers(){if(!this.userFilter)return this.users;const e=new Array;return this.users.forEach(o=>{o.name.toLocaleLowerCase().includes(this.userFilter.toLocaleLowerCase())&&e.push(o)}),e}filteredAssignables(){if(!this.assignablesServicesFilter)return this.assignablesServices;const e=new Array;return this.assignablesServices.forEach(o=>{o.text.toLocaleLowerCase().includes(this.assignablesServicesFilter.toLocaleLowerCase())&&e.push(o)}),e}save(){var e=this;return Qe(function*(){""!==e.userId&&""!==e.authId?e.rest.servicesPools.createFromAssignable(e.servicePool.id,e.userId,e.serviceId).then(o=>{e.dialogRef.close(),e.done.resolve(!0)}):e.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid user"))})()}cancel(){this.dialogRef.close(),this.done.resolve(!1)}authChanged(){var e=this;return Qe(function*(){e.authId&&(e.users=yield e.rest.authenticators.detail(e.authId,"users").summary())})()}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-assign-service-to-owner"]],decls:32,vars:8,consts:[["mat-dialog-title",""],[1,"content"],[3,"ngModel","ngModelChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"ngModel","ngModelChange","selectionChange"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"value"]],template:function(e,o){1&e&&(I(0,"h4",0)(1,"uds-translate"),Y(2,"Assign service to user manually"),O()(),I(3,"mat-dialog-content")(4,"div",1)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Service"),O()(),I(9,"mat-select",2),Q("ngModelChange",function(h){return o.serviceId=h}),I(10,"uds-cond-select-search",3),Q("changed",function(h){return o.assignablesServicesFilter=h}),O(),J(11,lse,2,2,"mat-option",4),O()(),I(12,"mat-form-field")(13,"mat-label")(14,"uds-translate"),Y(15,"Authenticator"),O()(),I(16,"mat-select",5),Q("ngModelChange",function(h){return o.authId=h})("selectionChange",function(h){return o.changeAuth(h)}),J(17,cse,2,2,"mat-option",4),O()(),I(18,"mat-form-field")(19,"mat-label")(20,"uds-translate"),Y(21,"User"),O()(),I(22,"mat-select",2),Q("ngModelChange",function(h){return o.userId=h}),I(23,"uds-cond-select-search",3),Q("changed",function(h){return o.userFilter=h}),O(),J(24,dse,2,2,"mat-option",4),O()()()(),I(25,"mat-dialog-actions")(26,"button",6),Q("click",function(){return o.cancel()}),I(27,"uds-translate"),Y(28,"Cancel"),O()(),I(29,"button",7),Q("click",function(){return o.save()}),I(30,"uds-translate"),Y(31,"Ok"),O()()()),2&e&&(N(9),z("ngModel",o.serviceId),N(1),z("options",o.assignablesServices),N(1),z("ngForOf",o.filteredAssignables()),N(5),z("ngModel",o.authId),N(1),z("ngForOf",o.auths),N(5),z("ngModel",o.userId),N(1),z("options",o.users),N(1),z("ngForOf",o.filteredUsers()))},dependencies:[Mn,Jn,zn,hi,ar,Wi,or,ei,fi,ma,$i,Pn,Dd],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]}),i})(),hse=(()=>{class i{constructor(e){this.rest=e,this.poolUuid="",this.options={},this.chart=null}onResize(e){this.chart&&this.chart.resize()}ngOnInit(){var e=this;return Qe(function*(){const o=yield e.rest.system.stats("complete",e.poolUuid);e.options={tooltip:{trigger:"axis",axisPointer:{type:"cross",label:{backgroundColor:"#6a7985"}}},toolbox:{feature:{dataZoom:{yAxisIndex:"none"},restore:{},saveAsImage:{}}},xAxis:{type:"category",data:o.assigned.map(d=>po("SHORT_DATETIME_FORMAT",new Date(d.stamp))),boundaryGap:!1},yAxis:{type:"value",boundaryGap:!1},series:[{name:django.gettext("Assigned"),type:"line",stack:"services",smooth:!0,areaStyle:{},data:o.assigned.map(d=>d.value)},{name:django.gettext("Cached"),type:"line",stack:"services",smooth:!0,areaStyle:{},data:o.cached.map(d=>d.value)},{name:django.gettext("In use"),type:"line",smooth:!0,data:o.inuse.map(d=>d.value)}]}})()}chartInit(e){this.chart=e}}return i.\u0275fac=function(e){return new(e||i)(F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-charts"]],hostBindings:function(e,o){1&e&&Q("resize",function(h){return o.onResize(h)},0,rD)},inputs:{poolUuid:"poolUuid"},decls:2,vars:1,consts:[[1,"statistics-chart"],["echarts","","theme","dark-digerati",3,"options","chartInit"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1),Q("chartInit",function(h){return o.chartInit(h)}),O()()),2&e&&(N(1),z("options",o.options))},dependencies:[$E]}),i})();function fse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function pse(i,a){if(1&i&&pe(0,"uds-information",21),2&i){const e=X(2);z("value",e.servicePool)("gui",e.gui)}}function mse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Assigned services"),O())}function gse(i,a){if(1&i){const e=Ee();I(0,"uds-table",22),Q("customButtonAction",function(d){return le(e),oe(X(2).onCustomAssigned(d))})("deleteAction",function(d){return le(e),oe(X(2).onDeleteAssigned(d))}),O()}if(2&i){const e=X(2);z("rest",e.assignedServices)("multiSelect",!0)("allowExport",!0)("onItem",e.processsAssignedElement)("tableId","servicePools-d-services"+e.servicePool.id)("customButtons",e.customButtonsAssignedServices)("pageSize",e.api.config.admin.page_size)}}function vse(i,a){if(1&i){const e=Ee();I(0,"uds-table",23),Q("customButtonAction",function(d){return le(e),oe(X(2).onCustomAssigned(d))})("newAction",function(d){return le(e),oe(X(2).onNewAssigned(d))})("deleteAction",function(d){return le(e),oe(X(2).onDeleteAssigned(d))}),O()}if(2&i){const e=X(2);z("rest",e.assignedServices)("multiSelect",!0)("allowExport",!0)("onItem",e.processsAssignedElement)("tableId","servicePools-d-services"+e.servicePool.id)("customButtons",e.customButtonsAssignedServices)("pageSize",e.api.config.admin.page_size)}}function _se(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Cache"),O())}function yse(i,a){if(1&i){const e=Ee();I(0,"mat-tab"),J(1,_se,2,0,"ng-template",9),I(2,"div",10)(3,"uds-table",24),Q("customButtonAction",function(d){return le(e),oe(X(2).onCustomCached(d))})("deleteAction",function(d){return le(e),oe(X(2).onDeleteCache(d))}),O()()()}if(2&i){const e=X(2);N(3),z("rest",e.cache)("multiSelect",!0)("allowExport",!0)("onItem",e.processsCacheElement)("tableId","servicePools-d-cache"+e.servicePool.id)("customButtons",e.customButtonsCachedServices)("pageSize",e.api.config.admin.page_size)}}function bse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function wse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Transports"),O())}function xse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Publications"),O())}function Cse(i,a){if(1&i){const e=Ee();I(0,"mat-tab"),J(1,xse,2,0,"ng-template",9),I(2,"div",10)(3,"uds-table",25),Q("customButtonAction",function(d){return le(e),oe(X(2).onCustomPublication(d))})("newAction",function(d){return le(e),oe(X(2).onNewPublication(d))})("rowSelected",function(d){return le(e),oe(X(2).onPublicationRowSelect(d))}),O()()()}if(2&i){const e=X(2);N(3),z("rest",e.publications)("multiSelect",!0)("allowExport",!0)("tableId","servicePools-d-publications"+e.servicePool.id)("customButtons",e.customButtonsPublication)("pageSize",e.api.config.admin.page_size)}}function Sse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Scheduled actions"),O())}function Dse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Access calendars"),O())}function Mse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Charts"),O())}function Tse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function Ase(i,a){if(1&i){const e=Ee();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),Q("selectedIndexChange",function(d){return le(e),oe(X().selectedTab=d)}),I(3,"mat-tab"),J(4,fse,2,0,"ng-template",9),I(5,"div",10),J(6,pse,1,2,"uds-information",11),O()(),I(7,"mat-tab"),J(8,mse,2,0,"ng-template",9),I(9,"div",10),J(10,gse,1,7,"uds-table",12),J(11,vse,1,7,"ng-template",null,13,Zr),O()(),J(13,yse,4,7,"mat-tab",14),I(14,"mat-tab"),J(15,bse,2,0,"ng-template",9),I(16,"div",10)(17,"uds-table",15),Q("newAction",function(d){return le(e),oe(X().onNewGroup(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteGroup(d))}),O()()(),I(18,"mat-tab"),J(19,wse,2,0,"ng-template",9),I(20,"div",10)(21,"uds-table",16),Q("newAction",function(d){return le(e),oe(X().onNewTransport(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteTransport(d))}),O()()(),J(22,Cse,4,6,"mat-tab",14),I(23,"mat-tab"),J(24,Sse,2,0,"ng-template",9),I(25,"div",10)(26,"uds-table",17),Q("customButtonAction",function(d){return le(e),oe(X().onCustomScheduleAction(d))})("newAction",function(d){return le(e),oe(X().onNewScheduledAction(d))})("editAction",function(d){return le(e),oe(X().onEditScheduledAction(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteScheduledAction(d))}),O()()(),I(27,"mat-tab"),J(28,Dse,2,0,"ng-template",9),I(29,"div",10)(30,"uds-table",18),Q("newAction",function(d){return le(e),oe(X().onNewAccessCalendar(d))})("editAction",function(d){return le(e),oe(X().onEditAccessCalendar(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteAccessCalendar(d))})("loaded",function(d){return le(e),oe(X().onAccessCalendarLoad(d))}),O()()(),I(31,"mat-tab"),J(32,Mse,2,0,"ng-template",9),I(33,"div",10),pe(34,"uds-service-pools-charts",19),O()(),I(35,"mat-tab"),J(36,Tse,2,0,"ng-template",9),I(37,"div",10),pe(38,"uds-logs-table",20),O()()()()()}if(2&i){const e=on(12),o=X();N(2),z("selectedIndex",o.selectedTab)("@.disabled",!0),N(4),z("ngIf",o.servicePool&&o.gui),N(4),z("ngIf",!1===o.servicePool.info.must_assign_manually)("ngIfElse",e),N(3),z("ngIf",o.cache),N(4),z("rest",o.groups)("multiSelect",!0)("allowExport",!0)("customButtons",o.customButtonsGroups)("tableId","servicePools-d-groups"+o.servicePool.id)("pageSize",o.api.config.admin.page_size),N(4),z("rest",o.transports)("multiSelect",!0)("allowExport",!0)("customButtons",o.customButtonsTransports)("tableId","servicePools-d-transports"+o.servicePool.id)("pageSize",o.api.config.admin.page_size),N(1),z("ngIf",o.publications),N(4),z("rest",o.scheduledActions)("multiSelect",!0)("allowExport",!0)("tableId","servicePools-d-actions"+o.servicePool.id)("customButtons",o.customButtonsScheduledAction)("onItem",o.processsCalendarOrScheduledElement)("pageSize",o.api.config.admin.page_size),N(4),z("rest",o.accessCalendars)("multiSelect",!0)("allowExport",!0)("customButtons",o.customButtonAccessCalendars)("tableId","servicePools-d-access"+o.servicePool.id)("onItem",o.processsCalendarOrScheduledElement)("pageSize",o.api.config.admin.page_size),N(4),z("poolUuid",o.servicePool.id),N(4),z("rest",o.rest.servicesPools)("itemId",o.servicePool.id)("tableId","servicePools-d-log"+o.servicePool.id)("pageSize",o.api.config.admin.page_size)}}const kse=function(i){return["/pools","service-pools",i]},PY='event'+django.gettext("Logs")+"",Ese='computer'+django.gettext("VNC")+"",Ise='schedule'+django.gettext("Launch now")+"",vee='perm_identity'+django.gettext("Change owner")+"",Pse='perm_identity'+django.gettext("Assign service")+"",Rse='cancel'+django.gettext("Cancel")+"",Ose='event'+django.gettext("Changelog")+"";let _ee=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.customButtonsScheduledAction=[{id:"launch-action",html:Ise,type:ri.SINGLE_SELECT},eo.getGotoButton(M1,"calendarId")],this.customButtonAccessCalendars=[eo.getGotoButton(M1,"calendarId")],this.customButtonsAssignedServices=[{id:"change-owner",html:vee,type:ri.SINGLE_SELECT},{id:"log",html:PY,type:ri.SINGLE_SELECT},eo.getGotoButton(xg,"owner_info.auth_id","owner_info.user_id")],this.customButtonsCachedServices=[{id:"log",html:PY,type:ri.SINGLE_SELECT}],this.customButtonsPublication=[{id:"cancel-publication",html:Rse,type:ri.SINGLE_SELECT},{id:"changelog",html:Ose,type:ri.ALWAYS}],this.customButtonsGroups=[eo.getGotoButton("group","auth_id","id")],this.customButtonsTransports=[eo.getGotoButton(X3,"id")],this.servicePool=null,this.gui=[],this.assignedServices={},this.cache=null,this.groups={},this.transports={},this.publications=null,this.scheduledActions={},this.accessCalendars={},this.selectedTab=1}static cleanInvalidSelections(e){return e.table.selection.selected.filter(o=>["E","R","M","S","C"].includes(o.state)).forEach(o=>e.table.selection.deselect(o)),e.table.selection.isEmpty()}ngOnInit(){var e=this;return Qe(function*(){const o=e.route.snapshot.paramMap.get("pool");if(!o)return;e.assignedServices=e.rest.servicesPools.detail(o,"services"),e.groups=e.rest.servicesPools.detail(o,"groups"),e.transports=e.rest.servicesPools.detail(o,"transports"),e.scheduledActions=e.rest.servicesPools.detail(o,"actions"),e.accessCalendars=e.rest.servicesPools.detail(o,"access");const d=yield e.rest.servicesPools.get(o),h=(yield e.rest.servicesPools.gui()).filter(_=>!(!1===d.info.uses_cache&&["initial_srvs","cache_l1_srvs","cache_l2_srvs","max_srvs"].includes(_.name)||!1===d.info.uses_cache_l2&&"cache_l2_srvs"===_.name||!1===d.info.needs_manager&&"osmanager_id"===_.name));e.servicePool=d,e.gui=h,e.cache=d.info.uses_cache?e.rest.servicesPools.detail(o,"cache"):null,e.publications=d.info.needs_publication?e.rest.servicesPools.detail(o,"publications"):null,e.api.config.admin.vnc_userservices&&e.customButtonsAssignedServices.push({id:"vnc",html:Ese,type:ri.ONLY_MENU}),e.servicePool.info.can_list_assignables&&e.customButtonsAssignedServices.push({id:"assign-service",html:Pse,type:ri.ALWAYS})})()}onNewAssigned(e){}vnc(e){const d=new Blob(["[connection]\nhost="+e.ip+"\nport=5900\n"],{type:"application/extension-vnc"});setTimeout(()=>{(0,TY.saveAs)(d,e.ip+".vnc")},100)}onCustomAssigned(e){var o=this;return Qe(function*(){const d=e.table.selection.selected[0];if("change-owner"===e.param.id){if(["E","R","M","S","C"].includes(d.state))return;!0===(yield uee.launch(o.api,d,o.assignedServices))&&e.table.overview()}else"log"===e.param.id?IY.launch(o.api,d,o.assignedServices):"assign-service"===e.param.id?!0===(yield use.launch(o.api,o.servicePool))&&e.table.overview():"vnc"===e.param.id&&o.vnc(d)})()}onCustomCached(e){"log"===e.param.id&&this.cache&&IY.launch(this.api,e.table.selection.selected[0],this.cache)}processsAssignedElement(e){e.in_use=this.api.boolAsHumanString(e.in_use),e.origState=e.state,"U"===e.state&&(e.state=""!==e.os_state&&"U"!==e.os_state?"Z":"U")}onDeleteAssigned(e){i.cleanInvalidSelections(e)||this.api.gui.forms.deleteForm(e,django.gettext("Delete assigned service"))}onDeleteCache(e){i.cleanInvalidSelections(e)||this.api.gui.forms.deleteForm(e,django.gettext("Delete cached service"))}processsCacheElement(e){e.origState=e.state,"U"===e.state&&(e.state=""!==e.os_state&&"U"!==e.os_state?"Z":"U")}onNewGroup(e){var o=this;return Qe(function*(){!0===(yield hee.launch(o.api,o.servicePool,o.groups))&&e.table.overview()})()}onDeleteGroup(e){var o=this;return Qe(function*(){o.api.gui.forms.deleteForm(e,django.gettext("Delete assigned group"))})()}onNewTransport(e){var o=this;return Qe(function*(){!0===(yield Boe.launch(o.api,o.servicePool))&&e.table.overview()})()}onDeleteTransport(e){var o=this;return Qe(function*(){o.api.gui.forms.deleteForm(e,django.gettext("Delete assigned transport"))})()}onNewPublication(e){var o=this;return Qe(function*(){!0===(yield Voe.launch(o.api,o.servicePool))&&e.table.overview()})()}onPublicationRowSelect(e){1===e.table.selection.selected.length&&(this.customButtonsPublication[0].disabled=!["P","W","L","K"].includes(e.table.selection.selected[0].state))}onCustomPublication(e){"cancel-publication"===e.param.id?this.api.gui.questionDialog(django.gettext("Publication"),django.gettext("Cancel publication?"),!0).then(o=>{o&&this.publications&&this.publications.invoke(e.table.selection.selected[0].id+"/cancel").then(d=>{this.api.gui.snackbar.open(django.gettext("Publication canceled"),django.gettext("dismiss"),{duration:2e3}),e.table.overview()})}):"changelog"===e.param.id&&zoe.launch(this.api,this.servicePool)}onNewScheduledAction(e){gee.launch(this.api,this.servicePool).subscribe(o=>e.table.overview())}onEditScheduledAction(e){gee.launch(this.api,this.servicePool,e.table.selection.selected[0]).subscribe(o=>e.table.overview())}onDeleteScheduledAction(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete scheduled action"))}onCustomScheduleAction(e){this.api.gui.questionDialog(django.gettext("Execute scheduled action"),django.gettext("Execute scheduled action right now?")).then(o=>{o&&this.scheduledActions.invoke(e.table.selection.selected[0].id+"/execute").then(()=>{this.api.gui.snackbar.open(django.gettext("Scheduled action executed"),django.gettext("dismiss"),{duration:2e3}),e.table.overview()})})}onNewAccessCalendar(e){sz.launch(this.api,this.servicePool,this.accessCalendars).subscribe(o=>e.table.overview())}onEditAccessCalendar(e){sz.launch(this.api,this.servicePool,this.accessCalendars,e.table.selection.selected[0]).subscribe(o=>e.table.overview())}onDeleteAccessCalendar(e){-1!==e.table.selection.selected[0].id?this.api.gui.forms.deleteForm(e,django.gettext("Delete calendar access rule")):this.onEditAccessCalendar(e)}onAccessCalendarLoad(e){this.rest.servicesPools.getFallbackAccess(this.servicePool.id).then(o=>{const d=e.table.dataSource.data.filter(h=>!0);d.push({id:-1,calendar:"-",priority:this.api.safeString('10000000FallBack'),access:o}),e.table.dataSource.data=d})}processsCalendarOrScheduledElement(e){e.name=e.calendar,e.atStart=this.api.boolAsHumanString(e.atStart)}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-service-pools-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","deleteAction",4,"ngIf","ngIfElse"],["manually_assigned",""],[4,"ngIf"],["icon","groups",3,"rest","multiSelect","allowExport","customButtons","tableId","pageSize","newAction","deleteAction"],["icon","transports",3,"rest","multiSelect","allowExport","customButtons","tableId","pageSize","newAction","deleteAction"],["icon","calendars",3,"rest","multiSelect","allowExport","tableId","customButtons","onItem","pageSize","customButtonAction","newAction","editAction","deleteAction"],["icon","calendars",3,"rest","multiSelect","allowExport","customButtons","tableId","onItem","pageSize","newAction","editAction","deleteAction","loaded"],[3,"poolUuid"],[3,"rest","itemId","tableId","pageSize"],[3,"value","gui"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","deleteAction"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","newAction","deleteAction"],["icon","cached",3,"rest","multiSelect","allowExport","onItem","tableId","customButtons","pageSize","customButtonAction","deleteAction"],["icon","publications",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","customButtonAction","newAction","rowSelected"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),pe(6,"img",4),Y(7),O(),J(8,Ase,39,38,"div",5),O()),2&e&&(N(2),z("routerLink",du(4,kse,o.servicePool?o.servicePool.id:"")),N(4),z("src",o.api.staticURL("admin/img/icons/pools.png"),Kt),N(1),Ie(" \xa0",null==o.servicePool?null:o.servicePool.name," "),N(1),z("ngIf",null!==o.servicePool))},dependencies:[en,Is,qo,mo,Ja,Pn,Ni,N1,az,hse],styles:[".mat-column-state{max-width:10rem;justify-content:center} .mat-column-revision, .mat-column-cache_level, .mat-column-in_use, .mat-column-priority{max-width:7rem;justify-content:center} .mat-column-publish_date, .mat-column-state_date, .mat-column-creation_date{width:14rem} .mat-column-trans_type, .mat-column-access{max-width:9rem} .mat-column-owner{overflow-wrap:break-word;word-wrap:break-word;-ms-word-break:break-all;word-break:break-all;word-break:break-word} .row-state-S>.mat-mdc-cell{color:gray!important} .row-state-C>.mat-mdc-cell{color:gray!important} .row-state-E>.mat-mdc-cell{color:red!important} .row-state-R>.mat-mdc-cell{color:orange!important}"]}),i})(),yee=(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New meta pool"))}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit meta pool"))}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete meta pool"))}onDetail(e){this.api.navigation.gotoMetapoolDetail(e.param.id)}processElement(e){e.visible=this.api.boolAsHumanString(e.visible),e.name=this.api.safeString(this.api.gui.icon(e.thumb)+e.name),e.pool_group_name=this.api.safeString(this.api.gui.icon(e.pool_group_thumb)+e.pool_group_name)}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("metapool"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-meta-pools"]],decls:2,vars:6,consts:[["icon","metas",3,"rest","multiSelect","allowExport","onItem","hasPermissions","pageSize","detailAction","newAction","editAction","deleteAction","loaded"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("detailAction",function(h){return o.onDetail(h)})("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("loaded",function(h){return o.onLoad(h)}),O()()),2&e&&(N(1),z("rest",o.rest.metaPools)("multiSelect",!0)("allowExport",!0)("onItem",o.processElement)("hasPermissions",!0)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni],styles:[".mat-column-user_services_count, .mat-column-user_services_in_preparation, .mat-column-visible, .mat-column-pool_group_name{max-width:7rem;justify-content:center}"]}),i})();function Lse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New member pool"),O())}function Fse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Edit member pool"),O())}function Nse(i,a){if(1&i){const e=Ee();I(0,"uds-cond-select-search",11),Q("changed",function(d){return le(e),oe(X().servicePoolsFilter=d)}),O()}}function Bse(i,a){if(1&i&&(I(0,"mat-option",12),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.name," ")}}let bee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.done=new dl,this.servicePools=[],this.servicePoolsFilter="",this.model=h.model,this.memberPool={id:void 0,priority:0,pool_id:"",enabled:!0},h.memberPool&&(this.memberPool.id=h.memberPool.id)}static launch(e,o,d){const h=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:h,position:{top:window.innerWidth<800?"0px":"7rem"},data:{memberPool:d,model:o},disableClose:!1}).componentInstance.done}ngOnInit(){var e=this;return Qe(function*(){e.servicePools=yield e.rest.servicesPools.summary(),e.memberPool.id&&(e.memberPool=yield e.model.get(e.memberPool.id))})()}filtered(e,o){return o?e.filter(d=>d.name.toLocaleLowerCase().includes(o.toLocaleLowerCase())):e}save(){var e=this;return Qe(function*(){e.memberPool.pool_id?(yield e.model.save(e.memberPool),e.dialogRef.close(),e.done.resolve(!0)):e.api.gui.alert(django.gettext("Error"),django.gettext("Please, select a valid service pool"))})()}cancel(){this.dialogRef.close(),this.done.resolve(!1)}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-meta-pools-service-pools"]],decls:30,vars:8,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],["matInput","","type","number",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],[3,"changed",4,"ngIf"],[3,"value",4,"ngFor","ngForOf"],[1,"mat-form-field-infix"],[1,"label-enabled"],["mat-raised-button","","color","warn",3,"click"],["mat-raised-button","","color","primary",3,"click"],[3,"changed"],[3,"value"]],template:function(e,o){1&e&&(I(0,"h4",0),J(1,Lse,2,0,"uds-translate",1),J(2,Fse,2,0,"uds-translate",1),O(),I(3,"mat-dialog-content")(4,"div",2)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Priority"),O()(),I(9,"input",3),Q("ngModelChange",function(h){return o.memberPool.priority=h}),O()(),I(10,"mat-form-field")(11,"mat-label")(12,"uds-translate"),Y(13,"Service pool"),O()(),I(14,"mat-select",4),Q("ngModelChange",function(h){return o.memberPool.pool_id=h}),J(15,Nse,1,0,"uds-cond-select-search",5),J(16,Bse,2,2,"mat-option",6),O()(),I(17,"div",7)(18,"span",8)(19,"uds-translate"),Y(20,"Enabled?"),O()(),I(21,"mat-slide-toggle",4),Q("ngModelChange",function(h){return o.memberPool.enabled=h}),Y(22),O()()()(),I(23,"mat-dialog-actions")(24,"button",9),Q("click",function(){return o.cancel()}),I(25,"uds-translate"),Y(26,"Cancel"),O()(),I(27,"button",10),Q("click",function(){return o.save()}),I(28,"uds-translate"),Y(29,"Ok"),O()()()),2&e&&(N(1),z("ngIf",!(null!=o.memberPool&&o.memberPool.id)),N(1),z("ngIf",null==o.memberPool?null:o.memberPool.id),N(7),z("ngModel",o.memberPool.priority),N(5),z("ngModel",o.memberPool.pool_id),N(1),z("ngIf",o.servicePools.length>10),N(1),z("ngForOf",o.filtered(o.servicePools,o.servicePoolsFilter)),N(5),z("ngModel",o.memberPool.enabled),N(1),Ie(" ",o.api.boolAsHumanString(o.memberPool.enabled)," "))},dependencies:[Mn,en,sr,qf,Jn,zn,hi,ar,Wi,or,ei,fi,ga,ma,$i,pI,Pn,Dd],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.label-enabled[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}"]}),i})();function Vse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Summary"),O())}function zse(i,a){if(1&i&&pe(0,"uds-information",17),2&i){const e=X(2);z("value",e.metaPool)("gui",e.gui)}}function Hse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Service pools"),O())}function Gse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Assigned services"),O())}function Use(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Groups"),O())}function jse(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Access calendars"),O())}function $se(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Logs"),O())}function Wse(i,a){if(1&i){const e=Ee();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8),Q("selectedIndexChange",function(d){return le(e),oe(X().selectedTab=d)}),I(3,"mat-tab"),J(4,Vse,2,0,"ng-template",9),I(5,"div",10),J(6,zse,1,2,"uds-information",11),O()(),I(7,"mat-tab"),J(8,Hse,2,0,"ng-template",9),I(9,"div",10)(10,"uds-table",12),Q("newAction",function(d){return le(e),oe(X().onNewMemberPool(d))})("editAction",function(d){return le(e),oe(X().onEditMemberPool(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteMemberPool(d))}),O()()(),I(11,"mat-tab"),J(12,Gse,2,0,"ng-template",9),I(13,"div",10)(14,"uds-table",13),Q("customButtonAction",function(d){return le(e),oe(X().onCustomAssigned(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteAssigned(d))}),O()()(),I(15,"mat-tab"),J(16,Use,2,0,"ng-template",9),I(17,"div",10)(18,"uds-table",14),Q("newAction",function(d){return le(e),oe(X().onNewGroup(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteGroup(d))}),O()()(),I(19,"mat-tab"),J(20,jse,2,0,"ng-template",9),I(21,"div",10)(22,"uds-table",15),Q("newAction",function(d){return le(e),oe(X().onNewAccessCalendar(d))})("editAction",function(d){return le(e),oe(X().onEditAccessCalendar(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteAccessCalendar(d))})("loaded",function(d){return le(e),oe(X().onAccessCalendarLoad(d))}),O()()(),I(23,"mat-tab"),J(24,$se,2,0,"ng-template",9),I(25,"div",10),pe(26,"uds-logs-table",16),O()()()()()}if(2&i){const e=X();N(2),z("selectedIndex",e.selectedTab)("@.disabled",!0),N(4),z("ngIf",e.metaPool&&e.gui),N(4),z("rest",e.memberPools)("multiSelect",!0)("allowExport",!0)("onItem",e.processElement)("customButtons",e.customButtons)("tableId","metaPools-d-members"+e.metaPool.id)("pageSize",e.api.config.admin.page_size),N(4),z("rest",e.memberUserServices)("multiSelect",!0)("allowExport",!0)("tableId","metaPools-d-services"+e.metaPool.id)("customButtons",e.customButtonsAssignedServices)("pageSize",e.api.config.admin.page_size),N(4),z("rest",e.groups)("multiSelect",!0)("allowExport",!0)("tableId","metaPools-d-groups"+e.metaPool.id)("pageSize",e.api.config.admin.page_size),N(4),z("rest",e.accessCalendars)("multiSelect",!0)("allowExport",!0)("tableId","metaPools-d-access"+e.metaPool.id)("pageSize",e.api.config.admin.page_size)("onItem",e.processsCalendarItem),N(4),z("rest",e.rest.metaPools)("itemId",e.metaPool.id)("tableId","metaPools-d-log"+e.metaPool.id)("pageSize",e.api.config.admin.page_size)}}const Yse=function(i){return["/pools","meta-pools",i]};let qse=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.customButtons=[eo.getGotoButton($u,"pool_id")],this.customButtonsAssignedServices=[{id:"change-owner",html:vee,type:ri.SINGLE_SELECT},{id:"log",html:PY,type:ri.SINGLE_SELECT},eo.getGotoButton(xg,"owner_info.auth_id","owner_info.user_id")],this.metaPool=null,this.gui=null,this.selectedTab=1,this.memberPools={},this.memberUserServices={},this.groups={},this.accessCalendars={}}ngOnInit(){var e=this;return Qe(function*(){const o=e.route.snapshot.paramMap.get("metapool");if(!o)return;const d=yield e.rest.metaPools.get(o),h=yield e.rest.metaPools.gui();e.memberPools=e.rest.metaPools.detail(o,"pools"),e.memberUserServices=e.rest.metaPools.detail(o,"services"),e.groups=e.rest.metaPools.detail(o,"groups"),e.accessCalendars=e.rest.metaPools.detail(o,"access"),e.metaPool=d,e.gui=h})()}onNewMemberPool(e){var o=this;return Qe(function*(){!0===(yield bee.launch(o.api,o.memberPools))&&e.table.overview()})()}onEditMemberPool(e){var o=this;return Qe(function*(){!0===(yield bee.launch(o.api,o.memberPools,e.table.selection.selected[0]))&&e.table.overview()})()}onDeleteMemberPool(e){var o=this;return Qe(function*(){o.api.gui.forms.deleteForm(e,django.gettext("Remove member pool"))})()}onCustomAssigned(e){var o=this;return Qe(function*(){const d=e.table.selection.selected[0];if("change-owner"===e.param.id){if(["E","R","M","S","C"].includes(d.state))return;!0===(yield uee.launch(o.api,d,o.memberUserServices))&&e.table.overview()}else"log"===e.param.id&&IY.launch(o.api,d,o.memberUserServices)})()}onDeleteAssigned(e){var o=this;return Qe(function*(){_ee.cleanInvalidSelections(e)||o.api.gui.forms.deleteForm(e,django.gettext("Delete assigned service"))})()}onNewGroup(e){var o=this;return Qe(function*(){!0===(yield hee.launch(o.api,o.metaPool.id,o.groups))&&e.table.overview()})()}onDeleteGroup(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete assigned group"))}onNewAccessCalendar(e){sz.launch(this.api,this.metaPool,this.accessCalendars).subscribe(o=>e.table.overview())}onEditAccessCalendar(e){sz.launch(this.api,this.metaPool,this.accessCalendars,e.table.selection.selected[0]).subscribe(o=>e.table.overview())}onDeleteAccessCalendar(e){-1!==e.table.selection.selected[0].id?this.api.gui.forms.deleteForm(e,django.gettext("Delete calendar access rule")):this.onEditAccessCalendar(e)}onAccessCalendarLoad(e){this.rest.metaPools.getFallbackAccess(this.metaPool.id).then(o=>{const d=e.table.dataSource.data.filter(h=>!0);d.push({id:-1,calendar:"-",priority:this.api.safeString('10000000FallBack'),access:o}),e.table.dataSource.data=d})}processElement(e){e.enabled=this.api.boolAsHumanString(e.enabled)}processsCalendarItem(e){e.name=e.calendar,e.atStart=this.api.boolAsHumanString(e.atStart)}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-meta-pools-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary",3,"selectedIndex","selectedIndexChange"],["mat-tab-label",""],[1,"content"],[3,"value","gui",4,"ngIf"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","customButtons","tableId","pageSize","newAction","editAction","deleteAction"],["icon","pools",3,"rest","multiSelect","allowExport","tableId","customButtons","pageSize","customButtonAction","deleteAction"],["icon","groups",3,"rest","multiSelect","allowExport","tableId","pageSize","newAction","deleteAction"],["icon","calendars",3,"rest","multiSelect","allowExport","tableId","pageSize","onItem","newAction","editAction","deleteAction","loaded"],[3,"rest","itemId","tableId","pageSize"],[3,"value","gui"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),pe(6,"img",4),Y(7),O(),J(8,Wse,27,31,"div",5),O()),2&e&&(N(2),z("routerLink",du(4,Yse,o.metaPool?o.metaPool.id:"")),N(4),z("src",o.api.staticURL("admin/img/icons/metas.png"),Kt),N(1),Ie(" ",null==o.metaPool?null:o.metaPool.name," "),N(1),z("ngIf",o.metaPool))},dependencies:[en,Is,qo,mo,Ja,Pn,Ni,N1,az],styles:[".mat-column-enabled, .mat-column-priority{max-width:8rem;justify-content:center}"]}),i})(),wee=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d}ngOnInit(){}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New pool group"),!1).then(()=>e.table.overview())}onEdit(e){var o=this;return Qe(function*(){o.api.gui.forms.typedEditForm(e,django.gettext("Edit pool group"),!1)})()}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete pool group"))}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("poolgroup"))}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-pool-groups"]],decls:1,vars:5,consts:[["icon","spool-group",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(e,o){1&e&&(I(0,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("loaded",function(h){return o.onLoad(h)}),O()),2&e&&z("rest",o.rest.servicesPoolGroups)("multiSelect",!0)("allowExport",!0)("hasPermissions",!1)("pageSize",o.api.config.admin.page_size)},dependencies:[Ni],styles:[".mat-column-priority, .mat-column-thumb{max-width:7rem;justify-content:center}"]}),i})(),xee=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d}ngOnInit(){}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New calendar"))}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit calendar"))}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete calendar"))}onDetail(e){this.api.navigation.gotoCalendarDetail(e.param.id)}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("calendar"))}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-calendars"]],decls:1,vars:5,consts:[["icon","calendars",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(e,o){1&e&&(I(0,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("detailAction",function(h){return o.onDetail(h)})("loaded",function(h){return o.onLoad(h)}),O()),2&e&&z("rest",o.rest.calendars)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("pageSize",o.api.config.admin.page_size)},dependencies:[Ni]}),i})();const Xse=["mat-calendar-body",""];function Zse(i,a){if(1&i&&(I(0,"tr",3)(1,"td",4),Y(2),O()()),2&i){const e=X();N(1),Ta("padding-top",e._cellPadding)("padding-bottom",e._cellPadding),Ve("colspan",e.numCols),N(1),Ie(" ",e.label," ")}}function Kse(i,a){if(1&i&&(I(0,"td",4),Y(1),O()),2&i){const e=X(2);Ta("padding-top",e._cellPadding)("padding-bottom",e._cellPadding),Ve("colspan",e._firstRowOffset),N(1),Ie(" ",e._firstRowOffset>=e.labelMinRequiredCells?e.label:""," ")}}function Qse(i,a){if(1&i){const e=Ee();I(0,"td",8)(1,"button",9),Q("click",function(d){const _=le(e).$implicit;return oe(X(2)._cellClicked(_,d))})("focus",function(d){const _=le(e).$implicit;return oe(X(2)._emitActiveDateChange(_,d))}),I(2,"span",10),Y(3),O(),pe(4,"span",11),O()()}if(2&i){const e=a.$implicit,o=a.index,d=X().index,h=X();Ta("width",h._cellWidth)("padding-top",h._cellPadding)("padding-bottom",h._cellPadding),Ve("data-mat-row",d)("data-mat-col",o),N(1),st("mat-calendar-body-disabled",!e.enabled)("mat-calendar-body-active",h._isActiveCell(d,o))("mat-calendar-body-range-start",h._isRangeStart(e.compareValue))("mat-calendar-body-range-end",h._isRangeEnd(e.compareValue))("mat-calendar-body-in-range",h._isInRange(e.compareValue))("mat-calendar-body-comparison-bridge-start",h._isComparisonBridgeStart(e.compareValue,d,o))("mat-calendar-body-comparison-bridge-end",h._isComparisonBridgeEnd(e.compareValue,d,o))("mat-calendar-body-comparison-start",h._isComparisonStart(e.compareValue))("mat-calendar-body-comparison-end",h._isComparisonEnd(e.compareValue))("mat-calendar-body-in-comparison-range",h._isInComparisonRange(e.compareValue))("mat-calendar-body-preview-start",h._isPreviewStart(e.compareValue))("mat-calendar-body-preview-end",h._isPreviewEnd(e.compareValue))("mat-calendar-body-in-preview",h._isInPreview(e.compareValue)),z("ngClass",e.cssClasses)("tabindex",h._isActiveCell(d,o)?0:-1),Ve("aria-label",e.ariaLabel)("aria-disabled",!e.enabled||null)("aria-pressed",h._isSelected(e.compareValue))("aria-current",h.todayValue===e.compareValue?"date":null)("aria-describedby",h._getDescribedby(e.compareValue)),N(1),st("mat-calendar-body-selected",h._isSelected(e.compareValue))("mat-calendar-body-comparison-identical",h._isComparisonIdentical(e.compareValue))("mat-calendar-body-today",h.todayValue===e.compareValue),N(1),Ie(" ",e.displayValue," ")}}function Jse(i,a){if(1&i&&(I(0,"tr",5),J(1,Kse,2,6,"td",6),J(2,Qse,5,48,"td",7),O()),2&i){const e=a.$implicit,o=a.index,d=X();N(1),z("ngIf",0===o&&d._firstRowOffset),N(1),z("ngForOf",e)}}function ele(i,a){if(1&i&&(I(0,"th",5)(1,"span",6),Y(2),O(),I(3,"span",7),Y(4),O()()),2&i){const e=a.$implicit;N(2),Sn(e.long),N(2),Sn(e.narrow)}}const tle=["*"];function nle(i,a){}function ile(i,a){if(1&i){const e=Ee();I(0,"mat-month-view",5),Q("activeDateChange",function(d){return le(e),oe(X().activeDate=d)})("_userSelection",function(d){return le(e),oe(X()._dateSelected(d))})("dragStarted",function(d){return le(e),oe(X()._dragStarted(d))})("dragEnded",function(d){return le(e),oe(X()._dragEnded(d))}),O()}if(2&i){const e=X();z("activeDate",e.activeDate)("selected",e.selected)("dateFilter",e.dateFilter)("maxDate",e.maxDate)("minDate",e.minDate)("dateClass",e.dateClass)("comparisonStart",e.comparisonStart)("comparisonEnd",e.comparisonEnd)("startDateAccessibleName",e.startDateAccessibleName)("endDateAccessibleName",e.endDateAccessibleName)("activeDrag",e._activeDrag)}}function rle(i,a){if(1&i){const e=Ee();I(0,"mat-year-view",6),Q("activeDateChange",function(d){return le(e),oe(X().activeDate=d)})("monthSelected",function(d){return le(e),oe(X()._monthSelectedInYearView(d))})("selectedChange",function(d){return le(e),oe(X()._goToDateInView(d,"month"))}),O()}if(2&i){const e=X();z("activeDate",e.activeDate)("selected",e.selected)("dateFilter",e.dateFilter)("maxDate",e.maxDate)("minDate",e.minDate)("dateClass",e.dateClass)}}function ale(i,a){if(1&i){const e=Ee();I(0,"mat-multi-year-view",7),Q("activeDateChange",function(d){return le(e),oe(X().activeDate=d)})("yearSelected",function(d){return le(e),oe(X()._yearSelectedInMultiYearView(d))})("selectedChange",function(d){return le(e),oe(X()._goToDateInView(d,"year"))}),O()}if(2&i){const e=X();z("activeDate",e.activeDate)("selected",e.selected)("dateFilter",e.dateFilter)("maxDate",e.maxDate)("minDate",e.minDate)("dateClass",e.dateClass)}}function ole(i,a){}const sle=["button"];function lle(i,a){1&i&&(Wr(),I(0,"svg",3),pe(1,"path",4),O())}const cle=[[["","matDatepickerToggleIcon",""]]],dle=["[matDatepickerToggleIcon]"];let mI=(()=>{class i{constructor(){this.changes=new He,this.calendarLabel="Calendar",this.openCalendarLabel="Open calendar",this.closeCalendarLabel="Close calendar",this.prevMonthLabel="Previous month",this.nextMonthLabel="Next month",this.prevYearLabel="Previous year",this.nextYearLabel="Next year",this.prevMultiYearLabel="Previous 24 years",this.nextMultiYearLabel="Next 24 years",this.switchToMonthViewLabel="Choose date",this.switchToMultiYearViewLabel="Choose month and year",this.startDateLabel="Start date",this.endDateLabel="End date"}formatYearRange(e,o){return`${e} \u2013 ${o}`}formatYearRangeLabel(e,o){return`${e} to ${o}`}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac,providedIn:"root"}),i})();class RY{constructor(a,e,o,d,h={},_=a,w){this.value=a,this.displayValue=e,this.ariaLabel=o,this.enabled=d,this.cssClasses=h,this.compareValue=_,this.rawValue=w}}let ule=1,B1=(()=>{class i{ngAfterViewChecked(){this._focusActiveCellAfterViewChecked&&(this._focusActiveCell(),this._focusActiveCellAfterViewChecked=!1)}constructor(e,o){this._elementRef=e,this._ngZone=o,this._platform=St(Qn),this._focusActiveCellAfterViewChecked=!1,this.numCols=7,this.activeCell=0,this.isRange=!1,this.cellAspectRatio=1,this.previewStart=null,this.previewEnd=null,this.selectedValueChange=new we,this.previewChange=new we,this.activeDateChange=new we,this.dragStarted=new we,this.dragEnded=new we,this._didDragSinceMouseDown=!1,this._enterHandler=d=>{if(this._skipNextFocus&&"focus"===d.type)this._skipNextFocus=!1;else if(d.target&&this.isRange){const h=this._getCellFromElement(d.target);h&&this._ngZone.run(()=>this.previewChange.emit({value:h.enabled?h:null,event:d}))}},this._touchmoveHandler=d=>{if(!this.isRange)return;const h=Cee(d),_=h?this._getCellFromElement(h):null;h!==d.target&&(this._didDragSinceMouseDown=!0),LY(d.target)&&d.preventDefault(),this._ngZone.run(()=>this.previewChange.emit({value:null!=_&&_.enabled?_:null,event:d}))},this._leaveHandler=d=>{null!==this.previewEnd&&this.isRange&&("blur"!==d.type&&(this._didDragSinceMouseDown=!0),d.target&&this._getCellFromElement(d.target)&&(!d.relatedTarget||!this._getCellFromElement(d.relatedTarget))&&this._ngZone.run(()=>this.previewChange.emit({value:null,event:d})))},this._mousedownHandler=d=>{if(!this.isRange)return;this._didDragSinceMouseDown=!1;const h=d.target&&this._getCellFromElement(d.target);!h||!this._isInRange(h.rawValue)||this._ngZone.run(()=>{this.dragStarted.emit({value:h.rawValue,event:d})})},this._mouseupHandler=d=>{if(!this.isRange)return;const h=LY(d.target);h?h.closest(".mat-calendar-body")===this._elementRef.nativeElement&&this._ngZone.run(()=>{var _;const w=this._getCellFromElement(h);this.dragEnded.emit({value:null!==(_=null==w?void 0:w.rawValue)&&void 0!==_?_:null,event:d})}):this._ngZone.run(()=>{this.dragEnded.emit({value:null,event:d})})},this._touchendHandler=d=>{const h=Cee(d);h&&this._mouseupHandler({target:h})},this._id="mat-calendar-body-"+ule++,this._startDateLabelId=`${this._id}-start-date`,this._endDateLabelId=`${this._id}-end-date`,o.runOutsideAngular(()=>{const d=e.nativeElement;d.addEventListener("mouseenter",this._enterHandler,!0),d.addEventListener("touchmove",this._touchmoveHandler,!0),d.addEventListener("focus",this._enterHandler,!0),d.addEventListener("mouseleave",this._leaveHandler,!0),d.addEventListener("blur",this._leaveHandler,!0),d.addEventListener("mousedown",this._mousedownHandler),d.addEventListener("touchstart",this._mousedownHandler),this._platform.isBrowser&&(window.addEventListener("mouseup",this._mouseupHandler),window.addEventListener("touchend",this._touchendHandler))})}_cellClicked(e,o){this._didDragSinceMouseDown||e.enabled&&this.selectedValueChange.emit({value:e.value,event:o})}_emitActiveDateChange(e,o){e.enabled&&this.activeDateChange.emit({value:e.value,event:o})}_isSelected(e){return this.startValue===e||this.endValue===e}ngOnChanges(e){const o=e.numCols,{rows:d,numCols:h}=this;(e.rows||o)&&(this._firstRowOffset=d&&d.length&&d[0].length?h-d[0].length:0),(e.cellAspectRatio||o||!this._cellPadding)&&(this._cellPadding=50*this.cellAspectRatio/h+"%"),(o||!this._cellWidth)&&(this._cellWidth=100/h+"%")}ngOnDestroy(){const e=this._elementRef.nativeElement;e.removeEventListener("mouseenter",this._enterHandler,!0),e.removeEventListener("touchmove",this._touchmoveHandler,!0),e.removeEventListener("focus",this._enterHandler,!0),e.removeEventListener("mouseleave",this._leaveHandler,!0),e.removeEventListener("blur",this._leaveHandler,!0),e.removeEventListener("mousedown",this._mousedownHandler),e.removeEventListener("touchstart",this._mousedownHandler),this._platform.isBrowser&&(window.removeEventListener("mouseup",this._mouseupHandler),window.removeEventListener("touchend",this._touchendHandler))}_isActiveCell(e,o){let d=e*this.numCols+o;return e&&(d-=this._firstRowOffset),d==this.activeCell}_focusActiveCell(e=!0){this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe(Tn(1)).subscribe(()=>{setTimeout(()=>{const o=this._elementRef.nativeElement.querySelector(".mat-calendar-body-active");o&&(e||(this._skipNextFocus=!0),o.focus())})})})}_scheduleFocusActiveCellAfterViewChecked(){this._focusActiveCellAfterViewChecked=!0}_isRangeStart(e){return FY(e,this.startValue,this.endValue)}_isRangeEnd(e){return NY(e,this.startValue,this.endValue)}_isInRange(e){return BY(e,this.startValue,this.endValue,this.isRange)}_isComparisonStart(e){return FY(e,this.comparisonStart,this.comparisonEnd)}_isComparisonBridgeStart(e,o,d){if(!this._isComparisonStart(e)||this._isRangeStart(e)||!this._isInRange(e))return!1;let h=this.rows[o][d-1];if(!h){const _=this.rows[o-1];h=_&&_[_.length-1]}return h&&!this._isRangeEnd(h.compareValue)}_isComparisonBridgeEnd(e,o,d){if(!this._isComparisonEnd(e)||this._isRangeEnd(e)||!this._isInRange(e))return!1;let h=this.rows[o][d+1];if(!h){const _=this.rows[o+1];h=_&&_[0]}return h&&!this._isRangeStart(h.compareValue)}_isComparisonEnd(e){return NY(e,this.comparisonStart,this.comparisonEnd)}_isInComparisonRange(e){return BY(e,this.comparisonStart,this.comparisonEnd,this.isRange)}_isComparisonIdentical(e){return this.comparisonStart===this.comparisonEnd&&e===this.comparisonStart}_isPreviewStart(e){return FY(e,this.previewStart,this.previewEnd)}_isPreviewEnd(e){return NY(e,this.previewStart,this.previewEnd)}_isInPreview(e){return BY(e,this.previewStart,this.previewEnd,this.isRange)}_getDescribedby(e){return this.isRange?this.startValue===e&&this.endValue===e?`${this._startDateLabelId} ${this._endDateLabelId}`:this.startValue===e?this._startDateLabelId:this.endValue===e?this._endDateLabelId:null:null}_getCellFromElement(e){const o=LY(e);if(o){const d=o.getAttribute("data-mat-row"),h=o.getAttribute("data-mat-col");if(d&&h)return this.rows[parseInt(d)][parseInt(h)]}return null}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(et))},i.\u0275cmp=_e({type:i,selectors:[["","mat-calendar-body",""]],hostAttrs:[1,"mat-calendar-body"],inputs:{label:"label",rows:"rows",todayValue:"todayValue",startValue:"startValue",endValue:"endValue",labelMinRequiredCells:"labelMinRequiredCells",numCols:"numCols",activeCell:"activeCell",isRange:"isRange",cellAspectRatio:"cellAspectRatio",comparisonStart:"comparisonStart",comparisonEnd:"comparisonEnd",previewStart:"previewStart",previewEnd:"previewEnd",startDateAccessibleName:"startDateAccessibleName",endDateAccessibleName:"endDateAccessibleName"},outputs:{selectedValueChange:"selectedValueChange",previewChange:"previewChange",activeDateChange:"activeDateChange",dragStarted:"dragStarted",dragEnded:"dragEnded"},exportAs:["matCalendarBody"],features:[jn],attrs:Xse,decls:6,vars:6,consts:[["aria-hidden","true",4,"ngIf"],["role","row",4,"ngFor","ngForOf"],[1,"mat-calendar-body-hidden-label",3,"id"],["aria-hidden","true"],[1,"mat-calendar-body-label"],["role","row"],["class","mat-calendar-body-label",3,"paddingTop","paddingBottom",4,"ngIf"],["role","gridcell","class","mat-calendar-body-cell-container",3,"width","paddingTop","paddingBottom",4,"ngFor","ngForOf"],["role","gridcell",1,"mat-calendar-body-cell-container"],["type","button",1,"mat-calendar-body-cell",3,"ngClass","tabindex","click","focus"],[1,"mat-calendar-body-cell-content","mat-focus-indicator"],["aria-hidden","true",1,"mat-calendar-body-cell-preview"]],template:function(e,o){1&e&&(J(0,Zse,3,6,"tr",0),J(1,Jse,3,2,"tr",1),I(2,"label",2),Y(3),O(),I(4,"label",2),Y(5),O()),2&e&&(z("ngIf",o._firstRowOffset=a&&i===e}function BY(i,a,e,o){return o&&null!==a&&null!==e&&a!==e&&i>=a&&i<=e}function Cee(i){const a=i.changedTouches[0];return document.elementFromPoint(a.clientX,a.clientY)}class Zo{constructor(a,e){this.start=a,this.end=e}}let Pg=(()=>{class i{constructor(e,o){this.selection=e,this._adapter=o,this._selectionChanged=new He,this.selectionChanged=this._selectionChanged,this.selection=e}updateSelection(e,o){const d=this.selection;this.selection=e,this._selectionChanged.next({selection:e,source:o,oldValue:d})}ngOnDestroy(){this._selectionChanged.complete()}_isValidDateInstance(e){return this._adapter.isDateInstance(e)&&this._adapter.isValid(e)}}return i.\u0275fac=function(e){Js()},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),hle=(()=>{class i extends Pg{constructor(e){super(null,e)}add(e){super.updateSelection(e,this)}isValid(){return null!=this.selection&&this._isValidDateInstance(this.selection)}isComplete(){return null!=this.selection}clone(){const e=new i(this._adapter);return e.updateSelection(this.selection,this),e}}return i.\u0275fac=function(e){return new(e||i)(ae(gi))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();const See={provide:Pg,deps:[[new wa,new Mo,Pg],gi],useFactory:function ple(i,a){return i||new hle(a)}},lz=new be("MAT_DATE_RANGE_SELECTION_STRATEGY");let Dee=(()=>{class i{get activeDate(){return this._activeDate}set activeDate(e){const o=this._activeDate,d=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))||this._dateAdapter.today();this._activeDate=this._dateAdapter.clampDate(d,this.minDate,this.maxDate),this._hasSameMonthAndYear(o,this._activeDate)||this._init()}get selected(){return this._selected}set selected(e){this._selected=e instanceof Zo?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e)),this._setRanges(this._selected)}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}constructor(e,o,d,h,_){this._changeDetectorRef=e,this._dateFormats=o,this._dateAdapter=d,this._dir=h,this._rangeStrategy=_,this._rerenderSubscription=xt.EMPTY,this.activeDrag=null,this.selectedChange=new we,this._userSelection=new we,this.dragStarted=new we,this.dragEnded=new we,this.activeDateChange=new we,this._activeDate=this._dateAdapter.today()}ngAfterContentInit(){this._rerenderSubscription=this._dateAdapter.localeChanges.pipe(wi(null)).subscribe(()=>this._init())}ngOnChanges(e){const o=e.comparisonStart||e.comparisonEnd;o&&!o.firstChange&&this._setRanges(this.selected),e.activeDrag&&!this.activeDrag&&this._clearPreview()}ngOnDestroy(){this._rerenderSubscription.unsubscribe()}_dateSelected(e){const o=e.value,d=this._getDateFromDayOfMonth(o);let h,_;this._selected instanceof Zo?(h=this._getDateInCurrentMonth(this._selected.start),_=this._getDateInCurrentMonth(this._selected.end)):h=_=this._getDateInCurrentMonth(this._selected),(h!==o||_!==o)&&this.selectedChange.emit(d),this._userSelection.emit({value:d,event:e.event}),this._clearPreview(),this._changeDetectorRef.markForCheck()}_updateActiveDate(e){const d=this._activeDate;this.activeDate=this._getDateFromDayOfMonth(e.value),this._dateAdapter.compareDate(d,this.activeDate)&&this.activeDateChange.emit(this._activeDate)}_handleCalendarBodyKeydown(e){const o=this._activeDate,d=this._isRtl();switch(e.keyCode){case 37:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,d?1:-1);break;case 39:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,d?-1:1);break;case 38:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,-7);break;case 40:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,7);break;case 36:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,1-this._dateAdapter.getDate(this._activeDate));break;case 35:this.activeDate=this._dateAdapter.addCalendarDays(this._activeDate,this._dateAdapter.getNumDaysInMonth(this._activeDate)-this._dateAdapter.getDate(this._activeDate));break;case 33:this.activeDate=e.altKey?this._dateAdapter.addCalendarYears(this._activeDate,-1):this._dateAdapter.addCalendarMonths(this._activeDate,-1);break;case 34:this.activeDate=e.altKey?this._dateAdapter.addCalendarYears(this._activeDate,1):this._dateAdapter.addCalendarMonths(this._activeDate,1);break;case 13:case 32:return this._selectionKeyPressed=!0,void(this._canSelect(this._activeDate)&&e.preventDefault());case 27:return void(null!=this._previewEnd&&!pr(e)&&(this._clearPreview(),this.activeDrag?this.dragEnded.emit({value:null,event:e}):(this.selectedChange.emit(null),this._userSelection.emit({value:null,event:e})),e.preventDefault(),e.stopPropagation()));default:return}this._dateAdapter.compareDate(o,this.activeDate)&&(this.activeDateChange.emit(this.activeDate),this._focusActiveCellAfterViewChecked()),e.preventDefault()}_handleCalendarBodyKeyup(e){(32===e.keyCode||13===e.keyCode)&&(this._selectionKeyPressed&&this._canSelect(this._activeDate)&&this._dateSelected({value:this._dateAdapter.getDate(this._activeDate),event:e}),this._selectionKeyPressed=!1)}_init(){this._setRanges(this.selected),this._todayDate=this._getCellCompareValue(this._dateAdapter.today()),this._monthLabel=this._dateFormats.display.monthLabel?this._dateAdapter.format(this.activeDate,this._dateFormats.display.monthLabel):this._dateAdapter.getMonthNames("short")[this._dateAdapter.getMonth(this.activeDate)].toLocaleUpperCase();let e=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),this._dateAdapter.getMonth(this.activeDate),1);this._firstWeekOffset=(7+this._dateAdapter.getDayOfWeek(e)-this._dateAdapter.getFirstDayOfWeek())%7,this._initWeekdays(),this._createWeekCells(),this._changeDetectorRef.markForCheck()}_focusActiveCell(e){this._matCalendarBody._focusActiveCell(e)}_focusActiveCellAfterViewChecked(){this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked()}_previewChanged({event:e,value:o}){if(this._rangeStrategy){const _=o?o.rawValue:null,w=this._rangeStrategy.createPreview(_,this.selected,e);if(this._previewStart=this._getCellCompareValue(w.start),this._previewEnd=this._getCellCompareValue(w.end),this.activeDrag&&_){var d,h;const D=null===(d=(h=this._rangeStrategy).createDrag)||void 0===d?void 0:d.call(h,this.activeDrag.value,this.selected,_,e);D&&(this._previewStart=this._getCellCompareValue(D.start),this._previewEnd=this._getCellCompareValue(D.end))}this._changeDetectorRef.detectChanges()}}_dragEnded(e){if(this.activeDrag)if(e.value){var o,d;const h=null===(o=this._rangeStrategy)||void 0===o||null===(d=o.createDrag)||void 0===d?void 0:d.call(o,this.activeDrag.value,this.selected,e.value,e.event);this.dragEnded.emit({value:h??null,event:e.event})}else this.dragEnded.emit({value:null,event:e.event})}_getDateFromDayOfMonth(e){return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),this._dateAdapter.getMonth(this.activeDate),e)}_initWeekdays(){const e=this._dateAdapter.getFirstDayOfWeek(),o=this._dateAdapter.getDayOfWeekNames("narrow");let h=this._dateAdapter.getDayOfWeekNames("long").map((_,w)=>({long:_,narrow:o[w]}));this._weekdays=h.slice(e).concat(h.slice(0,e))}_createWeekCells(){const e=this._dateAdapter.getNumDaysInMonth(this.activeDate),o=this._dateAdapter.getDateNames();this._weeks=[[]];for(let d=0,h=this._firstWeekOffset;d=0)&&(!this.maxDate||this._dateAdapter.compareDate(e,this.maxDate)<=0)&&(!this.dateFilter||this.dateFilter(e))}_getDateInCurrentMonth(e){return e&&this._hasSameMonthAndYear(e,this.activeDate)?this._dateAdapter.getDate(e):null}_hasSameMonthAndYear(e,o){return!(!e||!o||this._dateAdapter.getMonth(e)!=this._dateAdapter.getMonth(o)||this._dateAdapter.getYear(e)!=this._dateAdapter.getYear(o))}_getCellCompareValue(e){if(e){const o=this._dateAdapter.getYear(e),d=this._dateAdapter.getMonth(e),h=this._dateAdapter.getDate(e);return new Date(o,d,h).getTime()}return null}_isRtl(){return this._dir&&"rtl"===this._dir.value}_setRanges(e){e instanceof Zo?(this._rangeStart=this._getCellCompareValue(e.start),this._rangeEnd=this._getCellCompareValue(e.end),this._isRange=!0):(this._rangeStart=this._rangeEnd=this._getCellCompareValue(e),this._isRange=!1),this._comparisonRangeStart=this._getCellCompareValue(this.comparisonStart),this._comparisonRangeEnd=this._getCellCompareValue(this.comparisonEnd)}_canSelect(e){return!this.dateFilter||this.dateFilter(e)}_clearPreview(){this._previewStart=this._previewEnd=null}}return i.\u0275fac=function(e){return new(e||i)(F(Jt),F(jf,8),F(gi,8),F(Ci,8),F(lz,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-month-view"]],viewQuery:function(e,o){if(1&e&&ct(B1,5),2&e){let d;Pe(d=Ae())&&(o._matCalendarBody=d.first)}},inputs:{activeDate:"activeDate",selected:"selected",minDate:"minDate",maxDate:"maxDate",dateFilter:"dateFilter",dateClass:"dateClass",comparisonStart:"comparisonStart",comparisonEnd:"comparisonEnd",startDateAccessibleName:"startDateAccessibleName",endDateAccessibleName:"endDateAccessibleName",activeDrag:"activeDrag"},outputs:{selectedChange:"selectedChange",_userSelection:"_userSelection",dragStarted:"dragStarted",dragEnded:"dragEnded",activeDateChange:"activeDateChange"},exportAs:["matMonthView"],features:[jn],decls:7,vars:15,consts:[["role","grid",1,"mat-calendar-table"],[1,"mat-calendar-table-header"],["scope","col",4,"ngFor","ngForOf"],["aria-hidden","true","colspan","7",1,"mat-calendar-table-header-divider"],["mat-calendar-body","",3,"label","rows","todayValue","startValue","endValue","comparisonStart","comparisonEnd","previewStart","previewEnd","isRange","labelMinRequiredCells","activeCell","startDateAccessibleName","endDateAccessibleName","selectedValueChange","activeDateChange","previewChange","dragStarted","dragEnded","keyup","keydown"],["scope","col"],[1,"cdk-visually-hidden"],["aria-hidden","true"]],template:function(e,o){1&e&&(I(0,"table",0)(1,"thead",1)(2,"tr"),J(3,ele,5,2,"th",2),O(),I(4,"tr"),pe(5,"th",3),O()(),I(6,"tbody",4),Q("selectedValueChange",function(h){return o._dateSelected(h)})("activeDateChange",function(h){return o._updateActiveDate(h)})("previewChange",function(h){return o._previewChanged(h)})("dragStarted",function(h){return o.dragStarted.emit(h)})("dragEnded",function(h){return o._dragEnded(h)})("keyup",function(h){return o._handleCalendarBodyKeyup(h)})("keydown",function(h){return o._handleCalendarBodyKeydown(h)}),O()()),2&e&&(N(3),z("ngForOf",o._weekdays),N(3),z("label",o._monthLabel)("rows",o._weeks)("todayValue",o._todayDate)("startValue",o._rangeStart)("endValue",o._rangeEnd)("comparisonStart",o._comparisonRangeStart)("comparisonEnd",o._comparisonRangeEnd)("previewStart",o._previewStart)("previewEnd",o._previewEnd)("isRange",o._isRange)("labelMinRequiredCells",3)("activeCell",o._dateAdapter.getDate(o.activeDate)-1)("startDateAccessibleName",o.startDateAccessibleName)("endDateAccessibleName",o.endDateAccessibleName))},dependencies:[Mn,B1],encapsulation:2,changeDetection:0}),i})();const hl=24;let Mee=(()=>{class i{get activeDate(){return this._activeDate}set activeDate(e){let o=this._activeDate;const d=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))||this._dateAdapter.today();this._activeDate=this._dateAdapter.clampDate(d,this.minDate,this.maxDate),Tee(this._dateAdapter,o,this._activeDate,this.minDate,this.maxDate)||this._init()}get selected(){return this._selected}set selected(e){this._selected=e instanceof Zo?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e)),this._setSelectedYear(e)}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}constructor(e,o,d){this._changeDetectorRef=e,this._dateAdapter=o,this._dir=d,this._rerenderSubscription=xt.EMPTY,this.selectedChange=new we,this.yearSelected=new we,this.activeDateChange=new we,this._activeDate=this._dateAdapter.today()}ngAfterContentInit(){this._rerenderSubscription=this._dateAdapter.localeChanges.pipe(wi(null)).subscribe(()=>this._init())}ngOnDestroy(){this._rerenderSubscription.unsubscribe()}_init(){this._todayYear=this._dateAdapter.getYear(this._dateAdapter.today());const o=this._dateAdapter.getYear(this._activeDate)-gI(this._dateAdapter,this.activeDate,this.minDate,this.maxDate);this._years=[];for(let d=0,h=[];dthis._createCellForYear(_))),h=[]);this._changeDetectorRef.markForCheck()}_yearSelected(e){const o=e.value,d=this._dateAdapter.createDate(o,0,1),h=this._getDateFromYear(o);this.yearSelected.emit(d),this.selectedChange.emit(h)}_updateActiveDate(e){const d=this._activeDate;this.activeDate=this._getDateFromYear(e.value),this._dateAdapter.compareDate(d,this.activeDate)&&this.activeDateChange.emit(this.activeDate)}_handleCalendarBodyKeydown(e){const o=this._activeDate,d=this._isRtl();switch(e.keyCode){case 37:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,d?1:-1);break;case 39:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,d?-1:1);break;case 38:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,-4);break;case 40:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,4);break;case 36:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,-gI(this._dateAdapter,this.activeDate,this.minDate,this.maxDate));break;case 35:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,hl-gI(this._dateAdapter,this.activeDate,this.minDate,this.maxDate)-1);break;case 33:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?10*-hl:-hl);break;case 34:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?10*hl:hl);break;case 13:case 32:this._selectionKeyPressed=!0;break;default:return}this._dateAdapter.compareDate(o,this.activeDate)&&this.activeDateChange.emit(this.activeDate),this._focusActiveCellAfterViewChecked(),e.preventDefault()}_handleCalendarBodyKeyup(e){(32===e.keyCode||13===e.keyCode)&&(this._selectionKeyPressed&&this._yearSelected({value:this._dateAdapter.getYear(this._activeDate),event:e}),this._selectionKeyPressed=!1)}_getActiveCell(){return gI(this._dateAdapter,this.activeDate,this.minDate,this.maxDate)}_focusActiveCell(){this._matCalendarBody._focusActiveCell()}_focusActiveCellAfterViewChecked(){this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked()}_getDateFromYear(e){const o=this._dateAdapter.getMonth(this.activeDate),d=this._dateAdapter.getNumDaysInMonth(this._dateAdapter.createDate(e,o,1));return this._dateAdapter.createDate(e,o,Math.min(this._dateAdapter.getDate(this.activeDate),d))}_createCellForYear(e){const o=this._dateAdapter.createDate(e,0,1),d=this._dateAdapter.getYearName(o),h=this.dateClass?this.dateClass(o,"multi-year"):void 0;return new RY(e,d,d,this._shouldEnableYear(e),h)}_shouldEnableYear(e){if(null==e||this.maxDate&&e>this._dateAdapter.getYear(this.maxDate)||this.minDate&&e{class i{get activeDate(){return this._activeDate}set activeDate(e){let o=this._activeDate;const d=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))||this._dateAdapter.today();this._activeDate=this._dateAdapter.clampDate(d,this.minDate,this.maxDate),this._dateAdapter.getYear(o)!==this._dateAdapter.getYear(this._activeDate)&&this._init()}get selected(){return this._selected}set selected(e){this._selected=e instanceof Zo?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e)),this._setSelectedMonth(e)}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}constructor(e,o,d,h){this._changeDetectorRef=e,this._dateFormats=o,this._dateAdapter=d,this._dir=h,this._rerenderSubscription=xt.EMPTY,this.selectedChange=new we,this.monthSelected=new we,this.activeDateChange=new we,this._activeDate=this._dateAdapter.today()}ngAfterContentInit(){this._rerenderSubscription=this._dateAdapter.localeChanges.pipe(wi(null)).subscribe(()=>this._init())}ngOnDestroy(){this._rerenderSubscription.unsubscribe()}_monthSelected(e){const o=e.value,d=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),o,1);this.monthSelected.emit(d);const h=this._getDateFromMonth(o);this.selectedChange.emit(h)}_updateActiveDate(e){const d=this._activeDate;this.activeDate=this._getDateFromMonth(e.value),this._dateAdapter.compareDate(d,this.activeDate)&&this.activeDateChange.emit(this.activeDate)}_handleCalendarBodyKeydown(e){const o=this._activeDate,d=this._isRtl();switch(e.keyCode){case 37:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,d?1:-1);break;case 39:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,d?-1:1);break;case 38:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,-4);break;case 40:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,4);break;case 36:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,-this._dateAdapter.getMonth(this._activeDate));break;case 35:this.activeDate=this._dateAdapter.addCalendarMonths(this._activeDate,11-this._dateAdapter.getMonth(this._activeDate));break;case 33:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?-10:-1);break;case 34:this.activeDate=this._dateAdapter.addCalendarYears(this._activeDate,e.altKey?10:1);break;case 13:case 32:this._selectionKeyPressed=!0;break;default:return}this._dateAdapter.compareDate(o,this.activeDate)&&(this.activeDateChange.emit(this.activeDate),this._focusActiveCellAfterViewChecked()),e.preventDefault()}_handleCalendarBodyKeyup(e){(32===e.keyCode||13===e.keyCode)&&(this._selectionKeyPressed&&this._monthSelected({value:this._dateAdapter.getMonth(this._activeDate),event:e}),this._selectionKeyPressed=!1)}_init(){this._setSelectedMonth(this.selected),this._todayMonth=this._getMonthInCurrentYear(this._dateAdapter.today()),this._yearLabel=this._dateAdapter.getYearName(this.activeDate);let e=this._dateAdapter.getMonthNames("short");this._months=[[0,1,2,3],[4,5,6,7],[8,9,10,11]].map(o=>o.map(d=>this._createCellForMonth(d,e[d]))),this._changeDetectorRef.markForCheck()}_focusActiveCell(){this._matCalendarBody._focusActiveCell()}_focusActiveCellAfterViewChecked(){this._matCalendarBody._scheduleFocusActiveCellAfterViewChecked()}_getMonthInCurrentYear(e){return e&&this._dateAdapter.getYear(e)==this._dateAdapter.getYear(this.activeDate)?this._dateAdapter.getMonth(e):null}_getDateFromMonth(e){const o=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),e,1),d=this._dateAdapter.getNumDaysInMonth(o);return this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),e,Math.min(this._dateAdapter.getDate(this.activeDate),d))}_createCellForMonth(e,o){const d=this._dateAdapter.createDate(this._dateAdapter.getYear(this.activeDate),e,1),h=this._dateAdapter.format(d,this._dateFormats.display.monthYearA11yLabel),_=this.dateClass?this.dateClass(d,"year"):void 0;return new RY(e,o.toLocaleUpperCase(),h,this._shouldEnableMonth(e),_)}_shouldEnableMonth(e){const o=this._dateAdapter.getYear(this.activeDate);if(null==e||this._isYearAndMonthAfterMaxDate(o,e)||this._isYearAndMonthBeforeMinDate(o,e))return!1;if(!this.dateFilter)return!0;for(let h=this._dateAdapter.createDate(o,e,1);this._dateAdapter.getMonth(h)==e;h=this._dateAdapter.addCalendarDays(h,1))if(this.dateFilter(h))return!0;return!1}_isYearAndMonthAfterMaxDate(e,o){if(this.maxDate){const d=this._dateAdapter.getYear(this.maxDate),h=this._dateAdapter.getMonth(this.maxDate);return e>d||e===d&&o>h}return!1}_isYearAndMonthBeforeMinDate(e,o){if(this.minDate){const d=this._dateAdapter.getYear(this.minDate),h=this._dateAdapter.getMonth(this.minDate);return e{class i{constructor(e,o,d,h,_){this._intl=e,this.calendar=o,this._dateAdapter=d,this._dateFormats=h,this._id="mat-calendar-header-"+yle++,this._periodButtonLabelId=`${this._id}-period-label`,this.calendar.stateChanges.subscribe(()=>_.markForCheck())}get periodButtonText(){return"month"==this.calendar.currentView?this._dateAdapter.format(this.calendar.activeDate,this._dateFormats.display.monthYearLabel).toLocaleUpperCase():"year"==this.calendar.currentView?this._dateAdapter.getYearName(this.calendar.activeDate):this._intl.formatYearRange(...this._formatMinAndMaxYearLabels())}get periodButtonDescription(){return"month"==this.calendar.currentView?this._dateAdapter.format(this.calendar.activeDate,this._dateFormats.display.monthYearLabel).toLocaleUpperCase():"year"==this.calendar.currentView?this._dateAdapter.getYearName(this.calendar.activeDate):this._intl.formatYearRangeLabel(...this._formatMinAndMaxYearLabels())}get periodButtonLabel(){return"month"==this.calendar.currentView?this._intl.switchToMultiYearViewLabel:this._intl.switchToMonthViewLabel}get prevButtonLabel(){return{month:this._intl.prevMonthLabel,year:this._intl.prevYearLabel,"multi-year":this._intl.prevMultiYearLabel}[this.calendar.currentView]}get nextButtonLabel(){return{month:this._intl.nextMonthLabel,year:this._intl.nextYearLabel,"multi-year":this._intl.nextMultiYearLabel}[this.calendar.currentView]}currentPeriodClicked(){this.calendar.currentView="month"==this.calendar.currentView?"multi-year":"month"}previousClicked(){this.calendar.activeDate="month"==this.calendar.currentView?this._dateAdapter.addCalendarMonths(this.calendar.activeDate,-1):this._dateAdapter.addCalendarYears(this.calendar.activeDate,"year"==this.calendar.currentView?-1:-hl)}nextClicked(){this.calendar.activeDate="month"==this.calendar.currentView?this._dateAdapter.addCalendarMonths(this.calendar.activeDate,1):this._dateAdapter.addCalendarYears(this.calendar.activeDate,"year"==this.calendar.currentView?1:hl)}previousEnabled(){return!this.calendar.minDate||!this.calendar.minDate||!this._isSameView(this.calendar.activeDate,this.calendar.minDate)}nextEnabled(){return!this.calendar.maxDate||!this._isSameView(this.calendar.activeDate,this.calendar.maxDate)}_isSameView(e,o){return"month"==this.calendar.currentView?this._dateAdapter.getYear(e)==this._dateAdapter.getYear(o)&&this._dateAdapter.getMonth(e)==this._dateAdapter.getMonth(o):"year"==this.calendar.currentView?this._dateAdapter.getYear(e)==this._dateAdapter.getYear(o):Tee(this._dateAdapter,e,o,this.calendar.minDate,this.calendar.maxDate)}_formatMinAndMaxYearLabels(){const o=this._dateAdapter.getYear(this.calendar.activeDate)-gI(this._dateAdapter,this.calendar.activeDate,this.calendar.minDate,this.calendar.maxDate),d=o+hl-1;return[this._dateAdapter.getYearName(this._dateAdapter.createDate(o,0,1)),this._dateAdapter.getYearName(this._dateAdapter.createDate(d,0,1))]}}return i.\u0275fac=function(e){return new(e||i)(F(mI),F(bn(()=>HY)),F(gi,8),F(jf,8),F(Jt))},i.\u0275cmp=_e({type:i,selectors:[["mat-calendar-header"]],exportAs:["matCalendarHeader"],ngContentSelectors:tle,decls:13,vars:11,consts:[[1,"mat-calendar-header"],[1,"mat-calendar-controls"],["mat-button","","type","button","aria-live","polite",1,"mat-calendar-period-button",3,"click"],["aria-hidden","true"],["viewBox","0 0 10 5","focusable","false","aria-hidden","true",1,"mat-calendar-arrow"],["points","0,0 5,5 10,0"],[1,"mat-calendar-spacer"],["mat-icon-button","","type","button",1,"mat-calendar-previous-button",3,"disabled","click"],["mat-icon-button","","type","button",1,"mat-calendar-next-button",3,"disabled","click"],[1,"mat-calendar-hidden-label",3,"id"]],template:function(e,o){1&e&&(On(),I(0,"div",0)(1,"div",1)(2,"button",2),Q("click",function(){return o.currentPeriodClicked()}),I(3,"span",3),Y(4),O(),Wr(),I(5,"svg",4),pe(6,"polygon",5),O()(),xc(),pe(7,"div",6),ut(8),I(9,"button",7),Q("click",function(){return o.previousClicked()}),O(),I(10,"button",8),Q("click",function(){return o.nextClicked()}),O()()(),I(11,"label",9),Y(12),O()),2&e&&(N(2),Ve("aria-label",o.periodButtonLabel)("aria-describedby",o._periodButtonLabelId),N(2),Sn(o.periodButtonText),N(1),st("mat-calendar-invert","month"!==o.calendar.currentView),N(4),z("disabled",!o.previousEnabled()),Ve("aria-label",o.prevButtonLabel),N(1),z("disabled",!o.nextEnabled()),Ve("aria-label",o.nextButtonLabel),N(1),z("id",o._periodButtonLabelId),N(1),Sn(o.periodButtonDescription))},dependencies:[hi,xd],encapsulation:2,changeDetection:0}),i})(),HY=(()=>{class i{get startAt(){return this._startAt}set startAt(e){this._startAt=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get selected(){return this._selected}set selected(e){this._selected=e instanceof Zo?e:this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get minDate(){return this._minDate}set minDate(e){this._minDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get maxDate(){return this._maxDate}set maxDate(e){this._maxDate=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get activeDate(){return this._clampedActiveDate}set activeDate(e){this._clampedActiveDate=this._dateAdapter.clampDate(e,this.minDate,this.maxDate),this.stateChanges.next(),this._changeDetectorRef.markForCheck()}get currentView(){return this._currentView}set currentView(e){const o=this._currentView!==e?e:null;this._currentView=e,this._moveFocusOnNextTick=!0,this._changeDetectorRef.markForCheck(),o&&this.viewChanged.emit(o)}constructor(e,o,d,h){this._dateAdapter=o,this._dateFormats=d,this._changeDetectorRef=h,this._moveFocusOnNextTick=!1,this.startView="month",this.selectedChange=new we,this.yearSelected=new we,this.monthSelected=new we,this.viewChanged=new we(!0),this._userSelection=new we,this._userDragDrop=new we,this._activeDrag=null,this.stateChanges=new He,this._intlChanges=e.changes.subscribe(()=>{h.markForCheck(),this.stateChanges.next()})}ngAfterContentInit(){this._calendarHeaderPortal=new Fu(this.headerComponent||ble),this.activeDate=this.startAt||this._dateAdapter.today(),this._currentView=this.startView}ngAfterViewChecked(){this._moveFocusOnNextTick&&(this._moveFocusOnNextTick=!1,this.focusActiveCell())}ngOnDestroy(){this._intlChanges.unsubscribe(),this.stateChanges.complete()}ngOnChanges(e){const o=e.minDate&&!this._dateAdapter.sameDate(e.minDate.previousValue,e.minDate.currentValue)?e.minDate:void 0,d=e.maxDate&&!this._dateAdapter.sameDate(e.maxDate.previousValue,e.maxDate.currentValue)?e.maxDate:void 0,h=o||d||e.dateFilter;if(h&&!h.firstChange){const _=this._getCurrentViewComponent();_&&(this._changeDetectorRef.detectChanges(),_._init())}this.stateChanges.next()}focusActiveCell(){this._getCurrentViewComponent()._focusActiveCell(!1)}updateTodaysDate(){this._getCurrentViewComponent()._init()}_dateSelected(e){const o=e.value;(this.selected instanceof Zo||o&&!this._dateAdapter.sameDate(o,this.selected))&&this.selectedChange.emit(o),this._userSelection.emit(e)}_yearSelectedInMultiYearView(e){this.yearSelected.emit(e)}_monthSelectedInYearView(e){this.monthSelected.emit(e)}_goToDateInView(e,o){this.activeDate=e,this.currentView=o}_dragStarted(e){this._activeDrag=e}_dragEnded(e){this._activeDrag&&(e.value&&this._userDragDrop.emit(e),this._activeDrag=null)}_getCurrentViewComponent(){return this.monthView||this.yearView||this.multiYearView}}return i.\u0275fac=function(e){return new(e||i)(F(mI),F(gi,8),F(jf,8),F(Jt))},i.\u0275cmp=_e({type:i,selectors:[["mat-calendar"]],viewQuery:function(e,o){if(1&e&&(ct(Dee,5),ct(kee,5),ct(Mee,5)),2&e){let d;Pe(d=Ae())&&(o.monthView=d.first),Pe(d=Ae())&&(o.yearView=d.first),Pe(d=Ae())&&(o.multiYearView=d.first)}},hostAttrs:[1,"mat-calendar"],inputs:{headerComponent:"headerComponent",startAt:"startAt",startView:"startView",selected:"selected",minDate:"minDate",maxDate:"maxDate",dateFilter:"dateFilter",dateClass:"dateClass",comparisonStart:"comparisonStart",comparisonEnd:"comparisonEnd",startDateAccessibleName:"startDateAccessibleName",endDateAccessibleName:"endDateAccessibleName"},outputs:{selectedChange:"selectedChange",yearSelected:"yearSelected",monthSelected:"monthSelected",viewChanged:"viewChanged",_userSelection:"_userSelection",_userDragDrop:"_userDragDrop"},exportAs:["matCalendar"],features:[Ue([See]),jn],decls:5,vars:5,consts:[[3,"cdkPortalOutlet"],["cdkMonitorSubtreeFocus","","tabindex","-1",1,"mat-calendar-content",3,"ngSwitch"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","activeDrag","activeDateChange","_userSelection","dragStarted","dragEnded",4,"ngSwitchCase"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","monthSelected","selectedChange",4,"ngSwitchCase"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","yearSelected","selectedChange",4,"ngSwitchCase"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","activeDrag","activeDateChange","_userSelection","dragStarted","dragEnded"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","monthSelected","selectedChange"],[3,"activeDate","selected","dateFilter","maxDate","minDate","dateClass","activeDateChange","yearSelected","selectedChange"]],template:function(e,o){1&e&&(J(0,nle,0,0,"ng-template",0),I(1,"div",1),J(2,ile,1,11,"mat-month-view",2),J(3,rle,1,6,"mat-year-view",3),J(4,ale,1,6,"mat-multi-year-view",4),O()),2&e&&(z("cdkPortalOutlet",o._calendarHeaderPortal),N(1),z("ngSwitch",o.currentView),N(1),z("ngSwitchCase","month"),N(1),z("ngSwitchCase","year"),N(1),z("ngSwitchCase","multi-year"))},dependencies:[td,mf,VB,ll,Dee,kee,Mee],styles:['.mat-calendar{display:block}.mat-calendar-header{padding:8px 8px 0 8px}.mat-calendar-content{padding:0 8px 8px 8px;outline:none}.mat-calendar-controls{display:flex;align-items:center;margin:5% calc(4.7142857143% - 16px)}.mat-calendar-spacer{flex:1 1 auto}.mat-calendar-period-button{min-width:0;margin:0 8px}.mat-calendar-arrow{display:inline-block;width:10px;height:5px;margin:0 0 0 5px;vertical-align:middle}.mat-calendar-arrow.mat-calendar-invert{transform:rotate(180deg)}[dir=rtl] .mat-calendar-arrow{margin:0 5px 0 0}.cdk-high-contrast-active .mat-calendar-arrow{fill:CanvasText}.mat-calendar-previous-button,.mat-calendar-next-button{position:relative}.mat-calendar-previous-button::after,.mat-calendar-next-button::after{top:0;left:0;right:0;bottom:0;position:absolute;content:"";margin:15.5px;border:0 solid currentColor;border-top-width:2px}[dir=rtl] .mat-calendar-previous-button,[dir=rtl] .mat-calendar-next-button{transform:rotate(180deg)}.mat-calendar-previous-button::after{border-left-width:2px;transform:translateX(2px) rotate(-45deg)}.mat-calendar-next-button::after{border-right-width:2px;transform:translateX(-2px) rotate(45deg)}.mat-calendar-table{border-spacing:0;border-collapse:collapse;width:100%}.mat-calendar-table-header th{text-align:center;padding:0 0 8px 0}.mat-calendar-table-header-divider{position:relative;height:1px}.mat-calendar-table-header-divider::after{content:"";position:absolute;top:0;left:-8px;right:-8px;height:1px}.mat-calendar-body-cell-content::before{margin:calc(calc(var(--mat-focus-indicator-border-width, 3px) + 3px) * -1)}.mat-calendar-body-cell:focus .mat-focus-indicator::before{content:""}.mat-calendar-hidden-label{display:none}'],encapsulation:2,changeDetection:0}),i})();const Eee={transformPanel:rr("transformPanel",[An("void => enter-dropdown",Ln("120ms cubic-bezier(0, 0, 0.2, 1)",dg([dt({opacity:0,transform:"scale(1, 0.8)"}),dt({opacity:1,transform:"scale(1, 1)"})]))),An("void => enter-dialog",Ln("150ms cubic-bezier(0, 0, 0.2, 1)",dg([dt({opacity:0,transform:"scale(0.7)"}),dt({transform:"none",opacity:1})]))),An("* => void",Ln("100ms linear",dt({opacity:0})))]),fadeInCalendar:rr("fadeInCalendar",[Fn("void",dt({opacity:0})),Fn("enter",dt({opacity:1})),An("void => *",Ln("120ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)"))])};let wle=0;const Iee=new be("mat-datepicker-scroll-strategy"),Cle={provide:Iee,deps:[ea],useFactory:function xle(i){return()=>i.scrollStrategies.reposition()}},Sle=Fs(class{constructor(i){this._elementRef=i}});let Dle=(()=>{class i extends Sle{constructor(e,o,d,h,_,w){super(e),this._changeDetectorRef=o,this._globalModel=d,this._dateAdapter=h,this._rangeSelectionStrategy=_,this._subscriptions=new xt,this._animationDone=new He,this._isAnimating=!1,this._actionsPortal=null,this._closeButtonText=w.closeCalendarLabel}ngOnInit(){this._animationState=this.datepicker.touchUi?"enter-dialog":"enter-dropdown"}ngAfterViewInit(){this._subscriptions.add(this.datepicker.stateChanges.subscribe(()=>{this._changeDetectorRef.markForCheck()})),this._calendar.focusActiveCell()}ngOnDestroy(){this._subscriptions.unsubscribe(),this._animationDone.complete()}_handleUserSelection(e){const o=this._model.selection,d=e.value,h=o instanceof Zo;if(h&&this._rangeSelectionStrategy){const _=this._rangeSelectionStrategy.selectionFinished(d,o,e.event);this._model.updateSelection(_,this)}else d&&(h||!this._dateAdapter.sameDate(d,o))&&this._model.add(d);(!this._model||this._model.isComplete())&&!this._actionsPortal&&this.datepicker.close()}_handleUserDragDrop(e){this._model.updateSelection(e.value,this)}_startExitAnimation(){this._animationState="void",this._changeDetectorRef.markForCheck()}_handleAnimationEvent(e){this._isAnimating="start"===e.phaseName,this._isAnimating||this._animationDone.next()}_getSelected(){return this._model.selection}_applyPendingSelection(){this._model!==this._globalModel&&this._globalModel.updateSelection(this._model.selection,this)}_assignActions(e,o){this._model=e?this._globalModel.clone():this._globalModel,this._actionsPortal=e,o&&this._changeDetectorRef.detectChanges()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(Pg),F(gi),F(lz,8),F(mI))},i.\u0275cmp=_e({type:i,selectors:[["mat-datepicker-content"]],viewQuery:function(e,o){if(1&e&&ct(HY,5),2&e){let d;Pe(d=Ae())&&(o._calendar=d.first)}},hostAttrs:[1,"mat-datepicker-content"],hostVars:3,hostBindings:function(e,o){1&e&&Ul("@transformPanel.start",function(h){return o._handleAnimationEvent(h)})("@transformPanel.done",function(h){return o._handleAnimationEvent(h)}),2&e&&(om("@transformPanel",o._animationState),st("mat-datepicker-content-touch",o.datepicker.touchUi))},inputs:{color:"color"},exportAs:["matDatepickerContent"],features:[Se],decls:5,vars:26,consts:[["cdkTrapFocus","","role","dialog",1,"mat-datepicker-content-container"],[3,"id","ngClass","startAt","startView","minDate","maxDate","dateFilter","headerComponent","selected","dateClass","comparisonStart","comparisonEnd","startDateAccessibleName","endDateAccessibleName","yearSelected","monthSelected","viewChanged","_userSelection","_userDragDrop"],[3,"cdkPortalOutlet"],["type","button","mat-raised-button","",1,"mat-datepicker-close-button",3,"color","focus","blur","click"]],template:function(e,o){if(1&e&&(I(0,"div",0)(1,"mat-calendar",1),Q("yearSelected",function(h){return o.datepicker._selectYear(h)})("monthSelected",function(h){return o.datepicker._selectMonth(h)})("viewChanged",function(h){return o.datepicker._viewChanged(h)})("_userSelection",function(h){return o._handleUserSelection(h)})("_userDragDrop",function(h){return o._handleUserDragDrop(h)}),O(),J(2,ole,0,0,"ng-template",2),I(3,"button",3),Q("focus",function(){return o._closeButtonFocused=!0})("blur",function(){return o._closeButtonFocused=!1})("click",function(){return o.datepicker.close()}),Y(4),O()()),2&e){let d;st("mat-datepicker-content-container-with-custom-header",o.datepicker.calendarHeaderComponent)("mat-datepicker-content-container-with-actions",o._actionsPortal),Ve("aria-modal",!0)("aria-labelledby",null!==(d=o._dialogLabelId)&&void 0!==d?d:void 0),N(1),z("id",o.datepicker.id)("ngClass",o.datepicker.panelClass)("startAt",o.datepicker.startAt)("startView",o.datepicker.startView)("minDate",o.datepicker._getMinDate())("maxDate",o.datepicker._getMaxDate())("dateFilter",o.datepicker._getDateFilter())("headerComponent",o.datepicker.calendarHeaderComponent)("selected",o._getSelected())("dateClass",o.datepicker.dateClass)("comparisonStart",o.comparisonStart)("comparisonEnd",o.comparisonEnd)("@fadeInCalendar","enter")("startDateAccessibleName",o.startDateAccessibleName)("endDateAccessibleName",o.endDateAccessibleName),N(1),z("cdkPortalOutlet",o._actionsPortal),N(1),st("cdk-visually-hidden",!o._closeButtonFocused),z("color",o.color||"primary"),N(1),Sn(o._closeButtonText)}},dependencies:[Ss,hi,E7,ll,HY],styles:[".mat-datepicker-content{display:block;border-radius:4px}.mat-datepicker-content .mat-calendar{width:296px;height:354px}.mat-datepicker-content .mat-datepicker-content-container-with-custom-header .mat-calendar{height:auto}.mat-datepicker-content .mat-datepicker-close-button{position:absolute;top:100%;left:0;margin-top:8px}.ng-animating .mat-datepicker-content .mat-datepicker-close-button{display:none}.mat-datepicker-content-container{display:flex;flex-direction:column;justify-content:space-between}.mat-datepicker-content-touch{display:block;max-height:80vh;position:relative;overflow:visible}.mat-datepicker-content-touch .mat-datepicker-content-container{min-height:312px;max-height:788px;min-width:250px;max-width:750px}.mat-datepicker-content-touch .mat-calendar{width:100%;height:auto}@media all and (orientation: landscape){.mat-datepicker-content-touch .mat-datepicker-content-container{width:64vh;height:80vh}}@media all and (orientation: portrait){.mat-datepicker-content-touch .mat-datepicker-content-container{width:80vw;height:100vw}.mat-datepicker-content-touch .mat-datepicker-content-container-with-actions{height:115vw}}"],encapsulation:2,data:{animation:[Eee.transformPanel,Eee.fadeInCalendar]},changeDetection:0}),i})(),Pee=(()=>{class i{get startAt(){return this._startAt||(this.datepickerInput?this.datepickerInput.getStartValue():null)}set startAt(e){this._startAt=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e))}get color(){return this._color||(this.datepickerInput?this.datepickerInput.getThemePalette():void 0)}set color(e){this._color=e}get touchUi(){return this._touchUi}set touchUi(e){this._touchUi=Ge(e)}get disabled(){return void 0===this._disabled&&this.datepickerInput?this.datepickerInput.disabled:!!this._disabled}set disabled(e){const o=Ge(e);o!==this._disabled&&(this._disabled=o,this.stateChanges.next(void 0))}get restoreFocus(){return this._restoreFocus}set restoreFocus(e){this._restoreFocus=Ge(e)}get panelClass(){return this._panelClass}set panelClass(e){this._panelClass=LN(e)}get opened(){return this._opened}set opened(e){Ge(e)?this.open():this.close()}_getMinDate(){return this.datepickerInput&&this.datepickerInput.min}_getMaxDate(){return this.datepickerInput&&this.datepickerInput.max}_getDateFilter(){return this.datepickerInput&&this.datepickerInput.dateFilter}constructor(e,o,d,h,_,w,D){this._overlay=e,this._ngZone=o,this._viewContainerRef=d,this._dateAdapter=_,this._dir=w,this._model=D,this._inputStateChanges=xt.EMPTY,this._document=St(ht),this.startView="month",this._touchUi=!1,this.xPosition="start",this.yPosition="below",this._restoreFocus=!0,this.yearSelected=new we,this.monthSelected=new we,this.viewChanged=new we(!0),this.openedStream=new we,this.closedStream=new we,this._opened=!1,this.id="mat-datepicker-"+wle++,this._focusedElementBeforeOpen=null,this._backdropHarnessClass=`${this.id}-backdrop`,this.stateChanges=new He,this._scrollStrategy=h}ngOnChanges(e){const o=e.xPosition||e.yPosition;if(o&&!o.firstChange&&this._overlayRef){const d=this._overlayRef.getConfig().positionStrategy;d instanceof pB&&(this._setConnectedPositions(d),this.opened&&this._overlayRef.updatePosition())}this.stateChanges.next(void 0)}ngOnDestroy(){this._destroyOverlay(),this.close(),this._inputStateChanges.unsubscribe(),this.stateChanges.complete()}select(e){this._model.add(e)}_selectYear(e){this.yearSelected.emit(e)}_selectMonth(e){this.monthSelected.emit(e)}_viewChanged(e){this.viewChanged.emit(e)}registerInput(e){return this._inputStateChanges.unsubscribe(),this.datepickerInput=e,this._inputStateChanges=e.stateChanges.subscribe(()=>this.stateChanges.next(void 0)),this._model}registerActions(e){var o;this._actionsPortal=e,null===(o=this._componentRef)||void 0===o||o.instance._assignActions(e,!0)}removeActions(e){var o;e===this._actionsPortal&&(this._actionsPortal=null,null===(o=this._componentRef)||void 0===o||o.instance._assignActions(null,!0))}open(){var e;this._opened||this.disabled||null!==(e=this._componentRef)&&void 0!==e&&e.instance._isAnimating||(this._focusedElementBeforeOpen=Vy(),this._openOverlay(),this._opened=!0,this.openedStream.emit())}close(){var e;if(!this._opened||null!==(e=this._componentRef)&&void 0!==e&&e.instance._isAnimating)return;const o=this._restoreFocus&&this._focusedElementBeforeOpen&&"function"==typeof this._focusedElementBeforeOpen.focus,d=()=>{this._opened&&(this._opened=!1,this.closedStream.emit())};if(this._componentRef){const{instance:h,location:_}=this._componentRef;h._startExitAnimation(),h._animationDone.pipe(Tn(1)).subscribe(()=>{const w=this._document.activeElement;o&&(!w||w===this._document.activeElement||_.nativeElement.contains(w))&&this._focusedElementBeforeOpen.focus(),this._focusedElementBeforeOpen=null,this._destroyOverlay()})}o?setTimeout(d):d()}_applyPendingSelection(){var e,o;null===(e=this._componentRef)||void 0===e||null===(o=e.instance)||void 0===o||o._applyPendingSelection()}_forwardContentValues(e){e.datepicker=this,e.color=this.color,e._dialogLabelId=this.datepickerInput.getOverlayLabelId(),e._assignActions(this._actionsPortal,!1)}_openOverlay(){this._destroyOverlay();const e=this.touchUi,o=new Fu(Dle,this._viewContainerRef),d=this._overlayRef=this._overlay.create(new Hf({positionStrategy:e?this._getDialogStrategy():this._getDropdownStrategy(),hasBackdrop:!0,backdropClass:[e?"cdk-overlay-dark-backdrop":"mat-overlay-transparent-backdrop",this._backdropHarnessClass],direction:this._dir,scrollStrategy:e?this._overlay.scrollStrategies.block():this._scrollStrategy(),panelClass:"mat-datepicker-"+(e?"dialog":"popup")}));this._getCloseStream(d).subscribe(h=>{h&&h.preventDefault(),this.close()}),d.keydownEvents().subscribe(h=>{const _=h.keyCode;(38===_||40===_||37===_||39===_||33===_||34===_)&&h.preventDefault()}),this._componentRef=d.attach(o),this._forwardContentValues(this._componentRef.instance),e||this._ngZone.onStable.pipe(Tn(1)).subscribe(()=>d.updatePosition())}_destroyOverlay(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=this._componentRef=null)}_getDialogStrategy(){return this._overlay.position().global().centerHorizontally().centerVertically()}_getDropdownStrategy(){const e=this._overlay.position().flexibleConnectedTo(this.datepickerInput.getConnectedOverlayOrigin()).withTransformOriginOn(".mat-datepicker-content").withFlexibleDimensions(!1).withViewportMargin(8).withLockedPosition();return this._setConnectedPositions(e)}_setConnectedPositions(e){const o="end"===this.xPosition?"end":"start",d="start"===o?"end":"start",h="above"===this.yPosition?"bottom":"top",_="top"===h?"bottom":"top";return e.withPositions([{originX:o,originY:_,overlayX:o,overlayY:h},{originX:o,originY:h,overlayX:o,overlayY:_},{originX:d,originY:_,overlayX:d,overlayY:h},{originX:d,originY:h,overlayX:d,overlayY:_}])}_getCloseStream(e){const o=["ctrlKey","shiftKey","metaKey"];return Wn(e.backdropClick(),e.detachments(),e.keydownEvents().pipe(Kn(d=>27===d.keyCode&&!pr(d)||this.datepickerInput&&pr(d,"altKey")&&38===d.keyCode&&o.every(h=>!pr(d,h)))))}}return i.\u0275fac=function(e){return new(e||i)(F(ea),F(et),F(mi),F(Iee),F(gi,8),F(Ci,8),F(Pg))},i.\u0275dir=me({type:i,inputs:{calendarHeaderComponent:"calendarHeaderComponent",startAt:"startAt",startView:"startView",color:"color",touchUi:"touchUi",disabled:"disabled",xPosition:"xPosition",yPosition:"yPosition",restoreFocus:"restoreFocus",dateClass:"dateClass",panelClass:"panelClass",opened:"opened"},outputs:{yearSelected:"yearSelected",monthSelected:"monthSelected",viewChanged:"viewChanged",openedStream:"opened",closedStream:"closed"},features:[jn]}),i})(),Ree=(()=>{class i extends Pee{}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275cmp=_e({type:i,selectors:[["mat-datepicker"]],exportAs:["matDatepicker"],features:[Ue([See,{provide:Pee,useExisting:i}]),Se],decls:0,vars:0,template:function(e,o){},encapsulation:2,changeDetection:0}),i})();class cz{constructor(a,e){this.target=a,this.targetElement=e,this.value=this.target.value}}let Mle=(()=>{class i{get value(){return this._model?this._getValueFromModel(this._model.selection):this._pendingValue}set value(e){this._assignValueProgrammatically(e)}get disabled(){return!!this._disabled||this._parentDisabled()}set disabled(e){const o=Ge(e),d=this._elementRef.nativeElement;this._disabled!==o&&(this._disabled=o,this.stateChanges.next(void 0)),o&&this._isInitialized&&d.blur&&d.blur()}_getValidators(){return[this._parseValidator,this._minValidator,this._maxValidator,this._filterValidator]}_registerModel(e){this._model=e,this._valueChangesSubscription.unsubscribe(),this._pendingValue&&this._assignValue(this._pendingValue),this._valueChangesSubscription=this._model.selectionChanged.subscribe(o=>{if(this._shouldHandleChangeEvent(o)){const d=this._getValueFromModel(o.selection);this._lastValueValid=this._isValidValue(d),this._cvaOnChange(d),this._onTouched(),this._formatValue(d),this.dateInput.emit(new cz(this,this._elementRef.nativeElement)),this.dateChange.emit(new cz(this,this._elementRef.nativeElement))}})}constructor(e,o,d){this._elementRef=e,this._dateAdapter=o,this._dateFormats=d,this.dateChange=new we,this.dateInput=new we,this.stateChanges=new He,this._onTouched=()=>{},this._validatorOnChange=()=>{},this._cvaOnChange=()=>{},this._valueChangesSubscription=xt.EMPTY,this._localeSubscription=xt.EMPTY,this._parseValidator=()=>this._lastValueValid?null:{matDatepickerParse:{text:this._elementRef.nativeElement.value}},this._filterValidator=h=>{const _=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(h.value));return!_||this._matchesFilter(_)?null:{matDatepickerFilter:!0}},this._minValidator=h=>{const _=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(h.value)),w=this._getMinDate();return!w||!_||this._dateAdapter.compareDate(w,_)<=0?null:{matDatepickerMin:{min:w,actual:_}}},this._maxValidator=h=>{const _=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(h.value)),w=this._getMaxDate();return!w||!_||this._dateAdapter.compareDate(w,_)>=0?null:{matDatepickerMax:{max:w,actual:_}}},this._lastValueValid=!1,this._localeSubscription=o.localeChanges.subscribe(()=>{this._assignValueProgrammatically(this.value)})}ngAfterViewInit(){this._isInitialized=!0}ngOnChanges(e){(function Tle(i,a){const e=Object.keys(i);for(let o of e){const{previousValue:d,currentValue:h}=i[o];if(!a.isDateInstance(d)||!a.isDateInstance(h))return!0;if(!a.sameDate(d,h))return!0}return!1})(e,this._dateAdapter)&&this.stateChanges.next(void 0)}ngOnDestroy(){this._valueChangesSubscription.unsubscribe(),this._localeSubscription.unsubscribe(),this.stateChanges.complete()}registerOnValidatorChange(e){this._validatorOnChange=e}validate(e){return this._validator?this._validator(e):null}writeValue(e){this._assignValueProgrammatically(e)}registerOnChange(e){this._cvaOnChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_onKeydown(e){pr(e,"altKey")&&40===e.keyCode&&["ctrlKey","shiftKey","metaKey"].every(h=>!pr(e,h))&&!this._elementRef.nativeElement.readOnly&&(this._openPopup(),e.preventDefault())}_onInput(e){const o=this._lastValueValid;let d=this._dateAdapter.parse(e,this._dateFormats.parse.dateInput);this._lastValueValid=this._isValidValue(d),d=this._dateAdapter.getValidDateOrNull(d);const h=!this._dateAdapter.sameDate(d,this.value);!d||h?this._cvaOnChange(d):(e&&!this.value&&this._cvaOnChange(d),o!==this._lastValueValid&&this._validatorOnChange()),h&&(this._assignValue(d),this.dateInput.emit(new cz(this,this._elementRef.nativeElement)))}_onChange(){this.dateChange.emit(new cz(this,this._elementRef.nativeElement))}_onBlur(){this.value&&this._formatValue(this.value),this._onTouched()}_formatValue(e){this._elementRef.nativeElement.value=null!=e?this._dateAdapter.format(e,this._dateFormats.display.dateInput):""}_assignValue(e){this._model?(this._assignValueToModel(e),this._pendingValue=null):this._pendingValue=e}_isValidValue(e){return!e||this._dateAdapter.isValid(e)}_parentDisabled(){return!1}_assignValueProgrammatically(e){e=this._dateAdapter.deserialize(e),this._lastValueValid=this._isValidValue(e),e=this._dateAdapter.getValidDateOrNull(e),this._assignValue(e),this._formatValue(e)}_matchesFilter(e){const o=this._getDateFilter();return!o||o(e)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(gi,8),F(jf,8))},i.\u0275dir=me({type:i,inputs:{value:"value",disabled:"disabled"},outputs:{dateChange:"dateChange",dateInput:"dateInput"},features:[jn]}),i})();const Ale={provide:pa,useExisting:bn(()=>dz),multi:!0},kle={provide:Vr,useExisting:bn(()=>dz),multi:!0};let dz=(()=>{class i extends Mle{set matDatepicker(e){e&&(this._datepicker=e,this._closedSubscription=e.closedStream.subscribe(()=>this._onTouched()),this._registerModel(e.registerInput(this)))}get min(){return this._min}set min(e){const o=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e));this._dateAdapter.sameDate(o,this._min)||(this._min=o,this._validatorOnChange())}get max(){return this._max}set max(e){const o=this._dateAdapter.getValidDateOrNull(this._dateAdapter.deserialize(e));this._dateAdapter.sameDate(o,this._max)||(this._max=o,this._validatorOnChange())}get dateFilter(){return this._dateFilter}set dateFilter(e){const o=this._matchesFilter(this.value);this._dateFilter=e,this._matchesFilter(this.value)!==o&&this._validatorOnChange()}constructor(e,o,d,h){super(e,o,d),this._formField=h,this._closedSubscription=xt.EMPTY,this._validator=ob.compose(super._getValidators())}getConnectedOverlayOrigin(){return this._formField?this._formField.getConnectedOverlayOrigin():this._elementRef}getOverlayLabelId(){return this._formField?this._formField.getLabelId():this._elementRef.nativeElement.getAttribute("aria-labelledby")}getThemePalette(){return this._formField?this._formField.color:void 0}getStartValue(){return this.value}ngOnDestroy(){super.ngOnDestroy(),this._closedSubscription.unsubscribe()}_openPopup(){this._datepicker&&this._datepicker.open()}_getValueFromModel(e){return e}_assignValueToModel(e){this._model&&this._model.updateSelection(e,this)}_getMinDate(){return this._min}_getMaxDate(){return this._max}_getDateFilter(){return this._dateFilter}_shouldHandleChangeEvent(e){return e.source!==this}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(gi,8),F(jf,8),F(Ag,8))},i.\u0275dir=me({type:i,selectors:[["input","matDatepicker",""]],hostAttrs:[1,"mat-datepicker-input"],hostVars:6,hostBindings:function(e,o){1&e&&Q("input",function(h){return o._onInput(h.target.value)})("change",function(){return o._onChange()})("blur",function(){return o._onBlur()})("keydown",function(h){return o._onKeydown(h)}),2&e&&(la("disabled",o.disabled),Ve("aria-haspopup",o._datepicker?"dialog":null)("aria-owns",(null==o._datepicker?null:o._datepicker.opened)&&o._datepicker.id||null)("min",o.min?o._dateAdapter.toIso8601(o.min):null)("max",o.max?o._dateAdapter.toIso8601(o.max):null)("data-mat-calendar",o._datepicker?o._datepicker.id:null))},inputs:{matDatepicker:"matDatepicker",min:"min",max:"max",dateFilter:["matDatepickerFilter","dateFilter"]},exportAs:["matDatepickerInput"],features:[Ue([Ale,kle,{provide:KJ,useExisting:i}]),Se]}),i})(),Ele=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["","matDatepickerToggleIcon",""]]}),i})(),Oee=(()=>{class i{get disabled(){return void 0===this._disabled&&this.datepicker?this.datepicker.disabled:!!this._disabled}set disabled(e){this._disabled=Ge(e)}constructor(e,o,d){this._intl=e,this._changeDetectorRef=o,this._stateChanges=xt.EMPTY;const h=Number(d);this.tabIndex=h||0===h?h:null}ngOnChanges(e){e.datepicker&&this._watchStateChanges()}ngOnDestroy(){this._stateChanges.unsubscribe()}ngAfterContentInit(){this._watchStateChanges()}_open(e){this.datepicker&&!this.disabled&&(this.datepicker.open(),e.stopPropagation())}_watchStateChanges(){const e=this.datepicker?this.datepicker.stateChanges:Ze(),o=this.datepicker&&this.datepicker.datepickerInput?this.datepicker.datepickerInput.stateChanges:Ze(),d=this.datepicker?Wn(this.datepicker.openedStream,this.datepicker.closedStream):Ze();this._stateChanges.unsubscribe(),this._stateChanges=Wn(this._intl.changes,e,o,d).subscribe(()=>this._changeDetectorRef.markForCheck())}}return i.\u0275fac=function(e){return new(e||i)(F(mI),F(Jt),Co("tabindex"))},i.\u0275cmp=_e({type:i,selectors:[["mat-datepicker-toggle"]],contentQueries:function(e,o,d){if(1&e&&Qt(d,Ele,5),2&e){let h;Pe(h=Ae())&&(o._customIcon=h.first)}},viewQuery:function(e,o){if(1&e&&ct(sle,5),2&e){let d;Pe(d=Ae())&&(o._button=d.first)}},hostAttrs:[1,"mat-datepicker-toggle"],hostVars:8,hostBindings:function(e,o){1&e&&Q("click",function(h){return o._open(h)}),2&e&&(Ve("tabindex",null)("data-mat-calendar",o.datepicker?o.datepicker.id:null),st("mat-datepicker-toggle-active",o.datepicker&&o.datepicker.opened)("mat-accent",o.datepicker&&"accent"===o.datepicker.color)("mat-warn",o.datepicker&&"warn"===o.datepicker.color))},inputs:{datepicker:["for","datepicker"],tabIndex:"tabIndex",ariaLabel:["aria-label","ariaLabel"],disabled:"disabled",disableRipple:"disableRipple"},exportAs:["matDatepickerToggle"],features:[jn],ngContentSelectors:dle,decls:4,vars:6,consts:[["mat-icon-button","","type","button",3,"disabled","disableRipple"],["button",""],["class","mat-datepicker-toggle-default-icon","viewBox","0 0 24 24","width","24px","height","24px","fill","currentColor","focusable","false",4,"ngIf"],["viewBox","0 0 24 24","width","24px","height","24px","fill","currentColor","focusable","false",1,"mat-datepicker-toggle-default-icon"],["d","M19 3h-1V1h-2v2H8V1H6v2H5c-1.11 0-1.99.9-1.99 2L3 19c0 1.1.89 2 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2zm0 16H5V8h14v11zM7 10h5v5H7z"]],template:function(e,o){1&e&&(On(cle),I(0,"button",0,1),J(2,lle,2,0,"svg",2),ut(3),O()),2&e&&(z("disabled",o.disabled)("disableRipple",o.disableRipple),Ve("aria-haspopup",o.datepicker?"dialog":null)("aria-label",o.ariaLabel||o._intl.openCalendarLabel)("tabindex",o.disabled?-1:o.tabIndex),N(2),z("ngIf",!o._customIcon))},dependencies:[en,xd],styles:[".mat-datepicker-toggle{pointer-events:auto}.cdk-high-contrast-active .mat-datepicker-toggle-default-icon{color:CanvasText}"],encapsulation:2,changeDetection:0}),i})(),Rle=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[mI,Cle],imports:[Ri,ab,pd,Xy,Rs,nn,ud]}),i})();const Ole=["button"],Lle=["*"],Fee=new be("MAT_BUTTON_TOGGLE_DEFAULT_OPTIONS"),Nee=new be("MatButtonToggleGroup"),Fle={provide:pa,useExisting:bn(()=>zee),multi:!0};let Bee=0;class Vee{constructor(a,e){this.source=a,this.value=e}}let zee=(()=>{class i{get name(){return this._name}set name(e){this._name=e,this._markButtonsForCheck()}get vertical(){return this._vertical}set vertical(e){this._vertical=Ge(e)}get value(){const e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e.map(o=>o.value):e[0]?e[0].value:void 0}set value(e){this._setSelectionByValue(e),this.valueChange.emit(this.value)}get selected(){const e=this._selectionModel?this._selectionModel.selected:[];return this.multiple?e:e[0]||null}get multiple(){return this._multiple}set multiple(e){this._multiple=Ge(e),this._markButtonsForCheck()}get disabled(){return this._disabled}set disabled(e){this._disabled=Ge(e),this._markButtonsForCheck()}constructor(e,o){this._changeDetector=e,this._vertical=!1,this._multiple=!1,this._disabled=!1,this._controlValueAccessorChangeFn=()=>{},this._onTouched=()=>{},this._name="mat-button-toggle-group-"+Bee++,this.valueChange=new we,this.change=new we,this.appearance=o&&o.appearance?o.appearance:"standard"}ngOnInit(){this._selectionModel=new Sg(this.multiple,void 0,!1)}ngAfterContentInit(){this._selectionModel.select(...this._buttonToggles.filter(e=>e.checked))}writeValue(e){this.value=e,this._changeDetector.markForCheck()}registerOnChange(e){this._controlValueAccessorChangeFn=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e}_emitChangeEvent(e){const o=new Vee(e,this.value);this._controlValueAccessorChangeFn(o.value),this.change.emit(o)}_syncButtonToggle(e,o,d=!1,h=!1){!this.multiple&&this.selected&&!e.checked&&(this.selected.checked=!1),this._selectionModel?o?this._selectionModel.select(e):this._selectionModel.deselect(e):h=!0,h?Promise.resolve().then(()=>this._updateModelValue(e,d)):this._updateModelValue(e,d)}_isSelected(e){return this._selectionModel&&this._selectionModel.isSelected(e)}_isPrechecked(e){return!(typeof this._rawValue>"u")&&(this.multiple&&Array.isArray(this._rawValue)?this._rawValue.some(o=>null!=e.value&&o===e.value):e.value===this._rawValue)}_setSelectionByValue(e){this._rawValue=e,this._buttonToggles&&(this.multiple&&e?(Array.isArray(e),this._clearSelection(),e.forEach(o=>this._selectValue(o))):(this._clearSelection(),this._selectValue(e)))}_clearSelection(){this._selectionModel.clear(),this._buttonToggles.forEach(e=>e.checked=!1)}_selectValue(e){const o=this._buttonToggles.find(d=>null!=d.value&&d.value===e);o&&(o.checked=!0,this._selectionModel.select(o))}_updateModelValue(e,o){o&&this._emitChangeEvent(e),this.valueChange.emit(this.value)}_markButtonsForCheck(){var e;null===(e=this._buttonToggles)||void 0===e||e.forEach(o=>o._markForCheck())}}return i.\u0275fac=function(e){return new(e||i)(F(Jt),F(Fee,8))},i.\u0275dir=me({type:i,selectors:[["mat-button-toggle-group"]],contentQueries:function(e,o,d){if(1&e&&Qt(d,Hee,5),2&e){let h;Pe(h=Ae())&&(o._buttonToggles=h)}},hostAttrs:["role","group",1,"mat-button-toggle-group"],hostVars:5,hostBindings:function(e,o){2&e&&(Ve("aria-disabled",o.disabled),st("mat-button-toggle-vertical",o.vertical)("mat-button-toggle-group-appearance-standard","standard"===o.appearance))},inputs:{appearance:"appearance",name:"name",vertical:"vertical",value:"value",multiple:"multiple",disabled:"disabled"},outputs:{valueChange:"valueChange",change:"change"},exportAs:["matButtonToggleGroup"],features:[Ue([Fle,{provide:Nee,useExisting:i}])]}),i})();const Nle=oc(class{});let Hee=(()=>{class i extends Nle{get buttonId(){return`${this.id}-button`}get appearance(){return this.buttonToggleGroup?this.buttonToggleGroup.appearance:this._appearance}set appearance(e){this._appearance=e}get checked(){return this.buttonToggleGroup?this.buttonToggleGroup._isSelected(this):this._checked}set checked(e){const o=Ge(e);o!==this._checked&&(this._checked=o,this.buttonToggleGroup&&this.buttonToggleGroup._syncButtonToggle(this,this._checked),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled||this.buttonToggleGroup&&this.buttonToggleGroup.disabled}set disabled(e){this._disabled=Ge(e)}constructor(e,o,d,h,_,w){super(),this._changeDetectorRef=o,this._elementRef=d,this._focusMonitor=h,this._checked=!1,this.ariaLabelledby=null,this._disabled=!1,this.change=new we;const D=Number(_);this.tabIndex=D||0===D?D:null,this.buttonToggleGroup=e,this.appearance=w&&w.appearance?w.appearance:"standard"}ngOnInit(){const e=this.buttonToggleGroup;this.id=this.id||"mat-button-toggle-"+Bee++,e&&(e._isPrechecked(this)?this.checked=!0:e._isSelected(this)!==this._checked&&e._syncButtonToggle(this,this._checked))}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){const e=this.buttonToggleGroup;this._focusMonitor.stopMonitoring(this._elementRef),e&&e._isSelected(this)&&e._syncButtonToggle(this,!1,!1,!0)}focus(e){this._buttonElement.nativeElement.focus(e)}_onButtonClick(){const e=!!this._isSingleSelector()||!this._checked;e!==this._checked&&(this._checked=e,this.buttonToggleGroup&&(this.buttonToggleGroup._syncButtonToggle(this,this._checked,!0),this.buttonToggleGroup._onTouched())),this.change.emit(new Vee(this,this.value))}_markForCheck(){this._changeDetectorRef.markForCheck()}_getButtonName(){return this._isSingleSelector()?this.buttonToggleGroup.name:this.name||null}_isSingleSelector(){return this.buttonToggleGroup&&!this.buttonToggleGroup.multiple}}return i.\u0275fac=function(e){return new(e||i)(F(Nee,8),F(Jt),F(Be),F(Go),Co("tabindex"),F(Fee,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-button-toggle"]],viewQuery:function(e,o){if(1&e&&ct(Ole,5),2&e){let d;Pe(d=Ae())&&(o._buttonElement=d.first)}},hostAttrs:["role","presentation",1,"mat-button-toggle"],hostVars:12,hostBindings:function(e,o){1&e&&Q("focus",function(){return o.focus()}),2&e&&(Ve("aria-label",null)("aria-labelledby",null)("id",o.id)("name",null),st("mat-button-toggle-standalone",!o.buttonToggleGroup)("mat-button-toggle-checked",o.checked)("mat-button-toggle-disabled",o.disabled)("mat-button-toggle-appearance-standard","standard"===o.appearance))},inputs:{disableRipple:"disableRipple",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],id:"id",name:"name",value:"value",tabIndex:"tabIndex",appearance:"appearance",checked:"checked",disabled:"disabled"},outputs:{change:"change"},exportAs:["matButtonToggle"],features:[Se],ngContentSelectors:Lle,decls:6,vars:9,consts:[["type","button",1,"mat-button-toggle-button","mat-focus-indicator",3,"id","disabled","click"],["button",""],[1,"mat-button-toggle-label-content"],[1,"mat-button-toggle-focus-overlay"],["matRipple","",1,"mat-button-toggle-ripple",3,"matRippleTrigger","matRippleDisabled"]],template:function(e,o){if(1&e&&(On(),I(0,"button",0,1),Q("click",function(){return o._onButtonClick()}),I(2,"span",2),ut(3),O()(),pe(4,"span",3)(5,"span",4)),2&e){const d=on(1);z("id",o.buttonId)("disabled",o.disabled||null),Ve("tabindex",o.disabled?-1:o.tabIndex)("aria-pressed",o.checked)("name",o._getButtonName())("aria-label",o.ariaLabel)("aria-labelledby",o.ariaLabelledby),N(5),z("matRippleTrigger",d)("matRippleDisabled",o.disableRipple||o.disabled)}},dependencies:[fa],styles:[".mat-button-toggle-standalone,.mat-button-toggle-group{position:relative;display:inline-flex;flex-direction:row;white-space:nowrap;overflow:hidden;border-radius:2px;-webkit-tap-highlight-color:rgba(0,0,0,0);transform:translateZ(0)}.cdk-high-contrast-active .mat-button-toggle-standalone,.cdk-high-contrast-active .mat-button-toggle-group{outline:solid 1px}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.mat-button-toggle-group-appearance-standard{border-radius:4px}.cdk-high-contrast-active .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.cdk-high-contrast-active .mat-button-toggle-group-appearance-standard{outline:0}.mat-button-toggle-vertical{flex-direction:column}.mat-button-toggle-vertical .mat-button-toggle-label-content{display:block}.mat-button-toggle{white-space:nowrap;position:relative}.mat-button-toggle .mat-icon svg{vertical-align:top}.mat-button-toggle.cdk-keyboard-focused .mat-button-toggle-focus-overlay{opacity:1}.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{opacity:.04}.mat-button-toggle-appearance-standard.cdk-keyboard-focused:not(.mat-button-toggle-disabled) .mat-button-toggle-focus-overlay{opacity:.12}@media(hover: none){.mat-button-toggle-appearance-standard:not(.mat-button-toggle-disabled):hover .mat-button-toggle-focus-overlay{display:none}}.mat-button-toggle-label-content{-webkit-user-select:none;user-select:none;display:inline-block;line-height:36px;padding:0 16px;position:relative}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{padding:0 12px}.mat-button-toggle-label-content>*{vertical-align:middle}.mat-button-toggle-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:inherit;pointer-events:none;opacity:0}.cdk-high-contrast-active .mat-button-toggle-checked .mat-button-toggle-focus-overlay{border-bottom:solid 36px;opacity:.5;height:0}.cdk-high-contrast-active .mat-button-toggle-checked:hover .mat-button-toggle-focus-overlay{opacity:.6}.cdk-high-contrast-active .mat-button-toggle-checked.mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{border-bottom:solid 500px}.mat-button-toggle .mat-button-toggle-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-button-toggle-button{border:0;background:none;color:inherit;padding:0;margin:0;font:inherit;outline:none;width:100%;cursor:pointer}.mat-button-toggle-disabled .mat-button-toggle-button{cursor:default}.mat-button-toggle-button::-moz-focus-inner{border:0}"],encapsulation:2,changeDetection:0}),i})(),Ble=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,lc,nn]}),i})();function Vle(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Edit rule"),O())}function zle(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New rule"),O())}function Hle(i,a){if(1&i&&(I(0,"mat-option",22),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.value," ")}}function Gle(i,a){if(1&i&&(I(0,"mat-option",22),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.value," ")}}function Ule(i,a){if(1&i&&(I(0,"mat-button-toggle",22),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.value," ")}}function jle(i,a){if(1&i){const e=Ee();I(0,"div",23)(1,"span",24)(2,"uds-translate"),Y(3,"Weekdays"),O()(),I(4,"mat-button-toggle-group",25),Q("ngModelChange",function(d){return le(e),oe(X().wDays=d)}),J(5,Ule,2,2,"mat-button-toggle",8),O()()}if(2&i){const e=X();N(4),z("ngModel",e.wDays),N(1),z("ngForOf",e.weekDays)}}function $le(i,a){if(1&i){const e=Ee();I(0,"mat-form-field",9)(1,"mat-label")(2,"uds-translate"),Y(3,"Repeat every"),O()(),I(4,"input",6),Q("ngModelChange",function(d){return le(e),oe(X().rule.interval=d)}),O(),I(5,"div",26),Y(6),O()()}if(2&i){const e=X();N(4),z("ngModel",e.rule.interval),N(2),Ie("\xa0",e.frequency(),"")}}const uz={DAILY:[django.gettext("day"),django.gettext("days"),django.gettext("Daily")],WEEKLY:[django.gettext("week"),django.gettext("weeks"),django.gettext("Weekly")],MONTHLY:[django.gettext("month"),django.gettext("months"),django.gettext("Monthly")],YEARLY:[django.gettext("year"),django.gettext("years"),django.gettext("Yearly")],WEEKDAYS:["","",django.gettext("Weekdays")]},hz={MINUTES:django.gettext("Minutes"),HOURS:django.gettext("Hours"),DAYS:django.gettext("Days"),WEEKS:django.gettext("Weeks")},Gee=[django.gettext("Sunday"),django.gettext("Monday"),django.gettext("Tuesday"),django.gettext("Wednesday"),django.gettext("Thursday"),django.gettext("Friday"),django.gettext("Saturday")],Uee=(i,a=!1)=>{const e=new Array;for(let o=0;o<7;o++)1&i&&e.push(Gee[o].substr(0,a?100:3)),i>>=1;return e.length?e.join(", "):django.gettext("(no days)")};let jee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.dunits=Object.keys(hz).map(_=>({id:_,value:hz[_]})),this.freqs=Object.keys(uz).map(_=>({id:_,value:uz[_][2]})),this.weekDays=Gee.map((_,w)=>({id:1<{if(this.rule=e,this.startDate=new Date(1e3*this.rule.start),this.startTime=this.startDate.toTimeString().split(":").splice(0,2).join(":"),this.endDate=this.rule.end?new Date(1e3*this.rule.end):null,"WEEKDAYS"===this.rule.frequency){const o=[];for(let d=0;d<7;d++)this.rule.interval&1<this.rule.interval+=o),0===this.rule.interval)?django.gettext("Week days"):null}summary(){let e=django.gettext("Invalid or incomplete rule. Please, fix field $FIELD");const o=wV(django.get_format("SHORT_DATE_FORMAT")),d=this.updateRuleData();if(null===d){e=django.gettext("This rule will be valid every"),e+="WEEKDAYS"===this.rule.frequency?" "+Uee(this.rule.interval,!0)+" "+django.gettext("of any week"):" "+ +this.rule.interval+" "+this.frequency();const h=new Date(1e3*this.rule.start);e+=", "+django.gettext("from")+" "+pg(o,h),e+=this.rule.end?" "+django.gettext("until")+" "+pg(o,new Date(1e3*this.rule.end)):" "+django.gettext("onwards"),e+=", "+django.gettext("starting at")+" "+h.toTimeString().split(":").slice(0,2).join(":"),e+=+this.rule.duration>0?" "+django.gettext("and every event will be active for")+" "+this.rule.duration+" "+hz[this.rule.duration_unit]:django.gettext("with no duration")}return e.replace("$FIELD",d)}save(){this.rules.save(this.rule).then(()=>{this.dialogRef.close(),this.onSave.emit(!0)})}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-calendar-rule"]],decls:73,vars:21,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],["matInput","","type","text",3,"ngModel","ngModelChange"],[1,"oneThird"],["matInput","","type","time",3,"ngModel","ngModelChange"],["matInput","","type","number",3,"ngModel","ngModelChange"],[3,"ngModel","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[1,"oneHalf"],["matInput","",3,"matDatepicker","ngModel","ngModelChange"],["matSuffix","",3,"for"],["startDatePicker",""],["matInput","",3,"matDatepicker","ngModel","placeholder","ngModelChange"],["endDatePicker",""],[1,"weekdays"],[3,"ngModel","ngModelChange","valueChange"],["class","oneHalf mat-form-field-infix",4,"ngIf"],["class","oneHalf",4,"ngIf"],[1,"info"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"disabled","click"],[3,"value"],[1,"oneHalf","mat-form-field-infix"],[1,"label-weekdays"],["multiple","",3,"ngModel","ngModelChange"],["matSuffix",""]],template:function(e,o){if(1&e&&(I(0,"h4",0),J(1,Vle,2,0,"uds-translate",1),J(2,zle,2,0,"uds-translate",1),O(),I(3,"mat-dialog-content")(4,"div",2)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Name"),O()(),I(9,"input",3),Q("ngModelChange",function(h){return o.rule.name=h}),O()(),I(10,"mat-form-field")(11,"mat-label")(12,"uds-translate"),Y(13,"Comments"),O()(),I(14,"input",3),Q("ngModelChange",function(h){return o.rule.comments=h}),O()(),I(15,"h3")(16,"uds-translate"),Y(17,"Event"),O()(),I(18,"mat-form-field",4)(19,"mat-label")(20,"uds-translate"),Y(21,"Start time"),O()(),I(22,"input",5),Q("ngModelChange",function(h){return o.startTime=h}),O()(),I(23,"mat-form-field",4)(24,"mat-label")(25,"uds-translate"),Y(26,"Duration"),O()(),I(27,"input",6),Q("ngModelChange",function(h){return o.rule.duration=h}),O()(),I(28,"mat-form-field",4)(29,"mat-label")(30,"uds-translate"),Y(31,"Duration units"),O()(),I(32,"mat-select",7),Q("ngModelChange",function(h){return o.rule.duration_unit=h}),J(33,Hle,2,2,"mat-option",8),O()(),I(34,"h3"),Y(35," Repetition "),O(),I(36,"mat-form-field",9)(37,"mat-label")(38,"uds-translate"),Y(39," Start date "),O()(),I(40,"input",10),Q("ngModelChange",function(h){return o.startDate=h}),O(),pe(41,"mat-datepicker-toggle",11)(42,"mat-datepicker",null,12),O(),I(44,"mat-form-field",9)(45,"mat-label")(46,"uds-translate"),Y(47," Repeat until date "),O()(),I(48,"input",13),Q("ngModelChange",function(h){return o.endDate=h}),O(),pe(49,"mat-datepicker-toggle",11)(50,"mat-datepicker",null,14),O(),I(52,"div",15)(53,"mat-form-field",9)(54,"mat-label")(55,"uds-translate"),Y(56,"Frequency"),O()(),I(57,"mat-select",16),Q("ngModelChange",function(h){return o.rule.frequency=h})("valueChange",function(){return o.rule.interval=1}),J(58,Gle,2,2,"mat-option",8),O()(),J(59,jle,6,2,"div",17),J(60,$le,7,2,"mat-form-field",18),O(),I(61,"h3")(62,"uds-translate"),Y(63,"Summary"),O()(),I(64,"div",19),Y(65),O()()(),I(66,"mat-dialog-actions")(67,"button",20)(68,"uds-translate"),Y(69,"Cancel"),O()(),I(70,"button",21),Q("click",function(){return o.save()}),I(71,"uds-translate"),Y(72,"Ok"),O()()()),2&e){const d=on(43),h=on(51);N(1),z("ngIf",o.rule.id),N(1),z("ngIf",!o.rule.id),N(7),z("ngModel",o.rule.name),N(5),z("ngModel",o.rule.comments),N(8),z("ngModel",o.startTime),N(5),z("ngModel",o.rule.duration),N(5),z("ngModel",o.rule.duration_unit),N(1),z("ngForOf",o.dunits),N(7),z("matDatepicker",d)("ngModel",o.startDate),N(1),z("for",d),N(7),z("matDatepicker",h)("ngModel",o.endDate)("placeholder",o.FOREVER_STRING),N(1),z("for",h),N(8),z("ngModel",o.rule.frequency),N(1),z("ngForOf",o.freqs),N(1),z("ngIf","WEEKDAYS"===o.rule.frequency),N(1),z("ngIf","WEEKDAYS"!==o.rule.frequency),N(5),Ie(" ",o.summary()," "),N(5),z("disabled",null!==o.updateRuleData()||""===o.rule.name)}},dependencies:[Mn,en,sr,qf,Jn,zn,hi,jo,ar,Wi,or,ei,fi,Tg,ga,ma,$i,Ree,dz,Oee,zee,Hee,Pn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]:not(.oneThird):not(.oneHalf){width:100%}.mat-mdc-form-field.oneThird[_ngcontent-%COMP%]{width:31%;margin-right:2%}.mat-mdc-form-field.oneHalf[_ngcontent-%COMP%]{width:48%;margin-right:2%}h3[_ngcontent-%COMP%]{width:100%;margin-top:.3rem;margin-bottom:1rem}.weekdays[_ngcontent-%COMP%]{width:100%;display:flex;align-items:flex-end}.label-weekdays[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}.mat-datepicker-toggle[_ngcontent-%COMP%]{color:#00f}.mat-button-toggle-checked[_ngcontent-%COMP%]{background-color:#23238580;color:#fff}"]}),i})();function Yle(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Rules"),O())}function qle(i,a){if(1&i){const e=Ee();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8)(3,"mat-tab"),J(4,Yle,2,0,"ng-template",9),I(5,"div",10)(6,"uds-table",11),Q("newAction",function(d){return le(e),oe(X().onNewRule(d))})("editAction",function(d){return le(e),oe(X().onEditRule(d))})("deleteAction",function(d){return le(e),oe(X().onDeleteRule(d))}),O()()()()()()}if(2&i){const e=X();N(2),z("@.disabled",!0),N(4),z("rest",e.calendarRules)("multiSelect",!0)("allowExport",!0)("onItem",e.processElement)("tableId","calendars-d-rules"+e.calendar.id)("pageSize",e.api.config.admin.page_size)}}const Xle=function(i){return["/pools","calendars",i]};let Zle=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.calendarRules={}}ngOnInit(){const e=this.route.snapshot.paramMap.get("calendar");e&&this.rest.calendars.get(e).then(o=>{this.calendar=o,this.calendarRules=this.rest.calendars.detail(o.id,"rules")})}onNewRule(e){jee.launch(this.api,this.calendarRules).subscribe(()=>e.table.overview())}onEditRule(e){jee.launch(this.api,this.calendarRules,e.table.selection.selected[0]).subscribe(()=>e.table.overview())}onDeleteRule(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete calendar rule"))}processElement(e){(i=>{i.interval="WEEKDAYS"===i.frequency?Uee(i.interval):i.interval+" "+uz[i.frequency][django.pluralidx(i.interval)],i.duration=i.duration+" "+hz[i.duration_unit]})(e)}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-calendars-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary"],["mat-tab-label",""],[1,"content"],["icon","pools",3,"rest","multiSelect","allowExport","onItem","tableId","pageSize","newAction","editAction","deleteAction"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),pe(6,"img",4),Y(7),O(),J(8,qle,7,7,"div",5),O()),2&e&&(N(2),z("routerLink",du(4,Xle,o.calendar?o.calendar.id:"")),N(4),z("src",o.api.staticURL("admin/img/icons/calendars.png"),Kt),N(1),Ie(" ",null==o.calendar?null:o.calendar.name," "),N(1),z("ngIf",o.calendar))},dependencies:[en,Is,qo,mo,Ja,Pn,Ni],styles:[".mat-column-start, .mat-column-end{max-width:9rem} .mat-column-frequency{max-width:9rem} .mat-column-interval, .mat-column-duration{max-width:11rem}"]}),i})();const Kle='event'+django.gettext("Set time mark")+"";let $ee=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.cButtons=[{id:"timemark",html:Kle,type:ri.SINGLE_SELECT}]}get customButtons(){return this.api.user.isAdmin?this.cButtons:[]}ngOnInit(){}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New account"))}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit account"))}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete account"))}onTimeMark(e){const o=e.table.selection.selected[0];this.api.gui.questionDialog(django.gettext("Time mark"),django.gettext("Set time mark for $NAME to current date/time?").replace("$NAME",o.name)).then(d=>{d&&this.rest.accounts.timemark(o.id).then(()=>{this.api.gui.snackbar.open(django.gettext("Time mark stablished"),django.gettext("dismiss"),{duration:2e3}),e.table.overview()})})}onDetail(e){this.api.navigation.gotoAccountDetail(e.param.id)}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("account"))}processElement(e){e.time_mark=78793200===e.time_mark?django.gettext("No time mark"):po("SHORT_DATE_FORMAT",e.time_mark)}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-accounts"]],decls:1,vars:7,consts:[["icon","accounts",3,"rest","multiSelect","allowExport","hasPermissions","customButtons","pageSize","onItem","customButtonAction","newAction","editAction","deleteAction","detailAction","loaded"]],template:function(e,o){1&e&&(I(0,"uds-table",0),Q("customButtonAction",function(h){return o.onTimeMark(h)})("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("detailAction",function(h){return o.onDetail(h)})("loaded",function(h){return o.onLoad(h)}),O()),2&e&&z("rest",o.rest.accounts)("multiSelect",!0)("allowExport",!0)("hasPermissions",!0)("customButtons",o.customButtons)("pageSize",o.api.config.admin.page_size)("onItem",o.processElement)},dependencies:[Ni]}),i})();function Qle(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Account usage"),O())}function Jle(i,a){if(1&i){const e=Ee();I(0,"div",6)(1,"div",7)(2,"mat-tab-group",8)(3,"mat-tab"),J(4,Qle,2,0,"ng-template",9),I(5,"div",10)(6,"uds-table",11),Q("deleteAction",function(d){return le(e),oe(X().onDeleteUsage(d))}),O()()()()()()}if(2&i){const e=X();N(2),z("@.disabled",!0),N(4),z("rest",e.accountUsage)("multiSelect",!0)("allowExport",!0)("onItem",e.processElement)("tableId","account-d-usage"+e.account.id)}}const ece=function(i){return["/pools","accounts",i]};let tce=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d,this.accountUsage={}}ngOnInit(){const e=this.route.snapshot.paramMap.get("account");e&&this.rest.accounts.get(e).then(o=>{this.account=o,this.accountUsage=this.rest.accounts.detail(o.id,"usage")})}onDeleteUsage(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete account usage"))}processElement(e){e.running=this.api.boolAsHumanString(e.running)}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-accounts-detail"]],decls:9,vars:6,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"routerLink"],[1,"material-icons"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary"],["mat-tab-label",""],[1,"content"],["icon","accounts",3,"rest","multiSelect","allowExport","onItem","tableId","deleteAction"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1)(2,"a",2)(3,"i",3),Y(4,"arrow_back"),O()(),Y(5," \xa0"),pe(6,"img",4),Y(7),O(),J(8,Jle,7,6,"div",5),O()),2&e&&(N(2),z("routerLink",du(4,ece,o.account?o.account.id:"")),N(4),z("src",o.api.staticURL("admin/img/icons/accounts.png"),Kt),N(1),Ie(" ",null==o.account?null:o.account.name," "),N(1),z("ngIf",o.account))},dependencies:[en,Is,qo,mo,Ja,Pn,Ni]}),i})();function nce(i,a){1&i&&(I(0,"uds-translate"),Y(1,"New image for"),O())}function ice(i,a){1&i&&(I(0,"uds-translate"),Y(1,"Edit for"),O())}let Wee=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.onSave=new we(!0),this.preview="",this.image={id:void 0,data:"",name:""},h.image&&(this.image.id=h.image.id)}static launch(e,o=null){const d=window.innerWidth<800?"60%":"40%";return e.gui.dialog.open(i,{width:d,position:{top:window.innerWidth<800?"0px":"7rem"},data:{image:o},disableClose:!0}).componentInstance.onSave}onFileChanged(e){const o=e.target;if(!o.files||0===o.files.length)return;const d=o.files[0];if(d.size>262144)return void this.api.gui.alert(django.gettext("Error"),django.gettext("Image is too big (max. upload size is 256Kb)"));if(!["image/jpeg","image/png","image/gif"].includes(d.type))return void this.api.gui.alert(django.gettext("Error"),django.gettext("Invalid image type (only supports JPEG, PNG and GIF"));const h=new FileReader;h.onload=_=>{const w=h.result;this.preview=w,this.image.data=w.substr(w.indexOf("base64,")+7),this.image.name||(this.image.name=d.name)},h.readAsDataURL(d)}ngOnInit(){this.image.id&&this.rest.gallery.get(this.image.id).then(e=>{switch(this.image=e,this.image.data.substr(2)){case"iV":this.preview="data:image/png;base64,"+this.image.data;break;case"/9":this.preview="data:image/jpeg;base64,"+this.image.data;break;default:this.preview="data:image/gif;base64,"+this.image.data}})}background(){const e=this.api.config.image_size[0],o=this.api.config.image_size[1],d={"width.px":e,"height.px":o,"background-size":e+"px "+o+"px","background-image":"none"};return this.preview&&(d["background-image"]="url("+this.preview+")"),d}save(){this.image.name&&this.image.data?this.rest.gallery.save(this.image).then(()=>{this.api.gui.snackbar.open(django.gettext("Successfully saved"),django.gettext("dismiss"),{duration:2e3}),this.dialogRef.close(),this.onSave.emit(!0)}):this.api.gui.alert(django.gettext("Error"),django.gettext("Please, provide a name and a image"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-gallery-image"]],decls:32,vars:7,consts:[["mat-dialog-title",""],[4,"ngIf"],[1,"content"],["matInput","","type","text",3,"ngModel","ngModelChange"],["type","file",2,"display","none",3,"change"],["fileInput",""],["matInput","","type","text",3,"hidden","click"],[1,"preview",3,"click"],[1,"image-preview",3,"ngStyle"],[1,"help"],["mat-raised-button","","mat-dialog-close","","color","warn"],["mat-raised-button","","color","primary",3,"click"]],template:function(e,o){if(1&e){const d=Ee();I(0,"h4",0),J(1,nce,2,0,"uds-translate",1),J(2,ice,2,0,"uds-translate",1),O(),I(3,"mat-dialog-content")(4,"div",2)(5,"mat-form-field")(6,"mat-label")(7,"uds-translate"),Y(8,"Image name"),O()(),I(9,"input",3),Q("ngModelChange",function(_){return o.image.name=_}),O()(),I(10,"input",4,5),Q("change",function(_){return o.onFileChanged(_)}),O(),I(12,"mat-form-field")(13,"mat-label")(14,"uds-translate"),Y(15,"Image (click to change)"),O()(),I(16,"input",6),Q("click",function(){return le(d),oe(on(11).click())}),O(),I(17,"div",7),Q("click",function(){return le(d),oe(on(11).click())}),pe(18,"div",8),O()(),I(19,"div",9)(20,"uds-translate"),Y(21,' For optimal results, use "squared" images. '),O(),I(22,"uds-translate"),Y(23," The image will be resized on upload to "),O(),Y(24),O()()(),I(25,"mat-dialog-actions")(26,"button",10)(27,"uds-translate"),Y(28,"Cancel"),O()(),I(29,"button",11),Q("click",function(){return o.save()}),I(30,"uds-translate"),Y(31,"Ok"),O()()()}2&e&&(N(1),z("ngIf",!o.image.id),N(1),z("ngIf",o.image.id),N(7),z("ngModel",o.image.name),N(7),z("hidden",!0),N(2),z("ngStyle",o.background()),N(6),qh(" ",o.api.config.image_size[0],"x",o.api.config.image_size[1]," "))},dependencies:[en,rl,sr,Jn,zn,hi,jo,ar,Wi,or,ei,fi,ga,Pn],styles:[".mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}.content[_ngcontent-%COMP%]{width:100%;margin-top:.5rem;display:flex;flex-wrap:wrap}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.preview[_ngcontent-%COMP%]{display:flex;justify-content:flex-start;width:100%}.image-preview[_ngcontent-%COMP%]{background-color:#0000004d}"]}),i})(),Yee=(()=>{class i{constructor(e,o,d){this.route=e,this.rest=o,this.api=d}ngOnInit(){}onNew(e){Wee.launch(this.api).subscribe(()=>e.table.overview())}onEdit(e){Wee.launch(this.api,e.table.selection.selected[0]).subscribe(()=>e.table.overview())}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete image"))}onLoad(e){!0===e.param&&e.table.selectElement("id",this.route.snapshot.paramMap.get("image"))}}return i.\u0275fac=function(e){return new(e||i)(F(xi),F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-gallery"]],decls:1,vars:5,consts:[["icon","gallery",3,"rest","multiSelect","allowExport","hasPermissions","pageSize","newAction","editAction","deleteAction","loaded"]],template:function(e,o){1&e&&(I(0,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)})("loaded",function(h){return o.onLoad(h)}),O()),2&e&&z("rest",o.rest.gallery)("multiSelect",!0)("allowExport",!0)("hasPermissions",!1)("pageSize",o.api.config.admin.page_size)},dependencies:[Ni],styles:[".mat-column-thumb{max-width:7rem;justify-content:center} .mat-column-name{max-width:32rem}"]}),i})();const rce='assessment'+django.gettext("Generate report")+"";function sce(i,a){1&i&&Y(0),2&i&&Ie(" ",X().$implicit," ")}function lce(i,a){if(1&i){const e=Ee();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",18),Q("ngModelChange",function(d){le(e);const h=X(2).$implicit,_=X().$implicit;return oe(X(2).config[_][h].value=d)}),O()()()}if(2&i){const e=X(2).$implicit,o=X().$implicit,d=X(2);N(3),Sn(e),N(1),z("type",d.config[o][e].crypt?"password":"text")("ngModel",d.config[o][e].value)("matTooltip",d.config[o][e].help)}}function cce(i,a){if(1&i){const e=Ee();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"textarea",19),Q("ngModelChange",function(d){le(e);const h=X(2).$implicit,_=X().$implicit;return oe(X(2).config[_][h].value=d)}),O()()()}if(2&i){const e=X(2).$implicit,o=X().$implicit,d=X(2);N(3),Sn(e),N(1),z("ngModel",d.config[o][e].value)("matTooltip",d.config[o][e].help)}}function dce(i,a){if(1&i){const e=Ee();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",20),Q("ngModelChange",function(d){le(e);const h=X(2).$implicit,_=X().$implicit;return oe(X(2).config[_][h].value=d)}),O()()()}if(2&i){const e=X(2).$implicit,o=X().$implicit,d=X(2);N(3),Sn(e),N(1),z("ngModel",d.config[o][e].value)("matTooltip",d.config[o][e].help)}}function uce(i,a){if(1&i){const e=Ee();I(0,"div")(1,"div",21)(2,"mat-slide-toggle",22),Q("ngModelChange",function(d){le(e);const h=X(2).$implicit,_=X().$implicit;return oe(X(2).config[_][h].value=d)}),Y(3),O()()()}if(2&i){const e=X(2).$implicit,o=X().$implicit,d=X(2);N(2),z("ngModel",d.config[o][e].value)("matTooltip",d.config[o][e].help),N(1),Ie(" ",e," ")}}function hce(i,a){if(1&i&&(I(0,"mat-option",24),Y(1),O()),2&i){const e=a.$implicit;z("value",e),N(1),Ie(" ",e," ")}}function fce(i,a){if(1&i){const e=Ee();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"mat-select",22),Q("ngModelChange",function(d){le(e);const h=X(2).$implicit,_=X().$implicit;return oe(X(2).config[_][h].value=d)}),J(5,hce,2,2,"mat-option",23),O()()()}if(2&i){const e=X(2).$implicit,o=X().$implicit,d=X(2);N(3),Ie(" ",e," "),N(1),z("ngModel",d.config[o][e].value)("matTooltip",d.config[o][e].help),N(1),z("ngForOf",d.config[o][e].params)}}function pce(i,a){if(1&i){const e=Ee();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",25),Q("ngModelChange",function(d){le(e);const h=X(2).$implicit,_=X().$implicit;return oe(X(2).config[_][h].value=d)}),O()()()}if(2&i){const e=X(2).$implicit,o=X().$implicit,d=X(2);N(3),Sn(e),N(1),z("ngModel",d.config[o][e].value)("matTooltip",d.config[o][e].help)}}function mce(i,a){1&i&&uo(0)}function gce(i,a){if(1&i){const e=Ee();I(0,"div")(1,"mat-form-field")(2,"mat-label"),Y(3),O(),I(4,"input",26),Q("ngModelChange",function(d){le(e);const h=X(2).$implicit,_=X().$implicit;return oe(X(2).config[_][h].value=d)}),O()()()}if(2&i){const e=X(2).$implicit,o=X().$implicit,d=X(2);N(3),Sn(e),N(1),z("ngModel",d.config[o][e].value)("matTooltip",d.config[o][e].help)}}function vce(i,a){if(1&i&&(vn(0,15),J(1,lce,5,4,"div",16),J(2,cce,5,3,"div",16),J(3,dce,5,3,"div",16),J(4,uce,4,3,"div",16),J(5,fce,6,4,"div",16),J(6,pce,5,3,"div",16),J(7,mce,1,0,"ng-container",16),J(8,gce,5,3,"div",17),wn()),2&i){const e=X().$implicit,o=X().$implicit;z("ngSwitch",X(2).config[o][e].type),N(1),z("ngSwitchCase",0),N(1),z("ngSwitchCase",1),N(1),z("ngSwitchCase",2),N(1),z("ngSwitchCase",3),N(1),z("ngSwitchCase",4),N(1),z("ngSwitchCase",5),N(1),z("ngSwitchCase",6)}}function _ce(i,a){if(1&i&&(I(0,"div",13),J(1,vce,9,8,"ng-container",14),O()),2&i){const e=a.$implicit,o=X().$implicit,d=X(2);N(1),z("ngIf",d.config[o][e])}}function yce(i,a){if(1&i&&(I(0,"mat-tab"),J(1,sce,1,1,"ng-template",10),I(2,"div",11),J(3,_ce,2,1,"div",12),O()()),2&i){const e=a.$implicit,o=X(2);N(3),z("ngForOf",o.configElements(e))}}function bce(i,a){if(1&i){const e=Ee();I(0,"div",4)(1,"div",5)(2,"mat-tab-group",6),J(3,yce,4,1,"mat-tab",7),O(),I(4,"div",8)(5,"button",9),Q("click",function(){return le(e),oe(X().save())}),I(6,"uds-translate"),Y(7,"Save"),O()()()()()}if(2&i){const e=X();N(2),z("@.disabled",!0),N(1),z("ngForOf",e.sections())}}const qee=["UDS","Security"],Xee=["UDS ID"],wce=[{path:"",canActivate:[m9],children:[{path:"",redirectTo:"summary",pathMatch:"full"},{path:"summary",component:E9},{path:"providers",component:JJ},{path:"providers/:provider/detail",component:eee},{path:"providers/:provider",component:JJ},{path:"providers/:provider/detail/:service",component:eee},{path:"authenticators",component:tee},{path:"authenticators/:authenticator/detail",component:EY},{path:"authenticators/:authenticator",component:tee},{path:"authenticators/:authenticator/detail/groups/:group",component:EY},{path:"authenticators/:authenticator/detail/users/:user",component:EY},{path:"mfas",component:nee},{path:"mfas/:mfa",component:nee},{path:"osmanagers",component:see},{path:"osmanagers/:osmanager",component:see},{path:"transports",component:lee},{path:"transports/:transport",component:lee},{path:"networks",component:cee},{path:"networks/:network",component:cee},{path:"pools/service-pools",component:dee},{path:"pools/service-pools/:pool",component:dee},{path:"pools/service-pools/:pool/detail",component:_ee},{path:"pools/meta-pools",component:yee},{path:"pools/meta-pools/:metapool",component:yee},{path:"pools/meta-pools/:metapool/detail",component:qse},{path:"pools/pool-groups",component:wee},{path:"pools/pool-groups/:poolgroup",component:wee},{path:"pools/calendars",component:xee},{path:"pools/calendars/:calendar",component:xee},{path:"pools/calendars/:calendar/detail",component:Zle},{path:"pools/accounts",component:$ee},{path:"pools/accounts/:account",component:$ee},{path:"pools/accounts/:account/detail",component:tce},{path:"tools/gallery",component:Yee},{path:"tools/gallery/:image",component:Yee},{path:"tools/reports",component:(()=>{class i{constructor(e,o){this.rest=e,this.api=o,this.customButtons=[{id:"genreport",html:rce,type:ri.SINGLE_SELECT}]}ngOnInit(){}generateReport(e){var o=this;return Qe(function*(){const d=new dl;o.api.gui.forms.typedForm(e,django.gettext("Generate report"),!1,[],void 0,e.table.selection.selected[0].id,{save:d});const h=yield d;o.api.gui.snackbar.open(django.gettext("Generating report..."));const _=yield o.rest.reports.save(h,e.table.selection.selected[0].id),w=_.encoded?window.atob(_.data):_.data,D=w.length,k=new Uint8Array(D);for(let B=0;B{(0,TY.saveAs)(P,_.filename)})})()}}return i.\u0275fac=function(e){return new(e||i)(F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-reports"]],decls:1,vars:6,consts:[["icon","reports",3,"rest","multiSelect","allowExport","hasPermissions","customButtons","pageSize","customButtonAction"]],template:function(e,o){1&e&&(I(0,"uds-table",0),Q("customButtonAction",function(h){return o.generateReport(h)}),O()),2&e&&z("rest",o.rest.reports)("multiSelect",!1)("allowExport",!1)("hasPermissions",!1)("customButtons",o.customButtons)("pageSize",o.api.config.admin.page_size)},dependencies:[Ni],styles:[".mat-column-group{max-width:16rem} .mat-column-name{max-width:32rem}"]}),i})()},{path:"tools/notifiers",component:(()=>{class i{constructor(e,o){this.api=e,this.rest=o}ngOnInit(){}onNew(e){this.api.gui.forms.typedNewForm(e,django.gettext("New Notifier"),!1)}onEdit(e){this.api.gui.forms.typedEditForm(e,django.gettext("Edit Notifier"),!1)}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete actor token - USE WITH EXTREME CAUTION!!!"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-notifiers"]],decls:2,vars:4,consts:[["icon","accounts",3,"rest","multiSelect","allowExport","pageSize","newAction","editAction","deleteAction"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("newAction",function(h){return o.onNew(h)})("editAction",function(h){return o.onEdit(h)})("deleteAction",function(h){return o.onDelete(h)}),O()()),2&e&&(N(1),z("rest",o.rest.notifiers)("multiSelect",!0)("allowExport",!0)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni]}),i})()},{path:"tools/tokens/actor",component:(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){}onDelete(e){var o=this;return Qe(function*(){yield o.api.gui.forms.deleteForm(e,django.gettext("Delete actor token - USE WITH EXTREME CAUTION!!!"))})()}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-actor-tokens"]],decls:2,vars:4,consts:[["icon","accounts",3,"rest","multiSelect","allowExport","pageSize","deleteAction"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("deleteAction",function(h){return o.onDelete(h)}),O()()),2&e&&(N(1),z("rest",o.rest.actorToken)("multiSelect",!0)("allowExport",!0)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni]}),i})()},{path:"tools/tokens/tunnel",component:(()=>{class i{constructor(e,o,d){this.api=e,this.route=o,this.rest=d}ngOnInit(){}onDelete(e){this.api.gui.forms.deleteForm(e,django.gettext("Delete tunnel token - USE WITH EXTREME CAUTION!!!"))}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(xi),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-tunnel-tokens"]],decls:2,vars:4,consts:[["icon","proxy",3,"rest","multiSelect","allowExport","pageSize","deleteAction"]],template:function(e,o){1&e&&(I(0,"div")(1,"uds-table",0),Q("deleteAction",function(h){return o.onDelete(h)}),O()()),2&e&&(N(1),z("rest",o.rest.tunnelToken)("multiSelect",!0)("allowExport",!0)("pageSize",o.api.config.admin.page_size))},dependencies:[Ni]}),i})()},{path:"tools/configuration",component:(()=>{class i{constructor(e,o){this.rest=e,this.api=o}ngOnInit(){this.rest.configuration.overview().then(e=>{this.config=e;for(const o in this.config)if(this.config.hasOwnProperty(o))for(const d in this.config[o])if(this.config[o].hasOwnProperty(d)){const h=this.config[o][d];h.crypt?h.value='\u20acfa{}#42123~#||23|\xdf\xf0\u0111\xe6"':3===h.type&&(h.value=!!["1",1,!0].includes(h.value)),h.original_value=h.value}})}sections(){let e=[];for(const o in this.config)this.config.hasOwnProperty(o)&&!qee.includes(o)&&e.push(o);return e=e.sort((o,d)=>o.localeCompare(d)),e.unshift.apply(e,qee),e}configElements(e){let o=[];const d=this.config[e];if(d)for(const h in d)d.hasOwnProperty(h)&&("UDS"!==e||!Xee.includes(h))&&o.push(h);return o=o.sort((h,_)=>h.localeCompare(_)),"UDS"===e&&o.unshift.apply(o,Xee),o}save(){const e={};for(const o in this.config)if(this.config.hasOwnProperty(o))for(const d in this.config[o])if(this.config[o].hasOwnProperty(d)){const h=this.config[o][d];if(h.original_value!==h.value){h.original_value=h.value,e[o]||(e[o]={});let _=h.value;3===h.type&&(_=["1",1,!0].includes(h.value)?"1":"0"),e[o][d]={value:_}}}this.rest.configuration.save(e).then(()=>{this.api.gui.snackbar.open(django.gettext("Configuration saved"),django.gettext("dismiss"),{duration:2e3})})}}return i.\u0275fac=function(e){return new(e||i)(F(jt),F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-configuration"]],decls:7,vars:2,consts:[[1,"detail"],[1,"mat-elevation-z4","title"],[3,"src"],["class","card",4,"ngIf"],[1,"card"],[1,"card-content"],["backgroundColor","primary"],[4,"ngFor","ngForOf"],[1,"config-footer"],["mat-raised-button","","color","primary",3,"click"],["mat-tab-label",""],[1,"content"],["class","field",4,"ngFor","ngForOf"],[1,"field"],[3,"ngSwitch",4,"ngIf"],[3,"ngSwitch"],[4,"ngSwitchCase"],[4,"ngSwitchDefault"],["matInput","",3,"type","ngModel","matTooltip","ngModelChange"],["matInput","",3,"ngModel","matTooltip","ngModelChange"],["matInput","","type","number",3,"ngModel","matTooltip","ngModelChange"],[1,"toggle"],[3,"ngModel","matTooltip","ngModelChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"],["matInput","","type","text","readonly","readonly",3,"ngModel","matTooltip","ngModelChange"],["matInput","","type","text",3,"ngModel","matTooltip","ngModelChange"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"div",1),pe(2,"img",2),Y(3,"\xa0"),I(4,"uds-translate"),Y(5,"UDS Configuration"),O()(),J(6,bce,8,2,"div",3),O()),2&e&&(N(2),z("src",o.api.staticURL("admin/img/icons/configuration.png"),Kt),N(4),z("ngIf",o.config))},dependencies:[Mn,en,td,mf,Bo,sr,qf,Jn,zn,hi,bb,ei,fi,ga,ma,$i,qo,mo,Ja,pI,Pn],styles:[".content[_ngcontent-%COMP%]{margin-top:2rem}.field[_ngcontent-%COMP%]{display:flex;justify-content:center;width:100%}.field[_ngcontent-%COMP%] > div[_ngcontent-%COMP%]{width:50%}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}input[readonly][_ngcontent-%COMP%]{background-color:#e0e0e0}.slider-label[_ngcontent-%COMP%]{color:#0009;display:block;font-weight:400;left:0px;line-height:18px;overflow:hidden;pointer-events:none;position:absolute;text-align:left;text-overflow:ellipsis;top:.5em;transform:matrix(.75,0,0,.75,0,-21.5);transform-origin:0px 0px;white-space:nowrap}.config-footer[_ngcontent-%COMP%]{display:flex;justify-content:center;width:100%;margin-top:2rem;margin-bottom:2rem}"]}),i})()}]},{path:"**",redirectTo:"summary"}];let xce=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[Qm.forRoot(wce,{}),Qm]}),i})();function Zee(i){return new Ce(3e3,!1)}function ide(){return typeof window<"u"&&typeof window.document<"u"}function UY(){return typeof process<"u"&&"[object process]"==={}.toString.call(process)}function Rg(i){switch(i.length){case 0:return new hg;case 1:return i[0];default:return new qk(i)}}function Kee(i,a,e,o,d=new Map,h=new Map){const _=[],w=[];let D=-1,k=null;if(o.forEach(P=>{const B=P.get("offset"),W=B==D,Z=W&&k||new Map;P.forEach((te,ie)=>{let de=ie,he=te;if("offset"!==ie)switch(de=a.normalizePropertyName(de,_),he){case LC:he=d.get(ie);break;case Ns:he=h.get(ie);break;default:he=a.normalizeStyleValue(ie,de,he,_)}Z.set(de,he)}),W||w.push(Z),k=Z,D=B}),_.length)throw function $ce(i){return new Ce(3502,!1)}();return w}function jY(i,a,e,o){switch(a){case"start":i.onStart(()=>o(e&&$Y(e,"start",i)));break;case"done":i.onDone(()=>o(e&&$Y(e,"done",i)));break;case"destroy":i.onDestroy(()=>o(e&&$Y(e,"destroy",i)))}}function $Y(i,a,e){const h=WY(i.element,i.triggerName,i.fromState,i.toState,a||i.phaseName,e.totalTime??i.totalTime,!!e.disabled),_=i._data;return null!=_&&(h._data=_),h}function WY(i,a,e,o,d="",h=0,_){return{element:i,triggerName:a,fromState:e,toState:o,phaseName:d,totalTime:h,disabled:!!_}}function fl(i,a,e){let o=i.get(a);return o||i.set(a,o=e),o}function Qee(i){const a=i.indexOf(":");return[i.substring(1,a),i.slice(a+1)]}let YY=(i,a)=>!1,Jee=(i,a,e)=>[],ete=null;function qY(i){const a=i.parentNode||i.host;return a===ete?null:a}(UY()||typeof Element<"u")&&(ide()?(ete=(()=>document.documentElement)(),YY=(i,a)=>{for(;a;){if(a===i)return!0;a=qY(a)}return!1}):YY=(i,a)=>i.contains(a),Jee=(i,a,e)=>{if(e)return Array.from(i.querySelectorAll(a));const o=i.querySelector(a);return o?[o]:[]});let Db=null,tte=!1;const nte=YY,ite=Jee;let rte=(()=>{class i{validateStyleProperty(e){return function ade(i){Db||(Db=function ode(){return typeof document<"u"?document.body:null}()||{},tte=!!Db.style&&"WebkitAppearance"in Db.style);let a=!0;return Db.style&&!function rde(i){return"ebkit"==i.substring(1,6)}(i)&&(a=i in Db.style,!a&&tte&&(a="Webkit"+i.charAt(0).toUpperCase()+i.slice(1)in Db.style)),a}(e)}matchesElement(e,o){return!1}containsElement(e,o){return nte(e,o)}getParentElement(e){return qY(e)}query(e,o,d){return ite(e,o,d)}computeStyle(e,o,d){return d||""}animate(e,o,d,h,_,w=[],D){return new hg(d,h)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),XY=(()=>{class i{}return i.NOOP=new rte,i})();const sde=1e3,ZY="ng-enter",fz="ng-leave",pz="ng-trigger",mz=".ng-trigger",ote="ng-animating",KY=".ng-animating";function Jf(i){if("number"==typeof i)return i;const a=i.match(/^(-?[\.\d]+)(m?s)/);return!a||a.length<2?0:QY(parseFloat(a[1]),a[2])}function QY(i,a){return"s"===a?i*sde:i}function gz(i,a,e){return i.hasOwnProperty("duration")?i:function cde(i,a,e){let d,h=0,_="";if("string"==typeof i){const w=i.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===w)return a.push(Zee()),{duration:0,delay:0,easing:""};d=QY(parseFloat(w[1]),w[2]);const D=w[3];null!=D&&(h=QY(parseFloat(D),w[4]));const k=w[5];k&&(_=k)}else d=i;if(!e){let w=!1,D=a.length;d<0&&(a.push(function Cce(){return new Ce(3100,!1)}()),w=!0),h<0&&(a.push(function Sce(){return new Ce(3101,!1)}()),w=!0),w&&a.splice(D,0,Zee())}return{duration:d,delay:h,easing:_}}(i,a,e)}function vI(i,a={}){return Object.keys(i).forEach(e=>{a[e]=i[e]}),a}function ste(i){const a=new Map;return Object.keys(i).forEach(e=>{a.set(e,i[e])}),a}function Og(i,a=new Map,e){if(e)for(let[o,d]of e)a.set(o,d);for(let[o,d]of i)a.set(o,d);return a}function cte(i,a,e){return e?a+":"+e+";":""}function dte(i){let a="";for(let e=0;e{const h=eq(d);e&&!e.has(d)&&e.set(d,i.style[h]),i.style[h]=o}),UY()&&dte(i))}function Mb(i,a){i.style&&(a.forEach((e,o)=>{const d=eq(o);i.style[d]=""}),UY()&&dte(i))}function _I(i){return Array.isArray(i)?1==i.length?i[0]:oV(i):i}const JY=new RegExp("{{\\s*(.+?)\\s*}}","g");function ute(i){let a=[];if("string"==typeof i){let e;for(;e=JY.exec(i);)a.push(e[1]);JY.lastIndex=0}return a}function yI(i,a,e){const o=i.toString(),d=o.replace(JY,(h,_)=>{let w=a[_];return null==w&&(e.push(function Mce(i){return new Ce(3003,!1)}()),w=""),w.toString()});return d==o?i:d}function vz(i){const a=[];let e=i.next();for(;!e.done;)a.push(e.value),e=i.next();return a}const hde=/-+([a-z0-9])/g;function eq(i){return i.replace(hde,(...a)=>a[1].toUpperCase())}function fde(i){return i.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function pl(i,a,e){switch(a.type){case 7:return i.visitTrigger(a,e);case 0:return i.visitState(a,e);case 1:return i.visitTransition(a,e);case 2:return i.visitSequence(a,e);case 3:return i.visitGroup(a,e);case 4:return i.visitAnimate(a,e);case 5:return i.visitKeyframes(a,e);case 6:return i.visitStyle(a,e);case 8:return i.visitReference(a,e);case 9:return i.visitAnimateChild(a,e);case 10:return i.visitAnimateRef(a,e);case 11:return i.visitQuery(a,e);case 12:return i.visitStagger(a,e);default:throw function Tce(i){return new Ce(3004,!1)}()}}function hte(i,a){return window.getComputedStyle(i)[a]}const bz="*";function yde(i,a){const e=[];return"string"==typeof i?i.split(/\s*,\s*/).forEach(o=>function bde(i,a,e){if(":"==i[0]){const D=function wde(i,a){switch(i){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(e,o)=>parseFloat(o)>parseFloat(e);case":decrement":return(e,o)=>parseFloat(o) *"}}(i,e);if("function"==typeof D)return void a.push(D);i=D}const o=i.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==o||o.length<4)return e.push(function zce(i){return new Ce(3015,!1)}()),a;const d=o[1],h=o[2],_=o[3];a.push(fte(d,_));"<"==h[0]&&!(d==bz&&_==bz)&&a.push(fte(_,d))}(o,e,a)):e.push(i),e}const wz=new Set(["true","1"]),xz=new Set(["false","0"]);function fte(i,a){const e=wz.has(i)||xz.has(i),o=wz.has(a)||xz.has(a);return(d,h)=>{let _=i==bz||i==d,w=a==bz||a==h;return!_&&e&&"boolean"==typeof d&&(_=d?wz.has(i):xz.has(i)),!w&&o&&"boolean"==typeof h&&(w=h?wz.has(a):xz.has(a)),_&&w}}const xde=new RegExp("s*:selfs*,?","g");function tq(i,a,e,o){return new Cde(i).build(a,e,o)}class Cde{constructor(a){this._driver=a}build(a,e,o){const d=new Mde(e);return this._resetContextStyleTimingState(d),pl(this,_I(a),d)}_resetContextStyleTimingState(a){a.currentQuerySelector="",a.collectedStyles=new Map,a.collectedStyles.set("",new Map),a.currentTime=0}visitTrigger(a,e){let o=e.queryCount=0,d=e.depCount=0;const h=[],_=[];return"@"==a.name.charAt(0)&&e.errors.push(function kce(){return new Ce(3006,!1)}()),a.definitions.forEach(w=>{if(this._resetContextStyleTimingState(e),0==w.type){const D=w,k=D.name;k.toString().split(/\s*,\s*/).forEach(P=>{D.name=P,h.push(this.visitState(D,e))}),D.name=k}else if(1==w.type){const D=this.visitTransition(w,e);o+=D.queryCount,d+=D.depCount,_.push(D)}else e.errors.push(function Ece(){return new Ce(3007,!1)}())}),{type:7,name:a.name,states:h,transitions:_,queryCount:o,depCount:d,options:null}}visitState(a,e){const o=this.visitStyle(a.styles,e),d=a.options&&a.options.params||null;if(o.containsDynamicStyles){const h=new Set,_=d||{};o.styles.forEach(w=>{w instanceof Map&&w.forEach(D=>{ute(D).forEach(k=>{_.hasOwnProperty(k)||h.add(k)})})}),h.size&&(vz(h.values()),e.errors.push(function Ice(i,a){return new Ce(3008,!1)}()))}return{type:0,name:a.name,style:o,options:d?{params:d}:null}}visitTransition(a,e){e.queryCount=0,e.depCount=0;const o=pl(this,_I(a.animation),e);return{type:1,matchers:yde(a.expr,e.errors),animation:o,queryCount:e.queryCount,depCount:e.depCount,options:Tb(a.options)}}visitSequence(a,e){return{type:2,steps:a.steps.map(o=>pl(this,o,e)),options:Tb(a.options)}}visitGroup(a,e){const o=e.currentTime;let d=0;const h=a.steps.map(_=>{e.currentTime=o;const w=pl(this,_,e);return d=Math.max(d,e.currentTime),w});return e.currentTime=d,{type:3,steps:h,options:Tb(a.options)}}visitAnimate(a,e){const o=function Ade(i,a){if(i.hasOwnProperty("duration"))return i;if("number"==typeof i)return nq(gz(i,a).duration,0,"");const e=i;if(e.split(/\s+/).some(h=>"{"==h.charAt(0)&&"{"==h.charAt(1))){const h=nq(0,0,"");return h.dynamic=!0,h.strValue=e,h}const d=gz(e,a);return nq(d.duration,d.delay,d.easing)}(a.timings,e.errors);e.currentAnimateTimings=o;let d,h=a.styles?a.styles:dt({});if(5==h.type)d=this.visitKeyframes(h,e);else{let _=a.styles,w=!1;if(!_){w=!0;const k={};o.easing&&(k.easing=o.easing),_=dt(k)}e.currentTime+=o.duration+o.delay;const D=this.visitStyle(_,e);D.isEmptyStep=w,d=D}return e.currentAnimateTimings=null,{type:4,timings:o,style:d,options:null}}visitStyle(a,e){const o=this._makeStyleAst(a,e);return this._validateStyleAst(o,e),o}_makeStyleAst(a,e){const o=[],d=Array.isArray(a.styles)?a.styles:[a.styles];for(let w of d)"string"==typeof w?w===Ns?o.push(w):e.errors.push(new Ce(3002,!1)):o.push(ste(w));let h=!1,_=null;return o.forEach(w=>{if(w instanceof Map&&(w.has("easing")&&(_=w.get("easing"),w.delete("easing")),!h))for(let D of w.values())if(D.toString().indexOf("{{")>=0){h=!0;break}}),{type:6,styles:o,easing:_,offset:a.offset,containsDynamicStyles:h,options:null}}_validateStyleAst(a,e){const o=e.currentAnimateTimings;let d=e.currentTime,h=e.currentTime;o&&h>0&&(h-=o.duration+o.delay),a.styles.forEach(_=>{"string"!=typeof _&&_.forEach((w,D)=>{const k=e.collectedStyles.get(e.currentQuerySelector),P=k.get(D);let B=!0;P&&(h!=d&&h>=P.startTime&&d<=P.endTime&&(e.errors.push(function Rce(i,a,e,o,d){return new Ce(3010,!1)}()),B=!1),h=P.startTime),B&&k.set(D,{startTime:h,endTime:d}),e.options&&function ude(i,a,e){const o=a.params||{},d=ute(i);d.length&&d.forEach(h=>{o.hasOwnProperty(h)||e.push(function Dce(i){return new Ce(3001,!1)}())})}(w,e.options,e.errors)})})}visitKeyframes(a,e){const o={type:5,styles:[],options:null};if(!e.currentAnimateTimings)return e.errors.push(function Oce(){return new Ce(3011,!1)}()),o;let h=0;const _=[];let w=!1,D=!1,k=0;const P=a.steps.map(he=>{const Me=this._makeStyleAst(he,e);let fe=null!=Me.offset?Me.offset:function Tde(i){if("string"==typeof i)return null;let a=null;if(Array.isArray(i))i.forEach(e=>{if(e instanceof Map&&e.has("offset")){const o=e;a=parseFloat(o.get("offset")),o.delete("offset")}});else if(i instanceof Map&&i.has("offset")){const e=i;a=parseFloat(e.get("offset")),e.delete("offset")}return a}(Me.styles),Fe=0;return null!=fe&&(h++,Fe=Me.offset=fe),D=D||Fe<0||Fe>1,w=w||Fe0&&h{const fe=W>0?Me==Z?1:W*Me:_[Me],Fe=fe*de;e.currentTime=te+ie.delay+Fe,ie.duration=Fe,this._validateStyleAst(he,e),he.offset=fe,o.styles.push(he)}),o}visitReference(a,e){return{type:8,animation:pl(this,_I(a.animation),e),options:Tb(a.options)}}visitAnimateChild(a,e){return e.depCount++,{type:9,options:Tb(a.options)}}visitAnimateRef(a,e){return{type:10,animation:this.visitReference(a.animation,e),options:Tb(a.options)}}visitQuery(a,e){const o=e.currentQuerySelector,d=a.options||{};e.queryCount++,e.currentQuery=a;const[h,_]=function Sde(i){const a=!!i.split(/\s*,\s*/).find(e=>":self"==e);return a&&(i=i.replace(xde,"")),i=i.replace(/@\*/g,mz).replace(/@\w+/g,e=>mz+"-"+e.slice(1)).replace(/:animating/g,KY),[i,a]}(a.selector);e.currentQuerySelector=o.length?o+" "+h:h,fl(e.collectedStyles,e.currentQuerySelector,new Map);const w=pl(this,_I(a.animation),e);return e.currentQuery=null,e.currentQuerySelector=o,{type:11,selector:h,limit:d.limit||0,optional:!!d.optional,includeSelf:_,animation:w,originalSelector:a.selector,options:Tb(a.options)}}visitStagger(a,e){e.currentQuery||e.errors.push(function Bce(){return new Ce(3013,!1)}());const o="full"===a.timings?{duration:0,delay:0,easing:"full"}:gz(a.timings,e.errors,!0);return{type:12,animation:pl(this,_I(a.animation),e),timings:o,options:null}}}class Mde{constructor(a){this.errors=a,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function Tb(i){return i?(i=vI(i)).params&&(i.params=function Dde(i){return i?vI(i):null}(i.params)):i={},i}function nq(i,a,e){return{duration:i,delay:a,easing:e}}function iq(i,a,e,o,d,h,_=null,w=!1){return{type:1,element:i,keyframes:a,preStyleProps:e,postStyleProps:o,duration:d,delay:h,totalTime:d+h,easing:_,subTimeline:w}}class Cz{constructor(){this._map=new Map}get(a){return this._map.get(a)||[]}append(a,e){let o=this._map.get(a);o||this._map.set(a,o=[]),o.push(...e)}has(a){return this._map.has(a)}clear(){this._map.clear()}}const Ide=new RegExp(":enter","g"),Rde=new RegExp(":leave","g");function rq(i,a,e,o,d,h=new Map,_=new Map,w,D,k=[]){return(new Ode).buildKeyframes(i,a,e,o,d,h,_,w,D,k)}class Ode{buildKeyframes(a,e,o,d,h,_,w,D,k,P=[]){k=k||new Cz;const B=new aq(a,e,k,d,h,P,[]);B.options=D;const W=D.delay?Jf(D.delay):0;B.currentTimeline.delayNextStep(W),B.currentTimeline.setStyles([_],null,B.errors,D),pl(this,o,B);const Z=B.timelines.filter(te=>te.containsAnimation());if(Z.length&&w.size){let te;for(let ie=Z.length-1;ie>=0;ie--){const de=Z[ie];if(de.element===e){te=de;break}}te&&!te.allowOnlyTimelineStyles()&&te.setStyles([w],null,B.errors,D)}return Z.length?Z.map(te=>te.buildKeyframes()):[iq(e,[],[],[],0,W,"",!1)]}visitTrigger(a,e){}visitState(a,e){}visitTransition(a,e){}visitAnimateChild(a,e){const o=e.subInstructions.get(e.element);if(o){const d=e.createSubContext(a.options),h=e.currentTimeline.currentTime,_=this._visitSubInstructions(o,d,d.options);h!=_&&e.transformIntoNewTimeline(_)}e.previousNode=a}visitAnimateRef(a,e){const o=e.createSubContext(a.options);o.transformIntoNewTimeline(),this._applyAnimationRefDelays([a.options,a.animation.options],e,o),this.visitReference(a.animation,o),e.transformIntoNewTimeline(o.currentTimeline.currentTime),e.previousNode=a}_applyAnimationRefDelays(a,e,o){for(const h of a){const _=null==h?void 0:h.delay;if(_){var d;const w="number"==typeof _?_:Jf(yI(_,null!==(d=null==h?void 0:h.params)&&void 0!==d?d:{},e.errors));o.delayNextStep(w)}}}_visitSubInstructions(a,e,o){let h=e.currentTimeline.currentTime;const _=null!=o.duration?Jf(o.duration):null,w=null!=o.delay?Jf(o.delay):null;return 0!==_&&a.forEach(D=>{const k=e.appendInstructionToTimeline(D,_,w);h=Math.max(h,k.duration+k.delay)}),h}visitReference(a,e){e.updateOptions(a.options,!0),pl(this,a.animation,e),e.previousNode=a}visitSequence(a,e){const o=e.subContextCount;let d=e;const h=a.options;if(h&&(h.params||h.delay)&&(d=e.createSubContext(h),d.transformIntoNewTimeline(),null!=h.delay)){6==d.previousNode.type&&(d.currentTimeline.snapshotCurrentStyles(),d.previousNode=Sz);const _=Jf(h.delay);d.delayNextStep(_)}a.steps.length&&(a.steps.forEach(_=>pl(this,_,d)),d.currentTimeline.applyStylesToKeyframe(),d.subContextCount>o&&d.transformIntoNewTimeline()),e.previousNode=a}visitGroup(a,e){const o=[];let d=e.currentTimeline.currentTime;const h=a.options&&a.options.delay?Jf(a.options.delay):0;a.steps.forEach(_=>{const w=e.createSubContext(a.options);h&&w.delayNextStep(h),pl(this,_,w),d=Math.max(d,w.currentTimeline.currentTime),o.push(w.currentTimeline)}),o.forEach(_=>e.currentTimeline.mergeTimelineCollectedStyles(_)),e.transformIntoNewTimeline(d),e.previousNode=a}_visitTiming(a,e){if(a.dynamic){const o=a.strValue;return gz(e.params?yI(o,e.params,e.errors):o,e.errors)}return{duration:a.duration,delay:a.delay,easing:a.easing}}visitAnimate(a,e){const o=e.currentAnimateTimings=this._visitTiming(a.timings,e),d=e.currentTimeline;o.delay&&(e.incrementTime(o.delay),d.snapshotCurrentStyles());const h=a.style;5==h.type?this.visitKeyframes(h,e):(e.incrementTime(o.duration),this.visitStyle(h,e),d.applyStylesToKeyframe()),e.currentAnimateTimings=null,e.previousNode=a}visitStyle(a,e){const o=e.currentTimeline,d=e.currentAnimateTimings;!d&&o.hasCurrentStyleProperties()&&o.forwardFrame();const h=d&&d.easing||a.easing;a.isEmptyStep?o.applyEmptyStep(h):o.setStyles(a.styles,h,e.errors,e.options),e.previousNode=a}visitKeyframes(a,e){const o=e.currentAnimateTimings,d=e.currentTimeline.duration,h=o.duration,w=e.createSubContext().currentTimeline;w.easing=o.easing,a.styles.forEach(D=>{w.forwardTime((D.offset||0)*h),w.setStyles(D.styles,D.easing,e.errors,e.options),w.applyStylesToKeyframe()}),e.currentTimeline.mergeTimelineCollectedStyles(w),e.transformIntoNewTimeline(d+h),e.previousNode=a}visitQuery(a,e){const o=e.currentTimeline.currentTime,d=a.options||{},h=d.delay?Jf(d.delay):0;h&&(6===e.previousNode.type||0==o&&e.currentTimeline.hasCurrentStyleProperties())&&(e.currentTimeline.snapshotCurrentStyles(),e.previousNode=Sz);let _=o;const w=e.invokeQuery(a.selector,a.originalSelector,a.limit,a.includeSelf,!!d.optional,e.errors);e.currentQueryTotal=w.length;let D=null;w.forEach((k,P)=>{e.currentQueryIndex=P;const B=e.createSubContext(a.options,k);h&&B.delayNextStep(h),k===e.element&&(D=B.currentTimeline),pl(this,a.animation,B),B.currentTimeline.applyStylesToKeyframe(),_=Math.max(_,B.currentTimeline.currentTime)}),e.currentQueryIndex=0,e.currentQueryTotal=0,e.transformIntoNewTimeline(_),D&&(e.currentTimeline.mergeTimelineCollectedStyles(D),e.currentTimeline.snapshotCurrentStyles()),e.previousNode=a}visitStagger(a,e){const o=e.parentContext,d=e.currentTimeline,h=a.timings,_=Math.abs(h.duration),w=_*(e.currentQueryTotal-1);let D=_*e.currentQueryIndex;switch(h.duration<0?"reverse":h.easing){case"reverse":D=w-D;break;case"full":D=o.currentStaggerTime}const P=e.currentTimeline;D&&P.delayNextStep(D);const B=P.currentTime;pl(this,a.animation,e),e.previousNode=a,o.currentStaggerTime=d.currentTime-B+(d.startTime-o.currentTimeline.startTime)}}const Sz={};class aq{constructor(a,e,o,d,h,_,w,D){this._driver=a,this.element=e,this.subInstructions=o,this._enterClassName=d,this._leaveClassName=h,this.errors=_,this.timelines=w,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Sz,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=D||new Dz(this._driver,e,0),w.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(a,e){if(!a)return;const o=a;let d=this.options;null!=o.duration&&(d.duration=Jf(o.duration)),null!=o.delay&&(d.delay=Jf(o.delay));const h=o.params;if(h){let _=d.params;_||(_=this.options.params={}),Object.keys(h).forEach(w=>{(!e||!_.hasOwnProperty(w))&&(_[w]=yI(h[w],_,this.errors))})}}_copyOptions(){const a={};if(this.options){const e=this.options.params;if(e){const o=a.params={};Object.keys(e).forEach(d=>{o[d]=e[d]})}}return a}createSubContext(a=null,e,o){const d=e||this.element,h=new aq(this._driver,d,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(d,o||0));return h.previousNode=this.previousNode,h.currentAnimateTimings=this.currentAnimateTimings,h.options=this._copyOptions(),h.updateOptions(a),h.currentQueryIndex=this.currentQueryIndex,h.currentQueryTotal=this.currentQueryTotal,h.parentContext=this,this.subContextCount++,h}transformIntoNewTimeline(a){return this.previousNode=Sz,this.currentTimeline=this.currentTimeline.fork(this.element,a),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(a,e,o){const d={duration:e??a.duration,delay:this.currentTimeline.currentTime+(o??0)+a.delay,easing:""},h=new Lde(this._driver,a.element,a.keyframes,a.preStyleProps,a.postStyleProps,d,a.stretchStartingKeyframe);return this.timelines.push(h),d}incrementTime(a){this.currentTimeline.forwardTime(this.currentTimeline.duration+a)}delayNextStep(a){a>0&&this.currentTimeline.delayNextStep(a)}invokeQuery(a,e,o,d,h,_){let w=[];if(d&&w.push(this.element),a.length>0){a=(a=a.replace(Ide,"."+this._enterClassName)).replace(Rde,"."+this._leaveClassName);let k=this._driver.query(this.element,a,1!=o);0!==o&&(k=o<0?k.slice(k.length+o,k.length):k.slice(0,o)),w.push(...k)}return!h&&0==w.length&&_.push(function Vce(i){return new Ce(3014,!1)}()),w}}class Dz{constructor(a,e,o,d){this._driver=a,this.element=e,this.startTime=o,this._elementTimelineStylesLookup=d,this.duration=0,this.easing=null,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(e),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(e,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(a){const e=1===this._keyframes.size&&this._pendingStyles.size;this.duration||e?(this.forwardTime(this.currentTime+a),e&&this.snapshotCurrentStyles()):this.startTime+=a}fork(a,e){return this.applyStylesToKeyframe(),new Dz(this._driver,a,e||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(a){this.applyStylesToKeyframe(),this.duration=a,this._loadKeyframe()}_updateStyle(a,e){this._localTimelineStyles.set(a,e),this._globalTimelineStyles.set(a,e),this._styleSummary.set(a,{time:this.currentTime,value:e})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(a){a&&this._previousKeyframe.set("easing",a);for(let[e,o]of this._globalTimelineStyles)this._backFill.set(e,o||Ns),this._currentKeyframe.set(e,Ns);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(a,e,o,d){e&&this._previousKeyframe.set("easing",e);const h=d&&d.params||{},_=function Fde(i,a){const e=new Map;let o;return i.forEach(d=>{if("*"===d){o=o||a.keys();for(let h of o)e.set(h,Ns)}else Og(d,e)}),e}(a,this._globalTimelineStyles);for(let[D,k]of _){const P=yI(k,h,o);var w;this._pendingStyles.set(D,P),this._localTimelineStyles.has(D)||this._backFill.set(D,null!==(w=this._globalTimelineStyles.get(D))&&void 0!==w?w:Ns),this._updateStyle(D,P)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((a,e)=>{this._currentKeyframe.set(e,a)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((a,e)=>{this._currentKeyframe.has(e)||this._currentKeyframe.set(e,a)}))}snapshotCurrentStyles(){for(let[a,e]of this._localTimelineStyles)this._pendingStyles.set(a,e),this._updateStyle(a,e)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const a=[];for(let e in this._currentKeyframe)a.push(e);return a}mergeTimelineCollectedStyles(a){a._styleSummary.forEach((e,o)=>{const d=this._styleSummary.get(o);(!d||e.time>d.time)&&this._updateStyle(o,e.value)})}buildKeyframes(){this.applyStylesToKeyframe();const a=new Set,e=new Set,o=1===this._keyframes.size&&0===this.duration;let d=[];this._keyframes.forEach((w,D)=>{const k=Og(w,new Map,this._backFill);k.forEach((P,B)=>{P===LC?a.add(B):P===Ns&&e.add(B)}),o||k.set("offset",D/this.duration),d.push(k)});const h=a.size?vz(a.values()):[],_=e.size?vz(e.values()):[];if(o){const w=d[0],D=new Map(w);w.set("offset",0),D.set("offset",1),d=[w,D]}return iq(this.element,d,h,_,this.duration,this.startTime,this.easing,!1)}}class Lde extends Dz{constructor(a,e,o,d,h,_,w=!1){super(a,e,_.delay),this.keyframes=o,this.preStyleProps=d,this.postStyleProps=h,this._stretchStartingKeyframe=w,this.timings={duration:_.duration,delay:_.delay,easing:_.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let a=this.keyframes,{delay:e,duration:o,easing:d}=this.timings;if(this._stretchStartingKeyframe&&e){const h=[],_=o+e,w=e/_,D=Og(a[0]);D.set("offset",0),h.push(D);const k=Og(a[0]);k.set("offset",gte(w)),h.push(k);const P=a.length-1;for(let B=1;B<=P;B++){let W=Og(a[B]);const Z=W.get("offset");W.set("offset",gte((e+Z*o)/_)),h.push(W)}o=_,e=0,d="",a=h}return iq(this.element,a,this.preStyleProps,this.postStyleProps,o,e,d,!0)}}function gte(i,a=3){const e=Math.pow(10,a-1);return Math.round(i*e)/e}class oq{}const Nde=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class Bde extends oq{normalizePropertyName(a,e){return eq(a)}normalizeStyleValue(a,e,o,d){let h="";const _=o.toString().trim();if(Nde.has(e)&&0!==o&&"0"!==o)if("number"==typeof o)h="px";else{const w=o.match(/^[+-]?[\d\.]+([a-z]*)$/);w&&0==w[1].length&&d.push(function Ace(i,a){return new Ce(3005,!1)}())}return _+h}}function vte(i,a,e,o,d,h,_,w,D,k,P,B,W){return{type:0,element:i,triggerName:a,isRemovalTransition:d,fromState:e,fromStyles:h,toState:o,toStyles:_,timelines:w,queriedElements:D,preStyleProps:k,postStyleProps:P,totalTime:B,errors:W}}const sq={};class _te{constructor(a,e,o){this._triggerName=a,this.ast=e,this._stateStyles=o}match(a,e,o,d){return function Vde(i,a,e,o,d){return i.some(h=>h(a,e,o,d))}(this.ast.matchers,a,e,o,d)}buildStyles(a,e,o){let d=this._stateStyles.get("*");return void 0!==a&&(d=this._stateStyles.get(null==a?void 0:a.toString())||d),d?d.buildStyles(e,o):new Map}build(a,e,o,d,h,_,w,D,k,P){var B;const W=[],Z=this.ast.options&&this.ast.options.params||sq,ie=this.buildStyles(o,w&&w.params||sq,W),de=D&&D.params||sq,he=this.buildStyles(d,de,W),Me=new Set,fe=new Map,Fe=new Map,yn="void"===d,ti={params:zde(de,Z),delay:null===(B=this.ast.options)||void 0===B?void 0:B.delay},Ko=P?[]:rq(a,e,this.ast.animation,h,_,ie,he,ti,k,W);let mc=0;if(Ko.forEach(Md=>{mc=Math.max(Md.duration+Md.delay,mc)}),W.length)return vte(e,this._triggerName,o,d,yn,ie,he,[],[],fe,Fe,mc,W);Ko.forEach(Md=>{const wI=Md.element,xI=fl(fe,wI,new Set);Md.preStyleProps.forEach(G1=>xI.add(G1));const CI=fl(Fe,wI,new Set);Md.postStyleProps.forEach(G1=>CI.add(G1)),wI!==e&&Me.add(wI)});const Pz=vz(Me.values());return vte(e,this._triggerName,o,d,yn,ie,he,Ko,Pz,fe,Fe,mc)}}function zde(i,a){const e=vI(a);for(const o in i)i.hasOwnProperty(o)&&null!=i[o]&&(e[o]=i[o]);return e}class Hde{constructor(a,e,o){this.styles=a,this.defaultParams=e,this.normalizer=o}buildStyles(a,e){const o=new Map,d=vI(this.defaultParams);return Object.keys(a).forEach(h=>{const _=a[h];null!==_&&(d[h]=_)}),this.styles.styles.forEach(h=>{"string"!=typeof h&&h.forEach((_,w)=>{_&&(_=yI(_,d,e));const D=this.normalizer.normalizePropertyName(w,e);_=this.normalizer.normalizeStyleValue(w,D,_,e),o.set(w,_)})}),o}}class Ude{constructor(a,e,o){this.name=a,this.ast=e,this._normalizer=o,this.transitionFactories=[],this.states=new Map,e.states.forEach(d=>{this.states.set(d.name,new Hde(d.style,d.options&&d.options.params||{},o))}),yte(this.states,"true","1"),yte(this.states,"false","0"),e.transitions.forEach(d=>{this.transitionFactories.push(new _te(a,d,this.states))}),this.fallbackTransition=function jde(i,a,e){return new _te(i,{type:1,animation:{type:2,steps:[],options:null},matchers:[(_,w)=>!0],options:null,queryCount:0,depCount:0},a)}(a,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(a,e,o,d){return this.transitionFactories.find(_=>_.match(a,e,o,d))||null}matchStyles(a,e,o){return this.fallbackTransition.buildStyles(a,e,o)}}function yte(i,a,e){i.has(a)?i.has(e)||i.set(e,i.get(a)):i.has(e)&&i.set(a,i.get(e))}const $de=new Cz;class Wde{constructor(a,e,o){this.bodyNode=a,this._driver=e,this._normalizer=o,this._animations=new Map,this._playersById=new Map,this.players=[]}register(a,e){const o=[],d=[],h=tq(this._driver,e,o,d);if(o.length)throw function Wce(i){return new Ce(3503,!1)}();this._animations.set(a,h)}_buildPlayer(a,e,o){const d=a.element,h=Kee(0,this._normalizer,0,a.keyframes,e,o);return this._driver.animate(d,h,a.duration,a.delay,a.easing,[],!0)}create(a,e,o={}){const d=[],h=this._animations.get(a);let _;const w=new Map;if(h?(_=rq(this._driver,e,h,ZY,fz,new Map,new Map,o,$de,d),_.forEach(P=>{const B=fl(w,P.element,new Map);P.postStyleProps.forEach(W=>B.set(W,null))})):(d.push(function Yce(){return new Ce(3300,!1)}()),_=[]),d.length)throw function qce(i){return new Ce(3504,!1)}();w.forEach((P,B)=>{P.forEach((W,Z)=>{P.set(Z,this._driver.computeStyle(B,Z,Ns))})});const k=Rg(_.map(P=>{const B=w.get(P.element);return this._buildPlayer(P,new Map,B)}));return this._playersById.set(a,k),k.onDestroy(()=>this.destroy(a)),this.players.push(k),k}destroy(a){const e=this._getPlayer(a);e.destroy(),this._playersById.delete(a);const o=this.players.indexOf(e);o>=0&&this.players.splice(o,1)}_getPlayer(a){const e=this._playersById.get(a);if(!e)throw function Xce(i){return new Ce(3301,!1)}();return e}listen(a,e,o,d){const h=WY(e,"","","");return jY(this._getPlayer(a),o,h,d),()=>{}}command(a,e,o,d){if("register"==o)return void this.register(a,d[0]);if("create"==o)return void this.create(a,e,d[0]||{});const h=this._getPlayer(a);switch(o){case"play":h.play();break;case"pause":h.pause();break;case"reset":h.reset();break;case"restart":h.restart();break;case"finish":h.finish();break;case"init":h.init();break;case"setPosition":h.setPosition(parseFloat(d[0]));break;case"destroy":this.destroy(a)}}}const bte="ng-animate-queued",lq="ng-animate-disabled",Kde=[],wte={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},Qde={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},fc="__ng_removed";class cq{get params(){return this.options.params}constructor(a,e=""){this.namespaceId=e;const o=a&&a.hasOwnProperty("value");if(this.value=function nue(i){return i??null}(o?a.value:a),o){const h=vI(a);delete h.value,this.options=h}else this.options={};this.options.params||(this.options.params={})}absorbOptions(a){const e=a.params;if(e){const o=this.options.params;Object.keys(e).forEach(d=>{null==o[d]&&(o[d]=e[d])})}}}const bI="void",dq=new cq(bI);class Jde{constructor(a,e,o){this.id=a,this.hostElement=e,this._engine=o,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+a,pc(e,this._hostClassName)}listen(a,e,o,d){if(!this._triggers.has(e))throw function Zce(i,a){return new Ce(3302,!1)}();if(null==o||0==o.length)throw function Kce(i){return new Ce(3303,!1)}();if(!function iue(i){return"start"==i||"done"==i}(o))throw function Qce(i,a){return new Ce(3400,!1)}();const h=fl(this._elementListeners,a,[]),_={name:e,phase:o,callback:d};h.push(_);const w=fl(this._engine.statesByElement,a,new Map);return w.has(e)||(pc(a,pz),pc(a,pz+"-"+e),w.set(e,dq)),()=>{this._engine.afterFlush(()=>{const D=h.indexOf(_);D>=0&&h.splice(D,1),this._triggers.has(e)||w.delete(e)})}}register(a,e){return!this._triggers.has(a)&&(this._triggers.set(a,e),!0)}_getTrigger(a){const e=this._triggers.get(a);if(!e)throw function Jce(i){return new Ce(3401,!1)}();return e}trigger(a,e,o,d=!0){const h=this._getTrigger(e),_=new uq(this.id,e,a);let w=this._engine.statesByElement.get(a);w||(pc(a,pz),pc(a,pz+"-"+e),this._engine.statesByElement.set(a,w=new Map));let D=w.get(e);const k=new cq(o,this.id);if(!(o&&o.hasOwnProperty("value"))&&D&&k.absorbOptions(D.options),w.set(e,k),D||(D=dq),k.value!==bI&&D.value===k.value){if(!function oue(i,a){const e=Object.keys(i),o=Object.keys(a);if(e.length!=o.length)return!1;for(let d=0;d{Mb(a,de),qu(a,he)})}return}const W=fl(this._engine.playersByElement,a,[]);W.forEach(ie=>{ie.namespaceId==this.id&&ie.triggerName==e&&ie.queued&&ie.destroy()});let Z=h.matchTransition(D.value,k.value,a,k.params),te=!1;if(!Z){if(!d)return;Z=h.fallbackTransition,te=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:a,triggerName:e,transition:Z,fromState:D,toState:k,player:_,isFallbackTransition:te}),te||(pc(a,bte),_.onStart(()=>{V1(a,bte)})),_.onDone(()=>{let ie=this.players.indexOf(_);ie>=0&&this.players.splice(ie,1);const de=this._engine.playersByElement.get(a);if(de){let he=de.indexOf(_);he>=0&&de.splice(he,1)}}),this.players.push(_),W.push(_),_}deregister(a){this._triggers.delete(a),this._engine.statesByElement.forEach(e=>e.delete(a)),this._elementListeners.forEach((e,o)=>{this._elementListeners.set(o,e.filter(d=>d.name!=a))})}clearElementCache(a){this._engine.statesByElement.delete(a),this._elementListeners.delete(a);const e=this._engine.playersByElement.get(a);e&&(e.forEach(o=>o.destroy()),this._engine.playersByElement.delete(a))}_signalRemovalForInnerTriggers(a,e){const o=this._engine.driver.query(a,mz,!0);o.forEach(d=>{if(d[fc])return;const h=this._engine.fetchNamespacesByElement(d);h.size?h.forEach(_=>_.triggerLeaveAnimation(d,e,!1,!0)):this.clearElementCache(d)}),this._engine.afterFlushAnimationsDone(()=>o.forEach(d=>this.clearElementCache(d)))}triggerLeaveAnimation(a,e,o,d){const h=this._engine.statesByElement.get(a),_=new Map;if(h){const w=[];if(h.forEach((D,k)=>{if(_.set(k,D.value),this._triggers.has(k)){const P=this.trigger(a,k,bI,d);P&&w.push(P)}}),w.length)return this._engine.markElementAsRemoved(this.id,a,!0,e,_),o&&Rg(w).onDone(()=>this._engine.processLeaveNode(a)),!0}return!1}prepareLeaveAnimationListeners(a){const e=this._elementListeners.get(a),o=this._engine.statesByElement.get(a);if(e&&o){const d=new Set;e.forEach(h=>{const _=h.name;if(d.has(_))return;d.add(_);const D=this._triggers.get(_).fallbackTransition,k=o.get(_)||dq,P=new cq(bI),B=new uq(this.id,_,a);this._engine.totalQueuedPlayers++,this._queue.push({element:a,triggerName:_,transition:D,fromState:k,toState:P,player:B,isFallbackTransition:!0})})}}removeNode(a,e){const o=this._engine;if(a.childElementCount&&this._signalRemovalForInnerTriggers(a,e),this.triggerLeaveAnimation(a,e,!0))return;let d=!1;if(o.totalAnimations){const h=o.players.length?o.playersByQueriedElement.get(a):[];if(h&&h.length)d=!0;else{let _=a;for(;_=_.parentNode;)if(o.statesByElement.get(_)){d=!0;break}}}if(this.prepareLeaveAnimationListeners(a),d)o.markElementAsRemoved(this.id,a,!1,e);else{const h=a[fc];(!h||h===wte)&&(o.afterFlush(()=>this.clearElementCache(a)),o.destroyInnerAnimations(a),o._onRemovalComplete(a,e))}}insertNode(a,e){pc(a,this._hostClassName)}drainQueuedTransitions(a){const e=[];return this._queue.forEach(o=>{const d=o.player;if(d.destroyed)return;const h=o.element,_=this._elementListeners.get(h);_&&_.forEach(w=>{if(w.name==o.triggerName){const D=WY(h,o.triggerName,o.fromState.value,o.toState.value);D._data=a,jY(o.player,w.phase,D,w.callback)}}),d.markedForDestroy?this._engine.afterFlush(()=>{d.destroy()}):e.push(o)}),this._queue=[],e.sort((o,d)=>{const h=o.transition.ast.depCount,_=d.transition.ast.depCount;return 0==h||0==_?h-_:this._engine.driver.containsElement(o.element,d.element)?1:-1})}destroy(a){this.players.forEach(e=>e.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,a)}elementContainsData(a){let e=!1;return this._elementListeners.has(a)&&(e=!0),e=!!this._queue.find(o=>o.element===a)||e,e}}class eue{_onRemovalComplete(a,e){this.onRemovalComplete(a,e)}constructor(a,e,o){this.bodyNode=a,this.driver=e,this._normalizer=o,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(d,h)=>{}}get queuedPlayers(){const a=[];return this._namespaceList.forEach(e=>{e.players.forEach(o=>{o.queued&&a.push(o)})}),a}createNamespace(a,e){const o=new Jde(a,e,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,e)?this._balanceNamespaceList(o,e):(this.newHostElements.set(e,o),this.collectEnterElement(e)),this._namespaceLookup[a]=o}_balanceNamespaceList(a,e){const o=this._namespaceList,d=this.namespacesByHostElement;if(o.length-1>=0){let _=!1,w=this.driver.getParentElement(e);for(;w;){const D=d.get(w);if(D){const k=o.indexOf(D);o.splice(k+1,0,a),_=!0;break}w=this.driver.getParentElement(w)}_||o.unshift(a)}else o.push(a);return d.set(e,a),a}register(a,e){let o=this._namespaceLookup[a];return o||(o=this.createNamespace(a,e)),o}registerTrigger(a,e,o){let d=this._namespaceLookup[a];d&&d.register(e,o)&&this.totalAnimations++}destroy(a,e){if(!a)return;const o=this._fetchNamespace(a);this.afterFlush(()=>{this.namespacesByHostElement.delete(o.hostElement),delete this._namespaceLookup[a];const d=this._namespaceList.indexOf(o);d>=0&&this._namespaceList.splice(d,1)}),this.afterFlushAnimationsDone(()=>o.destroy(e))}_fetchNamespace(a){return this._namespaceLookup[a]}fetchNamespacesByElement(a){const e=new Set,o=this.statesByElement.get(a);if(o)for(let d of o.values())if(d.namespaceId){const h=this._fetchNamespace(d.namespaceId);h&&e.add(h)}return e}trigger(a,e,o,d){if(Mz(e)){const h=this._fetchNamespace(a);if(h)return h.trigger(e,o,d),!0}return!1}insertNode(a,e,o,d){if(!Mz(e))return;const h=e[fc];if(h&&h.setForRemoval){h.setForRemoval=!1,h.setForMove=!0;const _=this.collectedLeaveElements.indexOf(e);_>=0&&this.collectedLeaveElements.splice(_,1)}if(a){const _=this._fetchNamespace(a);_&&_.insertNode(e,o)}d&&this.collectEnterElement(e)}collectEnterElement(a){this.collectedEnterElements.push(a)}markElementAsDisabled(a,e){e?this.disabledNodes.has(a)||(this.disabledNodes.add(a),pc(a,lq)):this.disabledNodes.has(a)&&(this.disabledNodes.delete(a),V1(a,lq))}removeNode(a,e,o,d){if(Mz(e)){const h=a?this._fetchNamespace(a):null;if(h?h.removeNode(e,d):this.markElementAsRemoved(a,e,!1,d),o){const _=this.namespacesByHostElement.get(e);_&&_.id!==a&&_.removeNode(e,d)}}else this._onRemovalComplete(e,d)}markElementAsRemoved(a,e,o,d,h){this.collectedLeaveElements.push(e),e[fc]={namespaceId:a,setForRemoval:d,hasAnimation:o,removedBeforeQueried:!1,previousTriggersValues:h}}listen(a,e,o,d,h){return Mz(e)?this._fetchNamespace(a).listen(e,o,d,h):()=>{}}_buildInstruction(a,e,o,d,h){return a.transition.build(this.driver,a.element,a.fromState.value,a.toState.value,o,d,a.fromState.options,a.toState.options,e,h)}destroyInnerAnimations(a){let e=this.driver.query(a,mz,!0);e.forEach(o=>this.destroyActiveAnimationsForElement(o)),0!=this.playersByQueriedElement.size&&(e=this.driver.query(a,KY,!0),e.forEach(o=>this.finishActiveQueriedAnimationOnElement(o)))}destroyActiveAnimationsForElement(a){const e=this.playersByElement.get(a);e&&e.forEach(o=>{o.queued?o.markedForDestroy=!0:o.destroy()})}finishActiveQueriedAnimationOnElement(a){const e=this.playersByQueriedElement.get(a);e&&e.forEach(o=>o.finish())}whenRenderingDone(){return new Promise(a=>{if(this.players.length)return Rg(this.players).onDone(()=>a());a()})}processLeaveNode(a){var e;const o=a[fc];if(o&&o.setForRemoval){if(a[fc]=wte,o.namespaceId){this.destroyInnerAnimations(a);const d=this._fetchNamespace(o.namespaceId);d&&d.clearElementCache(a)}this._onRemovalComplete(a,o.setForRemoval)}null!==(e=a.classList)&&void 0!==e&&e.contains(lq)&&this.markElementAsDisabled(a,!1),this.driver.query(a,".ng-animate-disabled",!0).forEach(d=>{this.markElementAsDisabled(d,!1)})}flush(a=-1){let e=[];if(this.newHostElements.size&&(this.newHostElements.forEach((o,d)=>this._balanceNamespaceList(o,d)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let o=0;oo()),this._flushFns=[],this._whenQuietFns.length){const o=this._whenQuietFns;this._whenQuietFns=[],e.length?Rg(e).onDone(()=>{o.forEach(d=>d())}):o.forEach(d=>d())}}reportError(a){throw function ede(i){return new Ce(3402,!1)}()}_flushAnimations(a,e){const o=new Cz,d=[],h=new Map,_=[],w=new Map,D=new Map,k=new Map,P=new Set;this.disabledNodes.forEach(gt=>{P.add(gt);const It=this.driver.query(gt,".ng-animate-queued",!0);for(let Vt=0;Vt{const Vt=ZY+ie++;te.set(It,Vt),gt.forEach(kn=>pc(kn,Vt))});const de=[],he=new Set,Me=new Set;for(let gt=0;gthe.add(kn)):Me.add(It))}const fe=new Map,Fe=Ste(W,Array.from(he));Fe.forEach((gt,It)=>{const Vt=fz+ie++;fe.set(It,Vt),gt.forEach(kn=>pc(kn,Vt))}),a.push(()=>{Z.forEach((gt,It)=>{const Vt=te.get(It);gt.forEach(kn=>V1(kn,Vt))}),Fe.forEach((gt,It)=>{const Vt=fe.get(It);gt.forEach(kn=>V1(kn,Vt))}),de.forEach(gt=>{this.processLeaveNode(gt)})});const yn=[],ti=[];for(let gt=this._namespaceList.length-1;gt>=0;gt--)this._namespaceList[gt].drainQueuedTransitions(e).forEach(Vt=>{const kn=Vt.player,Mr=Vt.element;if(yn.push(kn),this.collectedEnterElements.length){const go=Mr[fc];if(go&&go.setForMove){if(go.previousTriggersValues&&go.previousTriggersValues.has(Vt.triggerName)){const Ab=go.previousTriggersValues.get(Vt.triggerName),gc=this.statesByElement.get(Vt.element);if(gc&&gc.has(Vt.triggerName)){const Rz=gc.get(Vt.triggerName);Rz.value=Ab,gc.set(Vt.triggerName,Rz)}}return void kn.destroy()}}const Xu=!B||!this.driver.containsElement(B,Mr),ml=fe.get(Mr),Lg=te.get(Mr),mr=this._buildInstruction(Vt,o,Lg,ml,Xu);if(mr.errors&&mr.errors.length)return void ti.push(mr);if(Xu)return kn.onStart(()=>Mb(Mr,mr.fromStyles)),kn.onDestroy(()=>qu(Mr,mr.toStyles)),void d.push(kn);if(Vt.isFallbackTransition)return kn.onStart(()=>Mb(Mr,mr.fromStyles)),kn.onDestroy(()=>qu(Mr,mr.toStyles)),void d.push(kn);const jte=[];mr.timelines.forEach(go=>{go.stretchStartingKeyframe=!0,this.disabledNodes.has(go.element)||jte.push(go)}),mr.timelines=jte,o.append(Mr,mr.timelines),_.push({instruction:mr,player:kn,element:Mr}),mr.queriedElements.forEach(go=>fl(w,go,[]).push(kn)),mr.preStyleProps.forEach((go,Ab)=>{if(go.size){let gc=D.get(Ab);gc||D.set(Ab,gc=new Set),go.forEach((Rz,bq)=>gc.add(bq))}}),mr.postStyleProps.forEach((go,Ab)=>{let gc=k.get(Ab);gc||k.set(Ab,gc=new Set),go.forEach((Rz,bq)=>gc.add(bq))})});if(ti.length){const gt=[];ti.forEach(It=>{gt.push(function tde(i,a){return new Ce(3505,!1)}())}),yn.forEach(It=>It.destroy()),this.reportError(gt)}const Ko=new Map,mc=new Map;_.forEach(gt=>{const It=gt.element;o.has(It)&&(mc.set(It,It),this._beforeAnimationBuild(gt.player.namespaceId,gt.instruction,Ko))}),d.forEach(gt=>{const It=gt.element;this._getPreviousPlayers(It,!1,gt.namespaceId,gt.triggerName,null).forEach(kn=>{fl(Ko,It,[]).push(kn),kn.destroy()})});const Pz=de.filter(gt=>Mte(gt,D,k)),Md=new Map;Cte(Md,this.driver,Me,k,Ns).forEach(gt=>{Mte(gt,D,k)&&Pz.push(gt)});const xI=new Map;Z.forEach((gt,It)=>{Cte(xI,this.driver,new Set(gt),D,LC)}),Pz.forEach(gt=>{var It,Vt;const kn=Md.get(gt),Mr=xI.get(gt);Md.set(gt,new Map([...Array.from(null!==(It=null==kn?void 0:kn.entries())&&void 0!==It?It:[]),...Array.from(null!==(Vt=null==Mr?void 0:Mr.entries())&&void 0!==Vt?Vt:[])]))});const CI=[],G1=[],Ute={};_.forEach(gt=>{const{element:It,player:Vt,instruction:kn}=gt;if(o.has(It)){if(P.has(It))return Vt.onDestroy(()=>qu(It,kn.toStyles)),Vt.disabled=!0,Vt.overrideTotalTime(kn.totalTime),void d.push(Vt);let Mr=Ute;if(mc.size>1){let ml=It;const Lg=[];for(;ml=ml.parentNode;){const mr=mc.get(ml);if(mr){Mr=mr;break}Lg.push(ml)}Lg.forEach(mr=>mc.set(mr,Mr))}const Xu=this._buildAnimation(Vt.namespaceId,kn,Ko,h,xI,Md);if(Vt.setRealPlayer(Xu),Mr===Ute)CI.push(Vt);else{const ml=this.playersByElement.get(Mr);ml&&ml.length&&(Vt.parentPlayer=Rg(ml)),d.push(Vt)}}else Mb(It,kn.fromStyles),Vt.onDestroy(()=>qu(It,kn.toStyles)),G1.push(Vt),P.has(It)&&d.push(Vt)}),G1.forEach(gt=>{const It=h.get(gt.element);if(It&&It.length){const Vt=Rg(It);gt.setRealPlayer(Vt)}}),d.forEach(gt=>{gt.parentPlayer?gt.syncPlayerEvents(gt.parentPlayer):gt.destroy()});for(let gt=0;gt!Xu.destroyed);Mr.length?rue(this,It,Mr):this.processLeaveNode(It)}return de.length=0,CI.forEach(gt=>{this.players.push(gt),gt.onDone(()=>{gt.destroy();const It=this.players.indexOf(gt);this.players.splice(It,1)}),gt.play()}),CI}elementContainsData(a,e){let o=!1;const d=e[fc];return d&&d.setForRemoval&&(o=!0),this.playersByElement.has(e)&&(o=!0),this.playersByQueriedElement.has(e)&&(o=!0),this.statesByElement.has(e)&&(o=!0),this._fetchNamespace(a).elementContainsData(e)||o}afterFlush(a){this._flushFns.push(a)}afterFlushAnimationsDone(a){this._whenQuietFns.push(a)}_getPreviousPlayers(a,e,o,d,h){let _=[];if(e){const w=this.playersByQueriedElement.get(a);w&&(_=w)}else{const w=this.playersByElement.get(a);if(w){const D=!h||h==bI;w.forEach(k=>{k.queued||!D&&k.triggerName!=d||_.push(k)})}}return(o||d)&&(_=_.filter(w=>!(o&&o!=w.namespaceId||d&&d!=w.triggerName))),_}_beforeAnimationBuild(a,e,o){const h=e.element,_=e.isRemovalTransition?void 0:a,w=e.isRemovalTransition?void 0:e.triggerName;for(const D of e.timelines){const k=D.element,P=k!==h,B=fl(o,k,[]);this._getPreviousPlayers(k,P,_,w,e.toState).forEach(Z=>{const te=Z.getRealPlayer();te.beforeDestroy&&te.beforeDestroy(),Z.destroy(),B.push(Z)})}Mb(h,e.fromStyles)}_buildAnimation(a,e,o,d,h,_){const w=e.triggerName,D=e.element,k=[],P=new Set,B=new Set,W=e.timelines.map(te=>{const ie=te.element;P.add(ie);const de=ie[fc];if(de&&de.removedBeforeQueried)return new hg(te.duration,te.delay);const he=ie!==D,Me=function aue(i){const a=[];return Dte(i,a),a}((o.get(ie)||Kde).map(Ko=>Ko.getRealPlayer())).filter(Ko=>!!Ko.element&&Ko.element===ie),fe=h.get(ie),Fe=_.get(ie),yn=Kee(0,this._normalizer,0,te.keyframes,fe,Fe),ti=this._buildPlayer(te,yn,Me);if(te.subTimeline&&d&&B.add(ie),he){const Ko=new uq(a,w,ie);Ko.setRealPlayer(ti),k.push(Ko)}return ti});k.forEach(te=>{fl(this.playersByQueriedElement,te.element,[]).push(te),te.onDone(()=>function tue(i,a,e){let o=i.get(a);if(o){if(o.length){const d=o.indexOf(e);o.splice(d,1)}0==o.length&&i.delete(a)}return o}(this.playersByQueriedElement,te.element,te))}),P.forEach(te=>pc(te,ote));const Z=Rg(W);return Z.onDestroy(()=>{P.forEach(te=>V1(te,ote)),qu(D,e.toStyles)}),B.forEach(te=>{fl(d,te,[]).push(Z)}),Z}_buildPlayer(a,e,o){return e.length>0?this.driver.animate(a.element,e,a.duration,a.delay,a.easing,o):new hg(a.duration,a.delay)}}class uq{constructor(a,e,o){this.namespaceId=a,this.triggerName=e,this.element=o,this._player=new hg,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.parentPlayer=null,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(a){this._containsRealPlayer||(this._player=a,this._queuedCallbacks.forEach((e,o)=>{e.forEach(d=>jY(a,o,void 0,d))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(a.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(a){this.totalTime=a}syncPlayerEvents(a){const e=this._player;e.triggerCallback&&a.onStart(()=>e.triggerCallback("start")),a.onDone(()=>this.finish()),a.onDestroy(()=>this.destroy())}_queueEvent(a,e){fl(this._queuedCallbacks,a,[]).push(e)}onDone(a){this.queued&&this._queueEvent("done",a),this._player.onDone(a)}onStart(a){this.queued&&this._queueEvent("start",a),this._player.onStart(a)}onDestroy(a){this.queued&&this._queueEvent("destroy",a),this._player.onDestroy(a)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(a){this.queued||this._player.setPosition(a)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(a){const e=this._player;e.triggerCallback&&e.triggerCallback(a)}}function Mz(i){return i&&1===i.nodeType}function xte(i,a){const e=i.style.display;return i.style.display=a??"none",e}function Cte(i,a,e,o,d){const h=[];e.forEach(D=>h.push(xte(D)));const _=[];o.forEach((D,k)=>{const P=new Map;D.forEach(B=>{const W=a.computeStyle(k,B,d);P.set(B,W),(!W||0==W.length)&&(k[fc]=Qde,_.push(k))}),i.set(k,P)});let w=0;return e.forEach(D=>xte(D,h[w++])),_}function Ste(i,a){const e=new Map;if(i.forEach(w=>e.set(w,[])),0==a.length)return e;const o=1,d=new Set(a),h=new Map;function _(w){if(!w)return o;let D=h.get(w);if(D)return D;const k=w.parentNode;return D=e.has(k)?k:d.has(k)?o:_(k),h.set(w,D),D}return a.forEach(w=>{const D=_(w);D!==o&&e.get(D).push(w)}),e}function pc(i,a){var e;null===(e=i.classList)||void 0===e||e.add(a)}function V1(i,a){var e;null===(e=i.classList)||void 0===e||e.remove(a)}function rue(i,a,e){Rg(e).onDone(()=>i.processLeaveNode(a))}function Dte(i,a){for(let e=0;ed.add(h)):a.set(i,o),e.delete(i),!0}class Tz{constructor(a,e,o){this.bodyNode=a,this._driver=e,this._normalizer=o,this._triggerCache={},this.onRemovalComplete=(d,h)=>{},this._transitionEngine=new eue(a,e,o),this._timelineEngine=new Wde(a,e,o),this._transitionEngine.onRemovalComplete=(d,h)=>this.onRemovalComplete(d,h)}registerTrigger(a,e,o,d,h){const _=a+"-"+d;let w=this._triggerCache[_];if(!w){const D=[],k=[],P=tq(this._driver,h,D,k);if(D.length)throw function jce(i,a){return new Ce(3404,!1)}();w=function Gde(i,a,e){return new Ude(i,a,e)}(d,P,this._normalizer),this._triggerCache[_]=w}this._transitionEngine.registerTrigger(e,d,w)}register(a,e){this._transitionEngine.register(a,e)}destroy(a,e){this._transitionEngine.destroy(a,e)}onInsert(a,e,o,d){this._transitionEngine.insertNode(a,e,o,d)}onRemove(a,e,o,d){this._transitionEngine.removeNode(a,e,d||!1,o)}disableAnimations(a,e){this._transitionEngine.markElementAsDisabled(a,e)}process(a,e,o,d){if("@"==o.charAt(0)){const[h,_]=Qee(o);this._timelineEngine.command(h,e,_,d)}else this._transitionEngine.trigger(a,e,o,d)}listen(a,e,o,d,h){if("@"==o.charAt(0)){const[_,w]=Qee(o);return this._timelineEngine.listen(_,e,w,h)}return this._transitionEngine.listen(a,e,o,d,h)}flush(a=-1){this._transitionEngine.flush(a)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}let lue=(()=>{class i{constructor(e,o,d){this._element=e,this._startStyles=o,this._endStyles=d,this._state=0;let h=i.initialStylesByElement.get(e);h||i.initialStylesByElement.set(e,h=new Map),this._initialStyles=h}start(){this._state<1&&(this._startStyles&&qu(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(qu(this._element,this._initialStyles),this._endStyles&&(qu(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(i.initialStylesByElement.delete(this._element),this._startStyles&&(Mb(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(Mb(this._element,this._endStyles),this._endStyles=null),qu(this._element,this._initialStyles),this._state=3)}}return i.initialStylesByElement=new WeakMap,i})();function hq(i){let a=null;return i.forEach((e,o)=>{(function cue(i){return"display"===i||"position"===i})(o)&&(a=a||new Map,a.set(o,e))}),a}class Tte{constructor(a,e,o,d){this.element=a,this.keyframes=e,this.options=o,this._specialStyles=d,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=o.duration,this._delay=o.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(a=>a()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const a=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,a,this.options),this._finalKeyframe=a.length?a[a.length-1]:new Map,this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(a){const e=[];return a.forEach(o=>{e.push(Object.fromEntries(o))}),e}_triggerWebAnimation(a,e,o){return a.animate(this._convertKeyframesToObject(e),o)}onStart(a){this._originalOnStartFns.push(a),this._onStartFns.push(a)}onDone(a){this._originalOnDoneFns.push(a),this._onDoneFns.push(a)}onDestroy(a){this._onDestroyFns.push(a)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(a=>a()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(a=>a()),this._onDestroyFns=[])}setPosition(a){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=a*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const a=new Map;this.hasStarted()&&this._finalKeyframe.forEach((o,d)=>{"offset"!==d&&a.set(d,this._finished?o:hte(this.element,d))}),this.currentSnapshot=a}triggerCallback(a){const e="start"===a?this._onStartFns:this._onDoneFns;e.forEach(o=>o()),e.length=0}}class due{validateStyleProperty(a){return!0}validateAnimatableStyleProperty(a){return!0}matchesElement(a,e){return!1}containsElement(a,e){return nte(a,e)}getParentElement(a){return qY(a)}query(a,e,o){return ite(a,e,o)}computeStyle(a,e,o){return window.getComputedStyle(a)[e]}animate(a,e,o,d,h,_=[]){const D={duration:o,delay:d,fill:0==d?"both":"forwards"};h&&(D.easing=h);const k=new Map,P=_.filter(Z=>Z instanceof Tte);(function pde(i,a){return 0===i||0===a})(o,d)&&P.forEach(Z=>{Z.currentSnapshot.forEach((te,ie)=>k.set(ie,te))});let B=function dde(i){return i.length?i[0]instanceof Map?i:i.map(a=>ste(a)):[]}(e).map(Z=>Og(Z));B=function mde(i,a,e){if(e.size&&a.length){let o=a[0],d=[];if(e.forEach((h,_)=>{o.has(_)||d.push(_),o.set(_,h)}),d.length)for(let h=1;h_.set(w,hte(i,w)))}}return a}(a,B,k);const W=function sue(i,a){let e=null,o=null;return Array.isArray(a)&&a.length?(e=hq(a[0]),a.length>1&&(o=hq(a[a.length-1]))):a instanceof Map&&(e=hq(a)),e||o?new lue(i,e,o):null}(a,B);return new Tte(a,B,D,W)}}let uue=(()=>{class i extends rV{constructor(e,o){super(),this._nextAnimationId=0,this._renderer=e.createRenderer(o.body,{id:"0",encapsulation:Ar.None,styles:[],data:{animation:[]}})}build(e){const o=this._nextAnimationId.toString();this._nextAnimationId++;const d=Array.isArray(e)?oV(e):e;return Ate(this._renderer,null,o,"register",[d]),new hue(o,this._renderer)}}return i.\u0275fac=function(e){return new(e||i)(ae(Ph),ae(ht))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();class hue extends aV{constructor(a,e){super(),this._id=a,this._renderer=e}create(a,e){return new fue(this._id,a,e||{},this._renderer)}}class fue{constructor(a,e,o,d){this.id=a,this.element=e,this._renderer=d,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",o)}_listen(a,e){return this._renderer.listen(this.element,`@@${this.id}:${a}`,e)}_command(a,...e){return Ate(this._renderer,this.element,this.id,a,e)}onDone(a){this._listen("done",a)}onStart(a){this._listen("start",a)}onDestroy(a){this._listen("destroy",a)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(a){this._command("setPosition",a)}getPosition(){var a,e;return null!==(a=null===(e=this._renderer.engine.players[+this.id])||void 0===e?void 0:e.getPosition())&&void 0!==a?a:0}}function Ate(i,a,e,o,d){return i.setProperty(a,`@@${e}:${o}`,d)}const kte="@.disabled";let pue=(()=>{class i{constructor(e,o,d){this.delegate=e,this.engine=o,this._zone=d,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),o.onRemovalComplete=(h,_)=>{const w=null==_?void 0:_.parentNode(h);w&&_.removeChild(w,h)}}createRenderer(e,o){const h=this.delegate.createRenderer(e,o);if(!(e&&o&&o.data&&o.data.animation)){let P=this._rendererCache.get(h);return P||(P=new Ete("",h,this.engine,()=>this._rendererCache.delete(h)),this._rendererCache.set(h,P)),P}const _=o.id,w=o.id+"-"+this._currentId;this._currentId++,this.engine.register(w,e);const D=P=>{Array.isArray(P)?P.forEach(D):this.engine.registerTrigger(_,w,e,P.name,P)};return o.data.animation.forEach(D),new mue(this,w,h,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(e,o,d){e>=0&&eo(d)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(h=>{const[_,w]=h;_(w)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([o,d]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return i.\u0275fac=function(e){return new(e||i)(ae(Ph),ae(Tz),ae(et))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})();class Ete{constructor(a,e,o,d){this.namespaceId=a,this.delegate=e,this.engine=o,this._onDestroy=d,this.destroyNode=this.delegate.destroyNode?h=>e.destroyNode(h):null}get data(){return this.delegate.data}destroy(){var a;this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy(),null===(a=this._onDestroy)||void 0===a||a.call(this)}createElement(a,e){return this.delegate.createElement(a,e)}createComment(a){return this.delegate.createComment(a)}createText(a){return this.delegate.createText(a)}appendChild(a,e){this.delegate.appendChild(a,e),this.engine.onInsert(this.namespaceId,e,a,!1)}insertBefore(a,e,o,d=!0){this.delegate.insertBefore(a,e,o),this.engine.onInsert(this.namespaceId,e,a,d)}removeChild(a,e,o){this.engine.onRemove(this.namespaceId,e,this.delegate,o)}selectRootElement(a,e){return this.delegate.selectRootElement(a,e)}parentNode(a){return this.delegate.parentNode(a)}nextSibling(a){return this.delegate.nextSibling(a)}setAttribute(a,e,o,d){this.delegate.setAttribute(a,e,o,d)}removeAttribute(a,e,o){this.delegate.removeAttribute(a,e,o)}addClass(a,e){this.delegate.addClass(a,e)}removeClass(a,e){this.delegate.removeClass(a,e)}setStyle(a,e,o,d){this.delegate.setStyle(a,e,o,d)}removeStyle(a,e,o){this.delegate.removeStyle(a,e,o)}setProperty(a,e,o){"@"==e.charAt(0)&&e==kte?this.disableAnimations(a,!!o):this.delegate.setProperty(a,e,o)}setValue(a,e){this.delegate.setValue(a,e)}listen(a,e,o){return this.delegate.listen(a,e,o)}disableAnimations(a,e){this.engine.disableAnimations(a,e)}}class mue extends Ete{constructor(a,e,o,d,h){super(e,o,d,h),this.factory=a,this.namespaceId=e}setProperty(a,e,o){"@"==e.charAt(0)?"."==e.charAt(1)&&e==kte?this.disableAnimations(a,o=void 0===o||!!o):this.engine.process(this.namespaceId,a,e.slice(1),o):this.delegate.setProperty(a,e,o)}listen(a,e,o){if("@"==e.charAt(0)){const d=function gue(i){switch(i){case"body":return document.body;case"document":return document;case"window":return window;default:return i}}(a);let h=e.slice(1),_="";return"@"!=h.charAt(0)&&([h,_]=function vue(i){const a=i.indexOf(".");return[i.substring(0,a),i.slice(a+1)]}(h)),this.engine.listen(this.namespaceId,d,h,_,w=>{this.factory.scheduleListenerCallback(w._data||-1,o,w)})}return this.delegate.listen(a,e,o)}}const Ite=[{provide:rV,useClass:uue},{provide:oq,useFactory:function yue(){return new Bde}},{provide:Tz,useClass:(()=>{class i extends Tz{constructor(e,o,d,h){super(e.body,o,d)}ngOnDestroy(){this.flush()}}return i.\u0275fac=function(e){return new(e||i)(ae(ht),ae(XY),ae(oq),ae(vu))},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})()},{provide:Ph,useFactory:function bue(i,a,e){return new pue(i,a,e)},deps:[Y_,Tz,et]}],fq=[{provide:XY,useFactory:()=>new due},{provide:Ei,useValue:"BrowserAnimations"},...Ite],Pte=[{provide:XY,useClass:rte},{provide:Ei,useValue:"NoopAnimations"},...Ite];let wue=(()=>{class i{static withConfig(e){return{ngModule:i,providers:e.disableAnimations?Pte:fq}}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:fq,imports:[LL]}),i})();function xue(i,a){1&i&&(I(0,"span",8),ut(1,1),O())}function Cue(i,a){1&i&&(I(0,"span",9),ut(1,2),O())}const Rte=["*",[["mat-chip-avatar"],["","matChipAvatar",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],Ote=["*","mat-chip-avatar, [matChipAvatar]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"];function Mue(i,a){if(1&i&&(vn(0),pe(1,"span",9)(2,"span",10),wn()),2&i){const e=X();N(1),z("matRippleDisabled",e._isRippleDisabled())("matRippleCentered",e._isRippleCentered)("matRippleTrigger",e._elementRef.nativeElement)}}function Tue(i,a){1&i&&(I(0,"span",11),ut(1),O())}function Aue(i,a){1&i&&(vn(0),ut(1,1),wn())}function kue(i,a){1&i&&ut(0,2,["*ngIf","contentEditInput; else defaultMatChipEditInput"])}function Eue(i,a){1&i&&pe(0,"span",14)}function Iue(i,a){if(1&i&&(vn(0),J(1,kue,1,0,"ng-content",12),J(2,Eue,1,0,"ng-template",null,13,Zr),wn()),2&i){const e=on(3),o=X();N(1),z("ngIf",o.contentEditInput)("ngIfElse",e)}}function Pue(i,a){1&i&&(I(0,"span",15),ut(1,3),O())}const Rue=[[["mat-chip-avatar"],["","matChipAvatar",""]],"*",[["","matChipEditInput",""]],[["mat-chip-trailing-icon"],["","matChipRemove",""],["","matChipTrailingIcon",""]]],Oue=["mat-chip-avatar, [matChipAvatar]","*","[matChipEditInput]","mat-chip-trailing-icon,[matChipRemove],[matChipTrailingIcon]"],pq=["*"],kz=new be("mat-chips-default-options"),mq=new be("MatChipAvatar"),gq=new be("MatChipTrailingIcon"),vq=new be("MatChipRemove"),Ez=new be("MatChip");class Lue{}const Fue=gd(Lue,-1);let z1=(()=>{class i extends Fue{get disabled(){return this._disabled||this._parentChip.disabled}set disabled(e){this._disabled=Ge(e)}_getDisabledAttribute(){return this.disabled&&!this._allowFocusWhenDisabled?"":null}_getTabindex(){return this.disabled&&!this._allowFocusWhenDisabled||!this.isInteractive?null:this.tabIndex.toString()}constructor(e,o){super(),this._elementRef=e,this._parentChip=o,this.isInteractive=!0,this._isPrimary=!0,this._disabled=!1,this._allowFocusWhenDisabled=!1,"BUTTON"===e.nativeElement.nodeName&&e.nativeElement.setAttribute("type","button")}focus(){this._elementRef.nativeElement.focus()}_handleClick(e){!this.disabled&&this.isInteractive&&this._isPrimary&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!this.disabled&&this.isInteractive&&this._isPrimary&&!this._parentChip._isEditing&&(e.preventDefault(),this._parentChip._handlePrimaryActionInteraction())}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Ez))},i.\u0275dir=me({type:i,selectors:[["","matChipAction",""]],hostAttrs:[1,"mdc-evolution-chip__action","mat-mdc-chip-action"],hostVars:9,hostBindings:function(e,o){1&e&&Q("click",function(h){return o._handleClick(h)})("keydown",function(h){return o._handleKeydown(h)}),2&e&&(Ve("tabindex",o._getTabindex())("disabled",o._getDisabledAttribute())("aria-disabled",o.disabled),st("mdc-evolution-chip__action--primary",o._isPrimary)("mdc-evolution-chip__action--presentational",!o.isInteractive)("mdc-evolution-chip__action--trailing",!o._isPrimary))},inputs:{disabled:"disabled",tabIndex:"tabIndex",isInteractive:"isInteractive",_allowFocusWhenDisabled:"_allowFocusWhenDisabled"},features:[Se]}),i})(),Nte=(()=>{class i extends z1{constructor(){super(...arguments),this._isPrimary=!1}_handleClick(e){this.disabled||(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}_handleKeydown(e){(13===e.keyCode||32===e.keyCode)&&!this.disabled&&(e.stopPropagation(),e.preventDefault(),this._parentChip.remove())}}return i.\u0275fac=function(){let a;return function(o){return(a||(a=_t(i)))(o||i)}}(),i.\u0275dir=me({type:i,selectors:[["","matChipRemove",""]],hostAttrs:["role","button",1,"mat-mdc-chip-remove","mat-mdc-chip-trailing-icon","mat-mdc-focus-indicator","mdc-evolution-chip__icon","mdc-evolution-chip__icon--trailing"],hostVars:1,hostBindings:function(e,o){2&e&&Ve("aria-hidden",null)},features:[Ue([{provide:vq,useExisting:i}]),Se]}),i})(),Vue=0;const zue=gd(Fs(oc(Uo(class{constructor(i){this._elementRef=i}})),"primary"),-1);let H1=(()=>{class i extends zue{_hasFocus(){return this._hasFocusInternal}get value(){return void 0!==this._value?this._value:this._textElement.textContent.trim()}set value(e){this._value=e}get removable(){return this._removable}set removable(e){this._removable=Ge(e)}get highlighted(){return this._highlighted}set highlighted(e){this._highlighted=Ge(e)}constructor(e,o,d,h,_,w,D,k){var P;super(o),this._changeDetectorRef=e,this._ngZone=d,this._focusMonitor=h,this._globalRippleOptions=D,this._isRippleCentered=!1,this._onFocus=new He,this._onBlur=new He,this.role=null,this._hasFocusInternal=!1,this.id="mat-mdc-chip-"+Vue++,this.ariaLabel=null,this.ariaDescription=null,this._ariaDescriptionId=`${this.id}-aria-description`,this._removable=!0,this._highlighted=!1,this.removed=new we,this.destroyed=new we,this.basicChipAttrName="mat-basic-chip",this._document=_,this._animationsDisabled="NoopAnimations"===w,null!=k&&(this.tabIndex=null!==(P=parseInt(k))&&void 0!==P?P:this.defaultTabIndex),this._monitorFocus()}ngOnInit(){const e=this._elementRef.nativeElement;this._isBasicChip=e.hasAttribute(this.basicChipAttrName)||e.tagName.toLowerCase()===this.basicChipAttrName}ngAfterViewInit(){this._textElement=this._elementRef.nativeElement.querySelector(".mat-mdc-chip-action-label"),this._pendingFocus&&(this._pendingFocus=!1,this.focus())}ngAfterContentInit(){this._actionChanges=Wn(this._allLeadingIcons.changes,this._allTrailingIcons.changes,this._allRemoveIcons.changes).subscribe(()=>this._changeDetectorRef.markForCheck())}ngOnDestroy(){var e;this._focusMonitor.stopMonitoring(this._elementRef),null===(e=this._actionChanges)||void 0===e||e.unsubscribe(),this.destroyed.emit({chip:this}),this.destroyed.complete()}remove(){this.removable&&this.removed.emit({chip:this})}_isRippleDisabled(){var e;return this.disabled||this.disableRipple||this._animationsDisabled||this._isBasicChip||!(null===(e=this._globalRippleOptions)||void 0===e||!e.disabled)}_hasTrailingIcon(){return!(!this.trailingIcon&&!this.removeIcon)}_handleKeydown(e){(8===e.keyCode||46===e.keyCode)&&(e.preventDefault(),this.remove())}focus(){this.disabled||(this.primaryAction?this.primaryAction.focus():this._pendingFocus=!0)}_getSourceAction(e){return this._getActions().find(o=>{const d=o._elementRef.nativeElement;return d===e||d.contains(e)})}_getActions(){const e=[];return this.primaryAction&&e.push(this.primaryAction),this.removeIcon&&e.push(this.removeIcon),this.trailingIcon&&e.push(this.trailingIcon),e}_handlePrimaryActionInteraction(){}_monitorFocus(){this._focusMonitor.monitor(this._elementRef,!0).subscribe(e=>{const o=null!==e;o!==this._hasFocusInternal&&(this._hasFocusInternal=o,o?this._onFocus.next({chip:this}):this._ngZone.onStable.pipe(Tn(1)).subscribe(()=>this._ngZone.run(()=>this._onBlur.next({chip:this}))))})}}return i.\u0275fac=function(e){return new(e||i)(F(Jt),F(Be),F(et),F(Go),F(ht),F(Ei,8),F(fo,8),Co("tabindex"))},i.\u0275cmp=_e({type:i,selectors:[["mat-basic-chip"],["","mat-basic-chip",""],["mat-chip"],["","mat-chip",""]],contentQueries:function(e,o,d){if(1&e&&(Qt(d,mq,5),Qt(d,gq,5),Qt(d,vq,5),Qt(d,mq,5),Qt(d,gq,5),Qt(d,vq,5)),2&e){let h;Pe(h=Ae())&&(o.leadingIcon=h.first),Pe(h=Ae())&&(o.trailingIcon=h.first),Pe(h=Ae())&&(o.removeIcon=h.first),Pe(h=Ae())&&(o._allLeadingIcons=h),Pe(h=Ae())&&(o._allTrailingIcons=h),Pe(h=Ae())&&(o._allRemoveIcons=h)}},viewQuery:function(e,o){if(1&e&&(ct(fa,5),ct(z1,5)),2&e){let d;Pe(d=Ae())&&(o.ripple=d.first),Pe(d=Ae())&&(o.primaryAction=d.first)}},hostAttrs:[1,"mat-mdc-chip"],hostVars:30,hostBindings:function(e,o){1&e&&Q("keydown",function(h){return o._handleKeydown(h)}),2&e&&(la("id",o.id),Ve("role",o.role)("tabindex",o.role?o.tabIndex:null)("aria-label",o.ariaLabel),st("mdc-evolution-chip",!o._isBasicChip)("mdc-evolution-chip--disabled",o.disabled)("mdc-evolution-chip--with-trailing-action",o._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",o.leadingIcon)("mdc-evolution-chip--with-primary-icon",o.leadingIcon)("mdc-evolution-chip--with-avatar",o.leadingIcon)("mat-mdc-chip-with-avatar",o.leadingIcon)("mat-mdc-chip-highlighted",o.highlighted)("mat-mdc-chip-disabled",o.disabled)("mat-mdc-basic-chip",o._isBasicChip)("mat-mdc-standard-chip",!o._isBasicChip)("mat-mdc-chip-with-trailing-icon",o._hasTrailingIcon())("_mat-animation-noopable",o._animationsDisabled))},inputs:{color:"color",disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex",role:"role",id:"id",ariaLabel:["aria-label","ariaLabel"],ariaDescription:["aria-description","ariaDescription"],value:"value",removable:"removable",highlighted:"highlighted"},outputs:{removed:"removed",destroyed:"destroyed"},exportAs:["matChip"],features:[Ue([{provide:Ez,useExisting:i}]),Se],ngContentSelectors:Ote,decls:9,vars:6,consts:[["matRipple","",1,"mat-mdc-chip-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"isInteractive"],["class","mdc-evolution-chip__graphic mat-mdc-chip-graphic",4,"ngIf"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label"],[1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],["class","mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing",4,"ngIf"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(e,o){1&e&&(On(Rte),pe(0,"span",0)(1,"span",1),I(2,"span",2)(3,"span",3),J(4,xue,2,0,"span",4),I(5,"span",5),ut(6),pe(7,"span",6),O()()(),J(8,Cue,2,0,"span",7)),2&e&&(z("matRippleDisabled",o._isRippleDisabled())("matRippleCentered",o._isRippleCentered)("matRippleTrigger",o._elementRef.nativeElement),N(3),z("isInteractive",!1),N(1),z("ngIf",o.leadingIcon),N(4),z("ngIf",o._hasTrailingIcon()))},dependencies:[en,fa,z1],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{overflow-x:hidden}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mdc-evolution-chip__action--primary:before{box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1}.mdc-evolution-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-evolution-chip__action-touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-evolution-chip__text-label{white-space:nowrap;user-select:none;text-overflow:ellipsis;overflow:hidden}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mdc-evolution-chip__checkmark-background{opacity:0}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__graphic{transition:width 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark{transition:opacity 50ms 0ms linear,transform 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-50%, -50%)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@keyframes mdc-evolution-chip-enter{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-evolution-chip--enter{animation:mdc-evolution-chip-enter 100ms 0ms cubic-bezier(0, 0, 0.2, 1)}@keyframes mdc-evolution-chip-exit{from{opacity:1}to{opacity:0}}.mdc-evolution-chip--exit{animation:mdc-evolution-chip-exit 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-evolution-chip--hidden{opacity:0;pointer-events:none;transition:width 150ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-standard-chip .mdc-evolution-chip__checkmark{height:20px;width:20px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__graphic{height:24px;width:24px;font-size:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__icon--primary{height:24px;width:24px;font-size:24px}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);height:var(--mdc-chip-container-height, 32px)}.mat-mdc-standard-chip .mdc-evolution-chip__ripple{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius, 14px 14px 14px 14px)}.mat-mdc-standard-chip.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{height:var(--mdc-chip-with-avatar-avatar-size, 28px);width:var(--mdc-chip-with-avatar-avatar-size, 28px);font-size:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-outline-width, 1px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-outline-width, 1px)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--selected) .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-unselected-outline-width, 1px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{height:var(--mdc-chip-with-icon-icon-size, 18px);width:var(--mdc-chip-with-icon-icon-size, 18px);font-size:var(--mdc-chip-with-icon-icon-size, 18px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, currentColor)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-standard-chip .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:.4}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary{width:100%}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{opacity:.04}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{opacity:.12}.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-chip-remove{opacity:.54}.mat-mdc-chip-remove:focus{opacity:1}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px) * -1);left:8px;right:8px}.mat-mdc-chip-remove .mat-icon{width:inherit;height:inherit;font-size:inherit;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),i})(),Iz=(()=>{class i{constructor(e,o){this._elementRef=e,this._document=o}initialize(e){this.getNativeElement().focus(),this.setValue(e)}getNativeElement(){return this._elementRef.nativeElement}setValue(e){this.getNativeElement().textContent=e,this._moveCursorToEndOfInput()}getValue(){return this.getNativeElement().textContent||""}_moveCursorToEndOfInput(){const e=this._document.createRange();e.selectNodeContents(this.getNativeElement()),e.collapse(!1);const o=window.getSelection();o.removeAllRanges(),o.addRange(e)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(ht))},i.\u0275dir=me({type:i,selectors:[["span","matChipEditInput",""]],hostAttrs:["role","textbox","tabindex","-1","contenteditable","true",1,"mat-chip-edit-input"]}),i})(),_q=(()=>{class i extends H1{constructor(e,o,d,h,_,w,D,k){super(e,o,d,h,_,w,D,k),this.basicChipAttrName="mat-basic-chip-row",this._editStartPending=!1,this.editable=!1,this.edited=new we,this._isEditing=!1,this.role="row",this._onBlur.pipe(Et(this.destroyed)).subscribe(()=>{this._isEditing&&!this._editStartPending&&this._onEditFinish()})}_hasTrailingIcon(){return!this._isEditing&&super._hasTrailingIcon()}_handleFocus(){!this._isEditing&&!this.disabled&&this.focus()}_handleKeydown(e){13!==e.keyCode||this.disabled?this._isEditing?e.stopPropagation():super._handleKeydown(e):this._isEditing?(e.preventDefault(),this._onEditFinish()):this.editable&&this._startEditing(e)}_handleDoubleclick(e){!this.disabled&&this.editable&&this._startEditing(e)}_startEditing(e){if(!this.primaryAction||this.removeIcon&&this._getSourceAction(e.target)===this.removeIcon)return;const o=this.value;this._isEditing=!0,this._editStartPending=!0,setTimeout(()=>{this._getEditInput().initialize(o),this._editStartPending=!1})}_onEditFinish(){this._isEditing=!1,this._editStartPending=!1,this.edited.emit({chip:this,value:this._getEditInput().getValue()}),(this._document.activeElement===this._getEditInput().getNativeElement()||this._document.activeElement===this._document.body)&&this.primaryAction.focus()}_getEditInput(){return this.contentEditInput||this.defaultEditInput}}return i.\u0275fac=function(e){return new(e||i)(F(Jt),F(Be),F(et),F(Go),F(ht),F(Ei,8),F(fo,8),Co("tabindex"))},i.\u0275cmp=_e({type:i,selectors:[["mat-chip-row"],["","mat-chip-row",""],["mat-basic-chip-row"],["","mat-basic-chip-row",""]],contentQueries:function(e,o,d){if(1&e&&Qt(d,Iz,5),2&e){let h;Pe(h=Ae())&&(o.contentEditInput=h.first)}},viewQuery:function(e,o){if(1&e&&ct(Iz,5),2&e){let d;Pe(d=Ae())&&(o.defaultEditInput=d.first)}},hostAttrs:[1,"mat-mdc-chip","mat-mdc-chip-row","mdc-evolution-chip"],hostVars:27,hostBindings:function(e,o){1&e&&Q("focus",function(h){return o._handleFocus(h)})("dblclick",function(h){return o._handleDoubleclick(h)}),2&e&&(la("id",o.id),Ve("tabindex",o.disabled?null:-1)("aria-label",null)("aria-description",null)("role",o.role),st("mat-mdc-chip-with-avatar",o.leadingIcon)("mat-mdc-chip-disabled",o.disabled)("mat-mdc-chip-editing",o._isEditing)("mat-mdc-chip-editable",o.editable)("mdc-evolution-chip--disabled",o.disabled)("mdc-evolution-chip--with-trailing-action",o._hasTrailingIcon())("mdc-evolution-chip--with-primary-graphic",o.leadingIcon)("mdc-evolution-chip--with-primary-icon",o.leadingIcon)("mdc-evolution-chip--with-avatar",o.leadingIcon)("mat-mdc-chip-highlighted",o.highlighted)("mat-mdc-chip-with-trailing-icon",o._hasTrailingIcon()))},inputs:{color:"color",disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex",editable:"editable"},outputs:{edited:"edited"},features:[Ue([{provide:H1,useExisting:i},{provide:Ez,useExisting:i}]),Se],ngContentSelectors:Oue,decls:11,vars:13,consts:[[4,"ngIf"],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--primary"],["matChipAction","",3,"tabIndex","disabled"],["class","mdc-evolution-chip__graphic mat-mdc-chip-graphic",4,"ngIf"],[1,"mdc-evolution-chip__text-label","mat-mdc-chip-action-label",3,"ngSwitch"],[4,"ngSwitchCase"],[1,"mat-mdc-chip-primary-focus-indicator","mat-mdc-focus-indicator"],["class","mdc-evolution-chip__cell mdc-evolution-chip__cell--trailing","role","gridcell",4,"ngIf"],[1,"cdk-visually-hidden",3,"id"],["matRipple","",1,"mat-mdc-chip-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-chip-focus-overlay"],[1,"mdc-evolution-chip__graphic","mat-mdc-chip-graphic"],[4,"ngIf","ngIfElse"],["defaultMatChipEditInput",""],["matChipEditInput",""],["role","gridcell",1,"mdc-evolution-chip__cell","mdc-evolution-chip__cell--trailing"]],template:function(e,o){1&e&&(On(Rue),J(0,Mue,3,3,"ng-container",0),I(1,"span",1)(2,"span",2),J(3,Tue,2,0,"span",3),I(4,"span",4),J(5,Aue,2,0,"ng-container",5),J(6,Iue,4,2,"ng-container",5),pe(7,"span",6),O()()(),J(8,Pue,2,0,"span",7),I(9,"span",8),Y(10),O()),2&e&&(z("ngIf",!o._isEditing),N(2),z("tabIndex",o.tabIndex)("disabled",o.disabled),Ve("role",o.editable?"button":null)("aria-label",o.ariaLabel)("aria-describedby",o._ariaDescriptionId),N(1),z("ngIf",o.leadingIcon),N(1),z("ngSwitch",o._isEditing),N(1),z("ngSwitchCase",!1),N(1),z("ngSwitchCase",!0),N(2),z("ngIf",o._hasTrailingIcon()),N(1),z("id",o._ariaDescriptionId),N(1),Sn(o.ariaDescription))},dependencies:[en,td,mf,fa,z1,Iz],styles:['.mdc-evolution-chip,.mdc-evolution-chip__cell,.mdc-evolution-chip__action{display:inline-flex;align-items:center}.mdc-evolution-chip{position:relative;max-width:100%}.mdc-evolution-chip .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-evolution-chip__cell,.mdc-evolution-chip__action{height:100%}.mdc-evolution-chip__cell--primary{overflow-x:hidden}.mdc-evolution-chip__cell--trailing{flex:1 0 auto}.mdc-evolution-chip__action{align-items:center;background:none;border:none;box-sizing:content-box;cursor:pointer;display:inline-flex;justify-content:center;outline:none;padding:0;text-decoration:none;color:inherit}.mdc-evolution-chip__action--presentational{cursor:auto}.mdc-evolution-chip--disabled,.mdc-evolution-chip__action:disabled{pointer-events:none}.mdc-evolution-chip__action--primary{overflow-x:hidden}.mdc-evolution-chip__action--trailing{position:relative;overflow:visible}.mdc-evolution-chip__action--primary:before{box-sizing:border-box;content:"";height:100%;left:0;position:absolute;pointer-events:none;top:0;width:100%;z-index:1}.mdc-evolution-chip--touch{margin-top:8px;margin-bottom:8px}.mdc-evolution-chip__action-touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-evolution-chip__text-label{white-space:nowrap;user-select:none;text-overflow:ellipsis;overflow:hidden}.mdc-evolution-chip__graphic{align-items:center;display:inline-flex;justify-content:center;overflow:hidden;pointer-events:none;position:relative;flex:1 0 auto}.mdc-evolution-chip__checkmark{position:absolute;opacity:0;top:50%;left:50%}.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--selected):not(.mdc-evolution-chip--with-primary-icon) .mdc-evolution-chip__graphic{width:0}.mdc-evolution-chip__checkmark-background{opacity:0}.mdc-evolution-chip__checkmark-svg{display:block}.mdc-evolution-chip__checkmark-path{stroke-width:2px;stroke-dasharray:29.7833385;stroke-dashoffset:29.7833385;stroke:currentColor}.mdc-evolution-chip--selecting .mdc-evolution-chip__graphic{transition:width 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark{transition:transform 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--selecting .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 45ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__graphic{transition:width 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark{transition:opacity 50ms 0ms linear,transform 100ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-75%, -50%)}.mdc-evolution-chip--deselecting .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--selecting-with-primary-icon .mdc-evolution-chip__checkmark-path{transition:stroke-dashoffset 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__icon--primary{transition:opacity 150ms 75ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark{transition:opacity 75ms 0ms cubic-bezier(0.4, 0, 0.2, 1);transform:translate(-50%, -50%)}.mdc-evolution-chip--deselecting-with-primary-icon .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}.mdc-evolution-chip--selected .mdc-evolution-chip__icon--primary{opacity:0}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark{transform:translate(-50%, -50%);opacity:1}.mdc-evolution-chip--selected .mdc-evolution-chip__checkmark-path{stroke-dashoffset:0}@keyframes mdc-evolution-chip-enter{from{transform:scale(0.8);opacity:.4}to{transform:scale(1);opacity:1}}.mdc-evolution-chip--enter{animation:mdc-evolution-chip-enter 100ms 0ms cubic-bezier(0, 0, 0.2, 1)}@keyframes mdc-evolution-chip-exit{from{opacity:1}to{opacity:0}}.mdc-evolution-chip--exit{animation:mdc-evolution-chip-exit 75ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mdc-evolution-chip--hidden{opacity:0;pointer-events:none;transition:width 150ms 0ms cubic-bezier(0.4, 0, 1, 1)}.mat-mdc-standard-chip .mdc-evolution-chip__checkmark{height:20px;width:20px}.mat-mdc-standard-chip .mdc-evolution-chip__icon--trailing{height:18px;width:18px;font-size:18px}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:12px;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:12px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:6px;padding-right:6px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:6px;padding-right:6px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary{padding-left:0;padding-right:12px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:12px;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic{padding-left:4px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__graphic[dir=rtl]{padding-left:8px;padding-right:4px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing{padding-left:8px;padding-right:8px}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--trailing[dir=rtl]{padding-left:8px;padding-right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing{left:8px;right:initial}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__ripple--trailing[dir=rtl]{left:initial;right:8px}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary{padding-left:0;padding-right:0}[dir=rtl] .mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary,.mdc-evolution-chip--with-avatar.mdc-evolution-chip--with-primary-graphic.mdc-evolution-chip--with-trailing-action .mdc-evolution-chip__action--primary[dir=rtl]{padding-left:0;padding-right:0}.mdc-evolution-chip--with-avatar.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__graphic{height:24px;width:24px;font-size:24px}.mdc-evolution-chip--with-avatar .mdc-evolution-chip__icon--primary{height:24px;width:24px;font-size:24px}.mat-mdc-standard-chip{-webkit-tap-highlight-color:rgba(0,0,0,0);border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px);height:var(--mdc-chip-container-height, 32px)}.mat-mdc-standard-chip .mdc-evolution-chip__ripple{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-radius:var(--mdc-chip-container-shape-radius, 16px 16px 16px 16px)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{border-radius:var(--mdc-chip-with-avatar-avatar-shape-radius, 14px 14px 14px 14px)}.mat-mdc-standard-chip.mdc-evolution-chip--selectable:not(.mdc-evolution-chip--with-primary-icon){--mdc-chip-graphic-selected-width:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__graphic{height:var(--mdc-chip-with-avatar-avatar-size, 28px);width:var(--mdc-chip-with-avatar-avatar-size, 28px);font-size:var(--mdc-chip-with-avatar-avatar-size, 28px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-outline-width, 1px)}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-outline-width, 1px)}.mat-mdc-standard-chip.mdc-evolution-chip--selected .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-selected-outline-width, 0)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--selected) .mdc-evolution-chip__action--primary:before{border-width:var(--mdc-chip-flat-unselected-outline-width, 1px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled){background-color:var(--mdc-chip-elevated-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled{background-color:var(--mdc-chip-elevated-disabled-container-color, transparent)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__text-label{color:var(--mdc-chip-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--selected.mdc-evolution-chip--disabled .mdc-evolution-chip__text-label{color:var(--mdc-chip-disabled-label-text-color, currentColor)}.mat-mdc-standard-chip .mdc-evolution-chip__icon--primary{height:var(--mdc-chip-with-icon-icon-size, 18px);width:var(--mdc-chip-with-icon-icon-size, 18px);font-size:var(--mdc-chip-with-icon-icon-size, 18px)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--primary{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-selected-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__checkmark{color:var(--mdc-chip-with-icon-disabled-icon-color, currentColor)}.mat-mdc-standard-chip:not(.mdc-evolution-chip--disabled) .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-trailing-icon-color, currentColor)}.mat-mdc-standard-chip.mdc-evolution-chip--disabled .mdc-evolution-chip__icon--trailing{color:var(--mdc-chip-with-trailing-icon-disabled-trailing-icon-color, currentColor)}.cdk-high-contrast-active .mat-mdc-standard-chip{outline:solid 1px}.cdk-high-contrast-active .mat-mdc-standard-chip .mdc-evolution-chip__checkmark-path{stroke:CanvasText !important}.mat-mdc-standard-chip.mdc-evolution-chip--disabled{opacity:.4}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary,.mat-mdc-standard-chip .mdc-evolution-chip__action--primary,.mat-mdc-standard-chip .mat-mdc-chip-action-label{overflow:visible}.mat-mdc-standard-chip .mdc-evolution-chip__cell--primary{width:100%}.mat-mdc-standard-chip .mdc-evolution-chip__action--primary{font:inherit;letter-spacing:inherit;white-space:inherit}.mat-mdc-standard-chip .mat-mdc-chip-graphic,.mat-mdc-standard-chip .mat-mdc-chip-trailing-icon{box-sizing:content-box}.mat-mdc-standard-chip._mat-animation-noopable,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__graphic,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark,.mat-mdc-standard-chip._mat-animation-noopable .mdc-evolution-chip__checkmark-path{transition-duration:1ms;animation-duration:1ms}.mat-mdc-basic-chip .mdc-evolution-chip__action--primary{font:inherit}.mat-mdc-chip-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;opacity:0;border-radius:inherit;transition:opacity 150ms linear}._mat-animation-noopable .mat-mdc-chip-focus-overlay{transition:none}.mat-mdc-basic-chip .mat-mdc-chip-focus-overlay{display:none}.mat-mdc-chip:hover .mat-mdc-chip-focus-overlay{opacity:.04}.mat-mdc-chip.cdk-focused .mat-mdc-chip-focus-overlay{opacity:.12}.mat-mdc-chip-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-chip-avatar{text-align:center;line-height:1;color:var(--mdc-chip-with-icon-icon-color, currentColor)}.mat-mdc-chip{position:relative;z-index:0}.mat-mdc-chip-action-label{text-align:left;z-index:1}[dir=rtl] .mat-mdc-chip-action-label{text-align:right}.mat-mdc-chip.mdc-evolution-chip--with-trailing-action .mat-mdc-chip-action-label{position:relative}.mat-mdc-chip-action-label .mat-mdc-chip-primary-focus-indicator{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.mat-mdc-chip-action-label .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-chip-remove{opacity:.54}.mat-mdc-chip-remove:focus{opacity:1}.mat-mdc-chip-remove::before{margin:calc(var(--mat-mdc-focus-indicator-border-width, 3px) * -1);left:8px;right:8px}.mat-mdc-chip-remove .mat-icon{width:inherit;height:inherit;font-size:inherit;box-sizing:content-box}.mat-chip-edit-input{cursor:text;display:inline-block;color:inherit;outline:0}.cdk-high-contrast-active .mat-mdc-chip-selected:not(.mat-mdc-chip-multiple){outline-width:3px}.mat-mdc-chip-action:focus .mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),i})();class Hue{constructor(a){}}const Gue=gd(Hue);let yq=(()=>{class i extends Gue{get chipFocusChanges(){return this._getChipStream(e=>e._onFocus)}get chipDestroyedChanges(){return this._getChipStream(e=>e.destroyed)}get disabled(){return this._disabled}set disabled(e){this._disabled=Ge(e),this._syncChipsState()}get empty(){return 0===this._chips.length}get role(){return this._explicitRole?this._explicitRole:this.empty?null:this._defaultRole}set role(e){this._explicitRole=e}get focused(){return this._hasFocusedChip()}constructor(e,o,d){super(e),this._elementRef=e,this._changeDetectorRef=o,this._dir=d,this._lastDestroyedFocusedChipIndex=null,this._destroyed=new He,this._defaultRole="presentation",this._disabled=!1,this._explicitRole=null,this._chipActions=new _s}ngAfterViewInit(){this._setUpFocusManagement(),this._trackChipSetChanges(),this._trackDestroyedFocusedChip()}ngOnDestroy(){var e;null===(e=this._keyManager)||void 0===e||e.destroy(),this._chipActions.destroy(),this._destroyed.next(),this._destroyed.complete()}_hasFocusedChip(){return this._chips&&this._chips.some(e=>e._hasFocus())}_syncChipsState(){this._chips&&this._chips.forEach(e=>{e.disabled=this._disabled,e._changeDetectorRef.markForCheck()})}focus(){}_handleKeydown(e){this._originatesFromChip(e)&&this._keyManager.onKeydown(e)}_isValidIndex(e){return e>=0&&ethis.tabIndex=e)}}_getChipStream(e){return this._chips.changes.pipe(wi(null),nr(()=>Wn(...this._chips.map(e))))}_originatesFromChip(e){let o=e.target;for(;o&&o!==this._elementRef.nativeElement;){if(o.classList.contains("mat-mdc-chip"))return!0;o=o.parentElement}return!1}_setUpFocusManagement(){var e;this._chips.changes.pipe(wi(this._chips)).subscribe(o=>{const d=[];o.forEach(h=>h._getActions().forEach(_=>d.push(_))),this._chipActions.reset(d),this._chipActions.notifyOnChanges()}),this._keyManager=new Pk(this._chipActions).withVerticalOrientation().withHorizontalOrientation(this._dir?this._dir.value:"ltr").withHomeAndEnd().skipPredicate(o=>this._skipPredicate(o)),this.chipFocusChanges.pipe(Et(this._destroyed)).subscribe(({chip:o})=>{const d=o._getSourceAction(document.activeElement);d&&this._keyManager.updateActiveItem(d)}),null===(e=this._dir)||void 0===e||e.change.pipe(Et(this._destroyed)).subscribe(o=>this._keyManager.withHorizontalOrientation(o))}_skipPredicate(e){return!e.isInteractive||e.disabled}_trackChipSetChanges(){this._chips.changes.pipe(wi(null),Et(this._destroyed)).subscribe(()=>{this.disabled&&Promise.resolve().then(()=>this._syncChipsState()),this._redirectDestroyedChipFocus()})}_trackDestroyedFocusedChip(){this.chipDestroyedChanges.pipe(Et(this._destroyed)).subscribe(e=>{const d=this._chips.toArray().indexOf(e.chip);this._isValidIndex(d)&&e.chip._hasFocus()&&(this._lastDestroyedFocusedChipIndex=d)})}_redirectDestroyedChipFocus(){if(null!=this._lastDestroyedFocusedChipIndex){if(this._chips.length){const e=Math.min(this._lastDestroyedFocusedChipIndex,this._chips.length-1),o=this._chips.toArray()[e];o.disabled?1===this._chips.length?this.focus():this._keyManager.setPreviousItemActive():o.focus()}else this.focus();this._lastDestroyedFocusedChipIndex=null}}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(Ci,8))},i.\u0275cmp=_e({type:i,selectors:[["mat-chip-set"]],contentQueries:function(e,o,d){if(1&e&&Qt(d,H1,5),2&e){let h;Pe(h=Ae())&&(o._chips=h)}},hostAttrs:[1,"mat-mdc-chip-set","mdc-evolution-chip-set"],hostVars:1,hostBindings:function(e,o){1&e&&Q("keydown",function(h){return o._handleKeydown(h)}),2&e&&Ve("role",o.role)},inputs:{disabled:"disabled",role:"role"},features:[Se],ngContentSelectors:pq,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(e,o){1&e&&(On(),I(0,"div",0),ut(1),O())},styles:[".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0}),i})();class $ue{constructor(a,e){this.source=a,this.value=e}}class Wue extends yq{constructor(a,e,o,d,h,_,w){super(a,e,o),this._defaultErrorStateMatcher=d,this._parentForm=h,this._parentFormGroup=_,this.ngControl=w,this.stateChanges=new He}}const Yue=vd(Wue);let zte=(()=>{class i extends Yue{get disabled(){return this.ngControl?!!this.ngControl.disabled:this._disabled}set disabled(e){this._disabled=Ge(e),this._syncChipsState()}get id(){return this._chipInput.id}get empty(){return(!this._chipInput||this._chipInput.empty)&&(!this._chips||0===this._chips.length)}get placeholder(){return this._chipInput?this._chipInput.placeholder:this._placeholder}set placeholder(e){this._placeholder=e,this.stateChanges.next()}get focused(){return this._chipInput.focused||this._hasFocusedChip()}get required(){var e,o,d,h;return null!==(e=null!==(o=this._required)&&void 0!==o?o:null===(d=this.ngControl)||void 0===d||null===(h=d.control)||void 0===h?void 0:h.hasValidator(ob.required))&&void 0!==e&&e}set required(e){this._required=Ge(e),this.stateChanges.next()}get shouldLabelFloat(){return!this.empty||this.focused}get value(){return this._value}set value(e){this._value=e}get chipBlurChanges(){return this._getChipStream(e=>e._onBlur)}constructor(e,o,d,h,_,w,D){super(e,o,d,w,h,_,D),this.controlType="mat-chip-grid",this._defaultRole="grid",this._ariaDescribedbyIds=[],this._onTouched=()=>{},this._onChange=()=>{},this._value=[],this.change=new we,this.valueChange=new we,this.ngControl&&(this.ngControl.valueAccessor=this)}ngAfterContentInit(){this.chipBlurChanges.pipe(Et(this._destroyed)).subscribe(()=>{this._blur(),this.stateChanges.next()}),Wn(this.chipFocusChanges,this._chips.changes).pipe(Et(this._destroyed)).subscribe(()=>this.stateChanges.next())}ngAfterViewInit(){super.ngAfterViewInit()}ngDoCheck(){this.ngControl&&this.updateErrorState()}ngOnDestroy(){super.ngOnDestroy(),this.stateChanges.complete()}registerInput(e){this._chipInput=e,this._chipInput.setDescribedByIds(this._ariaDescribedbyIds)}onContainerClick(e){!this.disabled&&!this._originatesFromChip(e)&&this.focus()}focus(){this.disabled||this._chipInput.focused||(!this._chips.length||this._chips.first.disabled?Promise.resolve().then(()=>this._chipInput.focus()):this._chips.length&&this._keyManager.setFirstItemActive(),this.stateChanges.next())}setDescribedByIds(e){var o;this._ariaDescribedbyIds=e,null===(o=this._chipInput)||void 0===o||o.setDescribedByIds(e)}writeValue(e){this._value=e}registerOnChange(e){this._onChange=e}registerOnTouched(e){this._onTouched=e}setDisabledState(e){this.disabled=e,this.stateChanges.next()}_blur(){this.disabled||setTimeout(()=>{this.focused||(this._propagateChanges(),this._markAsTouched())})}_allowFocusEscape(){this._chipInput.focused||super._allowFocusEscape()}_handleKeydown(e){9===e.keyCode?this._chipInput.focused&&pr(e,"shiftKey")&&this._chips.length&&!this._chips.last.disabled?(e.preventDefault(),this._keyManager.activeItem?this._keyManager.setActiveItem(this._keyManager.activeItem):this._focusLastChip()):super._allowFocusEscape():this._chipInput.focused||super._handleKeydown(e),this.stateChanges.next()}_focusLastChip(){this._chips.length&&this._chips.last.focus()}_propagateChanges(){const e=this._chips.length?this._chips.toArray().map(o=>o.value):[];this._value=e,this.change.emit(new $ue(this,e)),this.valueChange.emit(e),this._onChange(e),this._changeDetectorRef.markForCheck()}_markAsTouched(){this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next()}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Jt),F(Ci,8),F(Gu,8),F(Xf,8),F(MC),F(ul,10))},i.\u0275cmp=_e({type:i,selectors:[["mat-chip-grid"]],contentQueries:function(e,o,d){if(1&e&&Qt(d,_q,5),2&e){let h;Pe(h=Ae())&&(o._chips=h)}},hostAttrs:[1,"mat-mdc-chip-set","mat-mdc-chip-grid","mdc-evolution-chip-set"],hostVars:10,hostBindings:function(e,o){1&e&&Q("focus",function(){return o.focus()})("blur",function(){return o._blur()}),2&e&&(la("tabIndex",o._chips&&0===o._chips.length?-1:o.tabIndex),Ve("role",o.role)("aria-disabled",o.disabled.toString())("aria-invalid",o.errorState),st("mat-mdc-chip-list-disabled",o.disabled)("mat-mdc-chip-list-invalid",o.errorState)("mat-mdc-chip-list-required",o.required))},inputs:{tabIndex:"tabIndex",disabled:"disabled",placeholder:"placeholder",required:"required",value:"value",errorStateMatcher:"errorStateMatcher"},outputs:{change:"change",valueChange:"valueChange"},features:[Ue([{provide:E1,useExisting:i}]),Se],ngContentSelectors:pq,decls:2,vars:0,consts:[["role","presentation",1,"mdc-evolution-chip-set__chips"]],template:function(e,o){1&e&&(On(),I(0,"div",0),ut(1),O())},styles:[".mdc-evolution-chip-set{display:flex}.mdc-evolution-chip-set:focus{outline:none}.mdc-evolution-chip-set__chips{display:flex;flex-flow:wrap;min-width:0}.mdc-evolution-chip-set--overflow .mdc-evolution-chip-set__chips{flex-flow:nowrap}.mdc-evolution-chip-set .mdc-evolution-chip-set__chips{margin-left:-8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip-set__chips,.mdc-evolution-chip-set .mdc-evolution-chip-set__chips[dir=rtl]{margin-left:0;margin-right:-8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-left:8px;margin-right:0}[dir=rtl] .mdc-evolution-chip-set .mdc-evolution-chip,.mdc-evolution-chip-set .mdc-evolution-chip[dir=rtl]{margin-left:0;margin-right:8px}.mdc-evolution-chip-set .mdc-evolution-chip{margin-top:4px;margin-bottom:4px}.mat-mdc-chip-set .mdc-evolution-chip-set__chips{min-width:100%}.mat-mdc-chip-set-stacked{flex-direction:column;align-items:flex-start}.mat-mdc-chip-set-stacked .mat-mdc-chip{width:100%}input.mat-mdc-chip-input{flex:1 0 150px;margin-left:8px}[dir=rtl] input.mat-mdc-chip-input{margin-left:0;margin-right:8px}"],encapsulation:2,changeDetection:0}),i})(),que=0,Hte=(()=>{class i{set chipGrid(e){e&&(this._chipGrid=e,this._chipGrid.registerInput(this))}get addOnBlur(){return this._addOnBlur}set addOnBlur(e){this._addOnBlur=Ge(e)}get disabled(){return this._disabled||this._chipGrid&&this._chipGrid.disabled}set disabled(e){this._disabled=Ge(e)}get empty(){return!this.inputElement.value}constructor(e,o,d){this._elementRef=e,this._defaultOptions=o,this.focused=!1,this._addOnBlur=!1,this.separatorKeyCodes=this._defaultOptions.separatorKeyCodes,this.chipEnd=new we,this.placeholder="",this.id="mat-mdc-chip-list-input-"+que++,this._disabled=!1,this.inputElement=this._elementRef.nativeElement,d&&this.inputElement.classList.add("mat-mdc-form-field-input-control")}ngOnChanges(){this._chipGrid.stateChanges.next()}ngOnDestroy(){this.chipEnd.complete()}ngAfterContentInit(){this._focusLastChipOnBackspace=this.empty}_keydown(e){if(e){if(8===e.keyCode&&this._focusLastChipOnBackspace)return this._chipGrid._focusLastChip(),void e.preventDefault();this._focusLastChipOnBackspace=!1}this._emitChipEnd(e)}_keyup(e){!this._focusLastChipOnBackspace&&8===e.keyCode&&this.empty&&(this._focusLastChipOnBackspace=!0,e.preventDefault())}_blur(){this.addOnBlur&&this._emitChipEnd(),this.focused=!1,this._chipGrid.focused||this._chipGrid._blur(),this._chipGrid.stateChanges.next()}_focus(){this.focused=!0,this._focusLastChipOnBackspace=this.empty,this._chipGrid.stateChanges.next()}_emitChipEnd(e){(!e||this._isSeparatorKey(e))&&(this.chipEnd.emit({input:this.inputElement,value:this.inputElement.value,chipInput:this}),null==e||e.preventDefault())}_onInput(){this._chipGrid.stateChanges.next()}focus(){this.inputElement.focus()}clear(){this.inputElement.value="",this._focusLastChipOnBackspace=!0}setDescribedByIds(e){const o=this._elementRef.nativeElement;e.length?o.setAttribute("aria-describedby",e.join(" ")):o.removeAttribute("aria-describedby")}_isSeparatorKey(e){return!pr(e)&&new Set(this.separatorKeyCodes).has(e.keyCode)}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(kz),F(Ag,8))},i.\u0275dir=me({type:i,selectors:[["input","matChipInputFor",""]],hostAttrs:[1,"mat-mdc-chip-input","mat-mdc-input-element","mdc-text-field__input","mat-input-element"],hostVars:6,hostBindings:function(e,o){1&e&&Q("keydown",function(h){return o._keydown(h)})("keyup",function(h){return o._keyup(h)})("blur",function(){return o._blur()})("focus",function(){return o._focus()})("input",function(){return o._onInput()}),2&e&&(la("id",o.id),Ve("disabled",o.disabled||null)("placeholder",o.placeholder||null)("aria-invalid",o._chipGrid&&o._chipGrid.ngControl?o._chipGrid.ngControl.invalid:null)("aria-required",o._chipGrid&&o._chipGrid.required||null)("required",o._chipGrid&&o._chipGrid.required||null))},inputs:{chipGrid:["matChipInputFor","chipGrid"],addOnBlur:["matChipInputAddOnBlur","addOnBlur"],separatorKeyCodes:["matChipInputSeparatorKeyCodes","separatorKeyCodes"],placeholder:"placeholder",id:"id",disabled:"disabled"},outputs:{chipEnd:"matChipInputTokenEnd"},exportAs:["matChipInput","matChipInputFor"],features:[jn]}),i})(),Xue=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[MC,{provide:kz,useValue:{separatorKeyCodes:[13]}}],imports:[nn,Ri,lc,nn]}),i})(),Zue=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({}),i})(),Kue=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[Ri,nn,Zue,Rs]}),i})();const Que=["*",[["mat-toolbar-row"]]],Jue=["*","mat-toolbar-row"],ehe=Fs(class{constructor(i){this._elementRef=i}});let the=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275dir=me({type:i,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"]}),i})(),nhe=(()=>{class i extends ehe{constructor(e,o,d){super(e),this._platform=o,this._document=d}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){}}return i.\u0275fac=function(e){return new(e||i)(F(Be),F(Qn),F(ht))},i.\u0275cmp=_e({type:i,selectors:[["mat-toolbar"]],contentQueries:function(e,o,d){if(1&e&&Qt(d,the,5),2&e){let h;Pe(h=Ae())&&(o._toolbarRows=h)}},hostAttrs:[1,"mat-toolbar"],hostVars:4,hostBindings:function(e,o){2&e&&st("mat-toolbar-multiple-rows",o._toolbarRows.length>0)("mat-toolbar-single-row",0===o._toolbarRows.length)},inputs:{color:"color"},exportAs:["matToolbar"],features:[Se],ngContentSelectors:Jue,decls:2,vars:0,template:function(e,o){1&e&&(On(Que),ut(0),ut(1,1))},styles:[".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color: inherit;--mdc-outlined-button-label-text-color: inherit}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}"],encapsulation:2,changeDetection:0}),i})(),ihe=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({imports:[nn,nn]}),i})(),rhe=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i}),i.\u0275inj=ft({providers:[{provide:I1,useValue:{floatLabel:"always",appearance:"outline"}},{provide:JB,useValue:udsData.language}],imports:[Ri,pW,D3,ihe,ab,nre,F1,Kue,s$,P1,lre,P5,Rle,q7,Ane,Wu,x,NJ,kJ,z3,Xue,Ble,Xoe,Eae,e5,VJ,Hie,Mie]}),i})();function ahe(i,a){if(1&i){const e=Ee();I(0,"button",6),Q("click",function(){const h=le(e).$implicit;return oe(X().changeLang(h))}),Y(1),O()}if(2&i){const e=a.$implicit;N(1),Sn(e.name)}}function ohe(i,a){if(1&i&&(I(0,"button",12)(1,"i",7),Y(2,"face"),O(),Y(3),O()),2&i){const e=X();z("matMenuTriggerFor",on(7)),N(3),Sn(e.api.user.user)}}function she(i,a){if(1&i&&(I(0,"button",18),Y(1),I(2,"i",7),Y(3,"arrow_drop_down"),O()()),2&i){const e=X();z("matMenuTriggerFor",on(7)),N(1),Ie("",e.api.user.user," ")}}let lhe=(()=>{class i{constructor(e){this.api=e,this.lang={id:"",name:""},this.isNavbarCollapsed=!0;const o=e.config.language;this.langs=[];for(const d of e.config.available_languages)d.id===o?this.lang=d:this.langs.push(d)}ngOnInit(){}changeLang(e){this.lang=e;const o=document.getElementById("id_language");return o&&o.setAttribute("value",e.id),document.getElementById("form_language").submit(),!1}user(){this.api.gotoUser()}logout(){this.api.logout()}}return i.\u0275fac=function(e){return new(e||i)(F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-navbar"]],decls:39,vars:13,consts:[["id","form_language","method","post",3,"action"],["type","hidden",3,"name","value"],["id","id_language","type","hidden","name","language",3,"value"],["appMenu","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["userMenu","matMenu"],["mat-menu-item","",3,"click"],[1,"material-icons"],[1,"material-icons","highlight"],["x-position","before"],["shrink","matMenu"],["mat-menu-item","",3,"matMenuTriggerFor",4,"ngIf"],["mat-menu-item","",3,"matMenuTriggerFor"],["color","primary",1,"uds-nav"],["mat-button","","routerLink","/"],["alt","Universal Desktop Services",1,"udsicon",3,"src"],[1,"fill-remaining-space"],[1,"expanded"],["mat-button","",3,"matMenuTriggerFor"],["mat-button","",3,"matMenuTriggerFor",4,"ngIf"],[1,"shrinked"],["mat-icon-button","",3,"matMenuTriggerFor"]],template:function(e,o){if(1&e&&(I(0,"form",0),pe(1,"input",1)(2,"input",2),O(),I(3,"mat-menu",null,3),J(5,ahe,2,1,"button",4),O(),I(6,"mat-menu",null,5)(8,"button",6),Q("click",function(){return o.user()}),I(9,"i",7),Y(10,"home"),O(),I(11,"uds-translate"),Y(12,"User mode"),O()(),I(13,"button",6),Q("click",function(){return o.logout()}),I(14,"i",8),Y(15,"exit_to_app"),O(),I(16,"uds-translate"),Y(17,"Logout"),O()()(),I(18,"mat-menu",9,10),J(20,ohe,4,2,"button",11),I(21,"button",12)(22,"i",7),Y(23,"language"),O(),Y(24),O()(),I(25,"mat-toolbar",13)(26,"button",14),pe(27,"img",15),O(),pe(28,"span",16),I(29,"div",17)(30,"button",18),Y(31),I(32,"i",7),Y(33,"arrow_drop_down"),O()(),J(34,she,4,2,"button",19),O(),I(35,"div",20)(36,"button",21)(37,"i",7),Y(38,"menu"),O()()()()),2&e){const d=on(4),h=on(19);Hc("action",o.api.config.urls.changeLang,Kt),N(1),Hc("name",o.api.csrfField),Hc("value",o.api.csrfToken),N(1),Hc("value",o.lang.id),N(3),z("ngForOf",o.langs),N(15),z("ngIf",o.api.user.isLogged),N(1),z("matMenuTriggerFor",d),N(3),Sn(o.lang.name),N(3),z("src",o.api.staticURL("admin/img/udsicon.png"),Kt),N(3),z("matMenuTriggerFor",d),N(1),Ie("",o.lang.name," "),N(3),z("ngIf",o.api.user.isLogged),N(2),z("matMenuTriggerFor",h)}},dependencies:[Mn,en,Is,hb,KC,Gu,nhe,hi,xd,WJ,hI,XJ,Pn],styles:[".uds-nav[_ngcontent-%COMP%]{position:fixed;top:0;z-index:1000}.fill-remaining-space[_ngcontent-%COMP%]{flex:1 1 auto}.material-icons[_ngcontent-%COMP%]{margin-right:.3rem}.udsicon[_ngcontent-%COMP%]{width:2rem}.mat-mdc-button[_ngcontent-%COMP%]{font-weight:300}@media only screen and (max-width: 744px){.expanded[_ngcontent-%COMP%]{display:none;visibility:hidden}.shrinked[_ngcontent-%COMP%]{visibility:visible}}@media only screen and (min-width: 745px){.expanded[_ngcontent-%COMP%]{visibility:visible}.shrinked[_ngcontent-%COMP%]{display:none;visibility:hidden}}"]}),i})(),che=(()=>{class i{constructor(){}ngOnInit(){}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-footer"]],decls:4,vars:0,consts:[["href","https://www.udsenterprise.com"]],template:function(e,o){1&e&&(I(0,"div"),Y(1,"\xa9 2012-2023 "),I(2,"a",0),Y(3,"Virtual Cable S.L.U."),O()())},styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}a[_ngcontent-%COMP%]{text-decoration:none}div[_ngcontent-%COMP%], a[_ngcontent-%COMP%]{color:#000} .dark-theme div, .dark-theme a{color:#fff}']}),i})();function dhe(i,a){if(1&i&&(vn(0),I(1,"a",26),pe(2,"img",2),I(3,"uds-translate"),Y(4,"Proxies"),O()(),wn()),2&i){const e=X();N(2),z("src",e.icon("proxy"),Kt)}}function uhe(i,a){if(1&i&&(I(0,"a",27),pe(1,"img",2),I(2,"uds-translate"),Y(3,"Groups"),O()()),2&i){const e=X();N(1),z("src",e.icon("groups"),Kt)}}function hhe(i,a){if(1&i){const e=Ee();I(0,"a",4),Q("click",function(){return le(e),oe(X().toggleConfig())}),pe(1,"img",2),I(2,"span")(3,"uds-translate"),Y(4,"Tools"),O(),I(5,"i",5),Y(6,"arrow_drop_down"),O()()()}if(2&i){const e=X();N(1),z("src",e.icon("tools"),Kt)}}let fhe=(()=>{class i{constructor(e,o){this.api=e,this.rest=o,this.connectivityShown=!1,this.poolsShown=!1,this.configShown=!1,this.tokensShown=!1,this.authsShown=!1}ngOnInit(){}icon(e){return this.api.staticURL("admin/img/icons/"+e+".png")}toggleConnectivity(){this.connectivityShown=!this.connectivityShown,this.poolsShown=!1,this.configShown=!1,this.authsShown=!1}togglePools(){this.connectivityShown=!1,this.poolsShown=!this.poolsShown,this.configShown=!1,this.authsShown=!1}toggleConfig(){this.connectivityShown=!1,this.poolsShown=!1,this.configShown=!this.configShown,this.authsShown=!1}toggleAuths(){this.connectivityShown=!1,this.poolsShown=!1,this.configShown=!1,this.authsShown=!this.authsShown}flushCache(){this.rest.system.flushCache().then(()=>{this.api.gui.snackbar.open(django.gettext("Cache flushed"),django.gettext("dismiss"),{duration:2e3})})}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt))},i.\u0275cmp=_e({type:i,selectors:[["uds-sidebar"]],decls:109,vars:30,consts:[[1,"sidebar","mat-toolbar","mat-primary"],["mat-button","","routerLink","/summary",1,"sidebar-link"],[1,"icon",3,"src"],["mat-button","","routerLink","/providers",1,"sidebar-link"],["mat-button","",1,"sidebar-link",3,"click"],[1,"material-icons"],[1,"submenu",3,"hidden"],["mat-button","","routerLink","/authenticators",1,"sidebar-link"],["mat-button","","routerLink","/mfas",1,"sidebar-link"],["mat-button","","routerLink","/osmanagers",1,"sidebar-link"],["mat-button","","routerLink","/transports",1,"sidebar-link"],["mat-button","","routerLink","/networks",1,"sidebar-link"],[4,"ngIf"],["mat-button","","routerLink","/pools/service-pools",1,"sidebar-link"],["mat-button","","routerLink","/pools/meta-pools",1,"sidebar-link"],["mat-button","","routerLink","/pools/pool-groups","class","sidebar-link",4,"ngIf"],["mat-button","","routerLink","/pools/calendars",1,"sidebar-link"],["mat-button","","routerLink","/pools/accounts",1,"sidebar-link"],["mat-button","","class","sidebar-link",3,"click",4,"ngIf"],["mat-button","","routerLink","/tools/gallery",1,"sidebar-link"],["mat-button","","routerLink","/tools/reports",1,"sidebar-link"],["mat-button","","routerLink","/tools/notifiers",1,"sidebar-link"],[1,"submenu2",3,"hidden"],["mat-button","","routerLink","/tools/tokens/actor",1,"sidebar-link"],["mat-button","","routerLink","/tools/tokens/tunnel",1,"sidebar-link"],["mat-button","","routerLink","/tools/configuration",1,"sidebar-link"],["mat-button","","routerLink","/proxies",1,"sidebar-link"],["mat-button","","routerLink","/pools/pool-groups",1,"sidebar-link"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"a",1),pe(2,"img",2),I(3,"uds-translate"),Y(4,"Summary"),O()(),I(5,"a",3),pe(6,"img",2),I(7,"uds-translate"),Y(8,"Services"),O()(),I(9,"a",4),Q("click",function(){return o.toggleAuths()}),pe(10,"img",2),I(11,"span")(12,"uds-translate"),Y(13,"Authentication"),O(),I(14,"i",5),Y(15,"arrow_drop_down"),O()()(),I(16,"div",6)(17,"a",7),pe(18,"img",2),I(19,"uds-translate"),Y(20,"Authenticators"),O()(),I(21,"a",8),pe(22,"img",2),I(23,"uds-translate"),Y(24,"Multi Factor"),O()()(),I(25,"a",9),pe(26,"img",2),I(27,"uds-translate"),Y(28,"Os Managers"),O()(),I(29,"a",4),Q("click",function(){return o.toggleConnectivity()}),pe(30,"img",2),I(31,"span")(32,"uds-translate"),Y(33,"Connectivity"),O(),I(34,"i",5),Y(35,"arrow_drop_down"),O()()(),I(36,"div",6)(37,"a",10),pe(38,"img",2),I(39,"uds-translate"),Y(40,"Transports"),O()(),I(41,"a",11),pe(42,"img",2),I(43,"uds-translate"),Y(44,"Networks"),O()(),J(45,dhe,5,1,"ng-container",12),O(),I(46,"a",4),Q("click",function(){return o.togglePools()}),pe(47,"img",2),I(48,"span")(49,"uds-translate"),Y(50,"Pools"),O(),I(51,"i",5),Y(52,"arrow_drop_down"),O()()(),I(53,"div",6)(54,"a",13),pe(55,"img",2),I(56,"uds-translate"),Y(57,"Service pools"),O()(),I(58,"a",14),pe(59,"img",2),I(60,"uds-translate"),Y(61,"Meta pools"),O()(),J(62,uhe,4,1,"a",15),I(63,"a",16),pe(64,"img",2),I(65,"uds-translate"),Y(66,"Calendars"),O()(),I(67,"a",17),pe(68,"img",2),I(69,"uds-translate"),Y(70,"Accounts"),O()()(),J(71,hhe,7,1,"a",18),I(72,"div",6)(73,"a",19),pe(74,"img",2),I(75,"uds-translate"),Y(76,"Gallery"),O()(),I(77,"a",20),pe(78,"img",2),I(79,"uds-translate"),Y(80,"Reports"),O()(),I(81,"a",21),pe(82,"img",2),I(83,"uds-translate"),Y(84,"Notifiers"),O()(),I(85,"a",4),Q("click",function(){return o.tokensShown=!o.tokensShown}),pe(86,"img",2),I(87,"span")(88,"uds-translate"),Y(89,"Tokens"),O(),I(90,"i",5),Y(91,"arrow_drop_down"),O()()(),I(92,"div",22)(93,"a",23),pe(94,"img",2),I(95,"uds-translate"),Y(96,"Actor"),O()(),I(97,"a",24),pe(98,"img",2),I(99,"uds-translate"),Y(100,"Tunnel"),O()()(),I(101,"a",25),pe(102,"img",2),I(103,"uds-translate"),Y(104,"Configuration"),O()(),I(105,"a",4),Q("click",function(){return o.flushCache()}),pe(106,"img",2),I(107,"uds-translate"),Y(108,"Flush Cache"),O()()()()),2&e&&(N(2),z("src",o.icon("dashboard-monitor"),Kt),N(4),z("src",o.icon("providers"),Kt),N(4),z("src",o.icon("authentication"),Kt),N(6),z("hidden",!o.authsShown),N(2),z("src",o.icon("authenticators"),Kt),N(4),z("src",o.icon("mfas"),Kt),N(4),z("src",o.icon("osmanagers"),Kt),N(4),z("src",o.icon("connectivity"),Kt),N(6),z("hidden",!o.connectivityShown),N(2),z("src",o.icon("transports"),Kt),N(4),z("src",o.icon("networks"),Kt),N(3),z("ngIf",o.api.config.experimental_features),N(2),z("src",o.icon("miscellaneous"),Kt),N(6),z("hidden",!o.poolsShown),N(2),z("src",o.icon("pools"),Kt),N(4),z("src",o.icon("metas"),Kt),N(3),z("ngIf",o.api.user.isAdmin),N(2),z("src",o.icon("calendars"),Kt),N(4),z("src",o.icon("accounts"),Kt),N(3),z("ngIf",o.api.user.isAdmin),N(1),z("hidden",!o.configShown),N(2),z("src",o.icon("gallery"),Kt),N(4),z("src",o.icon("reports"),Kt),N(4),z("src",o.icon("notifiers"),Kt),N(4),z("src",o.icon("maleta"),Kt),N(6),z("hidden",!o.tokensShown),N(2),z("src",o.icon("accounts"),Kt),N(4),z("src",o.icon("proxy"),Kt),N(4),z("src",o.icon("configuration"),Kt),N(4),z("src",o.icon("flush-cache"),Kt))},dependencies:[en,Is,HC,Pn],styles:['.mat-ripple[_ngcontent-%COMP%]{overflow:hidden;position:relative}.mat-ripple[_ngcontent-%COMP%]:not(:empty){transform:translateZ(0)}.mat-ripple.mat-ripple-unbounded[_ngcontent-%COMP%]{overflow:visible}.mat-ripple-element[_ngcontent-%COMP%]{position:absolute;border-radius:50%;pointer-events:none;transition:opacity,transform 0ms cubic-bezier(0,0,.2,1);transform:scale3d(0,0,0)}.cdk-high-contrast-active[_ngcontent-%COMP%] .mat-ripple-element[_ngcontent-%COMP%]{display:none}.cdk-visually-hidden[_ngcontent-%COMP%]{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl][_ngcontent-%COMP%] .cdk-visually-hidden[_ngcontent-%COMP%]{left:auto;right:0}.cdk-overlay-container[_ngcontent-%COMP%], .cdk-global-overlay-wrapper[_ngcontent-%COMP%]{pointer-events:none;top:0;left:0;height:100%;width:100%}.cdk-overlay-container[_ngcontent-%COMP%]{position:fixed;z-index:1000}.cdk-overlay-container[_ngcontent-%COMP%]:empty{display:none}.cdk-global-overlay-wrapper[_ngcontent-%COMP%]{display:flex;position:absolute;z-index:1000}.cdk-overlay-pane[_ngcontent-%COMP%]{position:absolute;pointer-events:auto;box-sizing:border-box;z-index:1000;display:flex;max-width:100%;max-height:100%}.cdk-overlay-backdrop[_ngcontent-%COMP%]{position:absolute;top:0;bottom:0;left:0;right:0;z-index:1000;pointer-events:auto;-webkit-tap-highlight-color:transparent;transition:opacity .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:1}.cdk-high-contrast-active[_ngcontent-%COMP%] .cdk-overlay-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:.6}.cdk-overlay-dark-backdrop[_ngcontent-%COMP%]{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop[_ngcontent-%COMP%]{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing[_ngcontent-%COMP%]{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation[_ngcontent-%COMP%]{transition:none}.cdk-overlay-connected-position-bounding-box[_ngcontent-%COMP%]{position:absolute;z-index:1000;display:flex;flex-direction:column;min-width:1px;min-height:1px}.cdk-global-scrollblock[_ngcontent-%COMP%]{position:fixed;width:100%;overflow-y:scroll}textarea.cdk-textarea-autosize[_ngcontent-%COMP%]{resize:none}textarea.cdk-textarea-autosize-measuring[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox[_ngcontent-%COMP%]{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-start{}@keyframes _ngcontent-%COMP%_cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:-webkit-autofill{animation:_ngcontent-%COMP%_cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored[_ngcontent-%COMP%]:not(:-webkit-autofill){animation:_ngcontent-%COMP%_cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator[_ngcontent-%COMP%]{position:relative}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator[_ngcontent-%COMP%]:focus:before{content:""}.cdk-high-contrast-active[_ngcontent-%COMP%]{--mat-mdc-focus-indicator-display: block}.sidebar[_ngcontent-%COMP%]{position:fixed;top:4rem;padding-top:12px;bottom:0;display:flex;flex-direction:column;overflow-y:auto;width:3.7rem;transition:all .3s cubic-bezier(.86,0,.07,1);box-shadow:0 16px 38px -12px #fafafa8f,0 4px 25px #fafafa1f,0 8px 10px -5px #fafafa33;overflow-x:hidden;z-index:25}.sidebar-link[_ngcontent-%COMP%]{display:flex;width:15rem;color:transparent;transition:color .3s cubic-bezier(.86,0,.07,1);font-weight:300;font-size:1rem;justify-content:left;justify-items:center;padding-left:1rem;text-decoration:none}.sidebar[_ngcontent-%COMP%]:hover{width:15rem;transition:all .3s cubic-bezier(.86,0,.07,1)}.sidebar[_ngcontent-%COMP%]:hover .sidebar-link[_ngcontent-%COMP%]{color:#000}.submenu[_ngcontent-%COMP%] > .mat-mdc-button[_ngcontent-%COMP%]{padding-left:1.5rem}.submenu2[_ngcontent-%COMP%] > .mat-mdc-button[_ngcontent-%COMP%]{padding-left:1.8rem}.icon[_ngcontent-%COMP%]{width:24px;margin:0 1em -.5rem 0} .dark-theme .sidebar{box-shadow:0 16px 38px -12px #3030308f,0 4px 25px #3030301f,0 8px 10px -5px #30303033} .dark-theme .sidebar:hover .sidebar-link{color:#fff!important}']}),i})();function phe(i,a){1&i&&pe(0,"div",1),2&i&&z("innerHTML",X().messages,Rr)}let mhe=(()=>{class i{constructor(e){this.api=e,this.messages="",this.visible=!1}ngOnInit(){const e=o=>o.replace(/ /gm," ").replace(/([A-Z]+[A-Z]+)/gm,"$1").replace(/([0-9]+)/gm,"$1");if(this.api.notices.length>0){const o='
';this.messages='
'+o+this.api.notices.map(e).join("
"+o)+"
",this.api.gui.alert("",this.messages,0,"80%").then(()=>{this.visible=!0})}}}return i.\u0275fac=function(e){return new(e||i)(F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-notices"]],decls:1,vars:1,consts:[["class","notice",3,"innerHTML",4,"ngIf"],[1,"notice",3,"innerHTML"]],template:function(e,o){1&e&&J(0,phe,1,1,"div",0),2&e&&z("ngIf",o.visible)},dependencies:[en],styles:[".notice[_ngcontent-%COMP%]{display:block} .warn-notice-container{background:steelblue;border-radius:3px;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;box-sizing:border-box;color:#fff;margin:1rem 2rem 0rem;padding:15px;word-wrap:break-word;display:flex;flex-direction:column} .warn-notice{display:block;width:100%;text-align:center;font-size:1.1em;margin-bottom:.5rem}"]}),i})(),ghe=(()=>{class i{constructor(e){this.api=e,this.title="UDS Admin"}get blackTheme(){return"true"===this.api.getFromStorage("blackTheme")}set blackTheme(e){this.api.putOnStorage("blackTheme",e.toString())}handleKeyboardEvent(e){e.altKey&&e.ctrlKey&&"b"===e.key&&(this.blackTheme=!this.blackTheme,this.api.switchTheme(this.blackTheme))}ngOnInit(){this.api.switchTheme(this.blackTheme)}}return i.\u0275fac=function(e){return new(e||i)(F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-root"]],hostBindings:function(e,o){1&e&&Q("keydown",function(h){return o.handleKeyboardEvent(h)},0,qP)},decls:8,vars:0,consts:[[1,"page"],[1,"content"],[1,"footer"]],template:function(e,o){1&e&&(pe(0,"uds-navbar")(1,"uds-sidebar"),I(2,"div",0)(3,"div",1),pe(4,"uds-notices")(5,"router-outlet"),O(),I(6,"div",2),pe(7,"uds-footer"),O()())},dependencies:[PA,lhe,che,fhe,mhe],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.footer[_ngcontent-%COMP%]{flex-shrink:0;margin:1em;height:1em;display:flex;flex-direction:row;justify-content:flex-end}.content[_ngcontent-%COMP%]{flex:1 0 auto;width:calc(100% - 64px);margin:4rem auto auto 56px;padding-left:8px;overflow-x:hidden}"]}),i})(),vhe=(()=>{class i extends Ig{constructor(){super(),this.itemsPerPageLabel=django.gettext("Items per page")}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275prov=ke({token:i,factory:i.\u0275fac}),i})(),_he=(()=>{class i{constructor(){this.field={},this.changed=new we}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-text"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:4,vars:7,consts:[["matInput","","type","text",3,"ngModel","placeholder","required","disabled","maxlength","autocomplete","ngModelChange","change"]],template:function(e,o){1&e&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"input",0),Q("ngModelChange",function(h){return o.field.value=h})("change",function(){return o.changed.emit(o)}),O()()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("ngModel",o.field.value)("placeholder",o.field.gui.tooltip)("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly)("maxlength",o.field.gui.length||128)("autocomplete","new-"+o.field.name))},dependencies:[sr,Jn,Yo,wg,zn,ei,fi,ga],styles:[".cdk-text-field-autofilled[_ngcontent-%COMP%]{background-color:red}"]}),i})();function yhe(i,a){if(1&i&&(I(0,"mat-option",3),Y(1),O()),2&i){const e=a.$implicit;z("value",e),N(1),Ie(" ",e," ")}}let bhe=(()=>{class i{constructor(){this.field={},this.changed=new we,this.values=[]}ngOnInit(){const e=this.field.gui.values||[];this.field.value=this.field.value||this.field.gui.defvalue,this.values=e.map(o=>o.text)}_filter(){const e=this.field.value.toLowerCase();return this.values.filter(o=>o.toLowerCase().includes(e))}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-autocomplete"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:9,consts:[["auto","matAutocomplete"],[3,"value",4,"ngFor","ngForOf"],["matInput","","type","text",3,"ngModel","placeholder","required","disabled","maxlength","matAutocomplete","autocomplete","ngModelChange","change"],[3,"value"]],template:function(e,o){if(1&e&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-autocomplete",null,0),J(5,yhe,2,2,"mat-option",1),O(),I(6,"input",2),Q("ngModelChange",function(h){return o.field.value=h})("change",function(){return o.changed.emit(o)}),O()()),2&e){const d=on(4);N(2),Ie(" ",o.field.gui.label," "),N(3),z("ngForOf",o._filter()),N(1),z("ngModel",o.field.value)("placeholder",o.field.gui.tooltip)("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly)("maxlength",o.field.gui.length||128)("matAutocomplete",d)("autocomplete","new-"+o.field.name)}},dependencies:[Mn,sr,Jn,Yo,wg,zn,ei,fi,ga,$i,kY,oz],styles:[".cdk-text-field-autofilled[_ngcontent-%COMP%]{background-color:red}"]}),i})(),whe=(()=>{class i{constructor(){this.field={},this.changed=new we}ngOnInit(){!this.field.value&&0!==this.field.value&&(this.field.value=this.field.gui.defvalue)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-numeric"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:4,vars:5,consts:[["floatLabel","always"],["matInput","","type","number",3,"ngModel","placeholder","required","disabled","ngModelChange","change"]],template:function(e,o){1&e&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"input",1),Q("ngModelChange",function(h){return o.field.value=h})("change",function(){return o.changed.emit(o)}),O()()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("ngModel",o.field.value)("placeholder",o.field.gui.tooltip)("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly))},dependencies:[sr,qf,Jn,Yo,zn,ei,fi,ga]}),i})(),xhe=(()=>{class i{constructor(){this.field={},this.changed=new we,this.passwordType="password"}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-password"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:7,consts:[["floatLabel","always"],["matInput","","autocomplete","new-password",3,"ngModel","placeholder","required","disabled","type","ngModelChange","change"],["matSuffix","","mat-icon-button","",3,"click"],[1,"material-icons"]],template:function(e,o){1&e&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"input",1),Q("ngModelChange",function(h){return o.field.value=h})("change",function(){return o.changed.emit(o)}),O(),I(4,"button",2),Q("click",function(){return o.passwordType="text"===o.passwordType?"password":"text"}),I(5,"i",3),Y(6),O()()()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("ngModel",o.field.value)("placeholder",o.field.gui.tooltip)("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly)("type",o.passwordType),N(3),Sn("text"===o.passwordType?"visibility_off":"visibility"))},dependencies:[sr,Jn,Yo,zn,xd,ei,fi,Tg,ga],styles:[".cdk-text-field-autofilled[_ngcontent-%COMP%]{background-color:red}"]}),i})(),Che=(()=>{class i{constructor(){this.field={}}ngOnInit(){(""===this.field.value||void 0===this.field.value)&&(this.field.value=this.field.gui.defvalue)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-hidden"]],inputs:{field:"field"},decls:0,vars:0,template:function(e,o){}}),i})(),She=(()=>{class i{constructor(){this.field={}}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-textbox"]],inputs:{field:"field",value:"value"},decls:4,vars:7,consts:[["floatLabel","auto"],["matInput","",3,"ngModel","placeholder","required","readonly","rows","maxlength","ngModelChange"]],template:function(e,o){1&e&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"textarea",1),Q("ngModelChange",function(h){return o.field.value=h}),O()()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("ngModel",o.field.value)("placeholder",o.field.gui.tooltip)("required",!!o.field.gui.required)("readonly",!0===o.field.gui.rdonly)("rows",o.field.gui.multiline||3)("maxlength",o.field.gui.length||255))},dependencies:[sr,Jn,Yo,wg,zn,ei,fi,ga]}),i})();function Dhe(i,a){if(1&i&&(I(0,"mat-option",3),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.text," ")}}let Mhe=(()=>{class i{constructor(){this.field={},this.changed=new we,this.placeholderLabel=django.gettext("Search"),this.noEntriesFoundLabel=django.gettext("No entries found"),this.filter=""}ngOnInit(){const e=this.field.gui.values||[];this.field.value=this.field.value||this.field.gui.defvalue,""===this.field.value&&e.length>0&&(this.field.value=e[0].id),this.field.value=""+this.field.value}filteredValues(){const e=this.field.gui.values||[];if(!this.filter)return e;const o=this.filter.toLocaleLowerCase();return e.filter(d=>d.text.toLocaleLowerCase().includes(o))}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-choice"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:6,vars:9,consts:[[3,"ngModel","placeholder","required","disabled","ngModelChange","valueChange"],[3,"options","placeholderLabel","noEntriesFoundLabel","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(e,o){1&e&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-select",0),Q("ngModelChange",function(h){return o.field.value=h})("valueChange",function(){return o.changed.emit(o)}),I(4,"uds-cond-select-search",1),Q("changed",function(h){return o.filter=h}),O(),J(5,Dhe,2,2,"mat-option",2),O()()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("ngModel",o.field.value)("placeholder",o.field.gui.tooltip)("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly),N(1),z("options",o.field.gui.values)("placeholderLabel",o.placeholderLabel)("noEntriesFoundLabel",o.noEntriesFoundLabel),N(1),z("ngForOf",o.filteredValues()))},dependencies:[Mn,Jn,Yo,zn,ei,fi,ma,$i,Dd]}),i})();function The(i,a){if(1&i&&(I(0,"mat-option",3),Y(1),O()),2&i){const e=a.$implicit;z("value",e.id),N(1),Ie(" ",e.text," ")}}let Ahe=(()=>{class i{constructor(){this.field={},this.changed=new we,this.filter="",this.placeholderLabel=django.gettext("Search"),this.noEntriesFoundLabel=django.gettext("No entries found")}ngOnInit(){this.field.value=void 0,void 0!==this.field.values?this.field.values.forEach((e,o,d)=>{d[o]=""+e.id}):this.field.values=new Array}filteredValues(){const e=this.field.gui.values||[];if(!this.filter)return e;const o=this.filter.toLocaleLowerCase();return e.filter(d=>d.text.toLocaleLowerCase().includes(o))}selectTriggerString(){const e=this.field.values||[];let o="";0===e.length&&(o=this.field.gui.tooltip||django.gettext("Select"));for(const _ of e){var d,h;""!==o&&(o+=", "),o+=(null===(d=this.field.gui.values)||void 0===d||null===(h=d.find(w=>w.id===_))||void 0===h?void 0:h.text)||_}return o}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-multichoice"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:8,vars:8,consts:[["multiple","",3,"ngModel","placeholder","required","disabled","ngModelChange","valueChange"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function(e,o){1&e&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-select",0),Q("ngModelChange",function(h){return o.field.values=h})("valueChange",function(){return o.changed.emit(o)}),I(4,"mat-select-trigger"),Y(5),O(),I(6,"uds-cond-select-search",1),Q("changed",function(h){return o.filter=h}),O(),J(7,The,2,2,"mat-option",2),O()()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("ngModel",o.field.values)("placeholder",o.selectTriggerString())("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly),N(2),Ie(" ",o.selectTriggerString()," "),N(1),z("options",o.field.gui.values),N(1),z("ngForOf",o.filteredValues()))},dependencies:[Mn,Jn,Yo,zn,ei,fi,ma,I5,$i,Dd]}),i})();function khe(i,a){if(1&i){const e=Ee();I(0,"div",12)(1,"div",13),Y(2),O(),I(3,"div",14),Y(4," \xa0"),I(5,"a",15),Q("click",function(){const h=le(e).index;return oe(X().removeElement(h))}),I(6,"i",16),Y(7,"close"),O()()()()}if(2&i){const e=a.$implicit;N(2),Ie(" ",e," ")}}let Ehe=(()=>{class i{constructor(e,o,d,h){this.api=e,this.rest=o,this.dialogRef=d,this.data=h,this.values=[],this.input="",this.done=new dl,this.data.values.forEach(_=>this.values.push(_))}static launch(e,o,d){const h=window.innerWidth<800?"50%":"30%";return e.gui.dialog.open(i,{width:h,data:{title:o,values:d},disableClose:!0}).componentInstance.done}addElements(){this.input.split(",").forEach(e=>{this.values.push(e)}),this.input=""}checkKey(e){"Enter"===e.code&&this.addElements()}removeAll(){this.values.length=0}removeElement(e){this.values.splice(e,1)}save(){this.data.values.length=0,this.values.forEach(e=>this.data.values.push(e)),this.dialogRef.close(),this.done.resolve(this.data.values)}cancel(){this.dialogRef.close(),this.done.resolve(null)}ngOnInit(){}}return i.\u0275fac=function(e){return new(e||i)(F(bt),F(jt),F(Si),F(Fi))},i.\u0275cmp=_e({type:i,selectors:[["uds-editlist-editor"]],decls:23,vars:3,consts:[["mat-dialog-title",""],[1,"content"],[1,"list"],["class","elem",4,"ngFor","ngForOf"],[1,"buttons"],["mat-raised-button","","color","warn",3,"click"],[1,"input"],[1,"example-full-width"],["type","text","matInput","",3,"ngModel","keyup","ngModelChange"],["matSuffix","","mat-icon-button","",3,"click"],["matSuffix","",1,"material-icons"],["mat-raised-button","","color","primary",3,"click"],[1,"elem"],[1,"val"],[1,"remove"],[3,"click"],[1,"material-icons"]],template:function(e,o){1&e&&(I(0,"h4",0),Y(1),O(),I(2,"mat-dialog-content")(3,"div",1)(4,"div",2),J(5,khe,8,1,"div",3),O(),I(6,"div",4)(7,"button",5),Q("click",function(){return o.removeAll()}),I(8,"uds-translate"),Y(9,"Remove all"),O()()(),I(10,"div",6)(11,"mat-form-field",7)(12,"input",8),Q("keyup",function(h){return o.checkKey(h)})("ngModelChange",function(h){return o.input=h}),O(),I(13,"button",9),Q("click",function(){return o.addElements()}),I(14,"i",10),Y(15,"add"),O()()()()()(),I(16,"mat-dialog-actions")(17,"button",5),Q("click",function(){return o.cancel()}),I(18,"uds-translate"),Y(19,"Cancel"),O()(),I(20,"button",11),Q("click",function(){return o.save()}),I(21,"uds-translate"),Y(22,"Ok"),O()()()),2&e&&(N(1),Ie(" ",o.data.title,"\n"),N(4),z("ngForOf",o.values),N(7),z("ngModel",o.input))},dependencies:[Mn,sr,Jn,zn,hi,xd,ar,Wi,or,ei,Tg,ga,Pn],styles:[".content[_ngcontent-%COMP%]{width:100%;display:flex;flex-direction:column;justify-content:space-between;justify-self:center}.list[_ngcontent-%COMP%]{display:flex;flex-direction:column;margin:1rem;height:16rem;overflow-y:auto;border-color:#333;border-radius:1px;box-shadow:#00000024 0 1px 4px;padding:.5rem}.buttons[_ngcontent-%COMP%]{display:flex;justify-content:flex-end;margin-right:1rem;margin-bottom:1rem}.input[_ngcontent-%COMP%]{margin:0 1rem}.elem[_ngcontent-%COMP%]{font-family:Courier New,Courier,monospace;font-size:1.2rem;display:flex;justify-content:space-between;white-space:nowrap;flex-wrap:nowrap;margin-right:.4rem}.elem[_ngcontent-%COMP%]:hover{background-color:#333;color:#fff;cursor:default}.val[_ngcontent-%COMP%]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding-right:.2rem}.material-icons[_ngcontent-%COMP%]{font-size:1em;padding-bottom:1px}.material-icons[_ngcontent-%COMP%]:hover{cursor:pointer;color:red}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]}),i})(),Ihe=(()=>{class i{constructor(e){this.api=e,this.field={},this.changed=new we}ngOnInit(){}launch(){var e=this;return Qe(function*(){void 0===e.field.values&&(e.field.values=[]),yield Ehe.launch(e.api,e.field.gui.label,e.field.values),e.changed.emit({field:e.field})})()}getValue(){if(void 0===this.field.values)return"";let e=this.field.values.filter((o,d,h)=>d<5).join(", ");return this.field.values.length>5&&(e+=django.gettext(", (%i more items)").replace("%i",""+(this.field.values.length-5))),e}}return i.\u0275fac=function(e){return new(e||i)(F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-field-editlist"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:4,vars:5,consts:[["floatLabel","always",3,"click"],["matInput","","type","text",1,"editlist",3,"readonly","value","placeholder","disabled"]],template:function(e,o){1&e&&(I(0,"mat-form-field",0),Q("click",function(){return o.launch()}),I(1,"mat-label"),Y(2),O(),pe(3,"input",1),O()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("readonly",!0)("value",o.getValue())("placeholder",o.field.gui.tooltip)("disabled",!0===o.field.gui.rdonly))},dependencies:[ei,fi,ga],styles:[".editlist[_ngcontent-%COMP%]{cursor:pointer}"]}),i})(),Phe=(()=>{class i{constructor(){this.field={},this.changed=new we}ngOnInit(){this.field.value=(i=>""===i||null==i)(this.field.value)?rb(this.field.gui.defvalue):rb(this.field.value)}getValue(){return rb(this.field.value)?django.gettext("Yes"):django.gettext("No")}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-checkbox"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:3,vars:4,consts:[[1,"toggle"],[3,"ngModel","required","disabled","ngModelChange","change"]],template:function(e,o){1&e&&(I(0,"div",0)(1,"mat-slide-toggle",1),Q("ngModelChange",function(h){return o.field.value=h})("change",function(){return o.changed.emit(o)}),Y(2),O()()),2&e&&(N(1),z("ngModel",o.field.value)("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly),N(1),Ie(" ",o.field.gui.label," "))},dependencies:[Jn,Yo,zn,pee,pI]}),i})();function Rhe(i,a){if(1&i&&pe(0,"div",5),2&i){const e=X().$implicit;z("innerHTML",X().asIcon(e),Rr)}}function Ohe(i,a){if(1&i&&(I(0,"div"),J(1,Rhe,1,1,"div",4),O()),2&i){const e=a.$implicit,o=X();N(1),z("ngIf",e.id===o.field.value)}}function Lhe(i,a){if(1&i&&(I(0,"mat-option",6),pe(1,"div",5),O()),2&i){const e=a.$implicit,o=X();z("value",e.id),N(1),z("innerHTML",o.asIcon(e),Rr)}}let Fhe=(()=>{class i{constructor(e){this.api=e,this.field={},this.changed=new we,this.filter=""}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue;const e=this.field.gui.values||[];""===this.field.value&&e.length>0&&(this.field.value=e[0].id)}asIcon(e){return this.api.safeString(this.api.gui.icon(e.img)+e.text)}filteredValues(){const e=this.field.gui.values||[];if(!this.filter)return e;const o=this.filter.toLocaleLowerCase();return e.filter(d=>d.text.toLocaleLowerCase().includes(o))}}return i.\u0275fac=function(e){return new(e||i)(F(bt))},i.\u0275cmp=_e({type:i,selectors:[["uds-field-imgchoice"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:8,vars:8,consts:[[3,"placeholder","ngModel","required","disabled","valueChange","ngModelChange"],[4,"ngFor","ngForOf"],[3,"options","changed"],[3,"value",4,"ngFor","ngForOf"],[3,"innerHTML",4,"ngIf"],[3,"innerHTML"],[3,"value"]],template:function(e,o){1&e&&(I(0,"mat-form-field")(1,"mat-label"),Y(2),O(),I(3,"mat-select",0),Q("valueChange",function(){return o.changed.emit(o)})("ngModelChange",function(h){return o.field.value=h}),I(4,"mat-select-trigger"),J(5,Ohe,2,1,"div",1),O(),I(6,"uds-cond-select-search",2),Q("changed",function(h){return o.filter=h}),O(),J(7,Lhe,2,2,"mat-option",3),O()()),2&e&&(N(2),Ie(" ",o.field.gui.label," "),N(1),z("placeholder",o.field.gui.tooltip)("ngModel",o.field.value)("required",!0===o.field.gui.required)("disabled",!0===o.field.gui.rdonly),N(2),z("ngForOf",o.field.gui.values),N(1),z("options",o.field.gui.values),N(1),z("ngForOf",o.filteredValues()))},dependencies:[Mn,en,Jn,Yo,zn,ei,fi,ma,I5,$i,Dd]}),i})(),Nhe=(()=>{class i{constructor(){this.field={},this.changed=new we,this.value=new Date}get date(){return this.value}set date(e){this.value!==e&&(this.value=e,this.field.value=pg("%Y-%m-%d",this.value))}ngOnInit(){this.field.value=this.field.value||this.field.gui.defvalue,"2000-01-01"===this.field.value?this.field.value=pg("%Y-01-01"):"2000-01-01"===this.field.value&&(this.field.value=pg("%Y-12-31"));const e=this.field.value.split("-");3===e.length&&(this.value=new Date(+e[0],+e[1]-1,+e[2]))}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-date"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:6,consts:[[1,"oneHalf"],["matInput","",3,"matDatepicker","ngModel","placeholder","disabled","ngModelChange"],["matSuffix","",3,"for"],["endDatePicker",""]],template:function(e,o){if(1&e&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"input",1),Q("ngModelChange",function(h){return o.date=h}),O(),pe(4,"mat-datepicker-toggle",2)(5,"mat-datepicker",null,3),O()),2&e){const d=on(6);N(2),Ie(" ",o.field.gui.label," "),N(1),z("matDatepicker",d)("ngModel",o.date)("placeholder",o.field.gui.tooltip)("disabled",!0===o.field.gui.rdonly),N(1),z("for",d)}},dependencies:[sr,Jn,zn,ei,fi,Tg,ga,Ree,dz,Oee]}),i})();function Bhe(i,a){if(1&i){const e=Ee();I(0,"mat-chip-row",5),Q("removed",function(){const h=le(e).$implicit;return oe(X().remove(h))}),Y(1),I(2,"i",6),Y(3,"cancel"),O()()}if(2&i){const e=a.$implicit;z("removable",!0!==X().field.gui.rdonly),N(1),Ie(" ",e," ")}}let Vhe=(()=>{class i{constructor(){this.field={},this.changed=new we,this.separatorKeysCodes=[13,188]}ngOnInit(){void 0===this.field.values&&(this.field.values=new Array,this.field.value=void 0),this.field.values.forEach((e,o,d)=>{""===e.trim()&&d.splice(o,1)})}add(e){const o=e.input,d=e.value;(d||"").trim()&&this.field.values&&this.field.values.push(d.trim()),o&&(o.value="")}remove(e){if(!this.field.values)return void console.warn("Trying to remove tag from field with no values: "+this.field.name);const o=this.field.values.indexOf(e);o>=0&&this.field.values.splice(o,1)}}return i.\u0275fac=function(e){return new(e||i)},i.\u0275cmp=_e({type:i,selectors:[["uds-field-tags"]],inputs:{field:"field"},outputs:{changed:"changed"},decls:7,vars:7,consts:[["floatLabel","always"],[3,"disabled","change"],["chipList",""],[3,"removable","removed",4,"ngFor","ngForOf"],[3,"placeholder","matChipInputFor","matChipInputSeparatorKeyCodes","matChipInputAddOnBlur","matChipInputTokenEnd"],[3,"removable","removed"],["matChipRemove","",1,"material-icons"]],template:function(e,o){if(1&e&&(I(0,"mat-form-field",0)(1,"mat-label"),Y(2),O(),I(3,"mat-chip-grid",1,2),Q("change",function(){return o.changed.emit(o)}),J(5,Bhe,4,2,"mat-chip-row",3),I(6,"input",4),Q("matChipInputTokenEnd",function(h){return o.add(h)}),O()()()),2&e){const d=on(4);N(2),Ie(" ",o.field.gui.label," "),N(1),z("disabled",!0===o.field.gui.rdonly),N(2),z("ngForOf",o.field.values),N(1),z("placeholder",o.field.gui.tooltip)("matChipInputFor",d)("matChipInputSeparatorKeyCodes",o.separatorKeysCodes)("matChipInputAddOnBlur",!0)}},dependencies:[Mn,ei,fi,zte,Hte,Nte,_q],styles:["*.mat-chip-trailing-icon[_ngcontent-%COMP%]{position:relative;top:-4px;left:-4px}mat-form-field[_ngcontent-%COMP%]{width:99.5%}"]}),i})();En(691);let zhe=(()=>{class i{}return i.\u0275fac=function(e){return new(e||i)},i.\u0275mod=pt({type:i,bootstrap:[ghe]}),i.\u0275inj=ft({providers:[bt,jt,{provide:Ig,useClass:vhe}],imports:[LL,iF,xce,wue,rhe,u5.forRoot({echarts:()=>Promise.resolve().then(En.bind(En,701))})]}),i})();(function _c(i,a,e){const o=i.\u0275cmp;o.directiveDefs=yt(a,!1),o.pipeDefs=yt(e,!0)})(G3,function(){return[td,mf,bb,_he,whe,xhe,Che,She,Mhe,Ahe,Ihe,Phe,Fhe,Nhe,Vhe,bhe]},[]),OU().bootstrapModule(zhe).catch(i=>console.log(i))},701:(ep,ta,En)=>{"use strict";En.r(ta),En.d(ta,{Axis:()=>Fo,ChartView:()=>Vn,ComponentModel:()=>qt,ComponentView:()=>di,List:()=>Pa,Model:()=>In,PRIORITY:()=>nG,SeriesModel:()=>Zn,color:()=>Bs,connect:()=>Yc,dataTool:()=>Vw,dependencies:()=>Q8,disConnect:()=>qc,disconnect:()=>sO,dispose:()=>tT,env:()=>ln,extendChartView:()=>GO,extendComponentModel:()=>Ss,extendComponentView:()=>HG,extendSeriesModel:()=>HO,format:()=>gr,getCoordinateSystemDimensions:()=>sG,getInstanceByDom:()=>Ow,getInstanceById:()=>oG,getMap:()=>hO,graphic:()=>oi,helper:()=>Tt,init:()=>eT,innerDrawElementOnCanvas:()=>Ew,matrix:()=>no,number:()=>Di,parseGeoJSON:()=>pf,parseGeoJson:()=>pf,registerAction:()=>Xl,registerCoordinateSystem:()=>iT,registerLayout:()=>rT,registerLoading:()=>Bw,registerLocale:()=>L0,registerMap:()=>aT,registerPostInit:()=>cO,registerPostUpdate:()=>dO,registerPreprocessor:()=>nT,registerProcessor:()=>Lw,registerTheme:()=>lO,registerTransform:()=>vu,registerUpdateLifecycle:()=>A_,registerVisual:()=>cf,setCanvasCreator:()=>uO,setPlatformAPI:()=>Lz,throttle:()=>v_,time:()=>pi,use:()=>Lt,util:()=>Td,vector:()=>Qo,version:()=>K8,zrUtil:()=>$t,zrender:()=>xt});var $t={};En.r($t),En.d($t,{HashMap:()=>FI,RADIAN_TO_DEGREE:()=>th,assert:()=>va,bind:()=>Ne,clone:()=>rt,concatArray:()=>Ti,createCanvas:()=>Lq,createHashMap:()=>Ye,createObject:()=>Wn,curry:()=>$e,defaults:()=>Je,disableUserSelect:()=>Lb,each:()=>U,eqNaN:()=>Ng,extend:()=>ge,filter:()=>Dn,find:()=>q1,guid:()=>W1,hasOwn:()=>ze,indexOf:()=>Rt,inherits:()=>PI,isArray:()=>ye,isArrayLike:()=>Hr,isBuiltInObject:()=>X1,isDom:()=>ap,isFunction:()=>qe,isGradientObject:()=>Vi,isImagePatternObject:()=>eh,isNumber:()=>rn,isObject:()=>tt,isPrimitive:()=>op,isRegExp:()=>_o,isString:()=>Le,isStringSafe:()=>Ob,isTypedArray:()=>Bi,keys:()=>Ut,logError:()=>Y1,map:()=>xe,merge:()=>At,mergeAll:()=>Rb,mixin:()=>Mi,noop:()=>Ft,normalizeCssArray:()=>Ad,reduce:()=>vo,retrieve:()=>Tr,retrieve2:()=>Ct,retrieve3:()=>es,setAsPrimitive:()=>Vg,slice:()=>Bg,trim:()=>yo});var Qo={};En.r(Qo),En.d(Qo,{add:()=>io,applyTransform:()=>at,clone:()=>vl,copy:()=>Va,create:()=>Ed,dist:()=>_l,distSquare:()=>yl,distance:()=>Bb,distanceSquare:()=>zg,div:()=>Nb,dot:()=>Gz,len:()=>Fb,lenSquare:()=>ke,length:()=>Vq,lengthSquare:()=>zq,lerp:()=>Hg,max:()=>vc,min:()=>Vs,mul:()=>ft,negate:()=>zI,normalize:()=>rh,scale:()=>sp,scaleAndAdd:()=>Rn,set:()=>Hz,sub:()=>ih});var no={};En.r(no),En.d(no,{clone:()=>pt,copy:()=>Id,create:()=>ro,identity:()=>bo,invert:()=>ah,mul:()=>xl,rotate:()=>_c,scale:()=>Hb,translate:()=>_e});var Bs={};En.r(Bs),En.d(Bs,{fastLerp:()=>zt,fastMapToColor:()=>KI,lerp:()=>QI,lift:()=>Zg,lum:()=>Qg,mapToColor:()=>a4,modifyAlpha:()=>Kg,modifyHSL:()=>wp,parse:()=>$r,random:()=>o4,stringify:()=>ss,toHex:()=>oS});var xt={};En.r(xt),En.d(xt,{dispose:()=>Pr,disposeAll:()=>bS,getInstance:()=>pv,init:()=>uP,registerPainter:()=>hP,version:()=>ls});var vi={};En.r(vi),En.d(vi,{Arc:()=>uw,BezierCurve:()=>Uc,BoundingRect:()=>yt,Circle:()=>Wl,CompoundPath:()=>sM,Ellipse:()=>lw,Group:()=>lt,Image:()=>_i,IncrementalDisplayable:()=>uM,Line:()=>wr,LinearGradient:()=>dm,OrientedBoundingRect:()=>fw,Path:()=>Ht,Point:()=>Dt,Polygon:()=>Ea,Polyline:()=>ho,RadialGradient:()=>cM,Rect:()=>Zt,Ring:()=>d_,Sector:()=>Nr,Text:()=>an,applyTransform:()=>nl,clipPointsByRect:()=>vM,clipRectByRect:()=>vw,createIcon:()=>lu,extendPath:()=>b2,extendShape:()=>y2,getShapeClass:()=>mw,getTransform:()=>jc,groupTransition:()=>g_,initProps:()=>ni,isElementRemoved:()=>jv,lineLineIntersect:()=>_w,linePolygonIntersect:()=>hm,makeImage:()=>pM,makePath:()=>p_,mergePath:()=>Ro,registerShape:()=>Po,removeElement:()=>Fc,removeElementWithFadeOut:()=>$v,resizePath:()=>mM,setTooltipConfig:()=>cu,subPixelOptimize:()=>m_,subPixelOptimizeLine:()=>um,subPixelOptimizeRect:()=>w8,transformDirection:()=>gw,traverseElements:()=>Ue,updateProps:()=>fn});var Tt={};En.r(Tt),En.d(Tt,{createDimensions:()=>mO,createList:()=>bi,createScale:()=>ox,createSymbol:()=>Ji,createTextStyle:()=>sx,dataStack:()=>IG,enableHoverEmphasis:()=>Ll,getECData:()=>mt,getLayoutRect:()=>dr,mixinAxisModelCommonMethods:()=>PG});var Di={};En.r(Di),En.d(Di,{MAX_SAFE_INTEGER:()=>xS,asc:()=>So,getPercentWithPrecision:()=>kp,getPixelPrecision:()=>mv,getPrecision:()=>kl,getPrecisionSafe:()=>oo,isNumeric:()=>Mo,isRadianAroundZero:()=>gv,linearMap:()=>hn,nice:()=>Ip,numericToNumber:()=>Ws,parseDate:()=>Do,quantile:()=>xh,quantity:()=>pP,quantityExponent:()=>Ep,reformIntervals:()=>wa,remRadian:()=>CS,round:()=>zi});var pi={};En.r(pi),En.d(pi,{format:()=>Xp,parse:()=>Do});var oi={};En.r(oi),En.d(oi,{Arc:()=>uw,BezierCurve:()=>Uc,BoundingRect:()=>yt,Circle:()=>Wl,CompoundPath:()=>sM,Ellipse:()=>lw,Group:()=>lt,Image:()=>_i,IncrementalDisplayable:()=>uM,Line:()=>wr,LinearGradient:()=>dm,Polygon:()=>Ea,Polyline:()=>ho,RadialGradient:()=>cM,Rect:()=>Zt,Ring:()=>d_,Sector:()=>Nr,Text:()=>an,clipPointsByRect:()=>vM,clipRectByRect:()=>vw,createIcon:()=>lu,extendPath:()=>b2,extendShape:()=>y2,getShapeClass:()=>mw,getTransform:()=>jc,initProps:()=>ni,makeImage:()=>pM,makePath:()=>p_,mergePath:()=>Ro,registerShape:()=>Po,resizePath:()=>mM,updateProps:()=>fn});var gr={};En.r(gr),En.d(gr,{addCommas:()=>_D,capitalFirst:()=>hR,encodeHTML:()=>ae,formatTime:()=>wD,formatTpl:()=>bD,getTextRect:()=>LG,getTooltipMarker:()=>kH,normalizeCssArray:()=>Qd,toCamelCase:()=>B0,truncateText:()=>OS});var Td={};En.r(Td),En.d(Td,{bind:()=>Ne,clone:()=>rt,curry:()=>$e,defaults:()=>Je,each:()=>U,extend:()=>ge,filter:()=>Dn,indexOf:()=>Rt,inherits:()=>PI,isArray:()=>ye,isFunction:()=>qe,isObject:()=>tt,isString:()=>Le,map:()=>xe,merge:()=>At,reduce:()=>vo});var tp=function(r,n){return(tp=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(t,s){t.__proto__=s}||function(t,s){for(var l in s)Object.prototype.hasOwnProperty.call(s,l)&&(t[l]=s[l])})(r,n)};function se(r,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function t(){this.constructor=r}tp(r,n),r.prototype=null===n?Object.create(n):(t.prototype=n.prototype,new t)}var TI=function r(){this.firefox=!1,this.ie=!1,this.edge=!1,this.newEdge=!1,this.weChat=!1},Gn=new function r(){this.browser=new TI,this.node=!1,this.wxa=!1,this.worker=!1,this.svgSupported=!1,this.touchEventsSupported=!1,this.pointerEventsSupported=!1,this.domSupported=!1,this.transformSupported=!1,this.transform3dSupported=!1,this.hasGlobalWindow=typeof window<"u"};"object"==typeof wx&&"function"==typeof wx.getSystemInfoSync?(Gn.wxa=!0,Gn.touchEventsSupported=!0):typeof document>"u"&&typeof self<"u"?Gn.worker=!0:typeof navigator>"u"?(Gn.node=!0,Gn.svgSupported=!0):function si(r,n){var t=n.browser,s=r.match(/Firefox\/([\d.]+)/),l=r.match(/MSIE\s([\d.]+)/)||r.match(/Trident\/.+?rv:(([\d.]+))/),c=r.match(/Edge?\/([\d.]+)/),u=/micromessenger/i.test(r);s&&(t.firefox=!0,t.version=s[1]),l&&(t.ie=!0,t.version=l[1]),c&&(t.edge=!0,t.version=c[1],t.newEdge=+c[1].split(".")[0]>18),u&&(t.weChat=!0),n.svgSupported=typeof SVGRect<"u",n.touchEventsSupported="ontouchstart"in window&&!t.ie&&!t.edge,n.pointerEventsSupported="onpointerdown"in window&&(t.edge||t.ie&&+t.version>=11),n.domSupported=typeof document<"u";var f=document.documentElement.style;n.transform3dSupported=(t.ie&&"transition"in f||t.edge||"WebKitCSSMatrix"in window&&"m11"in new WebKitCSSMatrix||"MozPerspective"in f)&&!("OTransition"in f),n.transformSupported=n.transform3dSupported||t.ie&&+t.version>=9}(navigator.userAgent,Gn);const ln=Gn;var r,n,vt=12,Ib="sans-serif",Qu=vt+"px "+Ib,Rq=function Pq(r){var n={};if(typeof JSON>"u")return n;for(var t=0;t=0)f=u*t.length;else for(var p=0;p>1)%2;u.style.cssText=["position: absolute","visibility: hidden","padding: 0","margin: 0","border-width: 0","user-select: none","width:0","height:0",s[p]+":0",l[m]+":0",s[1-p]+":auto",l[1-m]+":auto",""].join("!important;"),r.appendChild(u),t.push(u)}return t}(n,c),f=function UI(r,n,t){for(var s=t?"invTrans":"trans",l=n[s],c=n.srcCoords,u=[],f=[],p=!0,m=0;m<4;m++){var g=r[m].getBoundingClientRect(),v=2*m,y=g.left,b=g.top;u.push(y,b),p=p&&c&&y===c[v]&&b===c[v+1],f.push(r[m].offsetLeft,r[m].offsetTop)}return p&&l?l:(n.srcCoords=u,n[s]=t?lp(f,u):lp(u,f))}(u,c,l);if(f)return f(r,t,s),!0}return!1}function dp(r){return"CANVAS"===r.nodeName.toUpperCase()}var up=/([&<>"'])/g,$z={"&":"&","<":"<",">":">",'"':""","'":"'"};function ae(r){return null==r?"":(r+"").replace(up,function(n,t){return $z[t]})}var jI=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,St=[],zb=ln.browser.firefox&&+ln.browser.version.split(".")[0]<39;function Gg(r,n,t,s){return t=t||{},s?hp(r,n,t):zb&&null!=n.layerX&&n.layerX!==n.offsetX?(t.zrX=n.layerX,t.zrY=n.layerY):null!=n.offsetX?(t.zrX=n.offsetX,t.zrY=n.offsetY):hp(r,n,t),t}function hp(r,n,t){if(ln.domSupported&&r.getBoundingClientRect){var s=n.clientX,l=n.clientY;if(dp(r)){var c=r.getBoundingClientRect();return t.zrX=s-c.left,void(t.zrY=l-c.top)}if(J1(St,r,s,l))return t.zrX=St[0],void(t.zrY=St[1])}t.zrX=t.zrY=0}function eS(r){return r||window.event}function ns(r,n,t){if(null!=(n=eS(n)).zrX)return n;var s=n.type;if(s&&s.indexOf("touch")>=0){var u="touchend"!==s?n.targetTouches[0]:n.changedTouches[0];u&&Gg(r,u,n,t)}else{Gg(r,n,n,t);var c=function Wz(r){var n=r.wheelDelta;if(n)return n;var t=r.deltaX,s=r.deltaY;return null==t||null==s?n:3*Math.abs(0!==s?s:t)*(s>0?-1:s<0?1:t>0?-1:1)}(n);n.zrDelta=c?c/120:-(n.detail||0)/3}var f=n.button;return null==n.which&&void 0!==f&&jI.test(n.type)&&(n.which=1&f?1:2&f?3:4&f?2:0),n}function Hs(r,n,t,s){r.addEventListener(n,t,s)}function bl(r,n,t,s){r.removeEventListener(n,t,s)}var Ar=function(r){r.preventDefault(),r.stopPropagation(),r.cancelBubble=!0};function wl(r){return 2===r.which||3===r.which}var Un=function(){function r(){this._track=[]}return r.prototype.recognize=function(n,t,s){return this._doTrack(n,t,s),this._recognize(n)},r.prototype.clear=function(){return this._track.length=0,this},r.prototype._doTrack=function(n,t,s){var l=n.touches;if(l){for(var c={points:[],touches:[],target:t,event:n},u=0,f=l.length;u1&&s&&s.length>1){var c=Ug(s)/Ug(l);!isFinite(c)&&(c=1),n.pinchScale=c;var u=function tS(r){return[(r[0][0]+r[1][0])/2,(r[0][1]+r[1][1])/2]}(s);return n.pinchX=u[0],n.pinchY=u[1],{type:"pinch",target:r[0].target,event:n}}}}};function ro(){return[1,0,0,1,0,0]}function bo(r){return r[0]=1,r[1]=0,r[2]=0,r[3]=1,r[4]=0,r[5]=0,r}function Id(r,n){return r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4],r[5]=n[5],r}function xl(r,n,t){var l=n[1]*t[0]+n[3]*t[1],c=n[0]*t[2]+n[2]*t[3],u=n[1]*t[2]+n[3]*t[3],f=n[0]*t[4]+n[2]*t[5]+n[4],p=n[1]*t[4]+n[3]*t[5]+n[5];return r[0]=n[0]*t[0]+n[2]*t[1],r[1]=l,r[2]=c,r[3]=u,r[4]=f,r[5]=p,r}function _e(r,n,t){return r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r[4]=n[4]+t[0],r[5]=n[5]+t[1],r}function _c(r,n,t){var s=n[0],l=n[2],c=n[4],u=n[1],f=n[3],p=n[5],m=Math.sin(t),g=Math.cos(t);return r[0]=s*g+u*m,r[1]=-s*m+u*g,r[2]=l*g+f*m,r[3]=-l*m+g*f,r[4]=g*c+m*p,r[5]=g*p-m*c,r}function Hb(r,n,t){var s=t[0],l=t[1];return r[0]=n[0]*s,r[1]=n[1]*l,r[2]=n[2]*s,r[3]=n[3]*l,r[4]=n[4]*s,r[5]=n[5]*l,r}function ah(r,n){var t=n[0],s=n[2],l=n[4],c=n[1],u=n[3],f=n[5],p=t*u-c*s;return p?(r[0]=u*(p=1/p),r[1]=-c*p,r[2]=-s*p,r[3]=t*p,r[4]=(s*f-u*l)*p,r[5]=(c*l-t*f)*p,r):null}function pt(r){var n=[1,0,0,1,0,0];return Id(n,r),n}var Yz=function(){function r(n,t){this.x=n||0,this.y=t||0}return r.prototype.copy=function(n){return this.x=n.x,this.y=n.y,this},r.prototype.clone=function(){return new r(this.x,this.y)},r.prototype.set=function(n,t){return this.x=n,this.y=t,this},r.prototype.equal=function(n){return n.x===this.x&&n.y===this.y},r.prototype.add=function(n){return this.x+=n.x,this.y+=n.y,this},r.prototype.scale=function(n){this.x*=n,this.y*=n},r.prototype.scaleAndAdd=function(n,t){this.x+=n.x*t,this.y+=n.y*t},r.prototype.sub=function(n){return this.x-=n.x,this.y-=n.y,this},r.prototype.dot=function(n){return this.x*n.x+this.y*n.y},r.prototype.len=function(){return Math.sqrt(this.x*this.x+this.y*this.y)},r.prototype.lenSquare=function(){return this.x*this.x+this.y*this.y},r.prototype.normalize=function(){var n=this.len();return this.x/=n,this.y/=n,this},r.prototype.distance=function(n){var t=this.x-n.x,s=this.y-n.y;return Math.sqrt(t*t+s*s)},r.prototype.distanceSquare=function(n){var t=this.x-n.x,s=this.y-n.y;return t*t+s*s},r.prototype.negate=function(){return this.x=-this.x,this.y=-this.y,this},r.prototype.transform=function(n){if(n){var t=this.x,s=this.y;return this.x=n[0]*t+n[2]*s+n[4],this.y=n[1]*t+n[3]*s+n[5],this}},r.prototype.toArray=function(n){return n[0]=this.x,n[1]=this.y,n},r.prototype.fromArray=function(n){this.x=n[0],this.y=n[1]},r.set=function(n,t,s){n.x=t,n.y=s},r.copy=function(n,t){n.x=t.x,n.y=t.y},r.len=function(n){return Math.sqrt(n.x*n.x+n.y*n.y)},r.lenSquare=function(n){return n.x*n.x+n.y*n.y},r.dot=function(n,t){return n.x*t.x+n.y*t.y},r.add=function(n,t,s){n.x=t.x+s.x,n.y=t.y+s.y},r.sub=function(n,t,s){n.x=t.x-s.x,n.y=t.y-s.y},r.scale=function(n,t,s){n.x=t.x*s,n.y=t.y*s},r.scaleAndAdd=function(n,t,s,l){n.x=t.x+s.x*l,n.y=t.y+s.y*l},r.lerp=function(n,t,s,l){var c=1-l;n.x=c*t.x+l*s.x,n.y=c*t.y+l*s.y},r}();const Dt=Yz;var me=Math.min,kr=Math.max,Cn=new Dt,Xi=new Dt,vr=new Dt,is=new Dt,ia=new Dt,fp=new Dt,$I=function(){function r(n,t,s,l){s<0&&(n+=s,s=-s),l<0&&(t+=l,l=-l),this.x=n,this.y=t,this.width=s,this.height=l}return r.prototype.union=function(n){var t=me(n.x,this.x),s=me(n.y,this.y);this.width=isFinite(this.x)&&isFinite(this.width)?kr(n.x+n.width,this.x+this.width)-t:n.width,this.height=isFinite(this.y)&&isFinite(this.height)?kr(n.y+n.height,this.y+this.height)-s:n.height,this.x=t,this.y=s},r.prototype.applyTransform=function(n){r.applyTransform(this,this,n)},r.prototype.calculateTransform=function(n){var t=this,s=n.width/t.width,l=n.height/t.height,c=[1,0,0,1,0,0];return _e(c,c,[-t.x,-t.y]),Hb(c,c,[s,l]),_e(c,c,[n.x,n.y]),c},r.prototype.intersect=function(n,t){if(!n)return!1;n instanceof r||(n=r.create(n));var s=this,l=s.x,c=s.x+s.width,u=s.y,f=s.y+s.height,p=n.x,m=n.x+n.width,g=n.y,v=n.y+n.height,y=!(cx&&(x=A,Dt.set(fp,Cx&&(x=E,Dt.set(fp,0,M=s.x&&n<=s.x+s.width&&t>=s.y&&t<=s.y+s.height},r.prototype.clone=function(){return new r(this.x,this.y,this.width,this.height)},r.prototype.copy=function(n){r.copy(this,n)},r.prototype.plain=function(){return{x:this.x,y:this.y,width:this.width,height:this.height}},r.prototype.isFinite=function(){return isFinite(this.x)&&isFinite(this.y)&&isFinite(this.width)&&isFinite(this.height)},r.prototype.isZero=function(){return 0===this.width||0===this.height},r.create=function(n){return new r(n.x,n.y,n.width,n.height)},r.copy=function(n,t){n.x=t.x,n.y=t.y,n.width=t.width,n.height=t.height},r.applyTransform=function(n,t,s){if(s){if(s[1]<1e-5&&s[1]>-1e-5&&s[2]<1e-5&&s[2]>-1e-5){var l=s[0],c=s[3],f=s[5];return n.x=t.x*l+s[4],n.y=t.y*c+f,n.width=t.width*l,n.height=t.height*c,n.width<0&&(n.x+=n.width,n.width=-n.width),void(n.height<0&&(n.y+=n.height,n.height=-n.height))}Cn.x=vr.x=t.x,Cn.y=is.y=t.y,Xi.x=is.x=t.x+t.width,Xi.y=vr.y=t.y+t.height,Cn.transform(s),is.transform(s),Xi.transform(s),vr.transform(s),n.x=me(Cn.x,Xi.x,vr.x,is.x),n.y=me(Cn.y,Xi.y,vr.y,is.y);var p=kr(Cn.x,Xi.x,vr.x,is.x),m=kr(Cn.y,Xi.y,vr.y,is.y);n.width=p-n.x,n.height=m-n.y}else n!==t&&r.copy(n,t)},r}();const yt=$I;var Cl="silent";function cn(){Ar(this.event)}var Zi=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.handler=null,t}return Yn(n,r),n.prototype.dispose=function(){},n.prototype.setCursor=function(){},n}(zs),za=function r(n,t){this.x=n,this.y=t},oh=["click","dblclick","mousewheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],Gr=new yt(0,0,0,0),sh=function(r){function n(t,s,l,c,u){var f=r.call(this)||this;return f._hovered=new za(0,0),f.storage=t,f.painter=s,f.painterRoot=c,f._pointerSize=u,l=l||new Zi,f.proxy=null,f.setHandlerProxy(l),f._draggingMgr=new Hq(f),f}return Yn(n,r),n.prototype.setHandlerProxy=function(t){this.proxy&&this.proxy.dispose(),t&&(U(oh,function(s){t.on&&t.on(s,this[s],this)},this),t.handler=this),this.proxy=t},n.prototype.mousemove=function(t){var s=t.zrX,l=t.zrY,c=Wg(this,s,l),u=this._hovered,f=u.target;f&&!f.__zr&&(f=(u=this.findHover(u.x,u.y)).target);var p=this._hovered=c?new za(s,l):this.findHover(s,l),m=p.target,g=this.proxy;g.setCursor&&g.setCursor(m?m.cursor:"default"),f&&m!==f&&this.dispatchToElement(u,"mouseout",t),this.dispatchToElement(p,"mousemove",t),m&&m!==f&&this.dispatchToElement(p,"mouseover",t)},n.prototype.mouseout=function(t){var s=t.zrEventControl;"only_globalout"!==s&&this.dispatchToElement(this._hovered,"mouseout",t),"no_globalout"!==s&&this.trigger("globalout",{type:"globalout",event:t})},n.prototype.resize=function(){this._hovered=new za(0,0)},n.prototype.dispatch=function(t,s){var l=this[t];l&&l.call(this,s)},n.prototype.dispose=function(){this.proxy.dispose(),this.storage=null,this.proxy=null,this.painter=null},n.prototype.setCursorStyle=function(t){var s=this.proxy;s.setCursor&&s.setCursor(t)},n.prototype.dispatchToElement=function(t,s,l){var c=(t=t||{}).target;if(!c||!c.silent){for(var u="on"+s,f=function it(r,n,t){return{type:r,event:t,target:n.target,topTarget:n.topTarget,cancelBubble:!1,offsetX:t.zrX,offsetY:t.zrY,gestureEvent:t.gestureEvent,pinchX:t.pinchX,pinchY:t.pinchY,pinchScale:t.pinchScale,wheelDelta:t.zrDelta,zrByTouch:t.zrByTouch,which:t.which,stop:cn}}(s,t,l);c&&(c[u]&&(f.cancelBubble=!!c[u].call(c,f)),c.trigger(s,f),c=c.__hostTarget?c.__hostTarget:c.parent,!f.cancelBubble););f.cancelBubble||(this.trigger(s,f),this.painter&&this.painter.eachOtherLayer&&this.painter.eachOtherLayer(function(p){"function"==typeof p[u]&&p[u].call(p,f),p.trigger&&p.trigger(s,f)}))}},n.prototype.findHover=function(t,s,l){var c=this.storage.getDisplayList(),u=new za(t,s);if($g(c,u,t,s,l),this._pointerSize&&!u.target){for(var f=[],p=this._pointerSize,m=p/2,g=new yt(t-m,s-m,p,p),v=c.length-1;v>=0;v--){var y=c[v];y!==l&&!y.ignore&&!y.ignoreCoarsePointer&&(!y.parent||!y.parent.ignoreCoarsePointer)&&(Gr.copy(y.getBoundingRect()),y.transform&&Gr.applyTransform(y.transform),Gr.intersect(g)&&f.push(y))}if(f.length)for(var x=Math.PI/12,C=2*Math.PI,S=0;S=0;c--){var u=r[c],f=void 0;if(u!==l&&!u.ignore&&(f=lr(u,t,s))&&(!n.topTarget&&(n.topTarget=u),f!==Cl)){n.target=u;break}}}function Wg(r,n,t){var s=r.painter;return n<0||n>s.getWidth()||t<0||t>s.getHeight()}U(["click","mousedown","mouseup","mousewheel","dblclick","contextmenu"],function(r){sh.prototype[r]=function(n){var c,u,t=n.zrX,s=n.zrY,l=Wg(this,t,s);if(("mouseup"!==r||!l)&&(u=(c=this.findHover(t,s)).target),"mousedown"===r)this._downEl=u,this._downPoint=[n.zrX,n.zrY],this._upEl=u;else if("mouseup"===r)this._upEl=u;else if("click"===r){if(this._downEl!==this._upEl||!this._downPoint||_l(this._downPoint,[n.zrX,n.zrY])>4)return;this._downPoint=null}this.dispatchToElement(c,r,n)}});const dn=sh;var Gb=32,yc=7;function ra(r,n,t,s){var l=n+1;if(l===t)return 1;if(s(r[l++],r[n])<0){for(;l=0;)l++;return l-n}function lh(r,n,t,s,l){for(s===n&&s++;s>>1])<0?f=p:u=p+1;var m=s-u;switch(m){case 3:r[u+3]=r[u+2];case 2:r[u+2]=r[u+1];case 1:r[u+1]=r[u];break;default:for(;m>0;)r[u+m]=r[u+m-1],m--}r[u]=c}}function rs(r,n,t,s,l,c){var u=0,f=0,p=1;if(c(r,n[t+l])>0){for(f=s-l;p0;)u=p,(p=1+(p<<1))<=0&&(p=f);p>f&&(p=f),u+=l,p+=l}else{for(f=l+1;pf&&(p=f);var m=u;u=l-p,p=l-m}for(u++;u>>1);c(r,n[t+g])>0?u=g+1:p=g}return p}function ch(r,n,t,s,l,c){var u=0,f=0,p=1;if(c(r,n[t+l])<0){for(f=l+1;pf&&(p=f);var m=u;u=l-p,p=l-m}else{for(f=s-l;p=0;)u=p,(p=1+(p<<1))<=0&&(p=f);p>f&&(p=f),u+=l,p+=l}for(u++;u>>1);c(r,n[t+g])<0?p=g:u=g+1}return p}function ci(r,n,t,s){t||(t=0),s||(s=r.length);var l=s-t;if(!(l<2)){var c=0;if(l=yc||j>=yc);if($)break;H<0&&(H=0),H+=2}if((t=H)<1&&(t=1),1===M){for(E=0;E=0;E--)r[G+E]=r[H+E];if(0===M){K=!0;break}}if(r[V--]=m[R--],1==--A){K=!0;break}if(0!=(q=A-rs(r[L],m,0,A,A-1,n))){for(A-=q,G=1+(V-=q),H=1+(R-=q),E=0;E=yc||q>=yc);if(K)break;j<0&&(j=0),j+=2}if((t=j)<1&&(t=1),1===A){for(G=1+(V-=M),H=1+(L-=M),E=M-1;E>=0;E--)r[G+E]=r[H+E];r[V]=m[R]}else{if(0===A)throw new Error;for(H=V-(A-1),E=0;E=0;E--)r[G+E]=r[H+E];r[V]=m[R]}else for(H=V-(A-1),E=0;E1;){var S=p-2;if(S>=1&&f[S-1]<=f[S]+f[S+1]||S>=2&&f[S-2]<=f[S]+f[S-1])f[S-1]f[S+1])break;b(S)}},forceMergeRuns:function y(){for(;p>1;){var S=p-2;S>0&&f[S-1]=Gb;)n|=1&r,r>>=1;return r+n}(l);do{if((c=ra(r,t,s,n))f&&(p=f),lh(r,t,t+p,t+c,n),c=p}u.pushRun(t,c),u.mergeRuns(),l-=c,t+=c}while(0!==l);u.forceMergeRuns()}}var as=1,uh=4,qg=!1;function mp(){qg||(qg=!0,console.warn("z / z2 / zlevel of displayable is invalid, which may cause unexpected errors"))}function hh(r,n){return r.zlevel===n.zlevel?r.z===n.z?r.z2-n.z2:r.z-n.z:r.zlevel-n.zlevel}var Ha=function(){function r(){this._roots=[],this._displayList=[],this._displayListLen=0,this.displayableSortFunc=hh}return r.prototype.traverse=function(n,t){for(var s=0;s0&&(g.__clipPaths=[]),isNaN(g.z)&&(mp(),g.z=0),isNaN(g.z2)&&(mp(),g.z2=0),isNaN(g.zlevel)&&(mp(),g.zlevel=0),this._displayList[this._displayListLen++]=g}var v=n.getDecalElement&&n.getDecalElement();v&&this._updateAndAddDisplayable(v,t,s);var y=n.getTextGuideLine();y&&this._updateAndAddDisplayable(y,t,s);var b=n.getTextContent();b&&this._updateAndAddDisplayable(b,t,s)}},r.prototype.addRoot=function(n){n.__zr&&n.__zr.storage===this||this._roots.push(n)},r.prototype.delRoot=function(n){if(n instanceof Array)for(var t=0,s=n.length;t=0&&this._roots.splice(l,1)}},r.prototype.delAllRoots=function(){this._roots=[],this._displayList=[],this._displayListLen=0},r.prototype.getRoots=function(){return this._roots},r.prototype.dispose=function(){this._displayList=null,this._roots=null},r}();const Uq=Ha;var ao;ao=ln.hasGlobalWindow&&(window.requestAnimationFrame&&window.requestAnimationFrame.bind(window)||window.msRequestAnimationFrame&&window.msRequestAnimationFrame.bind(window)||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame)||function(r){return setTimeout(r,16)};const wo=ao;var gp={linear:function(r){return r},quadraticIn:function(r){return r*r},quadraticOut:function(r){return r*(2-r)},quadraticInOut:function(r){return(r*=2)<1?.5*r*r:-.5*(--r*(r-2)-1)},cubicIn:function(r){return r*r*r},cubicOut:function(r){return--r*r*r+1},cubicInOut:function(r){return(r*=2)<1?.5*r*r*r:.5*((r-=2)*r*r+2)},quarticIn:function(r){return r*r*r*r},quarticOut:function(r){return 1- --r*r*r*r},quarticInOut:function(r){return(r*=2)<1?.5*r*r*r*r:-.5*((r-=2)*r*r*r-2)},quinticIn:function(r){return r*r*r*r*r},quinticOut:function(r){return--r*r*r*r*r+1},quinticInOut:function(r){return(r*=2)<1?.5*r*r*r*r*r:.5*((r-=2)*r*r*r*r+2)},sinusoidalIn:function(r){return 1-Math.cos(r*Math.PI/2)},sinusoidalOut:function(r){return Math.sin(r*Math.PI/2)},sinusoidalInOut:function(r){return.5*(1-Math.cos(Math.PI*r))},exponentialIn:function(r){return 0===r?0:Math.pow(1024,r-1)},exponentialOut:function(r){return 1===r?1:1-Math.pow(2,-10*r)},exponentialInOut:function(r){return 0===r?0:1===r?1:(r*=2)<1?.5*Math.pow(1024,r-1):.5*(2-Math.pow(2,-10*(r-1)))},circularIn:function(r){return 1-Math.sqrt(1-r*r)},circularOut:function(r){return Math.sqrt(1- --r*r)},circularInOut:function(r){return(r*=2)<1?-.5*(Math.sqrt(1-r*r)-1):.5*(Math.sqrt(1-(r-=2)*r)+1)},elasticIn:function(r){var n,t=.1;return 0===r?0:1===r?1:(!t||t<1?(t=1,n=.1):n=.4*Math.asin(1/t)/(2*Math.PI),-t*Math.pow(2,10*(r-=1))*Math.sin((r-n)*(2*Math.PI)/.4))},elasticOut:function(r){var n,t=.1;return 0===r?0:1===r?1:(!t||t<1?(t=1,n=.1):n=.4*Math.asin(1/t)/(2*Math.PI),t*Math.pow(2,-10*r)*Math.sin((r-n)*(2*Math.PI)/.4)+1)},elasticInOut:function(r){var n,t=.1;return 0===r?0:1===r?1:(!t||t<1?(t=1,n=.1):n=.4*Math.asin(1/t)/(2*Math.PI),(r*=2)<1?t*Math.pow(2,10*(r-=1))*Math.sin((r-n)*(2*Math.PI)/.4)*-.5:t*Math.pow(2,-10*(r-=1))*Math.sin((r-n)*(2*Math.PI)/.4)*.5+1)},backIn:function(r){var n=1.70158;return r*r*((n+1)*r-n)},backOut:function(r){var n=1.70158;return--r*r*((n+1)*r+n)+1},backInOut:function(r){var n=2.5949095;return(r*=2)<1?r*r*((n+1)*r-n)*.5:.5*((r-=2)*r*((n+1)*r+n)+2)},bounceIn:function(r){return 1-gp.bounceOut(1-r)},bounceOut:function(r){return r<1/2.75?7.5625*r*r:r<2/2.75?7.5625*(r-=1.5/2.75)*r+.75:r<2.5/2.75?7.5625*(r-=2.25/2.75)*r+.9375:7.5625*(r-=2.625/2.75)*r+.984375},bounceInOut:function(r){return r<.5?.5*gp.bounceIn(2*r):.5*gp.bounceOut(2*r-1)+.5}};const vp=gp;var fh=Math.pow,Ur=Math.sqrt,Ub=1e-8,qz=1e-4,YI=Ur(3),jb=1/3,bc=Ed(),Gs=Ed(),Xg=Ed();function ph(r){return r>-Ub&&rUb||r<-Ub}function jr(r,n,t,s,l){var c=1-l;return c*c*(c*r+3*l*n)+l*l*(l*s+3*c*t)}function Zz(r,n,t,s,l){var c=1-l;return 3*(((n-r)*c+2*(t-n)*l)*c+(s-t)*l*l)}function iS(r,n,t,s,l,c){var u=s+3*(n-t)-r,f=3*(t-2*n+r),p=3*(n-r),m=r-l,g=f*f-3*u*p,v=f*p-9*u*m,y=p*p-3*f*m,b=0;if(ph(g)&&ph(v))ph(f)?c[0]=0:(x=-p/f)>=0&&x<=1&&(c[b++]=x);else{var C=v*v-4*g*y;if(ph(C)){var S=v/g,M=-S/2;(x=-f/u+S)>=0&&x<=1&&(c[b++]=x),M>=0&&M<=1&&(c[b++]=M)}else if(C>0){var T=Ur(C),A=g*f+1.5*u*(-v+T),E=g*f+1.5*u*(-v-T);(x=(-f-((A=A<0?-fh(-A,jb):fh(A,jb))+(E=E<0?-fh(-E,jb):fh(E,jb))))/(3*u))>=0&&x<=1&&(c[b++]=x)}else{var L=(2*g*f-3*u*v)/(2*Ur(g*g*g)),R=Math.acos(L)/3,V=Ur(g),H=Math.cos(R),x=(-f-2*V*H)/(3*u),G=(M=(-f+V*(H+YI*Math.sin(R)))/(3*u),(-f+V*(H-YI*Math.sin(R)))/(3*u));x>=0&&x<=1&&(c[b++]=x),M>=0&&M<=1&&(c[b++]=M),G>=0&&G<=1&&(c[b++]=G)}}return b}function Kz(r,n,t,s,l){var c=6*t-12*n+6*r,u=9*n+3*s-3*r-9*t,f=3*n-3*r,p=0;if(ph(u))Xz(c)&&(m=-f/c)>=0&&m<=1&&(l[p++]=m);else{var g=c*c-4*u*f;if(ph(g))l[0]=-c/(2*u);else if(g>0){var m,v=Ur(g),y=(-c-v)/(2*u);(m=(-c+v)/(2*u))>=0&&m<=1&&(l[p++]=m),y>=0&&y<=1&&(l[p++]=y)}}return p}function mh(r,n,t,s,l,c){var u=(n-r)*l+r,f=(t-n)*l+n,p=(s-t)*l+t,m=(f-u)*l+u,g=(p-f)*l+f,v=(g-m)*l+m;c[0]=r,c[1]=u,c[2]=m,c[3]=v,c[4]=v,c[5]=g,c[6]=p,c[7]=s}function Qz(r,n,t,s,l,c,u,f,p,m,g){var v,x,C,S,M,y=.005,b=1/0;bc[0]=p,bc[1]=m;for(var T=0;T<1;T+=.05)Gs[0]=jr(r,t,l,u,T),Gs[1]=jr(n,s,c,f,T),(S=yl(bc,Gs))=0&&S=0&&b=1?1:iS(0,s,c,1,p,f)&&jr(0,l,u,1,f[0])}}}var t4=function(){function r(n){this._inited=!1,this._startTime=0,this._pausedTime=0,this._paused=!1,this._life=n.life||1e3,this._delay=n.delay||0,this.loop=n.loop||!1,this.onframe=n.onframe||Ft,this.ondestroy=n.ondestroy||Ft,this.onrestart=n.onrestart||Ft,n.easing&&this.setEasing(n.easing)}return r.prototype.step=function(n,t){if(this._inited||(this._startTime=n+this._delay,this._inited=!0),!this._paused){var s=this._life,l=n-this._startTime-this._pausedTime,c=l/s;c<0&&(c=0),c=Math.min(c,1);var u=this.easingFunc,f=u?u(c):c;if(this.onframe(f),1===c){if(!this.loop)return!0;this._startTime=n-l%s,this._pausedTime=0,this.onrestart()}return!1}this._pausedTime+=t},r.prototype.pause=function(){this._paused=!0},r.prototype.resume=function(){this._paused=!1},r.prototype.setEasing=function(n){this.easing=n,this.easingFunc=qe(n)?n:vp[n]||Yb(n)},r}();const n4=t4;var rS=function r(n){this.value=n},qI=function(){function r(){this._len=0}return r.prototype.insert=function(n){var t=new rS(n);return this.insertEntry(t),t},r.prototype.insertEntry=function(n){this.head?(this.tail.next=n,n.prev=this.tail,n.next=null,this.tail=n):this.head=this.tail=n,this._len++},r.prototype.remove=function(n){var t=n.prev,s=n.next;t?t.next=s:this.head=s,s?s.prev=t:this.tail=t,n.next=n.prev=null,this._len--},r.prototype.len=function(){return this._len},r.prototype.clear=function(){this.head=this.tail=null,this._len=0},r}(),r4=function(){function r(n){this._list=new qI,this._maxSize=10,this._map={},this._maxSize=n}return r.prototype.put=function(n,t){var s=this._list,l=this._map,c=null;if(null==l[n]){var u=s.len(),f=this._lastRemovedEntry;if(u>=this._maxSize&&u>0){var p=s.head;s.remove(p),delete l[p.key],c=p.value,this._lastRemovedEntry=p}f?f.value=t:f=new rS(t),f.key=n,s.insertEntry(f),l[n]=f}return c},r.prototype.get=function(n){var t=this._map[n],s=this._list;if(null!=t)return t!==s.tail&&(s.remove(t),s.insertEntry(t)),t.value},r.prototype.clear=function(){this._list.clear(),this._map={}},r.prototype.len=function(){return this._list.len()},r}();const gh=r4;var XI={transparent:[0,0,0,0],aliceblue:[240,248,255,1],antiquewhite:[250,235,215,1],aqua:[0,255,255,1],aquamarine:[127,255,212,1],azure:[240,255,255,1],beige:[245,245,220,1],bisque:[255,228,196,1],black:[0,0,0,1],blanchedalmond:[255,235,205,1],blue:[0,0,255,1],blueviolet:[138,43,226,1],brown:[165,42,42,1],burlywood:[222,184,135,1],cadetblue:[95,158,160,1],chartreuse:[127,255,0,1],chocolate:[210,105,30,1],coral:[255,127,80,1],cornflowerblue:[100,149,237,1],cornsilk:[255,248,220,1],crimson:[220,20,60,1],cyan:[0,255,255,1],darkblue:[0,0,139,1],darkcyan:[0,139,139,1],darkgoldenrod:[184,134,11,1],darkgray:[169,169,169,1],darkgreen:[0,100,0,1],darkgrey:[169,169,169,1],darkkhaki:[189,183,107,1],darkmagenta:[139,0,139,1],darkolivegreen:[85,107,47,1],darkorange:[255,140,0,1],darkorchid:[153,50,204,1],darkred:[139,0,0,1],darksalmon:[233,150,122,1],darkseagreen:[143,188,143,1],darkslateblue:[72,61,139,1],darkslategray:[47,79,79,1],darkslategrey:[47,79,79,1],darkturquoise:[0,206,209,1],darkviolet:[148,0,211,1],deeppink:[255,20,147,1],deepskyblue:[0,191,255,1],dimgray:[105,105,105,1],dimgrey:[105,105,105,1],dodgerblue:[30,144,255,1],firebrick:[178,34,34,1],floralwhite:[255,250,240,1],forestgreen:[34,139,34,1],fuchsia:[255,0,255,1],gainsboro:[220,220,220,1],ghostwhite:[248,248,255,1],gold:[255,215,0,1],goldenrod:[218,165,32,1],gray:[128,128,128,1],green:[0,128,0,1],greenyellow:[173,255,47,1],grey:[128,128,128,1],honeydew:[240,255,240,1],hotpink:[255,105,180,1],indianred:[205,92,92,1],indigo:[75,0,130,1],ivory:[255,255,240,1],khaki:[240,230,140,1],lavender:[230,230,250,1],lavenderblush:[255,240,245,1],lawngreen:[124,252,0,1],lemonchiffon:[255,250,205,1],lightblue:[173,216,230,1],lightcoral:[240,128,128,1],lightcyan:[224,255,255,1],lightgoldenrodyellow:[250,250,210,1],lightgray:[211,211,211,1],lightgreen:[144,238,144,1],lightgrey:[211,211,211,1],lightpink:[255,182,193,1],lightsalmon:[255,160,122,1],lightseagreen:[32,178,170,1],lightskyblue:[135,206,250,1],lightslategray:[119,136,153,1],lightslategrey:[119,136,153,1],lightsteelblue:[176,196,222,1],lightyellow:[255,255,224,1],lime:[0,255,0,1],limegreen:[50,205,50,1],linen:[250,240,230,1],magenta:[255,0,255,1],maroon:[128,0,0,1],mediumaquamarine:[102,205,170,1],mediumblue:[0,0,205,1],mediumorchid:[186,85,211,1],mediumpurple:[147,112,219,1],mediumseagreen:[60,179,113,1],mediumslateblue:[123,104,238,1],mediumspringgreen:[0,250,154,1],mediumturquoise:[72,209,204,1],mediumvioletred:[199,21,133,1],midnightblue:[25,25,112,1],mintcream:[245,255,250,1],mistyrose:[255,228,225,1],moccasin:[255,228,181,1],navajowhite:[255,222,173,1],navy:[0,0,128,1],oldlace:[253,245,230,1],olive:[128,128,0,1],olivedrab:[107,142,35,1],orange:[255,165,0,1],orangered:[255,69,0,1],orchid:[218,112,214,1],palegoldenrod:[238,232,170,1],palegreen:[152,251,152,1],paleturquoise:[175,238,238,1],palevioletred:[219,112,147,1],papayawhip:[255,239,213,1],peachpuff:[255,218,185,1],peru:[205,133,63,1],pink:[255,192,203,1],plum:[221,160,221,1],powderblue:[176,224,230,1],purple:[128,0,128,1],red:[255,0,0,1],rosybrown:[188,143,143,1],royalblue:[65,105,225,1],saddlebrown:[139,69,19,1],salmon:[250,128,114,1],sandybrown:[244,164,96,1],seagreen:[46,139,87,1],seashell:[255,245,238,1],sienna:[160,82,45,1],silver:[192,192,192,1],skyblue:[135,206,235,1],slateblue:[106,90,205,1],slategray:[112,128,144,1],slategrey:[112,128,144,1],snow:[255,250,250,1],springgreen:[0,255,127,1],steelblue:[70,130,180,1],tan:[210,180,140,1],teal:[0,128,128,1],thistle:[216,191,216,1],tomato:[255,99,71,1],turquoise:[64,224,208,1],violet:[238,130,238,1],wheat:[245,222,179,1],white:[255,255,255,1],whitesmoke:[245,245,245,1],yellow:[255,255,0,1],yellowgreen:[154,205,50,1]};function Ki(r){return(r=Math.round(r))<0?0:r>255?255:r}function _p(r){return r<0?0:r>1?1:r}function Ir(r){var n=r;return n.length&&"%"===n.charAt(n.length-1)?Ki(parseFloat(n)/100*255):Ki(parseInt(n,10))}function vh(r){var n=r;return n.length&&"%"===n.charAt(n.length-1)?_p(parseFloat(n)/100):_p(parseFloat(n))}function yp(r,n,t){return t<0?t+=1:t>1&&(t-=1),6*t<1?r+(n-r)*t*6:2*t<1?n:3*t<2?r+(n-r)*(2/3-t)*6:r}function _r(r,n,t){return r+(n-r)*t}function os(r,n,t,s,l){return r[0]=n,r[1]=t,r[2]=s,r[3]=l,r}function qb(r,n){return r[0]=n[0],r[1]=n[1],r[2]=n[2],r[3]=n[3],r}var _h=new gh(20),aa=null;function bp(r,n){aa&&qb(aa,n),aa=_h.put(r,aa||n.slice())}function $r(r,n){if(r){n=n||[];var t=_h.get(r);if(t)return qb(n,t);var s=(r+="").replace(/ /g,"").toLowerCase();if(s in XI)return qb(n,XI[s]),bp(r,n),n;var c,l=s.length;if("#"===s.charAt(0))return 4===l||5===l?(c=parseInt(s.slice(1,4),16))>=0&&c<=4095?(os(n,(3840&c)>>4|(3840&c)>>8,240&c|(240&c)>>4,15&c|(15&c)<<4,5===l?parseInt(s.slice(4),16)/15:1),bp(r,n),n):void os(n,0,0,0,1):7===l||9===l?(c=parseInt(s.slice(1,7),16))>=0&&c<=16777215?(os(n,(16711680&c)>>16,(65280&c)>>8,255&c,9===l?parseInt(s.slice(7),16)/255:1),bp(r,n),n):void os(n,0,0,0,1):void 0;var u=s.indexOf("("),f=s.indexOf(")");if(-1!==u&&f+1===l){var p=s.substr(0,u),m=s.substr(u+1,f-(u+1)).split(","),g=1;switch(p){case"rgba":if(4!==m.length)return 3===m.length?os(n,+m[0],+m[1],+m[2],1):os(n,0,0,0,1);g=vh(m.pop());case"rgb":return m.length>=3?(os(n,Ir(m[0]),Ir(m[1]),Ir(m[2]),3===m.length?g:vh(m[3])),bp(r,n),n):void os(n,0,0,0,1);case"hsla":return 4!==m.length?void os(n,0,0,0,1):(m[3]=vh(m[3]),aS(m,n),bp(r,n),n);case"hsl":return 3!==m.length?void os(n,0,0,0,1):(aS(m,n),bp(r,n),n);default:return}}os(n,0,0,0,1)}}function aS(r,n){var t=(parseFloat(r[0])%360+360)%360/360,s=vh(r[1]),l=vh(r[2]),c=l<=.5?l*(s+1):l+s-l*s,u=2*l-c;return os(n=n||[],Ki(255*yp(u,c,t+1/3)),Ki(255*yp(u,c,t)),Ki(255*yp(u,c,t-1/3)),1),4===r.length&&(n[3]=r[3]),n}function Zg(r,n){var t=$r(r);if(t){for(var s=0;s<3;s++)t[s]=n<0?t[s]*(1-n)|0:(255-t[s])*n+t[s]|0,t[s]>255?t[s]=255:t[s]<0&&(t[s]=0);return ss(t,4===t.length?"rgba":"rgb")}}function oS(r){var n=$r(r);if(n)return((1<<24)+(n[0]<<16)+(n[1]<<8)+ +n[2]).toString(16).slice(1)}function zt(r,n,t){if(n&&n.length&&r>=0&&r<=1){t=t||[];var s=r*(n.length-1),l=Math.floor(s),c=Math.ceil(s),u=n[l],f=n[c],p=s-l;return t[0]=Ki(_r(u[0],f[0],p)),t[1]=Ki(_r(u[1],f[1],p)),t[2]=Ki(_r(u[2],f[2],p)),t[3]=_p(_r(u[3],f[3],p)),t}}var KI=zt;function QI(r,n,t){if(n&&n.length&&r>=0&&r<=1){var s=r*(n.length-1),l=Math.floor(s),c=Math.ceil(s),u=$r(n[l]),f=$r(n[c]),p=s-l,m=ss([Ki(_r(u[0],f[0],p)),Ki(_r(u[1],f[1],p)),Ki(_r(u[2],f[2],p)),_p(_r(u[3],f[3],p))],"rgba");return t?{color:m,leftIndex:l,rightIndex:c,value:s}:m}}var a4=QI;function wp(r,n,t,s){var l=$r(r);if(r)return l=function Rd(r){if(r){var p,m,n=r[0]/255,t=r[1]/255,s=r[2]/255,l=Math.min(n,t,s),c=Math.max(n,t,s),u=c-l,f=(c+l)/2;if(0===u)p=0,m=0;else{m=f<.5?u/(c+l):u/(2-c-l);var g=((c-n)/6+u/2)/u,v=((c-t)/6+u/2)/u,y=((c-s)/6+u/2)/u;n===c?p=y-v:t===c?p=1/3+g-y:s===c&&(p=2/3+v-g),p<0&&(p+=1),p>1&&(p-=1)}var b=[360*p,m,f];return null!=r[3]&&b.push(r[3]),b}}(l),null!=n&&(l[0]=function ZI(r){return(r=Math.round(r))<0?0:r>360?360:r}(n)),null!=t&&(l[1]=vh(t)),null!=s&&(l[2]=vh(s)),ss(aS(l),"rgba")}function Kg(r,n){var t=$r(r);if(t&&null!=n)return t[3]=_p(n),ss(t,"rgba")}function ss(r,n){if(r&&r.length){var t=r[0]+","+r[1]+","+r[2];return("rgba"===n||"hsva"===n||"hsla"===n)&&(t+=","+r[3]),n+"("+t+")"}}function Qg(r,n){var t=$r(r);return t?(.299*t[0]+.587*t[1]+.114*t[2])*t[3]/255+(1-t[3])*n:0}function o4(){return ss([Math.round(255*Math.random()),Math.round(255*Math.random()),Math.round(255*Math.random())],"rgb")}var De=Math.round;function gn(r){var n;if(r&&"transparent"!==r){if("string"==typeof r&&r.indexOf("rgba")>-1){var t=$r(r);t&&(r="rgb("+t[0]+","+t[1]+","+t[2]+")",n=t[3])}}else r="none";return{color:r,opacity:n??1}}var le=1e-4;function oe(r){return r-le}function yr(r){return De(1e3*r)/1e3}function Xb(r){return De(1e4*r)/1e4}var sS={left:"start",right:"end",center:"middle",middle:"middle"};function _a(r){return r&&!!r.image}function Kb(r){return _a(r)||function wc(r){return r&&!!r.svgElement}(r)}function yh(r){return"linear"===r.type}function Dl(r){return"radial"===r.type}function JI(r){return r&&("linear"===r.type||"radial"===r.type)}function Jg(r){return"url(#"+r+")"}function eP(r){var n=r.getGlobalScale(),t=Math.max(n[0],n[1]);return Math.max(Math.ceil(Math.log(t)/Math.log(10)),1)}function tP(r){var n=r.x||0,t=r.y||0,s=(r.rotation||0)*th,l=Ct(r.scaleX,1),c=Ct(r.scaleY,1),u=r.skewX||0,f=r.skewY||0,p=[];return(n||t)&&p.push("translate("+n+"px,"+t+"px)"),s&&p.push("rotate("+s+")"),(1!==l||1!==c)&&p.push("scale("+l+","+c+")"),(u||f)&&p.push("skew("+De(u*th)+"deg, "+De(f*th)+"deg)"),p.join(" ")}var cS=ln.hasGlobalWindow&&qe(window.btoa)?function(r){return window.btoa(unescape(encodeURIComponent(r)))}:typeof Buffer<"u"?function(r){return Buffer.from(r).toString("base64")}:function(r){return null},ev=Array.prototype.slice;function Ml(r,n,t){return(n-r)*t+r}function tv(r,n,t,s){for(var l=n.length,c=0;cs?n:r,c=Math.min(t,s),u=l[c-1]||{color:[0,0,0,0],offset:0},f=c;fu)s.length=u;else for(var p=c;p=1},r.prototype.getAdditiveTrack=function(){return this._additiveTrack},r.prototype.addKeyframe=function(n,t,s){this._needsSort=!0;var l=this.keyframes,c=l.length,u=!1,f=6,p=t;if(Hr(t)){var m=function dS(r){return Hr(r&&r[0])?2:1}(t);f=m,(1===m&&!rn(t[0])||2===m&&!rn(t[0][0]))&&(u=!0)}else if(rn(t)&&!Ng(t))f=0;else if(Le(t))if(isNaN(+t)){var g=$r(t);g&&(p=g,f=3)}else f=0;else if(Vi(t)){var v=ge({},p);v.colorStops=xe(t.colorStops,function(b){return{offset:b.offset,color:$r(b.color)}}),yh(t)?f=ki:Dl(t)&&(f=Wr),p=v}0===c?this.valType=f:(f!==this.valType||6===f)&&(u=!0),this.discrete=this.discrete||u;var y={time:n,value:p,rawValue:t,percent:0};return s&&(y.easing=s,y.easingFunc=qe(s)?s:vp[s]||Yb(s)),l.push(y),y},r.prototype.prepare=function(n,t){var s=this.keyframes;this._needsSort&&s.sort(function(C,S){return C.time-S.time});for(var l=this.valType,c=s.length,u=s[c-1],f=this.discrete,p=t0(l),m=xc(l),g=0;g=0&&!(u[g].percent<=t);g--);g=y(g,f-2)}else{for(g=v;gt);g++);g=y(g-1,f-2)}x=u[g+1],b=u[g]}if(b&&x){this._lastFr=g,this._lastFrP=t;var S=x.percent-b.percent,M=0===S?1:y((t-b.percent)/S,1);x.easingFunc&&(M=x.easingFunc(M));var T=s?this._additiveValue:m?rv:n[p];if((t0(c)||m)&&!T&&(T=this._additiveValue=[]),this.discrete)n[p]=M<1?b.rawValue:x.rawValue;else if(t0(c))c===e0?tv(T,b[l],x[l],M):function c4(r,n,t,s){for(var l=n.length,c=l&&n[0].length,u=0;u0&&p.addKeyframe(0,xp(m),l),this._trackKeys.push(f)}p.addKeyframe(n,xp(t[f]),l)}return this._maxTime=Math.max(this._maxTime,n),this},r.prototype.pause=function(){this._clip.pause(),this._paused=!0},r.prototype.resume=function(){this._clip.resume(),this._paused=!1},r.prototype.isPaused=function(){return!!this._paused},r.prototype.duration=function(n){return this._maxTime=n,this._force=!0,this},r.prototype._doneCallback=function(){this._setTracksFinished(),this._clip=null;var n=this._doneCbs;if(n)for(var t=n.length,s=0;s0)){this._started=1;for(var t=this,s=[],l=this._maxTime||0,c=0;c1){var f=u.pop();c.addKeyframe(f.time,n[l]),c.prepare(this._maxTime,c.getAdditiveTrack())}}}},r}();const Cp=n0;function Cc(){return(new Date).getTime()}var uS=function(r){function n(t){var s=r.call(this)||this;return s._running=!1,s._time=0,s._pausedTime=0,s._pauseStart=0,s._paused=!1,s.stage=(t=t||{}).stage||{},s}return Yn(n,r),n.prototype.addClip=function(t){t.animation&&this.removeClip(t),this._head?(this._tail.next=t,t.prev=this._tail,t.next=null,this._tail=t):this._head=this._tail=t,t.animation=this},n.prototype.addAnimator=function(t){t.animation=this;var s=t.getClip();s&&this.addClip(s)},n.prototype.removeClip=function(t){if(t.animation){var s=t.prev,l=t.next;s?s.next=l:this._head=l,l?l.prev=s:this._tail=s,t.next=t.prev=t.animation=null}},n.prototype.removeAnimator=function(t){var s=t.getClip();s&&this.removeClip(s),t.animation=null},n.prototype.update=function(t){for(var s=Cc()-this._pausedTime,l=s-this._time,c=this._head;c;){var u=c.next;c.step(s,l)&&(c.ondestroy(),this.removeClip(c)),c=u}this._time=s,t||(this.trigger("frame",l),this.stage.update&&this.stage.update())},n.prototype._startLoop=function(){var t=this;this._running=!0,wo(function s(){t._running&&(wo(s),!t._paused&&t.update())})},n.prototype.start=function(){this._running||(this._time=Cc(),this._pausedTime=0,this._startLoop())},n.prototype.stop=function(){this._running=!1},n.prototype.pause=function(){this._paused||(this._pauseStart=Cc(),this._paused=!0)},n.prototype.resume=function(){this._paused&&(this._pausedTime+=Cc()-this._pauseStart,this._paused=!1)},n.prototype.clear=function(){for(var t=this._head;t;){var s=t.next;t.prev=t.next=t.animation=null,t=s}this._head=this._tail=null},n.prototype.isFinished=function(){return null==this._head},n.prototype.animate=function(t,s){s=s||{},this.start();var l=new Cp(t,s.loop);return this.addAnimator(l),l},n}(zs);const aP=uS;var Od=ln.domSupported,bh=function(){var r=["click","dblclick","mousewheel","wheel","mouseout","mouseup","mousedown","mousemove","contextmenu"],t={pointerdown:1,pointerup:1,pointermove:1,pointerout:1};return{mouse:r,touch:["touchstart","touchend","touchmove"],pointer:xe(r,function(l){var c=l.replace("mouse","pointer");return t.hasOwnProperty(c)?c:l})}}(),oP={mouse:["mousemove","mouseup"],pointer:["pointermove","pointerup"]},h4=!1;function av(r){var n=r.pointerType;return"pen"===n||"touch"===n}function hS(r){r&&(r.zrByTouch=!0)}function p4(r,n){for(var t=n,s=!1;t&&9!==t.nodeType&&!(s=t.domBelongToZr||t!==n&&t===r.painterRoot);)t=t.parentNode;return s}var qq=function r(n,t){this.stopPropagation=Ft,this.stopImmediatePropagation=Ft,this.preventDefault=Ft,this.type=t.type,this.target=this.currentTarget=n.dom,this.pointerType=t.pointerType,this.clientX=t.clientX,this.clientY=t.clientY},xo={mousedown:function(r){r=ns(this.dom,r),this.__mayPointerCapture=[r.zrX,r.zrY],this.trigger("mousedown",r)},mousemove:function(r){r=ns(this.dom,r);var n=this.__mayPointerCapture;n&&(r.zrX!==n[0]||r.zrY!==n[1])&&this.__togglePointerCapture(!0),this.trigger("mousemove",r)},mouseup:function(r){r=ns(this.dom,r),this.__togglePointerCapture(!1),this.trigger("mouseup",r)},mouseout:function(r){p4(this,(r=ns(this.dom,r)).toElement||r.relatedTarget)||(this.__pointerCapturing&&(r.zrEventControl="no_globalout"),this.trigger("mouseout",r))},wheel:function(r){h4=!0,r=ns(this.dom,r),this.trigger("mousewheel",r)},mousewheel:function(r){h4||(r=ns(this.dom,r),this.trigger("mousewheel",r))},touchstart:function(r){hS(r=ns(this.dom,r)),this.__lastTouchMoment=new Date,this.handler.processGesture(r,"start"),xo.mousemove.call(this,r),xo.mousedown.call(this,r)},touchmove:function(r){hS(r=ns(this.dom,r)),this.handler.processGesture(r,"change"),xo.mousemove.call(this,r)},touchend:function(r){hS(r=ns(this.dom,r)),this.handler.processGesture(r,"end"),xo.mouseup.call(this,r),+new Date-+this.__lastTouchMoment<300&&xo.click.call(this,r)},pointerdown:function(r){xo.mousedown.call(this,r)},pointermove:function(r){av(r)||xo.mousemove.call(this,r)},pointerup:function(r){xo.mouseup.call(this,r)},pointerout:function(r){av(r)||xo.mouseout.call(this,r)}};U(["click","dblclick","contextmenu"],function(r){xo[r]=function(n){n=ns(this.dom,n),this.trigger(r,n)}});var r0={pointermove:function(r){av(r)||r0.mousemove.call(this,r)},pointerup:function(r){r0.mouseup.call(this,r)},mousemove:function(r){this.trigger("mousemove",r)},mouseup:function(r){var n=this.__pointerCapturing;this.__togglePointerCapture(!1),this.trigger("mouseup",r),n&&(r.zrEventControl="only_globalout",this.trigger("mouseout",r))}};function sv(r,n,t,s){r.mounted[n]=t,r.listenerOpts[n]=s,Hs(r.domTarget,n,t,s)}function a0(r){var n=r.mounted;for(var t in n)n.hasOwnProperty(t)&&bl(r.domTarget,t,n[t],r.listenerOpts[t]);r.mounted={}}var lv=function r(n,t){this.mounted={},this.listenerOpts={},this.touching=!1,this.domTarget=n,this.domHandlers=t},m4=function(r){function n(t,s){var l=r.call(this)||this;return l.__pointerCapturing=!1,l.dom=t,l.painterRoot=s,l._localHandlerScope=new lv(t,xo),Od&&(l._globalHandlerScope=new lv(document,r0)),function sP(r,n){var t=n.domHandlers;ln.pointerEventsSupported?U(bh.pointer,function(s){sv(n,s,function(l){t[s].call(r,l)})}):(ln.touchEventsSupported&&U(bh.touch,function(s){sv(n,s,function(l){t[s].call(r,l),function Yq(r){r.touching=!0,null!=r.touchTimer&&(clearTimeout(r.touchTimer),r.touchTimer=null),r.touchTimer=setTimeout(function(){r.touching=!1,r.touchTimer=null},700)}(n)})}),U(bh.mouse,function(s){sv(n,s,function(l){l=eS(l),n.touching||t[s].call(r,l)})}))}(l,l._localHandlerScope),l}return Yn(n,r),n.prototype.dispose=function(){a0(this._localHandlerScope),Od&&a0(this._globalHandlerScope)},n.prototype.setCursor=function(t){this.dom.style&&(this.dom.style.cursor=t||"default")},n.prototype.__togglePointerCapture=function(t){if(this.__mayPointerCapture=null,Od&&+this.__pointerCapturing^+t){this.__pointerCapturing=t;var s=this._globalHandlerScope;t?function ov(r,n){function t(s){sv(n,s,function l(c){c=eS(c),p4(r,c.target)||(c=function f4(r,n){return ns(r.dom,new qq(r,n),!0)}(r,c),n.domHandlers[s].call(r,c))},{capture:!0})}ln.pointerEventsSupported?U(oP.pointer,t):ln.touchEventsSupported||U(oP.mouse,t)}(this,s):a0(s)}},n}(zs);const o0=m4;var s0=1;ln.hasGlobalWindow&&(s0=Math.max(window.devicePixelRatio||window.screen&&window.screen.deviceXDPI/window.screen.logicalXDPI||1,1));var pS=s0,c0="#333",mS="#ccc",lP=bo,cv=5e-5;function Sc(r){return r>cv||r<-cv}var Ld=[],Fd=[],dv=[1,0,0,1,0,0],gS=Math.abs,cP=function(){function r(){}return r.prototype.getLocalTransform=function(n){return r.getLocalTransform(this,n)},r.prototype.setPosition=function(n){this.x=n[0],this.y=n[1]},r.prototype.setScale=function(n){this.scaleX=n[0],this.scaleY=n[1]},r.prototype.setSkew=function(n){this.skewX=n[0],this.skewY=n[1]},r.prototype.setOrigin=function(n){this.originX=n[0],this.originY=n[1]},r.prototype.needLocalTransform=function(){return Sc(this.rotation)||Sc(this.x)||Sc(this.y)||Sc(this.scaleX-1)||Sc(this.scaleY-1)||Sc(this.skewX)||Sc(this.skewY)},r.prototype.updateTransform=function(){var n=this.parent&&this.parent.transform,t=this.needLocalTransform(),s=this.transform;t||n?(s=s||[1,0,0,1,0,0],t?this.getLocalTransform(s):lP(s),n&&(t?xl(s,n,s):Id(s,n)),this.transform=s,this._resolveGlobalScaleRatio(s)):s&&lP(s)},r.prototype._resolveGlobalScaleRatio=function(n){var t=this.globalScaleRatio;if(null!=t&&1!==t){this.getGlobalScale(Ld);var s=Ld[0]<0?-1:1,l=Ld[1]<0?-1:1,c=((Ld[0]-s)*t+s)/Ld[0]||0,u=((Ld[1]-l)*t+l)/Ld[1]||0;n[0]*=c,n[1]*=c,n[2]*=u,n[3]*=u}this.invTransform=this.invTransform||[1,0,0,1,0,0],ah(this.invTransform,n)},r.prototype.getComputedTransform=function(){for(var n=this,t=[];n;)t.push(n),n=n.parent;for(;n=t.pop();)n.updateTransform();return this.transform},r.prototype.setLocalTransform=function(n){if(n){var t=n[0]*n[0]+n[1]*n[1],s=n[2]*n[2]+n[3]*n[3],l=Math.atan2(n[1],n[0]),c=Math.PI/2+l-Math.atan2(n[3],n[2]);s=Math.sqrt(s)*Math.cos(c),t=Math.sqrt(t),this.skewX=c,this.skewY=0,this.rotation=-l,this.x=+n[4],this.y=+n[5],this.scaleX=t,this.scaleY=s,this.originX=0,this.originY=0}},r.prototype.decomposeTransform=function(){if(this.transform){var n=this.parent,t=this.transform;n&&n.transform&&(xl(Fd,n.invTransform,t),t=Fd);var s=this.originX,l=this.originY;(s||l)&&(dv[4]=s,dv[5]=l,xl(Fd,t,dv),Fd[4]-=s,Fd[5]-=l,t=Fd),this.setLocalTransform(t)}},r.prototype.getGlobalScale=function(n){var t=this.transform;return n=n||[],t?(n[0]=Math.sqrt(t[0]*t[0]+t[1]*t[1]),n[1]=Math.sqrt(t[2]*t[2]+t[3]*t[3]),t[0]<0&&(n[0]=-n[0]),t[3]<0&&(n[1]=-n[1]),n):(n[0]=1,n[1]=1,n)},r.prototype.transformCoordToLocal=function(n,t){var s=[n,t],l=this.invTransform;return l&&at(s,s,l),s},r.prototype.transformCoordToGlobal=function(n,t){var s=[n,t],l=this.transform;return l&&at(s,s,l),s},r.prototype.getLineScale=function(){var n=this.transform;return n&&gS(n[0]-1)>1e-10&&gS(n[3]-1)>1e-10?Math.sqrt(gS(n[0]*n[3]-n[2]*n[1])):1},r.prototype.copyTransform=function(n){vS(this,n)},r.getLocalTransform=function(n,t){t=t||[];var s=n.originX||0,l=n.originY||0,c=n.scaleX,u=n.scaleY,f=n.anchorX,p=n.anchorY,m=n.rotation||0,g=n.x,v=n.y,y=n.skewX?Math.tan(n.skewX):0,b=n.skewY?Math.tan(-n.skewY):0;if(s||l||f||p){var x=s+f,C=l+p;t[4]=-x*c-y*C*u,t[5]=-C*u-b*x*c}else t[4]=t[5]=0;return t[0]=c,t[3]=u,t[1]=b*c,t[2]=y*u,m&&_c(t,t,m),t[4]+=s+g,t[5]+=l+v,t},r.initDefaultProps=function(){var n=r.prototype;n.scaleX=n.scaleY=n.globalScaleRatio=1,n.x=n.y=n.originX=n.originY=n.skewX=n.skewY=n.rotation=n.anchorX=n.anchorY=0}(),r}(),js=["x","y","originX","originY","anchorX","anchorY","rotation","scaleX","scaleY","skewX","skewY"];function vS(r,n){for(var t=0;t=0?parseFloat(r)/100*n:parseFloat(r):r}function Dp(r,n,t){var s=n.position||"inside",l=null!=n.distance?n.distance:5,c=t.height,u=t.width,f=c/2,p=t.x,m=t.y,g="left",v="top";if(s instanceof Array)p+=_t(s[0],t.width),m+=_t(s[1],t.height),g=null,v=null;else switch(s){case"left":p-=l,m+=f,g="right",v="middle";break;case"right":p+=l+u,m+=f,v="middle";break;case"top":p+=u/2,m-=l,g="center",v="bottom";break;case"bottom":p+=u/2,m+=c+l,g="center";break;case"inside":p+=u/2,m+=f,g="center",v="middle";break;case"insideLeft":p+=l,m+=f,v="middle";break;case"insideRight":p+=u-l,m+=f,g="right",v="middle";break;case"insideTop":p+=u/2,m+=l,g="center";break;case"insideBottom":p+=u/2,m+=c-l,g="center",v="bottom";break;case"insideTopLeft":p+=l,m+=l;break;case"insideTopRight":p+=u-l,m+=l,g="right";break;case"insideBottomLeft":p+=l,m+=c-l,v="bottom";break;case"insideBottomRight":p+=u-l,m+=c-l,g="right",v="bottom"}return(r=r||{}).x=p,r.y=m,r.align=g,r.verticalAlign=v,r}var _S="__zr_normal__",d0=js.concat(["ignore"]),Co=vo(js,function(r,n){return r[n]=!0,r},{ignore:!1}),$s={},Mp=new yt(0,0,0,0),Bd=function(){function r(n){this.id=W1(),this.animators=[],this.currentStates=[],this.states={},this._init(n)}return r.prototype._init=function(n){this.attr(n)},r.prototype.drift=function(n,t,s){switch(this.draggable){case"horizontal":t=0;break;case"vertical":n=0}var l=this.transform;l||(l=this.transform=[1,0,0,1,0,0]),l[4]+=n,l[5]+=t,this.decomposeTransform(),this.markRedraw()},r.prototype.beforeUpdate=function(){},r.prototype.afterUpdate=function(){},r.prototype.update=function(){this.updateTransform(),this.__dirty&&this.updateInnerText()},r.prototype.updateInnerText=function(n){var t=this._textContent;if(t&&(!t.ignore||n)){this.textConfig||(this.textConfig={});var s=this.textConfig,l=s.local,c=t.innerTransformable,u=void 0,f=void 0,p=!1;c.parent=l?this:null;var m=!1;if(c.copyTransform(t),null!=s.position){var g=Mp;g.copy(s.layoutRect?s.layoutRect:this.getBoundingRect()),l||g.applyTransform(this.transform),this.calculateTextPosition?this.calculateTextPosition($s,s,g):Dp($s,s,g),c.x=$s.x,c.y=$s.y,u=$s.align,f=$s.verticalAlign;var v=s.origin;if(v&&null!=s.rotation){var y=void 0,b=void 0;"center"===v?(y=.5*g.width,b=.5*g.height):(y=_t(v[0],g.width),b=_t(v[1],g.height)),m=!0,c.originX=-c.x+y+(l?0:g.x),c.originY=-c.y+b+(l?0:g.y)}}null!=s.rotation&&(c.rotation=s.rotation);var x=s.offset;x&&(c.x+=x[0],c.y+=x[1],m||(c.originX=-x[0],c.originY=-x[1]));var C=null==s.inside?"string"==typeof s.position&&s.position.indexOf("inside")>=0:s.inside,S=this._innerTextDefaultStyle||(this._innerTextDefaultStyle={}),M=void 0,T=void 0,A=void 0;C&&this.canBeInsideText()?(T=s.insideStroke,(null==(M=s.insideFill)||"auto"===M)&&(M=this.getInsideTextFill()),(null==T||"auto"===T)&&(T=this.getInsideTextStroke(M),A=!0)):(T=s.outsideStroke,(null==(M=s.outsideFill)||"auto"===M)&&(M=this.getOutsideFill()),(null==T||"auto"===T)&&(T=this.getOutsideStroke(M),A=!0)),((M=M||"#000")!==S.fill||T!==S.stroke||A!==S.autoStroke||u!==S.align||f!==S.verticalAlign)&&(p=!0,S.fill=M,S.stroke=T,S.autoStroke=A,S.align=u,S.verticalAlign=f,t.setDefaultTextStyle(S)),t.__dirty|=as,p&&t.dirtyStyle(!0)}},r.prototype.canBeInsideText=function(){return!0},r.prototype.getInsideTextFill=function(){return"#fff"},r.prototype.getInsideTextStroke=function(n){return"#000"},r.prototype.getOutsideFill=function(){return this.__zr&&this.__zr.isDarkMode()?mS:c0},r.prototype.getOutsideStroke=function(n){var t=this.__zr&&this.__zr.getBackgroundColor(),s="string"==typeof t&&$r(t);s||(s=[255,255,255,1]);for(var l=s[3],c=this.__zr.isDarkMode(),u=0;u<3;u++)s[u]=s[u]*l+(c?0:255)*(1-l);return s[3]=1,ss(s,"rgba")},r.prototype.traverse=function(n,t){},r.prototype.attrKV=function(n,t){"textConfig"===n?this.setTextConfig(t):"textContent"===n?this.setTextContent(t):"clipPath"===n?this.setClipPath(t):"extra"===n?(this.extra=this.extra||{},ge(this.extra,t)):this[n]=t},r.prototype.hide=function(){this.ignore=!0,this.markRedraw()},r.prototype.show=function(){this.ignore=!1,this.markRedraw()},r.prototype.attr=function(n,t){if("string"==typeof n)this.attrKV(n,t);else if(tt(n))for(var l=Ut(n),c=0;c0},r.prototype.getState=function(n){return this.states[n]},r.prototype.ensureState=function(n){var t=this.states;return t[n]||(t[n]={}),t[n]},r.prototype.clearStates=function(n){this.useState(_S,!1,n)},r.prototype.useState=function(n,t,s,l){var c=n===_S;if(this.hasState()||!c){var f=this.currentStates,p=this.stateTransition;if(!(Rt(f,n)>=0)||!t&&1!==f.length){var m;if(this.stateProxy&&!c&&(m=this.stateProxy(n)),m||(m=this.states&&this.states[n]),!m&&!c)return void Y1("State "+n+" not exists.");c||this.saveCurrentToNormalState(m);var g=!!(m&&m.hoverLayer||l);g&&this._toggleHoverLayerFlag(!0),this._applyStateObj(n,m,this._normalState,t,!s&&!this.__inHover&&p&&p.duration>0,p);var v=this._textContent,y=this._textGuide;return v&&v.useState(n,t,s,g),y&&y.useState(n,t,s,g),c?(this.currentStates=[],this._normalState={}):t?this.currentStates.push(n):this.currentStates=[n],this._updateAnimationTargets(),this.markRedraw(),!g&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~as),m}}},r.prototype.useStates=function(n,t,s){if(n.length){var l=[],c=this.currentStates,u=n.length,f=u===c.length;if(f)for(var p=0;p0,x);var C=this._textContent,S=this._textGuide;C&&C.useStates(n,t,y),S&&S.useStates(n,t,y),this._updateAnimationTargets(),this.currentStates=n.slice(),this.markRedraw(),!y&&this.__inHover&&(this._toggleHoverLayerFlag(!1),this.__dirty&=~as)}else this.clearStates()},r.prototype._updateAnimationTargets=function(){for(var n=0;n=0){var s=this.currentStates.slice();s.splice(t,1),this.useStates(s)}},r.prototype.replaceState=function(n,t,s){var l=this.currentStates.slice(),c=Rt(l,n),u=Rt(l,t)>=0;c>=0?u?l.splice(c,1):l[c]=t:s&&!u&&l.push(t),this.useStates(l)},r.prototype.toggleState=function(n,t){t?this.useState(n,!0):this.removeState(n)},r.prototype._mergeStates=function(n){for(var s,t={},l=0;l=0&&c.splice(u,1)}),this.animators.push(n),s&&s.animation.addAnimator(n),s&&s.wakeUp()},r.prototype.updateDuringAnimation=function(n){this.markRedraw()},r.prototype.stopAnimation=function(n,t){for(var s=this.animators,l=s.length,c=[],u=0;u0&&t.during&&c[0].during(function(x,C){t.during(C)});for(var y=0;y0||l.force&&!u.length){var L,H=void 0,G=void 0,j=void 0;if(f)for(G={},y&&(H={}),E=0;E=0&&(l.splice(c,0,t),this._doAdd(t))}return this},n.prototype.replace=function(t,s){var l=Rt(this._children,t);return l>=0&&this.replaceAt(s,l),this},n.prototype.replaceAt=function(t,s){var l=this._children,c=l[s];if(t&&t!==this&&t.parent!==this&&t!==c){l[s]=t,c.parent=null;var u=this.__zr;u&&c.removeSelfFromZr(u),this._doAdd(t)}return this},n.prototype._doAdd=function(t){t.parent&&t.parent.remove(t),t.parent=this;var s=this.__zr;s&&s!==t.__zr&&t.addSelfToZr(s),s&&s.refresh()},n.prototype.remove=function(t){var s=this.__zr,l=this._children,c=Rt(l,t);return c<0||(l.splice(c,1),t.parent=null,s&&t.removeSelfFromZr(s),s&&s.refresh()),this},n.prototype.removeAll=function(){for(var t=this._children,s=this.__zr,l=0;l0&&(this._stillFrameAccum++,this._stillFrameAccum>this._sleepAfterStill&&this.animation.stop())},r.prototype.setSleepAfterStill=function(n){this._sleepAfterStill=n},r.prototype.wakeUp=function(){this.animation.start(),this._stillFrameAccum=0},r.prototype.refreshHover=function(){this._needsRefreshHover=!0},r.prototype.refreshHoverImmediately=function(){this._needsRefreshHover=!1,this.painter.refreshHover&&"canvas"===this.painter.getType()&&this.painter.refreshHover()},r.prototype.resize=function(n){this.painter.resize((n=n||{}).width,n.height),this.handler.resize()},r.prototype.clearAnimation=function(){this.animation.clear()},r.prototype.getWidth=function(){return this.painter.getWidth()},r.prototype.getHeight=function(){return this.painter.getHeight()},r.prototype.setCursorStyle=function(n){this.handler.setCursorStyle(n)},r.prototype.findHover=function(n,t){return this.handler.findHover(n,t)},r.prototype.on=function(n,t,s){return this.handler.on(n,t,s),this},r.prototype.off=function(n,t){this.handler.off(n,t)},r.prototype.trigger=function(n,t){this.handler.trigger(n,t)},r.prototype.clear=function(){for(var n=this.storage.getRoots(),t=0;t0){if(r<=l)return u;if(r>=c)return f}else{if(r>=l)return u;if(r<=c)return f}else{if(r===l)return u;if(r===c)return f}return(r-l)/p*m+u}function Re(r,n){switch(r){case"center":case"middle":r="50%";break;case"left":case"top":r="0%";break;case"right":case"bottom":r="100%"}return Le(r)?function h0(r){return r.replace(/^\s+|\s+$/g,"")}(r).match(/%$/)?parseFloat(r)/100*n:parseFloat(r):null==r?NaN:+r}function zi(r,n,t){return null==n&&(n=10),n=Math.min(Math.max(0,n),wS),r=(+r).toFixed(n),t?r:+r}function So(r){return r.sort(function(n,t){return n-t}),r}function kl(r){if(r=+r,isNaN(r))return 0;if(r>1e-14)for(var n=1,t=0;t<15;t++,n*=10)if(Math.round(r*n)/n===r)return t;return oo(r)}function oo(r){var n=r.toString().toLowerCase(),t=n.indexOf("e"),s=t>0?+n.slice(t+1):0,l=t>0?t:n.length,c=n.indexOf(".");return Math.max(0,(c<0?0:l-1-c)-s)}function mv(r,n){var t=Math.log,s=Math.LN10,l=Math.floor(t(r[1]-r[0])/s),c=Math.round(t(Math.abs(n[1]-n[0]))/s),u=Math.min(Math.max(-l+c,0),20);return isFinite(u)?u:20}function kp(r,n,t){return r[n]&&b4(r,t)[n]||0}function b4(r,n){var t=vo(r,function(b,x){return b+(isNaN(x)?0:x)},0);if(0===t)return[];for(var s=Math.pow(10,n),l=xe(r,function(b){return(isNaN(b)?0:b)/t*s*100}),c=100*s,u=xe(l,function(b){return Math.floor(b)}),f=vo(u,function(b,x){return b+x},0),p=xe(l,function(b,x){return b-u[x]});fm&&(m=p[v],g=v);++u[g],p[g]=0,++f}return xe(u,function(b){return b/s})}function fP(r,n){var t=Math.max(kl(r),kl(n)),s=r+n;return t>wS?s:zi(s,t)}var xS=9007199254740991;function CS(r){var n=2*Math.PI;return(r%n+n)%n}function gv(r){return r>-Vd&&r=10&&n++,n}function Ip(r,n){var t=Ep(r),s=Math.pow(10,t),l=r/s;return r=(n?l<1.5?1:l<2.5?2:l<4?3:l<7?5:10:l<1?1:l<2?2:l<3?3:l<5?5:10)*s,t>=-20?+r.toFixed(t<0?-t:0):r}function xh(r,n){var t=(r.length-1)*n+1,s=Math.floor(t),l=+r[s-1],c=t-s;return c?l+c*(r[s]-l):l}function wa(r){r.sort(function(p,m){return f(p,m,0)?-1:1});for(var n=-1/0,t=1,s=0;s=0||c&&Rt(c,p)<0)){var m=s.getShallow(p,n);null!=m&&(u[r[f][0]]=m)}}return u}}var wv=Tc([["fill","color"],["shadowBlur"],["shadowOffsetX"],["shadowOffsetY"],["opacity"],["shadowColor"]]),xP=function(){function r(){}return r.prototype.getAreaStyle=function(n,t){return wv(this,n,t)},r}(),v0=new gh(50);function O4(r){if("string"==typeof r){var n=v0.get(r);return n&&n.image}return r}function _0(r,n,t,s,l){if(r){if("string"==typeof r){if(n&&n.__zrImageSrc===r||!t)return n;var c=v0.get(r),u={hostEl:t,cb:s,cbPayload:l};return c?!xv(n=c.image)&&c.pending.push(u):((n=gl.loadImage(r,CP,CP)).__zrImageSrc=r,v0.put(r,n.__cachedImgObj={image:n,pending:[u]})),n}return r}return n}function CP(){var r=this.__cachedImgObj;this.onload=this.onerror=this.__cachedImgObj=null;for(var n=0;n=u;p++)f-=u;var m=ba(t,n);return m>f&&(t="",m=0),f=r-m,l.ellipsis=t,l.ellipsisWidth=m,l.contentWidth=f,l.containerWidth=r,l}function DP(r,n){var t=n.containerWidth,s=n.font,l=n.contentWidth;if(!t)return"";var c=ba(r,s);if(c<=t)return r;for(var u=0;;u++){if(c<=l||u>=n.maxIterations){r+=n.ellipsis;break}var f=0===u?LS(r,l,n.ascCharWidth,n.cnCharWidth):c>0?Math.floor(r.length*l/c):0;c=ba(r=r.substr(0,f),s)}return""===r&&(r=n.placeholder),r}function LS(r,n,t,s){for(var l=0,c=0,u=r.length;c0&&x+s.accumWidth>s.width&&(g=n.split("\n"),m=!0),s.accumWidth=x}else{var C=y0(n,p,s.width,s.breakAll,s.accumWidth);s.accumWidth=C.accumWidth+b,v=C.linesWidths,g=C.lines}}else g=n.split("\n");for(var S=0;S=32&&n<=591||n>=880&&n<=4351||n>=4608&&n<=5119||n>=7680&&n<=8303}(r)||!!MP[r]}function y0(r,n,t,s,l){for(var c=[],u=[],f="",p="",m=0,g=0,v=0;vt:l+g+b>t)?g?(f||p)&&(x?(f||(f=p,p="",g=m=0),c.push(f),u.push(g-m),p+=y,f="",g=m+=b):(p&&(f+=p,p="",m=0),c.push(f),u.push(g),f=y,g=b)):x?(c.push(p),u.push(m),p=y,m=b):(c.push(y),u.push(b)):(g+=b,x?(p+=y,m+=b):(p&&(f+=p,p="",m=0),f+=y))}else p&&(f+=p,g+=m),c.push(f),u.push(g),f="",p="",m=0,g=0}return!c.length&&!f&&(f=r,p="",m=0),p&&(f+=p),f&&(c.push(f),u.push(g)),1===c.length&&(g+=l),{accumWidth:g,lines:c,linesWidths:u}}var b0="__zr_style_"+Math.round(10*Math.random()),Sh={shadowBlur:0,shadowOffsetX:0,shadowOffsetY:0,shadowColor:"#000",opacity:1,blend:"source-over"},Bp={style:{shadowBlur:!0,shadowOffsetX:!0,shadowOffsetY:!0,shadowColor:!0,opacity:!0}};Sh[b0]=!0;var TP=["z","z2","invisible"],B4=["invisible"],V4=function(r){function n(t){return r.call(this,t)||this}return Yn(n,r),n.prototype._init=function(t){for(var s=Ut(t),l=0;l1e-4)return f[0]=r-t,f[1]=n-s,p[0]=r+t,void(p[1]=n+s);if(Dv[0]=zS(l)*t+r,Dv[1]=Sv(l)*s+n,Mv[0]=zS(c)*t+r,Mv[1]=Sv(c)*s+n,m(f,Dv,Mv),g(p,Dv,Mv),(l%=Dh)<0&&(l+=Dh),(c%=Dh)<0&&(c+=Dh),l>c&&!u?c+=Dh:ll&&(El[0]=zS(b)*t+r,El[1]=Sv(b)*s+n,m(f,El,f),g(p,El,p))}var $n={M:1,L:2,C:3,Q:4,A:5,Z:6,R:7},zd=[],Ac=[],qs=[],Xs=[],Ao=[],Zs=[],Av=Math.min,kv=Math.max,kc=Math.cos,Ks=Math.sin,Ec=Math.abs,x0=Math.PI,Hd=2*x0,GS=typeof Float32Array<"u",Ev=[];function C0(r){return Math.round(r/x0*1e8)/1e8%2*x0}function US(r,n){var t=C0(r[0]);t<0&&(t+=Hd);var l=r[1];l+=t-r[0],!n&&l-t>=Hd?l=t+Hd:n&&t-l>=Hd?l=t-Hd:!n&&t>l?l=t+(Hd-C0(t-l)):n&&t0&&(this._ux=Ec(s/pS/n)||0,this._uy=Ec(s/pS/t)||0)},r.prototype.setDPR=function(n){this.dpr=n},r.prototype.setContext=function(n){this._ctx=n},r.prototype.getContext=function(){return this._ctx},r.prototype.beginPath=function(){return this._ctx&&this._ctx.beginPath(),this.reset(),this},r.prototype.reset=function(){this._saveData&&(this._len=0),this._pathSegLen&&(this._pathSegLen=null,this._pathLen=0),this._version++},r.prototype.moveTo=function(n,t){return this._drawPendingPt(),this.addData($n.M,n,t),this._ctx&&this._ctx.moveTo(n,t),this._x0=n,this._y0=t,this._xi=n,this._yi=t,this},r.prototype.lineTo=function(n,t){var s=Ec(n-this._xi),l=Ec(t-this._yi),c=s>this._ux||l>this._uy;if(this.addData($n.L,n,t),this._ctx&&c&&this._ctx.lineTo(n,t),c)this._xi=n,this._yi=t,this._pendingPtDist=0;else{var u=s*s+l*l;u>this._pendingPtDist&&(this._pendingPtX=n,this._pendingPtY=t,this._pendingPtDist=u)}return this},r.prototype.bezierCurveTo=function(n,t,s,l,c,u){return this._drawPendingPt(),this.addData($n.C,n,t,s,l,c,u),this._ctx&&this._ctx.bezierCurveTo(n,t,s,l,c,u),this._xi=c,this._yi=u,this},r.prototype.quadraticCurveTo=function(n,t,s,l){return this._drawPendingPt(),this.addData($n.Q,n,t,s,l),this._ctx&&this._ctx.quadraticCurveTo(n,t,s,l),this._xi=s,this._yi=l,this},r.prototype.arc=function(n,t,s,l,c,u){return this._drawPendingPt(),Ev[0]=l,Ev[1]=c,US(Ev,u),this.addData($n.A,n,t,s,s,l=Ev[0],(c=Ev[1])-l,0,u?0:1),this._ctx&&this._ctx.arc(n,t,s,l,c,u),this._xi=kc(c)*s+n,this._yi=Ks(c)*s+t,this},r.prototype.arcTo=function(n,t,s,l,c){return this._drawPendingPt(),this._ctx&&this._ctx.arcTo(n,t,s,l,c),this},r.prototype.rect=function(n,t,s,l){return this._drawPendingPt(),this._ctx&&this._ctx.rect(n,t,s,l),this.addData($n.R,n,t,s,l),this},r.prototype.closePath=function(){this._drawPendingPt(),this.addData($n.Z);var n=this._ctx,t=this._x0,s=this._y0;return n&&n.closePath(),this._xi=t,this._yi=s,this},r.prototype.fill=function(n){n&&n.fill(),this.toStatic()},r.prototype.stroke=function(n){n&&n.stroke(),this.toStatic()},r.prototype.len=function(){return this._len},r.prototype.setData=function(n){var t=n.length;(!this.data||this.data.length!==t)&&GS&&(this.data=new Float32Array(t));for(var s=0;sg.length&&(this._expandData(),g=this.data);for(var v=0;v0&&(this._ctx&&this._ctx.lineTo(this._pendingPtX,this._pendingPtY),this._pendingPtDist=0)},r.prototype._expandData=function(){if(!(this.data instanceof Array)){for(var n=[],t=0;t11&&(this.data=new Float32Array(n)))}},r.prototype.getBoundingRect=function(){qs[0]=qs[1]=Ao[0]=Ao[1]=Number.MAX_VALUE,Xs[0]=Xs[1]=Zs[0]=Zs[1]=-Number.MAX_VALUE;var u,n=this.data,t=0,s=0,l=0,c=0;for(u=0;us||Ec(A)>l||y===t-1)&&(C=Math.sqrt(T*T+A*A),c=S,u=M);break;case $n.C:var E=n[y++],L=n[y++],M=(S=n[y++],n[y++]),R=n[y++],V=n[y++];C=jq(c,u,E,L,S,M,R,V,10),c=R,u=V;break;case $n.Q:C=e4(c,u,E=n[y++],L=n[y++],S=n[y++],M=n[y++],10),c=S,u=M;break;case $n.A:var H=n[y++],G=n[y++],j=n[y++],$=n[y++],q=n[y++],K=n[y++],ee=K+q;y+=1,y++,x&&(f=kc(q)*j+H,p=Ks(q)*$+G),C=kv(j,$)*Av(Hd,Math.abs(K)),c=kc(ee)*j+H,u=Ks(ee)*$+G;break;case $n.R:f=c=n[y++],p=u=n[y++],C=2*n[y++]+2*n[y++];break;case $n.Z:var T=f-c;A=p-u,C=Math.sqrt(T*T+A*A),c=f,u=p}C>=0&&(m[v++]=C,g+=C)}return this._pathLen=g,g},r.prototype.rebuildPath=function(n,t){var f,p,m,g,v,y,x,T,E,L,s=this.data,l=this._ux,c=this._uy,u=this._len,b=t<1,S=0,M=0,A=0;if(!b||(this._pathSegLen||this._calculateLength(),x=this._pathSegLen,T=t*this._pathLen))e:for(var R=0;R0&&(n.lineTo(E,L),A=0),V){case $n.M:f=m=s[R++],p=g=s[R++],n.moveTo(m,g);break;case $n.L:v=s[R++],y=s[R++];var G=Ec(v-m),j=Ec(y-g);if(G>l||j>c){if(b){if(S+($=x[M++])>T){n.lineTo(m*(1-(q=(T-S)/$))+v*q,g*(1-q)+y*q);break e}S+=$}n.lineTo(v,y),m=v,g=y,A=0}else{var K=G*G+j*j;K>A&&(E=v,L=y,A=K)}break;case $n.C:var ee=s[R++],ne=s[R++],re=s[R++],ue=s[R++],ce=s[R++],ve=s[R++];if(b){if(S+($=x[M++])>T){mh(m,ee,re,ce,q=(T-S)/$,zd),mh(g,ne,ue,ve,q,Ac),n.bezierCurveTo(zd[1],Ac[1],zd[2],Ac[2],zd[3],Ac[3]);break e}S+=$}n.bezierCurveTo(ee,ne,re,ue,ce,ve),m=ce,g=ve;break;case $n.Q:if(ee=s[R++],ne=s[R++],re=s[R++],ue=s[R++],b){if(S+($=x[M++])>T){Wb(m,ee,re,q=(T-S)/$,zd),Wb(g,ne,ue,q,Ac),n.quadraticCurveTo(zd[1],Ac[1],zd[2],Ac[2]);break e}S+=$}n.quadraticCurveTo(ee,ne,re,ue),m=re,g=ue;break;case $n.A:var Te=s[R++],Oe=s[R++],je=s[R++],nt=s[R++],Ke=s[R++],Gt=s[R++],mn=s[R++],Pt=!s[R++],ot=je>nt?je:nt,Mt=Ec(je-nt)>.001,kt=Ke+Gt,We=!1;if(b&&(S+($=x[M++])>T&&(kt=Ke+Gt*(T-S)/$,We=!0),S+=$),Mt&&n.ellipse?n.ellipse(Te,Oe,je,nt,mn,Ke,kt,Pt):n.arc(Te,Oe,ot,Ke,kt,Pt),We)break e;H&&(f=kc(Ke)*je+Te,p=Ks(Ke)*nt+Oe),m=kc(kt)*je+Te,g=Ks(kt)*nt+Oe;break;case $n.R:f=m=s[R],p=g=s[R+1],v=s[R++],y=s[R++];var wt=s[R++],ai=s[R++];if(b){if(S+($=x[M++])>T){var sn=T-S;n.moveTo(v,y),n.lineTo(v+Av(sn,wt),y),(sn-=wt)>0&&n.lineTo(v+wt,y+Av(sn,ai)),(sn-=ai)>0&&n.lineTo(v+kv(wt-sn,0),y+ai),(sn-=wt)>0&&n.lineTo(v,y+kv(ai-sn,0));break e}S+=$}n.rect(v,y,wt,ai);break;case $n.Z:if(b){var $;if(S+($=x[M++])>T){var q;n.lineTo(m*(1-(q=(T-S)/$))+f*q,g*(1-q)+p*q);break e}S+=$}n.closePath(),m=f,g=p}}},r.prototype.clone=function(){var n=new r,t=this.data;return n.data=t.slice?t.slice():Array.prototype.slice.call(t),n._len=this._len,n},r.CMD=$n,r.initDefaultProps=function(){var n=r.prototype;n._saveData=!0,n._ux=0,n._uy=0,n._pendingPtDist=0,n._version=0}(),r}();const ds=S0;function ko(r,n,t,s,l,c,u){if(0===l)return!1;var p,f=l;if(u>n+f&&u>s+f||ur+f&&c>t+f||cn+v&&g>s+v&&g>c+v&&g>f+v||gr+v&&m>t+v&&m>l+v&&m>u+v||mn+m&&p>s+m&&p>c+m||pr+m&&f>t+m&&f>l+m||ft||g+ml&&(l+=Mh);var y=Math.atan2(p,f);return y<0&&(y+=Mh),y>=s&&y<=l||y+Mh>=s&&y+Mh<=l}function Il(r,n,t,s,l,c){if(c>n&&c>s||cl?f:0}var Qs=ds.CMD,Pc=2*Math.PI,IP=1e-4,Sa=[-1,-1,-1],Yr=[-1,-1];function W4(){var r=Yr[0];Yr[0]=Yr[1],Yr[1]=r}function Y4(r,n,t,s,l,c,u,f,p,m){if(m>n&&m>s&&m>c&&m>f||m1&&W4(),b=jr(n,s,c,f,Yr[0]),y>1&&(x=jr(n,s,c,f,Yr[1]))),v+=2===y?Sn&&f>s&&f>c||f=0&&m<=1&&(l[p++]=m);else{var g=u*u-4*c*f;if(ph(g))(m=-u/(2*c))>=0&&m<=1&&(l[p++]=m);else if(g>0){var m,v=Ur(g),y=(-u-v)/(2*c);(m=(-u+v)/(2*c))>=0&&m<=1&&(l[p++]=m),y>=0&&y<=1&&(l[p++]=y)}}return p}(n,s,c,f,Sa);if(0===p)return 0;var m=Jz(n,s,c);if(m>=0&&m<=1){for(var g=0,v=Er(n,s,c,m),y=0;yt||f<-t)return 0;var p=Math.sqrt(t*t-f*f);Sa[0]=-p,Sa[1]=p;var m=Math.abs(s-l);if(m<1e-4)return 0;if(m>=Pc-1e-4){s=0,l=Pc;var g=c?1:-1;return u>=Sa[0]+r&&u<=Sa[1]+r?g:0}if(s>l){var v=s;s=l,l=v}s<0&&(s+=Pc,l+=Pc);for(var y=0,b=0;b<2;b++){var x=Sa[b];if(x+r>u){var C=Math.atan2(f,x);g=c?1:-1,C<0&&(C=Pc+C),(C>=s&&C<=l||C+Pc>=s&&C+Pc<=l)&&(C>Math.PI/2&&C<1.5*Math.PI&&(g=-g),y+=g)}}return y}function RP(r,n,t,s,l){for(var y,b,c=r.data,u=r.len(),f=0,p=0,m=0,g=0,v=0,x=0;x1&&(t||(f+=Il(p,m,g,v,s,l))),S&&(g=p=c[x],v=m=c[x+1]),C){case Qs.M:p=g=c[x++],m=v=c[x++];break;case Qs.L:if(t){if(ko(p,m,c[x],c[x+1],n,s,l))return!0}else f+=Il(p,m,c[x],c[x+1],s,l)||0;p=c[x++],m=c[x++];break;case Qs.C:if(t){if(U4(p,m,c[x++],c[x++],c[x++],c[x++],c[x],c[x+1],n,s,l))return!0}else f+=Y4(p,m,c[x++],c[x++],c[x++],c[x++],c[x],c[x+1],s,l)||0;p=c[x++],m=c[x++];break;case Qs.Q:if(t){if(EP(p,m,c[x++],c[x++],c[x],c[x+1],n,s,l))return!0}else f+=q4(p,m,c[x++],c[x++],c[x],c[x+1],s,l)||0;p=c[x++],m=c[x++];break;case Qs.A:var M=c[x++],T=c[x++],A=c[x++],E=c[x++],L=c[x++],R=c[x++];x+=1;var V=!!(1-c[x++]);y=Math.cos(L)*A+M,b=Math.sin(L)*E+T,S?(g=y,v=b):f+=Il(p,m,y,b,s,l);var H=(s-M)*E/A+M;if(t){if($4(M,T,E,L,L+R,V,n,H,l))return!0}else f+=X4(M,T,E,L,L+R,V,H,l);p=Math.cos(L+R)*A+M,m=Math.sin(L+R)*E+T;break;case Qs.R:if(g=p=c[x++],v=m=c[x++],y=g+c[x++],b=v+c[x++],t){if(ko(g,v,y,v,n,s,l)||ko(y,v,y,b,n,s,l)||ko(y,b,g,b,n,s,l)||ko(g,b,g,v,n,s,l))return!0}else f+=Il(y,v,y,b,s,l),f+=Il(g,b,g,v,s,l);break;case Qs.Z:if(t){if(ko(p,m,g,v,n,s,l))return!0}else f+=Il(p,m,g,v,s,l);p=g,m=v}}return!t&&!function PP(r,n){return Math.abs(r-n).5?c0:s>.2?"#eee":mS}if(t)return mS}return c0},n.prototype.getInsideTextStroke=function(t){var s=this.style.fill;if(Le(s)){var l=this.__zr;if(!(!l||!l.isDarkMode())==Qg(t,0)<.4)return s}},n.prototype.buildPath=function(t,s,l){},n.prototype.pathUpdated=function(){this.__dirty&=~uh},n.prototype.getUpdatedPathProxy=function(t){return!this.path&&this.createPathProxy(),this.path.beginPath(),this.buildPath(this.path,this.shape,t),this.path},n.prototype.createPathProxy=function(){this.path=new ds(!1)},n.prototype.hasStroke=function(){var t=this.style,s=t.stroke;return!(null==s||"none"===s||!(t.lineWidth>0))},n.prototype.hasFill=function(){var s=this.style.fill;return null!=s&&"none"!==s},n.prototype.getBoundingRect=function(){var t=this._rect,s=this.style,l=!t;if(l){var c=!1;this.path||(c=!0,this.createPathProxy());var u=this.path;(c||this.__dirty&uh)&&(u.beginPath(),this.buildPath(u,this.shape,!1),this.pathUpdated()),t=u.getBoundingRect()}if(this._rect=t,this.hasStroke()&&this.path&&this.path.len()>0){var f=this._rectStroke||(this._rectStroke=t.clone());if(this.__dirty||l){f.copy(t);var p=s.strokeNoScale?this.getLineScale():1,m=s.lineWidth;this.hasFill()||(m=Math.max(m,this.strokeContainThreshold??4)),p>1e-10&&(f.width+=m/p,f.height+=m/p,f.x-=m/p/2,f.y-=m/p/2)}return f}return t},n.prototype.contain=function(t,s){var l=this.transformCoordToLocal(t,s),c=this.getBoundingRect(),u=this.style;if(c.contain(t=l[0],s=l[1])){var f=this.path;if(this.hasStroke()){var p=u.lineWidth,m=u.strokeNoScale?this.getLineScale():1;if(m>1e-10&&(this.hasFill()||(p=Math.max(p,this.strokeContainThreshold)),function Pl(r,n,t,s){return RP(r,n,!0,t,s)}(f,p/m,t,s)))return!0}if(this.hasFill())return function Eo(r,n,t){return RP(r,0,!1,n,t)}(f,t,s)}return!1},n.prototype.dirtyShape=function(){this.__dirty|=uh,this._rect&&(this._rect=null),this._decalEl&&this._decalEl.dirtyShape(),this.markRedraw()},n.prototype.dirty=function(){this.dirtyStyle(),this.dirtyShape()},n.prototype.animateShape=function(t){return this.animate("shape",t)},n.prototype.updateDuringAnimation=function(t){"style"===t?this.dirtyStyle():"shape"===t?this.dirtyShape():this.markRedraw()},n.prototype.attrKV=function(t,s){"shape"===t?this.setShape(s):r.prototype.attrKV.call(this,t,s)},n.prototype.setShape=function(t,s){var l=this.shape;return l||(l=this.shape={}),"string"==typeof t?l[t]=s:ge(l,t),this.dirtyShape(),this},n.prototype.shapeChanged=function(){return!!(this.__dirty&uh)},n.prototype.createStyle=function(t){return Wn(D0,t)},n.prototype._innerSaveToNormal=function(t){r.prototype._innerSaveToNormal.call(this,t);var s=this._normalState;t.shape&&!s.shape&&(s.shape=ge({},this.shape))},n.prototype._applyStateObj=function(t,s,l,c,u,f){r.prototype._applyStateObj.call(this,t,s,l,c,u,f);var m,p=!(s&&c);if(s&&s.shape?u?c?m=s.shape:(m=ge({},l.shape),ge(m,s.shape)):(m=ge({},c?this.shape:l.shape),ge(m,s.shape)):p&&(m=l.shape),m)if(u){this.shape=ge({},this.shape);for(var g={},v=Ut(m),y=0;y0},n.prototype.hasFill=function(){var s=this.style.fill;return null!=s&&"none"!==s},n.prototype.createStyle=function(t){return Wn(Q4,t)},n.prototype.setBoundingRect=function(t){this._rect=t},n.prototype.getBoundingRect=function(){var t=this.style;if(!this._rect){var s=t.text;null!=s?s+="":s="";var l=uv(s,t.font,t.textAlign,t.textBaseline);if(l.x+=t.x||0,l.y+=t.y||0,this.hasStroke()){var c=t.lineWidth;l.x-=c/2,l.y-=c/2,l.width+=c,l.height+=c}this._rect=l}return this._rect},n.initDefaultProps=void(n.prototype.dirtyRectTolerance=10),n}(To);$S.prototype.type="tspan";const Iv=$S;var J4=Je({x:0,y:0},Sh),eH={style:Je({x:!0,y:!0,width:!0,height:!0,sx:!0,sy:!0,sWidth:!0,sHeight:!0},Bp.style)},Pv=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return Yn(n,r),n.prototype.createStyle=function(t){return Wn(J4,t)},n.prototype._getSize=function(t){var s=this.style,l=s[t];if(null!=l)return l;var c=function tH(r){return!!(r&&"string"!=typeof r&&r.width&&r.height)}(s.image)?s.image:this.__image;if(!c)return 0;var u="width"===t?"height":"width",f=s[u];return null==f?c[t]:c[t]/c[u]*f},n.prototype.getWidth=function(){return this._getSize("width")},n.prototype.getHeight=function(){return this._getSize("height")},n.prototype.getAnimationStyleProps=function(){return eH},n.prototype.getBoundingRect=function(){var t=this.style;return this._rect||(this._rect=new yt(t.x||0,t.y||0,this.getWidth(),this.getHeight())),this._rect},n}(To);Pv.prototype.type="image";const _i=Pv;var Th=Math.round;function WS(r,n,t){if(n){var s=n.x1,l=n.x2,c=n.y1,u=n.y2;r.x1=s,r.x2=l,r.y1=c,r.y2=u;var f=t&&t.lineWidth;return f&&(Th(2*s)===Th(2*l)&&(r.x1=r.x2=Vp(s,f,!0)),Th(2*c)===Th(2*u)&&(r.y1=r.y2=Vp(c,f,!0))),r}}function YS(r,n,t){if(n){var s=n.x,l=n.y,c=n.width,u=n.height;r.x=s,r.y=l,r.width=c,r.height=u;var f=t&&t.lineWidth;return f&&(r.x=Vp(s,f,!0),r.y=Vp(l,f,!0),r.width=Math.max(Vp(s+c,f,!1)-r.x,0===c?0:1),r.height=Math.max(Vp(l+u,f,!1)-r.y,0===u?0:1)),r}}function Vp(r,n,t){if(!n)return r;var s=Th(2*r);return(s+Th(n))%2==0?s/2:(s+(t?1:-1))/2}var rX=function r(){this.x=0,this.y=0,this.width=0,this.height=0},aX={},M0=function(r){function n(t){return r.call(this,t)||this}return Yn(n,r),n.prototype.getDefaultShape=function(){return new rX},n.prototype.buildPath=function(t,s){var l,c,u,f;if(this.subPixelOptimize){var p=YS(aX,s,this.style);l=p.x,c=p.y,u=p.width,f=p.height,p.r=s.r,s=p}else l=s.x,c=s.y,u=s.width,f=s.height;s.r?function Rv(r,n){var f,p,m,g,v,t=n.x,s=n.y,l=n.width,c=n.height,u=n.r;l<0&&(t+=l,l=-l),c<0&&(s+=c,c=-c),"number"==typeof u?f=p=m=g=u:u instanceof Array?1===u.length?f=p=m=g=u[0]:2===u.length?(f=m=u[0],p=g=u[1]):3===u.length?(f=u[0],p=g=u[1],m=u[2]):(f=u[0],p=u[1],m=u[2],g=u[3]):f=p=m=g=0,f+p>l&&(f*=l/(v=f+p),p*=l/v),m+g>l&&(m*=l/(v=m+g),g*=l/v),p+m>c&&(p*=c/(v=p+m),m*=c/v),f+g>c&&(f*=c/(v=f+g),g*=c/v),r.moveTo(t+f,s),r.lineTo(t+l-p,s),0!==p&&r.arc(t+l-p,s+p,p,-Math.PI/2,0),r.lineTo(t+l,s+c-m),0!==m&&r.arc(t+l-m,s+c-m,m,0,Math.PI/2),r.lineTo(t+g,s+c),0!==g&&r.arc(t+g,s+c-g,g,Math.PI/2,Math.PI),r.lineTo(t,s+f),0!==f&&r.arc(t+f,s+f,f,Math.PI,1.5*Math.PI)}(t,s):t.rect(l,c,u,f)},n.prototype.isZeroArea=function(){return!this.shape.width||!this.shape.height},n}(Ht);M0.prototype.type="rect";const Zt=M0;var nH={fill:"#000"},OP={style:Je({fill:!0,stroke:!0,fillOpacity:!0,strokeOpacity:!0,lineWidth:!0,fontSize:!0,lineHeight:!0,width:!0,height:!0,textShadowColor:!0,textShadowBlur:!0,textShadowOffsetX:!0,textShadowOffsetY:!0,backgroundColor:!0,padding:!0,borderColor:!0,borderWidth:!0,borderRadius:!0},Bp.style)},LP=function(r){function n(t){var s=r.call(this)||this;return s.type="text",s._children=[],s._defaultStyle=nH,s.attr(t),s}return Yn(n,r),n.prototype.childrenRef=function(){return this._children},n.prototype.update=function(){r.prototype.update.call(this),this.styleChanged()&&this._updateSubTexts();for(var t=0;tb&&m){var x=Math.floor(b/f);v=v.slice(0,x)}if(r&&c&&null!=g)for(var C=SP(g,l,n.ellipsis,{minChar:n.truncateMinChar,placeholder:n.placeholder}),S=0;S0,q=null!=t.width&&("truncate"===t.overflow||"break"===t.overflow||"breakAll"===t.overflow),K=u.calculatedLineHeight,ee=0;eef&&Cv(t,r.substring(f,m),n,u),Cv(t,p[2],n,u,p[1]),f=RS.lastIndex}fl){L>0?(T.tokens=T.tokens.slice(0,L),S(T,E,A),t.lines=t.lines.slice(0,M+1)):t.lines=t.lines.slice(0,M);break e}var q=V.width,K=null==q||"auto"===q;if("string"==typeof q&&"%"===q.charAt(q.length-1))R.percentWidth=q,g.push(R),R.contentWidth=ba(R.text,j);else{if(K){var ee=V.backgroundColor,ne=ee&&ee.image;ne&&xv(ne=O4(ne))&&(R.width=Math.max(R.width,ne.width*$/ne.height))}var re=x&&null!=s?s-E:null;null!=re&&re=0&&"right"===(ee=R[K]).align;)this._placeToken(ee,t,H,M,q,"right",A),G-=ee.width,q-=ee.width,K--;for($+=(c-($-S)-(T-q)-G)/2;j<=K;)this._placeToken(ee=R[j],t,H,M,$+ee.width/2,"center",A),$+=ee.width,j++;M+=H}},n.prototype._placeToken=function(t,s,l,c,u,f,p){var m=s.rich[t.styleName]||{};m.text=t.text;var g=t.verticalAlign,v=c+l/2;"top"===g?v=c+t.height/2:"bottom"===g&&(v=c+l-t.height/2),!t.isLineHolder&&T0(m)&&this._renderBackground(m,s,"right"===f?u-t.width:"center"===f?u-t.width/2:u,v-t.height/2,t.width,t.height);var b=!!m.backgroundColor,x=t.textPadding;x&&(u=BP(u,f,x),v-=t.height/2-x[0]-t.innerHeight/2);var C=this._getOrCreateChild(Iv),S=C.createStyle();C.useStyle(S);var M=this._defaultStyle,T=!1,A=0,E=Rr("fill"in m?m.fill:"fill"in s?s.fill:(T=!0,M.fill)),L=Bn("stroke"in m?m.stroke:"stroke"in s?s.stroke:b||p||M.autoStroke&&!T?null:(A=2,M.stroke)),R=m.textShadowBlur>0||s.textShadowBlur>0;S.text=t.text,S.x=u,S.y=v,R&&(S.shadowBlur=m.textShadowBlur||s.textShadowBlur||0,S.shadowColor=m.textShadowColor||s.textShadowColor||"transparent",S.shadowOffsetX=m.textShadowOffsetX||s.textShadowOffsetX||0,S.shadowOffsetY=m.textShadowOffsetY||s.textShadowOffsetY||0),S.textAlign=f,S.textBaseline="middle",S.font=t.font||Qu,S.opacity=es(m.opacity,s.opacity,1),Ov(S,m),L&&(S.lineWidth=es(m.lineWidth,s.lineWidth,A),S.lineDash=Ct(m.lineDash,s.lineDash),S.lineDashOffset=s.lineDashOffset||0,S.stroke=L),E&&(S.fill=E);var V=t.contentWidth,H=t.contentHeight;C.setBoundingRect(new yt(Sp(S.x,V,S.textAlign),wh(S.y,H,S.textBaseline),V,H))},n.prototype._renderBackground=function(t,s,l,c,u,f){var C,S,T,p=t.backgroundColor,m=t.borderWidth,g=t.borderColor,v=p&&p.image,y=p&&!v,b=t.borderRadius,x=this;if(y||t.lineHeight||m&&g){(C=this._getOrCreateChild(Zt)).useStyle(C.createStyle()),C.style.fill=null;var M=C.shape;M.x=l,M.y=c,M.width=u,M.height=f,M.r=b,C.dirtyShape()}if(y)(T=C.style).fill=p||null,T.fillOpacity=Ct(t.fillOpacity,1);else if(v){(S=this._getOrCreateChild(_i)).onload=function(){x.dirtyStyle()};var A=S.style;A.image=p.image,A.x=l,A.y=c,A.width=u,A.height=f}m&&g&&((T=C.style).lineWidth=m,T.stroke=g,T.strokeOpacity=Ct(t.strokeOpacity,1),T.lineDash=t.borderDash,T.lineDashOffset=t.borderDashOffset||0,C.strokeContainThreshold=0,C.hasFill()&&C.hasStroke()&&(T.strokeFirst=!0,T.lineWidth*=2));var E=(C||S).style;E.shadowBlur=t.shadowBlur||0,E.shadowColor=t.shadowColor||"transparent",E.shadowOffsetX=t.shadowOffsetX||0,E.shadowOffsetY=t.shadowOffsetY||0,E.opacity=es(t.opacity,s.opacity,1)},n.makeFont=function(t){var s="";return XS(t)&&(s=[t.fontStyle,t.fontWeight,qS(t.fontSize),t.fontFamily||"sans-serif"].join(" ")),s&&yo(s)||t.textFont||t.font},n}(To),rH={left:!0,right:1,center:1},aH={top:1,bottom:1,middle:1},FP=["fontStyle","fontWeight","fontSize","fontFamily"];function qS(r){return"string"!=typeof r||-1===r.indexOf("px")&&-1===r.indexOf("rem")&&-1===r.indexOf("em")?isNaN(+r)?vt+"px":r+"px":r}function Ov(r,n){for(var t=0;t=0,c=!1;if(r instanceof Ht){var u=oH(r),f=l&&u.selectFill||u.normalFill,p=l&&u.selectStroke||u.normalStroke;if(Gp(f)||Gp(p)){var m=(s=s||{}).style||{};"inherit"===m.fill?(c=!0,s=ge({},s),(m=ge({},m)).fill=f):!Gp(m.fill)&&Gp(f)?(c=!0,s=ge({},s),(m=ge({},m)).fill=eD(f)):!Gp(m.stroke)&&Gp(p)&&(c||(s=ge({},s),m=ge({},m)),m.stroke=eD(p)),s.style=m}}return s&&null==s.z2&&(c||(s=ge({},s)),s.z2=r.z2+(r.z2EmphasisLift??Hp)),s}(this,0,n,t);if("blur"===r)return function Up(r,n,t){var s=Rt(r.currentStates,n)>=0,l=r.style.opacity,c=s?null:function cH(r,n,t,s){for(var l=r.style,c={},u=0;u0){var p={dataIndex:f,seriesIndex:t.seriesIndex};null!=u&&(p.dataType=u),n.push(p)}})}),n}function Ll(r,n,t){Rh(r,!0),qr(r,Ih),Gv(r,n,t)}function Pi(r,n,t,s){s?function iD(r){Rh(r,!1)}(r):Ll(r,n,t)}function Gv(r,n,t){var s=mt(r);null!=n?(s.focus=n,s.blurScope=t):s.focus&&(s.focus=null)}var Fl=["emphasis","blur","select"],gH={itemStyle:"getItemStyle",lineStyle:"getLineStyle",areaStyle:"getAreaStyle"};function oa(r,n,t,s){t=t||"itemStyle";for(var l=0;l0){var x={duration:g.duration,delay:g.delay||0,easing:g.easing,done:c,force:!!c||!!u,setToFinal:!m,scope:r,during:u};f?n.animateFrom(t,x):n.animateTo(t,x)}else n.stopAnimation(),!f&&n.attr(t),u&&u(1),c&&c()}function fn(r,n,t,s,l,c){ZP("update",r,n,t,s,l,c)}function ni(r,n,t,s,l,c){ZP("enter",r,n,t,s,l,c)}function jv(r){if(!r.__zr)return!0;for(var n=0;n-1?O0:Yv;function L0(r,n){r=r.toUpperCase(),$p[r]=new In(n),qv[r]=n}function uD(r){return $p[r]}L0(qd,{time:{month:["January","February","March","April","May","June","July","August","September","October","November","December"],monthAbbr:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayOfWeek:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayOfWeekAbbr:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"]},legend:{selector:{all:"All",inverse:"Inv"}},toolbox:{brush:{title:{rect:"Box Select",polygon:"Lasso Select",lineX:"Horizontally Select",lineY:"Vertically Select",keep:"Keep Selections",clear:"Clear Selections"}},dataView:{title:"Data View",lang:["Data View","Close","Refresh"]},dataZoom:{title:{zoom:"Zoom",back:"Zoom Reset"}},magicType:{title:{line:"Switch to Line Chart",bar:"Switch to Bar Chart",stack:"Stack",tiled:"Tile"}},restore:{title:"Restore"},saveAsImage:{title:"Save as Image",lang:["Right Click to Save Image"]}},series:{typeNames:{pie:"Pie chart",bar:"Bar chart",line:"Line chart",scatter:"Scatter plot",effectScatter:"Ripple scatter plot",radar:"Radar chart",tree:"Tree",treemap:"Treemap",boxplot:"Boxplot",candlestick:"Candlestick",k:"K line chart",heatmap:"Heat map",map:"Map",parallel:"Parallel coordinate map",lines:"Line graph",graph:"Relationship graph",sankey:"Sankey diagram",funnel:"Funnel chart",gauge:"Gauge",pictorialBar:"Pictorial bar",themeRiver:"Theme River Map",sunburst:"Sunburst"}},aria:{general:{withTitle:'This is a chart about "{title}"',withoutTitle:"This is a chart"},series:{single:{prefix:"",withName:" with type {seriesType} named {seriesName}.",withoutName:" with type {seriesType}."},multiple:{prefix:". It consists of {seriesCount} series count.",withName:" The {seriesId} series is a {seriesType} representing {seriesName}.",withoutName:" The {seriesId} series is a {seriesType}.",separator:{middle:"",end:""}}},data:{allData:"The data is as follows: ",partialData:"The first {displayCnt} items are: ",withName:"the data for {name} is {value}",withoutName:"{value}",separator:{middle:", ",end:". "}}}}),L0(O0,{time:{month:["\u4e00\u6708","\u4e8c\u6708","\u4e09\u6708","\u56db\u6708","\u4e94\u6708","\u516d\u6708","\u4e03\u6708","\u516b\u6708","\u4e5d\u6708","\u5341\u6708","\u5341\u4e00\u6708","\u5341\u4e8c\u6708"],monthAbbr:["1\u6708","2\u6708","3\u6708","4\u6708","5\u6708","6\u6708","7\u6708","8\u6708","9\u6708","10\u6708","11\u6708","12\u6708"],dayOfWeek:["\u661f\u671f\u65e5","\u661f\u671f\u4e00","\u661f\u671f\u4e8c","\u661f\u671f\u4e09","\u661f\u671f\u56db","\u661f\u671f\u4e94","\u661f\u671f\u516d"],dayOfWeekAbbr:["\u65e5","\u4e00","\u4e8c","\u4e09","\u56db","\u4e94","\u516d"]},legend:{selector:{all:"\u5168\u9009",inverse:"\u53cd\u9009"}},toolbox:{brush:{title:{rect:"\u77e9\u5f62\u9009\u62e9",polygon:"\u5708\u9009",lineX:"\u6a2a\u5411\u9009\u62e9",lineY:"\u7eb5\u5411\u9009\u62e9",keep:"\u4fdd\u6301\u9009\u62e9",clear:"\u6e05\u9664\u9009\u62e9"}},dataView:{title:"\u6570\u636e\u89c6\u56fe",lang:["\u6570\u636e\u89c6\u56fe","\u5173\u95ed","\u5237\u65b0"]},dataZoom:{title:{zoom:"\u533a\u57df\u7f29\u653e",back:"\u533a\u57df\u7f29\u653e\u8fd8\u539f"}},magicType:{title:{line:"\u5207\u6362\u4e3a\u6298\u7ebf\u56fe",bar:"\u5207\u6362\u4e3a\u67f1\u72b6\u56fe",stack:"\u5207\u6362\u4e3a\u5806\u53e0",tiled:"\u5207\u6362\u4e3a\u5e73\u94fa"}},restore:{title:"\u8fd8\u539f"},saveAsImage:{title:"\u4fdd\u5b58\u4e3a\u56fe\u7247",lang:["\u53f3\u952e\u53e6\u5b58\u4e3a\u56fe\u7247"]}},series:{typeNames:{pie:"\u997c\u56fe",bar:"\u67f1\u72b6\u56fe",line:"\u6298\u7ebf\u56fe",scatter:"\u6563\u70b9\u56fe",effectScatter:"\u6d9f\u6f2a\u6563\u70b9\u56fe",radar:"\u96f7\u8fbe\u56fe",tree:"\u6811\u56fe",treemap:"\u77e9\u5f62\u6811\u56fe",boxplot:"\u7bb1\u578b\u56fe",candlestick:"K\u7ebf\u56fe",k:"K\u7ebf\u56fe",heatmap:"\u70ed\u529b\u56fe",map:"\u5730\u56fe",parallel:"\u5e73\u884c\u5750\u6807\u56fe",lines:"\u7ebf\u56fe",graph:"\u5173\u7cfb\u56fe",sankey:"\u6851\u57fa\u56fe",funnel:"\u6f0f\u6597\u56fe",gauge:"\u4eea\u8868\u76d8\u56fe",pictorialBar:"\u8c61\u5f62\u67f1\u56fe",themeRiver:"\u4e3b\u9898\u6cb3\u6d41\u56fe",sunburst:"\u65ed\u65e5\u56fe"}},aria:{general:{withTitle:"\u8fd9\u662f\u4e00\u4e2a\u5173\u4e8e\u201c{title}\u201d\u7684\u56fe\u8868\u3002",withoutTitle:"\u8fd9\u662f\u4e00\u4e2a\u56fe\u8868\uff0c"},series:{single:{prefix:"",withName:"\u56fe\u8868\u7c7b\u578b\u662f{seriesType}\uff0c\u8868\u793a{seriesName}\u3002",withoutName:"\u56fe\u8868\u7c7b\u578b\u662f{seriesType}\u3002"},multiple:{prefix:"\u5b83\u7531{seriesCount}\u4e2a\u56fe\u8868\u7cfb\u5217\u7ec4\u6210\u3002",withName:"\u7b2c{seriesId}\u4e2a\u7cfb\u5217\u662f\u4e00\u4e2a\u8868\u793a{seriesName}\u7684{seriesType}\uff0c",withoutName:"\u7b2c{seriesId}\u4e2a\u7cfb\u5217\u662f\u4e00\u4e2a{seriesType}\uff0c",separator:{middle:"\uff1b",end:"\u3002"}}},data:{allData:"\u5176\u6570\u636e\u662f\u2014\u2014",partialData:"\u5176\u4e2d\uff0c\u524d{displayCnt}\u9879\u662f\u2014\u2014",withName:"{name}\u7684\u6570\u636e\u662f{value}",withoutName:"{value}",separator:{middle:"\uff0c",end:""}}}});var hD=1e3,fD=60*hD,Wp=60*fD,fs=24*Wp,pD=365*fs,Yp={year:"{yyyy}",month:"{MMM}",day:"{d}",hour:"{HH}:{mm}",minute:"{HH}:{mm}",second:"{HH}:{mm}:{ss}",millisecond:"{HH}:{mm}:{ss} {SSS}",none:"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss} {SSS}"},qp="{yyyy}-{MM}-{dd}",DH={year:"{yyyy}",month:"{yyyy}-{MM}",day:qp,hour:qp+" "+Yp.hour,minute:qp+" "+Yp.minute,second:qp+" "+Yp.second,millisecond:Yp.none},Xv=["year","month","day","hour","minute","second","millisecond"],sR=["year","half-year","quarter","month","week","half-week","day","half-day","quarter-day","hour","minute","second","millisecond"];function Io(r,n){return"0000".substr(0,n-(r+="").length)+r}function F(r){switch(r){case"half-year":case"quarter":return"month";case"week":case"half-week":return"day";case"half-day":case"quarter-day":return"hour";default:return r}}function Js(r){return r===F(r)}function Xp(r,n,t,s){var l=Do(r),c=l[Xd(t)](),u=l[Zd(t)]()+1,f=Math.floor((u-1)/3)+1,p=l[Kd(t)](),m=l["get"+(t?"UTC":"")+"Day"](),g=l[Fh(t)](),v=(g-1)%12+1,y=l[Nh(t)](),b=l[Kv(t)](),x=l[Zp(t)](),S=(s instanceof In?s:uD(s||oR)||function SH(){return $p[Yv]}()).getModel("time"),M=S.get("month"),T=S.get("monthAbbr"),A=S.get("dayOfWeek"),E=S.get("dayOfWeekAbbr");return(n||"").replace(/{yyyy}/g,c+"").replace(/{yy}/g,c%100+"").replace(/{Q}/g,f+"").replace(/{MMMM}/g,M[u-1]).replace(/{MMM}/g,T[u-1]).replace(/{MM}/g,Io(u,2)).replace(/{M}/g,u+"").replace(/{dd}/g,Io(p,2)).replace(/{d}/g,p+"").replace(/{eeee}/g,A[m]).replace(/{ee}/g,E[m]).replace(/{e}/g,m+"").replace(/{HH}/g,Io(g,2)).replace(/{H}/g,g+"").replace(/{hh}/g,Io(v+"",2)).replace(/{h}/g,v+"").replace(/{mm}/g,Io(y,2)).replace(/{m}/g,y+"").replace(/{ss}/g,Io(b,2)).replace(/{s}/g,b+"").replace(/{SSS}/g,Io(x,3)).replace(/{S}/g,x+"")}function lR(r,n){var t=Do(r),s=t[Zd(n)]()+1,l=t[Kd(n)](),c=t[Fh(n)](),u=t[Nh(n)](),f=t[Kv(n)](),m=0===t[Zp(n)](),g=m&&0===f,v=g&&0===u,y=v&&0===c,b=y&&1===l;return b&&1===s?"year":b?"month":y?"day":v?"hour":g?"minute":m?"second":"millisecond"}function Zv(r,n,t){var s=rn(r)?Do(r):r;switch(n=n||lR(r,t)){case"year":return s[Xd(t)]();case"half-year":return s[Zd(t)]()>=6?1:0;case"quarter":return Math.floor((s[Zd(t)]()+1)/4);case"month":return s[Zd(t)]();case"day":return s[Kd(t)]();case"half-day":return s[Fh(t)]()/24;case"hour":return s[Fh(t)]();case"minute":return s[Nh(t)]();case"second":return s[Kv(t)]();case"millisecond":return s[Zp(t)]()}}function Xd(r){return r?"getUTCFullYear":"getFullYear"}function Zd(r){return r?"getUTCMonth":"getMonth"}function Kd(r){return r?"getUTCDate":"getDate"}function Fh(r){return r?"getUTCHours":"getHours"}function Nh(r){return r?"getUTCMinutes":"getMinutes"}function Kv(r){return r?"getUTCSeconds":"getSeconds"}function Zp(r){return r?"getUTCMilliseconds":"getMilliseconds"}function mD(r){return r?"setUTCFullYear":"setFullYear"}function F0(r){return r?"setUTCMonth":"setMonth"}function gD(r){return r?"setUTCDate":"setDate"}function N0(r){return r?"setUTCHours":"setHours"}function cR(r){return r?"setUTCMinutes":"setMinutes"}function dR(r){return r?"setUTCSeconds":"setSeconds"}function vD(r){return r?"setUTCMilliseconds":"setMilliseconds"}function _D(r){if(!Mo(r))return Le(r)?r:"-";var n=(r+"").split(".");return n[0].replace(/(\d{1,3})(?=(?:\d{3})+(?!\d))/g,"$1,")+(n.length>1?"."+n[1]:"")}function B0(r,n){return r=(r||"").toLowerCase().replace(/-(.)/g,function(t,s){return s.toUpperCase()}),n&&r&&(r=r.charAt(0).toUpperCase()+r.slice(1)),r}var Qd=Ad;function yD(r,n,t){function l(g){return g&&yo(g)?g:"-"}function c(g){return!(null==g||isNaN(g)||!isFinite(g))}var u="time"===n,f=r instanceof Date;if(u||f){var p=u?Do(r):r;if(!isNaN(+p))return Xp(p,"{yyyy}-{MM}-{dd} {HH}:{mm}:{ss}",t);if(f)return"-"}if("ordinal"===n)return Ob(r)?l(r):rn(r)&&c(r)?r+"":"-";var m=Ws(r);return c(m)?_D(m):Ob(r)?l(r):"boolean"==typeof r?r+"":"-"}var uR=["a","b","c","d","e","f","g"],ja=function(r,n){return"{"+r+(n??"")+"}"};function bD(r,n,t){ye(n)||(n=[n]);var s=n.length;if(!s)return"";for(var l=n[0].$vars||[],c=0;c':'':{renderMode:c,content:"{"+(t.markerId||"markerX")+"|} ",style:"subItem"===l?{width:4,height:4,borderRadius:2,backgroundColor:s}:{width:10,height:10,borderRadius:5,backgroundColor:s}}:""}function wD(r,n,t){("week"===r||"month"===r||"quarter"===r||"half-year"===r||"year"===r)&&(r="MM-dd\nyyyy");var s=Do(n),l=t?"getUTC":"get",c=s[l+"FullYear"](),u=s[l+"Month"]()+1,f=s[l+"Date"](),p=s[l+"Hours"](),m=s[l+"Minutes"](),g=s[l+"Seconds"](),v=s[l+"Milliseconds"]();return r.replace("MM",Io(u,2)).replace("M",u).replace("yyyy",c).replace("yy",Io(c%100+"",2)).replace("dd",Io(f,2)).replace("d",f).replace("hh",Io(p,2)).replace("h",p).replace("mm",Io(m,2)).replace("m",m).replace("ss",Io(g,2)).replace("s",g).replace("SSS",Io(v,3))}function hR(r){return r&&r.charAt(0).toUpperCase()+r.substr(1)}function Bh(r,n){return n=n||"transparent",Le(r)?r:tt(r)&&r.colorStops&&(r.colorStops[0]||{}).color||n}function V0(r,n){if("_blank"===n||"blank"===n){var t=window.open();t.opener=null,t.location.href=r}else window.open(r,n)}var z0=U,xD=["left","right","top","bottom","width","height"],Vh=[["width","left","right"],["height","top","bottom"]];function CD(r,n,t,s,l){var c=0,u=0;null==s&&(s=1/0),null==l&&(l=1/0);var f=0;n.eachChild(function(p,m){var b,x,g=p.getBoundingRect(),v=n.childAt(m+1),y=v&&v.getBoundingRect();if("horizontal"===r){var C=g.width+(y?-y.x+g.x:0);(b=c+C)>s||p.newline?(c=0,b=C,u+=f+t,f=g.height):f=Math.max(f,g.height)}else{var S=g.height+(y?-y.y+g.y:0);(x=u+S)>l||p.newline?(c+=f+t,u=0,x=S,f=g.width):f=Math.max(f,g.width)}p.newline||(p.x=c,p.y=u,p.markRedraw(),"horizontal"===r?c=b+t:u=x+t)})}var Bc=CD;function dr(r,n,t){t=Qd(t||0);var s=n.width,l=n.height,c=Re(r.left,s),u=Re(r.top,l),f=Re(r.right,s),p=Re(r.bottom,l),m=Re(r.width,s),g=Re(r.height,l),v=t[2]+t[0],y=t[1]+t[3],b=r.aspect;switch(isNaN(m)&&(m=s-f-y-c),isNaN(g)&&(g=l-p-v-u),null!=b&&(isNaN(m)&&isNaN(g)&&(b>s/l?m=.8*s:g=.8*l),isNaN(m)&&(m=b*g),isNaN(g)&&(g=m/b)),isNaN(c)&&(c=s-f-m-y),isNaN(u)&&(u=l-p-g-v),r.left||r.right){case"center":c=s/2-m/2-t[3];break;case"right":c=s-m-y}switch(r.top||r.bottom){case"middle":case"center":u=l/2-g/2-t[0];break;case"bottom":u=l-g-v}c=c||0,u=u||0,isNaN(m)&&(m=s-y-c-(f||0)),isNaN(g)&&(g=l-v-u-(p||0));var x=new yt(c+t[3],u+t[0],m,g);return x.margin=t,x}function H0(r,n,t,s,l,c){var m,u=!l||!l.hv||l.hv[0],f=!l||!l.hv||l.hv[1],p=l&&l.boundingMode||"all";if((c=c||r).x=r.x,c.y=r.y,!u&&!f)return!1;if("raw"===p)m="group"===r.type?new yt(0,0,+n.width||0,+n.height||0):r.getBoundingRect();else if(m=r.getBoundingRect(),r.needLocalTransform()){var g=r.getLocalTransform();(m=m.clone()).applyTransform(g)}var v=dr(Je({width:m.width,height:m.height},n),t,s),y=u?v.x-m.x:0,b=f?v.y-m.y:0;return"raw"===p?(c.x=y,c.y=b):(c.x+=y,c.y+=b),c===r&&r.markRedraw(),!0}function zh(r){var n=r.layoutMode||r.constructor.layoutMode;return tt(n)?n:n?{type:n}:null}function Jd(r,n,t){var s=t&&t.ignoreSize;!ye(s)&&(s=[s,s]);var l=u(Vh[0],0),c=u(Vh[1],1);function u(g,v){var y={},b=0,x={},C=0;if(z0(g,function(A){x[A]=r[A]}),z0(g,function(A){f(n,A)&&(y[A]=x[A]=n[A]),p(y,A)&&b++,p(x,A)&&C++}),s[v])return p(n,g[1])?x[g[2]]=null:p(n,g[2])&&(x[g[1]]=null),x;if(2===C||!b)return x;if(b>=2)return y;for(var M=0;M=0;p--)f=At(f,l[p],!0);s.defaultOption=f}return s.defaultOption},n.prototype.getReferringComponents=function(t,s){var c=t+"Id";return Lp(this.ecModel,t,{index:this.get(t+"Index",!0),id:this.get(c,!0)},s)},n.prototype.getBoxLayoutParams=function(){var t=this;return{left:t.get("left"),top:t.get("top"),right:t.get("right"),bottom:t.get("bottom"),width:t.get("width"),height:t.get("height")}},n.prototype.getZLevelKey=function(){return""},n.prototype.setZLevel=function(t){this.option.zlevel=t},n.protoInitialize=((t=n.prototype).type="component",t.id="",t.name="",t.mainType="",t.subType="",void(t.componentIndex=0)),n;var t}(In);IS(Qp,In),bv(Qp),function sX(r){var n={};r.registerSubTypeDefaulter=function(t,s){var l=Ys(t);n[l.main]=s},r.determineSubType=function(t,s){var l=s.type;if(!l){var c=Ys(t).main;r.hasSubTypes(t)&&n[c]&&(l=n[c](s))}return l}}(Qp),function lX(r,n){function s(c,u){return c[u]||(c[u]={predecessor:[],successor:[]}),c[u]}r.topologicalTravel=function(c,u,f,p){if(c.length){var m=function t(c){var u={},f=[];return U(c,function(p){var m=s(u,p),v=function l(c,u){var f=[];return U(c,function(p){Rt(u,p)>=0&&f.push(p)}),f}(m.originalDeps=n(p),c);m.entryCount=v.length,0===m.entryCount&&f.push(p),U(v,function(y){Rt(m.predecessor,y)<0&&m.predecessor.push(y);var b=s(u,y);Rt(b.successor,y)<0&&b.successor.push(p)})}),{graph:u,noEntryList:f}}(u),g=m.graph,v=m.noEntryList,y={};for(U(c,function(T){y[T]=!0});v.length;){var b=v.pop(),x=g[b],C=!!y[b];C&&(f.call(p,b,x.originalDeps.slice()),delete y[b]),U(x.successor,C?M:S)}U(y,function(){throw new Error("")})}function S(T){g[T].entryCount--,0===g[T].entryCount&&v.push(T)}function M(T){y[T]=!0,S(T)}}}(Qp,function PH(r){var n=[];return U(Qp.getClassesByMainType(r),function(t){n=n.concat(t.dependencies||t.prototype.dependencies||[])}),n=xe(n,function(t){return Ys(t).main}),"dataset"!==r&&Rt(n,"dataset")<=0&&n.unshift("dataset"),n});const qt=Qp;var fR="";typeof navigator<"u"&&(fR=navigator.platform||"");var Jp="rgba(0, 0, 0, 0.2)";const G0={darkMode:"auto",colorBy:"series",color:["#5470c6","#91cc75","#fac858","#ee6666","#73c0de","#3ba272","#fc8452","#9a60b4","#ea7ccc"],gradientColor:["#f6efa6","#d88273","#bf444c"],aria:{decal:{decals:[{color:Jp,dashArrayX:[1,0],dashArrayY:[2,5],symbolSize:1,rotation:Math.PI/6},{color:Jp,symbol:"circle",dashArrayX:[[8,8],[0,8,8,0]],dashArrayY:[6,0],symbolSize:.8},{color:Jp,dashArrayX:[1,0],dashArrayY:[4,3],rotation:-Math.PI/4},{color:Jp,dashArrayX:[[6,6],[0,6,6,0]],dashArrayY:[6,0]},{color:Jp,dashArrayX:[[1,0],[1,6]],dashArrayY:[1,0,6,0],rotation:Math.PI/4},{color:Jp,symbol:"triangle",dashArrayX:[[9,9],[0,9,9,0]],dashArrayY:[7,2],symbolSize:.75}]}},textStyle:{fontFamily:fR.match(/^Win/)?"Microsoft YaHei":"sans-serif",fontSize:12,fontStyle:"normal",fontWeight:"normal"},blendMode:null,stateAnimation:{duration:300,easing:"cubicOut"},animation:"auto",animationDuration:1e3,animationDurationUpdate:500,animationEasing:"cubicInOut",animationEasingUpdate:"cubicInOut",animationThreshold:2e3,progressiveThreshold:3e3,progressive:400,hoverLayerThreshold:3e3,useUTC:!1};var Qv=Ye(["tooltip","label","itemName","itemId","itemGroupId","seriesName"]),$a="original",Wa="arrayRows",lo="objectRows",Vc="keyedColumns",Bl="typedArray",DD="unknown",el="column",Hh="row",Lr={Must:1,Might:2,Not:3},Vl=un();function Jv(r,n,t){var s={},l=MD(n);if(!l||!r)return s;var g,v,c=[],u=[],p=Vl(n.ecModel).datasetMap,m=l.uid+"_"+t.seriesLayoutBy;U(r=r.slice(),function(C,S){var M=tt(C)?C:r[S]={name:C};"ordinal"===M.type&&null==g&&(g=S,v=x(M)),s[M.name]=[]});var y=p.get(m)||p.set(m,{categoryWayDim:v,valueWayDim:0});function b(C,S,M){for(var T=0;Tn)return r[s];return r[t-1]}(s,u):t;if((g=g||t)&&g.length){var v=g[p];return l&&(m[l]=v),f.paletteIdx=(p+1)%g.length,v}}var j0,em,Se,vR="\0_ec_inner",yR=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.init=function(t,s,l,c,u,f){c=c||{},this.option=null,this._theme=new In(c),this._locale=new In(u),this._optionManager=f},n.prototype.setOption=function(t,s,l){var c=bR(s);this._optionManager.setOption(t,l,c),this._resetOption(null,c)},n.prototype.resetOption=function(t,s){return this._resetOption(t,bR(s))},n.prototype._resetOption=function(t,s){var l=!1,c=this._optionManager;if(!t||"recreate"===t){var u=c.mountOption("recreate"===t);this.option&&"recreate"!==t?(this.restoreData(),this._mergeOption(u,s)):Se(this,u),l=!0}if(("timeline"===t||"media"===t)&&this.restoreData(),!t||"recreate"===t||"timeline"===t){var f=c.getTimelineOption(this);f&&(l=!0,this._mergeOption(f,s))}if(!t||"recreate"===t||"media"===t){var p=c.getMediaOption(this);p.length&&U(p,function(m){l=!0,this._mergeOption(m,s)},this)}return l},n.prototype.mergeOption=function(t){this._mergeOption(t,null)},n.prototype._mergeOption=function(t,s){var l=this.option,c=this._componentsMap,u=this._componentsCount,f=[],p=Ye(),m=s&&s.replaceMergeMainTypeMap;(function U0(r){Vl(r).datasetMap=Ye()})(this),U(t,function(v,y){null!=v&&(qt.hasClass(y)?y&&(f.push(y),p.set(y,!0)):l[y]=null==l[y]?rt(v):At(l[y],v,!0))}),m&&m.each(function(v,y){qt.hasClass(y)&&!p.get(y)&&(f.push(y),p.set(y,!0))}),qt.topologicalTravel(f,qt.getAllClassMainTypes(),function g(v){var y=function RH(r,n,t){var s=AD.get(n);if(!s)return t;var l=s(r);return l?t.concat(l):t}(this,v,Nn(t[v])),b=c.get(v),C=MS(b,y,b?m&&m.get(v)?"replaceMerge":"normalMerge":"replaceAll");(function AS(r,n,t){U(r,function(s){var l=s.newOption;tt(l)&&(s.keyInfo.mainType=n,s.keyInfo.subType=function tX(r,n,t,s){return n.type?n.type:t?t.subType:s.determineSubType(r,n)}(n,l,s.existing,t))})})(C,v,qt),l[v]=null,c.set(v,null),u.set(v,0);var A,S=[],M=[],T=0;U(C,function(L,R){var V=L.existing,H=L.newOption;if(H){var j=qt.getClass(v,L.keyInfo.subType,!("series"===v));if(!j)return;if("tooltip"===v){if(A)return;A=!0}if(V&&V.constructor===j)V.name=L.keyInfo.name,V.mergeOption(H,this),V.optionUpdated(H,!1);else{var K=ge({componentIndex:R},L.keyInfo);ge(V=new j(H,this,this,K),K),L.brandNew&&(V.__requireNewView=!0),V.init(H,this,this),V.optionUpdated(null,!0)}}else V&&(V.mergeOption({},this),V.optionUpdated({},!1));V?(S.push(V.option),M.push(V),T++):(S.push(void 0),M.push(void 0))},this),l[v]=S,c.set(v,M),u.set(v,T),"series"===v&&j0(this)},this),this._seriesIndices||j0(this)},n.prototype.getOption=function(){var t=rt(this.option);return U(t,function(s,l){if(qt.hasClass(l)){for(var c=Nn(s),u=c.length,f=!1,p=u-1;p>=0;p--)c[p]&&!yv(c[p])?f=!0:(c[p]=null,!f&&u--);c.length=u,t[l]=c}}),delete t[vR],t},n.prototype.getTheme=function(){return this._theme},n.prototype.getLocaleModel=function(){return this._locale},n.prototype.setUpdatePayload=function(t){this._payload=t},n.prototype.getUpdatePayload=function(){return this._payload},n.prototype.getComponent=function(t,s){var l=this._componentsMap.get(t);if(l){var c=l[s||0];if(c)return c;if(null==s)for(var u=0;u=n:"max"===t?r<=n:r===n})(s[m],c,p)||(l=!1)}}),l}const ps=zl;var Ve=U,Hl=tt,jh=["areaStyle","lineStyle","nodeStyle","linkStyle","chordStyle","label","labelLine"];function tu(r){var n=r&&r.itemStyle;if(n)for(var t=0,s=jh.length;t=0;S--){var M=r[S];if(f||(x=M.data.rawIndexOf(M.stackedByDimension,b)),x>=0){var T=M.data.getByRawIndex(M.stackResultDimension,x);if("all"===p||"positive"===p&&T>0||"negative"===p&&T<0||"samesign"===p&&y>=0&&T>0||"samesign"===p&&y<=0&&T<0){y=fP(y,T),C=T;break}}}return s[0]=y,s[1]=C,s})})}var Y0=function r(n){this.data=n.data||(n.sourceFormat===Vc?{}:[]),this.sourceFormat=n.sourceFormat||DD,this.seriesLayoutBy=n.seriesLayoutBy||el,this.startIndex=n.startIndex||0,this.dimensionsDetectedCount=n.dimensionsDetectedCount,this.metaRawOption=n.metaRawOption;var t=this.dimensionsDefine=n.dimensionsDefine;if(t)for(var s=0;sC&&(C=A)}b[0]=x,b[1]=C}},l=function(){return this._data?this._data.length/this._dimSize:0};function c(u){for(var f=0;f=0&&(C=u.interpolatedValue[S])}return null!=C?C+"":""}):void 0},r.prototype.getRawValue=function(n,t){return $h(this.getData(t),n)},r.prototype.formatTooltip=function(n,t,s){},r}();function UD(r){var n,t;return tt(r)?r.type&&(t=r):n=r,{text:n,frag:t}}function nu(r){return new iu(r)}var iu=function(){function r(n){this._reset=(n=n||{}).reset,this._plan=n.plan,this._count=n.count,this._onDirty=n.onDirty,this._dirty=!0}return r.prototype.perform=function(n){var c,t=this._upstream,s=n&&n.skip;if(this._dirty&&t){var l=this.context;l.data=l.outputData=t.context.outputData}this.__pipeline&&(this.__pipeline.currentTask=this),this._plan&&!s&&(c=this._plan(this.context));var v,u=g(this._modBy),f=this._modDataCount||0,p=g(n&&n.modBy),m=n&&n.modDataCount||0;function g(T){return!(T>=1)&&(T=1),T}(u!==p||f!==m)&&(c="reset"),(this._dirty||"reset"===c)&&(this._dirty=!1,v=this._doReset(s)),this._modBy=p,this._modDataCount=m;var y=n&&n.step;if(this._dueEnd=t?t._outputDueEnd:this._count?this._count(this.context):1/0,this._progress){var b=this._dueIndex,x=Math.min(null!=y?this._dueIndex+y:1/0,this._dueEnd);if(!s&&(v||b1&&s>0?f:u}};return c;function u(){return n=r?null:pn},gte:function(r,n){return r>=n}},YH=function(){function r(n,t){rn(t)||xn(""),this._opFn=LR[n],this._rvalFloat=Ws(t)}return r.prototype.evaluate=function(n){return rn(n)?this._opFn(n,this._rvalFloat):this._opFn(Ws(n),this._rvalFloat)},r}(),WD=function(){function r(n,t){var s="desc"===n;this._resultLT=s?1:-1,null==t&&(t=s?"min":"max"),this._incomparable="min"===t?-1/0:1/0}return r.prototype.evaluate=function(n,t){var s=rn(n)?n:Ws(n),l=rn(t)?t:Ws(t),c=isNaN(s),u=isNaN(l);if(c&&(s=this._incomparable),u&&(l=this._incomparable),c&&u){var f=Le(n),p=Le(t);f&&(s=p?n:0),p&&(l=f?t:0)}return sl?-this._resultLT:0},r}(),qH=function(){function r(n,t){this._rval=t,this._isEQ=n,this._rvalTypeof=typeof t,this._rvalFloat=Ws(t)}return r.prototype.evaluate=function(n){var t=n===this._rval;if(!t){var s=typeof n;s!==this._rvalTypeof&&("number"===s||"number"===this._rvalTypeof)&&(t=Ws(n)===this._rvalFloat)}return this._isEQ?t:!t},r}();function FR(r,n){return"eq"===r||"ne"===r?new qH("eq"===r,n):ze(LR,r)?new YH(r,n):null}var NR=function(){function r(){}return r.prototype.getRawData=function(){throw new Error("not supported")},r.prototype.getRawDataItem=function(n){throw new Error("not supported")},r.prototype.cloneRawData=function(){},r.prototype.getDimensionInfo=function(n){},r.prototype.cloneAllDimensionInfo=function(){},r.prototype.count=function(){},r.prototype.retrieveValue=function(n,t){},r.prototype.retrieveValueFromItem=function(n,t){},r.prototype.convertValue=function(n,t){return ru(n,t)},r}();function XH(r){return ms(r.sourceFormat)||xn(""),r.data}function ZH(r){var n=r.sourceFormat,t=r.data;if(ms(n)||xn(""),n===Wa){for(var l=[],c=0,u=t.length;c65535?QH:jl}function JH(r){var n=r.constructor;return n===Array?r.slice():new n(r)}function VR(r,n,t,s,l){var c=qD[t||"float"];if(l){var u=r[n],f=u&&u.length;if(f!==s){for(var p=new c(s),m=0;mS[1]&&(S[1]=C)}return this._rawCount=this._count=p,{start:f,end:p}},r.prototype._initDataFromProvider=function(n,t,s){for(var l=this._provider,c=this._chunks,u=this._dimensions,f=u.length,p=this._rawExtent,m=xe(u,function(T){return T.property}),g=0;gM[1]&&(M[1]=S)}}!l.persistent&&l.clean&&l.clean(),this._rawCount=this._count=t,this._extent=[]},r.prototype.count=function(){return this._count},r.prototype.get=function(n,t){if(!(t>=0&&t=0&&t=this._rawCount||n<0)return-1;if(!this._indices)return n;var t=this._indices,s=t[n];if(null!=s&&sn))return u;c=u-1}}return-1},r.prototype.indicesOfNearest=function(n,t,s){var c=this._chunks[n],u=[];if(!c)return u;null==s&&(s=1/0);for(var f=1/0,p=-1,m=0,g=0,v=this.count();g=0&&p<0)&&(f=x,p=b,m=0),b===p&&(u[m++]=g))}return u.length=m,u},r.prototype.getIndices=function(){var n,t=this._indices;if(t){var l=this._count;if((s=t.constructor)===Array){n=new s(l);for(var c=0;c=v&&T<=y||isNaN(T))&&(p[m++]=C),C++;x=!0}else if(2===c){S=b[l[0]];var A=b[l[1]],E=n[l[1]][0],L=n[l[1]][1];for(M=0;M=v&&T<=y||isNaN(T))&&(R>=E&&R<=L||isNaN(R))&&(p[m++]=C),C++}x=!0}}if(!x)if(1===c)for(M=0;M=v&&T<=y||isNaN(T))&&(p[m++]=V)}else for(M=0;Mn[j][1])&&(H=!1)}H&&(p[m++]=t.getRawIndex(M))}return mM[1]&&(M[1]=S)}}},r.prototype.lttbDownSample=function(n,t){var g,v,y,s=this.clone([n],!0),c=s._chunks[n],u=this.count(),f=0,p=Math.floor(1/t),m=this.getRawIndex(0),b=new(a_(this._rawCount))(Math.min(2*(Math.ceil(u/p)+2),u));b[f++]=m;for(var x=1;xg&&(g=v,y=E)}$>0&&$g-x&&(f.length=p=g-x);for(var C=0;Cv[1]&&(v[1]=M),y[b++]=T}return c._count=b,c._indices=y,c._updateGetRawIdx(),c},r.prototype.each=function(n,t){if(this._count)for(var s=n.length,l=this._chunks,c=0,u=this.count();cp&&(p=v)}return this._extent[n]=u=[f,p],u},r.prototype.getRawDataItem=function(n){var t=this.getRawIndex(n);if(this._provider.persistent)return this._provider.getItem(t);for(var s=[],l=this._chunks,c=0;c=0?this._indices[n]:-1},r.prototype._updateGetRawIdx=function(){this.getRawIndex=this._indices?this._getRawIdx:this._getRawIdxIdentity},r.internalField=function(){function n(t,s,l,c){return ru(t[c],this._dimensions[c])}Q0={arrayRows:n,objectRows:function(t,s,l,c){return ru(t[s],this._dimensions[c])},keyedColumns:n,original:function(t,s,l,c){var u=t&&(null==t.value?t:t.value);return ru(u instanceof Array?u[c]:u,this._dimensions[c])},typedArray:function(t,s,l,c){return t[c]}}}(),r}();const Yh=XD;var zR=function(){function r(n){this._sourceList=[],this._storeList=[],this._upstreamSignList=[],this._versionSignBase=0,this._dirty=!0,this._sourceHost=n}return r.prototype.dirty=function(){this._setLocalSource([],[]),this._storeList=[],this._dirty=!0},r.prototype._setLocalSource=function(n,t){this._sourceList=n,this._upstreamSignList=t,this._versionSignBase++,this._versionSignBase>9e10&&(this._versionSignBase=0)},r.prototype._getVersionSign=function(){return this._sourceHost.uid+"_"+this._versionSignBase},r.prototype.prepareSource=function(){this._isDirty()&&(this._createSource(),this._dirty=!1)},r.prototype._createSource=function(){this._setLocalSource([],[]);var l,c,n=this._sourceHost,t=this._getUpstreamSourceManagers(),s=!!t.length;if(J0(n)){var u=n,f=void 0,p=void 0,m=void 0;if(s){var g=t[0];g.prepareSource(),f=(m=g.getSource()).data,p=m.sourceFormat,c=[g._getVersionSign()]}else p=Bi(f=u.get("data",!0))?Bl:$a,c=[];var v=this._getSourceMetaRawOption()||{},y=m&&m.metaRawOption||{},b=Ct(v.seriesLayoutBy,y.seriesLayoutBy)||null,x=Ct(v.sourceHeader,y.sourceHeader),C=Ct(v.dimensions,y.dimensions);l=b!==y.seriesLayoutBy||!!x!=!!y.sourceHeader||C?[O(f,{seriesLayoutBy:b,sourceHeader:x,dimensions:C},p)]:[]}else{var M=n;if(s){var T=this._applyTransform(t);l=T.sourceList,c=T.upstreamSignList}else l=[O(M.get("source",!0),this._getSourceMetaRawOption(),null)],c=[]}this._setLocalSource(l,c)},r.prototype._applyTransform=function(n){var t=this._sourceHost,s=t.get("transform",!0),l=t.get("fromTransformResult",!0);null!=l&&1!==n.length&&KD("");var u,f=[],p=[];return U(n,function(m){m.prepareSource();var g=m.getSource(l||0);null!=l&&!g&&KD(""),f.push(g),p.push(m._getVersionSign())}),s?u=function Ta(r,n,t){var s=Nn(r),l=s.length;l||xn("");for(var u=0,f=l;u1||t>0&&!r.noHeader;return U(r.blocks,function(l){var c=qh(l);c>=n&&(n=c+ +(s&&(!c||Sn(l)&&!l.noHeader)))}),n}return 0}function GR(r,n,t,s){var l=n.noHeader,c=function jR(r){return{html:e8[r],richText:HR[r]}}(qh(n)),u=[],f=n.blocks||[];va(!f||ye(f)),f=f||[];var p=r.orderMode;if(n.sortBlocks&&p){f=f.slice();var m={valueAsc:"asc",valueDesc:"desc"};if(ze(m,p)){var g=new WD(m[p],null);f.sort(function(x,C){return g.evaluate(x.sortParam,C.sortParam)})}else"seriesDesc"===p&&f.reverse()}U(f,function(x,C){var S=n.valueFormatter,M=Ie(x)(S?ge(ge({},r),{valueFormatter:S}):r,x,C>0?c.html:0,s);null!=M&&u.push(M)});var v="richText"===r.renderMode?u.join(c.richText):ew(u.join(""),l?t:c.html);if(l)return v;var y=yD(n.header,"ordinal",r.useUTC),b=o_(s,r.renderMode).nameStyle;return"richText"===r.renderMode?eM(r,y,b)+c.richText+v:ew('
'+ae(y)+"
"+v,t)}function UR(r,n,t,s){var l=r.renderMode,c=n.noName,u=n.noValue,f=!n.markerType,p=n.name,m=r.useUTC,g=n.valueFormatter||r.valueFormatter||function(E){return xe(E=ye(E)?E:[E],function(L,R){return yD(L,ye(b)?b[R]:b,m)})};if(!c||!u){var v=f?"":r.markupStyleCreator.makeTooltipMarker(n.markerType,n.markerColor||"#333",l),y=c?"":yD(p,"ordinal",m),b=n.valueType,x=u?[]:g(n.value),C=!f||!c,S=!f&&c,M=o_(s,l),T=M.nameStyle,A=M.valueStyle;return"richText"===l?(f?"":v)+(c?"":eM(r,y,T))+(u?"":function t8(r,n,t,s,l){var c=[l];return t&&c.push({padding:[0,0,0,s?10:20],align:"right"}),r.markupStyleCreator.wrapRichTextStyle(ye(n)?n.join(" "):n,c)}(r,x,C,S,A)):ew((f?"":v)+(c?"":function $R(r,n,t){return''+ae(r)+""}(y,!f,T))+(u?"":function WR(r,n,t,s){return''+xe(r=ye(r)?r:[r],function(u){return ae(u)}).join("  ")+""}(x,C,S,A)),t)}}function JD(r,n,t,s,l,c){if(r)return Ie(r)({useUTC:l,renderMode:t,orderMode:s,markupStyleCreator:n,valueFormatter:r.valueFormatter},r,0,c)}function ew(r,n){return'
'+r+'
'}function eM(r,n,t){return r.markupStyleCreator.wrapRichTextStyle(n,t)}function YR(r,n){return Bh(r.getData().getItemVisual(n,"style")[r.visualDrawType])}function qR(r,n){return r.get("padding")??("richText"===n?[8,10]:10)}var tM=function(){function r(){this.richTextStyles={},this._nextStyleNameId=mP()}return r.prototype._generateStyleName=function(){return"__EC_aUTo_"+this._nextStyleNameId++},r.prototype.makeTooltipMarker=function(n,t,s){var l="richText"===s?this._generateStyleName():null,c=kH({color:t,type:n,renderMode:s,markerId:l});return Le(c)?c:(this.richTextStyles[l]=c.style,c.content)},r.prototype.wrapRichTextStyle=function(n,t){var s={};ye(t)?U(t,function(c){return ge(s,c)}):ge(s,t);var l=this._generateStyleName();return this.richTextStyles[l]=s,"{"+l+"|"+n+"}"},r}();function XR(r){var g,v,y,b,n=r.series,t=r.dataIndex,s=r.multipleSeries,l=n.getData(),c=l.mapDimensionsAll("defaultedTooltip"),u=c.length,f=n.getRawValue(t),p=ye(f),m=YR(n,t);if(u>1||p&&!u){var x=function n8(r,n,t,s,l){var c=n.getData(),u=vo(r,function(v,y,b){var x=c.getDimensionInfo(b);return v||x&&!1!==x.tooltip&&null!=x.displayName},!1),f=[],p=[],m=[];function g(v,y){var b=c.getDimensionInfo(y);!b||!1===b.otherDims.tooltip||(u?m.push(Y("nameValue",{markerType:"subItem",markerColor:l,name:b.displayName,value:v,valueType:b.type})):(f.push(v),p.push(b.type)))}return s.length?U(s,function(v){g($h(c,t,v),v)}):U(r,g),{inlineValues:f,inlineValueTypes:p,blocks:m}}(f,n,t,c,m);g=x.inlineValues,v=x.inlineValueTypes,y=x.blocks,b=x.inlineValues[0]}else if(u){var C=l.getDimensionInfo(c[0]);b=g=$h(l,t,c[0]),v=C.type}else b=g=p?f[0]:f;var S=vP(n),M=S&&n.name||"",T=l.getName(t),A=s?M:T;return Y("section",{header:M,noHeader:s||!S,sortParam:b,blocks:[Y("nameValue",{markerType:"item",markerColor:m,name:A,noName:!yo(A),value:g,valueType:v})].concat(y||[])})}var au=un();function tw(r,n){return r.getName(n)||r.getId(n)}var nw="__universalTransitionEnabled",iw=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t._selectedDataIndicesMap={},t}return se(n,r),n.prototype.init=function(t,s,l){this.seriesIndex=this.componentIndex,this.dataTask=nu({count:r8,reset:a8}),this.dataTask.context={model:this},this.mergeDefaultAndTheme(t,l),(au(this).sourceManager=new zR(this)).prepareSource();var u=this.getInitialData(t,l);KR(u,this),this.dataTask.context.data=u,au(this).dataBeforeProcessed=u,ZR(this),this._initSelectedMapFromData(u)},n.prototype.mergeDefaultAndTheme=function(t,s){var l=zh(this),c=l?Kp(t):{},u=this.subType;qt.hasClass(u)&&(u+="Series"),At(t,s.getTheme().get(this.subType)),At(t,this.getDefaultOption()),cs(t,"label",["show"]),this.fillDataTextStyle(t.data),l&&Jd(t,c,l)},n.prototype.mergeOption=function(t,s){t=At(this.option,t,!0),this.fillDataTextStyle(t.data);var l=zh(this);l&&Jd(this.option,t,l);var c=au(this).sourceManager;c.dirty(),c.prepareSource();var u=this.getInitialData(t,s);KR(u,this),this.dataTask.dirty(),this.dataTask.context.data=u,au(this).dataBeforeProcessed=u,ZR(this),this._initSelectedMapFromData(u)},n.prototype.fillDataTextStyle=function(t){if(t&&!Bi(t))for(var s=["show"],l=0;lthis.getShallow("animationThreshold")&&(s=!1),!!s},n.prototype.restoreData=function(){this.dataTask.dirty()},n.prototype.getColorFromPalette=function(t,s,l){var c=this.ecModel,u=kD.prototype.getColorFromPalette.call(this,t,s,l);return u||(u=c.getColorFromPalette(t,s,l)),u},n.prototype.coordDimToDataDim=function(t){return this.getRawData().mapDimensionsAll(t)},n.prototype.getProgressive=function(){return this.get("progressive")},n.prototype.getProgressiveThreshold=function(){return this.get("progressiveThreshold")},n.prototype.select=function(t,s){this._innerSelect(this.getData(s),t)},n.prototype.unselect=function(t,s){var l=this.option.selectedMap;if(l){var c=this.option.selectedMode,u=this.getData(s);if("series"===c||"all"===l)return this.option.selectedMap={},void(this._selectedDataIndicesMap={});for(var f=0;f=0&&l.push(u)}return l},n.prototype.isSelected=function(t,s){var l=this.option.selectedMap;if(!l)return!1;var c=this.getData(s);return("all"===l||l[tw(c,t)])&&!c.getItemModel(t).get(["select","disabled"])},n.prototype.isUniversalTransitionEnabled=function(){if(this[nw])return!0;var t=this.option.universalTransition;return!!t&&(!0===t||t&&t.enabled)},n.prototype._innerSelect=function(t,s){var l,c,u=this.option,f=u.selectedMode,p=s.length;if(f&&p)if("series"===f)u.selectedMap="all";else if("multiple"===f){tt(u.selectedMap)||(u.selectedMap={});for(var m=u.selectedMap,g=0;g0&&this._innerSelect(t,s)}},n.registerClass=function(t){return qt.registerClass(t)},n.protoInitialize=((t=n.prototype).type="series.__base__",t.seriesIndex=0,t.ignoreStyleOnData=!1,t.hasSymbolVisual=!1,t.defaultSymbol="circle",t.visualStyleAccessPath="itemStyle",void(t.visualDrawType="fill")),n;var t}(qt);function ZR(r){var n=r.name;vP(r)||(r.name=function i8(r){var n=r.getRawData(),t=n.mapDimensionsAll("seriesName"),s=[];return U(t,function(l){var c=n.getDimensionInfo(l);c.displayName&&s.push(c.displayName)}),s.join(" ")}(r)||n)}function r8(r){return r.model.getRawData().count()}function a8(r){var n=r.model;return n.setData(n.getRawData().cloneShallow()),o8}function o8(r,n){n.outputData&&r.end>n.outputData.count()&&n.model.getRawData().cloneShallow(n.outputData)}function KR(r,n){U(Ti(r.CHANGABLE_METHODS,r.DOWNSAMPLE_METHODS),function(t){r.wrapMethod(t,$e(s8,n))})}function s8(r,n){var t=rw(r);return t&&t.setOutputEnd((n||this).count()),n}function rw(r){var n=(r.ecModel||{}).scheduler,t=n&&n.getPipeline(r.uid);if(t){var s=t.currentTask;if(s){var l=s.agentStubMap;l&&(s=l.get(r.uid))}return s}}Mi(iw,X0),Mi(iw,kD),IS(iw,qt);const Zn=iw;var aw=function(){function r(){this.group=new lt,this.uid=Wv("viewComponent")}return r.prototype.init=function(n,t){},r.prototype.render=function(n,t,s,l){},r.prototype.dispose=function(n,t){},r.prototype.updateView=function(n,t,s,l){},r.prototype.updateLayout=function(n,t,s,l){},r.prototype.updateVisual=function(n,t,s,l){},r.prototype.toggleBlurSeries=function(n,t,s){},r.prototype.eachRendered=function(n){var t=this.group;t&&t.traverse(n)},r}();ES(aw),bv(aw);const di=aw;function Xh(){var r=un();return function(n){var t=r(n),s=n.pipelineContext,l=!!t.large,c=!!t.progressiveRender,u=t.large=!(!s||!s.large),f=t.progressiveRender=!(!s||!s.progressiveRender);return(l!==u||c!==f)&&"reset"}}var Zh=ds.CMD,QR=[[],[],[]],nM=Math.sqrt,JR=Math.atan2;function la(r,n){if(n){var l,c,u,f,p,m,t=r.data,s=r.len(),g=Zh.M,v=Zh.C,y=Zh.L,b=Zh.R,x=Zh.A,C=Zh.Q;for(u=0,f=0;u1&&(u*=om(x),f*=om(x));var C=(l===c?-1:1)*om((u*u*(f*f)-u*u*(b*b)-f*f*(y*y))/(u*u*(b*b)+f*f*(y*y)))||0,S=C*u*b/f,M=C*-f*y/u,T=(r+t)/2+ow(v)*S-$l(v)*M,A=(n+s)/2+$l(v)*S+ow(v)*M,E=Aa([1,0],[(y-S)/u,(b-M)/f]),L=[(y-S)/u,(b-M)/f],R=[(-1*y-S)/u,(-1*b-M)/f],V=Aa(L,R);if(e2(L,R)<=-1&&(V=s_),e2(L,R)>=1&&(V=0),V<0){var H=Math.round(V/s_*1e6)/1e6;V=2*s_+H%2*s_}g.addData(m,T,A,u,f,E,V,v,c)}var t2=/([mlvhzcqtsa])([^mlvhzcqtsa]*)/gi,n2=/-?([0-9]*\.)?[0-9]+([eE]-?[0-9]+)?/g,Xe=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return Yn(n,r),n.prototype.applyTransform=function(t){},n}(Ht);function r2(r){return null!=r.setData}function a2(r,n){var t=function yX(r){var n=new ds;if(!r)return n;var u,t=0,s=0,l=t,c=s,f=ds.CMD,p=r.match(t2);if(!p)return n;for(var m=0;mee*ee+ne*ne&&(H=j,G=$),{cx:H,cy:G,x0:-g,y0:-v,x1:H*(l/L-1),y1:G*(l/L-1)}}var u8=function r(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0,this.cornerRadius=0},cm=function(r){function n(t){return r.call(this,t)||this}return Yn(n,r),n.prototype.getDefaultShape=function(){return new u8},n.prototype.buildPath=function(t,s){!function d2(r,n){var t,s=l_(n.r,0),l=l_(n.r0||0,0),c=s>0;if(c||l>0){if(c||(s=l,l=0),l>s){var f=s;s=l,l=f}var p=n.startAngle,m=n.endAngle;if(!isNaN(p)&&!isNaN(m)){var g=n.cx,v=n.cy,y=!!n.clockwise,b=l2(m-p),x=b>cw&&b%cw;if(x>tl&&(b=x),s>tl)if(b>cw-tl)r.moveTo(g+s*Qh(p),v+s*ou(p)),r.arc(g,v,s,p,m,!y),l>tl&&(r.moveTo(g+l*Qh(m),v+l*ou(m)),r.arc(g,v,l,m,p,y));else{var C=void 0,S=void 0,M=void 0,T=void 0,A=void 0,E=void 0,L=void 0,R=void 0,V=void 0,H=void 0,G=void 0,j=void 0,$=void 0,q=void 0,K=void 0,ee=void 0,ne=s*Qh(p),re=s*ou(p),ue=l*Qh(m),ce=l*ou(m),ve=b>tl;if(ve){var Te=n.cornerRadius;Te&&(t=function c2(r){var n;if(ye(r)){var t=r.length;if(!t)return r;n=1===t?[r[0],r[0],0,0]:2===t?[r[0],r[0],r[1],r[1]]:3===t?r.concat(r[2]):r}else n=[r,r,r,r];return n}(Te),C=t[0],S=t[1],M=t[2],T=t[3]);var Oe=l2(s-l)/2;if(A=Yl(Oe,M),E=Yl(Oe,T),L=Yl(Oe,C),R=Yl(Oe,S),G=V=l_(A,E),j=H=l_(L,R),(V>tl||H>tl)&&($=s*Qh(m),q=s*ou(m),K=l*Qh(p),ee=l*ou(p),btl){var Mt=Yl(M,G),kt=Yl(T,G),We=c_(K,ee,ne,re,s,Mt,y),wt=c_($,q,ue,ce,s,kt,y);r.moveTo(g+We.cx+We.x0,v+We.cy+We.y0),G0&&r.arc(g+We.cx,v+We.cy,Mt,ka(We.y0,We.x0),ka(We.y1,We.x1),!y),r.arc(g,v,s,ka(We.cy+We.y1,We.cx+We.x1),ka(wt.cy+wt.y1,wt.cx+wt.x1),!y),kt>0&&r.arc(g+wt.cx,v+wt.cy,kt,ka(wt.y1,wt.x1),ka(wt.y0,wt.x0),!y))}else r.moveTo(g+ne,v+re),r.arc(g,v,s,p,m,!y);else r.moveTo(g+ne,v+re);l>tl&&ve?j>tl?(Mt=Yl(C,j),We=c_(ue,ce,$,q,l,-(kt=Yl(S,j)),y),wt=c_(ne,re,K,ee,l,-Mt,y),r.lineTo(g+We.cx+We.x0,v+We.cy+We.y0),j0&&r.arc(g+We.cx,v+We.cy,kt,ka(We.y0,We.x0),ka(We.y1,We.x1),!y),r.arc(g,v,l,ka(We.cy+We.y1,We.cx+We.x1),ka(wt.cy+wt.y1,wt.cx+wt.x1),y),Mt>0&&r.arc(g+wt.cx,v+wt.cy,Mt,ka(wt.y1,wt.x1),ka(wt.y0,wt.x0),!y))):(r.lineTo(g+ue,v+ce),r.arc(g,v,l,m,p,y)):r.lineTo(g+ue,v+ce)}else r.moveTo(g,v);r.closePath()}}}(t,s)},n.prototype.isZeroArea=function(){return this.shape.startAngle===this.shape.endAngle||this.shape.r===this.shape.r0},n}(Ht);cm.prototype.type="sector";const Nr=cm;var h8=function r(){this.cx=0,this.cy=0,this.r=0,this.r0=0},u2=function(r){function n(t){return r.call(this,t)||this}return Yn(n,r),n.prototype.getDefaultShape=function(){return new h8},n.prototype.buildPath=function(t,s){var l=s.cx,c=s.cy,u=2*Math.PI;t.moveTo(l+s.r,c),t.arc(l,c,s.r,0,u,!1),t.moveTo(l+s.r0,c),t.arc(l,c,s.r0,0,u,!0)},n}(Ht);u2.prototype.type="ring";const d_=u2;function aM(r,n,t){var s=n.smooth,l=n.points;if(l&&l.length>=2){if(s){var c=function h2(r,n,t,s){var p,m,g,v,l=[],c=[],u=[],f=[];if(s){g=[1/0,1/0],v=[-1/0,-1/0];for(var y=0,b=r.length;yJh[1]){if(f=!1,c)return f;var g=Math.abs(Jh[0]-su[1]),v=Math.abs(su[0]-Jh[1]);Math.min(g,v)>l.len()&&Dt.scale(l,m,gMath.abs(c[1])?c[0]>0?"right":"left":c[1]>0?"bottom":"top"}function gM(r){return!r.isGroup}function g_(r,n,t){if(r&&n){var c=function s(u){var f={};return u.traverse(function(p){gM(p)&&p.anid&&(f[p.anid]=p)}),f}(r);n.traverse(function(u){if(gM(u)&&u.anid){var f=c[u.anid];if(f){var p=l(u);u.attr(l(f)),fn(u,p,t,mt(u).dataIndex)}}})}function l(u){var f={x:u.x,y:u.y,rotation:u.rotation};return function x8(r){return null!=r.shape}(u)&&(f.shape=ge({},u.shape)),f}}function vM(r,n){return xe(r,function(t){var s=t[0];s=f_(s,n.x),s=pw(s,n.x+n.width);var l=t[1];return l=f_(l,n.y),[s,l=pw(l,n.y+n.height)]})}function vw(r,n){var t=f_(r.x,n.x),s=pw(r.x+r.width,n.x+n.width),l=f_(r.y,n.y),c=pw(r.y+r.height,n.y+n.height);if(s>=t&&c>=l)return{x:t,y:l,width:s-t,height:c-l}}function lu(r,n,t){var s=ge({rectHover:!0},n),l=s.style={strokeNoScale:!0};if(t=t||{x:-1,y:-1,width:2,height:2},r)return 0===r.indexOf("image://")?(l.image=r.slice(8),Je(l,t),new _i(s)):p_(r.replace("path://",""),s,t,"center")}function hm(r,n,t,s,l){for(var c=0,u=l[l.length-1];c=-1e-6}(y))return!1;var b=r-l,x=n-c,C=_M(b,x,p,m)/y;if(C<0||C>1)return!1;var S=_M(b,x,g,v)/y;return!(S<0||S>1)}function _M(r,n,t,s){return r*s-t*n}function cu(r){var n=r.itemTooltipOption,t=r.componentModel,s=r.itemName,l=Le(n)?{formatter:n}:n,c=t.mainType,u=t.componentIndex,f={componentType:c,name:s,$vars:["name"]};f[c+"Index"]=u;var p=r.formatterParamsExtra;p&&U(Ut(p),function(g){ze(f,g)||(f[g]=p[g],f.$vars.push(g))});var m=mt(r.el);m.componentMainType=c,m.componentIndex=u,m.tooltipConfig={name:s,option:Je({content:s,formatterParams:f},l)}}function x2(r,n){var t;r.isGroup&&(t=n(r)),t||r.traverse(n)}function Ue(r,n){if(r)if(ye(r))for(var t=0;t=0?v():u=setTimeout(v,-f),l=s};return y.clear=function(){u&&(clearTimeout(u),u=null)},y.debounceNextCall=function(b){g=b},y}function tf(r,n,t,s){var l=r[n];if(l){var c=l[fm]||l;if(l[bw]!==t||l[xM]!==s){if(null==t||!s)return r[n]=c;(l=r[n]=v_(c,t,"debounce"===s))[fm]=c,l[xM]=s,l[bw]=t}return l}}function pm(r,n){var t=r[n];t&&t[fm]&&(t.clear&&t.clear(),r[n]=t[fm])}var S2=un(),D2={itemStyle:Tc(dD,!0),lineStyle:Tc(iR,!0)},M8={lineStyle:"stroke",itemStyle:"fill"};function M2(r,n){return r.visualStyleMapper||D2[n]||(console.warn("Unknown style type '"+n+"'."),D2.itemStyle)}function CM(r,n){return r.visualDrawType||M8[n]||(console.warn("Unknown style type '"+n+"'."),"fill")}var xX={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,n){var t=r.getData(),s=r.visualStyleAccessPath||"itemStyle",l=r.getModel(s),u=M2(r,s)(l),f=l.getShallow("decal");f&&(t.setVisual("decal",f),f.dirty=!0);var p=CM(r,s),m=u[p],g=qe(m)?m:null;if(!u[p]||g||"auto"===u.fill||"auto"===u.stroke){var y=r.getColorFromPalette(r.name,null,n.getSeriesCount());u[p]||(u[p]=y,t.setVisual("colorFromPalette",!0)),u.fill="auto"===u.fill||qe(u.fill)?y:u.fill,u.stroke="auto"===u.stroke||qe(u.stroke)?y:u.stroke}if(t.setVisual("style",u),t.setVisual("drawType",p),!n.isSeriesFiltered(r)&&g)return t.setVisual("colorFromPalette",!1),{dataEach:function(b,x){var C=r.getDataParams(x),S=ge({},u);S[p]=g(C),b.setItemVisual(x,"style",S)}}}},mm=new In,T8={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,n){if(!r.ignoreStyleOnData&&!n.isSeriesFiltered(r)){var t=r.getData(),s=r.visualStyleAccessPath||"itemStyle",l=M2(r,s),c=t.getVisual("drawType");return{dataEach:t.hasItemOption?function(u,f){var p=u.getRawDataItem(f);if(p&&p[s]){mm.option=p[s];var m=l(mm);ge(u.ensureUniqueItemVisual(f,"style"),m),mm.option.decal&&(u.setItemVisual(f,"decal",mm.option.decal),mm.option.decal.dirty=!0),c in m&&u.setItemVisual(f,"colorFromPalette",!1)}}:null}}}},A8={performRawSeries:!0,overallReset:function(r){var n=Ye();r.eachSeries(function(t){var s=t.getColorBy();if(!t.isColorBySeries()){var l=t.type+"-"+s,c=n.get(l);c||n.set(l,c={}),S2(t).scope=c}}),r.eachSeries(function(t){if(!t.isColorBySeries()&&!r.isSeriesFiltered(t)){var s=t.getRawData(),l={},c=t.getData(),u=S2(t).scope,p=CM(t,t.visualStyleAccessPath||"itemStyle");c.each(function(m){var g=c.getRawIndex(m);l[g]=m}),s.each(function(m){var g=l[m];if(c.getItemVisual(g,"colorFromPalette")){var y=c.ensureUniqueItemVisual(g,"style"),b=s.getName(m)||m+"",x=s.count();y[p]=t.getColorFromPalette(b,u,x)}})}})}},SM=Math.PI,E8=function(){function r(n,t,s,l){this._stageTaskMap=Ye(),this.ecInstance=n,this.api=t,s=this._dataProcessorHandlers=s.slice(),l=this._visualHandlers=l.slice(),this._allHandlers=s.concat(l)}return r.prototype.restoreData=function(n,t){n.restoreData(t),this._stageTaskMap.each(function(s){var l=s.overallTask;l&&l.dirty()})},r.prototype.getPerformArgs=function(n,t){if(n.__pipeline){var s=this._pipelineMap.get(n.__pipeline.id),l=s.context,u=!t&&s.progressiveEnabled&&(!l||l.progressiveRender)&&n.__idxInPipeline>s.blockIndex?s.step:null,f=l&&l.modDataCount;return{step:u,modBy:null!=f?Math.ceil(f/u):null,modDataCount:f}}},r.prototype.getPipeline=function(n){return this._pipelineMap.get(n)},r.prototype.updateStreamModes=function(n,t){var s=this._pipelineMap.get(n.uid),c=n.getData().count(),u=s.progressiveEnabled&&t.incrementalPrepareRender&&c>=s.threshold,f=n.get("large")&&c>=n.get("largeThreshold"),p="mod"===n.get("progressiveChunkMode")?c:null;n.pipelineContext=s.context={progressiveRender:u,modDataCount:p,large:f}},r.prototype.restorePipelines=function(n){var t=this,s=t._pipelineMap=Ye();n.eachSeries(function(l){var c=l.getProgressive(),u=l.uid;s.set(u,{id:u,head:null,tail:null,threshold:l.getProgressiveThreshold(),progressiveEnabled:c&&!(l.preventIncremental&&l.preventIncremental()),blockIndex:-1,step:Math.round(c||700),count:0}),t._pipe(l,l.dataTask)})},r.prototype.prepareStageTasks=function(){var n=this._stageTaskMap,t=this.api.getModel(),s=this.api;U(this._allHandlers,function(l){var c=n.get(l.uid)||n.set(l.uid,{});va(!(l.reset&&l.overallReset),""),l.reset&&this._createSeriesStageTask(l,c,t,s),l.overallReset&&this._createOverallStageTask(l,c,t,s)},this)},r.prototype.prepareView=function(n,t,s,l){var c=n.renderTask,u=c.context;u.model=t,u.ecModel=s,u.api=l,c.__block=!n.incrementalPrepareRender,this._pipe(t,c)},r.prototype.performDataProcessorTasks=function(n,t){this._performStageTasks(this._dataProcessorHandlers,n,t,{block:!0})},r.prototype.performVisualTasks=function(n,t,s){this._performStageTasks(this._visualHandlers,n,t,s)},r.prototype._performStageTasks=function(n,t,s,l){l=l||{};var c=!1,u=this;function f(p,m){return p.setDirty&&(!p.dirtyMap||p.dirtyMap.get(m.__pipeline.id))}U(n,function(p,m){if(!l.visualType||l.visualType===p.visualType){var g=u._stageTaskMap.get(p.uid),v=g.seriesTaskMap,y=g.overallTask;if(y){var b,x=y.agentStubMap;x.each(function(S){f(l,S)&&(S.dirty(),b=!0)}),b&&y.dirty(),u.updatePayload(y,s);var C=u.getPerformArgs(y,l.block);x.each(function(S){S.perform(C)}),y.perform(C)&&(c=!0)}else v&&v.each(function(S,M){f(l,S)&&S.dirty();var T=u.getPerformArgs(S,l.block);T.skip=!p.performRawSeries&&t.isSeriesFiltered(S.context.model),u.updatePayload(S,s),S.perform(T)&&(c=!0)})}}),this.unfinished=c||this.unfinished},r.prototype.performSeriesTasks=function(n){var t;n.eachSeries(function(s){t=s.dataTask.perform()||t}),this.unfinished=t||this.unfinished},r.prototype.plan=function(){this._pipelineMap.each(function(n){var t=n.tail;do{if(t.__block){n.blockIndex=t.__idxInPipeline;break}t=t.getUpstream()}while(t)})},r.prototype.updatePayload=function(n,t){"remain"!==t&&(n.context.payload=t)},r.prototype._createSeriesStageTask=function(n,t,s,l){var c=this,u=t.seriesTaskMap,f=t.seriesTaskMap=Ye(),p=n.seriesType,m=n.getTargetSeries;function g(v){var y=v.uid,b=f.set(y,u&&u.get(y)||nu({plan:P8,reset:R8,count:L8}));b.context={model:v,ecModel:s,api:l,useClearVisual:n.isVisual&&!n.isLayout,plan:n.plan,reset:n.reset,scheduler:c},c._pipe(v,b)}n.createOnAllSeries?s.eachRawSeries(g):p?s.eachRawSeriesByType(p,g):m&&m(s,l).each(g)},r.prototype._createOverallStageTask=function(n,t,s,l){var c=this,u=t.overallTask=t.overallTask||nu({reset:ww});u.context={ecModel:s,api:l,overallReset:n.overallReset,scheduler:c};var f=u.agentStubMap,p=u.agentStubMap=Ye(),m=n.seriesType,g=n.getTargetSeries,v=!0,y=!1;function x(C){var S=C.uid,M=p.set(S,f&&f.get(S)||(y=!0,nu({reset:du,onDirty:I8})));M.context={model:C,overallProgress:v},M.agent=u,M.__block=v,c._pipe(C,M)}va(!n.createOnAllSeries,""),m?s.eachRawSeriesByType(m,x):g?g(s,l).each(x):(v=!1,U(s.getSeries(),x)),y&&u.dirty()},r.prototype._pipe=function(n,t){var l=this._pipelineMap.get(n.uid);!l.head&&(l.head=t),l.tail&&l.tail.pipe(t),l.tail=t,t.__idxInPipeline=l.count++,t.__pipeline=l},r.wrapStageHandler=function(n,t){return qe(n)&&(n={overallReset:n,seriesType:F8(n)}),n.uid=Wv("stageHandler"),t&&(n.visualType=t),n},r}();function ww(r){r.overallReset(r.ecModel,r.api,r.payload)}function du(r){return r.overallProgress&&xw}function xw(){this.agent.dirty(),this.getDownstream().dirty()}function I8(){this.agent&&this.agent.dirty()}function P8(r){return r.plan?r.plan(r.model,r.ecModel,r.api,r.payload):null}function R8(r){r.useClearVisual&&r.data.clearAllVisual();var n=r.resetDefines=Nn(r.reset(r.model,r.ecModel,r.api,r.payload));return n.length>1?xe(n,function(t,s){return T2(s)}):O8}var O8=T2(0);function T2(r){return function(n,t){var s=t.data,l=t.resetDefines[r];if(l&&l.dataEach)for(var c=n.start;c0&&b===m.length-y.length){var x=m.slice(0,b);"data"!==x&&(t.mainType=x,t[y.toLowerCase()]=p,g=!0)}}f.hasOwnProperty(m)&&(s[m]=p,g=!0),g||(l[m]=p)})}return{cptQuery:t,dataQuery:s,otherQuery:l}},r.prototype.filter=function(n,t){var s=this.eventInfo;if(!s)return!0;var l=s.targetEl,c=s.packedEvent,u=s.model,f=s.view;if(!u||!f)return!0;var p=t.cptQuery,m=t.dataQuery;return g(p,u,"mainType")&&g(p,u,"subType")&&g(p,u,"index","componentIndex")&&g(p,u,"name")&&g(p,u,"id")&&g(m,c,"name")&&g(m,c,"dataIndex")&&g(m,c,"dataType")&&(!f.filterForExposedEvent||f.filterForExposedEvent(n,t.otherQuery,l,c));function g(v,y,b,x){return null==v[b]||y[x||b]===v[b]}},r.prototype.afterTrigger=function(){this.eventInfo=null},r}(),nf=["symbol","symbolSize","symbolRotate","symbolOffset"],k2=nf.concat(["symbolKeepAspect"]),kM={createOnAllSeries:!0,performRawSeries:!0,reset:function(r,n){var t=r.getData();if(r.legendIcon&&t.setVisual("legendIcon",r.legendIcon),r.hasSymbolVisual){for(var s={},l={},c=!1,u=0;u=0&&hu(p)?p:.5,r.createRadialGradient(u,f,0,u,f,p)}(r,n,t):function LM(r,n,t){var s=null==n.x?0:n.x,l=null==n.x2?1:n.x2,c=null==n.y?0:n.y,u=null==n.y2?0:n.y2;return n.global||(s=s*t.width+t.x,l=l*t.width+t.x,c=c*t.height+t.y,u=u*t.height+t.y),s=hu(s)?s:0,l=hu(l)?l:1,c=hu(c)?c:0,u=hu(u)?u:0,r.createLinearGradient(s,c,l,u)}(r,n,t),l=n.colorStops,c=0;c0&&function L2(r,n){return r&&"solid"!==r&&n>0?"dashed"===r?[4*n,2*n]:"dotted"===r?[n]:rn(r)?[r]:ye(r)?r:null:null}(n.lineDash,n.lineWidth),s=n.lineDashOffset;if(t){var l=n.strokeNoScale&&r.getLineScale?r.getLineScale():1;l&&1!==l&&(t=xe(t,function(c){return c/l}),s/=l)}return[t,s]}var j8=new ds(!0);function b_(r){var n=r.stroke;return!(null==n||"none"===n||!(r.lineWidth>0))}function Zr(r){return"string"==typeof r&&"none"!==r}function Kr(r){var n=r.fill;return null!=n&&"none"!==n}function rf(r,n){if(null!=n.fillOpacity&&1!==n.fillOpacity){var t=r.globalAlpha;r.globalAlpha=n.fillOpacity*n.opacity,r.fill(),r.globalAlpha=t}else r.fill()}function F2(r,n){if(null!=n.strokeOpacity&&1!==n.strokeOpacity){var t=r.globalAlpha;r.globalAlpha=n.strokeOpacity*n.opacity,r.stroke(),r.globalAlpha=t}else r.stroke()}function FM(r,n,t){var s=_0(n.image,n.__image,t);if(xv(s)){var l=r.createPattern(s,n.repeat||"repeat");if("function"==typeof DOMMatrix&&l&&l.setTransform){var c=new DOMMatrix;c.translateSelf(n.x||0,n.y||0),c.rotateSelf(0,0,(n.rotation||0)*th),c.scaleSelf(n.scaleX||1,n.scaleY||1),l.setTransform(c)}return l}}var Dw=["shadowBlur","shadowOffsetX","shadowOffsetY"],bm=[["lineCap","butt"],["lineJoin","miter"],["miterLimit",10]];function B2(r,n,t,s,l){var c=!1;if(!s&&n===(t=t||{}))return!1;if(s||n.opacity!==t.opacity){Ia(r,l),c=!0;var u=Math.max(Math.min(n.opacity,1),0);r.globalAlpha=isNaN(u)?Sh.opacity:u}(s||n.blend!==t.blend)&&(c||(Ia(r,l),c=!0),r.globalCompositeOperation=n.blend||Sh.blend);for(var f=0;f0&&t.unfinished);t.unfinished||this._zr.flush()}}},n.prototype.getDom=function(){return this._dom},n.prototype.getId=function(){return this.id},n.prototype.getZr=function(){return this._zr},n.prototype.isSSR=function(){return this._ssr},n.prototype.setOption=function(t,s,l){if(!this[qa]){if(this._disposed)return;var c,u,f;if(tt(s)&&(l=s.lazyUpdate,c=s.silent,u=s.replaceMerge,f=s.transition,s=s.notMerge),this[qa]=!0,!this._model||s){var p=new ps(this._api),m=this._theme,g=this._model=new HH;g.scheduler=this._scheduler,g.ssr=this._ssr,g.init(null,null,null,m,this._locale,p)}this._model.setOption(t,{replaceMerge:u},M_);var v={seriesTransition:f,optionChanged:!0};if(l)this[da]={silent:c,updateParams:v},this[qa]=!1,this.getZr().wakeUp();else{try{xm(this),mu.update.call(this,null,v)}catch(y){throw this[da]=null,this[qa]=!1,y}this._ssr||this._zr.flush(),this[da]=null,this[qa]=!1,C_.call(this,c),Cm.call(this,c)}}},n.prototype.setTheme=function(){},n.prototype.getModel=function(){return this._model},n.prototype.getOption=function(){return this._model&&this._model.getOption()},n.prototype.getWidth=function(){return this._zr.getWidth()},n.prototype.getHeight=function(){return this._zr.getHeight()},n.prototype.getDevicePixelRatio=function(){return this._zr.painter.dpr||ln.hasGlobalWindow&&window.devicePixelRatio||1},n.prototype.getRenderedCanvas=function(t){return this.renderToCanvas(t)},n.prototype.renderToCanvas=function(t){return this._zr.painter.getRenderedCanvas({backgroundColor:(t=t||{}).backgroundColor||this._model.get("backgroundColor"),pixelRatio:t.pixelRatio||this.getDevicePixelRatio()})},n.prototype.renderToSVGString=function(t){return this._zr.painter.renderToString({useViewBox:(t=t||{}).useViewBox})},n.prototype.getSvgDataURL=function(){if(ln.svgSupported){var t=this._zr;return U(t.storage.getDisplayList(),function(l){l.stopAnimation(null,!0)}),t.painter.toDataURL()}},n.prototype.getDataURL=function(t){if(!this._disposed){var l=this._model,c=[],u=this;U((t=t||{}).excludeComponents,function(p){l.eachComponent({mainType:p},function(m){var g=u._componentsMap[m.__viewId];g.group.ignore||(c.push(g),g.group.ignore=!0)})});var f="svg"===this._zr.painter.getType()?this.getSvgDataURL():this.renderToCanvas(t).toDataURL("image/"+(t&&t.type||"png"));return U(c,function(p){p.group.ignore=!1}),f}},n.prototype.getConnectedDataURL=function(t){if(!this._disposed){var s="svg"===t.type,l=this.group,c=Math.min,u=Math.max,f=1/0;if(lf[l]){var p=f,m=f,g=-f,v=-f,y=[],b=t&&t.pixelRatio||this.getDevicePixelRatio();U(gu,function(A,E){if(A.group===l){var L=s?A.getZr().painter.getSvgDom().innerHTML:A.renderToCanvas(rt(t)),R=A.getDom().getBoundingClientRect();p=c(R.left,p),m=c(R.top,m),g=u(R.right,g),v=u(R.bottom,v),y.push({dom:L,left:R.left,top:R.top})}});var x=(g*=b)-(p*=b),C=(v*=b)-(m*=b),S=gl.createCanvas(),M=uP(S,{renderer:s?"svg":"canvas"});if(M.resize({width:x,height:C}),s){var T="";return U(y,function(A){T+=''+A.dom+""}),M.painter.getSvgRoot().innerHTML=T,t.connectedBackgroundColor&&M.painter.setBackgroundColor(t.connectedBackgroundColor),M.refreshImmediately(),M.painter.toDataURL()}return t.connectedBackgroundColor&&M.add(new Zt({shape:{x:0,y:0,width:x,height:C},style:{fill:t.connectedBackgroundColor}})),U(y,function(A){var E=new _i({style:{x:A.left*b-p,y:A.top*b-m,image:A.dom}});M.add(E)}),M.refreshImmediately(),S.toDataURL("image/"+(t&&t.type||"png"))}return this.getDataURL(t)}},n.prototype.convertToPixel=function(t,s){return nO(this,"convertToPixel",t,s)},n.prototype.convertFromPixel=function(t,s){return nO(this,"convertFromPixel",t,s)},n.prototype.containPixel=function(t,s){var c;if(!this._disposed)return U(p0(this._model,t),function(f,p){p.indexOf("Models")>=0&&U(f,function(m){var g=m.coordinateSystem;if(g&&g.containPoint)c=c||!!g.containPoint(s);else if("seriesModels"===p){var v=this._chartsMap[m.__viewId];v&&v.containPoint&&(c=c||v.containPoint(s,m))}},this)},this),!!c},n.prototype.getVisual=function(t,s){var c=p0(this._model,t,{defaultMainType:"series"}),f=c.seriesModel.getData(),p=c.hasOwnProperty("dataIndexInside")?c.dataIndexInside:c.hasOwnProperty("dataIndex")?f.indexOfRawIndex(c.dataIndex):null;return null!=p?EM(f,p,s):_s(f,s)},n.prototype.getViewOfComponentModel=function(t){return this._componentsMap[t.__viewId]},n.prototype.getViewOfSeriesModel=function(t){return this._chartsMap[t.__viewId]},n.prototype._initEvents=function(){var t=this;U(et,function(s){var l=function(c){var p,u=t.getModel(),f=c.target;if("globalout"===s?p={}:f&&ql(f,function(x){var C=mt(x);if(C&&null!=C.dataIndex){var S=C.dataModel||u.getSeriesByIndex(C.seriesIndex);return p=S&&S.getDataParams(C.dataIndex,C.dataType)||{},!0}if(C.eventData)return p=ge({},C.eventData),!0},!0),p){var g=p.componentType,v=p.componentIndex;("markLine"===g||"markPoint"===g||"markArea"===g)&&(g="series",v=p.seriesIndex);var y=g&&null!=v&&u.getComponent(g,v),b=y&&t["series"===y.mainType?"_chartsMap":"_componentsMap"][y.__viewId];p.event=c,p.type=s,t._$eventProcessor.eventInfo={targetEl:f,packedEvent:p,model:y,view:b},t.trigger(s,p)}};l.zrEventfulCallAtLast=!0,t._zr.on(s,l,t)}),U(D_,function(s,l){t._messageCenter.on(l,function(c){this.trigger(l,c)},t)}),U(["selectchanged"],function(s){t._messageCenter.on(s,function(l){this.trigger(s,l)},t)}),function z8(r,n,t){r.on("selectchanged",function(s){var l=t.getModel();s.isFromClick?(gm("map","selectchanged",n,l,s),gm("pie","selectchanged",n,l,s)):"select"===s.fromAction?(gm("map","selected",n,l,s),gm("pie","selected",n,l,s)):"unselect"===s.fromAction&&(gm("map","unselected",n,l,s),gm("pie","unselected",n,l,s))})}(this._messageCenter,this,this._api)},n.prototype.isDisposed=function(){return this._disposed},n.prototype.clear=function(){this._disposed||this.setOption({series:[]},!0)},n.prototype.dispose=function(){if(!this._disposed){this._disposed=!0,this.getDom()&&m0(this.getDom(),JM,"");var s=this,l=s._api,c=s._model;U(s._componentsViews,function(u){u.dispose(c,l)}),U(s._chartsViews,function(u){u.dispose(c,l)}),s._zr.dispose(),s._dom=s._model=s._chartsMap=s._componentsMap=s._chartsViews=s._componentsViews=s._scheduler=s._api=s._zr=s._throttledZrFlush=s._theme=s._coordSysMgr=s._messageCenter=null,delete gu[s.id]}},n.prototype.resize=function(t){if(!this[qa]){if(this._disposed)return;this._zr.resize(t);var s=this._model;if(this._loadingFX&&this._loadingFX.resize(),s){var l=s.resetOption("media"),c=t&&t.silent;this[da]&&(null==c&&(c=this[da].silent),l=!0,this[da]=null),this[qa]=!0;try{l&&xm(this),mu.update.call(this,{type:"resize",animation:ge({duration:0},t&&t.animation)})}catch(u){throw this[qa]=!1,u}this[qa]=!1,C_.call(this,c),Cm.call(this,c)}}},n.prototype.showLoading=function(t,s){if(!this._disposed&&(tt(t)&&(s=t,t=""),t=t||"default",this.hideLoading(),ZM[t])){var l=ZM[t](this._api,s),c=this._zr;this._loadingFX=l,c.add(l)}},n.prototype.hideLoading=function(){this._disposed||(this._loadingFX&&this._zr.remove(this._loadingFX),this._loadingFX=null)},n.prototype.makeActionFromEvent=function(t){var s=ge({},t);return s.type=D_[t.type],s},n.prototype.dispatchAction=function(t,s){if(!this._disposed&&(tt(s)||(s={silent:!!s}),Sm[t.type]&&this._model)){if(this[qa])return void this._pendingActions.push(t);var l=s.silent;rO.call(this,t,l);var c=s.flush;c?this._zr.flush():!1!==c&&ln.browser.weChat&&this._throttledZrFlush(),C_.call(this,l),Cm.call(this,l)}},n.prototype.updateLabelLayout=function(){ys.trigger("series:layoutlabels",this._model,this._api,{updatedSeries:[]})},n.prototype.appendData=function(t){if(!this._disposed){var s=t.seriesIndex;this.getModel().getSeriesByIndex(s).appendData(t),this._scheduler.unfinished=!0,this.getZr().wakeUp()}},n.internalField=function(){function t(v){v.clearColorPalette(),v.eachSeries(function(y){y.clearColorPalette()})}function l(v){for(var y=[],b=v.currentStates,x=0;x0?{duration:C,delay:b.get("delay"),easing:b.get("easing")}:null;y.eachRendered(function(M){if(M.states&&M.states.emphasis){if(jv(M))return;if(M instanceof Ht&&function Lc(r){var n=oH(r);n.normalFill=r.style.fill,n.normalStroke=r.style.stroke;var t=r.states.select||{};n.selectFill=t.style&&t.style.fill||null,n.selectStroke=t.style&&t.style.stroke||null}(M),M.__dirty){var T=M.prevStates;T&&M.useStates(T)}if(x){M.stateTransition=S;var A=M.getTextContent(),E=M.getTextGuideLine();A&&(A.stateTransition=S),E&&(E.stateTransition=S)}M.__dirty&&l(M)}})}xm=function(v){var y=v._scheduler;y.restorePipelines(v._model),y.prepareStageTasks(),$M(v,!0),$M(v,!1),y.plan()},$M=function(v,y){for(var b=v._model,x=v._scheduler,C=y?v._componentsViews:v._chartsViews,S=y?v._componentsMap:v._chartsMap,M=v._zr,T=v._api,A=0;Ay.get("hoverLayerThreshold")&&!ln.node&&!ln.worker&&y.eachSeries(function(S){if(!S.preventUsingHoverLayer){var M=v._chartsMap[S.__viewId];M.__alive&&M.eachRendered(function(T){T.states.emphasis&&(T.states.emphasis.hoverLayer=!0)})}})}(v,y),ys.trigger("series:afterupdate",y,b,C)},ws=function(v){v[eO]=!0,v.getZr().wakeUp()},Pw=function(v){v[eO]&&(v.getZr().storage.traverse(function(y){jv(y)||l(y)}),v[eO]=!1)},aG=function(v){return new(function(y){function b(){return null!==y&&y.apply(this,arguments)||this}return se(b,y),b.prototype.getCoordinateSystems=function(){return v._coordSysMgr.getCoordinateSystems()},b.prototype.getComponentByElement=function(x){for(;x;){var C=x.__ecComponentInfo;if(null!=C)return v._model.getComponent(C.mainType,C.index);x=x.parent}},b.prototype.enterEmphasis=function(x,C){Rc(x,C),ws(v)},b.prototype.leaveEmphasis=function(x,C){Rl(x,C),ws(v)},b.prototype.enterBlur=function(x){$P(x),ws(v)},b.prototype.leaveBlur=function(x){E0(x),ws(v)},b.prototype.enterSelect=function(x){uH(x),ws(v)},b.prototype.leaveSelect=function(x){WP(x),ws(v)},b.prototype.getModel=function(){return v.getModel()},b.prototype.getViewOfComponentModel=function(x){return v.getViewOfComponentModel(x)},b.prototype.getViewOfSeriesModel=function(x){return v.getViewOfSeriesModel(x)},b}(t_))(v)},bs=function(v){function y(b,x){for(var C=0;C=0)){Fw.push(t);var c=TM.wrapStageHandler(t,l);c.__prio=n,c.__raw=t,r.push(c)}}function Bw(r,n){ZM[r]=n}function uO(r){Lz({createCanvas:r})}function aT(r,n,t){var s=HM("registerMap");s&&s(r,n,t)}function hO(r){var n=HM("getMap");return n&&n(r)}var vu=function _X(r){var n=(r=rt(r)).type;n||xn("");var s=n.split(":");2!==s.length&&xn("");var l=!1;"echarts"===s[0]&&(n=s[1],l=!0),r.__isBuiltIn=l,YD.set(n,r)};cf(2e3,xX),cf(4500,T8),cf(4500,A8),cf(2e3,kM),cf(4500,we),cf(7e3,function Z8(r,n){r.eachRawSeries(function(t){if(!r.isSeriesFiltered(t)){var s=t.getData();s.hasItemVisual()&&s.each(function(u){var f=s.getItemVisual(u,"decal");f&&(s.ensureUniqueItemVisual(u,"style").decal=pu(f,n))});var l=s.getVisual("decal");l&&(s.getVisual("style").decal=pu(l,n))}})}),nT(on),Lw(900,function z(r){var n=Ye();r.eachSeries(function(t){var s=t.get("stack");if(s){var l=n.get(s)||n.set(s,[]),c=t.getData(),u={stackResultDimension:c.getCalculationInfo("stackResultDimension"),stackedOverDimension:c.getCalculationInfo("stackedOverDimension"),stackedDimension:c.getCalculationInfo("stackedDimension"),stackedByDimension:c.getCalculationInfo("stackedByDimension"),isStackedByIndex:c.getCalculationInfo("isStackedByIndex"),data:c,seriesModel:t};if(!u.stackedDimension||!u.isStackedByIndex&&!u.stackedByDimension)return;l.length&&c.setCalculationInfo("stackedOnSeries",l[l.length-1].seriesModel),l.push(u)}}),n.each(ND)}),Bw("default",function k8(r,n){Je(n=n||{},{text:"loading",textColor:"#000",fontSize:12,fontWeight:"normal",fontStyle:"normal",fontFamily:"sans-serif",maskColor:"rgba(255, 255, 255, 0.8)",showSpinner:!0,color:"#5470c6",spinnerRadius:10,lineWidth:5,zlevel:0});var t=new lt,s=new Zt({style:{fill:n.maskColor},zlevel:n.zlevel,z:1e4});t.add(s);var u,l=new an({style:{text:n.text,fill:n.textColor,fontSize:n.fontSize,fontWeight:n.fontWeight,fontStyle:n.fontStyle,fontFamily:n.fontFamily},zlevel:n.zlevel,z:10001}),c=new Zt({style:{fill:"none"},textContent:l,textConfig:{position:"right",distance:10},zlevel:n.zlevel,z:10001});return t.add(c),n.showSpinner&&((u=new uw({shape:{startAngle:-SM/2,endAngle:-SM/2+.1,r:n.spinnerRadius},style:{stroke:n.color,lineCap:"round",lineWidth:n.lineWidth},zlevel:n.zlevel,z:10001})).animateShape(!0).when(1e3,{endAngle:3*SM/2}).start("circularInOut"),u.animateShape(!0).when(1e3,{startAngle:3*SM/2}).delay(300).start("circularInOut"),t.add(u)),t.resize=function(){var f=l.getBoundingRect().width,p=n.showSpinner?n.spinnerRadius:0,m=(r.getWidth()-2*p-(n.showSpinner&&f?10:0)-f)/2-(n.showSpinner&&f?0:5+f/2)+(n.showSpinner?0:f/2)+(f?0:p),g=r.getHeight()/2;n.showSpinner&&u.setShape({cx:m,cy:g}),c.setShape({x:m-p,y:g-p,width:2*p,height:2*p}),s.setShape({x:0,y:0,width:r.getWidth(),height:r.getHeight()})},t.resize(),t}),Xl({type:Ud,event:Ud,update:Ud},Ft),Xl({type:Fv,event:Fv,update:Fv},Ft),Xl({type:kh,event:kh,update:kh},Ft),Xl({type:JS,event:JS,update:JS},Ft),Xl({type:Eh,event:Eh,update:Eh},Ft),lO("light",uu),lO("dark",B8);var Vw={},oT=[],lG={registerPreprocessor:nT,registerProcessor:Lw,registerPostInit:cO,registerPostUpdate:dO,registerUpdateLifecycle:A_,registerAction:Xl,registerCoordinateSystem:iT,registerLayout:rT,registerVisual:cf,registerTransform:vu,registerLoading:Bw,registerMap:aT,registerImpl:function W2(r,n){$2[r]=n},PRIORITY:nG,ComponentModel:qt,ComponentView:di,SeriesModel:Zn,ChartView:Vn,registerComponentModel:function(r){qt.registerClass(r)},registerComponentView:function(r){di.registerClass(r)},registerSeriesModel:function(r){Zn.registerClass(r)},registerChartView:function(r){Vn.registerClass(r)},registerSubTypeDefaulter:function(r,n){qt.registerSubTypeDefaulter(r,n)},registerPainter:function(r,n){hP(r,n)}};function Lt(r){ye(r)?U(r,function(n){Lt(n)}):Rt(oT,r)>=0||(oT.push(r),qe(r)&&(r={install:r}),r.install(lG))}function zw(r){return null==r?0:r.length||1}function cG(r){return r}var PX=function(){function r(n,t,s,l,c,u){this._old=n,this._new=t,this._oldKeyGetter=s||cG,this._newKeyGetter=l||cG,this.context=c,this._diffModeMultiple="multiple"===u}return r.prototype.add=function(n){return this._add=n,this},r.prototype.update=function(n){return this._update=n,this},r.prototype.updateManyToOne=function(n){return this._updateManyToOne=n,this},r.prototype.updateOneToMany=function(n){return this._updateOneToMany=n,this},r.prototype.updateManyToMany=function(n){return this._updateManyToMany=n,this},r.prototype.remove=function(n){return this._remove=n,this},r.prototype.execute=function(){this[this._diffModeMultiple?"_executeMultiple":"_executeOneToOne"]()},r.prototype._executeOneToOne=function(){var n=this._old,t=this._new,s={},l=new Array(n.length),c=new Array(t.length);this._initIndexMap(n,null,l,"_oldKeyGetter"),this._initIndexMap(t,s,c,"_newKeyGetter");for(var u=0;u1){var g=p.shift();1===p.length&&(s[f]=p[0]),this._update&&this._update(g,u)}else 1===m?(s[f]=null,this._update&&this._update(p,u)):this._remove&&this._remove(u)}this._performRestAdd(c,s)},r.prototype._executeMultiple=function(){var t=this._new,s={},l={},c=[],u=[];this._initIndexMap(this._old,s,c,"_oldKeyGetter"),this._initIndexMap(t,l,u,"_newKeyGetter");for(var f=0;f1&&1===y)this._updateManyToOne&&this._updateManyToOne(g,m),l[p]=null;else if(1===v&&y>1)this._updateOneToMany&&this._updateOneToMany(g,m),l[p]=null;else if(1===v&&1===y)this._update&&this._update(g,m),l[p]=null;else if(v>1&&y>1)this._updateManyToMany&&this._updateManyToMany(g,m),l[p]=null;else if(v>1)for(var b=0;b1)for(var f=0;f30}var fG,fT,Uw,jw,$w,Ww,pT,Dm=tt,Kl=xe,uT=typeof Int32Array>"u"?Array:Int32Array,hT=["hasItemOption","_nameList","_idList","_invertedIndicesMap","_dimSummary","userOutput","_rawData","_dimValueGetter","_nameDimIdx","_idDimIdx","_nameRepeatCount"],Gw=["_approximateExtent"],pG=function(){function r(n,t){this.type="list",this._dimOmitted=!1,this._nameList=[],this._idList=[],this._visual={},this._layout={},this._itemVisuals=[],this._itemLayouts=[],this._graphicEls=[],this._approximateExtent={},this._calculationInfo={},this.hasItemOption=!1,this.TRANSFERABLE_METHODS=["cloneShallow","downSample","lttbDownSample","map"],this.CHANGABLE_METHODS=["filterSelf","selectRange"],this.DOWNSAMPLE_METHODS=["downSample","lttbDownSample"];var s,l=!1;fO(n)?(s=n.dimensions,this._dimOmitted=n.isDimensionOmitted(),this._schema=n):(l=!0,s=n),s=s||["x","y"];for(var c={},u=[],f={},p=!1,m={},g=0;g=t)){var l=this._store.getProvider();this._updateOrdinalMeta();var c=this._nameList,u=this._idList;if(l.getSource().sourceFormat===$a&&!l.pure)for(var m=[],g=n;g0},r.prototype.ensureUniqueItemVisual=function(n,t){var s=this._itemVisuals,l=s[n];l||(l=s[n]={});var c=l[t];return null==c&&(ye(c=this.getVisual(t))?c=c.slice():Dm(c)&&(c=ge({},c)),l[t]=c),c},r.prototype.setItemVisual=function(n,t,s){var l=this._itemVisuals[n]||{};this._itemVisuals[n]=l,Dm(t)?ge(l,t):l[t]=s},r.prototype.clearAllVisual=function(){this._visual={},this._itemVisuals=[]},r.prototype.setLayout=function(n,t){Dm(n)?ge(this._layout,n):this._layout[n]=t},r.prototype.getLayout=function(n){return this._layout[n]},r.prototype.getItemLayout=function(n){return this._itemLayouts[n]},r.prototype.setItemLayout=function(n,t,s){this._itemLayouts[n]=s?ge(this._itemLayouts[n]||{},t):t},r.prototype.clearItemLayouts=function(){this._itemLayouts.length=0},r.prototype.setItemGraphicEl=function(n,t){KS(this.hostModel&&this.hostModel.seriesIndex,this.dataType,n,t),this._graphicEls[n]=t},r.prototype.getItemGraphicEl=function(n){return this._graphicEls[n]},r.prototype.eachItemGraphicEl=function(n,t){U(this._graphicEls,function(s,l){s&&n&&n.call(t,s,l)})},r.prototype.cloneShallow=function(n){return n||(n=new r(this._schema?this._schema:Kl(this.dimensions,this._getDimInfo,this),this.hostModel)),$w(n,this),n._store=this._store,n},r.prototype.wrapMethod=function(n,t){var s=this[n];qe(s)&&(this.__wrappedMethods=this.__wrappedMethods||[],this.__wrappedMethods.push(n),this[n]=function(){var l=s.apply(this,arguments);return t.apply(this,[l].concat(Bg(arguments)))})},r.internalField=(fG=function(n){var t=n._invertedIndicesMap;U(t,function(s,l){var c=n._dimInfos[l],u=c.ordinalMeta,f=n._store;if(u){s=t[l]=new uT(u.categories.length);for(var p=0;p1&&(p+="__ec__"+g),l[t]=p}})),r}();const Pa=pG;function mO(r,n){return df(r,n).dimensions}function df(r,n){I(r)||(r=pe(r));var t=(n=n||{}).coordDimensions||[],s=n.dimensionsDefine||r.dimensionsDefine||[],l=Ye(),c=[],u=function mG(r,n,t,s){var l=Math.max(r.dimensionsDetectedCount||1,n.length,t.length,s||0);return U(n,function(c){var u;tt(c)&&(u=c.dimsDef)&&(l=Math.max(l,u.length))}),l}(r,t,s,n.dimensionsCount),f=n.canOmitUnusedDimensions&&_u(u),p=s===r.dimensionsDefine,m=p?dT(r):pO(s),g=n.encodeDefine;!g&&n.encodeDefaulter&&(g=n.encodeDefaulter(r,u));for(var v=Ye(g),y=new gs(u),b=0;b0&&(s.name=l+(c-1)),c++,n.set(l,c)}}(c),new k_({source:r,dimensions:c,fullDimensionCount:u,dimensionOmitted:f})}function gG(r,n,t){if(t||n.hasKey(r)){for(var s=0;n.hasKey(r+s);)s++;r+=s}return n.set(r,!0),r}var vO=function r(n){this.coordSysDims=[],this.axisMap=Ye(),this.categoryAxisMap=Ye(),this.coordSysName=n},FX={cartesian2d:function(r,n,t,s){var l=r.getReferringComponents("xAxis",br).models[0],c=r.getReferringComponents("yAxis",br).models[0];n.coordSysDims=["x","y"],t.set("x",l),t.set("y",c),uf(l)&&(s.set("x",l),n.firstCategoryDimIndex=0),uf(c)&&(s.set("y",c),null==n.firstCategoryDimIndex&&(n.firstCategoryDimIndex=1))},singleAxis:function(r,n,t,s){var l=r.getReferringComponents("singleAxis",br).models[0];n.coordSysDims=["single"],t.set("single",l),uf(l)&&(s.set("single",l),n.firstCategoryDimIndex=0)},polar:function(r,n,t,s){var l=r.getReferringComponents("polar",br).models[0],c=l.findAxisModel("radiusAxis"),u=l.findAxisModel("angleAxis");n.coordSysDims=["radius","angle"],t.set("radius",c),t.set("angle",u),uf(c)&&(s.set("radius",c),n.firstCategoryDimIndex=0),uf(u)&&(s.set("angle",u),null==n.firstCategoryDimIndex&&(n.firstCategoryDimIndex=1))},geo:function(r,n,t,s){n.coordSysDims=["lng","lat"]},parallel:function(r,n,t,s){var l=r.ecModel,c=l.getComponent("parallel",r.get("parallelIndex")),u=n.coordSysDims=c.dimensions.slice();U(c.parallelAxisIndex,function(f,p){var m=l.getComponent("parallelAxis",f),g=u[p];t.set(g,m),uf(m)&&(s.set(g,m),null==n.firstCategoryDimIndex&&(n.firstCategoryDimIndex=p))})}};function uf(r){return"category"===r.get("type")}function Mm(r,n,t){var c,u,f,s=(t=t||{}).byIndex,l=t.stackedCoordDimension;!function vG(r){return!fO(r.schema)}(n)?(c=(u=n.schema).dimensions,f=n.store):c=n;var m,g,v,y,p=!(!r||!r.get("stack"));if(U(c,function(T,A){Le(T)&&(c[A]=T={name:T}),p&&!T.isExtraCoord&&(!s&&!m&&T.ordinalMeta&&(m=T),!g&&"ordinal"!==T.type&&"time"!==T.type&&(!l||l===T.coordDim)&&(g=T))}),g&&!s&&!m&&(s=!0),g){v="__\0ecstackresult_"+r.id,y="__\0ecstackedover_"+r.id,m&&(m.createInvertedIndices=!0);var b=g.coordDim,x=g.type,C=0;U(c,function(T){T.coordDim===b&&C++});var S={name:v,coordDim:b,coordDimIndex:C,type:x,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:c.length},M={name:y,coordDim:y,coordDimIndex:C+1,type:x,isExtraCoord:!0,isCalculationCoord:!0,storeDimIndex:c.length+1};u?(f&&(S.storeDimIndex=f.ensureCalculationDimension(y,x),M.storeDimIndex=f.ensureCalculationDimension(v,x)),u.appendCalculationDimension(S),u.appendCalculationDimension(M)):(c.push(S),c.push(M))}return{stackedDimension:g&&g.name,stackedByDimension:m&&m.name,isStackedByIndex:s,stackedOverDimension:y,stackResultDimension:v}}function Zc(r,n){return!!n&&n===r.getCalculationInfo("stackedDimension")}function _O(r,n){return Zc(r,n)?r.getCalculationInfo("stackResultDimension"):n}const Kc=function yG(r,n,t){t=t||{};var l,s=n.getSourceManager(),c=!1;r?(c=!0,l=pe(r)):c=(l=s.getSource()).sourceFormat===$a;var u=function Xc(r){var n=r.get("coordinateSystem"),t=new vO(n),s=FX[n];if(s)return s(r,t,t.axisMap,t.categoryAxisMap),t}(n),f=function NX(r,n){var l,t=r.get("coordinateSystem"),s=eu.get(t);return n&&n.coordSysDims&&(l=xe(n.coordSysDims,function(c){var u={name:c},f=n.axisMap.get(c);if(f){var p=f.get("type");u.type=lT(p)}return u})),l||(l=s&&(s.getDimensionsInfo?s.getDimensionsInfo():s.dimensions.slice())||["x","y"]),l}(n,u),p=t.useEncodeDefaulter,m=qe(p)?p:p?$e(Jv,f,n):null,v=df(l,{coordDimensions:f,generateCoord:t.generateCoord,encodeDefine:n.getEncode(),encodeDefaulter:m,canOmitUnusedDimensions:!c}),y=function _G(r,n,t){var s,l;return t&&U(r,function(c,u){var p=t.categoryAxisMap.get(c.coordDim);p&&(null==s&&(s=u),c.ordinalMeta=p.getOrdinalMeta(),n&&(c.createInvertedIndices=!0)),null!=c.otherDims.itemName&&(l=!0)}),!l&&null!=s&&(r[s].otherDims.itemName=0),s}(v.dimensions,t.createInvertedIndices,u),b=c?null:s.getSharedDataStore(v),x=Mm(n,{schema:v,store:b}),C=new Pa(v,n);C.setCalculationInfo(x);var S=null!=y&&function Tm(r){if(r.sourceFormat===$a){var n=function BX(r){for(var n=0;nt[1]&&(t[1]=n[1])},r.prototype.unionExtentFromData=function(n,t){this.unionExtent(n.getApproximateExtent(t))},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.setExtent=function(n,t){var s=this._extent;isNaN(n)||(s[0]=n),isNaN(t)||(s[1]=t)},r.prototype.isInExtentRange=function(n){return this._extent[0]<=n&&this._extent[1]>=n},r.prototype.isBlank=function(){return this._isBlank},r.prototype.setBlank=function(n){this._isBlank=n},r}();bv(bG);const yu=bG;var wG=0,VX=function(){function r(n){this.categories=n.categories||[],this._needCollect=n.needCollect,this._deduplication=n.deduplication,this.uid=++wG}return r.createByAxisModel=function(n){var t=n.option,s=t.data,l=s&&xe(s,zX);return new r({categories:l,needCollect:!l,deduplication:!1!==t.dedplication})},r.prototype.getOrdinal=function(n){return this._getOrCreateMap().get(n)},r.prototype.parseAndCollect=function(n){var t,s=this._needCollect;if(!Le(n)&&!s)return n;if(s&&!this._deduplication)return this.categories[t=this.categories.length]=n,t;var l=this._getOrCreateMap();return null==(t=l.get(n))&&(s?(this.categories[t=this.categories.length]=n,l.set(n,t)):t=NaN),t},r.prototype._getOrCreateMap=function(){return this._map||(this._map=Ye(this.categories))},r}();function zX(r){return tt(r)&&null!=r.value?r.value:r+""}const yO=VX;function bO(r){return"interval"===r.type||"log"===r.type}function E_(r){var n=Math.pow(10,Ep(r)),t=r/n;return t?2===t?t=3:3===t?t=5:t*=2:t=1,zi(t*n)}function Ql(r){return kl(r)+2}function wO(r,n,t){r[n]=Math.max(Math.min(r[n],t[1]),t[0])}function ht(r,n){return r>=n[0]&&r<=n[1]}function Am(r,n){return n[1]===n[0]?.5:(r-n[0])/(n[1]-n[0])}function Yw(r,n){return r*(n[1]-n[0])+n[0]}var xO=function(r){function n(t){var s=r.call(this,t)||this;s.type="ordinal";var l=s.getSetting("ordinalMeta");return l||(l=new yO({})),ye(l)&&(l=new yO({categories:xe(l,function(c){return tt(c)?c.value:c})})),s._ordinalMeta=l,s._extent=s.getSetting("extent")||[0,l.categories.length-1],s}return se(n,r),n.prototype.parse=function(t){return null==t?NaN:Le(t)?this._ordinalMeta.getOrdinal(t):Math.round(t)},n.prototype.contain=function(t){return ht(t=this.parse(t),this._extent)&&null!=this._ordinalMeta.categories[t]},n.prototype.normalize=function(t){return Am(t=this._getTickNumber(this.parse(t)),this._extent)},n.prototype.scale=function(t){return t=Math.round(Yw(t,this._extent)),this.getRawOrdinalNumber(t)},n.prototype.getTicks=function(){for(var t=[],s=this._extent,l=s[0];l<=s[1];)t.push({value:l}),l++;return t},n.prototype.getMinorTicks=function(t){},n.prototype.setSortInfo=function(t){if(null!=t){for(var s=t.ordinalNumbers,l=this._ordinalNumbersByTick=[],c=this._ticksByOrdinalNumber=[],u=0,f=this._ordinalMeta.categories.length,p=Math.min(f,s.length);u=0&&t=0&&t=t},n.prototype.getOrdinalMeta=function(){return this._ordinalMeta},n.prototype.calcNiceTicks=function(){},n.prototype.calcNiceExtent=function(){},n.type="ordinal",n}(yu);yu.registerClass(xO);const qw=xO;var bu=zi,CO=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="interval",t._interval=0,t._intervalPrecision=2,t}return se(n,r),n.prototype.parse=function(t){return t},n.prototype.contain=function(t){return ht(t,this._extent)},n.prototype.normalize=function(t){return Am(t,this._extent)},n.prototype.scale=function(t){return Yw(t,this._extent)},n.prototype.setExtent=function(t,s){var l=this._extent;isNaN(t)||(l[0]=parseFloat(t)),isNaN(s)||(l[1]=parseFloat(s))},n.prototype.unionExtent=function(t){var s=this._extent;t[0]s[1]&&(s[1]=t[1]),this.setExtent(s[0],s[1])},n.prototype.getInterval=function(){return this._interval},n.prototype.setInterval=function(t){this._interval=t,this._niceExtent=this._extent.slice(),this._intervalPrecision=Ql(t)},n.prototype.getTicks=function(t){var s=this._interval,l=this._extent,c=this._niceExtent,u=this._intervalPrecision,f=[];if(!s)return f;l[0]1e4)return[];var g=f.length?f[f.length-1].value:c[1];return l[1]>g&&f.push(t?{value:bu(g+s,u)}:{value:l[1]}),f},n.prototype.getMinorTicks=function(t){for(var s=this.getTicks(!0),l=[],c=this.getExtent(),u=1;uc[0]&&bs&&(u=l.interval=s);var f=l.intervalPrecision=Ql(u);return function xG(r,n){!isFinite(r[0])&&(r[0]=n[0]),!isFinite(r[1])&&(r[1]=n[1]),wO(r,0,n),wO(r,1,n),r[0]>r[1]&&(r[0]=r[1])}(l.niceTickExtent=[zi(Math.ceil(r[0]/u)*u,f),zi(Math.floor(r[1]/u)*u,f)],r),l}(c,t,s,l);this._intervalPrecision=f.intervalPrecision,this._interval=f.interval,this._niceExtent=f.niceTickExtent}},n.prototype.calcNiceExtent=function(t){var s=this._extent;if(s[0]===s[1])if(0!==s[0]){var l=Math.abs(s[0]);t.fixMax||(s[1]+=l/2),s[0]-=l/2}else s[1]=1;isFinite(s[1]-s[0])||(s[0]=0,s[1]=1),this.calcNiceTicks(t.splitNumber,t.minInterval,t.maxInterval);var u=this._interval;t.fixMin||(s[0]=bu(Math.floor(s[0]/u)*u)),t.fixMax||(s[1]=bu(Math.ceil(s[1]/u)*u))},n.prototype.setNiceExtent=function(t,s){this._niceExtent=[t,s]},n.type="interval",n}(yu);yu.registerClass(CO);const Jl=CO;var mT=typeof Float32Array<"u",Qc=mT?Float32Array:Array;function Ra(r){return ye(r)?mT?new Float32Array(r):r:new Qc(r)}var Xw="__ec_stack_";function Zw(r){return r.get("stack")||Xw+r.seriesIndex}function gT(r){return r.dim+r.index}function SO(r,n){var t=[];return n.eachSeriesByType(r,function(s){er(s)&&t.push(s)}),t}function vT(r){var n=function CG(r){var n={};U(r,function(p){var g=p.coordinateSystem.getBaseAxis();if("time"===g.type||"value"===g.type)for(var v=p.getData(),y=g.dim+"_"+g.index,b=v.getDimensionIndex(v.mapDimension(g.dim)),x=v.getStore(),C=0,S=x.count();C0&&(c=null===c?f:Math.min(c,f))}t[s]=c}}return t}(r),t=[];return U(r,function(s){var f,c=s.coordinateSystem.getBaseAxis(),u=c.getExtent();if("category"===c.type)f=c.getBandWidth();else if("value"===c.type||"time"===c.type){var m=n[c.dim+"_"+c.index],g=Math.abs(u[1]-u[0]),v=c.scale.getExtent(),y=Math.abs(v[1]-v[0]);f=m?g/y*m:g}else{var b=s.getData();f=Math.abs(u[1]-u[0])/b.count()}var x=Re(s.get("barWidth"),f),C=Re(s.get("barMaxWidth"),f),S=Re(s.get("barMinWidth")||(_n(s)?.5:1),f),M=s.get("barGap"),T=s.get("barCategoryGap");t.push({bandWidth:f,barWidth:x,barMaxWidth:C,barMinWidth:S,barGap:M,barCategoryGap:T,axisKey:gT(c),stackId:Zw(s)})}),DO(t)}function DO(r){var n={};U(r,function(s,l){var c=s.axisKey,u=s.bandWidth,f=n[c]||{bandWidth:u,remainedWidth:u,autoWidthCount:0,categoryGap:null,gap:"20%",stacks:{}},p=f.stacks;n[c]=f;var m=s.stackId;p[m]||f.autoWidthCount++,p[m]=p[m]||{width:0,maxWidth:0};var g=s.barWidth;g&&!p[m].width&&(p[m].width=g,g=Math.min(f.remainedWidth,g),f.remainedWidth-=g);var v=s.barMaxWidth;v&&(p[m].maxWidth=v);var y=s.barMinWidth;y&&(p[m].minWidth=y);var b=s.barGap;null!=b&&(f.gap=b);var x=s.barCategoryGap;null!=x&&(f.categoryGap=x)});var t={};return U(n,function(s,l){t[l]={};var c=s.stacks,u=s.bandWidth,f=s.categoryGap;if(null==f){var p=Ut(c).length;f=Math.max(35-4*p,15)+"%"}var m=Re(f,u),g=Re(s.gap,1),v=s.remainedWidth,y=s.autoWidthCount,b=(v-m)/(y+(y-1)*g);b=Math.max(b,0),U(c,function(M){var T=M.maxWidth,A=M.minWidth;if(M.width){var E=M.width;T&&(E=Math.min(E,T)),A&&(E=Math.max(E,A)),M.width=E,v-=E+g*E,y--}else E=b,T&&TE&&(E=A),E!==b&&(M.width=E,v-=E+g*E,y--)}),b=(v-m)/(y+(y-1)*g),b=Math.max(b,0);var C,x=0;U(c,function(M,T){M.width||(M.width=b),C=M,x+=M.width*(1+g)}),C&&(x-=C.width*g);var S=-x/2;U(c,function(M,T){t[l][T]=t[l][T]||{bandWidth:u,offset:S,width:M.width},S+=M.width*(1+g)})}),t}function Xa(r,n){var t=SO(r,n),s=vT(t);U(t,function(l){var c=l.getData(),f=l.coordinateSystem.getBaseAxis(),p=Zw(l),m=s[gT(f)][p];c.setLayout({bandWidth:m.bandWidth,offset:m.offset,size:m.width})})}function hr(r){return{seriesType:r,plan:Xh(),reset:function(n){if(er(n)){var t=n.getData(),s=n.coordinateSystem,l=s.getBaseAxis(),c=s.getOtherAxis(l),u=t.getDimensionIndex(t.mapDimension(c.dim)),f=t.getDimensionIndex(t.mapDimension(l.dim)),p=n.get("showBackground",!0),m=t.mapDimension(c.dim),g=t.getCalculationInfo("stackResultDimension"),v=Zc(t,m)&&!!t.getCalculationInfo("stackedOnSeries"),y=c.isHorizontal(),b=function Gi(r,n){return n.toGlobalCoord(n.dataToCoord("log"===n.type?1:0))}(0,c),x=_n(n),C=n.get("barMinHeight")||0,S=g&&t.getDimensionIndex(g),M=t.getLayout("size"),T=t.getLayout("offset");return{progress:function(A,E){for(var $,L=A.count,R=x&&Ra(3*L),V=x&&p&&Ra(3*L),H=x&&Ra(L),G=s.master.getRect(),j=y?G.width:G.height,q=E.getStore(),K=0;null!=($=A.next());){var ee=q.get(v?S:u,$),ne=q.get(f,$),re=b,ue=void 0;v&&(ue=+ee-q.get(u,$));var ce=void 0,ve=void 0,Te=void 0,Oe=void 0;if(y){var je=s.dataToPoint([ee,ne]);v&&(re=s.dataToPoint([ue,ne])[0]),ce=re,ve=je[1]+T,Te=je[0]-re,Oe=M,Math.abs(Te)0)for(var f=0;f=0;--f)if(p[m]){c=p[m];break}c=c||u.none}if(ye(c)){var v=null==r.level?0:r.level>=0?r.level:c.length+r.level;c=c[v=Math.min(v,c.length-1)]}}return Xp(new Date(r.value),c,l,s)}(t,s,l,this.getSetting("locale"),c)},n.prototype.getTicks=function(){var s=this._extent,l=[];if(!this._interval)return l;l.push({value:s[0],level:0});var c=this.getSetting("useUTC"),u=function Jw(r,n,t,s){var c=sR,u=0;function f(j,$,q,K,ee,ne,re){for(var ue=new Date($),ce=$,ve=ue[K]();ce1&&0===ne&&q.unshift({value:q[0].value-ce})}}for(ne=0;ne=s[0]&&T<=s[1]&&v++)}var A=(s[1]-s[0])/n;if(v>1.5*A&&y>A/1.5||(m.push(S),v>A||r===c[b]))break}g=[]}}var E=Dn(xe(m,function(j){return Dn(j,function($){return $.value>=s[0]&&$.value<=s[1]&&!$.notAdd})}),function(j){return j.length>0}),L=[],R=E.length-1;for(b=0;bl&&(this._approxInterval=l);var f=Kw.length,p=Math.min(function(r,n,t,s){for(;t>>1;r[l][1]16?16:r>7.5?7:r>3.5?4:r>1.5?2:1}function TG(r){return(r/=30*fs)>6?6:r>3?3:r>2?2:1}function AG(r){return(r/=Wp)>12?12:r>6?6:r>3.5?4:r>2?2:1}function kG(r,n){return(r/=n?fD:hD)>30?30:r>20?20:r>15?15:r>10?10:r>5?5:r>2?2:1}function GX(r){return Ip(r,!0)}function Qw(r,n,t){var s=new Date(r);switch(F(n)){case"year":case"month":s[F0(t)](0);case"day":s[gD(t)](1);case"hour":s[N0(t)](0);case"minute":s[cR(t)](0);case"second":s[dR(t)](0),s[vD(t)](0)}return s.getTime()}yu.registerClass(SG);const P_=SG;var Lo=yu.prototype,hf=Jl.prototype,UX=zi,jX=Math.floor,$X=Math.ceil,ex=Math.pow,il=Math.log,tx=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="log",t.base=10,t._originalScale=new Jl,t._interval=0,t}return se(n,r),n.prototype.getTicks=function(t){var l=this._extent,c=this._originalScale.getExtent();return xe(hf.getTicks.call(this,t),function(f){var p=f.value,m=zi(ex(this.base,p));return m=p===l[0]&&this._fixMin?nx(m,c[0]):m,{value:m=p===l[1]&&this._fixMax?nx(m,c[1]):m}},this)},n.prototype.setExtent=function(t,s){var l=il(this.base);t=il(Math.max(0,t))/l,s=il(Math.max(0,s))/l,hf.setExtent.call(this,t,s)},n.prototype.getExtent=function(){var t=this.base,s=Lo.getExtent.call(this);s[0]=ex(t,s[0]),s[1]=ex(t,s[1]);var c=this._originalScale.getExtent();return this._fixMin&&(s[0]=nx(s[0],c[0])),this._fixMax&&(s[1]=nx(s[1],c[1])),s},n.prototype.unionExtent=function(t){this._originalScale.unionExtent(t);var s=this.base;t[0]=il(t[0])/il(s),t[1]=il(t[1])/il(s),Lo.unionExtent.call(this,t)},n.prototype.unionExtentFromData=function(t,s){this.unionExtent(t.getApproximateExtent(s))},n.prototype.calcNiceTicks=function(t){t=t||10;var s=this._extent,l=s[1]-s[0];if(!(l===1/0||l<=0)){var c=pP(l);for(t/l*c<=.5&&(c*=10);!isNaN(c)&&Math.abs(c)<1&&Math.abs(c)>0;)c*=10;var f=[zi($X(s[0]/c)*c),zi(jX(s[1]/c)*c)];this._interval=c,this._niceExtent=f}},n.prototype.calcNiceExtent=function(t){hf.calcNiceExtent.call(this,t),this._fixMin=t.fixMin,this._fixMax=t.fixMax},n.prototype.parse=function(t){return t},n.prototype.contain=function(t){return ht(t=il(t)/il(this.base),this._extent)},n.prototype.normalize=function(t){return Am(t=il(t)/il(this.base),this._extent)},n.prototype.scale=function(t){return t=Yw(t,this._extent),ex(this.base,t)},n.type="log",n}(yu),TO=tx.prototype;function nx(r,n){return UX(r,kl(n))}TO.getMinorTicks=hf.getMinorTicks,TO.getLabel=hf.getLabel,yu.registerClass(tx);const WX=tx;var xs=function(){function r(n,t,s){this._prepareParams(n,t,s)}return r.prototype._prepareParams=function(n,t,s){s[1]0&&p>0&&!m&&(f=0),f<0&&p<0&&!g&&(p=0));var y=this._determinedMin,b=this._determinedMax;return null!=y&&(f=y,m=!0),null!=b&&(p=b,g=!0),{min:f,max:p,minFixed:m,maxFixed:g,isBlank:v}},r.prototype.modifyDataMinMax=function(n,t){this[EG[n]]=t},r.prototype.setDeterminedMinMax=function(n,t){this[_T[n]]=t},r.prototype.freeze=function(){this.frozen=!0},r}(),_T={min:"_determinedMin",max:"_determinedMax"},EG={min:"_dataMin",max:"_dataMax"};function AO(r,n,t){var s=r.rawExtentInfo;return s||(s=new xs(r,n,t),r.rawExtentInfo=s,s)}function ix(r,n){return null==n?null:Ng(n)?NaN:r.parse(n)}function kO(r,n){var t=r.type,s=AO(r,n,r.getExtent()).calculate();r.setBlank(s.isBlank);var l=s.min,c=s.max,u=n.ecModel;if(u&&"time"===t){var f=SO("bar",u),p=!1;if(U(f,function(v){p=p||v.getBaseAxis()===n.axis}),p){var m=vT(f),g=function R_(r,n,t,s){var l=t.axis.getExtent(),c=l[1]-l[0],u=function MO(r,n,t){if(r&&n){var s=r[gT(n)];return null!=s&&null!=t?s[Zw(t)]:s}}(s,t.axis);if(void 0===u)return{min:r,max:n};var f=1/0;U(u,function(b){f=Math.min(b.offset,f)});var p=-1/0;U(u,function(b){p=Math.max(b.offset+b.width,p)}),f=Math.abs(f),p=Math.abs(p);var m=f+p,g=n-r,y=g/(1-(f+p)/c)-g;return{min:r-=y*(f/m),max:n+=y*(p/m)}}(l,c,n,m);l=g.min,c=g.max}}return{extent:[l,c],fixMin:s.minFixed,fixMax:s.maxFixed}}function ff(r,n){var t=n,s=kO(r,t),l=s.extent,c=t.get("splitNumber");r instanceof WX&&(r.base=t.get("logBase"));var u=r.type,f=t.get("interval"),p="interval"===u||"time"===u;r.setExtent(l[0],l[1]),r.calcNiceExtent({splitNumber:c,fixMin:s.fixMin,fixMax:s.fixMax,minInterval:p?t.get("minInterval"):null,maxInterval:p?t.get("maxInterval"):null}),null!=f&&r.setInterval&&r.setInterval(f)}function Ui(r,n){if(n=n||r.get("type"))switch(n){case"category":return new qw({ordinalMeta:r.getOrdinalMeta?r.getOrdinalMeta():r.getCategories(),extent:[1/0,-1/0]});case"time":return new P_({locale:r.ecModel.getLocaleModel(),useUTC:r.ecModel.get("useUTC")});default:return new(yu.getClass(n)||Jl)}}function Xt(r){var s,n=r.getLabelModel().get("formatter"),t="category"===r.type?r.scale.getExtent()[0]:null;return"time"===r.scale.type?(s=n,function(l,c){return r.scale.getFormattedLabel(l,c,s)}):Le(n)?function(s){return function(l){var c=r.scale.getLabel(l);return s.replace("{value}",c??"")}}(n):qe(n)?function(s){return function(l,c){return null!=t&&(c=l.value-t),s(yT(r,l),c,null!=l.level?{level:l.level}:null)}}(n):function(s){return r.scale.getLabel(s)}}function yT(r,n){return"category"===r.type?r.scale.getLabel(n):n.value}function Jc(r,n){var t=n*Math.PI/180,s=r.width,l=r.height,c=s*Math.abs(Math.cos(t))+Math.abs(l*Math.sin(t)),u=s*Math.abs(Math.sin(t))+Math.abs(l*Math.cos(t));return new yt(r.x,r.y,c,u)}function km(r){return r.get("interval")??"auto"}function Cs(r){return"category"===r.type&&0===km(r.getLabelModel())}function ax(r,n){var t={};return U(r.mapDimensionsAll(n),function(s){t[_O(r,s)]=!0}),Ut(t)}var Em=function(){function r(){}return r.prototype.getNeedCrossZero=function(){return!this.option.scale},r.prototype.getCoordSysModel=function(){},r}();function bi(r){return Kc(null,r)}var IG={isDimensionStacked:Zc,enableDataStack:Mm,getStackedDimension:_O};function ox(r,n){var t=n;n instanceof In||(t=new In(n));var s=Ui(t);return s.setExtent(r[0],r[1]),ff(s,t),s}function PG(r){Mi(r,Em)}function sx(r,n){return Xn(r,null,null,"normal"!==(n=n||{}).state)}var RG=1e-8;function bT(r,n){return Math.abs(r-n)l&&(s=u,l=p)}if(s)return function IO(r){for(var n=0,t=0,s=0,l=r.length,c=r[l-1][0],u=r[l-1][1],f=0;f>1^-(1&f),p=p>>1^-(1&p),l=f+=l,c=p+=c,s.push([f/t,p/t])}return s}function pf(r,n){return r=function OG(r){if(!r.UTF8Encoding)return r;var n=r,t=n.UTF8Scale;return null==t&&(t=1024),U(n.features,function(l){var c=l.geometry,u=c.encodeOffsets,f=c.coordinates;if(u)switch(c.type){case"LineString":c.coordinates=L_(f,u,t);break;case"Polygon":case"MultiLineString":cx(f,u,t);break;case"MultiPolygon":U(f,function(p,m){return cx(p,u[m],t)})}}),n.UTF8Encoding=!1,n}(r),xe(Dn(r.features,function(t){return t.geometry&&t.properties&&t.geometry.coordinates.length>0}),function(t){var s=t.properties,l=t.geometry,c=[];switch(l.type){case"Polygon":var u=l.coordinates;c.push(new RO(u[0],u.slice(1)));break;case"MultiPolygon":U(l.coordinates,function(p){p[0]&&c.push(new RO(p[0],p.slice(1)))});break;case"LineString":c.push(new OO([l.coordinates]));break;case"MultiLineString":c.push(new OO(l.coordinates))}var f=new LO(s[n||"name"],c,s.cp);return f.properties=s,f})}function LG(r,n,t,s,l,c,u,f){return new an({style:{text:r,font:n,align:t,verticalAlign:s,padding:l,rich:c,overflow:u?"truncate":null,lineHeight:f}}).getBoundingRect()}var F_=un();function dx(r,n){var c,u,t=BO(r,"labels"),s=km(n);return ux(t,s)||(qe(s)?c=CT(r,s):(u="auto"===s?function VG(r){return F_(r).autoInterval??(F_(r).autoInterval=r.calculateCategoryInterval())}(r):s,c=hx(r,u)),VO(t,s,{labels:c,labelCategoryInterval:u}))}function BO(r,n){return F_(r)[n]||(F_(r)[n]=[])}function ux(r,n){for(var t=0;t1&&g/p>2&&(m=Math.round(Math.ceil(m/p)*p));var v=Cs(r),y=u.get("showMinLabel")||v,b=u.get("showMaxLabel")||v;y&&m!==c[0]&&C(c[0]);for(var x=m;x<=c[1];x+=p)C(x);function C(S){var M={value:S};f.push(t?S:{formattedLabel:s(M),rawLabel:l.getLabel(M),tickValue:S})}return b&&x-p!==c[1]&&C(c[1]),f}function CT(r,n,t){var s=r.scale,l=Xt(r),c=[];return U(s.getTicks(),function(u){var f=s.getLabel(u),p=u.value;n(u.value,f)&&c.push(t?p:{formattedLabel:l(u),rawLabel:f,tickValue:p})}),c}var zO=[0,1],YX=function(){function r(n,t,s){this.onBand=!1,this.inverse=!1,this.dim=n,this.scale=t,this._extent=s||[0,0]}return r.prototype.contain=function(n){var t=this._extent,s=Math.min(t[0],t[1]),l=Math.max(t[0],t[1]);return n>=s&&n<=l},r.prototype.containData=function(n){return this.scale.contain(n)},r.prototype.getExtent=function(){return this._extent.slice()},r.prototype.getPixelPrecision=function(n){return mv(n||this.scale.getExtent(),this._extent)},r.prototype.setExtent=function(n,t){var s=this._extent;s[0]=n,s[1]=t},r.prototype.dataToCoord=function(n,t){var s=this._extent,l=this.scale;return n=l.normalize(n),this.onBand&&"ordinal"===l.type&&ST(s=s.slice(),l.count()),hn(n,zO,s,t)},r.prototype.coordToData=function(n,t){var s=this._extent,l=this.scale;this.onBand&&"ordinal"===l.type&&ST(s=s.slice(),l.count());var c=hn(n,s,zO,t);return this.scale.scale(c)},r.prototype.pointToData=function(n,t){},r.prototype.getTicksCoords=function(n){var t=(n=n||{}).tickModel||this.getTickModel(),c=xe(function NO(r,n){return"category"===r.type?function NG(r,n){var c,u,t=BO(r,"ticks"),s=km(n),l=ux(t,s);if(l)return l;if((!n.get("show")||r.scale.isBlank())&&(c=[]),qe(s))c=CT(r,s,!0);else if("auto"===s){var f=dx(r,r.getLabelModel());u=f.labelCategoryInterval,c=xe(f.labels,function(p){return p.tickValue})}else c=hx(r,u=s,!0);return VO(t,s,{ticks:c,tickCategoryInterval:u})}(r,n):{ticks:xe(r.scale.getTicks(),function(t){return t.value})}}(this,t).ticks,function(f){return{coord:this.dataToCoord("ordinal"===this.scale.type?this.scale.getRawOrdinalNumber(f):f),tickValue:f}},this);return function DT(r,n,t,s){var l=n.length;if(r.onBand&&!t&&l){var u,c=r.getExtent();if(1===l)n[0].coord=c[0],u=n[1]={coord:c[0]};else{var m=(n[l-1].coord-n[0].coord)/(n[l-1].tickValue-n[0].tickValue);U(n,function(b){b.coord-=m/2});var g=r.scale.getExtent();n.push(u={coord:n[l-1].coord+m*(1+g[1]-n[l-1].tickValue)})}var v=c[0]>c[1];y(n[0].coord,c[0])&&(s?n[0].coord=c[0]:n.shift()),s&&y(c[0],n[0].coord)&&n.unshift({coord:c[0]}),y(c[1],u.coord)&&(s?u.coord=c[1]:n.pop()),s&&y(u.coord,c[1])&&n.push({coord:c[1]})}function y(b,x){return b=zi(b),x=zi(x),v?b>x:b0&&t<100||(t=5),xe(this.scale.getMinorTicks(t),function(c){return xe(c,function(u){return{coord:this.dataToCoord(u),tickValue:u}},this)},this)},r.prototype.getViewLabels=function(){return function wT(r){return"category"===r.type?function FG(r){var n=r.getLabelModel(),t=dx(r,n);return!n.get("show")||r.scale.isBlank()?{labels:[],labelCategoryInterval:t.labelCategoryInterval}:t}(r):function BG(r){var n=r.scale.getTicks(),t=Xt(r);return{labels:xe(n,function(s,l){return{level:s.level,formattedLabel:t(s,l),rawLabel:r.scale.getLabel(s),tickValue:s.value}})}}(r)}(this).labels},r.prototype.getLabelModel=function(){return this.model.getModel("axisLabel")},r.prototype.getTickModel=function(){return this.model.getModel("axisTick")},r.prototype.getBandWidth=function(){var n=this._extent,t=this.scale.getExtent(),s=t[1]-t[0]+(this.onBand?1:0);0===s&&(s=1);var l=Math.abs(n[1]-n[0]);return Math.abs(l)/s},r.prototype.calculateCategoryInterval=function(){return function zG(r){var n=function xT(r){var n=r.getLabelModel();return{axisRotate:r.getRotate?r.getRotate():r.isHorizontal&&!r.isHorizontal()?90:0,labelRotate:n.get("rotate")||0,font:n.getFont()}}(r),t=Xt(r),s=(n.axisRotate-n.labelRotate)/180*Math.PI,l=r.scale,c=l.getExtent(),u=l.count();if(c[1]-c[0]<1)return 0;var f=1;u>40&&(f=Math.max(1,Math.floor(u/40)));for(var p=c[0],m=r.dataToCoord(p+1)-r.dataToCoord(p),g=Math.abs(m*Math.cos(s)),v=Math.abs(m*Math.sin(s)),y=0,b=0;p<=c[1];p+=f){var C,S=uv(t({value:p}),n.font,"center","top");C=1.3*S.height,y=Math.max(y,1.3*S.width,7),b=Math.max(b,C,7)}var M=y/g,T=b/v;isNaN(M)&&(M=1/0),isNaN(T)&&(T=1/0);var A=Math.max(0,Math.floor(Math.min(M,T))),E=F_(r.model),L=r.getExtent(),R=E.lastAutoInterval,V=E.lastTickCount;return null!=R&&null!=V&&Math.abs(R-A)<=1&&Math.abs(V-u)<=1&&R>A&&E.axisExtent0===L[0]&&E.axisExtent1===L[1]?A=R:(E.lastTickCount=u,E.lastAutoInterval=A,E.axisExtent0=L[0],E.axisExtent1=L[1]),A}(this)},r}();function ST(r,n){var l=(r[1]-r[0])/n/2;r[0]+=l,r[1]-=l}const Fo=YX;function Ss(r){var n=qt.extend(r);return qt.registerClass(n),n}function HG(r){var n=di.extend(r);return di.registerClass(n),n}function HO(r){var n=Zn.extend(r);return Zn.registerClass(n),n}function GO(r){var n=Vn.extend(r);return Vn.registerClass(n),n}var N_=2*Math.PI,Mn=ds.CMD,UO=["top","right","bottom","left"];function GG(r,n,t,s,l){var c=t.width,u=t.height;switch(r){case"top":s.set(t.x+c/2,t.y-n),l.set(0,-1);break;case"bottom":s.set(t.x+c/2,t.y+u+n),l.set(0,1);break;case"left":s.set(t.x-n,t.y+u/2),l.set(-1,0);break;case"right":s.set(t.x+c+n,t.y+u/2),l.set(1,0)}}function en(r,n,t,s,l,c,u,f,p){u-=r,f-=n;var m=Math.sqrt(u*u+f*f),g=(u/=m)*t+r,v=(f/=m)*t+n;if(Math.abs(s-l)%N_<1e-4)return p[0]=g,p[1]=v,m-t;if(c){var y=s;s=Ic(l),l=Ic(y)}else s=Ic(s),l=Ic(l);s>l&&(l+=N_);var b=Math.atan2(f,u);if(b<0&&(b+=N_),b>=s&&b<=l||b+N_>=s&&b+N_<=l)return p[0]=g,p[1]=v,m-t;var x=t*Math.cos(s)+r,C=t*Math.sin(s)+n,S=t*Math.cos(l)+r,M=t*Math.sin(l)+n,T=(x-u)*(x-u)+(C-f)*(C-f),A=(S-u)*(S-u)+(M-f)*(M-f);return T0){n=n/180*Math.PI,Bo.fromArray(r[0]),ui.fromArray(r[1]),ji.fromArray(r[2]),Dt.sub(ec,Bo,ui),Dt.sub(rl,ji,ui);var t=ec.len(),s=rl.len();if(!(t<.001||s<.001)){ec.scale(1/t),rl.scale(1/s);var l=ec.dot(rl);if(Math.cos(n)1&&Dt.copy(Ii,ji),Ii.toArray(r[1])}}}}function UG(r,n,t){if(t<=180&&t>0){t=t/180*Math.PI,Bo.fromArray(r[0]),ui.fromArray(r[1]),ji.fromArray(r[2]),Dt.sub(ec,ui,Bo),Dt.sub(rl,ji,ui);var s=ec.len(),l=rl.len();if(!(s<.001||l<.001)&&(ec.scale(1/s),rl.scale(1/l),ec.dot(n)=p)Dt.copy(Ii,ji);else{Ii.scaleAndAdd(rl,f/Math.tan(Math.PI/2-g));var v=ji.x!==ui.x?(Ii.x-ui.x)/(ji.x-ui.x):(Ii.y-ui.y)/(ji.y-ui.y);if(isNaN(v))return;v<0?Dt.copy(Ii,ui):v>1&&Dt.copy(Ii,ji)}Ii.toArray(r[1])}}}function $O(r,n,t,s){var l="normal"===t,c=l?r:r.ensureState(t);c.ignore=n;var u=s.get("smooth");u&&!0===u&&(u=.3),c.shape=c.shape||{},u>0&&(c.shape.smooth=u);var f=s.getModel("lineStyle").getLineStyle();l?r.useStyle(f):c.style=f}function jG(r,n){var t=n.smooth,s=n.points;if(s)if(r.moveTo(s[0][0],s[0][1]),t>0&&s.length>=3){var l=_l(s[0],s[1]),c=_l(s[1],s[2]);if(!l||!c)return r.lineTo(s[1][0],s[1][1]),void r.lineTo(s[2][0],s[2][1]);var u=Math.min(l,c)*t,f=Hg([],s[1],s[0],u/l),p=Hg([],s[1],s[2],u/c),m=Hg([],f,p,.5);r.bezierCurveTo(f[0],f[1],f[0],f[1],m[0],m[1]),r.bezierCurveTo(p[0],p[1],p[0],p[1],s[2][0],s[2][1])}else for(var g=1;g0&&c&&R(-v/u,0,u);var T,A,S=r[0],M=r[u-1];return E(),T<0&&V(-T,.8),A<0&&V(A,.8),E(),L(T,A,1),L(A,T,-1),E(),T<0&&H(-T),A<0&&H(A),m}function E(){T=S.rect[n]-s,A=l-M.rect[n]-M.rect[t]}function L(G,j,$){if(G<0){var q=Math.min(j,-G);if(q>0){R(q*$,0,u);var K=q+G;K<0&&V(-K*$,1)}else V(-G*$,1)}}function R(G,j,$){0!==G&&(m=!0);for(var q=j;q<$;q++){var K=r[q];K.rect[n]+=G,K.label[n]+=G}}function V(G,j){for(var $=[],q=0,K=1;K0)for(K=0;K0;K--)R(-$[K-1]*re,K,u)}}function H(G){var j=G<0?-1:1;G=Math.abs(G);for(var $=Math.ceil(G/(u-1)),q=0;q0?R($,0,q+1):R(-$,u-q-1,u),(G-=$)<=0)return}}function qO(r,n,t,s){return YO(r,"y","height",n,t,s)}function XO(r){var n=[];r.sort(function(C,S){return S.priority-C.priority});var t=new yt(0,0,0,0);function s(C){if(!C.ignore){var S=C.ensureState("emphasis");null==S.ignore&&(S.ignore=!1)}C.ignore=!0}for(var l=0;l=0&&s.attr(c.oldLayoutSelect),Rt(y,"emphasis")>=0&&s.attr(c.oldLayoutEmphasis)),fn(s,m,t,p)}else if(s.attr(m),!Lh(s).valueAnimation){var v=Ct(s.style.opacity,1);s.style.opacity=0,ni(s,{style:{opacity:v}},t,p)}if(c.oldLayout=m,s.states.select){var b=c.oldLayoutSelect={};gx(b,m,B_),gx(b,s.states.select,B_)}if(s.states.emphasis){var x=c.oldLayoutEmphasis={};gx(x,m,B_),gx(x,s.states.emphasis,B_)}tR(s,p,g,t,t)}if(l&&!l.ignore&&!l.invisible){var c=qG(l),C={points:l.shape.points};(u=c.oldLayout)?(l.attr({shape:u}),fn(l,{shape:C},t)):(l.setShape(C),l.style.strokePercent=0,ni(l,{style:{strokePercent:1}},t)),c.oldLayout=C}},r}();const XG=KO;var ET=un();function QO(r){r.registerUpdateLifecycle("series:beforeupdate",function(n,t,s){var l=ET(t).labelManager;l||(l=ET(t).labelManager=new XG),l.clearLabels()}),r.registerUpdateLifecycle("series:layoutlabels",function(n,t,s){var l=ET(t).labelManager;s.updatedSeries.forEach(function(c){l.addLabelsOfSeries(t.getViewOfSeriesModel(c))}),l.updateLayoutConfig(t),l.layout(t),l.processLabelsOverall()})}function vx(r,n,t){var s=gl.createCanvas(),l=n.getWidth(),c=n.getHeight(),u=s.style;return u&&(u.position="absolute",u.left="0",u.top="0",u.width=l+"px",u.height=c+"px",s.setAttribute("data-zr-dom-id",r)),s.width=l*t,s.height=c*t,s}Lt(QO);var IT=function(r){function n(t,s,l){var u,c=r.call(this)||this;c.motionBlur=!1,c.lastFrameAlpha=.7,c.dpr=1,c.virtual=!1,c.config={},c.incremental=!1,c.zlevel=0,c.maxRepaintRectCount=5,c.__dirty=!0,c.__firstTimePaint=!0,c.__used=!1,c.__drawIndex=0,c.__startIndex=0,c.__endIndex=0,c.__prevStartIndex=null,c.__prevEndIndex=null,l=l||pS,"string"==typeof t?u=vx(t,s,l):tt(t)&&(t=(u=t).id),c.id=t,c.dom=u;var f=u.style;return f&&(Lb(u),u.onselectstart=function(){return!1},f.padding="0",f.margin="0",f.borderWidth="0"),c.painter=s,c.dpr=l,c}return Yn(n,r),n.prototype.getElementCount=function(){return this.__endIndex-this.__startIndex},n.prototype.afterBrush=function(){this.__prevStartIndex=this.__startIndex,this.__prevEndIndex=this.__endIndex},n.prototype.initContext=function(){this.ctx=this.dom.getContext("2d"),this.ctx.dpr=this.dpr},n.prototype.setUnpainted=function(){this.__firstTimePaint=!0},n.prototype.createBackBuffer=function(){var t=this.dpr;this.domBack=vx("back-"+this.id,this.painter,t),this.ctxBack=this.domBack.getContext("2d"),1!==t&&this.ctxBack.scale(t,t)},n.prototype.createRepaintRects=function(t,s,l,c){if(this.__firstTimePaint)return this.__firstTimePaint=!1,null;var S,u=[],f=this.maxRepaintRectCount,p=!1,m=new yt(0,0,0,0);function g(T){if(T.isFinite()&&!T.isZero())if(0===u.length)(A=new yt(0,0,0,0)).copy(T),u.push(A);else{for(var E=!1,L=1/0,R=0,V=0;V=f)}}for(var v=this.__startIndex;v15)break}ee.prevElClipPaths&&M.restore()};if(T)if(0===T.length)H=S.__endIndex;else for(var j=b.dpr,$=0;$0&&n>l[0]){for(p=0;pn);p++);f=s[l[p]]}if(l.splice(p+1,0,n),s[n]=t,!t.virtual)if(f){var m=f.dom;m.nextSibling?u.insertBefore(t.dom,m.nextSibling):u.appendChild(t.dom)}else u.firstChild?u.insertBefore(t.dom,u.firstChild):u.appendChild(t.dom);t.__painter=this}},r.prototype.eachLayer=function(n,t){for(var s=this._zlevelList,l=0;l0?.01:0),this._needsManuallyCompositing),g.__builtin__||Y1("ZLevel "+m+" has been used by unkown layer "+g.id),g!==c&&(g.__used=!0,g.__startIndex!==p&&(g.__dirty=!0),g.__startIndex=p,g.__drawIndex=g.incremental?-1:p,t(p),c=g),l.__dirty&as&&!l.__inHover&&(g.__dirty=!0,g.incremental&&g.__drawIndex<0&&(g.__drawIndex=p))}t(p),this.eachBuiltinLayer(function(v,y){!v.__used&&v.getElementCount()>0&&(v.__dirty=!0,v.__startIndex=v.__endIndex=v.__drawIndex=0),v.__dirty&&v.__drawIndex<0&&(v.__drawIndex=v.__startIndex)})},r.prototype.clear=function(){return this.eachBuiltinLayer(this._clearLayer),this},r.prototype._clearLayer=function(n){n.clear()},r.prototype.setBackgroundColor=function(n){this._backgroundColor=n,U(this._layers,function(t){t.setUnpainted()})},r.prototype.configLayer=function(n,t){if(t){var s=this._layerConfig;s[n]?At(s[n],t,!0):s[n]=t;for(var l=0;l=gf:-m>=gf),b=m>0?m%gf:m%gf+gf;x=!!y||!oe(v)&&b>=nL==!!g;var C=n+s*tL(u),S=t+l*eL(u);this._start&&this._add("M",C,S);var M=Math.round(c*iL);if(y){var T=1/this._p,A=(g?1:-1)*(gf-T);this._add("A",s,l,M,1,+g,n+s*tL(u+A),t+l*eL(u+A)),T>.01&&this._add("A",s,l,M,0,+g,C,S)}else{var E=n+s*tL(f),L=t+l*eL(f);this._add("A",s,l,M,+x,+g,E,L)}},r.prototype.rect=function(n,t,s,l){this._add("M",n,t),this._add("l",s,0),this._add("l",0,l),this._add("l",-s,0),this._add("Z")},r.prototype.closePath=function(){this._d.length>0&&this._add("Z")},r.prototype._add=function(n,t,s,l,c,u,f,p,m){for(var g=[],v=this._p,y=1;y"}(u,l.attrs)+("style"!==u?ae(p):p||"")+(c?""+t+xe(c,function(m){return s(m)}).join(t)+t:"")+function sU(r){return""}(u)}(r)}function oL(r){return{zrId:r,shadowCache:{},patternCache:{},gradientCache:{},clipPathCache:{},defs:{},cssNodes:{},cssAnims:{},cssClassIdx:0,cssAnimIdx:0,shadowIdx:0,gradientIdx:0,patternIdx:0,clipPathIdx:0}}function sL(r,n,t,s){return Qr("svg","root",{width:r,height:n,xmlns:z_,"xmlns:xlink":rL,version:"1.1",baseProfile:"full",viewBox:!!s&&"0 0 "+r+" "+n},t)}var lL={cubicIn:"0.32,0,0.67,0",cubicOut:"0.33,1,0.68,1",cubicInOut:"0.65,0,0.35,1",quadraticIn:"0.11,0,0.5,0",quadraticOut:"0.5,1,0.89,1",quadraticInOut:"0.45,0,0.55,1",quarticIn:"0.5,0,0.75,0",quarticOut:"0.25,1,0.5,1",quarticInOut:"0.76,0,0.24,1",quinticIn:"0.64,0,0.78,0",quinticOut:"0.22,1,0.36,1",quinticInOut:"0.83,0,0.17,1",sinusoidalIn:"0.12,0,0.39,0",sinusoidalOut:"0.61,1,0.88,1",sinusoidalInOut:"0.37,0,0.63,1",exponentialIn:"0.7,0,0.84,0",exponentialOut:"0.16,1,0.3,1",exponentialInOut:"0.87,0,0.13,1",circularIn:"0.55,0,1,0.45",circularOut:"0,0.55,0.45,1",circularInOut:"0.85,0,0.15,1"},vf="transform-origin";function cU(r,n,t){var s=ge({},r.shape);ge(s,n),r.buildPath(t,s);var l=new nU;return l.reset(eP(r)),t.rebuildPath(l,1),l.generateStr(),l.getStr()}function QX(r,n){var t=n.originX,s=n.originY;(t||s)&&(r[vf]=t+"px "+s+"px")}var dU={fill:"fill",opacity:"opacity",lineWidth:"stroke-width",lineDashOffset:"stroke-dashoffset"};function cL(r,n){var t=n.zrId+"-ani-"+n.cssAnimIdx++;return n.cssAnims[t]=r,t}function dL(r){return Le(r)?lL[r]?"cubic-bezier("+lL[r]+")":Yb(r)?r:"":""}function LT(r,n,t,s){var l=r.animators,c=l.length,u=[];if(r instanceof sM){var f=function uU(r,n,t){var c,u,l={};if(U(r.shape.paths,function(p){var m=oL(t.zrId);m.animation=!0,LT(p,{},m,!0);var g=m.cssAnims,v=m.cssNodes,y=Ut(g),b=y.length;if(b){var x=g[u=y[b-1]];for(var C in x){var S=x[C];l[C]=l[C]||{d:""},l[C].d+=S.d||""}for(var M in v){var T=v[M].animation;T.indexOf(u)>=0&&(c=T)}}}),c){n.d=!1;var f=cL(l,t);return c.replace(u,f)}}(r,n,t);if(f)u.push(f);else if(!c)return}else if(!c)return;for(var p={},m=0;m0}).length)return cL(V,t)+" "+T[0]+" both"}for(var S in p)(f=C(p[S]))&&u.push(f);if(u.length){var M=t.zrId+"-cls-"+t.cssClassIdx++;t.cssNodes["."+M]={animation:u.join(",")},n.class=M}}var H_=Math.round;function tr(r){return r&&Le(r.src)}function hU(r){return r&&qe(r.toDataURL)}function uL(r,n,t,s){(function rU(r,n,t,s){var l=null==n.opacity?1:n.opacity;if(t instanceof _i)r("opacity",l);else{if(function PT(r){var n=r.fill;return null!=n&&n!==Im}(n)){var c=gn(n.fill);r("fill",c.color);var u=null!=n.fillOpacity?n.fillOpacity*c.opacity*l:c.opacity*l;(s||u<1)&&r("fill-opacity",u)}else r("fill",Im);if(function KX(r){var n=r.stroke;return null!=n&&n!==Im}(n)){var f=gn(n.stroke);r("stroke",f.color);var p=n.strokeNoScale?t.getLineScale():1,m=p?(n.lineWidth||0)/p:0,g=null!=n.strokeOpacity?n.strokeOpacity*f.opacity*l:f.opacity*l,v=n.strokeFirst;if((s||1!==m)&&r("stroke-width",m),(s||v)&&r("paint-order",v?"stroke":"fill"),(s||g<1)&&r("stroke-opacity",g),n.lineDash){var y=Sw(t),b=y[0],x=y[1];b&&(x=ZX(x||0),r("stroke-dasharray",b.join(",")),(x||s)&&r("stroke-dashoffset",x))}else s&&r("stroke-dasharray",Im);for(var C=0;C"u"){var S="Image width/height must been given explictly in svg-ssr renderer.";va(y,S),va(b,S)}else if(null==y||null==b){var M=function(j,$){if(j){var q=j.elm,K=y||$.width,ee=b||$.height;"pattern"===j.tag&&(m?(ee=1,K/=c.width):g&&(K=1,ee/=c.height)),j.attrs.width=K,j.attrs.height=ee,q&&(q.setAttribute("width",K),q.setAttribute("height",ee))}},T=_0(x,null,r,function(j){p||M(R,j),M(v,j)});T&&T.width&&T.height&&(y=y||T.width,b=b||T.height)}v=Qr("image","img",{href:x,width:y,height:b}),u.width=y,u.height=b}else l.svgElement&&(v=rt(l.svgElement),u.width=l.svgWidth,u.height=l.svgHeight);if(v){var A,E;p?A=E=1:m?(E=1,A=u.width/c.width):g?(A=1,E=u.height/c.height):u.patternUnits="userSpaceOnUse",null!=A&&!isNaN(A)&&(u.width=A),null!=E&&!isNaN(E)&&(u.height=E);var L=tP(l);L&&(u.patternTransform=L);var R=Qr("pattern","",u,[v]),V=OT(R),H=s.patternCache,G=H[V];G||(G=s.zrId+"-p"+s.patternIdx++,H[V]=G,u.id=G,R=s.defs[G]=Qr("pattern",G,u,[v])),n[t]=Jg(G)}}function pL(r,n,t){var s=t.clipPathCache,l=t.defs,c=s[r.id];if(!c){var u={id:c=t.zrId+"-c"+t.clipPathIdx++};s[r.id]=c,l[c]=Qr("clipPath",c,u,[FT(r,t)])}n["clip-path"]=Jg(c)}function NT(r){return document.createTextNode(r)}function Pm(r,n,t){r.insertBefore(n,t)}function mL(r,n){r.removeChild(n)}function BT(r,n){r.appendChild(n)}function yU(r){return r.parentNode}function bU(r){return r.nextSibling}function gL(r,n){r.textContent=n}var wU=58,iZ=120,xU=Qr("","");function vL(r){return void 0===r}function tc(r){return void 0!==r}function CU(r,n,t){for(var s={},l=n;l<=t;++l){var c=r[l].key;void 0!==c&&(s[c]=l)}return s}function bx(r,n){return r.tag===n.tag&&r.key===n.key}function xx(r){var n,t=r.children,s=r.tag;if(tc(s)){var l=r.elm=aL(s);if(_L(xU,r),ye(t))for(n=0;nc?SU(r,null==t[p+1]?null:t[p+1].elm,t,l,p):VT(r,n,s,c))}(t,s,l):tc(l)?(tc(r.text)&&gL(t,""),SU(t,null,l,0,l.length-1)):tc(s)?VT(t,s,0,s.length-1):tc(r.text)&&gL(t,""):r.text!==n.text&&(tc(s)&&VT(t,s,0,s.length-1),gL(t,n.text)))}var oZ=0,sZ=function(){function r(n,t,s){if(this.type="svg",this.refreshHover=function(){},this.configLayer=function(){},this.storage=t,this._opts=s=ge({},s),this.root=n,this._id="zr"+oZ++,this._oldVNode=sL(s.width,s.height),n&&!s.ssr){var l=this._viewport=document.createElement("div");l.style.cssText="position:relative;overflow:hidden";var c=this._svgDom=this._oldVNode.elm=aL("svg");_L(null,this._oldVNode),l.appendChild(c),n.appendChild(l)}this.resize(s.width,s.height)}return r.prototype.getType=function(){return this.type},r.prototype.getViewportRoot=function(){return this._viewport},r.prototype.getViewportRootOffset=function(){var n=this.getViewportRoot();if(n)return{offsetLeft:n.offsetLeft||0,offsetTop:n.offsetTop||0}},r.prototype.getSvgDom=function(){return this._svgDom},r.prototype.refresh=function(){if(this.root){var n=this.renderToVNode({willUpdate:!0});n.attrs.style="position:absolute;left:0;top:0;user-select:none",function aZ(r,n){if(bx(r,n))U_(r,n);else{var t=r.elm,s=yU(t);xx(n),null!==s&&(Pm(s,n.elm,bU(t)),VT(s,[r],0,0))}}(this._oldVNode,n),this._oldVNode=n}},r.prototype.renderOneToVNode=function(n){return yx(n,oL(this._id))},r.prototype.renderToVNode=function(n){n=n||{};var t=this.storage.getDisplayList(!0),s=this._width,l=this._height,c=oL(this._id);c.animation=n.animation,c.willUpdate=n.willUpdate,c.compress=n.compress;var u=[],f=this._bgVNode=function zT(r,n,t,s){var l;if(t&&"none"!==t)if(l=Qr("rect","bg",{width:r,height:n,x:"0",y:"0",id:"0"}),JI(t))vU({fill:t},l.attrs,"fill",s);else if(Kb(t))_U({style:{fill:t},dirty:Ft,getBoundingRect:function(){return{width:r,height:n}}},l.attrs,"fill",s);else{var c=gn(t),f=c.opacity;l.attrs.fill=c.color,f<1&&(l.attrs["fill-opacity"]=f)}return l}(s,l,this._backgroundColor,c);f&&u.push(f);var p=n.compress?null:this._mainVNode=Qr("g","main",{},[]);this._paintList(t,c,p?p.children:u),p&&u.push(p);var m=xe(Ut(c.defs),function(y){return c.defs[y]});if(m.length&&u.push(Qr("defs","defs",{},m)),n.animation){var g=function lU(r,n,t){var s=(t=t||{}).newline?"\n":"",l=" {"+s,c=s+"}",u=xe(Ut(r),function(p){return p+l+xe(Ut(r[p]),function(m){return m+":"+r[p][m]+";"}).join(s)+c}).join(s),f=xe(Ut(n),function(p){return"@keyframes "+p+l+xe(Ut(n[p]),function(m){return m+l+xe(Ut(n[p][m]),function(g){var v=n[p][m][g];return"d"===g&&(v='path("'+v+'")'),g+":"+v+";"}).join(s)+c}).join(s)+c}).join(s);return u||f?[""].join(s):""}(c.cssNodes,c.cssAnims,{newline:!0});if(g){var v=Qr("style","stl",{},[],g);u.push(v)}}return sL(s,l,u,n.useViewBox)},r.prototype.renderToString=function(n){return OT(this.renderToVNode({animation:Ct((n=n||{}).cssAnimation,!0),willUpdate:!1,compress:!0,useViewBox:Ct(n.useViewBox,!0)}),{newline:!0})},r.prototype.setBackgroundColor=function(n){this._backgroundColor=n},r.prototype.getSvgRoot=function(){return this._mainVNode&&this._mainVNode.elm},r.prototype._paintList=function(n,t,s){for(var f,p,l=n.length,c=[],u=0,m=0,g=0;g=0&&(!y||!p||y[C]!==p[C]);C--);for(var S=x-1;S>C;S--)f=c[--u-1];for(var M=C+1;M-1&&(m.style.stroke=m.style.fill,m.style.fill="#fff",m.style.lineWidth=2),s},n.type="series.line",n.dependencies=["grid","polar"],n.defaultOption={z:3,coordinateSystem:"cartesian2d",legendHoverLink:!0,clip:!0,label:{position:"top"},endLabel:{show:!1,valueAnimation:!0,distance:8},lineStyle:{width:2,type:"solid"},emphasis:{scale:!0},step:!1,smooth:!1,smoothMonotone:null,symbol:"emptyCircle",symbolSize:4,symbolRotate:null,showSymbol:!0,showAllSymbol:"auto",connectNulls:!1,sampling:"none",animationEasing:"linear",progressive:0,hoverLayerThreshold:1/0,universalTransition:{divideShape:"clone"},triggerLineEvent:!1},n}(Zn);const MU=Cx;function _f(r,n){var t=r.mapDimensionsAll("defaultedLabel"),s=t.length;if(1===s){var l=$h(r,n,t[0]);return null!=l?l+"":null}if(s){for(var c=[],u=0;u=0&&s.push(n[c])}return s.join(" ")}var TU=function(r){function n(t,s,l,c){var u=r.call(this)||this;return u.updateData(t,s,l,c),u}return se(n,r),n.prototype._createSymbol=function(t,s,l,c,u){this.removeAll();var f=Ji(t,-1,-1,2,2,null,u);f.attr({z2:100,culling:!0,scaleX:c[0]/2,scaleY:c[1]/2}),f.drift=AU,this._symbolType=t,this.add(f)},n.prototype.stopSymbolAnimation=function(t){this.childAt(0).stopAnimation(null,t)},n.prototype.getSymbolType=function(){return this._symbolType},n.prototype.getSymbolPath=function(){return this.childAt(0)},n.prototype.highlight=function(){Rc(this.childAt(0))},n.prototype.downplay=function(){Rl(this.childAt(0))},n.prototype.setZ=function(t,s){var l=this.childAt(0);l.zlevel=t,l.z=s},n.prototype.setDraggable=function(t,s){var l=this.childAt(0);l.draggable=t,l.cursor=!s&&t?"move":l.cursor},n.prototype.updateData=function(t,s,l,c){this.silent=!1;var u=t.getItemVisual(s,"symbol")||"circle",f=t.hostModel,p=n.getSymbolSize(t,s),m=u!==this._symbolType,g=c&&c.disableAnimation;if(m){var v=t.getItemVisual(s,"symbolKeepAspect");this._createSymbol(u,t,s,p,v)}else{(y=this.childAt(0)).silent=!1;var b={scaleX:p[0]/2,scaleY:p[1]/2};g?y.attr(b):fn(y,b,f,s),us(y)}if(this._updateCommon(t,s,p,l,c),m){var y=this.childAt(0);g||(b={scaleX:this._sizeX,scaleY:this._sizeY,style:{opacity:y.style.opacity}},y.scaleX=y.scaleY=0,y.style.opacity=0,ni(y,b,f,s))}g&&this.childAt(0).stopAnimation("leave")},n.prototype._updateCommon=function(t,s,l,c,u){var m,g,v,y,b,x,C,S,M,f=this.childAt(0),p=t.hostModel;if(c&&(m=c.emphasisItemStyle,g=c.blurItemStyle,v=c.selectItemStyle,y=c.focus,b=c.blurScope,C=c.labelStatesModels,S=c.hoverScale,M=c.cursorStyle,x=c.emphasisDisabled),!c||t.hasItemOption){var T=c&&c.itemModel?c.itemModel:t.getItemModel(s),A=T.getModel("emphasis");m=A.getModel("itemStyle").getItemStyle(),v=T.getModel(["select","itemStyle"]).getItemStyle(),g=T.getModel(["blur","itemStyle"]).getItemStyle(),y=A.get("focus"),b=A.get("blurScope"),x=A.get("disabled"),C=Or(T),S=A.getShallow("scale"),M=T.getShallow("cursor")}var E=t.getItemVisual(s,"symbolRotate");f.attr("rotation",(E||0)*Math.PI/180||0);var L=_m(t.getItemVisual(s,"symbolOffset"),l);L&&(f.x=L[0],f.y=L[1]),M&&f.attr("cursor",M);var R=t.getItemVisual(s,"style"),V=R.fill;if(f instanceof _i){var H=f.style;f.useStyle(ge({image:H.image,x:H.x,y:H.y,width:H.width,height:H.height},R))}else f.useStyle(f.__isEmptyBrush?ge({},R):R),f.style.decal=null,f.setColor(V,u&&u.symbolInnerColor),f.style.strokeNoScale=!0;var G=t.getItemVisual(s,"liftZ"),j=this._z2;null!=G?null==j&&(this._z2=f.z2,f.z2+=G):null!=j&&(f.z2=j,this._z2=null);var $=u&&u.useNameLabel;Xr(f,C,{labelFetcher:p,labelDataIndex:s,defaultText:function q(ne){return $?t.getName(ne):_f(t,ne)},inheritColor:V,defaultOpacity:R.opacity}),this._sizeX=l[0]/2,this._sizeY=l[1]/2;var K=f.ensureState("emphasis");K.style=m,f.ensureState("select").style=v,f.ensureState("blur").style=g;var ee=null==S||!0===S?Math.max(1.1,3/this._sizeY):isFinite(S)&&S>0?+S:1;K.scaleX=this._sizeX*ee,K.scaleY=this._sizeY*ee,this.setSymbolScale(1),Pi(this,y,b,x)},n.prototype.setSymbolScale=function(t){this.scaleX=this.scaleY=t},n.prototype.fadeOut=function(t,s,l){var c=this.childAt(0),u=mt(this).dataIndex,f=l&&l.animation;if(this.silent=c.silent=!0,l&&l.fadeLabel){var p=c.getTextContent();p&&Fc(p,{style:{opacity:0}},s,{dataIndex:u,removeOpt:f,cb:function(){c.removeTextContent()}})}else c.removeTextContent();Fc(c,{style:{opacity:0},scaleX:0,scaleY:0},s,{dataIndex:u,cb:t,removeOpt:f})},n.getSymbolSize=function(t,s){return y_(t.getItemVisual(s,"symbolSize"))},n}(lt);function AU(r,n){this.parent.drift(r,n)}const $_=TU;function Rm(r,n,t,s){return n&&!isNaN(n[0])&&!isNaN(n[1])&&!(s.isIgnore&&s.isIgnore(t))&&!(s.clipShape&&!s.clipShape.contain(n[0],n[1]))&&"none"!==r.getItemVisual(t,"symbol")}function W_(r){return null!=r&&!tt(r)&&(r={isIgnore:r}),r||{}}function HT(r){var n=r.hostModel,t=n.getModel("emphasis");return{emphasisItemStyle:t.getModel("itemStyle").getItemStyle(),blurItemStyle:n.getModel(["blur","itemStyle"]).getItemStyle(),selectItemStyle:n.getModel(["select","itemStyle"]).getItemStyle(),focus:t.get("focus"),blurScope:t.get("blurScope"),emphasisDisabled:t.get("disabled"),hoverScale:t.get("scale"),labelStatesModels:Or(n),cursorStyle:n.get("cursor")}}var wL=function(){function r(n){this.group=new lt,this._SymbolCtor=n||$_}return r.prototype.updateData=function(n,t){this._progressiveEls=null,t=W_(t);var s=this.group,l=n.hostModel,c=this._data,u=this._SymbolCtor,f=t.disableAnimation,p=HT(n),m={disableAnimation:f},g=t.getSymbolPoint||function(v){return n.getItemLayout(v)};c||s.removeAll(),n.diff(c).add(function(v){var y=g(v);if(Rm(n,y,v,t)){var b=new u(n,v,p,m);b.setPosition(y),n.setItemGraphicEl(v,b),s.add(b)}}).update(function(v,y){var b=c.getItemGraphicEl(y),x=g(v);if(Rm(n,x,v,t)){var C=n.getItemVisual(v,"symbol")||"circle",S=b&&b.getSymbolType&&b.getSymbolType();if(!b||S&&S!==C)s.remove(b),(b=new u(n,v,p,m)).setPosition(x);else{b.updateData(n,v,p,m);var M={x:x[0],y:x[1]};f?b.attr(M):fn(b,M,l)}s.add(b),n.setItemGraphicEl(v,b)}else s.remove(b)}).remove(function(v){var y=c.getItemGraphicEl(v);y&&y.fadeOut(function(){s.remove(y)},l)}).execute(),this._getSymbolPoint=g,this._data=n},r.prototype.updateLayout=function(){var n=this,t=this._data;t&&t.eachItemGraphicEl(function(s,l){var c=n._getSymbolPoint(l);s.setPosition(c),s.markRedraw()})},r.prototype.incrementalPrepareUpdate=function(n){this._seriesScope=HT(n),this._data=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(n,t,s){function l(p){p.isGroup||(p.incremental=!0,p.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[],s=W_(s);for(var c=n.start;c0?t=s[0]:s[1]<0&&(t=s[1]),t}(l,t),u=s.dim,f=l.dim,p=n.mapDimension(f),m=n.mapDimension(u),g="x"===f||"radius"===f?1:0,v=xe(r.dimensions,function(x){return n.mapDimension(x)}),y=!1,b=n.getCalculationInfo("stackResultDimension");return Zc(n,v[0])&&(y=!0,v[0]=b),Zc(n,v[1])&&(y=!0,v[1]=b),{dataDimsForPoint:v,valueStart:c,valueAxisDim:f,baseAxisDim:u,stacked:!!y,valueDim:p,baseDim:m,baseDataOffset:g,stackedOverDimension:n.getCalculationInfo("stackedOverDimension")}}function UT(r,n,t,s){var l=NaN;r.stacked&&(l=t.get(t.getCalculationInfo("stackedOverDimension"),s)),isNaN(l)&&(l=r.valueStart);var c=r.baseDataOffset,u=[];return u[c]=t.get(r.baseDim,s),u[1-c]=l,n.dataToPoint(u)}var wu=Math.min,xu=Math.max;function Cu(r,n){return isNaN(r)||isNaN(n)}function jT(r,n,t,s,l,c,u,f,p){for(var m,g,v,y,b,x,C=t,S=0;S=l||C<0)break;if(Cu(M,T)){if(p){C+=c;continue}break}if(C===t)r[c>0?"moveTo":"lineTo"](M,T),v=M,y=T;else{var A=M-m,E=T-g;if(A*A+E*E<.5){C+=c;continue}if(u>0){for(var L=C+c,R=n[2*L],V=n[2*L+1];R===M&&V===T&&S=s||Cu(R,V))b=M,x=T;else{j=R-m,$=V-g;var ee=M-m,ne=R-M,re=T-g,ue=V-T,ce=void 0,ve=void 0;if("x"===f){var Te=j>0?1:-1;b=M-Te*(ce=Math.abs(ee))*u,x=T,q=M+Te*(ve=Math.abs(ne))*u,K=T}else if("y"===f){var Oe=$>0?1:-1;b=M,x=T-Oe*(ce=Math.abs(re))*u,q=M,K=T+Oe*(ve=Math.abs(ue))*u}else ce=Math.sqrt(ee*ee+re*re),b=M-j*u*(1-(G=(ve=Math.sqrt(ne*ne+ue*ue))/(ve+ce))),x=T-$*u*(1-G),K=T+$*u*G,q=wu(q=M+j*u*G,xu(R,M)),K=wu(K,xu(V,T)),q=xu(q,wu(R,M)),x=T-($=(K=xu(K,wu(V,T)))-T)*ce/ve,b=wu(b=M-(j=q-M)*ce/ve,xu(m,M)),x=wu(x,xu(g,T)),q=M+(j=M-(b=xu(b,wu(m,M))))*ve/ce,K=T+($=T-(x=xu(x,wu(g,T))))*ve/ce}r.bezierCurveTo(v,y,b,x,M,T),v=q,y=K}else r.lineTo(M,T)}m=M,g=T,C+=c}return S}var CL=function r(){this.smooth=0,this.smoothConstraint=!0},SL=function(r){function n(t){var s=r.call(this,t)||this;return s.type="ec-polyline",s}return se(n,r),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new CL},n.prototype.buildPath=function(t,s){var l=s.points,c=0,u=l.length/2;if(s.connectNulls){for(;u>0&&Cu(l[2*u-2],l[2*u-1]);u--);for(;c=0){var E=m?(x-p)*A+p:(b-f)*A+f;return m?[t,E]:[E,t]}f=b,p=x;break;case u.C:b=c[v++],x=c[v++],C=c[v++],S=c[v++],M=c[v++],T=c[v++];var L=m?iS(f,b,C,M,t,g):iS(p,x,S,T,t,g);if(L>0)for(var R=0;R=0)return E=m?jr(p,x,S,T,V):jr(f,b,C,M,V),m?[t,E]:[E,t]}f=M,p=T}}},n}(Ht),DL=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n}(CL),Y_=function(r){function n(t){var s=r.call(this,t)||this;return s.type="ec-polygon",s}return se(n,r),n.prototype.getDefaultShape=function(){return new DL},n.prototype.buildPath=function(t,s){var l=s.points,c=s.stackedOnPoints,u=0,f=l.length/2,p=s.smoothMonotone;if(s.connectNulls){for(;f>0&&Cu(l[2*f-2],l[2*f-1]);f--);for(;us)return!1;return!0}(c,n))){var u=n.mapDimension(c.dim),f={};return U(c.getViewLabels(),function(p){var m=c.scale.getRawOrdinalNumber(p.tickValue);f[m]=1}),function(p){return!f.hasOwnProperty(n.get(u,p))}}}}(t,p,u),j=this._data;j&&j.eachItemGraphicEl(function(mn,Pt){mn.__temp&&(f.remove(mn),j.setItemGraphicEl(Pt,null))}),V||x.remove(),f.add(M);var q,$=!y&&t.get("step");u&&u.getArea&&t.get("clip",!0)&&(null!=(q=u.getArea()).width?(q.x-=.1,q.y-=.1,q.width+=.2,q.height+=.2):q.r0&&(q.r0-=.5,q.r+=.5)),this._clipShapeForSymbol=q;var K=function IU(r,n,t){var s=r.getVisual("visualMeta");if(s&&s.length&&r.count()&&"cartesian2d"===n.type){for(var l,c,u=s.length-1;u>=0;u--){var f=r.getDimensionInfo(s[u].dimension);if("x"===(l=f&&f.coordDim)||"y"===l){c=s[u];break}}if(c){var p=n.getAxis(l),m=xe(c.stops,function(A){return{coord:p.toGlobalCoord(p.dataToCoord(A.value)),color:A.color}}),g=m.length,v=c.outerColors.slice();g&&m[0].coord>m[g-1].coord&&(m.reverse(),v.reverse());var y=function EU(r,n){var l,c,t=[],s=r.length;function u(g,v,y){var b=g.coord;return{coord:y,color:QI((y-b)/(v.coord-b),[g.color,v.color])}}for(var f=0;fn){c?t.push(u(c,p,n)):l&&t.push(u(l,p,0),u(l,p,n));break}l&&(t.push(u(l,p,0)),l=null),t.push(p),c=p}}return t}(m,"x"===l?t.getWidth():t.getHeight()),b=y.length;if(!b&&g)return m[0].coord<0?v[1]?v[1]:m[g-1].color:v[0]?v[0]:m[0].color;var C=y[0].coord-10,S=y[b-1].coord+10,M=S-C;if(M<.001)return"transparent";U(y,function(A){A.offset=(A.coord-C)/M}),y.push({offset:b?y[b-1].offset:.5,color:v[1]||"transparent"}),y.unshift({offset:b?y[0].offset:.5,color:v[0]||"transparent"});var T=new dm(0,0,0,0,y,!0);return T[l]=C,T[l+"2"]=S,T}}}(p,u,l)||p.getVisual("style")[p.getVisual("drawType")];if(C&&b.type===u.type&&$===this._step){A&&!S?S=this._newPolygon(v,R):S&&!A&&(M.remove(S),S=this._polygon=null),y||this._initOrUpdateEndLabel(t,u,Bh(K));var ee=M.getClipPath();ee?ni(ee,{shape:YT(this,u,!1,t).shape},t):M.setClipPath(YT(this,u,!0,t)),V&&x.updateData(p,{isIgnore:G,clipShape:q,disableAnimation:!0,getSymbolPoint:function(mn){return[v[2*mn],v[2*mn+1]]}}),(!TL(this._stackedOnPoints,R)||!TL(this._points,v))&&(T?this._doUpdateAnimation(p,R,u,l,$,E,H):($&&(v=Du(v,u,$,H),R&&(R=Du(R,u,$,H))),C.setShape({points:v}),S&&S.setShape({points:v,stackedOnPoints:R})))}else V&&x.updateData(p,{isIgnore:G,clipShape:q,disableAnimation:!0,getSymbolPoint:function(mn){return[v[2*mn],v[2*mn+1]]}}),T&&this._initSymbolLabelAnimation(p,u,q),$&&(v=Du(v,u,$,H),R&&(R=Du(R,u,$,H))),C=this._newPolyline(v),A?S=this._newPolygon(v,R):S&&(M.remove(S),S=this._polygon=null),y||this._initOrUpdateEndLabel(t,u,Bh(K)),M.setClipPath(YT(this,u,!0,t));var re=t.getModel("emphasis"),ue=re.get("focus"),ce=re.get("blurScope"),ve=re.get("disabled");C.useStyle(Je(m.getLineStyle(),{fill:"none",stroke:K,lineJoin:"bevel"})),oa(C,t,"lineStyle"),C.style.lineWidth>0&&"bolder"===t.get(["emphasis","lineStyle","width"])&&(C.getState("emphasis").style.lineWidth=+C.style.lineWidth+1),mt(C).seriesIndex=t.seriesIndex,Pi(C,ue,ce,ve);var Oe=AL(t.get("smooth")),je=t.get("smoothMonotone");if(C.setShape({smooth:Oe,smoothMonotone:je,connectNulls:H}),S){var nt=p.getCalculationInfo("stackedOnSeries"),Ke=0;S.useStyle(Je(g.getAreaStyle(),{fill:K,opacity:.7,lineJoin:"bevel",decal:p.getVisual("style").decal})),nt&&(Ke=AL(nt.get("smooth"))),S.setShape({smooth:Oe,stackedOnSmooth:Ke,smoothMonotone:je,connectNulls:H}),oa(S,t,"areaStyle"),mt(S).seriesIndex=t.seriesIndex,Pi(S,ue,ce,ve)}var Gt=function(mn){c._changePolyState(mn)};p.eachItemGraphicEl(function(mn){mn&&(mn.onHoverStateChange=Gt)}),this._polyline.onHoverStateChange=Gt,this._data=p,this._coordSys=u,this._stackedOnPoints=R,this._points=v,this._step=$,this._valueOrigin=E,t.get("triggerLineEvent")&&(this.packEventData(t,C),S&&this.packEventData(t,S))},n.prototype.packEventData=function(t,s){mt(s).eventData={componentType:"series",componentSubType:"line",componentIndex:t.componentIndex,seriesIndex:t.seriesIndex,seriesName:t.name,seriesType:"line"}},n.prototype.highlight=function(t,s,l,c){var u=t.getData(),f=Mc(u,c);if(this._changePolyState("emphasis"),!(f instanceof Array)&&null!=f&&f>=0){var p=u.getLayout("points"),m=u.getItemGraphicEl(f);if(!m){var g=p[2*f],v=p[2*f+1];if(isNaN(g)||isNaN(v)||this._clipShapeForSymbol&&!this._clipShapeForSymbol.contain(g,v))return;var y=t.get("zlevel")||0,b=t.get("z")||0;(m=new $_(u,f)).x=g,m.y=v,m.setZ(y,b);var x=m.getSymbolPath().getTextContent();x&&(x.zlevel=y,x.z=b,x.z2=this._polyline.z2+1),m.__temp=!0,u.setItemGraphicEl(f,m),m.stopSymbolAnimation(!0),this.group.add(m)}m.highlight()}else Vn.prototype.highlight.call(this,t,s,l,c)},n.prototype.downplay=function(t,s,l,c){var u=t.getData(),f=Mc(u,c);if(this._changePolyState("normal"),null!=f&&f>=0){var p=u.getItemGraphicEl(f);p&&(p.__temp?(u.setItemGraphicEl(f,null),this.group.remove(p)):p.downplay())}else Vn.prototype.downplay.call(this,t,s,l,c)},n.prototype._changePolyState=function(t){var s=this._polygon;Hv(this._polyline,t),s&&Hv(s,t)},n.prototype._newPolyline=function(t){var s=this._polyline;return s&&this._lineGroup.remove(s),s=new SL({shape:{points:t},segmentIgnoreThreshold:2,z2:10}),this._lineGroup.add(s),this._polyline=s,s},n.prototype._newPolygon=function(t,s){var l=this._polygon;return l&&this._lineGroup.remove(l),l=new Y_({shape:{points:t,stackedOnPoints:s},segmentIgnoreThreshold:2}),this._lineGroup.add(l),this._polygon=l,l},n.prototype._initSymbolLabelAnimation=function(t,s,l){var c,u,f=s.getBaseAxis(),p=f.inverse;"cartesian2d"===s.type?(c=f.isHorizontal(),u=!1):"polar"===s.type&&(c="angle"===f.dim,u=!0);var m=t.hostModel,g=m.get("animationDuration");qe(g)&&(g=g(null));var v=m.get("animationDelay")||0,y=qe(v)?v(null):v;t.eachItemGraphicEl(function(b,x){var C=b;if(C){var M=void 0,T=void 0,A=void 0;if(l)if(u){var E=l,L=s.pointToCoord([b.x,b.y]);c?(M=E.startAngle,T=E.endAngle,A=-L[1]/180*Math.PI):(M=E.r0,T=E.r,A=L[0])}else c?(M=l.x,T=l.x+l.width,A=b.x):(M=l.y+l.height,T=l.y,A=b.y);var V=T===M?0:(A-M)/(T-M);p&&(V=1-V);var H=qe(v)?v(x):g*V+y,G=C.getSymbolPath(),j=G.getTextContent();C.attr({scaleX:0,scaleY:0}),C.animateTo({scaleX:1,scaleY:1},{duration:200,setToFinal:!0,delay:H}),j&&j.animateFrom({style:{opacity:0}},{duration:300,delay:H}),G.disableLabelAnimation=!0}})},n.prototype._initOrUpdateEndLabel=function(t,s,l){var c=t.getModel("endLabel");if(IL(t)){var u=t.getData(),f=this._polyline,p=u.getLayout("points");if(!p)return f.removeTextContent(),void(this._endLabel=null);var m=this._endLabel;m||((m=this._endLabel=new an({z2:200})).ignoreClip=!0,f.setTextContent(this._endLabel),f.disableLabelAnimation=!0);var g=function EL(r){for(var n=r.length/2;n>0&&cZ(r[2*n-2],r[2*n-1]);n--);return n-1}(p);g>=0&&(Xr(f,Or(t,"endLabel"),{inheritColor:l,labelFetcher:t,labelDataIndex:g,defaultText:function(v,y,b){return null!=b?bL(u,b):_f(u,v)},enableTextSetter:!0},function PL(r,n){var t=n.getBaseAxis(),s=t.isHorizontal(),l=t.inverse,c=s?l?"right":"left":"center",u=s?"middle":l?"top":"bottom";return{normal:{align:r.get("align")||c,verticalAlign:r.get("verticalAlign")||u}}}(c,s)),f.textConfig.position=null)}else this._endLabel&&(this._polyline.removeTextContent(),this._endLabel=null)},n.prototype._endLabelOnDuring=function(t,s,l,c,u,f,p){var m=this._endLabel,g=this._polyline;if(m){t<1&&null==c.originalX&&(c.originalX=m.x,c.originalY=m.y);var v=l.getLayout("points"),y=l.hostModel,b=y.get("connectNulls"),x=f.get("precision"),C=f.get("distance")||0,S=p.getBaseAxis(),M=S.isHorizontal(),T=S.inverse,A=s.shape,E=T?M?A.x:A.y+A.height:M?A.x+A.width:A.y,L=(M?C:0)*(T?-1:1),R=(M?0:-C)*(T?-1:1),V=M?"x":"y",H=function RU(r,n,t){for(var c,u,s=r.length/2,l="x"===t?0:1,f=0,p=-1,m=0;m=n||c>=n&&u<=n){p=m;break}f=m,c=u}return{range:[f,p],t:(n-c)/(u-c)}}(v,E,V),G=H.range,j=G[1]-G[0],$=void 0;if(j>=1){if(j>1&&!b){var q=PU(v,G[0]);m.attr({x:q[0]+L,y:q[1]+R}),u&&($=y.getRawValue(G[0]))}else{(q=g.getPointOn(E,V))&&m.attr({x:q[0]+L,y:q[1]+R});var K=y.getRawValue(G[0]),ee=y.getRawValue(G[1]);u&&($=Ga(l,x,K,ee,H.t))}c.lastFrameIndex=G[0]}else{var ne=1===t||c.lastFrameIndex>0?G[0]:0;q=PU(v,ne),u&&($=y.getRawValue(ne)),m.attr({x:q[0]+L,y:q[1]+R})}u&&Lh(m).setLabelText($)}},n.prototype._doUpdateAnimation=function(t,s,l,c,u,f,p){var m=this._polyline,g=this._polygon,v=t.hostModel,y=function kU(r,n,t,s,l,c,u,f){for(var p=function xL(r,n){var t=[];return n.diff(r).add(function(s){t.push({cmd:"+",idx:s})}).update(function(s,l){t.push({cmd:"=",idx:l,idx1:s})}).remove(function(s){t.push({cmd:"-",idx:s})}).execute(),t}(r,n),m=[],g=[],v=[],y=[],b=[],x=[],C=[],S=Sx(l,n,u),M=r.getLayout("points")||[],T=n.getLayout("points")||[],A=0;A3e3||g&&$T(x,S)>3e3)return m.stopAnimation(),m.setShape({points:C}),void(g&&(g.stopAnimation(),g.setShape({points:C,stackedOnPoints:S})));m.shape.__points=y.current,m.shape.points=b;var M={shape:{points:C}};y.current!==b&&(M.shape.__points=y.next),m.stopAnimation(),fn(m,M,v),g&&(g.setShape({points:b,stackedOnPoints:x}),g.stopAnimation(),fn(g,{shape:{stackedOnPoints:S}},v),m.shape.points!==g.shape.points&&(g.shape.points=m.shape.points));for(var T=[],A=y.status,E=0;En&&(n=r[t]);return isFinite(n)?n:NaN},min:function(r){for(var n=1/0,t=0;t10&&"cartesian2d"===u.type&&c){var p=u.getBaseAxis(),m=u.getOtherAxis(p),g=p.getExtent(),v=s.getDevicePixelRatio(),y=Math.abs(g[1]-g[0])*(v||1),b=Math.round(f/y);if(isFinite(b)&&b>1){"lttb"===c&&n.setData(l.lttbDownSample(l.mapDimension(m.dim),1/b));var x=void 0;Le(c)?x=OL[c]:qe(c)&&(x=c),x&&n.setData(l.downSample(l.mapDimension(m.dim),1/b,x,LL))}}}}}var NU=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.getInitialData=function(t,s){return Kc(null,this,{useEncodeDefaulter:!0})},n.prototype.getMarkerPosition=function(t,s,l){var c=this.coordinateSystem;if(c&&c.clampData){var u=c.clampData(t),f=c.dataToPoint(u);if(l)U(c.getAxes(),function(y,b){if("category"===y.type&&null!=s){var x=y.getTicksCoords(),C=u[b],S="x1"===s[b]||"y1"===s[b];if(S&&(C+=1),x.length<2)return;if(2===x.length)return void(f[b]=y.toGlobalCoord(y.getExtent()[S?1:0]));for(var M=void 0,T=void 0,A=1,E=0;EC){T=(L+M)/2;break}1===E&&(A=R-x[0].tickValue)}null==T&&(M?M&&(T=x[x.length-1].coord):T=x[0].coord),f[b]=y.toGlobalCoord(T)}});else{var p=this.getData(),m=p.getLayout("offset"),g=p.getLayout("size"),v=c.getBaseAxis().isHorizontal()?0:1;f[v]+=m+g/2}return f}return[NaN,NaN]},n.type="series.__base_bar__",n.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,barMinHeight:0,barMinAngle:0,large:!1,largeThreshold:400,progressive:3e3,progressiveChunkMode:"mod"},n}(Zn);Zn.registerClass(NU);const Tx=NU;var FL=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.getInitialData=function(){return Kc(null,this,{useEncodeDefaulter:!0,createInvertedIndices:!!this.get("realtimeSort",!0)||null})},n.prototype.getProgressive=function(){return!!this.get("large")&&this.get("progressive")},n.prototype.getProgressiveThreshold=function(){var t=this.get("progressiveThreshold"),s=this.get("largeThreshold");return s>t&&(t=s),t},n.prototype.brushSelector=function(t,s,l){return l.rect(s.getItemLayout(t))},n.type="series.bar",n.dependencies=["grid","polar"],n.defaultOption=Yd(Tx.defaultOption,{clip:!0,roundCap:!1,showBackground:!1,backgroundStyle:{color:"rgba(180, 180, 180, 0.2)",borderColor:null,borderWidth:0,borderType:"solid",borderRadius:0,shadowBlur:0,shadowColor:null,shadowOffsetX:0,shadowOffsetY:0,opacity:1},select:{itemStyle:{borderColor:"#212121"}},realtimeSort:!1}),n}(Tx);const NL=FL;var Mu=function r(){this.cx=0,this.cy=0,this.r0=0,this.r=0,this.startAngle=0,this.endAngle=2*Math.PI,this.clockwise=!0},BU=function(r){function n(t){var s=r.call(this,t)||this;return s.type="sausage",s}return se(n,r),n.prototype.getDefaultShape=function(){return new Mu},n.prototype.buildPath=function(t,s){var l=s.cx,c=s.cy,u=Math.max(s.r0||0,0),f=Math.max(s.r,0),p=.5*(f-u),m=u+p,g=s.startAngle,v=s.endAngle,y=s.clockwise,b=2*Math.PI,x=y?v-gf)return!0;f=v}return!1},n.prototype._isOrderDifferentInView=function(t,s){for(var l=s.scale,c=l.getExtent(),u=Math.max(0,c[0]),f=Math.min(c[1],l.getOrdinalMeta().categories.length-1);u<=f;++u)if(t.ordinalNumbers[u]!==l.getRawOrdinalNumber(u))return!0},n.prototype._updateSortWithinSameData=function(t,s,l,c){if(this._isOrderChangedWithinSameData(t,s,l)){var u=this._dataSort(t,l,s);this._isOrderDifferentInView(u,l)&&(this._removeOnRenderedListener(c),c.dispatchAction({type:"changeAxisOrder",componentType:l.dim+"Axis",axisId:l.index,sortInfo:u}))}},n.prototype._dispatchInitSort=function(t,s,l){var c=s.baseAxis,u=this._dataSort(t,c,function(f){return t.get(t.mapDimension(s.otherAxis.dim),f)});l.dispatchAction({type:"changeAxisOrder",componentType:c.dim+"Axis",isInitSort:!0,axisId:c.index,sortInfo:u})},n.prototype.remove=function(t,s){this._clear(this._model),this._removeOnRenderedListener(s)},n.prototype.dispose=function(t,s){this._removeOnRenderedListener(s)},n.prototype._removeOnRenderedListener=function(t){this._onRendered&&(t.getZr().off("rendered",this._onRendered),this._onRendered=null)},n.prototype._clear=function(t){var s=this.group,l=this._data;t&&t.isAnimationEnabled()&&l&&!this._isLargeDraw?(this._removeBackground(),this._backgroundEls=[],l.eachItemGraphicEl(function(c){$v(c,t,mt(c).dataIndex)})):s.removeAll(),this._data=null,this._isFirstFrame=!0},n.prototype._removeBackground=function(){this.group.remove(this._backgroundGroup),this._backgroundGroup=null},n.type="bar",n}(Vn),VU={cartesian2d:function(r,n){var t=n.width<0?-1:1,s=n.height<0?-1:1;t<0&&(n.x+=n.width,n.width=-n.width),s<0&&(n.y+=n.height,n.height=-n.height);var l=r.x+r.width,c=r.y+r.height,u=KT(n.x,r.x),f=VL(n.x+n.width,l),p=KT(n.y,r.y),m=VL(n.y+n.height,c),g=fl?f:u,n.y=v&&p>c?m:p,n.width=g?0:f-u,n.height=v?0:m-p,t<0&&(n.x+=n.width,n.width=-n.width),s<0&&(n.y+=n.height,n.height=-n.height),g||v},polar:function(r,n){var t=n.r0<=n.r?1:-1;if(t<0){var s=n.r;n.r=n.r0,n.r0=s}var l=VL(n.r,r.r),c=KT(n.r0,r.r0);n.r=l,n.r0=c;var u=l-c<0;return t<0&&(s=n.r,n.r=n.r0,n.r0=s),u}},zU={cartesian2d:function(r,n,t,s,l,c,u,f,p){var m=new Zt({shape:ge({},s),z2:1});return m.__dataIndex=t,m.name="item",c&&(m.shape[l?"height":"width"]=0),m},polar:function(r,n,t,s,l,c,u,f,p){var m=!l&&p?Ax:Nr,g=new m({shape:s,z2:1});g.name="item";var v=zL(l);if(g.calculateTextPosition=function qT(r,n){var t=(n=n||{}).isRoundCap;return function(s,l,c){var u=l.position;if(!u||u instanceof Array)return Dp(s,l,c);var f=r(u),p=null!=l.distance?l.distance:5,m=this.shape,g=m.cx,v=m.cy,y=m.r,b=m.r0,x=(y+b)/2,C=m.startAngle,S=m.endAngle,M=(C+S)/2,T=t?Math.abs(y-b)/2:0,A=Math.cos,E=Math.sin,L=g+y*A(C),R=v+y*E(C),V="left",H="top";switch(f){case"startArc":L=g+(b-p)*A(M),R=v+(b-p)*E(M),V="center",H="top";break;case"insideStartArc":L=g+(b+p)*A(M),R=v+(b+p)*E(M),V="center",H="bottom";break;case"startAngle":L=g+x*A(C)+XT(C,p+T,!1),R=v+x*E(C)+ZT(C,p+T,!1),V="right",H="middle";break;case"insideStartAngle":L=g+x*A(C)+XT(C,-p+T,!1),R=v+x*E(C)+ZT(C,-p+T,!1),V="left",H="middle";break;case"middle":L=g+x*A(M),R=v+x*E(M),V="center",H="middle";break;case"endArc":L=g+(y+p)*A(M),R=v+(y+p)*E(M),V="center",H="bottom";break;case"insideEndArc":L=g+(y-p)*A(M),R=v+(y-p)*E(M),V="center",H="top";break;case"endAngle":L=g+x*A(S)+XT(S,p+T,!0),R=v+x*E(S)+ZT(S,p+T,!0),V="left",H="middle";break;case"insideEndAngle":L=g+x*A(S)+XT(S,-p+T,!0),R=v+x*E(S)+ZT(S,-p+T,!0),V="right",H="middle";break;default:return Dp(s,l,c)}return(s=s||{}).x=L,s.y=R,s.align=V,s.verticalAlign=H,s}}(v,{isRoundCap:m===Ax}),c){var b=l?"r":"endAngle",x={};g.shape[b]=l?s.r0:s.startAngle,x[b]=s[b],(f?fn:ni)(g,{shape:x},c)}return g}};function GU(r,n,t,s,l,c,u,f){var p,m;c?(m={x:s.x,width:s.width},p={y:s.y,height:s.height}):(m={y:s.y,height:s.height},p={x:s.x,width:s.width}),f||(u?fn:ni)(t,{shape:p},n,l,null),(u?fn:ni)(t,{shape:m},n?r.baseAxis.model:null,l)}function UU(r,n){for(var t=0;t0?1:-1,u=s.height>0?1:-1;return{x:s.x+c*l/2,y:s.y+u*l/2,width:s.width-c*l,height:s.height-u*l}},polar:function(r,n,t){var s=r.getItemLayout(n);return{cx:s.cx,cy:s.cy,r0:s.r0,r:s.r,startAngle:s.startAngle,endAngle:s.endAngle,clockwise:s.clockwise}}};function zL(r){return function(n){var t=n?"Arc":"Angle";return function(s){switch(s){case"start":case"insideStart":case"end":case"insideEnd":return s+t;default:return s}}}(r)}function JT(r,n,t,s,l,c,u,f){var p=n.getItemVisual(t,"style");if(f){if(!c.get("roundCap")){var g=r.shape;ge(g,Lm(s.getModel("itemStyle"),g,!0)),r.setShape(g)}}else{var m=s.get(["itemStyle","borderRadius"])||0;r.setShape("r",m)}r.useStyle(p);var y=s.getShallow("cursor");y&&r.attr("cursor",y);var b=f?u?l.r>=l.r0?"endArc":"startArc":l.endAngle>=l.startAngle?"endAngle":"startAngle":u?l.height>=0?"bottom":"top":l.width>=0?"right":"left",x=Or(s);Xr(r,x,{labelFetcher:c,labelDataIndex:t,defaultText:_f(c.getData(),t),inheritColor:p.fill,defaultOpacity:p.opacity,defaultOutsidePosition:b});var C=r.getTextContent();if(f&&C){var S=s.get(["label","position"]);r.textConfig.inside="middle"===S||null,function BL(r,n,t,s){if(rn(s))r.setTextConfig({rotation:s});else if(ye(n))r.setTextConfig({rotation:0});else{var p,l=r.shape,c=l.clockwise?l.startAngle:l.endAngle,u=l.clockwise?l.endAngle:l.startAngle,f=(c+u)/2,m=t(n);switch(m){case"startArc":case"insideStartArc":case"middle":case"insideEndArc":case"endArc":p=f;break;case"startAngle":case"insideStartAngle":p=c;break;case"endAngle":case"insideEndAngle":p=u;break;default:return void r.setTextConfig({rotation:0})}var g=1.5*Math.PI-p;"middle"===m&&g>Math.PI/2&&g<1.5*Math.PI&&(g-=Math.PI),r.setTextConfig({rotation:g})}}(r,"outside"===S?b:S,zL(u),s.get(["label","rotate"]))}lD(C,x,c.getRawValue(t),function(T){return bL(n,T)});var M=s.getModel(["emphasis"]);Pi(r,M.get("focus"),M.get("blurScope"),M.get("disabled")),oa(r,s),function X_(r){return null!=r.startAngle&&null!=r.endAngle&&r.startAngle===r.endAngle}(l)&&(r.style.fill="none",r.style.stroke="none",U(r.states,function(T){T.style&&(T.style.fill=T.style.stroke="none")}))}var Ze=function r(){},id=function(r){function n(t){var s=r.call(this,t)||this;return s.type="largeBar",s}return se(n,r),n.prototype.getDefaultShape=function(){return new Ze},n.prototype.buildPath=function(t,s){for(var l=s.points,c=this.baseDimIdx,u=1-this.baseDimIdx,f=[],p=[],m=this.barWidth,g=0;g=f[0]&&n<=f[0]+p[0]&&t>=f[1]&&t<=f[1]+p[1])return u[g]}return-1}(this,r.offsetX,r.offsetY);mt(this).dataIndex=t>=0?t:null},30,!1);function al(r,n,t){if(Su(t,"cartesian2d")){var s=n,l=t.getArea();return{x:r?s.x:l.x,y:r?l.y:s.y,width:r?s.width:l.width,height:r?l.height:s.height}}return{cx:(l=t.getArea()).cx,cy:l.cy,r0:r?l.r0:n.r0,r:r?l.r:n.r,startAngle:r?n.startAngle:0,endAngle:r?n.endAngle:2*Math.PI}}const $U=uZ;var kx=2*Math.PI,HL=Math.PI/180;function tA(r,n){return dr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}function K_(r,n){var t=tA(r,n),s=r.get("center"),l=r.get("radius");ye(l)||(l=[0,l]);var g,v,c=Re(t.width,n.getWidth()),u=Re(t.height,n.getHeight()),f=Math.min(c,u),p=Re(l[0],f/2),m=Re(l[1],f/2),y=r.coordinateSystem;if(y){var b=y.dataToPoint(s);g=b[0]||0,v=b[1]||0}else ye(s)||(s=[s,s]),g=Re(s[0],c)+t.x,v=Re(s[1],u)+t.y;return{cx:g,cy:v,r0:p,r:m}}function Tu(r,n,t){n.eachSeriesByType(r,function(s){var l=s.getData(),c=l.mapDimension("value"),u=tA(s,t),f=K_(s,t),p=f.cx,m=f.cy,g=f.r,v=f.r0,y=-s.get("startAngle")*HL,b=s.get("minAngle")*HL,x=0;l.each(c,function(j){!isNaN(j)&&x++});var C=l.getSum(c),S=Math.PI/(C||x)*2,M=s.get("clockwise"),T=s.get("roseType"),A=s.get("stillShowZeroSum"),E=l.getDataExtent(c);E[0]=0;var L=kx,R=0,V=y,H=M?1:-1;if(l.setLayout({viewRect:u,r:g}),l.each(c,function(j,$){var q;if(isNaN(j))l.setItemLayout($,{angle:NaN,startAngle:NaN,endAngle:NaN,clockwise:M,cx:p,cy:m,r0:v,r:T?NaN:g});else{(q="area"!==T?0===C&&A?S:j*S:kx/x)t?M:S,L=Math.abs(A.label.y-t);if(L>=E.maxY){var R=A.label.x-n-A.len2*l,V=s+A.len,H=Math.abs(R)r.unconstrainedWidth?null:b:null)}var C=s.getBoundingRect();c.width=C.width,c.height=C.height+((s.style.margin||0)+2.1),c.y-=(c.height-v)/2}}}function Ix(r){return"center"===r.position}var Q_=function(r){function n(t,s,l){var c=r.call(this)||this;c.z2=2;var u=new an;return c.setTextContent(u),c.updateData(t,s,l,!0),c}return se(n,r),n.prototype.updateData=function(t,s,l,c){var u=this,f=t.hostModel,p=t.getItemModel(s),m=p.getModel("emphasis"),g=t.getItemLayout(s),v=ge(Lm(p.getModel("itemStyle"),g,!0),g);if(isNaN(v.startAngle))u.setShape(v);else{if(c){u.setShape(v);var y=f.getShallow("animationType");f.ecModel.ssr?(ni(u,{scaleX:0,scaleY:0},f,{dataIndex:s,isFrom:!0}),u.originX=v.cx,u.originY=v.cy):"scale"===y?(u.shape.r=g.r0,ni(u,{shape:{r:g.r}},f,s)):null!=l?(u.setShape({startAngle:l,endAngle:l}),ni(u,{shape:{startAngle:g.startAngle,endAngle:g.endAngle}},f,s)):(u.shape.endAngle=g.startAngle,fn(u,{shape:{endAngle:g.endAngle}},f,s))}else us(u),fn(u,{shape:v},f,s);u.useStyle(t.getItemVisual(s,"style")),oa(u,p);var b=(g.startAngle+g.endAngle)/2,x=f.get("selectedOffset"),C=Math.cos(b)*x,S=Math.sin(b)*x,M=p.getShallow("cursor");M&&u.attr("cursor",M),this._updateLabel(f,t,s),u.ensureState("emphasis").shape=ge({r:g.r+(m.get("scale")&&m.get("scaleSize")||0)},Lm(m.getModel("itemStyle"),g)),ge(u.ensureState("select"),{x:C,y:S,shape:Lm(p.getModel(["select","itemStyle"]),g)}),ge(u.ensureState("blur"),{shape:Lm(p.getModel(["blur","itemStyle"]),g)});var T=u.getTextGuideLine(),A=u.getTextContent();T&&ge(T.ensureState("select"),{x:C,y:S}),ge(A.ensureState("select"),{x:C,y:S}),Pi(this,m.get("focus"),m.get("blurScope"),m.get("disabled"))}},n.prototype._updateLabel=function(t,s,l){var c=this,u=s.getItemModel(l),f=u.getModel("labelLine"),p=s.getItemVisual(l,"style"),m=p&&p.fill,g=p&&p.opacity;Xr(c,Or(u),{labelFetcher:s.hostModel,labelDataIndex:l,inheritColor:m,defaultOpacity:g,defaultText:t.getFormattedLabel(l,"normal")||s.getName(l)});var v=c.getTextContent();c.setTextConfig({position:null,rotation:null}),v.attr({z2:10});var y=t.get(["label","position"]);if("outside"!==y&&"outer"!==y)c.removeTextGuideLine();else{var b=this.getTextGuideLine();b||(b=new ho,this.setTextGuideLine(b)),mx(this,AT(u),{stroke:m,opacity:es(f.get(["lineStyle","opacity"]),g,1)})}},n}(Nr),Cr=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.ignoreLabelLineUpdate=!0,t}return se(n,r),n.prototype.render=function(t,s,l,c){var m,u=t.getData(),f=this._data,p=this.group;if(!f&&u.count()>0){for(var g=u.getItemLayout(0),v=1;isNaN(g&&g.startAngle)&&v0?"right":"left":je>0?"left":"right"}var Yi=Math.PI,qi=0,to=q.get("rotate");if(rn(to))qi=to*(Yi/180);else if("center"===K)qi=0;else if("radial"===to||!0===to)qi=je<0?-Oe+Yi:-Oe;else if("tangential"===to&&"outside"!==K&&"outer"!==K){var Xo=Math.atan2(je,nt);Xo<0&&(Xo=2*Yi+Xo),nt>0&&(Xo=Yi+Xo),qi=Xo-Yi}if(c=!!qi,G.x=Ke,G.y=Gt,G.rotation=qi,G.setStyle({verticalAlign:"middle"}),ot){G.setStyle({align:Pt});var G5=G.states.select;G5&&(G5.x+=G.x,G5.y+=G.y)}else{var Qf=G.getBoundingRect().clone();Qf.applyTransform(G.getComputedTransform());var bY=(G.style.margin||0)+2.1;Qf.y-=bY/2,Qf.height+=bY,t.push({label:G,labelLine:j,position:K,len:ve,len2:Te,minTurnAngle:ce.get("minTurnAngle"),maxSurfaceAngle:ce.get("maxSurfaceAngle"),surfaceNormal:new Dt(je,nt),linePoints:mn,textAlign:Pt,labelDistance:ee,labelAlignTo:ne,edgeDistance:re,bleedMargin:ue,rect:Qf,unconstrainedWidth:Qf.width,labelStyleWidth:G.style.width})}V.setTextConfig({inside:ot})}}),!c&&r.get("avoidLabelOverlap")&&function UL(r,n,t,s,l,c,u,f){for(var p=[],m=[],g=Number.MAX_VALUE,v=-Number.MAX_VALUE,y=0;y=c.r0}},n.type="pie",n}(Vn);const iA=Cr;function Au(r,n,t){n=ye(n)&&{coordDimensions:n}||ge({encodeDefine:r.getEncode()},n);var s=r.getSource(),l=df(s,n).dimensions,c=new Pa(l,r);return c.initData(s,t),c}var Px=function(){function r(n,t){this._getDataWithEncodedVisual=n,this._getRawData=t}return r.prototype.getAllNames=function(){var n=this._getRawData();return n.mapArray(n.getName)},r.prototype.containName=function(n){return this._getRawData().indexOfName(n)>=0},r.prototype.indexOfName=function(n){return this._getDataWithEncodedVisual().indexOfName(n)},r.prototype.getItemVisual=function(n,t){return this._getDataWithEncodedVisual().getItemVisual(n,t)},r}();const Fm=Px;var rA=un(),Rx=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new Fm(Ne(this.getData,this),Ne(this.getRawData,this)),this._defaultLabelLine(t)},n.prototype.mergeOption=function(){r.prototype.mergeOption.apply(this,arguments)},n.prototype.getInitialData=function(){return Au(this,{coordDimensions:["value"],encodeDefaulter:$e(Gh,this)})},n.prototype.getDataParams=function(t){var s=this.getData(),l=rA(s),c=l.seats;if(!c){var u=[];s.each(s.mapDimension("value"),function(p){u.push(p)}),c=l.seats=b4(u,s.hostModel.get("percentPrecision"))}var f=r.prototype.getDataParams.call(this,t);return f.percent=c[t]||0,f.$vars.push("percent"),f},n.prototype._defaultLabelLine=function(t){cs(t,"labelLine",["show"]);var s=t.labelLine,l=t.emphasis.labelLine;s.show=s.show&&t.label.show,l.show=l.show&&t.emphasis.label.show},n.type="series.pie",n.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,minShowLabelAngle:0,selectedOffset:10,percentPrecision:2,stillShowZeroSum:!0,left:0,top:0,right:0,bottom:0,width:null,height:null,label:{rotate:0,show:!0,overflow:"truncate",position:"outer",alignTo:"none",edgeDistance:"25%",bleedMargin:10,distanceToLabelLine:5},labelLine:{show:!0,length:15,length2:15,smooth:!1,minTurnAngle:90,maxSurfaceAngle:90,lineStyle:{width:1,type:"solid"}},itemStyle:{borderWidth:1,borderJoin:"round"},showEmptyCircle:!0,emptyCircleStyle:{color:"lightgray",opacity:1},labelLayout:{hideOverlap:!0},emphasis:{scale:!0,scaleSize:5},avoidLabelOverlap:!0,animationType:"expansion",animationDuration:1e3,animationTypeUpdate:"transition",animationEasingUpdate:"cubicInOut",animationDurationUpdate:500,animationEasing:"cubicInOut"},n}(Zn);const jL=Rx;var KU=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.hasSymbolVisual=!0,t}return se(n,r),n.prototype.getInitialData=function(t,s){return Kc(null,this,{useEncodeDefaulter:!0})},n.prototype.getProgressive=function(){return this.option.progressive??(this.option.large?5e3:this.get("progressive"))},n.prototype.getProgressiveThreshold=function(){return this.option.progressiveThreshold??(this.option.large?1e4:this.get("progressiveThreshold"))},n.prototype.brushSelector=function(t,s,l){return l.point(s.getItemLayout(t))},n.prototype.getZLevelKey=function(){return this.getData().count()>this.getProgressiveThreshold()?this.id:""},n.type="series.scatter",n.dependencies=["grid","polar","geo","singleAxis","calendar"],n.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,symbolSize:10,large:!1,largeThreshold:2e3,itemStyle:{opacity:.8},emphasis:{scale:!0},clip:!0,select:{itemStyle:{borderColor:"#212121"}},universalTransition:{divideShape:"clone"}},n}(Zn);const J_=KU;var WL=function r(){},gZ=function(r){function n(t){var s=r.call(this,t)||this;return s._off=0,s.hoverDataIdx=-1,s}return se(n,r),n.prototype.getDefaultShape=function(){return new WL},n.prototype.reset=function(){this.notClear=!1,this._off=0},n.prototype.buildPath=function(t,s){var v,l=s.points,c=s.size,u=this.symbolProxy,f=u.shape,p=t.getContext?t.getContext():t,g=this.softClipShape;if(p&&c[0]<4)this._ctx=p;else{for(this._ctx=null,v=this._off;v=0;m--){var g=2*m,v=c[g]-f/2,y=c[g+1]-p/2;if(t>=v&&s>=y&&t<=v+f&&s<=y+p)return m}return-1},n.prototype.contain=function(t,s){var l=this.transformCoordToLocal(t,s);return this.getBoundingRect().contain(t=l[0],s=l[1])?(this.hoverDataIdx=this.findDataIndex(t,s))>=0:(this.hoverDataIdx=-1,!1)},n.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var s=this.shape,l=s.points,c=s.size,u=c[0],f=c[1],p=1/0,m=1/0,g=-1/0,v=-1/0,y=0;y=0&&(m.dataIndex=v+(n.startIndex||0))})},r.prototype.remove=function(){this._clear()},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}();const _Z=vZ;var yZ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){var c=t.getData();this._updateSymbolDraw(c,t).updateData(c,{clipShape:this._getClipShape(t)}),this._finished=!0},n.prototype.incrementalPrepareRender=function(t,s,l){var c=t.getData();this._updateSymbolDraw(c,t).incrementalPrepareUpdate(c),this._finished=!1},n.prototype.incrementalRender=function(t,s,l){this._symbolDraw.incrementalUpdate(t,s.getData(),{clipShape:this._getClipShape(s)}),this._finished=t.end===s.getData().count()},n.prototype.updateTransform=function(t,s,l){var c=t.getData();if(this.group.dirty(),!this._finished||c.count()>1e4)return{update:!0};var u=Om("").reset(t,s,l);u.progress&&u.progress({start:0,end:c.count(),count:c.count()},c),this._symbolDraw.updateLayout(c)},n.prototype.eachRendered=function(t){this._symbolDraw&&this._symbolDraw.eachRendered(t)},n.prototype._getClipShape=function(t){var s=t.coordinateSystem,l=s&&s.getArea&&s.getArea();return t.get("clip",!0)?l:null},n.prototype._updateSymbolDraw=function(t,s){var l=this._symbolDraw,u=s.pipelineContext.large;return(!l||u!==this._isLargeDraw)&&(l&&l.remove(),l=this._symbolDraw=u?new _Z:new nd,this._isLargeDraw=u,this.group.removeAll()),this.group.add(l.group),l},n.prototype.remove=function(t,s){this._symbolDraw&&this._symbolDraw.remove(!0),this._symbolDraw=null},n.prototype.dispose=function(){},n.type="scatter",n}(Vn);const bZ=yZ;var wZ=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.type="grid",n.dependencies=["xAxis","yAxis"],n.layoutMode="box",n.defaultOption={show:!1,z:0,left:"10%",top:60,right:"10%",bottom:70,containLabel:!1,backgroundColor:"rgba(0,0,0,0)",borderWidth:1,borderColor:"#ccc"},n}(qt);const QU=wZ;var aA=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.getCoordSysModel=function(){return this.getReferringComponents("grid",br).models[0]},n.type="cartesian2dAxis",n}(qt);Mi(aA,Em);var YL={show:!0,z:0,inverse:!1,name:"",nameLocation:"end",nameRotate:null,nameTruncate:{maxWidth:null,ellipsis:"...",placeholder:"."},nameTextStyle:{},nameGap:15,silent:!1,triggerEvent:!1,tooltip:{show:!1},axisPointer:{},axisLine:{show:!0,onZero:!0,onZeroAxisIndex:null,lineStyle:{color:"#6E7079",width:1,type:"solid"},symbol:["none","none"],symbolSize:[10,15]},axisTick:{show:!0,inside:!1,length:5,lineStyle:{width:1}},axisLabel:{show:!0,inside:!1,rotate:0,showMinLabel:null,showMaxLabel:null,margin:8,fontSize:12},splitLine:{show:!0,lineStyle:{color:["#E0E6F1"],width:1,type:"solid"}},splitArea:{show:!1,areaStyle:{color:["rgba(250,250,250,0.2)","rgba(210,219,238,0.2)"]}}},xZ=At({boundaryGap:!0,deduplication:null,splitLine:{show:!1},axisTick:{alignWithLabel:!1,interval:"auto"},axisLabel:{interval:"auto"}},YL),oA=At({boundaryGap:[0,0],axisLine:{show:"auto"},axisTick:{show:"auto"},splitNumber:5,minorTick:{show:!1,splitNumber:5,length:3,lineStyle:{}},minorSplitLine:{show:!1,lineStyle:{color:"#F4F7FD",width:1}}},YL);const Ox={category:xZ,value:oA,time:At({splitNumber:6,axisLabel:{showMinLabel:!1,showMaxLabel:!1,rich:{primary:{fontWeight:"bold"}}},splitLine:{show:!1}},oA),log:Je({logBase:10},oA)};var t6={value:1,category:1,time:1,log:1};function yf(r,n,t,s){U(t6,function(l,c){var u=At(At({},Ox[c],!0),s,!0),f=function(p){function m(){var g=null!==p&&p.apply(this,arguments)||this;return g.type=n+"Axis."+c,g}return se(m,p),m.prototype.mergeDefaultAndTheme=function(g,v){var y=zh(this),b=y?Kp(g):{};At(g,v.getTheme().get(c+"Axis")),At(g,this.getDefaultOption()),g.type=XL(g),y&&Jd(g,b,y)},m.prototype.optionUpdated=function(){"category"===this.option.type&&(this.__ordinalMeta=yO.createByAxisModel(this))},m.prototype.getCategories=function(g){var v=this.option;if("category"===v.type)return g?v.data:this.__ordinalMeta.categories},m.prototype.getOrdinalMeta=function(){return this.__ordinalMeta},m.type=n+"Axis."+c,m.defaultOption=u,m}(t);r.registerComponentModel(f)}),r.registerSubTypeDefaulter(n+"Axis",XL)}function XL(r){return r.type||(r.data?"category":"value")}var ZL=function(){function r(n){this.type="cartesian",this._dimList=[],this._axes={},this.name=n||""}return r.prototype.getAxis=function(n){return this._axes[n]},r.prototype.getAxes=function(){return xe(this._dimList,function(n){return this._axes[n]},this)},r.prototype.getAxesByScale=function(n){return n=n.toLowerCase(),Dn(this.getAxes(),function(t){return t.scale.type===n})},r.prototype.addAxis=function(n){var t=n.dim;this._axes[t]=n,this._dimList.push(t)},r}(),sA=["x","y"];function QL(r){return"interval"===r.type||"time"===r.type}var CZ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="cartesian2d",t.dimensions=sA,t}return se(n,r),n.prototype.calcAffineTransform=function(){this._transform=this._invTransform=null;var t=this.getAxis("x").scale,s=this.getAxis("y").scale;if(QL(t)&&QL(s)){var l=t.getExtent(),c=s.getExtent(),u=this.dataToPoint([l[0],c[0]]),f=this.dataToPoint([l[1],c[1]]),p=l[1]-l[0],m=c[1]-c[0];if(p&&m){var g=(f[0]-u[0])/p,v=(f[1]-u[1])/m,x=this._transform=[g,0,0,v,u[0]-l[0]*g,u[1]-c[0]*v];this._invTransform=ah([],x)}}},n.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAxis("x")},n.prototype.containPoint=function(t){var s=this.getAxis("x"),l=this.getAxis("y");return s.contain(s.toLocalCoord(t[0]))&&l.contain(l.toLocalCoord(t[1]))},n.prototype.containData=function(t){return this.getAxis("x").containData(t[0])&&this.getAxis("y").containData(t[1])},n.prototype.containZone=function(t,s){var l=this.dataToPoint(t),c=this.dataToPoint(s),u=this.getArea(),f=new yt(l[0],l[1],c[0]-l[0],c[1]-l[1]);return u.intersect(f)},n.prototype.dataToPoint=function(t,s,l){l=l||[];var c=t[0],u=t[1];if(this._transform&&null!=c&&isFinite(c)&&null!=u&&isFinite(u))return at(l,t,this._transform);var f=this.getAxis("x"),p=this.getAxis("y");return l[0]=f.toGlobalCoord(f.dataToCoord(c,s)),l[1]=p.toGlobalCoord(p.dataToCoord(u,s)),l},n.prototype.clampData=function(t,s){var l=this.getAxis("x").scale,c=this.getAxis("y").scale,u=l.getExtent(),f=c.getExtent(),p=l.parse(t[0]),m=c.parse(t[1]);return(s=s||[])[0]=Math.min(Math.max(Math.min(u[0],u[1]),p),Math.max(u[0],u[1])),s[1]=Math.min(Math.max(Math.min(f[0],f[1]),m),Math.max(f[0],f[1])),s},n.prototype.pointToData=function(t,s){var l=[];if(this._invTransform)return at(l,t,this._invTransform);var c=this.getAxis("x"),u=this.getAxis("y");return l[0]=c.coordToData(c.toLocalCoord(t[0]),s),l[1]=u.coordToData(u.toLocalCoord(t[1]),s),l},n.prototype.getOtherAxis=function(t){return this.getAxis("x"===t.dim?"y":"x")},n.prototype.getArea=function(){var t=this.getAxis("x").getGlobalExtent(),s=this.getAxis("y").getGlobalExtent(),l=Math.min(t[0],t[1]),c=Math.min(s[0],s[1]),u=Math.max(t[0],t[1])-l,f=Math.max(s[0],s[1])-c;return new yt(l,c,u,f)},n}(ZL);const fr=CZ;var Nm=function(r){function n(t,s,l,c,u){var f=r.call(this,t,s,l)||this;return f.index=0,f.type=c||"value",f.position=u||"bottom",f}return se(n,r),n.prototype.isHorizontal=function(){var t=this.position;return"top"===t||"bottom"===t},n.prototype.getGlobalExtent=function(t){var s=this.getExtent();return s[0]=this.toGlobalCoord(s[0]),s[1]=this.toGlobalCoord(s[1]),t&&s[0]>s[1]&&s.reverse(),s},n.prototype.pointToData=function(t,s){return this.coordToData(this.toLocalCoord(t["x"===this.dim?0:1]),s)},n.prototype.setCategorySortInfo=function(t){if("category"!==this.type)return!1;this.model.option.categorySortInfo=t,this.scale.setSortInfo(t)},n}(Fo);const n6=Nm;function JL(r,n,t){t=t||{};var s=r.coordinateSystem,l=n.axis,c={},u=l.getAxesOnZeroOf()[0],f=l.position,p=u?"onZero":f,m=l.dim,g=s.getRect(),v=[g.x,g.x+g.width,g.y,g.y+g.height],y={left:0,right:1,top:0,bottom:1,onZero:2},b=n.get("offset")||0,x="x"===m?[v[2]-b,v[3]+b]:[v[0]-b,v[1]+b];if(u){var C=u.toGlobalCoord(u.dataToCoord(0));x[y.onZero]=Math.max(Math.min(C,x[1]),x[0])}c.position=["y"===m?x[y[p]]:v[0],"x"===m?x[y[p]]:v[3]],c.rotation=Math.PI/2*("x"===m?0:1),c.labelDirection=c.tickDirection=c.nameDirection={top:-1,bottom:1,left:-1,right:1}[f],c.labelOffset=u?x[y[f]]-x[y.onZero]:0,n.get(["axisTick","inside"])&&(c.tickDirection=-c.tickDirection),Tr(t.labelInside,n.get(["axisLabel","inside"]))&&(c.labelDirection=-c.labelDirection);var M=n.get(["axisLabel","rotate"]);return c.labelRotate="top"===p?-M:M,c.z2=1,c}function lA(r){return"cartesian2d"===r.get("coordinateSystem")}function eF(r){var n={xAxisModel:null,yAxisModel:null};return U(n,function(t,s){var l=s.replace(/Model$/,""),c=r.getReferringComponents(l,br).models[0];n[s]=c}),n}var tF=Math.log;function i6(r,n,t){var s=Jl.prototype,l=s.getTicks.call(t),c=s.getTicks.call(t,!0),u=l.length-1,f=s.getInterval.call(t),p=kO(r,n),m=p.extent,g=p.fixMin,v=p.fixMax;if("log"===r.type){var y=tF(r.base);m=[tF(m[0])/y,tF(m[1])/y]}r.setExtent(m[0],m[1]),r.calcNiceExtent({splitNumber:u,fixMin:g,fixMax:v});var b=s.getExtent.call(r);g&&(m[0]=b[0]),v&&(m[1]=b[1]);var x=s.getInterval.call(r),C=m[0],S=m[1];if(g&&v)x=(S-C)/u;else if(g)for(S=m[0]+x*u;Sm[0]&&isFinite(C)&&isFinite(m[0]);)x=E_(x),C=m[1]-x*u;else{r.getTicks().length-1>u&&(x=E_(x));var T=x*u;(C=zi((S=Math.ceil(m[1]/x)*x)-T))<0&&m[0]>=0?(C=0,S=zi(T)):S>0&&m[1]<=0&&(S=0,C=-zi(T))}var A=(l[0].value-c[0].value)/f,E=(l[u].value-c[u].value)/f;s.setExtent.call(r,C+x*A,S+x*E),s.setInterval.call(r,x),(A||E)&&s.setNiceExtent.call(r,C+x,S-x)}var SZ=function(){function r(n,t,s){this.type="grid",this._coordsMap={},this._coordsList=[],this._axesMap={},this._axesList=[],this.axisPointerEnabled=!0,this.dimensions=sA,this._initCartesian(n,t,s),this.model=n}return r.prototype.getRect=function(){return this._rect},r.prototype.update=function(n,t){var s=this._axesMap;function l(u){var f,p=Ut(u),m=p.length;if(m){for(var g=[],v=m-1;v>=0;v--){var b=u[+p[v]],x=b.model,C=b.scale;bO(C)&&x.get("alignTicks")&&null==x.get("interval")?g.push(b):(ff(C,x),bO(C)&&(f=b))}g.length&&(f||ff((f=g.pop()).scale,f.model),U(g,function(S){i6(S.scale,S.model,f.scale)}))}}this._updateScale(n,this.model),l(s.x),l(s.y);var c={};U(s.x,function(u){r6(s,"y",u,c)}),U(s.y,function(u){r6(s,"x",u,c)}),this.resize(this.model,t)},r.prototype.resize=function(n,t,s){var l=n.getBoxLayoutParams(),c=!s&&n.get("containLabel"),u=dr(l,{width:t.getWidth(),height:t.getHeight()});this._rect=u;var f=this._axesList;function p(){U(f,function(m){var g=m.isHorizontal(),v=g?[0,u.width]:[0,u.height],y=m.inverse?1:0;m.setExtent(v[y],v[1-y]),function DZ(r,n){var t=r.getExtent(),s=t[0]+t[1];r.toGlobalCoord="x"===r.dim?function(l){return l+n}:function(l){return s-l+n},r.toLocalCoord="x"===r.dim?function(l){return l-n}:function(l){return s-l+n}}(m,g?u.x:u.y)})}p(),c&&(U(f,function(m){if(!m.model.get(["axisLabel","inside"])){var g=function rx(r){var t=r.scale;if(r.model.get(["axisLabel","show"])&&!t.isBlank()){var s,l,c=t.getExtent();l=t instanceof qw?t.count():(s=t.getTicks()).length;var p,u=r.getLabelModel(),f=Xt(r),m=1;l>40&&(m=Math.ceil(l/40));for(var g=0;g0&&s>0||t<0&&s<0)}(r)}const MZ=SZ;var Oi=Math.PI,ol=function(){function r(n,t){this.group=new lt,this.opt=t,this.axisModel=n,Je(t,{labelOffset:0,nameDirection:1,tickDirection:1,labelDirection:1,silent:!0,handleAutoShown:function(){return!0}});var s=new lt({x:t.position[0],y:t.position[1],rotation:t.rotation});s.updateTransform(),this._transformGroup=s}return r.prototype.hasBuilder=function(n){return!!rF[n]},r.prototype.add=function(n){rF[n](this.opt,this.axisModel,this.group,this._transformGroup)},r.prototype.getGroup=function(){return this.group},r.innerTextLayout=function(n,t,s){var c,u,l=CS(t-n);return gv(l)?(u=s>0?"top":"bottom",c="center"):gv(l-Oi)?(u=s>0?"bottom":"top",c="center"):(u="middle",c=l>0&&l0?"right":"left":s>0?"left":"right"),{rotation:l,textAlign:c,textVerticalAlign:u}},r.makeAxisEventDataBase=function(n){var t={componentType:n.mainType,componentIndex:n.componentIndex};return t[n.mainType+"Index"]=n.componentIndex,t},r.isLabelSilent=function(n){var t=n.get("tooltip");return n.get("silent")||!(n.get("triggerEvent")||t&&t.show)},r}(),rF={axisLine:function(r,n,t,s){var l=n.get(["axisLine","show"]);if("auto"===l&&r.handleAutoShown&&(l=r.handleAutoShown("axisLine")),l){var c=n.axis.getExtent(),u=s.transform,f=[c[0],0],p=[c[1],0],m=f[0]>p[0];u&&(at(f,f,u),at(p,p,u));var g=ge({lineCap:"round"},n.getModel(["axisLine","lineStyle"]).getLineStyle()),v=new wr({shape:{x1:f[0],y1:f[1],x2:p[0],y2:p[1]},style:g,strokeContainThreshold:r.strokeContainThreshold||5,silent:!0,z2:1});um(v.shape,v.style.lineWidth),v.anid="line",t.add(v);var y=n.get(["axisLine","symbol"]);if(null!=y){var b=n.get(["axisLine","symbolSize"]);Le(y)&&(y=[y,y]),(Le(b)||rn(b))&&(b=[b,b]);var x=_m(n.get(["axisLine","symbolOffset"])||0,b),C=b[0],S=b[1];U([{rotate:r.rotation+Math.PI/2,offset:x[0],r:0},{rotate:r.rotation-Math.PI/2,offset:x[1],r:Math.sqrt((f[0]-p[0])*(f[0]-p[0])+(f[1]-p[1])*(f[1]-p[1]))}],function(M,T){if("none"!==y[T]&&null!=y[T]){var A=Ji(y[T],-C/2,-S/2,C,S,g.stroke,!0),E=M.r+M.offset,L=m?p:f;A.attr({rotation:M.rotate,x:L[0]+E*Math.cos(r.rotation),y:L[1]-E*Math.sin(r.rotation),silent:!0,z2:11}),t.add(A)}})}}},axisTickLabel:function(r,n,t,s){var l=function s6(r,n,t,s){var l=t.axis,c=t.getModel("axisTick"),u=c.get("show");if("auto"===u&&s.handleAutoShown&&(u=s.handleAutoShown("axisTick")),u&&!l.scale.isBlank()){for(var f=c.getModel("lineStyle"),p=s.tickDirection*c.get("length"),g=oF(l.getTicksCoords(),n.transform,p,Je(f.getLineStyle(),{stroke:t.get(["axisLine","lineStyle","color"])}),"ticks"),v=0;vm[1]?-1:1,v=["start"===c?m[0]-g*p:"end"===c?m[1]+g*p:(m[0]+m[1])/2,aF(c)?r.labelOffset+u*p:0],b=n.get("nameRotate");null!=b&&(b=b*Oi/180),aF(c)?y=ol.innerTextLayout(r.rotation,b??r.rotation,u):(y=function a6(r,n,t,s){var c,u,l=CS(t-r),f=s[0]>s[1],p="start"===n&&!f||"start"!==n&&f;return gv(l-Oi/2)?(u=p?"bottom":"top",c="center"):gv(l-1.5*Oi)?(u=p?"top":"bottom",c="center"):(u="middle",c=l<1.5*Oi&&l>Oi/2?p?"left":"right":p?"right":"left"),{rotation:l,textAlign:c,textVerticalAlign:u}}(r.rotation,c,b||0,m),null!=(x=r.axisNameAvailableWidth)&&(x=Math.abs(x/Math.sin(y.rotation)),!isFinite(x)&&(x=null)));var C=f.getFont(),S=n.get("nameTruncate",!0)||{},M=S.ellipsis,T=Tr(r.nameTruncateMaxWidth,S.maxWidth,x),A=new an({x:v[0],y:v[1],rotation:y.rotation,silent:ol.isLabelSilent(n),style:Xn(f,{text:l,font:C,overflow:"truncate",width:T,ellipsis:M,fill:f.getTextColor()||n.get(["axisLine","lineStyle","color"]),align:f.get("align")||y.textAlign,verticalAlign:f.get("verticalAlign")||y.textVerticalAlign}),z2:1});if(cu({el:A,componentModel:n,itemName:l}),A.__fullText=l,A.anid="name",n.get("triggerEvent")){var E=ol.makeAxisEventDataBase(n);E.targetType="axisName",E.name=l,mt(A).eventData=E}s.add(A),A.updateTransform(),t.add(A),A.decomposeTransform()}}};function Ds(r){r&&(r.ignore=!0)}function cA(r,n){var t=r&&r.getBoundingRect().clone(),s=n&&n.getBoundingRect().clone();if(t&&s){var l=bo([]);return _c(l,l,-r.rotation),t.applyTransform(xl([],l,r.getLocalTransform())),s.applyTransform(xl([],l,n.getLocalTransform())),t.intersect(s)}}function aF(r){return"middle"===r||"center"===r}function oF(r,n,t,s,l){for(var c=[],u=[],f=[],p=0;p=0||r===n}function ty(r){var n=(r.ecModel.getComponent("axisPointer")||{}).coordSysAxesInfo;return n&&n.axesInfo[wi(r)]}function Tn(r){return!!r.get(["handle","show"])}function wi(r){return r.type+"||"+r.id}var ny={},cF=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l,c){this.axisPointerClass&&function uA(r){var n=ty(r);if(n){var t=n.axisPointerModel,s=n.axis.scale,l=t.option,c=t.get("status"),u=t.get("value");null!=u&&(u=s.parse(u));var f=Tn(t);null==c&&(l.status=f?"show":"hide");var p=s.getExtent().slice();p[0]>p[1]&&p.reverse(),(null==u||u>p[1])&&(u=p[1]),u0&&!x.min?x.min=0:null!=x.min&&x.min<0&&!x.max&&(x.max=0);var C=p;null!=x.color&&(C=Je({color:x.color},p));var S=At(rt(x),{boundaryGap:t,splitNumber:s,scale:l,axisLine:c,axisTick:u,axisLabel:f,name:x.text,showName:m,nameLocation:"end",nameGap:v,nameTextStyle:C,triggerEvent:y},!1);Le(g)?S.name=g.replace("{value}",S.name??""):qe(g)&&(S.name=g(S.name,S));var T=new In(S,null,this.ecModel);return Mi(T,Em.prototype),T.mainType="radar",T.componentIndex=this.componentIndex,T},this);this._indicatorModels=b},n.prototype.getIndicatorModels=function(){return this._indicatorModels},n.type="radar",n.defaultOption={z:0,center:["50%","50%"],radius:"75%",startAngle:90,axisName:{show:!0},boundaryGap:[0,0],splitNumber:5,axisNameGap:15,scale:!1,shape:"polygon",axisLine:At({lineStyle:{color:"#bbb"}},Ms.axisLine),axisLabel:wf(Ms.axisLabel,!1),axisTick:wf(Ms.axisTick,!1),splitLine:wf(Ms.splitLine,!0),splitArea:wf(Ms.splitArea,!0),indicator:[]},n}(qt);const _F=h6;var yF=["axisLine","axisTickLabel","axisName"],f6=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){this.group.removeAll(),this._buildAxes(t),this._buildSplitLineAndArea(t)},n.prototype._buildAxes=function(t){var s=t.coordinateSystem;U(xe(s.getIndicatorAxes(),function(u){var f=u.model.get("showName")?u.name:"";return new Za(u.model,{axisName:f,position:[s.cx,s.cy],rotation:u.angle,labelDirection:-1,tickDirection:-1,nameDirection:1})}),function(u){U(yF,u.add,u),this.group.add(u.getGroup())},this)},n.prototype._buildSplitLineAndArea=function(t){var s=t.coordinateSystem,l=s.getIndicatorAxes();if(l.length){var c=t.get("shape"),u=t.getModel("splitLine"),f=t.getModel("splitArea"),p=u.getModel("lineStyle"),m=f.getModel("areaStyle"),g=u.get("show"),v=f.get("show"),y=p.get("color"),b=m.get("color"),x=ye(y)?y:[y],C=ye(b)?b:[b],S=[],M=[];if("circle"===c)for(var A=l[0].getTicksCoords(),E=s.cx,L=s.cy,R=0;R3?1.4:u>1?1.2:1.1;mA(this,"zoom","zoomOnMouseWheel",t,{scale:c>0?m:1/m,originX:f,originY:p,isAvailableBehavior:null})}if(l){var v=Math.abs(c);mA(this,"scrollMove","moveOnMouseWheel",t,{scrollDelta:(c>0?1:-1)*(v>3?.4:v>1?.15:.05),originX:f,originY:p,isAvailableBehavior:null})}}},n.prototype._pinchHandler=function(t){CF(this._zr,"globalPan")||mA(this,"zoom",null,t,{scale:t.pinchScale>1?1.1:1/1.1,originX:t.pinchX,originY:t.pinchY,isAvailableBehavior:null})},n}(zs);function mA(r,n,t,s,l){r.pointerChecker&&r.pointerChecker(s,l.originX,l.originY)&&(Ar(s.event),iy(r,n,t,s,l))}function iy(r,n,t,s,l){l.isAvailableBehavior=Ne(Eu,null,t,s),r.trigger(n,l)}function Eu(r,n,t){var s=t[r];return!r||s&&(!Le(s)||n.event[s+"Key"])}const Gm=pA;function Um(r,n,t){var s=r.target;s.x+=n,s.y+=t,s.dirty()}function gA(r,n,t,s){var l=r.target,c=r.zoomLimit,u=r.zoom=r.zoom||1;if(u*=n,c){var f=c.min||0;u=Math.max(Math.min(c.max||1/0,u),f)}var m=u/r.zoom;r.zoom=u,l.x-=(t-l.x)*(m-1),l.y-=(s-l.y)*(m-1),l.scaleX*=m,l.scaleY*=m,l.dirty()}var vA={axisPointer:1,tooltip:1,brush:1};function Sf(r,n,t){var s=n.getComponentByElement(r.topTarget),l=s&&s.coordinateSystem;return s&&s!==t&&!vA.hasOwnProperty(s.mainType)&&l&&l.model!==t}function _A(r){Le(r)&&(r=(new DOMParser).parseFromString(r,"text/xml"));var t=r;for(9===t.nodeType&&(t=t.firstChild);"svg"!==t.nodeName.toLowerCase()||1!==t.nodeType;)t=t.nextSibling;return t}var Nx,Bx={fill:"fill",stroke:"stroke","stroke-width":"lineWidth",opacity:"opacity","fill-opacity":"fillOpacity","stroke-opacity":"strokeOpacity","stroke-dasharray":"lineDash","stroke-dashoffset":"lineDashOffset","stroke-linecap":"lineCap","stroke-linejoin":"lineJoin","stroke-miterlimit":"miterLimit","font-family":"fontFamily","font-size":"fontSize","font-style":"fontStyle","font-weight":"fontWeight","text-anchor":"textAlign",visibility:"visibility",display:"display"},SF=Ut(Bx),Vx={"alignment-baseline":"textBaseline","stop-color":"stopColor"},ry=Ut(Vx),g6=function(){function r(){this._defs={},this._root=null}return r.prototype.parse=function(n,t){t=t||{};var s=_A(n);this._defsUsePending=[];var l=new lt;this._root=l;var g,v,c=[],u=s.getAttribute("viewBox")||"",f=parseFloat(s.getAttribute("width")||t.width),p=parseFloat(s.getAttribute("height")||t.height);isNaN(f)&&(f=null),isNaN(p)&&(p=null),La(s,l,null,!0,!1);for(var m=s.firstChild;m;)this._parseNode(m,l,c,null,!1,!1),m=m.nextSibling;if(function AZ(r,n){for(var t=0;t=4&&(g={x:parseFloat(y[0]||0),y:parseFloat(y[1]||0),width:parseFloat(y[2]),height:parseFloat(y[3])})}if(g&&null!=f&&null!=p&&(v=bA(g,{x:0,y:0,width:f,height:p}),!t.ignoreViewBox)){var b=l;(l=new lt).add(b),b.scaleX=b.scaleY=v.scale,b.x=v.x,b.y=v.y}return!t.ignoreRootClip&&null!=f&&null!=p&&l.setClipPath(new Zt({shape:{x:0,y:0,width:f,height:p}})),{root:l,width:f,height:p,viewBoxRect:g,viewBoxTransform:v,named:c}},r.prototype._parseNode=function(n,t,s,l,c,u){var p,f=n.nodeName.toLowerCase(),m=l;if("defs"===f&&(c=!0),"text"===f&&(u=!0),"defs"===f||"switch"===f)p=t;else{if(!c){var g=Nx[f];if(g&&ze(Nx,f)){p=g.call(this,n,t);var v=n.getAttribute("name");if(v){var y={name:v,namedFrom:null,svgNodeTagLower:f,el:p};s.push(y),"g"===f&&(m=y)}else l&&s.push({name:l.name,namedFrom:l,svgNodeTagLower:f,el:p});t.add(p)}}var b=DF[f];if(b&&ze(DF,f)){var x=b.call(this,n),C=n.getAttribute("id");C&&(this._defs[C]=x)}}if(p&&p.isGroup)for(var S=n.firstChild;S;)1===S.nodeType?this._parseNode(S,p,s,m,c,u):3===S.nodeType&&u&&this._parseText(S,p),S=S.nextSibling},r.prototype._parseText=function(n,t){var s=new Iv({style:{text:n.textContent},silent:!0,x:this._textX||0,y:this._textY||0});Ts(t,s),La(n,s,this._defsUsePending,!1,!1),function v6(r,n){var t=n.__selfStyle;if(t){var s=t.textBaseline,l=s;s&&"auto"!==s&&"baseline"!==s?"before-edge"===s||"text-before-edge"===s?l="top":"after-edge"===s||"text-after-edge"===s?l="bottom":("central"===s||"mathematical"===s)&&(l="middle"):l="alphabetic",r.style.textBaseline=l}var c=n.__inheritedStyle;if(c){var u=c.textAlign,f=u;u&&("middle"===u&&(f="center"),r.style.textAlign=f)}}(s,t);var l=s.style,c=l.fontSize;c&&c<9&&(l.fontSize=9,s.scaleX*=c/9,s.scaleY*=c/9);var u=(l.fontSize||l.fontFamily)&&[l.fontStyle,l.fontWeight,(l.fontSize||12)+"px",l.fontFamily||"sans-serif"].join(" ");l.font=u;var f=s.getBoundingRect();return this._textX+=f.width,t.add(s),s},r.internalField=void(Nx={g:function(n,t){var s=new lt;return Ts(t,s),La(n,s,this._defsUsePending,!1,!1),s},rect:function(n,t){var s=new Zt;return Ts(t,s),La(n,s,this._defsUsePending,!1,!1),s.setShape({x:parseFloat(n.getAttribute("x")||"0"),y:parseFloat(n.getAttribute("y")||"0"),width:parseFloat(n.getAttribute("width")||"0"),height:parseFloat(n.getAttribute("height")||"0")}),s.silent=!0,s},circle:function(n,t){var s=new Wl;return Ts(t,s),La(n,s,this._defsUsePending,!1,!1),s.setShape({cx:parseFloat(n.getAttribute("cx")||"0"),cy:parseFloat(n.getAttribute("cy")||"0"),r:parseFloat(n.getAttribute("r")||"0")}),s.silent=!0,s},line:function(n,t){var s=new wr;return Ts(t,s),La(n,s,this._defsUsePending,!1,!1),s.setShape({x1:parseFloat(n.getAttribute("x1")||"0"),y1:parseFloat(n.getAttribute("y1")||"0"),x2:parseFloat(n.getAttribute("x2")||"0"),y2:parseFloat(n.getAttribute("y2")||"0")}),s.silent=!0,s},ellipse:function(n,t){var s=new lw;return Ts(t,s),La(n,s,this._defsUsePending,!1,!1),s.setShape({cx:parseFloat(n.getAttribute("cx")||"0"),cy:parseFloat(n.getAttribute("cy")||"0"),rx:parseFloat(n.getAttribute("rx")||"0"),ry:parseFloat(n.getAttribute("ry")||"0")}),s.silent=!0,s},polygon:function(n,t){var l,s=n.getAttribute("points");s&&(l=zx(s));var c=new Ea({shape:{points:l||[]},silent:!0});return Ts(t,c),La(n,c,this._defsUsePending,!1,!1),c},polyline:function(n,t){var l,s=n.getAttribute("points");s&&(l=zx(s));var c=new ho({shape:{points:l||[]},silent:!0});return Ts(t,c),La(n,c,this._defsUsePending,!1,!1),c},image:function(n,t){var s=new _i;return Ts(t,s),La(n,s,this._defsUsePending,!1,!1),s.setStyle({image:n.getAttribute("xlink:href")||n.getAttribute("href"),x:+n.getAttribute("x"),y:+n.getAttribute("y"),width:+n.getAttribute("width"),height:+n.getAttribute("height")}),s.silent=!0,s},text:function(n,t){var s=n.getAttribute("x")||"0",l=n.getAttribute("y")||"0",c=n.getAttribute("dx")||"0",u=n.getAttribute("dy")||"0";this._textX=parseFloat(s)+parseFloat(c),this._textY=parseFloat(l)+parseFloat(u);var f=new lt;return Ts(t,f),La(n,f,this._defsUsePending,!1,!0),f},tspan:function(n,t){var s=n.getAttribute("x"),l=n.getAttribute("y");null!=s&&(this._textX=parseFloat(s)),null!=l&&(this._textY=parseFloat(l));var c=n.getAttribute("dx")||"0",u=n.getAttribute("dy")||"0",f=new lt;return Ts(t,f),La(n,f,this._defsUsePending,!1,!0),this._textX+=parseFloat(c),this._textY+=parseFloat(u),f},path:function(n,t){var l=o2(n.getAttribute("d")||"");return Ts(t,l),La(n,l,this._defsUsePending,!1,!1),l.silent=!0,l}}),r}(),DF={lineargradient:function(r){var n=parseInt(r.getAttribute("x1")||"0",10),t=parseInt(r.getAttribute("y1")||"0",10),s=parseInt(r.getAttribute("x2")||"10",10),l=parseInt(r.getAttribute("y2")||"0",10),c=new dm(n,t,s,l);return MF(r,c),TF(r,c),c},radialgradient:function(r){var n=parseInt(r.getAttribute("cx")||"0",10),t=parseInt(r.getAttribute("cy")||"0",10),s=parseInt(r.getAttribute("r")||"0",10),l=new cM(n,t,s);return MF(r,l),TF(r,l),l}};function MF(r,n){"userSpaceOnUse"===r.getAttribute("gradientUnits")&&(n.global=!0)}function TF(r,n){for(var t=r.firstChild;t;){if(1===t.nodeType&&"stop"===t.nodeName.toLocaleLowerCase()){var l,s=t.getAttribute("offset");l=s&&s.indexOf("%")>0?parseInt(s,10)/100:s?parseFloat(s):0;var c={};yA(t,c,c);var u=c.stopColor||t.getAttribute("stop-color")||"#000000";n.colorStops.push({offset:l,color:u})}t=t.nextSibling}}function Ts(r,n){r&&r.__inheritedStyle&&(n.__inheritedStyle||(n.__inheritedStyle={}),Je(n.__inheritedStyle,r.__inheritedStyle))}function zx(r){for(var n=ay(r),t=[],s=0;s0;c-=2){var f=s[c-1],p=ay(s[c]);switch(l=l||[1,0,0,1,0,0],f){case"translate":_e(l,l,[parseFloat(p[0]),parseFloat(p[1]||"0")]);break;case"scale":Hb(l,l,[parseFloat(p[0]),parseFloat(p[1]||p[0])]);break;case"rotate":_c(l,l,-parseFloat(p[0])*Mf);break;case"skewX":xl(l,[1,0,Math.tan(parseFloat(p[0])*Mf),1,0,0],l);break;case"skewY":xl(l,[1,Math.tan(parseFloat(p[0])*Mf),0,1,0,0],l);break;case"matrix":l[0]=parseFloat(p[0]),l[1]=parseFloat(p[1]),l[2]=parseFloat(p[2]),l[3]=parseFloat(p[3]),l[4]=parseFloat(p[4]),l[5]=parseFloat(p[5])}}n.setLocalTransform(l)}}(r,n),yA(r,u,f),s||function kF(r,n,t){for(var s=0;s0,S={api:s,geo:p,mapOrGeoModel:n,data:f,isVisualEncodedByVisualMap:C,isGeo:u,transformInfoRaw:y};"geoJSON"===p.resourceType?this._buildGeoJSON(S):"geoSVG"===p.resourceType&&this._buildSVG(S),this._updateController(n,t,s),this._updateMapSelectHandler(n,m,s,l)},r.prototype._buildGeoJSON=function(n){var t=this._regionsGroupByName=Ye(),s=Ye(),l=this._regionsGroup,c=n.transformInfoRaw,u=n.mapOrGeoModel,f=n.data,p=n.geo.projection,m=p&&p.stream;function g(b,x){return x&&(b=x(b)),b&&[b[0]*c.scaleX+c.x,b[1]*c.scaleY+c.y]}function v(b){for(var x=[],C=!m&&p&&p.project,S=0;S=0)&&(y=l);var b=u?{normal:{align:"center",verticalAlign:"middle"}}:null;Xr(n,Or(s),{labelFetcher:y,labelDataIndex:v,defaultText:t},b);var x=n.getTextContent();if(x&&(RF(x).ignore=x.ignore,n.textConfig&&u)){var C=n.getBoundingRect().clone();n.textConfig.layoutRect=C,n.textConfig.position=[(u[0]-C.x)/C.width*100+"%",(u[1]-C.y)/C.height*100+"%"]}n.disableLabelAnimation=!0}else n.removeTextContent(),n.removeTextConfig(),n.disableLabelAnimation=null}function FF(r,n,t,s,l,c){r.data?r.data.setItemGraphicEl(c,n):mt(n).eventData={componentType:"geo",componentIndex:l.componentIndex,geoIndex:l.componentIndex,name:t,region:s&&s.option||{}}}function NF(r,n,t,s,l){r.data||cu({el:n,componentModel:l,itemName:t,itemTooltipOption:s.get("tooltip")})}function BF(r,n,t,s,l){n.highDownSilentOnTouch=!!l.get("selectedMode");var c=s.getModel("emphasis"),u=c.get("focus");return Pi(n,u,c.get("blurScope"),c.get("disabled")),r.isGeo&&function rD(r,n,t){var s=mt(r);s.componentMainType=n.mainType,s.componentIndex=n.componentIndex,s.componentHighDownName=t}(n,l,t),u}function VF(r,n,t){var l,s=[];function c(){l=[]}function u(){l.length&&(s.push(l),l=[])}var f=n({polygonStart:c,polygonEnd:u,lineStart:c,lineEnd:u,point:function(p,m){isFinite(p)&&isFinite(m)&&l.push([p,m])},sphere:function(){}});return!t&&f.polygonStart(),U(r,function(p){f.lineStart();for(var m=0;m-1&&(l.style.stroke=l.style.fill,l.style.fill="#fff",l.style.lineWidth=2),l},n.type="series.map",n.dependencies=["geo"],n.layoutMode="box",n.defaultOption={z:2,coordinateSystem:"geo",map:"",left:"center",top:"center",aspectScale:null,showLegendSymbol:!0,boundingCoords:null,center:null,zoom:1,scaleLimit:null,selectedMode:!0,label:{show:!1,color:"#000"},itemStyle:{borderWidth:.5,borderColor:"#444",areaColor:"#eee"},emphasis:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{areaColor:"rgba(255,215,0,0.8)"}},select:{label:{show:!0,color:"rgb(100,0,0)"},itemStyle:{color:"rgba(255,215,0,0.8)"}},nameProperty:"name"},n}(Zn);const sd=MA;function GF(r){var n={};r.eachSeriesByType("map",function(t){var s=t.getHostGeoModel(),l=s?"o"+s.id:"i"+t.getMapType();(n[l]=n[l]||[]).push(t)}),U(n,function(t,s){for(var l=function Wm(r,n){var t={};return U(r,function(s){s.each(s.mapDimension("value"),function(l,c){var u="ec-"+s.getName(c);t[u]=t[u]||[],isNaN(l)||t[u].push(l)})}),r[0].map(r[0].mapDimension("value"),function(s,l){for(var c="ec-"+r[0].getName(l),u=0,f=1/0,p=-1/0,m=t[c].length,g=0;g1?(E.width=A,E.height=A/S):(E.height=A,E.width=A*S),E.y=T[1]-E.height/2,E.x=T[0]-E.width/2;else{var L=r.getBoxLayoutParams();L.aspect=S,E=dr(L,{width:x,height:C})}this.setViewRect(E.x,E.y,E.width,E.height),this.setCenter(r.get("center"),n),this.setZoom(r.get("zoom"))}var uy=function(){function r(){this.dimensions=AA}return r.prototype.create=function(n,t){var s=[];function l(u){return{nameProperty:u.get("nameProperty"),aspectScale:u.get("aspectScale"),projection:u.get("projection")}}n.eachComponent("geo",function(u,f){var p=u.get("map"),m=new Yx(p+f,p,ge({nameMap:u.get("nameMap")},l(u)));m.zoomLimit=u.get("scaleLimit"),s.push(m),u.coordinateSystem=m,m.model=u,m.resize=qx,m.resize(u,t)}),n.eachSeries(function(u){if("geo"===u.get("coordinateSystem")){var p=u.get("geoIndex")||0;u.coordinateSystem=s[p]}});var c={};return n.eachSeriesByType("map",function(u){if(!u.getHostGeoModel()){var f=u.getMapType();c[f]=c[f]||[],c[f].push(u)}}),U(c,function(u,f){var p=xe(u,function(g){return g.get("nameMap")}),m=new Yx(f,f,ge({nameMap:Rb(p)},l(u[0])));m.zoomLimit=Tr.apply(null,xe(u,function(g){return g.get("scaleLimit")})),s.push(m),m.resize=qx,m.resize(u[0],t),U(u,function(g){g.coordinateSystem=m,function M6(r,n){U(n.get("geoCoord"),function(t,s){r.addGeoCoord(s,t)})}(m,g)})}),s},r.prototype.getFilledRegions=function(n,t,s,l){for(var c=(n||[]).slice(),u=Ye(),f=0;f=0;){var c=n[t];c.hierNode.prelim+=s,c.hierNode.modifier+=s,s+=c.hierNode.shift+(l+=c.hierNode.change)}}(r);var c=(t[0].hierNode.prelim+t[t.length-1].hierNode.prelim)/2;l?(r.hierNode.prelim=l.hierNode.prelim+n(r,l),r.hierNode.modifier=r.hierNode.prelim-c):r.hierNode.prelim=c}else l&&(r.hierNode.prelim=l.hierNode.prelim+n(r,l));r.parentNode.hierNode.defaultAncestor=function IZ(r,n,t,s){if(n){for(var l=r,c=r,u=c.parentNode.children[0],f=n,p=l.hierNode.modifier,m=c.hierNode.modifier,g=u.hierNode.modifier,v=f.hierNode.modifier;f=py(f),c=LA(c),f&&c;){l=py(l),u=LA(u),l.hierNode.ancestor=r;var y=f.hierNode.prelim+v-c.hierNode.prelim-m+s(f,c);y>0&&(P6(I6(f,r,t),r,y),m+=y,p+=y),v+=f.hierNode.modifier,m+=c.hierNode.modifier,p+=l.hierNode.modifier,g+=u.hierNode.modifier}f&&!py(l)&&(l.hierNode.thread=f,l.hierNode.modifier+=v-p),c&&!LA(u)&&(u.hierNode.thread=c,u.hierNode.modifier+=m-g,t=r)}return t}(r,l,r.parentNode.hierNode.defaultAncestor||s[0],n)}function RA(r){r.setLayout({x:r.hierNode.prelim+r.parentNode.hierNode.modifier},!0),r.hierNode.modifier+=r.parentNode.hierNode.modifier}function OA(r){return arguments.length?r:FA}function Zx(r,n){return r-=Math.PI/2,{x:n*Math.cos(r),y:n*Math.sin(r)}}function py(r){var n=r.children;return n.length&&r.isExpand?n[n.length-1]:r.hierNode.thread}function LA(r){var n=r.children;return n.length&&r.isExpand?n[0]:r.hierNode.thread}function I6(r,n,t){return r.hierNode.ancestor.parentNode===n.parentNode?r.hierNode.ancestor:t}function P6(r,n,t){var s=t/(n.hierNode.i-r.hierNode.i);n.hierNode.change-=s,n.hierNode.shift+=t,n.hierNode.modifier+=t,n.hierNode.prelim+=t,r.hierNode.change+=s}function FA(r,n){return r.parentNode===n.parentNode?1:2}var As=function r(){this.parentPoint=[],this.childPoints=[]},qF=function(r){function n(t){return r.call(this,t)||this}return se(n,r),n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new As},n.prototype.buildPath=function(t,s){var l=s.childPoints,c=l.length,u=s.parentPoint,f=l[0],p=l[c-1];if(1===c)return t.moveTo(u[0],u[1]),void t.lineTo(f[0],f[1]);var m=s.orient,g="TB"===m||"BT"===m?0:1,v=1-g,y=Re(s.forkPosition,1),b=[];b[g]=u[g],b[v]=u[v]+(p[v]-u[v])*y,t.moveTo(u[0],u[1]),t.lineTo(b[0],b[1]),t.moveTo(f[0],f[1]),b[g]=f[g],t.lineTo(b[0],b[1]),b[g]=p[g],t.lineTo(b[0],b[1]),t.lineTo(p[0],p[1]);for(var x=1;xT.x)||(E-=Math.PI);var V=L?"left":"right",H=f.getModel("label"),G=H.get("rotate"),j=G*(Math.PI/180),$=S.getTextContent();$&&(S.setTextConfig({position:H.get("position")||V,rotation:null==G?-E:j,origin:"center"}),$.setStyle("verticalAlign","middle"))}var q=f.get(["emphasis","focus"]),K="relative"===q?Ti(u.getAncestorsIndices(),u.getDescendantIndices()):"ancestor"===q?u.getAncestorsIndices():"descendant"===q?u.getDescendantIndices():null;K&&(mt(t).focus=K),function KF(r,n,t,s,l,c,u,f){var p=n.getModel(),m=r.get("edgeShape"),g=r.get("layout"),v=r.getOrient(),y=r.get(["lineStyle","curveness"]),b=r.get("edgeForkPosition"),x=p.getModel("lineStyle").getLineStyle(),C=s.__edge;if("curve"===m)n.parentNode&&n.parentNode!==t&&(C||(C=s.__edge=new Uc({shape:Iu(g,v,y,l,l)})),fn(C,{shape:Iu(g,v,y,c,u)},r));else if("polyline"===m&&"orthogonal"===g&&n!==t&&n.children&&0!==n.children.length&&!0===n.isExpand){for(var S=n.children,M=[],T=0;Tt&&(t=l.height)}this.height=t+1},r.prototype.getNodeById=function(n){if(this.getId()===n)return this;for(var t=0,s=this.children,l=s.length;t=0&&this.hostTree.data.setItemLayout(this.dataIndex,n,t)},r.prototype.getLayout=function(){return this.hostTree.data.getItemLayout(this.dataIndex)},r.prototype.getModel=function(n){if(!(this.dataIndex<0))return this.hostTree.data.getItemModel(this.dataIndex).getModel(n)},r.prototype.getLevelModel=function(){return(this.hostTree.levelModels||[])[this.depth]},r.prototype.setVisual=function(n,t){this.dataIndex>=0&&this.hostTree.data.setItemVisual(this.dataIndex,n,t)},r.prototype.getVisual=function(n){return this.hostTree.data.getItemVisual(this.dataIndex,n)},r.prototype.getRawIndex=function(){return this.hostTree.data.getRawIndex(this.dataIndex)},r.prototype.getId=function(){return this.hostTree.data.getId(this.dataIndex)},r.prototype.getChildIndex=function(){if(this.parentNode){for(var n=this.parentNode.children,t=0;t=0){var s=t.getData().tree.root,l=r.targetNode;if(Le(l)&&(l=s.getNodeById(l)),l&&s.contains(l))return{node:l};var c=r.targetNodeId;if(null!=c&&(l=s.getNodeById(c)))return{node:l}}}function tN(r){for(var n=[];r;)(r=r.parentNode)&&n.push(r);return n.reverse()}function VA(r,n){return Rt(tN(r),n)>=0}function Qx(r,n){for(var t=[];r;){var s=r.dataIndex;t.push({name:r.name,dataIndex:s,value:n.getRawValue(s)}),r=r.parentNode}return t.reverse(),t}var z6=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.hasSymbolVisual=!0,t.ignoreStyleOnData=!0,t}return se(n,r),n.prototype.getInitialData=function(t){var s={name:t.name,children:t.data},c=new In(t.leaves||{},this,this.ecModel),u=Pu.createTree(s,this,function f(v){v.wrapMethod("getItemModel",function(y,b){var x=u.getNodeByDataIndex(b);return x&&x.children.length&&x.isExpand||(y.parentModel=c),y})}),p=0;u.eachNode("preorder",function(v){v.depth>p&&(p=v.depth)});var g=t.expandAndCollapse&&t.initialTreeDepth>=0?t.initialTreeDepth:p;return u.root.eachNode("preorder",function(v){var y=v.hostTree.data.getRawDataItem(v.dataIndex);v.isExpand=y&&null!=y.collapsed?!y.collapsed:v.depth<=g}),u.data},n.prototype.getOrient=function(){var t=this.get("orient");return"horizontal"===t?t="LR":"vertical"===t&&(t="TB"),t},n.prototype.setZoom=function(t){this.option.zoom=t},n.prototype.setCenter=function(t){this.option.center=t},n.prototype.formatTooltip=function(t,s,l){for(var c=this.getData().tree,u=c.root.children[0],f=c.getNodeByDataIndex(t),p=f.getValue(),m=f.name;f&&f!==u;)m=f.parentNode.name+"."+m,f=f.parentNode;return Y("nameValue",{name:m,value:p,noValue:isNaN(p)||null==p})},n.prototype.getDataParams=function(t){var s=r.prototype.getDataParams.apply(this,arguments),l=this.getData().tree.getNodeByDataIndex(t);return s.treeAncestors=Qx(l,this),s.collapsed=!l.isExpand,s},n.type="series.tree",n.layoutMode="box",n.defaultOption={z:2,coordinateSystem:"view",left:"12%",top:"12%",right:"12%",bottom:"12%",layout:"orthogonal",edgeShape:"curve",edgeForkPosition:"50%",roam:!1,nodeScaleRatio:.4,center:null,zoom:1,orient:"LR",symbol:"emptyCircle",symbolSize:7,expandAndCollapse:!0,initialTreeDepth:2,lineStyle:{color:"#ccc",width:1.5,curveness:.5},itemStyle:{color:"lightsteelblue",borderWidth:1.5},label:{show:!0},animationEasing:"linear",animationDuration:700,animationDurationUpdate:500},n}(Zn);const H6=z6;function wy(r,n){for(var s,t=[r];s=t.pop();)if(n(s),s.isExpand){var l=s.children;if(l.length)for(var c=l.length-1;c>=0;c--)t.push(l[c])}}function U6(r,n){r.eachSeriesByType("tree",function(t){!function nN(r,n){var t=function kZ(r,n){return dr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}(r,n);r.layoutInfo=t;var s=r.get("layout"),l=0,c=0,u=null;"radial"===s?(l=2*Math.PI,c=Math.min(t.height,t.width)/2,u=OA(function(A,E){return(A.parentNode===E.parentNode?1:2)/A.depth})):(l=t.width,c=t.height,u=OA());var f=r.getData().tree.root,p=f.children[0];if(p){(function k6(r){var n=r;n.hierNode={defaultAncestor:null,ancestor:n,prelim:0,modifier:0,change:0,shift:0,i:0,thread:null};for(var s,l,t=[n];s=t.pop();)if(l=s.children,s.isExpand&&l.length)for(var u=l.length-1;u>=0;u--){var f=l[u];f.hierNode={defaultAncestor:null,ancestor:f,prelim:0,modifier:0,change:0,shift:0,i:u,thread:null},t.push(f)}})(f),function G6(r,n,t){for(var c,s=[r],l=[];c=s.pop();)if(l.push(c),c.isExpand){var u=c.children;if(u.length)for(var f=0;fg.getLayout().x&&(g=A),A.depth>v.depth&&(v=A)});var y=m===g?1:u(m,g)/2,b=y-m.getLayout().x,x=0,C=0,S=0,M=0;if("radial"===s)x=l/(g.getLayout().x+y+b),C=c/(v.depth-1||1),wy(p,function(A){var E=Zx(S=(A.getLayout().x+b)*x,M=(A.depth-1)*C);A.setLayout({x:E.x,y:E.y,rawX:S,rawY:M},!0)});else{var T=r.getOrient();"RL"===T||"LR"===T?(C=c/(g.getLayout().x+y+b),x=l/(v.depth-1||1),wy(p,function(A){M=(A.getLayout().x+b)*C,A.setLayout({x:S="LR"===T?(A.depth-1)*x:l-(A.depth-1)*x,y:M},!0)})):("TB"===T||"BT"===T)&&(x=l/(g.getLayout().x+y+b),C=c/(v.depth-1||1),wy(p,function(A){S=(A.getLayout().x+b)*x,A.setLayout({x:S,y:M="TB"===T?(A.depth-1)*C:c-(A.depth-1)*C},!0)}))}}}(t,n)})}function j6(r){r.eachSeriesByType("tree",function(n){var t=n.getData();t.tree.eachNode(function(l){var u=l.getModel().getModel("itemStyle").getItemStyle();ge(t.ensureUniqueItemVisual(l.dataIndex,"style"),u)})})}var Jx=["treemapZoomToNode","treemapRender","treemapMove"];function rN(r){var n=r.getData(),s={};n.tree.eachNode(function(l){for(var c=l;c&&c.depth>1;)c=c.parentNode;var u=ED(r.ecModel,c.name||c.dataIndex+"",s);l.setVisual("decal",u)})}var $6=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.preventUsingHoverLayer=!0,t}return se(n,r),n.prototype.getInitialData=function(t,s){var l={name:t.name,children:t.data};aN(l);var c=t.levels||[],u=this.designatedVisualItemStyle={},f=new In({itemStyle:u},this,s);c=t.levels=function W6(r,n){var t=Nn(n.get("color")),s=Nn(n.get(["aria","decal","decals"]));if(t){var l,c;U(r=r||[],function(f){var p=new In(f),m=p.get("color"),g=p.get("decal");(p.get(["itemStyle","color"])||m&&"none"!==m)&&(l=!0),(p.get(["itemStyle","decal"])||g&&"none"!==g)&&(c=!0)});var u=r[0]||(r[0]={});return l||(u.color=t.slice()),!c&&s&&(u.decal=s.slice()),r}}(c,s);var p=xe(c||[],function(v){return new In(v,f,s)},this),m=Pu.createTree(l,this,function g(v){v.wrapMethod("getItemModel",function(y,b){var x=m.getNodeByDataIndex(b);return y.parentModel=(x?p[x.depth]:null)||f,y})});return m.data},n.prototype.optionUpdated=function(){this.resetViewRoot()},n.prototype.formatTooltip=function(t,s,l){var c=this.getData(),u=this.getRawValue(t);return Y("nameValue",{name:c.getName(t),value:u})},n.prototype.getDataParams=function(t){var s=r.prototype.getDataParams.apply(this,arguments),l=this.getData().tree.getNodeByDataIndex(t);return s.treeAncestors=Qx(l,this),s.treePathInfo=s.treeAncestors,s},n.prototype.setLayoutInfo=function(t){this.layoutInfo=this.layoutInfo||{},ge(this.layoutInfo,t)},n.prototype.mapIdToIndex=function(t){var s=this._idIndexMap;s||(s=this._idIndexMap=Ye(),this._idIndexMapCount=0);var l=s.get(t);return null==l&&s.set(t,l=this._idIndexMapCount++),l},n.prototype.getViewRoot=function(){return this._viewRoot},n.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var s=this.getRawData().tree.root;(!t||t!==s&&!s.contains(t))&&(this._viewRoot=s)},n.prototype.enableAriaDecal=function(){rN(this)},n.type="series.treemap",n.layoutMode="box",n.defaultOption={progressive:0,left:"center",top:"middle",width:"80%",height:"80%",sort:!0,clipWindow:"origin",squareRatio:.5*(1+Math.sqrt(5)),leafDepth:null,drillDownIcon:"\u25b6",zoomToNodeRatio:.1024,roam:!0,nodeClick:"zoomToNode",animation:!0,animationDurationUpdate:900,animationEasing:"quinticInOut",breadcrumb:{show:!0,height:22,left:"center",top:"bottom",emptyItemWidth:25,itemStyle:{color:"rgba(0,0,0,0.7)",textStyle:{color:"#fff"}},emphasis:{itemStyle:{color:"rgba(0,0,0,0.9)"}}},label:{show:!0,distance:0,padding:5,position:"inside",color:"#fff",overflow:"truncate"},upperLabel:{show:!1,position:[0,"50%"],height:20,overflow:"truncate",verticalAlign:"middle"},itemStyle:{color:null,colorAlpha:null,colorSaturation:null,borderWidth:0,gapWidth:0,borderColor:"#fff",borderColorSaturation:null},emphasis:{upperLabel:{show:!0,position:[0,"50%"],overflow:"truncate",verticalAlign:"middle"}},visualDimension:0,visualMin:null,visualMax:null,color:[],colorAlpha:null,colorSaturation:null,colorMappingBy:"index",visibleMin:10,childrenVisibleMin:null,levels:[]},n}(Zn);function aN(r){var n=0;U(r.children,function(s){aN(s);var l=s.value;ye(l)&&(l=l[0]),n+=l});var t=r.value;ye(t)&&(t=t[0]),(null==t||isNaN(t))&&(t=n),t<0&&(t=0),ye(r.value)?r.value[0]=t:r.value=t}const tC=$6;var Ym=5,nC=function(){function r(n){this.group=new lt,n.add(this.group)}return r.prototype.render=function(n,t,s,l){var c=n.getModel("breadcrumb"),u=this.group;if(u.removeAll(),c.get("show")&&s){var f=c.getModel("itemStyle"),p=c.getModel("emphasis"),m=f.getModel("textStyle"),g=p.getModel(["itemStyle","textStyle"]),v={pos:{left:c.get("left"),right:c.get("right"),top:c.get("top"),bottom:c.get("bottom")},box:{width:t.getWidth(),height:t.getHeight()},emptyItemWidth:c.get("emptyItemWidth"),totalWidth:0,renderList:[]};this._prepare(s,v,m),this._renderContent(n,v,f,p,m,g,l),H0(u,v.pos,v.box)}},r.prototype._prepare=function(n,t,s){for(var l=n;l;l=l.parentNode){var c=cr(l.getModel().get("name"),""),u=s.getTextRect(c),f=Math.max(u.width+16,t.emptyItemWidth);t.totalWidth+=f+8,t.renderList.push({node:l,text:c,width:f})}},r.prototype._renderContent=function(n,t,s,l,c,u,f){for(var p=0,m=t.emptyItemWidth,g=n.get(["breadcrumb","height"]),v=function EH(r,n,t){var s=n.width,l=n.height,c=Re(r.left,s),u=Re(r.top,l),f=Re(r.right,s),p=Re(r.bottom,l);return(isNaN(c)||isNaN(parseFloat(r.left)))&&(c=0),(isNaN(f)||isNaN(parseFloat(r.right)))&&(f=s),(isNaN(u)||isNaN(parseFloat(r.top)))&&(u=0),(isNaN(p)||isNaN(parseFloat(r.bottom)))&&(p=l),t=Qd(t||0),{width:Math.max(f-c-t[1]-t[3],0),height:Math.max(p-u-t[0]-t[2],0)}}(t.pos,t.box),y=t.totalWidth,b=t.renderList,x=l.getModel("itemStyle").getItemStyle(),C=b.length-1;C>=0;C--){var S=b[C],M=S.node,T=S.width,A=S.text;y>v.width&&(y-=T-m,T=m,A=null);var E=new Ea({shape:{points:sN(p,0,T,g,C===b.length-1,0===C)},style:Je(s.getItemStyle(),{lineJoin:"bevel"}),textContent:new an({style:Xn(c,{text:A})}),textConfig:{position:"inside"},z2:1e4*Hp,onclick:$e(f,M)});E.disableLabelAnimation=!0,E.getTextContent().ensureState("emphasis").style=Xn(u,{text:A}),E.ensureState("emphasis").style=x,Pi(E,l.get("focus"),l.get("blurScope"),l.get("disabled")),this.group.add(E),xy(E,n,M),p+=T+8}},r.prototype.remove=function(){this.group.removeAll()},r}();function sN(r,n,t,s,l,c){var u=[[l?r:r-Ym,n],[r+t,n],[r+t,n+s],[l?r:r-Ym,n+s]];return!c&&u.splice(2,0,[r+t+Ym,n+s/2]),!l&&u.push([r,n+s/2]),u}function xy(r,n,t){mt(r).eventData={componentType:"series",componentSubType:"treemap",componentIndex:n.componentIndex,seriesIndex:n.seriesIndex,seriesName:n.name,seriesType:"treemap",selfType:"breadcrumb",nodeData:{dataIndex:t&&t.dataIndex,name:t&&t.name},treePathInfo:t&&Qx(t,n)}}const lN=nC;var Y6=function(){function r(){this._storage=[],this._elExistsMap={}}return r.prototype.add=function(n,t,s,l,c){return!this._elExistsMap[n.id]&&(this._elExistsMap[n.id]=!0,this._storage.push({el:n,target:t,duration:s,delay:l,easing:c}),!0)},r.prototype.finished=function(n){return this._finishedCallback=n,this},r.prototype.start=function(){for(var n=this,t=this._storage.length,s=function(){--t<=0&&(n._storage.length=0,n._elExistsMap={},n._finishedCallback&&n._finishedCallback())},l=0,c=this._storage.length;l3||Math.abs(t.dy)>3)){var s=this.seriesModel.getData().tree.root;if(!s)return;var l=s.getLayout();if(!l)return;this.api.dispatchAction({type:"treemapMove",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:l.x+t.dx,y:l.y+t.dy,width:l.width,height:l.height}})}},n.prototype._onZoom=function(t){var s=t.originX,l=t.originY;if("animating"!==this._state){var c=this.seriesModel.getData().tree.root;if(!c)return;var u=c.getLayout();if(!u)return;var f=new yt(u.x,u.y,u.width,u.height),p=this.seriesModel.layoutInfo,m=[1,0,0,1,0,0];_e(m,m,[-(s-=p.x),-(l-=p.y)]),Hb(m,m,[t.scale,t.scale]),_e(m,m,[s,l]),f.applyTransform(m),this.api.dispatchAction({type:"treemapRender",from:this.uid,seriesId:this.seriesModel.id,rootRect:{x:f.x,y:f.y,width:f.width,height:f.height}})}},n.prototype._initEvents=function(t){var s=this;t.on("click",function(l){if("ready"===s._state){var c=s.seriesModel.get("nodeClick",!0);if(c){var u=s.findTarget(l.offsetX,l.offsetY);if(u){var f=u.node;if(f.getLayout().isLeafRoot)s._rootToNode(u);else if("zoomToNode"===c)s._zoomToNode(u);else if("link"===c){var p=f.hostTree.data.getItemModel(f.dataIndex),m=p.get("link",!0),g=p.get("target",!0)||"blank";m&&V0(m,g)}}}}},this)},n.prototype._renderBreadcrumb=function(t,s,l){var c=this;l||(l=null!=t.get("leafDepth",!0)?{node:t.getViewRoot()}:this.findTarget(s.getWidth()/2,s.getHeight()/2))||(l={node:t.getData().tree.root}),(this._breadcrumb||(this._breadcrumb=new lN(this.group))).render(t,s,l.node,function(u){"animating"!==c._state&&(VA(t.getViewRoot(),u)?c._rootToNode({node:u}):c._zoomToNode({node:u}))})},n.prototype.remove=function(){this._clearController(),this._containerGroup&&this._containerGroup.removeAll(),this._storage={nodeGroup:[],background:[],content:[]},this._state="ready",this._breadcrumb&&this._breadcrumb.remove()},n.prototype.dispose=function(){this._clearController()},n.prototype._zoomToNode=function(t){this.api.dispatchAction({type:"treemapZoomToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},n.prototype._rootToNode=function(t){this.api.dispatchAction({type:"treemapRootToNode",from:this.uid,seriesId:this.seriesModel.id,targetNode:t.node})},n.prototype.findTarget=function(t,s){var l;return this.seriesModel.getViewRoot().eachNode({attr:"viewChildren",order:"preorder"},function(u){var f=this._storage.background[u.getRawIndex()];if(f){var p=f.transformCoordToLocal(t,s),m=f.shape;if(!(m.x<=p[0]&&p[0]<=m.x+m.width&&m.y<=p[1]&&p[1]<=m.y+m.height))return!1;l={node:u,offsetX:p[0],offsetY:p[1]}}},this),l},n.type="treemap",n}(Vn);const PZ=fN;var qm=U,gN=tt,rC=-1,jA=function(){function r(n){var t=n.mappingMethod,s=n.type,l=this.option=rt(n);this.type=s,this.mappingMethod=t,this._normalizeData=oC[t];var c=r.visualHandlers[s];this.applyVisual=c.applyVisual,this.getColorMapper=c.getColorMapper,this._normalizedToVisual=c._normalizedToVisual[t],"piecewise"===t?($A(l),function Q6(r){var n=r.pieceList;r.hasSpecialVisual=!1,U(n,function(t,s){t.originIndex=s,null!=t.visual&&(r.hasSpecialVisual=!0)})}(l)):"category"===t?l.categories?function J6(r){var n=r.categories,t=r.categoryMap={},s=r.visual;if(qm(n,function(u,f){t[u]=f}),!ye(s)){var l=[];tt(s)?qm(s,function(u,f){l[t[f]??rC]=u}):l[rC]=s,s=qA(r,l)}for(var c=n.length-1;c>=0;c--)null==s[c]&&(delete t[n[c]],n.pop())}(l):$A(l,!0):(va("linear"!==t||l.dataExtent),$A(l))}return r.prototype.mapValueToVisual=function(n){var t=this._normalizeData(n);return this._normalizedToVisual(t,n)},r.prototype.getNormalizer=function(){return Ne(this._normalizeData,this)},r.listVisualTypes=function(){return Ut(r.visualHandlers)},r.isValidType=function(n){return r.visualHandlers.hasOwnProperty(n)},r.eachVisual=function(n,t,s){tt(n)?U(n,t,s):t.call(s,n)},r.mapVisual=function(n,t,s){var l,c=ye(n)?[]:tt(n)?{}:(l=!0,null);return r.eachVisual(n,function(u,f){var p=t.call(s,u,f);l?c=p:c[f]=p}),c},r.retrieveVisuals=function(n){var s,t={};return n&&qm(r.visualHandlers,function(l,c){n.hasOwnProperty(c)&&(t[c]=n[c],s=!0)}),s?t:null},r.prepareVisualTypes=function(n){if(ye(n))n=n.slice();else{if(!gN(n))return[];var t=[];qm(n,function(s,l){t.push(l)}),n=t}return n.sort(function(s,l){return"color"===l&&"color"!==s&&0===s.indexOf("color")?1:-1}),n},r.dependsOn=function(n,t){return"color"===t?!(!n||0!==n.indexOf(t)):n===t},r.findPieceIndex=function(n,t,s){for(var l,c=1/0,u=0,f=t.length;um[1]&&(m[1]=p);var g=n.get("colorMappingBy"),v={type:u.name,dataExtent:m,visual:u.range};"color"!==v.type||"index"!==g&&"id"!==g?v.mappingMethod="linear":(v.mappingMethod="category",v.loop=!0);var y=new Jr(v);return _N(y).drColorMappingBy=g,y}}}(0,l,c,0,p,b);U(b,function(C,S){if(C.depth>=t.length||C===t[C.depth]){var M=function ij(r,n,t,s,l,c){var u=ge({},n);if(l){var f=l.type,p="color"===f&&_N(l).drColorMappingBy,m="index"===p?s:"id"===p?c.mapIdToIndex(t.getId()):t.getValue(r.get("visualDimension"));u[f]=l.mapValueToVisual(m)}return u}(l,p,C,S,x,s);yN(C,M,t,s)}})}else y=bN(p),m.fill=y}}function bN(r){var n=XA(r,"color");if(n){var t=XA(r,"colorAlpha"),s=XA(r,"colorSaturation");return s&&(n=wp(n,null,null,s)),t&&(n=Kg(n,t)),n}}function XA(r,n){var t=r[n];if(null!=t&&"none"!==t)return t}function Dy(r,n){var t=r.get(n);return ye(t)&&t.length?{name:n,range:t}:null}var My=Math.max,lC=Math.min,wN=Tr,Fa=U,xN=["itemStyle","borderWidth"],Is=["itemStyle","gapWidth"],rj=["upperLabel","show"],aj=["upperLabel","height"];const CN={seriesType:"treemap",reset:function(r,n,t,s){var l=t.getWidth(),c=t.getHeight(),u=r.option,f=dr(r.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),p=u.size||[],m=Re(wN(f.width,p[0]),l),g=Re(wN(f.height,p[1]),c),v=s&&s.type,b=by(s,["treemapZoomToNode","treemapRootToNode"],r),x="treemapRender"===v||"treemapMove"===v?s.rootRect:null,C=r.getViewRoot(),S=tN(C);if("treemapMove"!==v){var M="treemapZoomToNode"===v?function Zm(r,n,t,s,l){var c=(n||{}).node,u=[s,l];if(!c||c===t)return u;for(var f,p=s*l,m=p*r.option.zoomToNodeRatio;f=c.parentNode;){for(var g=0,v=f.children,y=0,b=v.length;yxS&&(m=xS),c=f}mf[1]&&(f[1]=m)})):f=[NaN,NaN],{sum:s,dataExtent:f}}(n,u,f);if(0===m.sum)return r.viewChildren=[];if(m.sum=function sj(r,n,t,s,l){if(!s)return t;for(var c=r.get("visibleMin"),u=l.length,f=u,p=u-1;p>=0;p--){var m=l["asc"===s?u-p-1:p].getValue();m/t*ns&&(s=u));var p=r.area*r.area,m=n*n*t;return p?My(m*s/p,p/(m*l)):1/0}function DN(r,n,t,s,l){var c=n===t.width?0:1,u=1-c,f=["x","y"],p=["width","height"],m=t[f[c]],g=n?r.area/n:0;(l||g>t[p[u]])&&(g=t[p[u]]);for(var v=0,y=r.length;vs&&(s=n);var c=s%2?s+2:s+3;l=[];for(var u=0;u0&&(L[0]=-L[0],L[1]=-L[1]);var V=E[0]<0?-1:1;if("start"!==c.__position&&"end"!==c.__position){var H=-Math.atan2(E[1],E[0]);v[0].8?"left":y[0]<-.8?"right":"center",C=y[1]>.8?"top":y[1]<-.8?"bottom":"middle";break;case"start":c.x=-y[0]*M+g[0],c.y=-y[1]*T+g[1],x=y[0]>.8?"right":y[0]<-.8?"left":"center",C=y[1]>.8?"bottom":y[1]<-.8?"top":"middle";break;case"insideStartTop":case"insideStart":case"insideStartBottom":c.x=M*V+g[0],c.y=g[1]+G,x=E[0]<0?"right":"left",c.originX=-M*V,c.originY=-G;break;case"insideMiddleTop":case"insideMiddle":case"insideMiddleBottom":case"middle":c.x=R[0],c.y=R[1]+G,x="center",c.originY=-G;break;case"insideEndTop":case"insideEnd":case"insideEndBottom":c.x=-M*V+v[0],c.y=v[1]+G,x=E[0]>=0?"right":"left",c.originX=M*V,c.originY=-G}c.scaleX=c.scaleY=u,c.setStyle({verticalAlign:c.__verticalAlign||C,align:c.__align||x})}}}function b(j,$){var q=j.__specifiedRotation;if(null==q){var K=p.tangentAt($);j.attr("rotation",(1===$?-1:1)*Math.PI/2-Math.atan2(K[1],K[0]))}else j.attr("rotation",q)}},n}(lt);const ak=pj;var mj=function(){function r(n){this.group=new lt,this._LineCtor=n||ak}return r.prototype.updateData=function(n){var t=this;this._progressiveEls=null;var s=this,l=s.group,c=s._lineData;s._lineData=n,c||l.removeAll();var u=ky(n);n.diff(c).add(function(f){t._doAdd(n,f,u)}).update(function(f,p){t._doUpdate(c,n,p,f,u)}).remove(function(f){l.remove(c.getItemGraphicEl(f))}).execute()},r.prototype.updateLayout=function(){var n=this._lineData;n&&n.eachItemGraphicEl(function(t,s){t.updateLayout(n,s)},this)},r.prototype.incrementalPrepareUpdate=function(n){this._seriesScope=ky(n),this._lineData=null,this.group.removeAll()},r.prototype.incrementalUpdate=function(n,t){function s(f){!f.isGroup&&!function gj(r){return r.animators&&r.animators.length>0}(f)&&(f.incremental=!0,f.ensureState("emphasis").hoverLayer=!0)}this._progressiveEls=[];for(var l=n.start;l=0?f+=m:f-=m:x>=0?f-=m:f+=m}return f}function Py(r,n){var t=[],s=Wb,l=[[],[],[]],c=[[],[]],u=[];n/=2,r.eachEdge(function(f,p){var m=f.getLayout(),g=f.getVisual("fromSymbol"),v=f.getVisual("toSymbol");m.__original||(m.__original=[vl(m[0]),vl(m[1])],m[2]&&m.__original.push(vl(m[2])));var y=m.__original;if(null!=m[2]){if(Va(l[0],y[0]),Va(l[1],y[2]),Va(l[2],y[1]),g&&"none"!==g){var b=Qm(f.node1),x=BN(l,y[0],b*n);s(l[0][0],l[1][0],l[2][0],x,t),l[0][0]=t[3],l[1][0]=t[4],s(l[0][1],l[1][1],l[2][1],x,t),l[0][1]=t[3],l[1][1]=t[4]}v&&"none"!==v&&(b=Qm(f.node2),x=BN(l,y[1],b*n),s(l[0][0],l[1][0],l[2][0],x,t),l[1][0]=t[1],l[2][0]=t[2],s(l[0][1],l[1][1],l[2][1],x,t),l[1][1]=t[1],l[2][1]=t[2]),Va(m[0],l[0]),Va(m[1],l[2]),Va(m[2],l[1])}else Va(c[0],y[0]),Va(c[1],y[1]),ih(u,c[1],c[0]),rh(u,u),g&&"none"!==g&&(b=Qm(f.node1),Rn(c[0],c[0],u,b*n)),v&&"none"!==v&&(b=Qm(f.node2),Rn(c[1],c[1],u,-b*n)),Va(m[0],c[0]),Va(m[1],c[1])})}function Ry(r){return"view"===r.type}var VN=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.init=function(t,s){var l=new nd,c=new ok,u=this.group;this._controller=new Gm(s.getZr()),this._controllerHost={target:u},u.add(l.group),u.add(c.group),this._symbolDraw=l,this._lineDraw=c,this._firstRender=!0},n.prototype.render=function(t,s,l){var c=this,u=t.coordinateSystem;this._model=t;var f=this._symbolDraw,p=this._lineDraw,m=this.group;if(Ry(u)){var g={x:u.x,y:u.y,scaleX:u.scaleX,scaleY:u.scaleY};this._firstRender?m.attr(g):fn(m,g,t)}Py(t.getGraph(),Ay(t));var v=t.getData();f.updateData(v);var y=t.getEdgeData();p.updateData(y),this._updateNodeAndLinkScale(),this._updateController(t,s,l),clearTimeout(this._layoutTimeout);var b=t.forceLayout,x=t.get(["force","layoutAnimation"]);b&&this._startForceLayoutIteration(b,x);var C=t.get("layout");v.graph.eachNode(function(A){var E=A.dataIndex,L=A.getGraphicEl(),R=A.getModel();if(L){L.off("drag").off("dragend");var V=R.get("draggable");V&&L.on("drag",function(G){switch(C){case"force":b.warmUp(),!c._layouting&&c._startForceLayoutIteration(b,x),b.setFixed(E),v.setItemLayout(E,[L.x,L.y]);break;case"circular":v.setItemLayout(E,[L.x,L.y]),A.setLayout({fixed:!0},!0),tk(t,"symbolSize",A,[G.offsetX,G.offsetY]),c.updateLayout(t);break;default:v.setItemLayout(E,[L.x,L.y]),dC(t.getGraph(),t),c.updateLayout(t)}}).on("dragend",function(){b&&b.setUnfixed(E)}),L.setDraggable(V,!!R.get("cursor")),"adjacency"===R.get(["emphasis","focus"])&&(mt(L).focus=A.getAdjacentDataIndices())}}),v.graph.eachEdge(function(A){var E=A.getGraphicEl(),L=A.getModel().get(["emphasis","focus"]);E&&"adjacency"===L&&(mt(E).focus={edge:[A.dataIndex],node:[A.node1.dataIndex,A.node2.dataIndex]})});var S="circular"===t.get("layout")&&t.get(["circular","rotateLabel"]),M=v.getLayout("cx"),T=v.getLayout("cy");v.graph.eachNode(function(A){PN(A,S,M,T)}),this._firstRender=!1},n.prototype.dispose=function(){this._controller&&this._controller.dispose(),this._controllerHost=null},n.prototype._startForceLayoutIteration=function(t,s){var l=this;!function c(){t.step(function(u){l.updateLayout(l._model),(l._layouting=!u)&&(s?l._layoutTimeout=setTimeout(c,16):c())})}()},n.prototype._updateController=function(t,s,l){var c=this,u=this._controller,f=this._controllerHost,p=this.group;u.setPointerChecker(function(m,g,v){var y=p.getBoundingRect();return y.applyTransform(p.transform),y.contain(g,v)&&!Sf(m,l,t)}),Ry(t.coordinateSystem)?(u.enable(t.get("roam")),f.zoomLimit=t.get("scaleLimit"),f.zoom=t.coordinateSystem.getZoom(),u.off("pan").off("zoom").on("pan",function(m){Um(f,m.dx,m.dy),l.dispatchAction({seriesId:t.id,type:"graphRoam",dx:m.dx,dy:m.dy})}).on("zoom",function(m){gA(f,m.scale,m.originX,m.originY),l.dispatchAction({seriesId:t.id,type:"graphRoam",zoom:m.scale,originX:m.originX,originY:m.originY}),c._updateNodeAndLinkScale(),Py(t.getGraph(),Ay(t)),c._lineDraw.updateLayout(),l.updateLabelLayout()})):u.disable()},n.prototype._updateNodeAndLinkScale=function(){var t=this._model,s=t.getData(),l=Ay(t);s.eachItemGraphicEl(function(c,u){c&&c.setSymbolScale(l)})},n.prototype.updateLayout=function(t){Py(t.getGraph(),Ay(t)),this._symbolDraw.updateLayout(),this._lineDraw.updateLayout()},n.prototype.remove=function(t,s){this._symbolDraw&&this._symbolDraw.remove(),this._lineDraw&&this._lineDraw.remove()},n.type="graph",n}(Vn);const _j=VN;function Oy(r){return"_EC_"+r}var yj=function(){function r(n){this.type="graph",this.nodes=[],this.edges=[],this._nodesMap={},this._edgesMap={},this._directed=n||!1}return r.prototype.isDirected=function(){return this._directed},r.prototype.addNode=function(n,t){var s=this._nodesMap;if(!s[Oy(n=null==n?""+t:""+n)]){var l=new Nf(n,t);return l.hostGraph=this,this.nodes.push(l),s[Oy(n)]=l,l}},r.prototype.getNodeByIndex=function(n){var t=this.data.getRawIndex(n);return this.nodes[t]},r.prototype.getNodeById=function(n){return this._nodesMap[Oy(n)]},r.prototype.addEdge=function(n,t,s){var l=this._nodesMap,c=this._edgesMap;if(rn(n)&&(n=this.nodes[n]),rn(t)&&(t=this.nodes[t]),n instanceof Nf||(n=l[Oy(n)]),t instanceof Nf||(t=l[Oy(t)]),n&&t){var u=n.id+"-"+t.id,f=new Ly(n,t,s);return f.hostGraph=this,this._directed&&(n.outEdges.push(f),t.inEdges.push(f)),n.edges.push(f),n!==t&&t.edges.push(f),this.edges.push(f),c[u]=f,f}},r.prototype.getEdgeByIndex=function(n){var t=this.edgeData.getRawIndex(n);return this.edges[t]},r.prototype.getEdge=function(n,t){n instanceof Nf&&(n=n.id),t instanceof Nf&&(t=t.id);var s=this._edgesMap;return this._directed?s[n+"-"+t]:s[n+"-"+t]||s[t+"-"+n]},r.prototype.eachNode=function(n,t){for(var s=this.nodes,l=s.length,c=0;c=0&&n.call(t,s[c],c)},r.prototype.eachEdge=function(n,t){for(var s=this.edges,l=s.length,c=0;c=0&&s[c].node1.dataIndex>=0&&s[c].node2.dataIndex>=0&&n.call(t,s[c],c)},r.prototype.breadthFirstTraverse=function(n,t,s,l){if(t instanceof Nf||(t=this._nodesMap[Oy(t)]),t){for(var c="out"===s?"outEdges":"in"===s?"inEdges":"edges",u=0;u=0&&p.node2.dataIndex>=0}),c=0,u=l.length;c=0&&this[r][n].setItemVisual(this.dataIndex,t,s)},getVisual:function(t){return this[r][n].getItemVisual(this.dataIndex,t)},setLayout:function(t,s){this.dataIndex>=0&&this[r][n].setItemLayout(this.dataIndex,t,s)},getLayout:function(){return this[r][n].getItemLayout(this.dataIndex)},getGraphicEl:function(){return this[r][n].getItemGraphicEl(this.dataIndex)},getRawIndex:function(){return this[r][n].getRawIndex(this.dataIndex)}}}Mi(Nf,zN("hostGraph","data")),Mi(Ly,zN("hostGraph","edgeData"));const bj=yj;function fC(r,n,t,s,l){for(var c=new bj(s),u=0;u "+y)),m++)}var x,b=t.get("coordinateSystem");if("cartesian2d"===b||"polar"===b)x=Kc(r,t);else{var C=eu.get(b),S=C&&C.dimensions||[];Rt(S,"value")<0&&S.concat(["value"]);var M=df(r,{coordDimensions:S,encodeDefine:t.getEncode()}).dimensions;(x=new Pa(M,t)).initData(r)}var T=new Pa(["value"],t);return T.initData(p,f),l&&l(x,T),B6({mainData:x,struct:c,structAttr:"graph",datas:{node:x,edge:T},datasAttr:{node:"data",edge:"edgeData"}}),c.update(),c}var VZ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.hasSymbolVisual=!0,t}return se(n,r),n.prototype.init=function(t){r.prototype.init.apply(this,arguments);var s=this;function l(){return s._categoriesData}this.legendVisualProvider=new Fm(l,l),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},n.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this.fillDataTextStyle(t.edges||t.links),this._updateCategoriesData()},n.prototype.mergeDefaultAndTheme=function(t){r.prototype.mergeDefaultAndTheme.apply(this,arguments),cs(t,"edgeLabel",["show"])},n.prototype.getInitialData=function(t,s){var l=t.edges||t.links||[],c=t.data||t.nodes||[],u=this;if(c&&l){!function FZ(r){Km(r)&&(r.__curvenessList=[],r.__edgeMap={},TN(r))}(this);var f=fC(c,l,this,!0,function p(m,g){m.wrapMethod("getItemModel",function(x){var M=u._categoriesModels[x.getShallow("category")];return M&&(M.parentModel=x.parentModel,x.parentModel=M),x});var v=In.prototype.getModel;function y(x,C){var S=v.call(this,x,C);return S.resolveParentPath=b,S}function b(x){if(x&&("label"===x[0]||"label"===x[1])){var C=x.slice();return"label"===x[0]?C[0]="edgeLabel":"label"===x[1]&&(C[1]="edgeLabel"),C}return x}g.wrapMethod("getItemModel",function(x){return x.resolveParentPath=b,x.getModel=y,x})});return U(f.edges,function(m){!function NZ(r,n,t,s){if(Km(t)){var l=Ty(r,n,t),c=t.__edgeMap,u=c[AN(l)];c[l]&&!u?c[l].isForward=!0:u&&c[l]&&(u.isForward=!0,c[l].isForward=!1),c[l]=c[l]||[],c[l].push(s)}}(m.node1,m.node2,this,m.dataIndex)},this),f.data}},n.prototype.getGraph=function(){return this.getData().graph},n.prototype.getEdgeData=function(){return this.getGraph().edgeData},n.prototype.getCategoriesData=function(){return this._categoriesData},n.prototype.formatTooltip=function(t,s,l){if("edge"===l){var c=this.getData(),u=this.getDataParams(t,l),f=c.graph.getEdgeByIndex(t),p=c.getName(f.node1.dataIndex),m=c.getName(f.node2.dataIndex),g=[];return null!=p&&g.push(p),null!=m&&g.push(m),Y("nameValue",{name:g.join(" > "),value:u.value,noValue:null==u.value})}return XR({series:this,dataIndex:t,multipleSeries:s})},n.prototype._updateCategoriesData=function(){var t=xe(this.option.categories||[],function(l){return null!=l.value?l:ge({value:0},l)}),s=new Pa(["value"],this);s.initData(t),this._categoriesData=s,this._categoriesModels=s.mapArray(function(l){return s.getItemModel(l)})},n.prototype.setZoom=function(t){this.option.zoom=t},n.prototype.setCenter=function(t){this.option.center=t},n.prototype.isAnimationEnabled=function(){return r.prototype.isAnimationEnabled.call(this)&&!("force"===this.get("layout")&&this.get(["force","layoutAnimation"]))},n.type="series.graph",n.dependencies=["grid","polar","geo","singleAxis","calendar"],n.defaultOption={z:2,coordinateSystem:"view",legendHoverLink:!0,layout:null,circular:{rotateLabel:!1},force:{initLayout:null,repulsion:[0,50],gravity:.1,friction:.6,edgeLength:30,layoutAnimation:!0},left:"center",top:"center",symbol:"circle",symbolSize:10,edgeSymbol:["none","none"],edgeSymbolSize:10,edgeLabel:{position:"middle",distance:5},draggable:!1,roam:!1,center:null,zoom:1,nodeScaleRatio:.6,label:{show:!1,formatter:"{b}"},itemStyle:{},lineStyle:{color:"#aaa",width:1,opacity:.5},emphasis:{scale:!0,label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},n}(Zn);const Ru=VZ;var wj={type:"graphRoam",event:"graphRoam",update:"none"},HN=function r(){this.angle=0,this.width=10,this.r=10,this.x=0,this.y=0},Fy=function(r){function n(t){var s=r.call(this,t)||this;return s.type="pointer",s}return se(n,r),n.prototype.getDefaultShape=function(){return new HN},n.prototype.buildPath=function(t,s){var l=Math.cos,c=Math.sin,u=s.r,f=s.width,p=s.angle,m=s.x-l(p)*f*(f>=u/3?1:2),g=s.y-c(p)*f*(f>=u/3?1:2);p=s.angle-Math.PI/2,t.moveTo(m,g),t.lineTo(s.x+l(p)*f,s.y+c(p)*f),t.lineTo(s.x+l(s.angle)*u,s.y+c(s.angle)*u),t.lineTo(s.x-l(p)*f,s.y-c(p)*f),t.lineTo(m,g)},n}(Ht);const lk=Fy;function tg(r,n){var t=null==r?"":r+"";return n&&(Le(n)?t=n.replace("{value}",t):qe(n)&&(t=n(r))),t}var Qn=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){this.group.removeAll();var c=t.get(["axisLine","lineStyle","color"]),u=function Et(r,n){var t=r.get("center"),s=n.getWidth(),l=n.getHeight(),c=Math.min(s,l);return{cx:Re(t[0],n.getWidth()),cy:Re(t[1],n.getHeight()),r:Re(r.get("radius"),c/2)}}(t,l);this._renderMain(t,s,l,c,u),this._data=t.getData()},n.prototype.dispose=function(){},n.prototype._renderMain=function(t,s,l,c,u){var f=this.group,p=t.get("clockwise"),m=-t.get("startAngle")/180*Math.PI,g=-t.get("endAngle")/180*Math.PI,v=t.getModel("axisLine"),b=v.get("roundCap")?Ax:Nr,x=v.get("show"),C=v.getModel("lineStyle"),S=C.get("width"),M=[m,g];US(M,!p);for(var T=(g=M[1])-(m=M[0]),A=m,E=[],L=0;x&&L=G&&(0===j?0:c[j-1][0])Math.PI/2&&(Ke+=Math.PI):"tangential"===nt?Ke=-H-Math.PI/2:rn(nt)&&(Ke=nt*Math.PI/180),v.add(new an(0===Ke?{style:Xn(A,{text:ve,x:Oe,y:je,verticalAlign:ne<-.8?"top":ne>.8?"bottom":"middle",align:ee<-.4?"left":ee>.4?"right":"center"},{inheritColor:Te}),silent:!0}:{style:Xn(A,{text:ve,x:Oe,y:je,verticalAlign:"middle",align:"center"},{inheritColor:Te}),silent:!0,originX:Oe,originY:je,rotation:Ke}))}if(T.get("show")&&re!==E){ue=(ue=T.get("distance"))?ue+g:g;for(var Gt=0;Gt<=L;Gt++){ee=Math.cos(H),ne=Math.sin(H);var mn=new wr({shape:{x1:ee*(x-ue)+y,y1:ne*(x-ue)+b,x2:ee*(x-V-ue)+y,y2:ne*(x-V-ue)+b},silent:!0,style:q});"auto"===q.stroke&&mn.setStyle({stroke:c((re+Gt/L)/E)}),v.add(mn),H+=j}H-=j}else H+=G}},n.prototype._renderPointer=function(t,s,l,c,u,f,p,m,g){var v=this.group,y=this._data,b=this._progressEls,x=[],C=t.get(["pointer","show"]),S=t.getModel("progress"),M=S.get("show"),T=t.getData(),A=T.mapDimension("value"),E=+t.get("min"),L=+t.get("max"),R=[E,L],V=[f,p];function H(j,$){var Oe,K=T.getItemModel(j).getModel("pointer"),ee=Re(K.get("width"),u.r),ne=Re(K.get("length"),u.r),re=t.get(["pointer","icon"]),ue=K.get("offsetCenter"),ce=Re(ue[0],u.r),ve=Re(ue[1],u.r),Te=K.get("keepAspect");return(Oe=re?Ji(re,ce-ee/2,ve-ne,ee,ne,null,Te):new lk({shape:{angle:-Math.PI/2,width:ee,r:ne,x:ce,y:ve}})).rotation=-($+Math.PI/2),Oe.x=u.cx,Oe.y=u.cy,Oe}function G(j,$){var K=S.get("roundCap")?Ax:Nr,ee=S.get("overlap"),ne=ee?S.get("width"):g/T.count(),ce=new K({shape:{startAngle:f,endAngle:$,cx:u.cx,cy:u.cy,clockwise:m,r0:ee?u.r-ne:u.r-(j+1)*ne,r:ee?u.r:u.r-j*ne}});return ee&&(ce.z2=L-T.get(A,j)%L),ce}(M||C)&&(T.diff(y).add(function(j){var $=T.get(A,j);if(C){var q=H(j,f);ni(q,{rotation:-((isNaN(+$)?V[0]:hn($,R,V,!0))+Math.PI/2)},t),v.add(q),T.setItemGraphicEl(j,q)}if(M){var K=G(j,f),ee=S.get("clip");ni(K,{shape:{endAngle:hn($,R,V,ee)}},t),v.add(K),KS(t.seriesIndex,T.dataType,j,K),x[j]=K}}).update(function(j,$){var q=T.get(A,j);if(C){var K=y.getItemGraphicEl($),ee=K?K.rotation:f,ne=H(j,ee);ne.rotation=ee,fn(ne,{rotation:-((isNaN(+q)?V[0]:hn(q,R,V,!0))+Math.PI/2)},t),v.add(ne),T.setItemGraphicEl(j,ne)}if(M){var re=b[$],ce=G(j,re?re.shape.endAngle:f),ve=S.get("clip");fn(ce,{shape:{endAngle:hn(q,R,V,ve)}},t),v.add(ce),KS(t.seriesIndex,T.dataType,j,ce),x[j]=ce}}).execute(),T.each(function(j){var $=T.getItemModel(j),q=$.getModel("emphasis"),K=q.get("focus"),ee=q.get("blurScope"),ne=q.get("disabled");if(C){var re=T.getItemGraphicEl(j),ue=T.getItemVisual(j,"style"),ce=ue.fill;if(re instanceof _i){var ve=re.style;re.useStyle(ge({image:ve.image,x:ve.x,y:ve.y,width:ve.width,height:ve.height},ue))}else re.useStyle(ue),"pointer"!==re.type&&re.setColor(ce);re.setStyle($.getModel(["pointer","itemStyle"]).getItemStyle()),"auto"===re.style.fill&&re.setStyle("fill",c(hn(T.get(A,j),R,[0,1],!0))),re.z2EmphasisLift=0,oa(re,$),Pi(re,K,ee,ne)}if(M){var Te=x[j];Te.useStyle(T.getItemVisual(j,"style")),Te.setStyle($.getModel(["progress","itemStyle"]).getItemStyle()),Te.z2EmphasisLift=0,oa(Te,$),Pi(Te,K,ee,ne)}}),this._progressEls=x)},n.prototype._renderAnchor=function(t,s){var l=t.getModel("anchor");if(l.get("show")){var u=l.get("size"),f=l.get("icon"),p=l.get("offsetCenter"),m=l.get("keepAspect"),g=Ji(f,s.cx-u/2+Re(p[0],s.r),s.cy-u/2+Re(p[1],s.r),u,u,null,m);g.z2=l.get("showAbove")?1:0,g.setStyle(l.getModel("itemStyle").getItemStyle()),this.group.add(g)}},n.prototype._renderTitleAndDetail=function(t,s,l,c,u){var f=this,p=t.getData(),m=p.mapDimension("value"),g=+t.get("min"),v=+t.get("max"),y=new lt,b=[],x=[],C=t.isAnimationEnabled(),S=t.get(["pointer","showAbove"]);p.diff(this._data).add(function(M){b[M]=new an({silent:!0}),x[M]=new an({silent:!0})}).update(function(M,T){b[M]=f._titleEls[T],x[M]=f._detailEls[T]}).execute(),p.each(function(M){var T=p.getItemModel(M),A=p.get(m,M),E=new lt,L=c(hn(A,[g,v],[0,1],!0)),R=T.getModel("title");if(R.get("show")){var V=R.get("offsetCenter"),H=u.cx+Re(V[0],u.r),G=u.cy+Re(V[1],u.r);(j=b[M]).attr({z2:S?0:2,style:Xn(R,{x:H,y:G,text:p.getName(M),align:"center",verticalAlign:"middle"},{inheritColor:L})}),E.add(j)}var $=T.getModel("detail");if($.get("show")){var q=$.get("offsetCenter"),K=u.cx+Re(q[0],u.r),ee=u.cy+Re(q[1],u.r),ne=Re($.get("width"),u.r),re=Re($.get("height"),u.r),ue=t.get(["progress","show"])?p.getItemVisual(M,"style").fill:L,j=x[M],ce=$.get("formatter");j.attr({z2:S?0:2,style:Xn($,{x:K,y:ee,text:tg(A,ce),width:isNaN(ne)?null:ne,height:isNaN(re)?null:re,align:"center",verticalAlign:"middle"},{inheritColor:ue})}),lD(j,{normal:$},A,function(Te){return tg(Te,ce)}),C&&tR(j,M,p,t,{getFormattedLabel:function(Te,Oe,je,nt,Ke,Gt){return tg(Gt?Gt.interpolatedValue:A,ce)}}),E.add(j)}y.add(E)}),this.group.add(y),this._titleEls=b,this._detailEls=x},n.type="gauge",n}(Vn);const zZ=Qn;var ng=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.visualStyleAccessPath="itemStyle",t}return se(n,r),n.prototype.getInitialData=function(t,s){return Au(this,["value"])},n.type="series.gauge",n.defaultOption={z:2,colorBy:"data",center:["50%","50%"],legendHoverLink:!0,radius:"75%",startAngle:225,endAngle:-45,clockwise:!0,min:0,max:100,splitNumber:10,axisLine:{show:!0,roundCap:!1,lineStyle:{color:[[1,"#E6EBF8"]],width:10}},progress:{show:!1,overlap:!0,width:10,roundCap:!1,clip:!0},splitLine:{show:!0,length:10,distance:10,lineStyle:{color:"#63677A",width:3,type:"solid"}},axisTick:{show:!0,splitNumber:5,length:6,distance:10,lineStyle:{color:"#63677A",width:1,type:"solid"}},axisLabel:{show:!0,distance:15,color:"#464646",fontSize:12,rotate:0},pointer:{icon:null,offsetCenter:[0,0],show:!0,showAbove:!0,length:"60%",width:6,keepAspect:!1},anchor:{show:!1,showAbove:!1,size:6,icon:"circle",offsetCenter:[0,0],keepAspect:!1,itemStyle:{color:"#fff",borderWidth:0,borderColor:"#5470c6"}},title:{show:!0,offsetCenter:[0,"20%"],color:"#464646",fontSize:16,valueAnimation:!1},detail:{show:!0,backgroundColor:"rgba(0,0,0,0)",borderWidth:0,borderColor:"#ccc",width:100,height:null,padding:[5,10],offsetCenter:[0,"40%"],color:"#464646",fontSize:30,fontWeight:"bold",lineHeight:30,valueAnimation:!1}},n}(Zn);const GN=ng;var Ny=["itemStyle","opacity"],Cj=function(r){function n(t,s){var l=r.call(this)||this,c=l,u=new ho,f=new an;return c.setTextContent(f),l.setTextGuideLine(u),l.updateData(t,s,!0),l}return se(n,r),n.prototype.updateData=function(t,s,l){var c=this,u=t.hostModel,f=t.getItemModel(s),p=t.getItemLayout(s),m=f.getModel("emphasis"),g=f.get(Ny);g=g??1,l||us(c),c.useStyle(t.getItemVisual(s,"style")),c.style.lineJoin="round",l?(c.setShape({points:p.points}),c.style.opacity=0,ni(c,{style:{opacity:g}},u,s)):fn(c,{style:{opacity:g},shape:{points:p.points}},u,s),oa(c,f),this._updateLabel(t,s),Pi(this,m.get("focus"),m.get("blurScope"),m.get("disabled"))},n.prototype._updateLabel=function(t,s){var l=this,c=this.getTextGuideLine(),u=l.getTextContent(),f=t.hostModel,p=t.getItemModel(s),g=t.getItemLayout(s).label,v=t.getItemVisual(s,"style"),y=v.fill;Xr(u,Or(p),{labelFetcher:t.hostModel,labelDataIndex:s,defaultOpacity:v.opacity,defaultText:t.getName(s)},{normal:{align:g.textAlign,verticalAlign:g.verticalAlign}}),l.setTextConfig({local:!0,inside:!!g.inside,insideStroke:y,outsideFill:y});var b=g.linePoints;c.setShape({points:b}),l.textGuideLineConfig={anchor:b?new Dt(b[0][0],b[0][1]):null},fn(u,{style:{x:g.x,y:g.y}},f,s),u.attr({rotation:g.rotation,originX:g.x,originY:g.y,z2:10}),mx(l,AT(p),{stroke:y})},n}(Ea),Ou=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.ignoreLabelLineUpdate=!0,t}return se(n,r),n.prototype.render=function(t,s,l){var c=t.getData(),u=this._data,f=this.group;c.diff(u).add(function(p){var m=new Cj(c,p);c.setItemGraphicEl(p,m),f.add(m)}).update(function(p,m){var g=u.getItemGraphicEl(m);g.updateData(c,p),f.add(g),c.setItemGraphicEl(p,g)}).remove(function(p){$v(u.getItemGraphicEl(p),t,p)}).execute(),this._data=c},n.prototype.remove=function(){this.group.removeAll(),this._data=null},n.prototype.dispose=function(){},n.type="funnel",n}(Vn);const pC=Ou;var Bf=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.init=function(t){r.prototype.init.apply(this,arguments),this.legendVisualProvider=new Fm(Ne(this.getData,this),Ne(this.getRawData,this)),this._defaultLabelLine(t)},n.prototype.getInitialData=function(t,s){return Au(this,{coordDimensions:["value"],encodeDefaulter:$e(Gh,this)})},n.prototype._defaultLabelLine=function(t){cs(t,"labelLine",["show"]);var s=t.labelLine,l=t.emphasis.labelLine;s.show=s.show&&t.label.show,l.show=l.show&&t.emphasis.label.show},n.prototype.getDataParams=function(t){var s=this.getData(),l=r.prototype.getDataParams.call(this,t),c=s.mapDimension("value"),u=s.getSum(c);return l.percent=u?+(s.get(c,t)/u*100).toFixed(2):0,l.$vars.push("percent"),l},n.type="series.funnel",n.defaultOption={z:2,legendHoverLink:!0,colorBy:"data",left:80,top:60,right:80,bottom:60,minSize:"0%",maxSize:"100%",sort:"descending",orient:"vertical",gap:0,funnelAlign:"center",label:{show:!0,position:"outer"},labelLine:{show:!0,length:20,lineStyle:{width:1}},itemStyle:{borderColor:"#fff",borderWidth:1},emphasis:{label:{show:!0}},select:{itemStyle:{borderColor:"#212121"}}},n}(Zn);const jN=Bf;function Dj(r,n){r.eachSeriesByType("funnel",function(t){var s=t.getData(),l=s.mapDimension("value"),c=t.get("sort"),u=function By(r,n){return dr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}(t,n),f=t.get("orient"),p=u.width,m=u.height,g=function ck(r,n){for(var t=r.mapDimension("value"),s=r.mapArray(t,function(p){return p}),l=[],c="ascending"===n,u=0,f=r.count();u5)return;var l=this._model.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]);"none"!==l.behavior&&this._dispatchExpand({axisExpandWindow:l.axisExpandWindow})}this._mouseDownPoint=null},mousemove:function(r){if(!this._mouseDownPoint&&uk(this,"mousemove")){var n=this._model,t=n.coordinateSystem.getSlidedAxisExpandWindow([r.offsetX,r.offsetY]),s=t.behavior;"jump"===s&&this._throttledDispatchExpand.debounceNextCall(n.get("axisExpandDebounce")),this._throttledDispatchExpand("none"===s?null:{axisExpandWindow:t.axisExpandWindow,animation:"jump"===s?null:{duration:0}})}}};function uk(r,n){var t=r._model;return t.get("axisExpandable")&&t.get("axisExpandTriggerOn")===n}const Rj=XN;var Oj=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.init=function(){r.prototype.init.apply(this,arguments),this.mergeOption({})},n.prototype.mergeOption=function(t){t&&At(this.option,t,!0),this._initDimensions()},n.prototype.contains=function(t,s){var l=t.get("parallelIndex");return null!=l&&s.getComponent("parallel",l)===this},n.prototype.setAxisExpand=function(t){U(["axisExpandable","axisExpandCenter","axisExpandCount","axisExpandWidth","axisExpandWindow"],function(s){t.hasOwnProperty(s)&&(this.option[s]=t[s])},this)},n.prototype._initDimensions=function(){var t=this.dimensions=[],s=this.parallelAxisIndex=[];U(Dn(this.ecModel.queryComponents({mainType:"parallelAxis"}),function(c){return(c.get("parallelIndex")||0)===this.componentIndex},this),function(c){t.push("dim"+c.get("dim")),s.push(c.componentIndex)})},n.type="parallel",n.dependencies=["parallelAxis"],n.layoutMode="box",n.defaultOption={z:0,left:80,top:60,right:80,bottom:60,layout:"horizontal",axisExpandable:!1,axisExpandCenter:null,axisExpandCount:0,axisExpandWidth:50,axisExpandRate:17,axisExpandDebounce:50,axisExpandSlideTriggerArea:[-.15,.05,.4],axisExpandTriggerOn:"click",parallelAxisDefault:null},n}(qt);const $Z=Oj;var WZ=function(r){function n(t,s,l,c,u){var f=r.call(this,t,s,l)||this;return f.type=c||"value",f.axisIndex=u,f}return se(n,r),n.prototype.isHorizontal=function(){return"horizontal"!==this.coordinateSystem.getModel().get("layout")},n}(Fo);const YZ=WZ;function ig(r,n,t,s,l,c){r=r||0;var u=t[1]-t[0];if(null!=l&&(l=Lu(l,[0,u])),null!=c&&(c=Math.max(c,l??0)),"all"===s){var f=Math.abs(n[1]-n[0]);f=Lu(f,[0,u]),l=c=Lu(f,[l,c]),s=0}n[0]=Lu(n[0],t),n[1]=Lu(n[1],t);var p=ud(n,s);n[s]+=r;var v,m=l||0,g=t.slice();return p.sign<0?g[0]+=m:g[1]-=m,n[s]=Lu(n[s],g),v=ud(n,s),null!=l&&(v.sign!==p.sign||v.spanc&&(n[1-s]=n[s]+v.sign*c),n}function ud(r,n){var t=r[n]-r[1-n];return{span:Math.abs(t),sign:t>0?-1:t<0?1:n?-1:1}}function Lu(r,n){return Math.min(null!=n[1]?n[1]:1/0,Math.max(null!=n[0]?n[0]:-1/0,r))}var ZN=U,Lj=Math.min,Fj=Math.max,Nj=Math.floor,qZ=Math.ceil,Bj=zi,hk=Math.PI,Fu=function(){function r(n,t,s){this.type="parallel",this._axesMap=Ye(),this._axesLayout={},this.dimensions=n.dimensions,this._model=n,this._init(n,t,s)}return r.prototype._init=function(n,t,s){var c=n.parallelAxisIndex;ZN(n.dimensions,function(u,f){var p=c[f],m=t.getComponent("parallelAxis",p),g=this._axesMap.set(u,new YZ(u,Ui(m),[0,0],m.get("type"),p));g.onBand="category"===g.type&&m.get("boundaryGap"),g.inverse=m.get("inverse"),m.axis=g,g.model=m,g.coordinateSystem=m.coordinateSystem=this},this)},r.prototype.update=function(n,t){this._updateAxesFromSeries(this._model,n)},r.prototype.containPoint=function(n){var t=this._makeLayoutInfo(),s=t.axisBase,l=t.layoutBase,c=t.pixelDimIndex,u=n[1-c],f=n[c];return u>=s&&u<=s+t.axisLength&&f>=l&&f<=l+t.layoutLength},r.prototype.getModel=function(){return this._model},r.prototype._updateAxesFromSeries=function(n,t){t.eachSeries(function(s){if(n.contains(s,t)){var l=s.getData();ZN(this.dimensions,function(c){var u=this._axesMap.get(c);u.scale.unionExtentFromData(l,l.mapDimension(c)),ff(u.scale,u.model)},this)}},this)},r.prototype.resize=function(n,t){this._rect=dr(n.getBoxLayoutParams(),{width:t.getWidth(),height:t.getHeight()}),this._layoutAxes()},r.prototype.getRect=function(){return this._rect},r.prototype._makeLayoutInfo=function(){var x,n=this._model,t=this._rect,s=["x","y"],l=["width","height"],c=n.get("layout"),u="horizontal"===c?0:1,f=t[l[u]],p=[0,f],m=this.dimensions.length,g=Ps(n.get("axisExpandWidth"),p),v=Ps(n.get("axisExpandCount")||0,[0,m]),y=n.get("axisExpandable")&&m>3&&m>v&&v>1&&g>0&&f>0,b=n.get("axisExpandWindow");b?(x=Ps(b[1]-b[0],p),b[1]=b[0]+x):(x=Ps(g*(v-1),p),(b=[g*(n.get("axisExpandCenter")||Nj(m/2))-x/2])[1]=b[0]+x);var S=(f-x)/(m-v);S<3&&(S=0);var M=[Nj(Bj(b[0]/g,1))+1,qZ(Bj(b[1]/g,1))-1];return{layout:c,pixelDimIndex:u,layoutBase:t[s[u]],layoutLength:f,axisBase:t[s[1-u]],axisLength:t[l[1-u]],axisExpandable:y,axisExpandWidth:g,axisCollapseWidth:S,axisExpandWindow:b,axisCount:m,winInnerIndices:M,axisExpandWindow0Pos:S/g*b[0]}},r.prototype._layoutAxes=function(){var n=this._rect,t=this._axesMap,s=this.dimensions,l=this._makeLayoutInfo(),c=l.layout;t.each(function(u){var f=[0,l.axisLength],p=u.inverse?1:0;u.setExtent(f[p],f[1-p])}),ZN(s,function(u,f){var p=(l.axisExpandable?mC:Vj)(f,l),m={horizontal:{x:p.position,y:l.axisLength},vertical:{x:0,y:p.position}},v=[m[c].x+n.x,m[c].y+n.y],y={horizontal:hk/2,vertical:0}[c],b=[1,0,0,1,0,0];_c(b,b,y),_e(b,b,v),this._axesLayout[u]={position:v,rotation:y,transform:b,axisNameAvailableWidth:p.axisNameAvailableWidth,axisLabelShow:p.axisLabelShow,nameTruncateMaxWidth:p.nameTruncateMaxWidth,tickDirection:1,labelDirection:1}},this)},r.prototype.getAxis=function(n){return this._axesMap.get(n)},r.prototype.dataToPoint=function(n,t){return this.axisCoordToPoint(this._axesMap.get(t).dataToCoord(n),t)},r.prototype.eachActiveState=function(n,t,s,l){null==s&&(s=0),null==l&&(l=n.count());var c=this._axesMap,u=this.dimensions,f=[],p=[];U(u,function(S){f.push(n.mapDimension(S)),p.push(c.get(S).model)});for(var m=this.hasAxisBrushed(),g=s;gc*(1-v[0])?(m="jump",p=f-c*(1-v[2])):(p=f-c*v[1])>=0&&(p=f-c*(1-v[1]))<=0&&(p=0),(p*=t.axisExpandWidth/g)?ig(p,l,u,"all"):m="none";else{var b=l[1]-l[0];(l=[Fj(0,u[1]*f/b-b/2)])[1]=Lj(u[1],l[0]+b),l[0]=l[1]-b}return{axisExpandWindow:l,behavior:m}},r}();function Ps(r,n){return Lj(Fj(r,n[0]),n[1])}function Vj(r,n){var t=n.layoutLength/(n.axisCount-1);return{position:t*r,axisNameAvailableWidth:t,axisLabelShow:!0}}function mC(r,n){var f,g,s=n.axisExpandWidth,c=n.axisCollapseWidth,u=n.winInnerIndices,p=c,m=!1;return r=0;l--)So(s[l])},n.prototype.getActiveState=function(t){var s=this.activeIntervals;if(!s.length)return"normal";if(null==t||isNaN(+t))return"inactive";if(1===s.length){var l=s[0];if(l[0]<=t&&t<=l[1])return"active"}else for(var c=0,u=s.length;cgC}(r)||l){if(c&&!l){"single"===u.brushMode&&Ls(r);var p=rt(u);p.brushType=Xj(p.brushType,c),p.panelId=c===rg?null:c.panelId,l=r._creatingCover=cl(r,p),r._covers.push(l)}if(l){var m=mk[Xj(r._brushType,c)];l.__brushOption.range=m.getCreatingRange(nB(r,l,r._track)),s&&(Na(r,l),m.updateCommon(r,l)),ag(r,l),f={isEnd:s}}}else s&&"single"===u.brushMode&&u.removeOnClick&&Os(r,n,t)&&Ls(r)&&(f={isEnd:s,removeOnClick:!0});return f}function Xj(r,n){return"auto"===r?n.defaultBrushType:r}var sK={mousedown:function(r){if(this._dragging)Zj(this,r);else if(!r.target||!r.target.draggable){iB(r);var n=this.group.transformCoordToLocal(r.offsetX,r.offsetY);this._creatingCover=null,(this._creatingPanel=Os(this,r,n))&&(this._dragging=!0,this._track=[n.slice()])}},mousemove:function(r){var s=this.group.transformCoordToLocal(r.offsetX,r.offsetY);if(function oK(r,n,t){if(r._brushType&&!function lK(r,n,t){var s=r._zr;return n<0||n>s.getWidth()||t<0||t>s.getHeight()}(r,n.offsetX,n.offsetY)){var s=r._zr,l=r._covers,c=Os(r,n,t);if(!r._dragging)for(var u=0;u=0&&(f[u[p].depth]=new In(u[p],this,s));if(c&&l)return fC(c,l,this,!0,function g(v,y){v.wrapMethod("getItemModel",function(b,x){var C=b.parentModel,S=C.getData().getItemLayout(x);if(S){var T=C.levelModels[S.depth];T&&(b.parentModel=T)}return b}),y.wrapMethod("getItemModel",function(b,x){var C=b.parentModel,M=C.getGraph().getEdgeByIndex(x).node1.getLayout();if(M){var A=C.levelModels[M.depth];A&&(b.parentModel=A)}return b})}).data},n.prototype.setNodePosition=function(t,s){var c=(this.option.data||this.option.nodes)[t];c.localX=s[0],c.localY=s[1]},n.prototype.getGraph=function(){return this.getData().graph},n.prototype.getEdgeData=function(){return this.getGraph().edgeData},n.prototype.formatTooltip=function(t,s,l){function c(b){return isNaN(b)||null==b}if("edge"===l){var u=this.getDataParams(t,l),f=u.data,p=u.value;return Y("nameValue",{name:f.source+" -- "+f.target,value:p,noValue:c(p)})}var v=this.getGraph().getNodeByIndex(t).getLayout().value,y=this.getDataParams(t,l).data.name;return Y("nameValue",{name:null!=y?y+"":null,value:v,noValue:c(v)})},n.prototype.optionUpdated=function(){},n.prototype.getDataParams=function(t,s){var l=r.prototype.getDataParams.call(this,t,s);if(null==l.value&&"node"===s){var u=this.getGraph().getNodeByIndex(t).getLayout().value;l.value=u}return l},n.type="series.sankey",n.defaultOption={z:2,coordinateSystem:"view",left:"5%",top:"5%",right:"20%",bottom:"5%",orient:"horizontal",nodeWidth:20,nodeGap:8,draggable:!0,layoutIterations:32,label:{show:!0,position:"right",fontSize:12},edgeLabel:{show:!1,fontSize:12},levels:[],nodeAlign:"justify",lineStyle:{color:"#314656",opacity:.2,curveness:.5},emphasis:{label:{show:!0},lineStyle:{opacity:.5}},select:{itemStyle:{borderColor:"#212121"}},animationEasing:"linear",animationDuration:1e3},n}(Zn);const CK=xK;function SK(r,n){r.eachSeriesByType("sankey",function(t){var s=t.get("nodeWidth"),l=t.get("nodeGap"),c=function DK(r,n){return dr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()})}(t,n);t.layoutInfo=c;var u=c.width,f=c.height,p=t.getGraph(),m=p.nodes,g=p.edges;!function TK(r){U(r,function(n){var t=zf(n.outEdges,gk),s=zf(n.inEdges,gk),l=n.getValue()||0,c=Math.max(t,s,l);n.setLayout({value:c},!0)})}(m),function MK(r,n,t,s,l,c,u,f,p){(function AK(r,n,t,s,l,c,u){for(var f=[],p=[],m=[],g=[],v=0,y=0;y=0;M&&S.depth>b&&(b=S.depth),C.setLayout({depth:M?S.depth:v},!0),C.setLayout("vertical"===c?{dy:t}:{dx:t},!0);for(var T=0;Tv-1?b:v-1;u&&"left"!==u&&function kK(r,n,t,s){if("right"===n){for(var l=[],c=r,u=0;c.length;){for(var f=0;f0;c--)LK(f,p*=.99,u),sB(f,l,t,s,u),zK(f,p,u),sB(f,l,t,s,u)}(r,n,c,l,s,u,f),function HK(r,n){var t="vertical"===n?"x":"y";U(r,function(s){s.outEdges.sort(function(l,c){return l.node2.getLayout()[t]-c.node2.getLayout()[t]}),s.inEdges.sort(function(l,c){return l.node1.getLayout()[t]-c.node1.getLayout()[t]})}),U(r,function(s){var l=0,c=0;U(s.outEdges,function(u){u.setLayout({sy:l},!0),l+=u.getLayout().dy}),U(s.inEdges,function(u){u.setLayout({ty:c},!0),c+=u.getLayout().dy})})}(r,f)}(m,g,s,l,u,f,0!==Dn(m,function(C){return 0===C.getLayout().value}).length?0:t.get("layoutIterations"),t.get("orient"),t.get("nodeAlign"))})}function i7(r){var n=r.hostGraph.data.getRawDataItem(r.dataIndex);return null!=n.depth&&n.depth>=0}function sB(r,n,t,s,l){var c="vertical"===l?"x":"y";U(r,function(u){u.sort(function(C,S){return C.getLayout()[c]-S.getLayout()[c]});for(var f,p,m,g=0,v=u.length,y="vertical"===l?"dx":"dy",b=0;b0&&(f=p.getLayout()[c]+m,p.setLayout("vertical"===l?{x:f}:{y:f},!0)),g=p.getLayout()[c]+p.getLayout()[y]+n;if((m=g-n-("vertical"===l?s:t))>0)for(f=p.getLayout()[c]-m,p.setLayout("vertical"===l?{x:f}:{y:f},!0),g=f,b=v-2;b>=0;--b)(m=(p=u[b]).getLayout()[c]+p.getLayout()[y]+n-g)>0&&(f=p.getLayout()[c]-m,p.setLayout("vertical"===l?{x:f}:{y:f},!0)),g=p.getLayout()[c]})}function LK(r,n,t){U(r.slice().reverse(),function(s){U(s,function(l){if(l.outEdges.length){var c=zf(l.outEdges,FK,t)/zf(l.outEdges,gk);if(isNaN(c)){var u=l.outEdges.length;c=u?zf(l.outEdges,NK,t)/u:0}if("vertical"===t){var f=l.getLayout().x+(c-Vf(l,t))*n;l.setLayout({x:f},!0)}else{var p=l.getLayout().y+(c-Vf(l,t))*n;l.setLayout({y:p},!0)}}})})}function FK(r,n){return Vf(r.node2,n)*r.getValue()}function NK(r,n){return Vf(r.node2,n)}function BK(r,n){return Vf(r.node1,n)*r.getValue()}function VK(r,n){return Vf(r.node1,n)}function Vf(r,n){return"vertical"===n?r.getLayout().x+r.getLayout().dx/2:r.getLayout().y+r.getLayout().dy/2}function gk(r){return r.getValue()}function zf(r,n,t){for(var s=0,l=r.length,c=-1;++cu&&(u=p)}),U(s,function(f){var m=new Jr({type:"color",mappingMethod:"linear",dataExtent:[c,u],visual:n.get("color")}).mapValueToVisual(f.getLayout().value),g=f.getModel().get(["itemStyle","color"]);null!=g?(f.setVisual("color",g),f.setVisual("style",{fill:g})):(f.setVisual("color",m),f.setVisual("style",{fill:m}))})}l.length&&U(l,function(f){var p=f.getModel().get("lineStyle");f.setVisual("style",p)})})}var r7=function(){function r(){}return r.prototype.getInitialData=function(n,t){var s,p,l=t.getComponent("xAxis",this.get("xAxisIndex")),c=t.getComponent("yAxis",this.get("yAxisIndex")),u=l.get("type"),f=c.get("type");"category"===u?(n.layout="horizontal",s=l.getOrdinalMeta(),p=!0):"category"===f?(n.layout="vertical",s=c.getOrdinalMeta(),p=!0):n.layout=n.layout||"horizontal";var m=["x","y"],g="horizontal"===n.layout?0:1,v=this._baseAxisDim=m[g],y=m[1-g],b=[l,c],x=b[g].get("type"),C=b[1-g].get("type"),S=n.data;if(S&&p){var M=[];U(S,function(E,L){var R;ye(E)?(R=E.slice(),E.unshift(L)):ye(E.value)?((R=ge({},E)).value=R.value.slice(),E.value.unshift(L)):R=E,M.push(R)}),n.data=M}var T=this.defaultValueDimensions,A=[{name:v,type:lT(x),ordinalMeta:s,otherDims:{tooltip:!1,itemName:0},dimsDef:["base"]},{name:y,type:lT(C),dimsDef:T.slice()}];return Au(this,{coordDimensions:A,dimensionsCount:T.length+1,encodeDefaulter:$e(Jv,A,this)})},r.prototype.getBaseAxis=function(){var n=this._baseAxisDim;return this.ecModel.getComponent(n+"Axis",this.get(n+"AxisIndex")).axis},r}(),a7=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.defaultValueDimensions=[{name:"min",defaultTooltip:!0},{name:"Q1",defaultTooltip:!0},{name:"median",defaultTooltip:!0},{name:"Q3",defaultTooltip:!0},{name:"max",defaultTooltip:!0}],t.visualDrawType="stroke",t}return se(n,r),n.type="series.boxplot",n.dependencies=["xAxis","yAxis","grid"],n.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,boxWidth:[7,50],itemStyle:{color:"#fff",borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2,shadowBlur:5,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0,0,0,0.2)"}},animationDuration:800},n}(Zn);Mi(a7,r7,!0);const jK=a7;var $K=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){var c=t.getData(),u=this.group,f=this._data;this._data||u.removeAll();var p="horizontal"===t.get("layout")?1:0;c.diff(f).add(function(m){if(c.hasValue(m)){var v=o7(c.getItemLayout(m),c,m,p,!0);c.setItemGraphicEl(m,v),u.add(v)}}).update(function(m,g){var v=f.getItemGraphicEl(g);if(c.hasValue(m)){var y=c.getItemLayout(m);v?(us(v),s7(y,v,c,m)):v=o7(y,c,m,p),u.add(v),c.setItemGraphicEl(m,v)}else u.remove(v)}).remove(function(m){var g=f.getItemGraphicEl(m);g&&u.remove(g)}).execute(),this._data=c},n.prototype.remove=function(t){var s=this.group,l=this._data;this._data=null,l&&l.eachItemGraphicEl(function(c){c&&s.remove(c)})},n.type="boxplot",n}(Vn),WK=function r(){},YK=function(r){function n(t){var s=r.call(this,t)||this;return s.type="boxplotBoxPath",s}return se(n,r),n.prototype.getDefaultShape=function(){return new WK},n.prototype.buildPath=function(t,s){var l=s.points,c=0;for(t.moveTo(l[c][0],l[c][1]),c++;c<4;c++)t.lineTo(l[c][0],l[c][1]);for(t.closePath();cC)&&s.push([M,A])}}return{boxData:t,outliers:s}}(t.getRawData(),n.config);return[{dimensions:["ItemName","Low","Q1","Q2","Q3","High"],data:l.boxData},{data:l.outliers}]}},nQ=["color","borderColor"],iQ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){this.group.removeClipPath(),this._progressiveEls=null,this._updateDrawMode(t),this._isLargeDraw?this._renderLarge(t):this._renderNormal(t)},n.prototype.incrementalPrepareRender=function(t,s,l){this._clear(),this._updateDrawMode(t)},n.prototype.incrementalRender=function(t,s,l,c){this._progressiveEls=[],this._isLargeDraw?this._incrementalRenderLarge(t,s):this._incrementalRenderNormal(t,s)},n.prototype.eachRendered=function(t){Ue(this._progressiveEls||this.group,t)},n.prototype._updateDrawMode=function(t){var s=t.pipelineContext.large;(null==this._isLargeDraw||s!==this._isLargeDraw)&&(this._isLargeDraw=s,this._clear())},n.prototype._renderNormal=function(t){var s=t.getData(),l=this._data,c=this.group,u=s.getLayout("isSimpleBox"),f=t.get("clip",!0),p=t.coordinateSystem,m=p.getArea&&p.getArea();this._data||c.removeAll(),s.diff(l).add(function(g){if(s.hasValue(g)){var v=s.getItemLayout(g);if(f&&c7(m,v))return;var y=lB(v,0,!0);ni(y,{shape:{points:v.ends}},t,g),vk(y,s,g,u),c.add(y),s.setItemGraphicEl(g,y)}}).update(function(g,v){var y=l.getItemGraphicEl(v);if(s.hasValue(g)){var b=s.getItemLayout(g);f&&c7(m,b)?c.remove(y):(y?(fn(y,{shape:{points:b.ends}},t,g),us(y)):y=lB(b),vk(y,s,g,u),c.add(y),s.setItemGraphicEl(g,y))}else c.remove(y)}).remove(function(g){var v=l.getItemGraphicEl(g);v&&c.remove(v)}).execute(),this._data=s},n.prototype._renderLarge=function(t){this._clear(),d7(t,this.group);var s=t.get("clip",!0)?q_(t.coordinateSystem,!1,t):null;s?this.group.setClipPath(s):this.group.removeClipPath()},n.prototype._incrementalRenderNormal=function(t,s){for(var u,l=s.getData(),c=l.getLayout("isSimpleBox");null!=(u=t.next());){var p=lB(l.getItemLayout(u));vk(p,l,u,c),p.incremental=!0,this.group.add(p),this._progressiveEls.push(p)}},n.prototype._incrementalRenderLarge=function(t,s){d7(s,this.group,this._progressiveEls,!0)},n.prototype.remove=function(t){this._clear()},n.prototype._clear=function(){this.group.removeAll(),this._data=null},n.type="candlestick",n}(Vn),rQ=function r(){},aQ=function(r){function n(t){var s=r.call(this,t)||this;return s.type="normalCandlestickBox",s}return se(n,r),n.prototype.getDefaultShape=function(){return new rQ},n.prototype.buildPath=function(t,s){var l=s.points;this.__simpleBox?(t.moveTo(l[4][0],l[4][1]),t.lineTo(l[6][0],l[6][1])):(t.moveTo(l[0][0],l[0][1]),t.lineTo(l[1][0],l[1][1]),t.lineTo(l[2][0],l[2][1]),t.lineTo(l[3][0],l[3][1]),t.closePath(),t.moveTo(l[4][0],l[4][1]),t.lineTo(l[5][0],l[5][1]),t.moveTo(l[6][0],l[6][1]),t.lineTo(l[7][0],l[7][1]))},n}(Ht);function lB(r,n,t){var s=r.ends;return new aQ({shape:{points:t?pr(s,r):s},z2:100})}function c7(r,n){for(var t=!0,s=0;s0?"borderColor":"borderColor0"])||t.get(["itemStyle",r>0?"color":"color0"]);0===r&&(l=t.get(["itemStyle","borderColorDoji"]));var c=t.getModel("itemStyle").getItemStyle(nQ);n.useStyle(c),n.style.fill=null,n.style.stroke=l}const dB=iQ;var yC=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.defaultValueDimensions=[{name:"open",defaultTooltip:!0},{name:"close",defaultTooltip:!0},{name:"lowest",defaultTooltip:!0},{name:"highest",defaultTooltip:!0}],t}return se(n,r),n.prototype.getShadowDim=function(){return"open"},n.prototype.brushSelector=function(t,s,l){var c=s.getItemLayout(t);return c&&l.rect(c.brushRect)},n.type="series.candlestick",n.dependencies=["xAxis","yAxis","grid"],n.defaultOption={z:2,coordinateSystem:"cartesian2d",legendHoverLink:!0,layout:null,clip:!0,itemStyle:{color:"#eb5454",color0:"#47b262",borderColor:"#eb5454",borderColor0:"#47b262",borderColorDoji:null,borderWidth:1},emphasis:{scale:!0,itemStyle:{borderWidth:2}},barMaxWidth:null,barMinWidth:null,barWidth:null,large:!0,largeThreshold:600,progressive:3e3,progressiveThreshold:1e4,progressiveChunkMode:"mod",animationEasing:"linear",animationDuration:300},n}(Zn);Mi(yC,r7,!0);const uB=yC;function u7(r){!r||!ye(r.series)||U(r.series,function(n){tt(n)&&"k"===n.type&&(n.type="candlestick")})}var h7=["itemStyle","borderColor"],Hf=["itemStyle","borderColor0"],oQ=["itemStyle","borderColorDoji"],sQ=["itemStyle","color"],f7=["itemStyle","color0"],lQ={seriesType:"candlestick",plan:Xh(),performRawSeries:!0,reset:function(r,n){function t(c,u){return u.get(c>0?sQ:f7)}function s(c,u){return u.get(0===c?oQ:c>0?h7:Hf)}if(!n.isSeriesFiltered(r))return!r.pipelineContext.large&&{progress:function(c,u){for(var f;null!=(f=c.next());){var p=u.getItemModel(f),m=u.getItemLayout(f).sign,g=p.getItemStyle();g.fill=t(m,p),g.stroke=s(m,p)||g.fill,ge(u.ensureUniqueItemVisual(f,"style"),g)}}}}};const cQ=lQ;var hB={seriesType:"candlestick",plan:Xh(),reset:function(r){var n=r.coordinateSystem,t=r.getData(),s=function p7(r,n){var s,t=r.getBaseAxis(),l="category"===t.type?t.getBandWidth():(s=t.getExtent(),Math.abs(s[1]-s[0])/n.count()),c=Re(Ct(r.get("barMaxWidth"),l),l),u=Re(Ct(r.get("barMinWidth"),1),l),f=r.get("barWidth");return null!=f?Re(f,l):Math.max(Math.min(l/2,c),u)}(r,t),l=0,c=1,u=["x","y"],f=t.getDimensionIndex(t.mapDimension(u[l])),p=xe(t.mapDimensionsAll(u[c]),t.getDimensionIndex,t),m=p[0],g=p[1],v=p[2],y=p[3];if(t.setLayout({candleWidth:s,isSimpleBox:s<=1.3}),!(f<0||p.length<4))return{progress:r.pipelineContext.large?function x(C,S){for(var A,R,M=Ra(4*C.count),T=0,E=[],L=[],V=S.getStore(),H=!!r.get(["itemStyle","borderColorDoji"]);null!=(R=C.next());){var G=V.get(f,R),j=V.get(m,R),$=V.get(g,R),q=V.get(v,R),K=V.get(y,R);isNaN(G)||isNaN(q)||isNaN(K)?(M[T++]=NaN,T+=3):(M[T++]=fB(V,R,j,$,g,H),E[l]=G,E[c]=q,A=n.dataToPoint(E,null,L),M[T++]=A?A[0]:NaN,M[T++]=A?A[1]:NaN,E[c]=K,A=n.dataToPoint(E,null,L),M[T++]=A?A[1]:NaN)}S.setLayout("largePoints",M)}:function b(C,S){for(var M,T=S.getStore();null!=(M=C.next());){var A=T.get(f,M),E=T.get(m,M),L=T.get(g,M),R=T.get(v,M),V=T.get(y,M),H=Math.min(E,L),G=Math.max(E,L),j=ue(H,A),$=ue(G,A),q=ue(R,A),K=ue(V,A),ee=[];ce(ee,$,0),ce(ee,j,1),ee.push(Te(K),Te($),Te(q),Te(j));var re=!!S.getItemModel(M).get(["itemStyle","borderColorDoji"]);S.setItemLayout(M,{sign:fB(T,M,E,L,g,re),initBaseline:E>L?$[c]:j[c],ends:ee,brushRect:(Oe=R,je=V,nt=A,Ke=void 0,Gt=void 0,Ke=ue(Oe,nt),Gt=ue(je,nt),Ke[l]-=s/2,Gt[l]-=s/2,{x:Ke[0],y:Ke[1],width:c?s:Gt[0]-Ke[0],height:c?Gt[1]-Ke[1]:s})})}var Oe,je,nt,Ke,Gt;function ue(Oe,je){var nt=[];return nt[l]=je,nt[c]=Oe,isNaN(je)||isNaN(Oe)?[NaN,NaN]:n.dataToPoint(nt)}function ce(Oe,je,nt){var Ke=je.slice(),Gt=je.slice();Ke[l]=m_(Ke[l]+s/2,1,!1),Gt[l]=m_(Gt[l]-s/2,1,!0),nt?Oe.push(Ke,Gt):Oe.push(Gt,Ke)}function Te(Oe){return Oe[l]=m_(Oe[l],1),Oe}}}}};function fB(r,n,t,s,l,c){return t>s?-1:t0?r.get(l,n-1)<=s?1:-1:1}const bC=hB;function bk(r,n){var t=n.rippleEffectColor||n.color;r.eachChild(function(s){s.attr({z:n.z,zlevel:n.zlevel,style:{stroke:"stroke"===n.brushType?t:null,fill:"fill"===n.brushType?t:null}})})}var m7=function(r){function n(t,s){var l=r.call(this)||this,c=new $_(t,s),u=new lt;return l.add(c),l.add(u),l.updateData(t,s),l}return se(n,r),n.prototype.stopEffectAnimation=function(){this.childAt(1).removeAll()},n.prototype.startEffectAnimation=function(t){for(var s=t.symbolType,l=t.color,c=t.rippleNumber,u=this.childAt(1),f=0;f0&&(f=this._getLineLength(c)/g*1e3),f!==this._period||p!==this._loop||m!==this._roundTrip){c.stopAnimation();var y=void 0;y=qe(v)?v(l):v,c.__t>0&&(y=-f*c.__t),this._animateSymbol(c,f,y,p,m)}this._period=f,this._loop=p,this._roundTrip=m}},n.prototype._animateSymbol=function(t,s,l,c,u){if(s>0){t.__t=0;var f=this,p=t.animate("",c).when(u?2*s:s,{__t:u?2:1}).delay(l).during(function(){f._updateSymbolPosition(t)});c||p.done(function(){f.remove(t)}),p.start()}},n.prototype._getLineLength=function(t){return _l(t.__p1,t.__cp1)+_l(t.__cp1,t.__p2)},n.prototype._updateAnimationPoints=function(t,s){t.__p1=s[0],t.__p2=s[1],t.__cp1=s[2]||[(s[0][0]+s[1][0])/2,(s[0][1]+s[1][1])/2]},n.prototype.updateData=function(t,s,l){this.childAt(0).updateData(t,s,l),this._updateEffectSymbol(t,s)},n.prototype._updateSymbolPosition=function(t){var s=t.__p1,l=t.__p2,c=t.__cp1,u=t.__t<1?t.__t:2-t.__t,f=[t.x,t.y],p=f.slice(),m=Er,g=$b;f[0]=m(s[0],c[0],l[0],u),f[1]=m(s[1],c[1],l[1],u);var v=t.__t<1?g(s[0],c[0],l[0],u):g(l[0],c[0],s[0],1-u),y=t.__t<1?g(s[1],c[1],l[1],u):g(l[1],c[1],s[1],1-u);t.rotation=-Math.atan2(y,v)-Math.PI/2,("line"===this._symbolType||"rect"===this._symbolType||"roundRect"===this._symbolType)&&(void 0!==t.__lastT&&t.__lastT=0&&!(c[p]<=s);p--);p=Math.min(p,u-2)}else{for(p=f;ps);p++);p=Math.min(p-1,u-2)}var g=(s-c[p])/(c[p+1]-c[p]),v=l[p],y=l[p+1];t.x=v[0]*(1-g)+g*y[0],t.y=v[1]*(1-g)+g*y[1],t.rotation=-Math.atan2(t.__t<1?y[1]-v[1]:v[1]-y[1],t.__t<1?y[0]-v[0]:v[0]-y[0])-Math.PI/2,this._lastFrame=p,this._lastFramePercent=s,t.ignore=!1}},n}(_B);const v7=ea;var bB=function r(){this.polyline=!1,this.curveness=0,this.segs=[]},wk=function(r){function n(t){var s=r.call(this,t)||this;return s._off=0,s.hoverDataIdx=-1,s}return se(n,r),n.prototype.reset=function(){this.notClear=!1,this._off=0},n.prototype.getDefaultStyle=function(){return{stroke:"#000",fill:null}},n.prototype.getDefaultShape=function(){return new bB},n.prototype.buildPath=function(t,s){var u,l=s.segs,c=s.curveness;if(s.polyline)for(u=this._off;u0){t.moveTo(l[u++],l[u++]);for(var p=1;p0?t.quadraticCurveTo((m+v)/2-(g-y)*c,(g+y)/2-(v-m)*c,v,y):t.lineTo(v,y)}this.incremental&&(this._off=u,this.notClear=!0)},n.prototype.findDataIndex=function(t,s){var l=this.shape,c=l.segs,u=l.curveness,f=this.style.lineWidth;if(l.polyline)for(var p=0,m=0;m0)for(var v=c[m++],y=c[m++],b=1;b0){if(EP(v,y,(v+x)/2-(y-C)*u,(y+C)/2-(x-v)*u,x,C,f,t,s))return p}else if(ko(v,y,x,C,f,t,s))return p;p++}return-1},n.prototype.contain=function(t,s){var l=this.transformCoordToLocal(t,s);return this.getBoundingRect().contain(t=l[0],s=l[1])?(this.hoverDataIdx=this.findDataIndex(t,s))>=0:(this.hoverDataIdx=-1,!1)},n.prototype.getBoundingRect=function(){var t=this._rect;if(!t){for(var l=this.shape.segs,c=1/0,u=1/0,f=-1/0,p=-1/0,m=0;m0&&(u.dataIndex=p+n.__startIndex)})},r.prototype._clear=function(){this._newAdded=[],this.group.removeAll()},r}();const _7=wB;var y7={seriesType:"lines",plan:Xh(),reset:function(r){var n=r.coordinateSystem;if(n){var t=r.get("polyline"),s=r.pipelineContext.large;return{progress:function(l,c){var u=[];if(s){var f=void 0,p=l.end-l.start;if(t){for(var m=0,g=l.start;g0&&(g||m.configLayer(f,{motionBlur:!0,lastFrameAlpha:Math.max(Math.min(p/10+.9,1),0)})),u.updateData(c);var v=t.get("clip",!0)&&q_(t.coordinateSystem,!1,t);v?this.group.setClipPath(v):this.group.removeClipPath(),this._lastZlevel=f,this._finished=!0},n.prototype.incrementalPrepareRender=function(t,s,l){var c=t.getData();this._updateLineDraw(c,t).incrementalPrepareUpdate(c),this._clearLayer(l),this._finished=!1},n.prototype.incrementalRender=function(t,s,l){this._lineDraw.incrementalUpdate(t,s.getData()),this._finished=t.end===s.getData().count()},n.prototype.eachRendered=function(t){this._lineDraw&&this._lineDraw.eachRendered(t)},n.prototype.updateTransform=function(t,s,l){var c=t.getData(),u=t.pipelineContext;if(!this._finished||u.large||u.progressiveRender)return{update:!0};var f=pd.reset(t,s,l);f.progress&&f.progress({start:0,end:c.count(),count:c.count()},c),this._lineDraw.updateLayout(),this._clearLayer(l)},n.prototype._updateLineDraw=function(t,s){var l=this._lineDraw,c=this._showEffect(s),u=!!s.get("polyline"),p=s.pipelineContext.large;return(!l||c!==this._hasEffet||u!==this._isPolyline||p!==this._isLargeDraw)&&(l&&l.remove(),l=this._lineDraw=p?new _7:new ok(u?c?v7:yB:c?_B:ak),this._hasEffet=c,this._isPolyline=u,this._isLargeDraw=p),this.group.add(l.group),l},n.prototype._showEffect=function(t){return!!t.get(["effect","show"])},n.prototype._clearLayer=function(t){var s=t.getZr();"svg"!==s.painter.getType()&&null!=this._lastZlevel&&s.painter.getLayer(this._lastZlevel).clear(!0)},n.prototype.remove=function(t,s){this._lineDraw&&this._lineDraw.remove(),this._lineDraw=null,this._clearLayer(s)},n.prototype.dispose=function(t,s){this.remove(t,s)},n.type="lines",n}(Vn);const xk=hQ;var Ck=typeof Uint32Array>"u"?Array:Uint32Array,Sk=typeof Float64Array>"u"?Array:Float64Array;function xB(r){var n=r.data;n&&n[0]&&n[0][0]&&n[0][0].coord&&(r.data=xe(n,function(t){var l={coords:[t[0].coord,t[1].coord]};return t[0].name&&(l.fromName=t[0].name),t[1].name&&(l.toName=t[1].name),Rb([l,t[0],t[1]])}))}var CB=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.visualStyleAccessPath="lineStyle",t.visualDrawType="stroke",t}return se(n,r),n.prototype.init=function(t){t.data=t.data||[],xB(t);var s=this._processFlatCoordsArray(t.data);this._flatCoords=s.flatCoords,this._flatCoordsOffset=s.flatCoordsOffset,s.flatCoords&&(t.data=new Float32Array(s.count)),r.prototype.init.apply(this,arguments)},n.prototype.mergeOption=function(t){if(xB(t),t.data){var s=this._processFlatCoordsArray(t.data);this._flatCoords=s.flatCoords,this._flatCoordsOffset=s.flatCoordsOffset,s.flatCoords&&(t.data=new Float32Array(s.count))}r.prototype.mergeOption.apply(this,arguments)},n.prototype.appendData=function(t){var s=this._processFlatCoordsArray(t.data);s.flatCoords&&(this._flatCoords?(this._flatCoords=Ti(this._flatCoords,s.flatCoords),this._flatCoordsOffset=Ti(this._flatCoordsOffset,s.flatCoordsOffset)):(this._flatCoords=s.flatCoords,this._flatCoordsOffset=s.flatCoordsOffset),t.data=new Float32Array(s.count)),this.getRawData().appendData(t.data)},n.prototype._getCoordsFromItemModel=function(t){var s=this.getData().getItemModel(t);return s.option instanceof Array?s.option:s.getShallow("coords")},n.prototype.getLineCoordsCount=function(t){return this._flatCoordsOffset?this._flatCoordsOffset[2*t+1]:this._getCoordsFromItemModel(t).length},n.prototype.getLineCoords=function(t,s){if(this._flatCoordsOffset){for(var l=this._flatCoordsOffset[2*t],c=this._flatCoordsOffset[2*t+1],u=0;u ")})},n.prototype.preventIncremental=function(){return!!this.get(["effect","show"])},n.prototype.getProgressive=function(){return this.option.progressive??(this.option.large?1e4:this.get("progressive"))},n.prototype.getProgressiveThreshold=function(){return this.option.progressiveThreshold??(this.option.large?2e4:this.get("progressiveThreshold"))},n.prototype.getZLevelKey=function(){var t=this.getModel("effect"),s=t.get("trailLength");return this.getData().count()>this.getProgressiveThreshold()?this.id:t.get("show")&&s>0?s+"":""},n.type="series.lines",n.dependencies=["grid","polar","geo","calendar"],n.defaultOption={coordinateSystem:"geo",z:2,legendHoverLink:!0,xAxisIndex:0,yAxisIndex:0,symbol:["none","none"],symbolSize:[10,10],geoIndex:0,effect:{show:!1,period:4,constantSpeed:0,symbol:"circle",symbolSize:3,loop:!0,trailLength:.2},large:!1,largeThreshold:2e3,polyline:!1,clip:!0,label:{show:!1,position:"end"},lineStyle:{opacity:.5}},n}(Zn);const b7=CB;function $y(r){return r instanceof Array||(r=[r,r]),r}var Dk={seriesType:"lines",reset:function(r){var n=$y(r.get("symbol")),t=$y(r.get("symbolSize")),s=r.getData();return s.setVisual("fromSymbol",n&&n[0]),s.setVisual("toSymbol",n&&n[1]),s.setVisual("fromSymbolSize",t&&t[0]),s.setVisual("toSymbolSize",t&&t[1]),{dataEach:s.hasItemOption?function l(c,u){var f=c.getItemModel(u),p=$y(f.getShallow("symbol",!0)),m=$y(f.getShallow("symbolSize",!0));p[0]&&c.setItemVisual(u,"fromSymbol",p[0]),p[1]&&c.setItemVisual(u,"toSymbol",p[1]),m[0]&&c.setItemVisual(u,"fromSymbolSize",m[0]),m[1]&&c.setItemVisual(u,"toSymbolSize",m[1])}:null}}};const fQ=Dk;var w7=function(){function r(){this.blurSize=30,this.pointSize=20,this.maxOpacity=1,this.minOpacity=0,this._gradientPixels={inRange:null,outOfRange:null};var n=gl.createCanvas();this.canvas=n}return r.prototype.update=function(n,t,s,l,c,u){var f=this._getBrush(),p=this._getGradient(c,"inRange"),m=this._getGradient(c,"outOfRange"),g=this.pointSize+this.blurSize,v=this.canvas,y=v.getContext("2d"),b=n.length;v.width=t,v.height=s;for(var x=0;x0){var q=u(A)?p:m;A>0&&(A=A*j+H),L[R++]=q[$],L[R++]=q[$+1],L[R++]=q[$+2],L[R++]=q[$+3]*A*256}else R+=4}return y.putImageData(E,0,0),v},r.prototype._getBrush=function(){var n=this._brushCanvas||(this._brushCanvas=gl.createCanvas()),t=this.pointSize+this.blurSize,s=2*t;n.width=s,n.height=s;var l=n.getContext("2d");return l.clearRect(0,0,s,s),l.shadowOffsetX=s,l.shadowBlur=this.blurSize,l.shadowColor="#000",l.beginPath(),l.arc(-t,t,this.pointSize,0,2*Math.PI,!0),l.closePath(),l.fill(),n},r.prototype._getGradient=function(n,t){for(var s=this._gradientPixels,l=s[t]||(s[t]=new Uint8ClampedArray(1024)),c=[0,0,0,0],u=0,f=0;f<256;f++)n[t](f/255,!0,c),l[u++]=c[0],l[u++]=c[1],l[u++]=c[2],l[u++]=c[3];return l},r}();const x7=w7;function Tk(r){var n=r.dimensions;return"lng"===n[0]&&"lat"===n[1]}var S7=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){var c;s.eachComponent("visualMap",function(f){f.eachTargetSeries(function(p){p===t&&(c=f)})}),this._progressiveEls=null,this.group.removeAll();var u=t.coordinateSystem;"cartesian2d"===u.type||"calendar"===u.type?this._renderOnCartesianAndCalendar(t,l,0,t.getData().count()):Tk(u)&&this._renderOnGeo(u,t,c,l)},n.prototype.incrementalPrepareRender=function(t,s,l){this.group.removeAll()},n.prototype.incrementalRender=function(t,s,l,c){var u=s.coordinateSystem;u&&(Tk(u)?this.render(s,l,c):(this._progressiveEls=[],this._renderOnCartesianAndCalendar(s,c,t.start,t.end,!0)))},n.prototype.eachRendered=function(t){Ue(this._progressiveEls||this.group,t)},n.prototype._renderOnCartesianAndCalendar=function(t,s,l,c,u){var m,g,v,y,f=t.coordinateSystem,p=Su(f,"cartesian2d");if(p){var b=f.getAxis("x"),x=f.getAxis("y");m=b.getBandWidth()+.5,g=x.getBandWidth()+.5,v=b.scale.getExtent(),y=x.scale.getExtent()}for(var C=this.group,S=t.getData(),M=t.getModel(["emphasis","itemStyle"]).getItemStyle(),T=t.getModel(["blur","itemStyle"]).getItemStyle(),A=t.getModel(["select","itemStyle"]).getItemStyle(),E=t.get(["itemStyle","borderRadius"]),L=Or(t),R=t.getModel("emphasis"),V=R.get("focus"),H=R.get("blurScope"),G=R.get("disabled"),j=p?[S.mapDimension("x"),S.mapDimension("y"),S.mapDimension("value")]:[S.mapDimension("time"),S.mapDimension("value")],$=l;$v[1]||ney[1])continue;var re=f.dataToPoint([ee,ne]);q=new Zt({shape:{x:re[0]-m/2,y:re[1]-g/2,width:m,height:g},style:K})}else{if(isNaN(S.get(j[1],$)))continue;q=new Zt({z2:1,shape:f.dataToRect([S.get(j[0],$)]).contentShape,style:K})}if(S.hasItemOption){var ue=S.getItemModel($),ce=ue.getModel("emphasis");M=ce.getModel("itemStyle").getItemStyle(),T=ue.getModel(["blur","itemStyle"]).getItemStyle(),A=ue.getModel(["select","itemStyle"]).getItemStyle(),E=ue.get(["itemStyle","borderRadius"]),V=ce.get("focus"),H=ce.get("blurScope"),G=ce.get("disabled"),L=Or(ue)}q.shape.r=E;var ve=t.getRawValue($),Te="-";ve&&null!=ve[2]&&(Te=ve[2]+""),Xr(q,L,{labelFetcher:t,labelDataIndex:$,defaultOpacity:K.opacity,defaultText:Te}),q.ensureState("emphasis").style=M,q.ensureState("blur").style=T,q.ensureState("select").style=A,Pi(q,V,H,G),q.incremental=u,u&&(q.states.emphasis.hoverLayer=!0),C.add(q),S.setItemGraphicEl($,q),this._progressiveEls&&this._progressiveEls.push(q)}},n.prototype._renderOnGeo=function(t,s,l,c){var u=l.targetVisuals.inRange,f=l.targetVisuals.outOfRange,p=s.getData(),m=this._hmLayer||this._hmLayer||new x7;m.blurSize=s.get("blurSize"),m.pointSize=s.get("pointSize"),m.minOpacity=s.get("minOpacity"),m.maxOpacity=s.get("maxOpacity");var g=t.getViewRect().clone(),v=t.getRoamTransform();g.applyTransform(v);var y=Math.max(g.x,0),b=Math.max(g.y,0),x=Math.min(g.width+g.x,c.getWidth()),C=Math.min(g.height+g.y,c.getHeight()),S=x-y,M=C-b,T=[p.mapDimension("lng"),p.mapDimension("lat"),p.mapDimension("value")],A=p.mapArray(T,function(V,H,G){var j=t.dataToPoint([V,H]);return j[0]-=y,j[1]-=b,j.push(G),j}),E=l.getExtent(),L="visualMap.continuous"===l.type?function Mk(r,n){var t=r[1]-r[0];return n=[(n[0]-r[0])/t,(n[1]-r[0])/t],function(s){return s>=n[0]&&s<=n[1]}}(E,l.option.range):function C7(r,n,t){var s=r[1]-r[0],l=(n=xe(n,function(u){return{interval:[(u.interval[0]-r[0])/s,(u.interval[1]-r[0])/s]}})).length,c=0;return function(u){var f;for(f=c;f=0;f--){var p;if((p=n[f].interval)[0]<=u&&u<=p[1]){c=f;break}}return f>=0&&f0?1:-1})(t,c,l,s,y),function MB(r,n,t,s,l,c,u,f,p,m){var x,g=p.valueDim,v=p.categoryDim,y=Math.abs(t[v.wh]),b=r.getItemVisual(n,"symbolSize");(x=ye(b)?b.slice():null==b?["100%","100%"]:[b,b])[v.index]=Re(x[v.index],y),x[g.index]=Re(x[g.index],s?y:Math.abs(c)),m.symbolSize=x,(m.symbolScale=[x[0]/f,x[1]/f])[g.index]*=(p.isHorizontal?-1:1)*u}(r,n,l,c,0,y.boundingLength,y.pxSign,g,s,y),function TB(r,n,t,s,l){var c=r.get(pQ)||0;c&&(lg.attr({scaleX:n[0],scaleY:n[1],rotation:t}),lg.updateTransform(),c/=lg.getLineScale(),c*=n[s.valueDim.index]),l.valueLineWidth=c||0}(t,y.symbolScale,m,s,y);var b=y.symbolSize,x=_m(t.get("symbolOffset"),b);return function Pk(r,n,t,s,l,c,u,f,p,m,g,v){var y=g.categoryDim,b=g.valueDim,x=v.pxSign,C=Math.max(n[b.index]+f,0),S=C;if(s){var M=Math.abs(p),T=Tr(r.get("symbolMargin"),"15%")+"",A=!1;T.lastIndexOf("!")===T.length-1&&(A=!0,T=T.slice(0,T.length-1));var E=Re(T,n[b.index]),L=Math.max(C+2*E,0),R=A?0:2*E,V=Mo(s),H=V?s:Yy((M+R)/L);L=C+2*(E=(M-H*C)/2/(A?H:Math.max(H-1,1))),R=A?0:2*E,!V&&"fixed"!==s&&(H=m?Yy((Math.abs(m)+R)/L):0),S=H*L-R,v.repeatTimes=H,v.symbolMargin=E}var j=x*(S/2),$=v.pathPosition=[];$[y.index]=t[y.wh]/2,$[b.index]="start"===u?j:"end"===u?p-j:p/2,c&&($[0]+=c[0],$[1]+=c[1]);var q=v.bundlePosition=[];q[y.index]=t[y.xy],q[b.index]=t[b.xy];var K=v.barRectShape=ge({},t);K[b.wh]=x*Math.max(Math.abs(t[b.wh]),Math.abs($[b.index]+j)),K[y.wh]=t[y.wh];var ee=v.clipShape={};ee[y.xy]=-t[y.xy],ee[y.wh]=g.ecSize[y.wh],ee[b.xy]=0,ee[b.wh]=t[b.wh]}(t,b,l,c,0,x,f,y.valueLineWidth,y.boundingLength,y.repeatCutLength,s,y),y}function xC(r,n){return r.toGlobalCoord(r.dataToCoord(r.scale.parse(n)))}function T7(r){var n=r.symbolPatternSize,t=Ji(r.symbolType,-n/2,-n/2,n,n);return t.attr({culling:!0}),"image"!==t.type&&t.setStyle({strokeNoScale:!0}),t}function Wy(r,n,t,s){var l=r.__pictorialBundle,f=t.pathPosition,p=n.valueDim,m=t.repeatTimes||0,g=0,v=t.symbolSize[n.valueDim.index]+t.valueLineWidth+2*t.symbolMargin;for(Ok(r,function(C){C.__pictorialAnimationIndex=g,C.__pictorialRepeatTimes=m,g0:M<0)&&(T=m-1-C),S[p.index]=v*(T-m/2+.5)+f[p.index],{x:S[0],y:S[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation}}}function AB(r,n,t,s){var l=r.__pictorialBundle,c=r.__pictorialMainPath;c?cg(c,null,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:t.symbolScale[0],scaleY:t.symbolScale[1],rotation:t.rotation},t,s):(c=r.__pictorialMainPath=T7(t),l.add(c),cg(c,{x:t.pathPosition[0],y:t.pathPosition[1],scaleX:0,scaleY:0,rotation:t.rotation},{scaleX:t.symbolScale[0],scaleY:t.symbolScale[1]},t,s))}function kB(r,n,t){var s=ge({},n.barRectShape),l=r.__pictorialBarRect;l?cg(l,null,{shape:s},n,t):((l=r.__pictorialBarRect=new Zt({z2:2,shape:s,silent:!0,style:{stroke:"transparent",fill:"transparent",lineWidth:0}})).disableMorphing=!0,r.add(l))}function EB(r,n,t,s){if(t.symbolClip){var l=r.__pictorialClipPath,c=ge({},t.clipShape),u=n.valueDim,f=t.animationModel,p=t.dataIndex;if(l)fn(l,{shape:c},f,p);else{c[u.wh]=0,l=new Zt({shape:c}),r.__pictorialBundle.setClipPath(l),r.__pictorialClipPath=l;var m={};m[u.wh]=t.clipShape[u.wh],vi[s?"updateProps":"initProps"](l,{shape:m},f,p)}}}function IB(r,n){var t=r.getItemModel(n);return t.getAnimationDelayParams=A7,t.isAnimationEnabled=k7,t}function A7(r){return{index:r.__pictorialAnimationIndex,count:r.__pictorialRepeatTimes}}function k7(){return this.parentModel.isAnimationEnabled()&&!!this.getShallow("animation")}function PB(r,n,t,s){var l=new lt,c=new lt;return l.add(c),l.__pictorialBundle=c,c.x=t.bundlePosition[0],c.y=t.bundlePosition[1],t.symbolRepeat?Wy(l,n,t):AB(l,0,t),kB(l,t,s),EB(l,n,t,s),l.__pictorialShapeStr=OB(r,t),l.__pictorialSymbolMeta=t,l}function Rk(r,n,t,s){var l=s.__pictorialBarRect;l&&l.removeTextContent();var c=[];Ok(s,function(u){c.push(u)}),s.__pictorialMainPath&&c.push(s.__pictorialMainPath),s.__pictorialClipPath&&(t=null),U(c,function(u){Fc(u,{scaleX:0,scaleY:0},t,n,function(){s.parent&&s.parent.remove(s)})}),r.setItemGraphicEl(n,null)}function OB(r,n){return[r.getItemVisual(n.dataIndex,"symbol")||"none",!!n.symbolRepeat,!!n.symbolClip].join(":")}function Ok(r,n,t){U(r.__pictorialBundle.children(),function(s){s!==r.__pictorialBarRect&&n.call(t,s)})}function cg(r,n,t,s,l,c){n&&r.attr(n),s.symbolClip&&!l?t&&r.attr(t):t&&vi[l?"updateProps":"initProps"](r,t,s.animationModel,s.dataIndex,c)}function LB(r,n,t){var s=t.dataIndex,l=t.itemModel,c=l.getModel("emphasis"),u=c.getModel("itemStyle").getItemStyle(),f=l.getModel(["blur","itemStyle"]).getItemStyle(),p=l.getModel(["select","itemStyle"]).getItemStyle(),m=l.getShallow("cursor"),g=c.get("focus"),v=c.get("blurScope"),y=c.get("scale");Ok(r,function(C){if(C instanceof _i){var S=C.style;C.useStyle(ge({image:S.image,x:S.x,y:S.y,width:S.width,height:S.height},t.style))}else C.useStyle(t.style);var M=C.ensureState("emphasis");M.style=u,y&&(M.scaleX=1.1*C.scaleX,M.scaleY=1.1*C.scaleY),C.ensureState("blur").style=f,C.ensureState("select").style=p,m&&(C.cursor=m),C.z2=t.z2});var b=n.valueDim.posDesc[+(t.boundingLength>0)];Xr(r.__pictorialBarRect,Or(l),{labelFetcher:n.seriesModel,labelDataIndex:s,defaultText:_f(n.seriesModel.getData(),s),inheritColor:t.style.fill,defaultOpacity:t.style.opacity,defaultOutsidePosition:b}),Pi(r,g,v,c.get("disabled"))}function Yy(r){var n=Math.round(r);return Math.abs(r-n)<1e-4?n:Math.ceil(r)}const E7=kk;var mQ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.hasSymbolVisual=!0,t.defaultSymbol="roundRect",t}return se(n,r),n.prototype.getInitialData=function(t){return t.stack=null,r.prototype.getInitialData.apply(this,arguments)},n.type="series.pictorialBar",n.dependencies=["grid"],n.defaultOption=Yd(Tx.defaultOption,{symbol:"circle",symbolSize:null,symbolRotate:null,symbolPosition:null,symbolOffset:null,symbolMargin:null,symbolRepeat:!1,symbolRepeatDirection:"end",symbolClip:!1,symbolBoundingData:null,symbolPatternSize:400,barGap:"-100%",progressive:0,emphasis:{scale:!1},select:{itemStyle:{borderColor:"#212121"}}}),n}(Tx);const gQ=mQ;var _Q=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._layers=[],t}return se(n,r),n.prototype.render=function(t,s,l){var c=t.getData(),u=this,f=this.group,p=t.getLayerSeries(),m=c.getLayout("layoutInfo"),g=m.rect,v=m.boundaryGap;function y(S){return S.name}f.x=0,f.y=g.y+v[0];var b=new Zl(this._layersSeries||[],p,y,y),x=[];function C(S,M,T){var A=u._layers;if("remove"!==S){for(var R,E=[],L=[],V=p[M].indices,H=0;Hc&&(c=f),s.push(f)}for(var m=0;mc&&(c=v)}return{y0:l,max:c}}(f),m=p.y0,g=t/p.max,v=l.length,y=l[0].indices.length,x=0;xMath.PI/2?"right":"left"):q&&"center"!==q?"left"===q?(j=u.r0+$,p>Math.PI/2&&(q="right")):"right"===q&&(j=u.r-$,p>Math.PI/2&&(q="left")):(j=f===2*Math.PI&&0===u.r0?0:(u.r+u.r0)/2,q="center"),E.style.align=q,E.style.verticalAlign=S(T,"verticalAlign")||"middle",E.x=j*m+u.cx,E.y=j*g+u.cy;var K=S(T,"rotate"),ee=0;"radial"===K?(ee=Ic(-p))>Math.PI/2&&ee<1.5*Math.PI&&(ee+=Math.PI):"tangential"===K?(ee=Math.PI/2-p)>Math.PI/2?ee-=Math.PI:ee<-Math.PI/2&&(ee+=Math.PI):rn(K)&&(ee=K*Math.PI/180),E.rotation=ee}),y.dirtyStyle()},n}(Nr);const CC=N7;var NB="sunburstRootToNode",BB="sunburstHighlight",VB=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l,c){var u=this;this.seriesModel=t,this.api=l,this.ecModel=s;var f=t.getData(),p=f.tree.root,m=t.getViewRoot(),g=this.group,v=t.get("renderLabelForZeroData"),y=[];m.eachNode(function(T){y.push(T)}),function x(T,A){function E(R){return R.getId()}function L(R,V){!function C(T,A){if(!v&&T&&!T.getValue()&&(T=null),T!==p&&A!==p)if(A&&A.piece)T?(A.piece.updateData(!1,T,t,s,l),f.setItemGraphicEl(T.dataIndex,A.piece)):function S(T){T&&T.piece&&(g.remove(T.piece),T.piece=null)}(A);else if(T){var E=new CC(T,t,s,l);g.add(E),f.setItemGraphicEl(T.dataIndex,E)}}(null==R?null:T[R],null==V?null:A[V])}0===T.length&&0===A.length||new Zl(A,T,E,E).add(L).update(L).remove($e(L,null)).execute()}(y,this._oldChildren||[]),function M(T,A){A.depth>0?(u.virtualPiece?u.virtualPiece.updateData(!1,T,t,s,l):(u.virtualPiece=new CC(T,t,s,l),g.add(u.virtualPiece)),A.piece.off("click"),u.virtualPiece.on("click",function(E){u._rootToNode(A.parentNode)})):u.virtualPiece&&(g.remove(u.virtualPiece),u.virtualPiece=null)}(p,m),this._initEvents(),this._oldChildren=y},n.prototype._initEvents=function(){var t=this;this.group.off("click"),this.group.on("click",function(s){var l=!1;t.seriesModel.getViewRoot().eachNode(function(u){if(!l&&u.piece&&u.piece===s.target){var f=u.getModel().get("nodeClick");if("rootToNode"===f)t._rootToNode(u);else if("link"===f){var p=u.getModel(),m=p.get("link");m&&V0(m,p.get("target",!0)||"_blank")}l=!0}})})},n.prototype._rootToNode=function(t){t!==this.seriesModel.getViewRoot()&&this.api.dispatchAction({type:NB,from:this.uid,seriesId:this.seriesModel.id,targetNode:t})},n.prototype.containPoint=function(t,s){var c=s.getData().getItemLayout(0);if(c){var u=t[0]-c.cx,f=t[1]-c.cy,p=Math.sqrt(u*u+f*f);return p<=c.r&&p>=c.r0}},n.type="sunburst",n}(Vn);const zB=VB;var HB=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.ignoreStyleOnData=!0,t}return se(n,r),n.prototype.getInitialData=function(t,s){var l={name:t.name,children:t.data};DC(l);var c=this._levelModels=xe(t.levels||[],function(p){return new In(p,this,s)},this),u=Pu.createTree(l,this,function f(p){p.wrapMethod("getItemModel",function(m,g){var v=u.getNodeByDataIndex(g),y=c[v.depth];return y&&(m.parentModel=y),m})});return u.data},n.prototype.optionUpdated=function(){this.resetViewRoot()},n.prototype.getDataParams=function(t){var s=r.prototype.getDataParams.apply(this,arguments),l=this.getData().tree.getNodeByDataIndex(t);return s.treePathInfo=Qx(l,this),s},n.prototype.getLevelModel=function(t){return this._levelModels&&this._levelModels[t.depth]},n.prototype.getViewRoot=function(){return this._viewRoot},n.prototype.resetViewRoot=function(t){t?this._viewRoot=t:t=this._viewRoot;var s=this.getRawData().tree.root;(!t||t!==s&&!s.contains(t))&&(this._viewRoot=s)},n.prototype.enableAriaDecal=function(){rN(this)},n.type="series.sunburst",n.defaultOption={z:2,center:["50%","50%"],radius:[0,"75%"],clockwise:!0,startAngle:90,minAngle:0,stillShowZeroSum:!0,nodeClick:"rootToNode",renderLabelForZeroData:!1,label:{rotate:"radial",show:!0,opacity:1,align:"center",position:"inside",distance:5,silent:!0},itemStyle:{borderWidth:1,borderColor:"white",borderType:"solid",shadowBlur:0,shadowColor:"rgba(0, 0, 0, 0.2)",shadowOffsetX:0,shadowOffsetY:0,opacity:1},emphasis:{focus:"descendant"},blur:{itemStyle:{opacity:.2},label:{opacity:.1}},animationType:"expansion",animationDuration:1e3,animationDurationUpdate:500,data:[],sort:"desc"},n}(Zn);function DC(r){var n=0;U(r.children,function(s){DC(s);var l=s.value;ye(l)&&(l=l[0]),n+=l});var t=r.value;ye(t)&&(t=t[0]),(null==t||isNaN(t))&&(t=n),t<0&&(t=0),ye(r.value)?r.value[0]=t:r.value=t}const GB=HB;var Xy=Math.PI/180;function B7(r,n,t){n.eachSeriesByType(r,function(s){var l=s.get("center"),c=s.get("radius");ye(c)||(c=[0,c]),ye(l)||(l=[l,l]);var u=t.getWidth(),f=t.getHeight(),p=Math.min(u,f),m=Re(l[0],u),g=Re(l[1],f),v=Re(c[0],p/2),y=Re(c[1],p/2),b=-s.get("startAngle")*Xy,x=s.get("minAngle")*Xy,C=s.getData().tree.root,S=s.getViewRoot(),M=S.depth,T=s.get("sort");null!=T&&Zy(S,T);var A=0;U(S.children,function(re){!isNaN(re.getValue())&&A++});var E=S.getValue(),L=Math.PI/(E||A)*2,R=S.depth>0,H=(y-v)/(S.height-(R?-1:1)||1),G=s.get("clockwise"),j=s.get("stillShowZeroSum"),$=G?1:-1,q=function(re,ue){if(re){var ce=ue;if(re!==C){var ve=re.getValue(),Te=0===E&&j?L:ve*L;Te1;)u=u.parentNode;var f=l.getColorFromPalette(u.name||u.dataIndex+"",n);return s.depth>1&&Le(f)&&(f=Zg(f,(s.depth-1)/(c-1)*.5)),f}(u,s,c.root.height)),ge(l.ensureUniqueItemVisual(u.dataIndex,"style"),p)})})}var Nk={color:"fill",borderColor:"stroke"},V7={symbol:1,symbolSize:1,symbolKeepAspect:1,legendIcon:1,visualMeta:1,liftZ:1,decal:1},md=un(),z7=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.optionUpdated=function(){this.currentZLevel=this.get("zlevel",!0),this.currentZ=this.get("z",!0)},n.prototype.getInitialData=function(t,s){return Kc(null,this)},n.prototype.getDataParams=function(t,s,l){var c=r.prototype.getDataParams.call(this,t,s);return l&&(c.info=md(l).info),c},n.type="series.custom",n.dependencies=["grid","polar","geo","singleAxis","calendar"],n.defaultOption={coordinateSystem:"cartesian2d",z:2,legendHoverLink:!0,clip:!1},n}(Zn);const H7=z7;function G7(r,n){return n=n||[0,0],xe(["x","y"],function(t,s){var l=this.getAxis(t),c=n[s],u=r[s]/2;return"category"===l.type?l.getBandWidth():Math.abs(l.dataToCoord(c-u)-l.dataToCoord(c+u))},this)}function Bk(r,n){return n=n||[0,0],xe([0,1],function(t){var s=n[t],l=r[t]/2,c=[],u=[];return c[t]=s-l,u[t]=s+l,c[1-t]=u[1-t]=n[1-t],Math.abs(this.dataToPoint(c)[t]-this.dataToPoint(u)[t])},this)}function $B(r,n){var t=this.getAxis(),s=n instanceof Array?n[0]:n,l=(r instanceof Array?r[0]:r)/2;return"category"===t.type?t.getBandWidth():Math.abs(t.dataToCoord(s-l)-t.dataToCoord(s+l))}function xQ(r,n){return n=n||[0,0],xe(["Radius","Angle"],function(t,s){var c=this["get"+t+"Axis"](),u=n[s],f=r[s]/2,p="category"===c.type?c.getBandWidth():Math.abs(c.dataToCoord(u-f)-c.dataToCoord(u+f));return"Angle"===t&&(p=p*Math.PI/180),p},this)}function WB(r,n,t,s){return r&&(r.legacy||!1!==r.legacy&&!t&&!s&&"tspan"!==n&&("text"===n||ze(r,"text")))}function YB(r,n,t){var l,c,u,s=r;if("text"===n)u=s;else{u={},ze(s,"text")&&(u.text=s.text),ze(s,"rich")&&(u.rich=s.rich),ze(s,"textFill")&&(u.fill=s.textFill),ze(s,"textStroke")&&(u.stroke=s.textStroke),ze(s,"fontFamily")&&(u.fontFamily=s.fontFamily),ze(s,"fontSize")&&(u.fontSize=s.fontSize),ze(s,"fontStyle")&&(u.fontStyle=s.fontStyle),ze(s,"fontWeight")&&(u.fontWeight=s.fontWeight),c={type:"text",style:u,silent:!0},l={};var f=ze(s,"textPosition");t?l.position=f?s.textPosition:"inside":f&&(l.position=s.textPosition),ze(s,"textPosition")&&(l.position=s.textPosition),ze(s,"textOffset")&&(l.offset=s.textOffset),ze(s,"textRotation")&&(l.rotation=s.textRotation),ze(s,"textDistance")&&(l.distance=s.textDistance)}return qB(u,r),U(u.rich,function(p){qB(p,p)}),{textConfig:l,textContent:c}}function qB(r,n){n&&(n.font=n.textFont||n.font,ze(n,"textStrokeWidth")&&(r.lineWidth=n.textStrokeWidth),ze(n,"textAlign")&&(r.align=n.textAlign),ze(n,"textVerticalAlign")&&(r.verticalAlign=n.textVerticalAlign),ze(n,"textLineHeight")&&(r.lineHeight=n.textLineHeight),ze(n,"textWidth")&&(r.width=n.textWidth),ze(n,"textHeight")&&(r.height=n.textHeight),ze(n,"textBackgroundColor")&&(r.backgroundColor=n.textBackgroundColor),ze(n,"textPadding")&&(r.padding=n.textPadding),ze(n,"textBorderColor")&&(r.borderColor=n.textBorderColor),ze(n,"textBorderWidth")&&(r.borderWidth=n.textBorderWidth),ze(n,"textBorderRadius")&&(r.borderRadius=n.textBorderRadius),ze(n,"textBoxShadowColor")&&(r.shadowColor=n.textBoxShadowColor),ze(n,"textBoxShadowBlur")&&(r.shadowBlur=n.textBoxShadowBlur),ze(n,"textBoxShadowOffsetX")&&(r.shadowOffsetX=n.textBoxShadowOffsetX),ze(n,"textBoxShadowOffsetY")&&(r.shadowOffsetY=n.textBoxShadowOffsetY))}function Vk(r,n,t){var s=r;s.textPosition=s.textPosition||t.position||"inside",null!=t.offset&&(s.textOffset=t.offset),null!=t.rotation&&(s.textRotation=t.rotation),null!=t.distance&&(s.textDistance=t.distance);var l=s.textPosition.indexOf("inside")>=0,c=r.fill||"#000";XB(s,n);var u=null==s.textFill;return l?u&&(s.textFill=t.insideFill||"#fff",!s.textStroke&&t.insideStroke&&(s.textStroke=t.insideStroke),!s.textStroke&&(s.textStroke=c),null==s.textStrokeWidth&&(s.textStrokeWidth=2)):(u&&(s.textFill=r.fill||t.outsideFill||"#000"),!s.textStroke&&t.outsideStroke&&(s.textStroke=t.outsideStroke)),s.text=n.text,s.rich=n.rich,U(n.rich,function(f){XB(f,f)}),s}function XB(r,n){n&&(ze(n,"fill")&&(r.textFill=n.fill),ze(n,"stroke")&&(r.textStroke=n.fill),ze(n,"lineWidth")&&(r.textStrokeWidth=n.lineWidth),ze(n,"font")&&(r.font=n.font),ze(n,"fontStyle")&&(r.fontStyle=n.fontStyle),ze(n,"fontWeight")&&(r.fontWeight=n.fontWeight),ze(n,"fontSize")&&(r.fontSize=n.fontSize),ze(n,"fontFamily")&&(r.fontFamily=n.fontFamily),ze(n,"align")&&(r.textAlign=n.align),ze(n,"verticalAlign")&&(r.textVerticalAlign=n.verticalAlign),ze(n,"lineHeight")&&(r.textLineHeight=n.lineHeight),ze(n,"width")&&(r.textWidth=n.width),ze(n,"height")&&(r.textHeight=n.height),ze(n,"backgroundColor")&&(r.textBackgroundColor=n.backgroundColor),ze(n,"padding")&&(r.textPadding=n.padding),ze(n,"borderColor")&&(r.textBorderColor=n.borderColor),ze(n,"borderWidth")&&(r.textBorderWidth=n.borderWidth),ze(n,"borderRadius")&&(r.textBorderRadius=n.borderRadius),ze(n,"shadowColor")&&(r.textBoxShadowColor=n.shadowColor),ze(n,"shadowBlur")&&(r.textBoxShadowBlur=n.shadowBlur),ze(n,"shadowOffsetX")&&(r.textBoxShadowOffsetX=n.shadowOffsetX),ze(n,"shadowOffsetY")&&(r.textBoxShadowOffsetY=n.shadowOffsetY),ze(n,"textShadowColor")&&(r.textShadowColor=n.textShadowColor),ze(n,"textShadowBlur")&&(r.textShadowBlur=n.textShadowBlur),ze(n,"textShadowOffsetX")&&(r.textShadowOffsetX=n.textShadowOffsetX),ze(n,"textShadowOffsetY")&&(r.textShadowOffsetY=n.textShadowOffsetY))}var ZB={position:["x","y"],scale:["scaleX","scaleY"],origin:["originX","originY"]},KB=Ut(ZB),zk=(vo(js,function(r,n){return r[n]=1,r},{}),js.join(", "),["","style","shape","extra"]),Ky=un();function Uo(r,n,t,s,l){var c=r+"Animation",u=jp(r,s,l)||{},f=Ky(n).userDuring;return u.duration>0&&(u.during=f?Ne(Hk,{el:n,userDuring:f}):null,u.setToFinal=!0,u.scope=r),ge(u,t[c]),u}function Fs(r,n,t,s){var l=(s=s||{}).dataIndex,c=s.isInit,u=s.clearStyle,f=t.isAnimationEnabled(),p=Ky(r),m=n.style;p.userDuring=n.during;var g={},v={};if(function q7(r,n,t){for(var s=0;s=0)){var y=r.getAnimationStyleProps(),b=y?y.style:null;if(b){!c&&(c=s.style={});var x=Ut(t);for(m=0;m0&&r.animateFrom(y,b)}else!function JB(r,n,t,s,l){if(l){var c=Uo("update",r,n,s,t);c.duration>0&&r.animateFrom(l,c)}}(r,n,l||0,t,g);oc(r,n),m?r.dirty():r.markRedraw()}function oc(r,n){for(var t=Ky(r).leaveToProps,s=0;s=0){!u&&(u=s[r]={});var b=Ut(c);for(g=0;gs[1]&&s.reverse(),{coordSys:{type:"polar",cx:r.cx,cy:r.cy,r:s[1],r0:s[0]},api:{coord:function(l){var c=n.dataToRadius(l[0]),u=t.dataToAngle(l[1]),f=r.coordToPoint([c,u]);return f.push(c,u*Math.PI/180),f},size:Ne(xQ,r)}}},calendar:function $7(r){var n=r.getRect(),t=r.getRangeInfo();return{coordSys:{type:"calendar",x:n.x,y:n.y,width:n.width,height:n.height,cellWidth:r.getCellWidth(),cellHeight:r.getCellHeight(),rangeInfo:{start:t.start,end:t.end,weeks:t.weeks,dayCount:t.allDay}},api:{coord:function(s,l){return r.dataToPoint(s,l)}}}}};function lc(r){return r instanceof Ht}function Uk(r){return r instanceof To}var jk=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l,c){this._progressiveEls=null;var u=this._data,f=t.getData(),p=this.group,m=$k(t,f,s,l);u||p.removeAll(),f.diff(u).add(function(v){$i(l,null,v,m(v,c),t,p,f)}).remove(function(v){var y=u.getItemGraphicEl(v);y&&gd(y,md(y).option,t)}).update(function(v,y){var b=u.getItemGraphicEl(y);$i(l,b,v,m(v,c),t,p,f)}).execute();var g=t.get("clip",!0)?q_(t.coordinateSystem,!1,t):null;g?p.setClipPath(g):p.removeClipPath(),this._data=f},n.prototype.incrementalPrepareRender=function(t,s,l){this.group.removeAll(),this._data=null},n.prototype.incrementalRender=function(t,s,l,c,u){var f=s.getData(),p=$k(s,f,l,c),m=this._progressiveEls=[];function g(b){b.isGroup||(b.incremental=!0,b.ensureState("emphasis").hoverLayer=!0)}for(var v=t.start;v=0?n.getStore().get(ue,ne):void 0}var ce=n.get(re.name,ne),ve=re&&re.ordinalMeta;return ve?ve.categories[ce]:ce},styleEmphasis:function V(ee,ne){null==ne&&(ne=m);var re=T(ne,sc).getItemStyle(),ue=A(ne,sc),ce=Xn(ue,null,null,!0,!0);ce.text=ue.getShallow("show")?es(r.getFormattedLabel(ne,sc),r.getFormattedLabel(ne,Bu),_f(n,ne)):null;var ve=P0(ue,null,!0);return G(ee,re),re=Vk(re,ce,ve),ee&&H(re,ee),re.legacy=!0,re},visual:function j(ee,ne){if(null==ne&&(ne=m),ze(Nk,ee)){var re=n.getItemVisual(ne,"style");return re?re[Nk[ee]]:null}if(ze(V7,ee))return n.getItemVisual(ne,ee)},barLayout:function $(ee){if("cartesian2d"===c.type)return function I_(r){var n=[],t=r.axis,s="axis0";if("category"===t.type){for(var l=t.getBandWidth(),c=0;c=g;b--){var x=n.childAt(b);Yk(n,x,l)}}}(r,m,t,s,l),u>=0?c.replaceAt(m,u):c.add(m),m}function Wk(r,n,t){var s=md(r),l=n.type,c=n.shape,u=n.style;return t.isUniversalTransitionEnabled()||null!=l&&l!==s.customGraphicType||"path"===l&&function kQ(r){return r&&(ze(r,"pathData")||ze(r,"d"))}(c)&&An(c)!==s.customPathData||"image"===l&&ze(u,"image")&&u.image!==s.customImagePath}function aV(r,n,t){var s=n?Ns(r,n):r,l=n?rr(r,s,sc):r.style,c=r.type,u=s?s.textConfig:null,f=r.textContent,p=f?n?Ns(f,n):f:null;if(l&&(t.isLegacy||WB(l,c,!!u,!!p))){t.isLegacy=!0;var m=YB(l,c,!n);!u&&m.textConfig&&(u=m.textConfig),!p&&m.textContent&&(p=m.textContent)}!n&&p&&!p.type&&(p.type="text");var v=n?t[n]:t.normal;v.cfg=u,v.conOpt=p}function Ns(r,n){return n?r?r[n]:null:r}function rr(r,n,t){var s=n&&n.style;return null==s&&t===sc&&r&&(s=r.styleEmphasis),s}function Yk(r,n,t){n&&gd(n,md(r).option,t)}function dt(r,n){return(r&&r.name)??K7+n}function Fn(r,n){var t=this.context;PC(t.api,null!=n?t.oldChildren[n]:null,t.dataIndex,null!=r?t.newChildren[r]:null,t.seriesModel,t.group)}function dg(r){var n=this.context,t=n.oldChildren[r];t&&gd(t,md(t).option,n.seriesModel)}function An(r){return r&&(r.pathData||r.d)}var ug=un(),eb=rt,sV=Ne,lV=function(){function r(){this._dragging=!1,this.animationThreshold=15}return r.prototype.render=function(n,t,s,l){var c=t.get("value"),u=t.get("status");if(this._axisModel=n,this._axisPointerModel=t,this._api=s,l||this._lastValue!==c||this._lastStatus!==u){this._lastValue=c,this._lastStatus=u;var f=this._group,p=this._handle;if(!u||"hide"===u)return f&&f.hide(),void(p&&p.hide());f&&f.show(),p&&p.show();var m={};this.makeElOption(m,c,n,t,s);var g=m.graphicKey;g!==this._lastGraphicKey&&this.clear(s),this._lastGraphicKey=g;var v=this._moveAnimation=this.determineAnimation(n,t);if(f){var y=$e(hg,t,v);this.updatePointerEl(f,m,y),this.updateLabelEl(f,m,y,t)}else f=this._group=new lt,this.createPointerEl(f,m,n,t),this.createLabelEl(f,m,n,t),s.getZr().add(f);tb(f,t,!0),this._renderHandle(c)}},r.prototype.remove=function(n){this.clear(n)},r.prototype.dispose=function(n){this.clear(n)},r.prototype.determineAnimation=function(n,t){var s=t.get("animation"),l=n.axis,c="category"===l.type,u=t.get("snap");if(!u&&!c)return!1;if("auto"===s||null==s){var f=this.animationThreshold;if(c&&l.getBandWidth()>f)return!0;if(u){var p=ty(n).seriesDataCount,m=l.getExtent();return Math.abs(m[0]-m[1])/p>f}return!1}return!0===s},r.prototype.makeElOption=function(n,t,s,l,c){},r.prototype.createPointerEl=function(n,t,s,l){var c=t.pointer;if(c){var u=ug(n).pointerEl=new vi[c.type](eb(t.pointer));n.add(u)}},r.prototype.createLabelEl=function(n,t,s,l){if(t.label){var c=ug(n).labelEl=new an(eb(t.label));n.add(c),LC(c,l)}},r.prototype.updatePointerEl=function(n,t,s){var l=ug(n).pointerEl;l&&t.pointer&&(l.setStyle(t.pointer.style),s(l,{shape:t.pointer.shape}))},r.prototype.updateLabelEl=function(n,t,s,l){var c=ug(n).labelEl;c&&(c.setStyle(t.label.style),s(c,{x:t.label.x,y:t.label.y}),LC(c,l))},r.prototype._renderHandle=function(n){if(!this._dragging&&this.updateHandleTransform){var f,t=this._axisPointerModel,s=this._api.getZr(),l=this._handle,c=t.getModel("handle"),u=t.get("status");if(!c.get("show")||!u||"hide"===u)return l&&s.remove(l),void(this._handle=null);this._handle||(f=!0,l=this._handle=lu(c.get("icon"),{cursor:"move",draggable:!0,onmousemove:function(m){Ar(m.event)},onmousedown:sV(this._onHandleDragMove,this,0,0),drift:sV(this._onHandleDragMove,this),ondragend:sV(this._onHandleDragEnd,this)}),s.add(l)),tb(l,t,!1),l.setStyle(c.getItemStyle(null,["color","borderColor","borderWidth","opacity","shadowColor","shadowBlur","shadowOffsetX","shadowOffsetY"]));var p=c.get("size");ye(p)||(p=[p,p]),l.scaleX=p[0]/2,l.scaleY=p[1]/2,tf(this,"_doDispatchAxisPointer",c.get("throttle")||0,"fixRate"),this._moveHandleToValue(n,f)}},r.prototype._moveHandleToValue=function(n,t){hg(this._axisPointerModel,!t&&this._moveAnimation,this._handle,Xk(this.getHandleTransform(n,this._axisModel,this._axisPointerModel)))},r.prototype._onHandleDragMove=function(n,t){var s=this._handle;if(s){this._dragging=!0;var l=this.updateHandleTransform(Xk(s),[n,t],this._axisModel,this._axisPointerModel);this._payloadInfo=l,s.stopAnimation(),s.attr(Xk(l)),ug(s).lastProp=null,this._doDispatchAxisPointer()}},r.prototype._doDispatchAxisPointer=function(){if(this._handle){var t=this._payloadInfo,s=this._axisModel;this._api.dispatchAction({type:"updateAxisPointer",x:t.cursorPoint[0],y:t.cursorPoint[1],tooltipOption:t.tooltipOption,axesInfo:[{axisDim:s.axis.dim,axisIndex:s.componentIndex}]})}},r.prototype._onHandleDragEnd=function(){if(this._dragging=!1,this._handle){var t=this._axisPointerModel.get("value");this._moveHandleToValue(t),this._api.dispatchAction({type:"hideTip"})}},r.prototype.clear=function(n){this._lastValue=null,this._lastStatus=null;var t=n.getZr(),s=this._group,l=this._handle;t&&s&&(this._lastGraphicKey=null,s&&t.remove(s),l&&t.remove(l),this._group=null,this._handle=null,this._payloadInfo=null),pm(this,"_doDispatchAxisPointer")},r.prototype.doClear=function(){},r.prototype.buildLabel=function(n,t,s){return{x:n[s=s||0],y:n[1-s],width:t[s],height:t[1-s]}},r}();function hg(r,n,t,s){qk(ug(t).lastProp,s)||(ug(t).lastProp=s,n?fn(t,s,r):(t.stopAnimation(),t.attr(s)))}function qk(r,n){if(tt(r)&&tt(n)){var t=!0;return U(n,function(s,l){t=t&&qk(r[l],s)}),!!t}return r===n}function LC(r,n){r[n.get(["label","show"])?"show":"hide"]()}function Xk(r){return{x:r.x||0,y:r.y||0,rotation:r.rotation||0}}function tb(r,n,t){var s=n.get("z"),l=n.get("zlevel");r&&r.traverse(function(c){"group"!==c.type&&(null!=s&&(c.z=s),null!=l&&(c.zlevel=l),c.silent=t)})}const nb=lV;function FC(r){var s,n=r.get("type"),t=r.getModel(n+"Style");return"line"===n?(s=t.getLineStyle()).fill=null:"shadow"===n&&((s=t.getAreaStyle()).stroke=null),s}function Zk(r,n,t,s,l){var u=cV(t.get("value"),n.axis,n.ecModel,t.get("seriesDataIndices"),{precision:t.get(["label","precision"]),formatter:t.get(["label","formatter"])}),f=t.getModel("label"),p=Qd(f.get("padding")||0),m=f.getFont(),g=uv(u,m),v=l.position,y=g.width+p[1]+p[3],b=g.height+p[0]+p[2],x=l.align;"right"===x&&(v[0]-=y),"center"===x&&(v[0]-=y/2);var C=l.verticalAlign;"bottom"===C&&(v[1]-=b),"middle"===C&&(v[1]-=b/2),function t$(r,n,t,s){var l=s.getWidth(),c=s.getHeight();r[0]=Math.min(r[0]+n,l)-n,r[1]=Math.min(r[1]+t,c)-t,r[0]=Math.max(r[0],0),r[1]=Math.max(r[1],0)}(v,y,b,s);var S=f.get("backgroundColor");(!S||"auto"===S)&&(S=n.get(["axisLine","lineStyle","color"])),r.label={x:v[0],y:v[1],style:Xn(f,{text:u,font:m,fill:f.getTextColor(),padding:p,backgroundColor:S}),z2:10}}function cV(r,n,t,s,l){r=n.scale.parse(r);var c=n.scale.getLabel({value:r},{precision:l.precision}),u=l.formatter;if(u){var f={value:yT(n,{value:r}),axisDimension:n.dim,axisIndex:n.index,seriesData:[]};U(s,function(p){var m=t.getSeriesByIndex(p.seriesIndex),v=m&&m.getDataParams(p.dataIndexInside);v&&f.seriesData.push(v)}),Le(u)?c=u.replace("{value}",c):qe(u)&&(c=u(f))}return c}function Kk(r,n,t){var s=[1,0,0,1,0,0];return _c(s,s,t.rotation),_e(s,s,t.position),nl([r.dataToCoord(n),(t.labelOffset||0)+(t.labelDirection||1)*(t.labelMargin||0)],s)}function Qk(r,n,t,s,l,c){var u=Za.innerTextLayout(t.rotation,0,t.labelDirection);t.labelMargin=l.get(["label","margin"]),Zk(n,s,l,c,{position:Kk(s.axis,r,t),align:u.textAlign,verticalAlign:u.textVerticalAlign})}function NC(r,n,t){return{x1:r[t=t||0],y1:r[1-t],x2:n[t],y2:n[1-t]}}function dV(r,n,t){return{x:r[t=t||0],y:r[1-t],width:n[t],height:n[1-t]}}function Si(r,n,t,s,l,c){return{cx:r,cy:n,r0:t,r:s,startAngle:l,endAngle:c,clockwise:!0}}var uV=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.makeElOption=function(t,s,l,c,u){var f=l.axis,p=f.grid,m=c.get("type"),g=Fi(p,f).getOtherAxis(f).getGlobalExtent(),v=f.toGlobalCoord(f.dataToCoord(s,!0));if(m&&"none"!==m){var y=FC(c),b=n$[m](f,v,g);b.style=y,t.graphicKey=b.type,t.pointer=b}Qk(s,t,JL(p.model,l),l,c,u)},n.prototype.getHandleTransform=function(t,s,l){var c=JL(s.axis.grid.model,s,{labelInside:!1});c.labelMargin=l.get(["handle","margin"]);var u=Kk(s.axis,t,c);return{x:u[0],y:u[1],rotation:c.rotation+(c.labelDirection<0?Math.PI:0)}},n.prototype.updateHandleTransform=function(t,s,l,c){var u=l.axis,f=u.grid,p=u.getGlobalExtent(!0),m=Fi(f,u).getOtherAxis(u).getGlobalExtent(),g="x"===u.dim?0:1,v=[t.x,t.y];v[g]+=s[g],v[g]=Math.min(p[1],v[g]),v[g]=Math.max(p[0],v[g]);var y=(m[1]+m[0])/2,b=[y,y];return b[g]=v[g],{x:v[0],y:v[1],rotation:t.rotation,cursorPoint:b,tooltipOption:[{verticalAlign:"middle"},{align:"center"}][g]}},n}(nb);function Fi(r,n){var t={};return t[n.dim+"AxisIndex"]=n.index,r.getCartesian(t)}var n$={line:function(r,n,t){return{type:"Line",subPixelOptimize:!0,shape:NC([n,t[0]],[n,t[1]],Jk(r))}},shadow:function(r,n,t){var s=Math.max(1,r.getBandWidth());return{type:"Rect",shape:dV([n-s/2,t[0]],[s,t[1]-t[0]],Jk(r))}}};function Jk(r){return"x"===r.dim?0:1}const i$=uV;var r$=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="axisPointer",n.defaultOption={show:"auto",z:50,type:"line",snap:!1,triggerTooltip:!0,value:null,status:null,link:[],animation:null,animationDurationUpdate:200,lineStyle:{color:"#B9BEC9",width:1,type:"dashed"},shadowStyle:{color:"rgba(210,219,238,0.2)"},label:{show:!0,formatter:null,precision:"auto",margin:3,color:"#fff",padding:[5,7,5,7],backgroundColor:"auto",borderColor:null,borderWidth:0,borderRadius:3},handle:{show:!1,icon:"M10.7,11.9v-1.3H9.3v1.3c-4.9,0.3-8.8,4.4-8.8,9.4c0,5,3.9,9.1,8.8,9.4h1.3c4.9-0.3,8.8-4.4,8.8-9.4C19.5,16.3,15.6,12.2,10.7,11.9z M13.3,24.4H6.7v-1.2h6.6z M13.3,22H6.7v-1.2h6.6z M13.3,19.6H6.7v-1.2h6.6z",size:45,margin:50,color:"#333",shadowBlur:3,shadowColor:"#aaa",shadowOffsetX:0,shadowOffsetY:2,throttle:40}},n}(qt);const EQ=r$;var yd=un(),a$=U;function ib(r,n,t){if(!ln.node){var s=n.getZr();yd(s).records||(yd(s).records={}),function o$(r,n){function t(s,l){r.on(s,function(c){var u=function or(r){var n={showTip:[],hideTip:[]},t=function(s){var l=n[s.type];l?l.push(s):(s.dispatchAction=t,r.dispatchAction(s))};return{dispatchAction:t,pendings:n}}(n);a$(yd(r).records,function(f){f&&l(f,c,u.dispatchAction)}),function jo(r,n){var l,t=r.showTip.length,s=r.hideTip.length;t?l=r.showTip[t-1]:s&&(l=r.hideTip[s-1]),l&&(l.dispatchAction=null,n.dispatchAction(l))}(u.pendings,n)})}yd(r).initialized||(yd(r).initialized=!0,t("click",$e(Wi,"click")),t("mousemove",$e(Wi,"mousemove")),t("globalout",ar))}(s,n),(yd(s).records[r]||(yd(s).records[r]={})).handler=t}}function ar(r,n,t){r.handler("leave",null,t)}function Wi(r,n,t,s){n.handler(r,t,s)}function BC(r,n){if(!ln.node){var t=n.getZr();(yd(t).records||{})[r]&&(yd(t).records[r]=null)}}var s$=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){var c=s.getComponent("tooltip"),u=t.get("triggerOn")||c&&c.get("triggerOn")||"mousemove|click";ib("axisPointer",l,function(f,p,m){"none"!==u&&("leave"===f||u.indexOf(f)>=0)&&m({type:"updateAxisPointer",currTrigger:f,x:p&&p.offsetX,y:p&&p.offsetY})})},n.prototype.remove=function(t,s){BC("axisPointer",s)},n.prototype.dispose=function(t,s){BC("axisPointer",s)},n.type="axisPointer",n}(di);const hV=s$;function l$(r,n){var l,t=[],s=r.seriesIndex;if(null==s||!(l=n.getSeriesByIndex(s)))return{point:[]};var c=l.getData(),u=Mc(c,r);if(null==u||u<0||ye(u))return{point:[]};var f=c.getItemGraphicEl(u),p=l.coordinateSystem;if(l.getTooltipPosition)t=l.getTooltipPosition(u)||[];else if(p&&p.dataToPoint)if(r.isStacked){var m=p.getBaseAxis(),v=p.getOtherAxis(m).dim,b="x"===v||"radius"===v?1:0,x=c.mapDimension(m.dim),C=[];C[b]=c.get(x,u),C[1-b]=c.get(c.getCalculationInfo("stackResultDimension"),u),t=p.dataToPoint(C)||[]}else t=p.dataToPoint(c.getValues(xe(p.dimensions,function(M){return c.mapDimension(M)}),u))||[];else if(f){var S=f.getBoundingRect().clone();S.applyTransform(f.transform),t=[S.x+S.width/2,S.y+S.height/2]}return{point:t,el:f}}var fV=un();function c$(r,n,t){var s=r.currTrigger,l=[r.x,r.y],c=r,u=r.dispatchAction||Ne(t.dispatchAction,t),f=n.getComponent("axisPointer").coordSysAxesInfo;if(f){eE(l)&&(l=l$({seriesIndex:c.seriesIndex,dataIndex:c.dataIndex},n).point);var p=eE(l),m=c.axesInfo,g=f.axesInfo,v="leave"===s||eE(l),y={},b={},x={list:[],map:{}},C={showPointer:$e(mV,b),showTooltip:$e(gV,x)};U(f.coordSysMap,function(M,T){var A=p||M.containPoint(l);U(f.coordSysAxesInfo[T],function(E,L){var R=E.axis,V=function PQ(r,n){for(var t=0;t<(r||[]).length;t++){var s=r[t];if(n.axis.dim===s.axisDim&&n.axis.model.componentIndex===s.axisIndex)return s}}(m,E);if(!v&&A&&(!m||V)){var H=V&&V.value;null==H&&!p&&(H=R.pointToData(l)),null!=H&&pV(E,H,C,!1,y)}})});var S={};return U(g,function(M,T){var A=M.linkGroup;A&&!b[T]&&U(A.axesInfo,function(E,L){var R=b[L];if(E!==M&&R){var V=R.value;A.mapper&&(V=M.axis.scale.parse(A.mapper(V,u$(E),u$(M)))),S[M.key]=V}})}),U(S,function(M,T){pV(g[T],M,C,!0,y)}),function vV(r,n,t){var s=t.axesInfo=[];U(n,function(l,c){var u=l.axisPointerModel.option,f=r[c];f?(!l.useHandle&&(u.status="show"),u.value=f.value,u.seriesDataIndices=(f.payloadBatch||[]).slice()):!l.useHandle&&(u.status="hide"),"show"===u.status&&s.push({axisDim:l.axis.dim,axisIndex:l.axis.model.componentIndex,value:u.value})})}(b,g,y),function _V(r,n,t,s){if(!eE(n)&&r.list.length){var l=((r.list[0].dataByAxis[0]||{}).seriesDataIndices||[])[0]||{};s({type:"showTip",escapeConnect:!0,x:n[0],y:n[1],tooltipOption:t.tooltipOption,position:t.position,dataIndexInside:l.dataIndexInside,dataIndex:l.dataIndex,seriesIndex:l.seriesIndex,dataByCoordSys:r.list})}else s({type:"hideTip"})}(x,l,r,u),function IQ(r,n,t){var s=t.getZr(),l="axisPointerLastHighlights",c=fV(s)[l]||{},u=fV(s)[l]={};U(r,function(m,g){var v=m.axisPointerModel.option;"show"===v.status&&U(v.seriesDataIndices,function(y){u[y.seriesIndex+" | "+y.dataIndex]=y})});var f=[],p=[];U(c,function(m,g){!u[g]&&p.push(m)}),U(u,function(m,g){!c[g]&&f.push(m)}),p.length&&t.dispatchAction({type:"downplay",escapeConnect:!0,notBlur:!0,batch:p}),f.length&&t.dispatchAction({type:"highlight",escapeConnect:!0,notBlur:!0,batch:f})}(g,0,t),y}}function pV(r,n,t,s,l){var c=r.axis;if(!c.scale.isBlank()&&c.containData(n)){if(!r.involveSeries)return void t.showPointer(r,n);var u=function d$(r,n){var t=n.axis,s=t.dim,l=r,c=[],u=Number.MAX_VALUE,f=-1;return U(n.seriesModels,function(p,m){var v,y,g=p.getData().mapDimensionsAll(s);if(p.getAxisTooltipData){var b=p.getAxisTooltipData(g,r,t);y=b.dataIndices,v=b.nestestValue}else{if(!(y=p.getData().indicesOfNearest(g[0],r,"category"===t.type?.5:null)).length)return;v=p.getData().get(g[0],y[0])}if(null!=v&&isFinite(v)){var x=r-v,C=Math.abs(x);C<=u&&((C=0&&f<0)&&(u=C,f=x,l=v,c.length=0),U(y,function(S){c.push({seriesIndex:p.seriesIndex,dataIndexInside:S,dataIndex:p.getData().getRawIndex(S)})}))}}),{payloadBatch:c,snapToValue:l}}(n,r),f=u.payloadBatch,p=u.snapToValue;f[0]&&null==l.seriesIndex&&ge(l,f[0]),!s&&r.snap&&c.containData(p)&&null!=p&&(n=p),t.showPointer(r,n,f),t.showTooltip(r,u,p)}}function mV(r,n,t,s){r[n.key]={value:t,payloadBatch:s}}function gV(r,n,t,s){var l=t.payloadBatch,c=n.axis,u=c.model,f=n.axisPointerModel;if(n.triggerTooltip&&l.length){var p=n.coordSys.model,m=wi(p),g=r.map[m];g||(g=r.map[m]={coordSysId:p.id,coordSysIndex:p.componentIndex,coordSysType:p.type,coordSysMainType:p.mainType,dataByAxis:[]},r.list.push(g)),g.dataByAxis.push({axisDim:c.dim,axisIndex:u.componentIndex,axisType:u.type,axisId:u.id,value:s,valueLabelOpt:{precision:f.get(["label","precision"]),formatter:f.get(["label","formatter"])},seriesDataIndices:l.slice()})}}function u$(r){var n=r.axis.model,t={},s=t.axisDim=r.axis.dim;return t.axisIndex=t[s+"AxisIndex"]=n.componentIndex,t.axisName=t[s+"AxisName"]=n.name,t.axisId=t[s+"AxisId"]=n.id,t}function eE(r){return!r||null==r[0]||isNaN(r[0])||null==r[1]||isNaN(r[1])}function fg(r){bf.registerAxisPointerClass("CartesianAxisPointer",i$),r.registerComponentModel(EQ),r.registerComponentView(hV),r.registerPreprocessor(function(n){if(n){(!n.axisPointer||0===n.axisPointer.length)&&(n.axisPointer={});var t=n.axisPointer.link;t&&!ye(t)&&(n.axisPointer.link=[t])}}),r.registerProcessor(r.PRIORITY.PROCESSOR.STATISTIC,function(n,t){n.getComponent("axisPointer").coordSysAxesInfo=function l6(r,n){var t={axesInfo:{},seriesInvolved:!1,coordSysAxesInfo:{},coordSysMap:{}};return function lF(r,n,t){var s=n.getComponent("tooltip"),l=n.getComponent("axisPointer"),c=l.get("link",!0)||[],u=[];U(t.getCoordinateSystems(),function(f){if(f.axisPointerEnabled){var p=wi(f.model),m=r.coordSysAxesInfo[p]={};r.coordSysMap[p]=f;var v=f.model.getModel("tooltip",s);if(U(f.getAxes(),$e(C,!1,null)),f.getTooltipAxes&&s&&v.get("show")){var y="axis"===v.get("trigger"),b="cross"===v.get(["axisPointer","type"]),x=f.getTooltipAxes(v.get(["axisPointer","axis"]));(y||b)&&U(x.baseAxes,$e(C,!b||"cross",y)),b&&U(x.otherAxes,$e(C,"cross",!1))}}function C(S,M,T){var A=T.model.getModel("axisPointer",l),E=A.get("show");if(E&&("auto"!==E||S||Tn(A))){null==M&&(M=A.get("triggerTooltip")),A=S?function c6(r,n,t,s,l,c){var u=n.getModel("axisPointer"),p={};U(["type","snap","lineStyle","shadowStyle","label","animation","animationDurationUpdate","animationEasingUpdate","z"],function(y){p[y]=rt(u.get(y))}),p.snap="category"!==r.type&&!!c,"cross"===u.get("type")&&(p.type="line");var m=p.label||(p.label={});if(null==m.show&&(m.show=!1),"cross"===l){var g=u.get(["label","show"]);if(m.show=g??!0,!c){var v=p.lineStyle=u.get("crossStyle");v&&Je(m,v.textStyle)}}return r.model.getModel("axisPointer",new In(p,t,s))}(T,v,l,n,S,M):A;var L=A.get("snap"),R=wi(T.model),V=M||L||"category"===T.type,H=r.axesInfo[R]={key:R,axis:T,coordSys:f,axisPointerModel:A,triggerTooltip:M,involveSeries:V,snap:L,useHandle:Tn(A),seriesModels:[],linkGroup:null};m[R]=H,r.seriesInvolved=r.seriesInvolved||V;var G=function Bm(r,n){for(var t=n.model,s=n.dim,l=0;lS?"left":"right",v=Math.abs(m[1]-M)/C<.3?"middle":m[1]>M?"top":"bottom"}return{position:m,align:g,verticalAlign:v}}(s,l,0,p,c.get(["label","margin"]));Zk(t,l,c,u,S)},n}(nb),bd={line:function(r,n,t,s){return"angle"===r.dim?{type:"Line",shape:NC(n.coordToPoint([s[0],t]),n.coordToPoint([s[1],t]))}:{type:"Circle",shape:{cx:n.cx,cy:n.cy,r:t}}},shadow:function(r,n,t,s){var l=Math.max(1,r.getBandWidth()),c=Math.PI/180;return"angle"===r.dim?{type:"Sector",shape:Si(n.cx,n.cy,s[0],s[1],(-t-l/2)*c,(l/2-t)*c)}:{type:"Sector",shape:Si(n.cx,n.cy,t-l/2,t+l/2,0,2*Math.PI)}}};const h$=RQ;var Ka=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.findAxisModel=function(t){var s;return this.ecModel.eachComponent(t,function(c){c.getCoordSysModel()===this&&(s=c)},this),s},n.type="polar",n.dependencies=["radiusAxis","angleAxis"],n.defaultOption={z:0,center:["50%","50%"],radius:"80%"},n}(qt);const yV=Ka;var tE=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.getCoordSysModel=function(){return this.getReferringComponents("polar",br).models[0]},n.type="polarAxis",n}(qt);Mi(tE,Em);var bV=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="angleAxis",n}(tE),wV=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="radiusAxis",n}(tE),po=function(r){function n(t,s){return r.call(this,"radius",t,s)||this}return se(n,r),n.prototype.pointToData=function(t,s){return this.polar.pointToData(t,s)["radius"===this.dim?0:1]},n}(Fo);po.prototype.dataToRadius=Fo.prototype.dataToCoord,po.prototype.radiusToData=Fo.prototype.coordToData;const f$=po;var p$=un(),rb=function(r){function n(t,s){return r.call(this,"angle",t,s||[0,360])||this}return se(n,r),n.prototype.pointToData=function(t,s){return this.polar.pointToData(t,s)["radius"===this.dim?0:1]},n.prototype.calculateCategoryInterval=function(){var t=this,s=t.getLabelModel(),l=t.scale,c=l.getExtent(),u=l.count();if(c[1]-c[0]<1)return 0;var f=c[0],p=t.dataToCoord(f+1)-t.dataToCoord(f),m=Math.abs(p),g=uv(null==f?"":f+"",s.getFont(),"center","top"),y=Math.max(g.height,7)/m;isNaN(y)&&(y=1/0);var b=Math.max(0,Math.floor(y)),x=p$(t.model),C=x.lastAutoInterval,S=x.lastTickCount;return null!=C&&null!=S&&Math.abs(C-b)<=1&&Math.abs(S-u)<=1&&C>b?b=C:(x.lastTickCount=u,x.lastAutoInterval=b),b},n}(Fo);rb.prototype.dataToAngle=Fo.prototype.dataToCoord,rb.prototype.angleToData=Fo.prototype.coordToData;const m$=rb;var wd=["radius","angle"],dl=function(){function r(n){this.dimensions=wd,this.type="polar",this.cx=0,this.cy=0,this._radiusAxis=new f$,this._angleAxis=new m$,this.axisPointerEnabled=!0,this.name=n||"",this._radiusAxis.polar=this._angleAxis.polar=this}return r.prototype.containPoint=function(n){var t=this.pointToCoord(n);return this._radiusAxis.contain(t[0])&&this._angleAxis.contain(t[1])},r.prototype.containData=function(n){return this._radiusAxis.containData(n[0])&&this._angleAxis.containData(n[1])},r.prototype.getAxis=function(n){return this["_"+n+"Axis"]},r.prototype.getAxes=function(){return[this._radiusAxis,this._angleAxis]},r.prototype.getAxesByScale=function(n){var t=[],s=this._angleAxis,l=this._radiusAxis;return s.scale.type===n&&t.push(s),l.scale.type===n&&t.push(l),t},r.prototype.getAngleAxis=function(){return this._angleAxis},r.prototype.getRadiusAxis=function(){return this._radiusAxis},r.prototype.getOtherAxis=function(n){var t=this._angleAxis;return n===t?this._radiusAxis:t},r.prototype.getBaseAxis=function(){return this.getAxesByScale("ordinal")[0]||this.getAxesByScale("time")[0]||this.getAngleAxis()},r.prototype.getTooltipAxes=function(n){var t=null!=n&&"auto"!==n?this.getAxis(n):this.getBaseAxis();return{baseAxes:[t],otherAxes:[this.getOtherAxis(t)]}},r.prototype.dataToPoint=function(n,t){return this.coordToPoint([this._radiusAxis.dataToRadius(n[0],t),this._angleAxis.dataToAngle(n[1],t)])},r.prototype.pointToData=function(n,t){var s=this.pointToCoord(n);return[this._radiusAxis.radiusToData(s[0],t),this._angleAxis.angleToData(s[1],t)]},r.prototype.pointToCoord=function(n){var t=n[0]-this.cx,s=n[1]-this.cy,l=this.getAngleAxis(),c=l.getExtent(),u=Math.min(c[0],c[1]),f=Math.max(c[0],c[1]);l.inverse?u=f-360:f=u+360;var p=Math.sqrt(t*t+s*s);t/=p,s/=p;for(var m=Math.atan2(-s,t)/Math.PI*180,g=mf;)m+=360*g;return[p,m]},r.prototype.coordToPoint=function(n){var t=n[0],s=n[1]/180*Math.PI;return[Math.cos(s)*t+this.cx,-Math.sin(s)*t+this.cy]},r.prototype.getArea=function(){var n=this.getAngleAxis(),s=this.getRadiusAxis().getExtent().slice();s[0]>s[1]&&s.reverse();var l=n.getExtent(),c=Math.PI/180;return{cx:this.cx,cy:this.cy,r0:s[0],r:s[1],startAngle:-l[0]*c,endAngle:-l[1]*c,clockwise:n.inverse,contain:function(u,f){var p=u-this.cx,m=f-this.cy,g=p*p+m*m-1e-4,v=this.r,y=this.r0;return g<=v*v&&g>=y*y}}},r.prototype.convertToPixel=function(n,t,s){return nE(t)===this?this.dataToPoint(s):null},r.prototype.convertFromPixel=function(n,t,s){return nE(t)===this?this.pointToData(s):null},r}();function nE(r){var n=r.seriesModel,t=r.polarModel;return t&&t.coordinateSystem||n&&n.coordinateSystem}const iE=dl;function g$(r,n){var t=this,s=t.getAngleAxis(),l=t.getRadiusAxis();if(s.scale.setExtent(1/0,-1/0),l.scale.setExtent(1/0,-1/0),r.eachSeries(function(f){if(f.coordinateSystem===t){var p=f.getData();U(ax(p,"radius"),function(m){l.scale.unionExtentFromData(p,m)}),U(ax(p,"angle"),function(m){s.scale.unionExtentFromData(p,m)})}}),ff(s.scale,s.model),ff(l.scale,l.model),"category"===s.type&&!s.onBand){var c=s.getExtent(),u=360/s.scale.count();s.inverse?c[1]+=u:c[1]-=u,s.setExtent(c[0],c[1])}}function v$(r,n){if(r.type=n.get("type"),r.scale=Ui(n),r.onBand=n.get("boundaryGap")&&"category"===r.type,r.inverse=n.get("inverse"),function aE(r){return"angleAxis"===r.mainType}(n)){r.inverse=r.inverse!==n.get("clockwise");var t=n.get("startAngle");r.setExtent(t,t+(r.inverse?-360:360))}n.axis=r,r.model=n}var LQ={dimensions:wd,create:function(r,n){var t=[];return r.eachComponent("polar",function(s,l){var c=new iE(l+"");c.update=g$;var u=c.getRadiusAxis(),f=c.getAngleAxis(),p=s.findAxisModel("radiusAxis"),m=s.findAxisModel("angleAxis");v$(u,p),v$(f,m),function rE(r,n,t){var s=n.get("center"),l=t.getWidth(),c=t.getHeight();r.cx=Re(s[0],l),r.cy=Re(s[1],c);var u=r.getRadiusAxis(),f=Math.min(l,c)/2,p=n.get("radius");null==p?p=[0,"100%"]:ye(p)||(p=[0,p]);var m=[Re(p[0],f),Re(p[1],f)];u.inverse?u.setExtent(m[1],m[0]):u.setExtent(m[0],m[1])}(c,s,n),t.push(c),s.coordinateSystem=c,c.model=s}),r.eachSeries(function(s){if("polar"===s.get("coordinateSystem")){var l=s.getReferringComponents("polar",br).models[0];s.coordinateSystem=l.coordinateSystem}}),t}};const FQ=LQ;var xV=["axisLine","axisLabel","axisTick","minorTick","splitLine","minorSplitLine","splitArea"];function VC(r,n,t){n[1]>n[0]&&(n=n.slice().reverse());var s=r.coordToPoint([n[0],t]),l=r.coordToPoint([n[1],t]);return{x1:s[0],y1:s[1],x2:l[0],y2:l[1]}}function zC(r){return r.getRadiusAxis().inverse?0:1}function _$(r){var n=r[0],t=r[r.length-1];n&&t&&Math.abs(Math.abs(n.coord-t.coord)-360)<1e-4&&r.pop()}var NQ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.axisPointerClass="PolarAxisPointer",t}return se(n,r),n.prototype.render=function(t,s){if(this.group.removeAll(),t.get("show")){var l=t.axis,c=l.polar,u=c.getRadiusAxis().getExtent(),f=l.getTicksCoords(),p=l.getMinorTicksCoords(),m=xe(l.getViewLabels(),function(g){g=rt(g);var v=l.scale,y="ordinal"===v.type?v.getRawOrdinalNumber(g.tickValue):g.tickValue;return g.coord=l.dataToCoord(y),g});_$(m),_$(f),U(xV,function(g){t.get([g,"show"])&&(!l.scale.isBlank()||"axisLine"===g)&&y$[g](this.group,t,c,f,p,u,m)},this)}},n.type="angleAxis",n}(bf),y$={axisLine:function(r,n,t,s,l,c){var m,u=n.getModel(["axisLine","lineStyle"]),f=zC(t),p=f?0:1;(m=0===c[p]?new Wl({shape:{cx:t.cx,cy:t.cy,r:c[f]},style:u.getLineStyle(),z2:1,silent:!0}):new d_({shape:{cx:t.cx,cy:t.cy,r:c[f],r0:c[p]},style:u.getLineStyle(),z2:1,silent:!0})).style.fill=null,r.add(m)},axisTick:function(r,n,t,s,l,c){var u=n.getModel("axisTick"),f=(u.get("inside")?-1:1)*u.get("length"),p=c[zC(t)],m=xe(s,function(g){return new wr({shape:VC(t,[p,p+f],g.coord)})});r.add(Ro(m,{style:Je(u.getModel("lineStyle").getLineStyle(),{stroke:n.get(["axisLine","lineStyle","color"])})}))},minorTick:function(r,n,t,s,l,c){if(l.length){for(var u=n.getModel("axisTick"),f=n.getModel("minorTick"),p=(u.get("inside")?-1:1)*f.get("length"),m=c[zC(t)],g=[],v=0;vM?"left":"right",E=Math.abs(S[1]-T)/C<.3?"middle":S[1]>T?"top":"bottom";if(f&&f[x]){var L=f[x];tt(L)&&L.textStyle&&(b=new In(L.textStyle,p,p.ecModel))}var R=new an({silent:Za.isLabelSilent(n),style:Xn(b,{x:S[0],y:S[1],fill:b.getTextColor()||n.get(["axisLine","lineStyle","color"]),text:v.formattedLabel,align:A,verticalAlign:E})});if(r.add(R),g){var V=Za.makeAxisEventDataBase(n);V.targetType="axisLabel",V.value=v.rawLabel,mt(R).eventData=V}},this)},splitLine:function(r,n,t,s,l,c){var f=n.getModel("splitLine").getModel("lineStyle"),p=f.get("color"),m=0;p=p instanceof Array?p:[p];for(var g=[],v=0;v=0?"p":"n",K=V;L&&(s[g][$]||(s[g][$]={p:V,n:V}),K=s[g][$][q]);var ee=void 0,ne=void 0,re=void 0,ue=void 0;if("radius"===x.dim){var ce=x.dataToCoord(j)-V,ve=p.dataToCoord($);Math.abs(ce)=ue})}}})};var GQ={startAngle:90,clockwise:!0,splitNumber:12,axisLabel:{rotate:0}},UQ={splitNumber:5},jQ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="polar",n}(di);function GC(r,n){n=n||{};var s=r.axis,l={},c=s.position,u=s.orient,f=r.coordinateSystem.getRect(),p=[f.x,f.x+f.width,f.y,f.y+f.height],m={horizontal:{top:p[2],bottom:p[3]},vertical:{left:p[0],right:p[1]}};l.position=["vertical"===u?m.vertical[c]:p[0],"horizontal"===u?m.horizontal[c]:p[3]],l.rotation=Math.PI/2*{horizontal:0,vertical:1}[u],l.labelDirection=l.tickDirection=l.nameDirection={top:-1,bottom:1,right:1,left:-1}[c],r.get(["axisTick","inside"])&&(l.tickDirection=-l.tickDirection),Tr(n.labelInside,r.get(["axisLabel","inside"]))&&(l.labelDirection=-l.labelDirection);var y=n.rotate;return null==y&&(y=r.get(["axisLabel","rotate"])),l.labelRotation="top"===c?-y:y,l.z2=1,l}var ab=["axisLine","axisTickLabel","axisName"],Pn=["splitArea","splitLine"],DV=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.axisPointerClass="SingleAxisPointer",t}return se(n,r),n.prototype.render=function(t,s,l,c){var u=this.group;u.removeAll();var f=this._axisGroup;this._axisGroup=new lt;var p=GC(t),m=new Za(t,p);U(ab,m.add,m),u.add(this._axisGroup),u.add(m.getGroup()),U(Pn,function(g){t.get([g,"show"])&&C$[g](this,this.group,this._axisGroup,t)},this),g_(f,this._axisGroup,t),r.prototype.render.call(this,t,s,l,c)},n.prototype.remove=function(){Oa(this)},n.type="singleAxis",n}(bf),C$={splitLine:function(r,n,t,s){var l=s.axis;if(!l.scale.isBlank()){var c=s.getModel("splitLine"),u=c.getModel("lineStyle"),f=u.get("color");f=f instanceof Array?f:[f];for(var p=u.get("width"),m=s.coordinateSystem.getRect(),g=l.isHorizontal(),v=[],y=0,b=l.getTicksCoords({tickModel:c}),x=[],C=[],S=0;S=t.y&&n[1]<=t.y+t.height:s.contain(s.toLocalCoord(n[1]))&&n[0]>=t.y&&n[0]<=t.y+t.height},r.prototype.pointToData=function(n){var t=this.getAxis();return[t.coordToData(t.toLocalCoord(n["horizontal"===t.orient?0:1]))]},r.prototype.dataToPoint=function(n){var t=this.getAxis(),s=this.getRect(),l=[],c="horizontal"===t.orient?0:1;return n instanceof Array&&(n=n[0]),l[c]=t.toGlobalCoord(t.dataToCoord(+n)),l[1-c]=0===c?s.y+s.height/2:s.x+s.width/2,l},r.prototype.convertToPixel=function(n,t,s){return lE(t)===this?this.dataToPoint(s):null},r.prototype.convertFromPixel=function(n,t,s){return lE(t)===this?this.pointToData(s):null},r}();function lE(r){var n=r.seriesModel,t=r.singleAxisModel;return t&&t.coordinateSystem||n&&n.coordinateSystem}const $f=AV;var D$={create:function pa(r,n){var t=[];return r.eachComponent("singleAxis",function(s,l){var c=new $f(s,r,n);c.name="single_"+l,c.resize(s,n),s.coordinateSystem=c,t.push(c)}),r.eachSeries(function(s){if("singleAxis"===s.get("coordinateSystem")){var l=s.getReferringComponents("singleAxis",br).models[0];s.coordinateSystem=l&&l.coordinateSystem}}),t},dimensions:sE};const kV=D$;var EV=["x","y"],M$=["width","height"],T$=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.makeElOption=function(t,s,l,c,u){var f=l.axis,p=f.coordinateSystem,m=cc(p,1-UC(f)),g=p.dataToPoint(s)[0],v=c.get("type");if(v&&"none"!==v){var y=FC(c),b=sr[v](f,g,m);b.style=y,t.graphicKey=b.type,t.pointer=b}Qk(s,t,GC(l),l,c,u)},n.prototype.getHandleTransform=function(t,s,l){var c=GC(s,{labelInside:!1});c.labelMargin=l.get(["handle","margin"]);var u=Kk(s.axis,t,c);return{x:u[0],y:u[1],rotation:c.rotation+(c.labelDirection<0?Math.PI:0)}},n.prototype.updateHandleTransform=function(t,s,l,c){var u=l.axis,f=u.coordinateSystem,p=UC(u),m=cc(f,p),g=[t.x,t.y];g[p]+=s[p],g[p]=Math.min(m[1],g[p]),g[p]=Math.max(m[0],g[p]);var v=cc(f,1-p),y=(v[1]+v[0])/2,b=[y,y];return b[p]=g[p],{x:g[0],y:g[1],rotation:t.rotation,cursorPoint:b,tooltipOption:{verticalAlign:"middle"}}},n}(nb),sr={line:function(r,n,t){return{type:"Line",subPixelOptimize:!0,shape:NC([n,t[0]],[n,t[1]],UC(r))}},shadow:function(r,n,t){var s=r.getBandWidth();return{type:"Rect",shape:dV([n-s/2,t[0]],[s,t[1]-t[0]],UC(r))}}};function UC(r){return r.isHorizontal()?0:1}function cc(r,n){var t=r.getRect();return[t[EV[n]],t[EV[n]]+t[M$[n]]]}const IV=T$;var Vr=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="single",n}(di),A$=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.init=function(t,s,l){var c=Kp(t);r.prototype.init.apply(this,arguments),ob(t,c)},n.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),ob(this.option,t)},n.prototype.getCellSize=function(){return this.option.cellSize},n.type="calendar",n.defaultOption={z:2,left:80,top:60,cellSize:20,orient:"horizontal",splitLine:{show:!0,lineStyle:{color:"#000",width:1,type:"solid"}},itemStyle:{color:"#fff",borderWidth:1,borderColor:"#ccc"},dayLabel:{show:!0,firstDay:0,position:"start",margin:"50%",color:"#000"},monthLabel:{show:!0,position:"start",margin:5,align:"center",formatter:null,color:"#000"},yearLabel:{show:!0,position:null,margin:30,formatter:null,color:"#ccc",fontFamily:"sans-serif",fontWeight:"bolder",fontSize:20}},n}(qt);function ob(r,n){var s,t=r.cellSize;1===(s=ye(t)?t:r.cellSize=[t,t]).length&&(s[1]=s[0]);var l=xe([0,1],function(c){return function Nl(r,n){return null!=r[Vh[n][0]]||null!=r[Vh[n][1]]&&null!=r[Vh[n][2]]}(n,c)&&(s[c]="auto"),null!=s[c]&&"auto"!==s[c]});Jd(r,n,{type:"box",ignoreSize:l})}const PV=A$;var RV=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){var c=this.group;c.removeAll();var u=t.coordinateSystem,f=u.getRangeInfo(),p=u.getOrient(),m=s.getLocaleModel();this._renderDayRect(t,f,c),this._renderLines(t,f,p,c),this._renderYearText(t,f,p,c),this._renderMonthText(t,m,p,c),this._renderWeekText(t,m,f,p,c)},n.prototype._renderDayRect=function(t,s,l){for(var c=t.coordinateSystem,u=t.getModel("itemStyle").getItemStyle(),f=c.getCellWidth(),p=c.getCellHeight(),m=s.start.time;m<=s.end.time;m=c.getNextNDay(m,1).time){var g=c.dataToRect([m],!1).tl,v=new Zt({shape:{x:g[0],y:g[1],width:f,height:p},cursor:"default",style:u});l.add(v)}},n.prototype._renderLines=function(t,s,l,c){var u=this,f=t.coordinateSystem,p=t.getModel(["splitLine","lineStyle"]).getLineStyle(),m=t.get(["splitLine","show"]),g=p.lineWidth;this._tlpoints=[],this._blpoints=[],this._firstDayOfMonth=[],this._firstDayPoints=[];for(var v=s.start,y=0;v.time<=s.end.time;y++){x(v.formatedDate),0===y&&(v=f.getDateInfo(s.start.y+"-"+s.start.m));var b=v.date;b.setMonth(b.getMonth()+1),v=f.getDateInfo(b)}function x(C){u._firstDayOfMonth.push(f.getDateInfo(C)),u._firstDayPoints.push(f.dataToRect([C],!1).tl);var S=u._getLinePointsOfOneWeek(t,C,l);u._tlpoints.push(S[0]),u._blpoints.push(S[S.length-1]),m&&u._drawSplitline(S,p,c)}x(f.getNextNDay(s.end.time,1).formatedDate),m&&this._drawSplitline(u._getEdgesPoints(u._tlpoints,g,l),p,c),m&&this._drawSplitline(u._getEdgesPoints(u._blpoints,g,l),p,c)},n.prototype._getEdgesPoints=function(t,s,l){var c=[t[0].slice(),t[t.length-1].slice()],u="horizontal"===l?0:1;return c[0][u]=c[0][u]-s/2,c[1][u]=c[1][u]+s/2,c},n.prototype._drawSplitline=function(t,s,l){var c=new ho({z2:20,shape:{points:t},style:s});l.add(c)},n.prototype._getLinePointsOfOneWeek=function(t,s,l){for(var c=t.coordinateSystem,u=c.getDateInfo(s),f=[],p=0;p<7;p++){var m=c.getNextNDay(u.time,p),g=c.dataToRect([m.time],!1);f[2*m.day]=g.tl,f[2*m.day+1]=g["horizontal"===l?"bl":"tr"]}return f},n.prototype._formatterLabel=function(t,s){return Le(t)&&t?function AH(r,n,t){return U(n,function(s,l){r=r.replace("{"+l+"}",t?ae(s):s)}),r}(t,s):qe(t)?t(s):s.nameMap},n.prototype._yearTextPositionControl=function(t,s,l,c,u){var f=s[0],p=s[1],m=["center","bottom"];"bottom"===c?(p+=u,m=["center","top"]):"left"===c?f-=u:"right"===c?(f+=u,m=["center","top"]):p-=u;var g=0;return("left"===c||"right"===c)&&(g=Math.PI/2),{rotation:g,x:f,y:p,style:{align:m[0],verticalAlign:m[1]}}},n.prototype._renderYearText=function(t,s,l,c){var u=t.getModel("yearLabel");if(u.get("show")){var f=u.get("margin"),p=u.get("position");p||(p="horizontal"!==l?"top":"left");var m=[this._tlpoints[this._tlpoints.length-1],this._blpoints[0]],g=(m[0][0]+m[1][0])/2,v=(m[0][1]+m[1][1])/2,y="horizontal"===l?0:1,b={top:[g,m[y][1]],bottom:[g,m[1-y][1]],left:[m[1-y][0],v],right:[m[y][0],v]},x=s.start.y;+s.end.y>+s.start.y&&(x=x+"-"+s.end.y);var C=u.get("formatter"),M=this._formatterLabel(C,{start:s.start.y,end:s.end.y,nameMap:x}),T=new an({z2:30,style:Xn(u,{text:M})});T.attr(this._yearTextPositionControl(T,b[p],l,p,f)),c.add(T)}},n.prototype._monthTextPositionControl=function(t,s,l,c,u){var f="left",p="top",m=t[0],g=t[1];return"horizontal"===l?(g+=u,s&&(f="center"),"start"===c&&(p="bottom")):(m+=u,s&&(p="middle"),"start"===c&&(f="right")),{x:m,y:g,align:f,verticalAlign:p}},n.prototype._renderMonthText=function(t,s,l,c){var u=t.getModel("monthLabel");if(u.get("show")){var f=u.get("nameMap"),p=u.get("margin"),m=u.get("position"),g=u.get("align"),v=[this._tlpoints,this._blpoints];(!f||Le(f))&&(f&&(s=uD(f)||s),f=s.get(["time","monthAbbr"])||[]);var y="start"===m?0:1,b="horizontal"===l?0:1;p="start"===m?-p:p;for(var x="center"===g,C=0;C=l.start.time&&s.timef.end.time&&t.reverse(),t},r.prototype._getRangeInfo=function(n){var s,t=[this.getDateInfo(n[0]),this.getDateInfo(n[1])];t[0].time>t[1].time&&(s=!0,t.reverse());var l=Math.floor(t[1].time/jC)-Math.floor(t[0].time/jC)+1,c=new Date(t[0].time),u=c.getDate(),f=t[1].date.getDate();c.setDate(u+l-1);var p=c.getDate();if(p!==f)for(var m=c.getTime()-t[1].time>0?1:-1;(p=c.getDate())!==f&&(c.getTime()-t[1].time)*m>0;)l-=m,c.setDate(p-m);var g=Math.floor((l+t[0].day+6)/7),v=s?1-g:g-1;return s&&t.reverse(),{range:[t[0].formatedDate,t[1].formatedDate],start:t[0],end:t[1],allDay:l,weeks:g,nthWeek:v,fweek:t[0].day,lweek:t[1].day}},r.prototype._getDateByWeeksAndDay=function(n,t,s){var l=this._getRangeInfo(s);if(n>l.weeks||0===n&&tl.lweek)return null;var c=7*(n-1)-l.fweek+t,u=new Date(l.start.time);return u.setDate(+l.start.d+c),this.getDateInfo(u)},r.create=function(n,t){var s=[];return n.eachComponent("calendar",function(l){var c=new r(l,n,t);s.push(c),l.coordinateSystem=c}),n.eachSeries(function(l){"calendar"===l.get("coordinateSystem")&&(l.coordinateSystem=s[l.get("calendarIndex")||0])}),s},r.dimensions=["time","value"],r}();function cE(r){var n=r.calendarModel,t=r.seriesModel;return n?n.coordinateSystem:t?t.coordinateSystem:null}const FV=LV;function dE(r,n){var t;return U(n,function(s){null!=r[s]&&"auto"!==r[s]&&(t=!0)}),t}var uE=["transition","enterFrom","leaveTo"],VV=uE.concat(["enterAnimation","updateAnimation","leaveAnimation"]);function WC(r,n,t){if(t&&(!r[t]&&n[t]&&(r[t]={}),r=r[t],n=n[t]),r&&n)for(var s=t?uE:VV,l=0;l=0;g--){var v,y,b;if(b=null!=(y=cr((v=l[g]).id,null))?u.get(y):null){M=Wo(x=b.parent);var x,A={},E=H0(b,v,x===c?{width:f,height:p}:{width:M.width,height:M.height},null,{hv:v.hv,boundingMode:v.bounding},A);if(!Wo(b).isNew&&E){for(var L=v.transition,R={},V=0;V=0)?R[H]=G:b[H]=G}fn(b,R,t,0)}else b.attr(A)}}},n.prototype._clear=function(){var t=this,s=this._elMap;s.each(function(l){sb(l,Wo(l).option,s,t._lastGraphicModel)}),this._elMap=Ye()},n.prototype.dispose=function(){this._clear()},n.type="graphic",n}(di);function qC(r){var t=new(ze(YC,r)?YC[r]:mw(r))({});return Wo(t).type=r,t}function fE(r,n,t,s){var l=qC(t);return n.add(l),s.set(r,l),Wo(l).id=r,Wo(l).isNew=!0,l}function sb(r,n,t,s){r&&r.parent&&("group"===r.type&&r.traverse(function(c){sb(c,n,t,s)}),gd(r,n,s),t.removeKey(Wo(r).id))}function XC(r,n,t,s){r.isGroup||U([["cursor",To.prototype.cursor],["zlevel",s||0],["z",t||0],["z2",0]],function(l){var c=l[0];ze(n,c)?r[c]=Ct(n[c],l[1]):null==r[c]&&(r[c]=l[1])}),U(Ut(n),function(l){if(0===l.indexOf("on")){var c=n[l];r[l]=qe(c)?c:null}}),ze(n,"draggable")&&(r.draggable=n.draggable),null!=n.name&&(r.name=n.name),null!=n.id&&(r.id=n.id)}var pE=["x","y","radius","angle","single"],Qa=["cartesian2d","polar","singleAxis"];function Cd(r){return r+"Axis"}function KC(r){var n=r.ecModel,t={infoList:[],infoMap:Ye()};return r.eachTargetAxis(function(s,l){var c=n.getComponent(Cd(s),l);if(c){var u=c.getCoordSysModel();if(u){var f=u.uid,p=t.infoMap.get(f);p||(t.infoList.push(p={model:u,axisModels:[]}),t.infoMap.set(f,p)),p.axisModels.push(c)}}}),t}var lb=function(){function r(){this.indexList=[],this.indexMap=[]}return r.prototype.add=function(n){this.indexMap[n]||(this.indexList.push(n),this.indexMap[n]=!0)},r}(),QC=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._autoThrottle=!0,t._noTarget=!0,t._rangePropMode=["percent","percent"],t}return se(n,r),n.prototype.init=function(t,s,l){var c=jV(t);this.settledOption=c,this.mergeDefaultAndTheme(t,l),this._doInit(c)},n.prototype.mergeOption=function(t){var s=jV(t);At(this.option,t,!0),At(this.settledOption,s,!0),this._doInit(s)},n.prototype._doInit=function(t){var s=this.option;this._setDefaultThrottle(t),this._updateRangeUse(t);var l=this.settledOption;U([["start","startValue"],["end","endValue"]],function(c,u){"value"===this._rangePropMode[u]&&(s[c[0]]=l[c[0]]=null)},this),this._resetTarget()},n.prototype._resetTarget=function(){var t=this.get("orient",!0),s=this._targetAxisInfoMap=Ye();this._fillSpecifiedTargetAxis(s)?this._orient=t||this._makeAutoOrientByTargetAxis():(this._orient=t||"horizontal",this._fillAutoTargetAxisByOrient(s,this._orient)),this._noTarget=!0,s.each(function(c){c.indexList.length&&(this._noTarget=!1)},this)},n.prototype._fillSpecifiedTargetAxis=function(t){var s=!1;return U(pE,function(l){var c=this.getReferringComponents(Cd(l),A4);if(c.specified){s=!0;var u=new lb;U(c.models,function(f){u.add(f.componentIndex)}),t.set(l,u)}},this),s},n.prototype._fillAutoTargetAxisByOrient=function(t,s){var l=this.ecModel,c=!0;if(c){var u="vertical"===s?"y":"x";p(l.findComponents({mainType:u+"Axis"}),u)}function p(m,g){var v=m[0];if(v){var y=new lb;if(y.add(v.componentIndex),t.set(g,y),c=!1,"x"===g||"y"===g){var b=v.getReferringComponents("grid",br).models[0];b&&U(m,function(x){v.componentIndex!==x.componentIndex&&b===x.getReferringComponents("grid",br).models[0]&&y.add(x.componentIndex)})}}}c&&p(l.findComponents({mainType:"singleAxis",filter:function(g){return g.get("orient",!0)===s}}),"single"),c&&U(pE,function(m){if(c){var g=l.findComponents({mainType:Cd(m),filter:function(y){return"category"===y.get("type",!0)}});if(g[0]){var v=new lb;v.add(g[0].componentIndex),t.set(m,v),c=!1}}},this)},n.prototype._makeAutoOrientByTargetAxis=function(){var t;return this.eachTargetAxis(function(s){!t&&(t=s)},this),"y"===t?"vertical":"horizontal"},n.prototype._setDefaultThrottle=function(t){if(t.hasOwnProperty("throttle")&&(this._autoThrottle=!1),this._autoThrottle){var s=this.ecModel.option;this.option.throttle=s.animation&&s.animationDurationUpdate>0?100:20}},n.prototype._updateRangeUse=function(t){var s=this._rangePropMode,l=this.get("rangeMode");U([["start","startValue"],["end","endValue"]],function(c,u){var f=null!=t[c[0]],p=null!=t[c[1]];f&&!p?s[u]="percent":!f&&p?s[u]="value":l?s[u]=l[u]:f&&(s[u]="percent")})},n.prototype.noTarget=function(){return this._noTarget},n.prototype.getFirstTargetAxisModel=function(){var t;return this.eachTargetAxis(function(s,l){null==t&&(t=this.ecModel.getComponent(Cd(s),l))},this),t},n.prototype.eachTargetAxis=function(t,s){this._targetAxisInfoMap.each(function(l,c){U(l.indexList,function(u){t.call(s,c,u)})})},n.prototype.getAxisProxy=function(t,s){var l=this.getAxisModel(t,s);if(l)return l.__dzAxisProxy},n.prototype.getAxisModel=function(t,s){var l=this._targetAxisInfoMap.get(t);if(l&&l.indexMap[s])return this.ecModel.getComponent(Cd(t),s)},n.prototype.setRawRange=function(t){var s=this.option,l=this.settledOption;U([["start","startValue"],["end","endValue"]],function(c){(null!=t[c[0]]||null!=t[c[1]])&&(s[c[0]]=l[c[0]]=t[c[0]],s[c[1]]=l[c[1]]=t[c[1]])},this),this._updateRangeUse(t)},n.prototype.setCalculatedRange=function(t){var s=this.option;U(["start","startValue","end","endValue"],function(l){s[l]=t[l]})},n.prototype.getPercentRange=function(){var t=this.findRepresentativeAxisProxy();if(t)return t.getDataPercentWindow()},n.prototype.getValueRange=function(t,s){if(null!=t||null!=s)return this.getAxisProxy(t,s).getDataValueWindow();var l=this.findRepresentativeAxisProxy();return l?l.getDataValueWindow():void 0},n.prototype.findRepresentativeAxisProxy=function(t){if(t)return t.__dzAxisProxy;for(var s,l=this._targetAxisInfoMap.keys(),c=0;c=0}(t)){var s=Cd(this._dimName),l=t.getReferringComponents(s,br).models[0];l&&this._axisIndex===l.componentIndex&&n.push(t)}},this),n},r.prototype.getAxisModel=function(){return this.ecModel.getComponent(this._dimName+"Axis",this._axisIndex)},r.prototype.getMinMaxSpan=function(){return rt(this._minMaxSpan)},r.prototype.calculateDataWindow=function(n){var m,t=this._dataExtent,l=this.getAxisModel().axis.scale,c=this._dataZoomModel.getRangePropMode(),u=[0,100],f=[],p=[];cb(["start","end"],function(y,b){var x=n[y],C=n[y+"Value"];"percent"===c[b]?(null==x&&(x=u[b]),C=l.parse(hn(x,u,t))):(m=!0,x=hn(C=null==C?t[b]:l.parse(C),t,u)),p[b]=null==C||isNaN(C)?t[b]:C,f[b]=null==x||isNaN(x)?u[b]:x}),E$(p),E$(f);var g=this._minMaxSpan;function v(y,b,x,C,S){var M=S?"Span":"ValueSpan";ig(0,y,x,"all",g["min"+M],g["max"+M]);for(var T=0;T<2;T++)b[T]=hn(y[T],x,C,!0),S&&(b[T]=l.parse(b[T]))}return m?v(p,f,t,u,!1):v(f,p,u,t,!0),{valueWindow:p,percentWindow:f}},r.prototype.reset=function(n){if(n===this._dataZoomModel){var t=this.getTargetSeriesModels();this._dataExtent=function WV(r,n,t){var s=[1/0,-1/0];cb(t,function(u){!function xr(r,n,t){n&&U(ax(n,t),function(s){var l=n.getApproximateExtent(s);l[0]r[1]&&(r[1]=l[1])})}(s,u.getData(),n)});var l=r.getAxisModel(),c=AO(l.axis.scale,l,s).calculate();return[c.min,c.max]}(this,this._dimName,t),this._updateMinMaxSpan();var s=this.calculateDataWindow(n.settledOption);this._valueWindow=s.valueWindow,this._percentWindow=s.percentWindow,this._setAxisModel()}},r.prototype.filterData=function(n,t){if(n===this._dataZoomModel){var s=this._dimName,l=this.getTargetSeriesModels(),c=n.get("filterMode"),u=this._valueWindow;"none"!==c&&cb(l,function(p){var m=p.getData(),g=m.mapDimensionsAll(s);if(g.length){if("weakFilter"===c){var v=m.getStore(),y=xe(g,function(b){return m.getDimensionIndex(b)},m);m.filterSelf(function(b){for(var x,C,S,M=0;Mu[1];if(A&&!E&&!L)return!0;A&&(S=!0),E&&(x=!0),L&&(C=!0)}return S&&x&&C})}else cb(g,function(b){if("empty"===c)p.setData(m=m.map(b,function(C){return function f(p){return p>=u[0]&&p<=u[1]}(C)?C:NaN}));else{var x={};x[b]=u,m.selectRange(x)}});cb(g,function(b){m.setApproximateExtent(u,b)})}})}},r.prototype._updateMinMaxSpan=function(){var n=this._minMaxSpan={},t=this._dataZoomModel,s=this._dataExtent;cb(["min","max"],function(l){var c=t.get(l+"Span"),u=t.get(l+"ValueSpan");null!=u&&(u=this.getAxisModel().axis.scale.parse(u)),null!=u?c=hn(s[0]+u,s,[0,100],!0):null!=c&&(u=hn(c,[0,100],s,!0)-s[0]),n[l+"Span"]=c,n[l+"ValueSpan"]=u},this)},r.prototype._setAxisModel=function(){var n=this.getAxisModel(),t=this._percentWindow,s=this._valueWindow;if(t){var l=mv(s,[0,500]);l=Math.min(l,20);var c=n.axis.scale.rawExtentInfo;0!==t[0]&&c.setDeterminedMinMax("min",+s[0].toFixed(l)),100!==t[1]&&c.setDeterminedMinMax("max",+s[1].toFixed(l)),c.freeze()}},r}();const P$=I$;var R$={getTargetSeries:function(r){function n(l){r.eachComponent("dataZoom",function(c){c.eachTargetAxis(function(u,f){var p=r.getComponent(Cd(u),f);l(u,f,p,c)})})}n(function(l,c,u,f){u.__dzAxisProxy=null});var t=[];n(function(l,c,u,f){u.__dzAxisProxy||(u.__dzAxisProxy=new P$(l,c,f,r),t.push(u.__dzAxisProxy))});var s=Ye();return U(t,function(l){U(l.getTargetSeriesModels(),function(c){s.set(c.uid,c)})}),s},overallReset:function(r,n){r.eachComponent("dataZoom",function(t){t.eachTargetAxis(function(s,l){t.getAxisProxy(s,l).reset(t)}),t.eachTargetAxis(function(s,l){t.getAxisProxy(s,l).filterData(t,n)})}),r.eachComponent("dataZoom",function(t){var s=t.findRepresentativeAxisProxy();if(s){var l=s.getDataPercentWindow(),c=s.getDataValueWindow();t.setCalculatedRange({start:l[0],end:l[1],startValue:c[0],endValue:c[1]})}})}};const O$=R$;var mg=!1;function gg(r){mg||(mg=!0,r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,O$),function mE(r){r.registerAction("dataZoom",function(n,t){U(function Jn(r,n){var c,t=Ye(),s=[],l=Ye();r.eachComponent({mainType:"dataZoom",query:n},function(g){l.get(g.uid)||f(g)});do{c=!1,r.eachComponent("dataZoom",u)}while(c);function u(g){!l.get(g.uid)&&function p(g){var v=!1;return g.eachTargetAxis(function(y,b){var x=t.get(y);x&&x[b]&&(v=!0)}),v}(g)&&(f(g),c=!0)}function f(g){l.set(g.uid,!0),s.push(g),function m(g){g.eachTargetAxis(function(v,y){(t.get(v)||t.set(v,[]))[y]=!0})}(g)}return s}(t,n),function(l){l.setRawRange({start:n.start,end:n.end,startValue:n.startValue,endValue:n.endValue})})})}(r),r.registerSubTypeDefaulter("dataZoom",function(){return"slider"}))}function vg(r){r.registerComponentModel($Q),r.registerComponentView(qQ),gg(r)}var Ba=function r(){},JC={};function _g(r,n){JC[r]=n}function e1(r){return JC[r]}var L$=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.optionUpdated=function(){r.prototype.optionUpdated.apply(this,arguments);var t=this.ecModel;U(this.option.feature,function(s,l){var c=e1(l);c&&(c.getDefaultOption&&(c.defaultOption=c.getDefaultOption(t)),At(s,c.defaultOption))})},n.type="toolbox",n.layoutMode={type:"box",ignoreSize:!0},n.defaultOption={show:!0,z:6,orient:"horizontal",left:"right",top:"top",backgroundColor:"transparent",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemSize:15,itemGap:8,showTitle:!0,iconStyle:{borderColor:"#666",color:"none"},emphasis:{iconStyle:{borderColor:"#3E98C5"}},tooltip:{show:!1,position:"bottom"}},n}(qt);const t1=L$;function gE(r,n){var t=Qd(n.get("padding")),s=n.getItemStyle(["color","opacity"]);return s.fill=n.get("backgroundColor"),new Zt({shape:{x:r.x-t[3],y:r.y-t[0],width:r.width+t[1]+t[3],height:r.height+t[0]+t[2],r:n.get("borderRadius")},style:s,silent:!0,z2:-1})}var qV=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.render=function(t,s,l,c){var u=this.group;if(u.removeAll(),t.get("show")){var f=+t.get("itemSize"),p="vertical"===t.get("orient"),m=t.get("feature")||{},g=this._features||(this._features={}),v=[];U(m,function(x,C){v.push(C)}),new Zl(this._featureNames||[],v).add(y).update(y).remove($e(y,null)).execute(),this._featureNames=v,function YV(r,n,t){var s=n.getBoxLayoutParams(),l=n.get("padding"),c={width:t.getWidth(),height:t.getHeight()},u=dr(s,c,l);Bc(n.get("orient"),r,n.get("itemGap"),u.width,u.height),H0(r,s,c,l)}(u,t,l),u.add(gE(u.getBoundingRect(),t)),p||u.eachChild(function(x){var C=x.__title,S=x.ensureState("emphasis"),M=S.textConfig||(S.textConfig={}),T=x.getTextContent(),A=T&&T.ensureState("emphasis");if(A&&!qe(A)&&C){var E=A.style||(A.style={}),L=uv(C,an.makeFont(E)),R=x.x+u.x,H=!1;x.y+u.y+f+L.height>l.getHeight()&&(M.position="top",H=!0);var G=H?-5-L.height:f+10;R+L.width/2>l.getWidth()?(M.position=["100%",G],E.align="right"):R-L.width/2<0&&(M.position=[0,G],E.align="left")}})}function y(x,C){var E,S=v[x],M=v[C],T=m[S],A=new In(T,t,t.ecModel);if(c&&null!=c.newTitle&&c.featureName===S&&(T.title=c.newTitle),S&&!M){if(function vE(r){return 0===r.indexOf("my")}(S))E={onclick:A.option.onclick,featureName:S};else{var L=e1(S);if(!L)return;E=new L}g[S]=E}else if(!(E=g[M]))return;E.uid=Wv("toolbox-feature"),E.model=A,E.ecModel=s,E.api=l;var R=E instanceof Ba;S||!M?!A.get("show")||R&&E.unusable?R&&E.remove&&E.remove(s,l):(function b(x,C,S){var L,R,M=x.getModel("iconStyle"),T=x.getModel(["emphasis","iconStyle"]),A=C instanceof Ba&&C.getIcons?C.getIcons():x.get("icon"),E=x.get("title")||{};Le(A)?(L={})[S]=A:L=A,Le(E)?(R={})[S]=E:R=E;var V=x.iconPaths={};U(L,function(H,G){var j=lu(H,{},{x:-f/2,y:-f/2,width:f,height:f});j.setStyle(M.getItemStyle()),j.ensureState("emphasis").style=T.getItemStyle();var q=new an({style:{text:R[G],align:T.get("textAlign"),borderRadius:T.get("textBorderRadius"),padding:T.get("textPadding"),fill:null},ignore:!0});j.setTextContent(q),cu({el:j,componentModel:t,itemName:G,formatterParamsExtra:{title:R[G]}}),j.__title=R[G],j.on("mouseover",function(){var K=T.getItemStyle(),ee=p?null==t.get("right")&&"right"!==t.get("left")?"right":"left":null==t.get("bottom")&&"bottom"!==t.get("top")?"bottom":"top";q.setStyle({fill:T.get("textFill")||K.fill||K.stroke||"#000",backgroundColor:T.get("textBackgroundColor")}),j.setTextConfig({position:T.get("textPosition")||ee}),q.ignore=!t.get("showTitle"),l.enterEmphasis(this)}).on("mouseout",function(){"emphasis"!==x.get(["iconStatus",G])&&l.leaveEmphasis(this),q.hide()}),("emphasis"===x.get(["iconStatus",G])?Rc:Rl)(j),u.add(j),j.on("click",Ne(C.onclick,C,s,l,G)),V[G]=j})}(A,E,S),A.setIconStatus=function(V,H){var G=this.option,j=this.iconPaths;G.iconStatus=G.iconStatus||{},G.iconStatus[V]=H,j[V]&&("emphasis"===H?Rc:Rl)(j[V])},E instanceof Ba&&E.render&&E.render(A,s,l,c)):R&&E.dispose&&E.dispose(s,l)}},n.prototype.updateView=function(t,s,l,c){U(this._features,function(u){u instanceof Ba&&u.updateView&&u.updateView(u.model,s,l,c)})},n.prototype.remove=function(t,s){U(this._features,function(l){l instanceof Ba&&l.remove&&l.remove(t,s)}),this.group.removeAll()},n.prototype.dispose=function(t,s){U(this._features,function(l){l instanceof Ba&&l.dispose&&l.dispose(t,s)})},n.type="toolbox",n}(di);const XQ=qV;var ZQ=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.onclick=function(t,s){var l=this.model,c=l.get("name")||t.get("title.0.text")||"echarts",u="svg"===s.getZr().painter.getType(),f=u?"svg":l.get("type",!0)||"png",p=s.getConnectedDataURL({type:f,backgroundColor:l.get("backgroundColor",!0)||t.get("backgroundColor")||"#fff",connectedBackgroundColor:l.get("connectedBackgroundColor"),excludeComponents:l.get("excludeComponents"),pixelRatio:l.get("pixelRatio")}),m=ln.browser;if(qe(MouseEvent)&&(m.newEdge||!m.ie&&!m.edge)){var g=document.createElement("a");g.download=c+"."+f,g.target="_blank",g.href=p;var v=new MouseEvent("click",{view:document.defaultView,bubbles:!0,cancelable:!1});g.dispatchEvent(v)}else if(window.navigator.msSaveOrOpenBlob||u){var y=p.split(","),b=y[0].indexOf("base64")>-1,x=u?decodeURIComponent(y[1]):y[1];b&&(x=window.atob(x));var C=c+"."+f;if(window.navigator.msSaveOrOpenBlob){for(var S=x.length,M=new Uint8Array(S);S--;)M[S]=x.charCodeAt(S);var T=new Blob([M]);window.navigator.msSaveOrOpenBlob(T,C)}else{var A=document.createElement("iframe");document.body.appendChild(A);var E=A.contentWindow,L=E.document;L.open("image/svg+xml","replace"),L.write(x),L.close(),E.focus(),L.execCommand("SaveAs",!0,C),document.body.removeChild(A)}}else{var R=l.get("lang"),V='',H=window.open();H.document.write(V),H.document.title=c}},n.getDefaultOption=function(t){return{show:!0,icon:"M4.7,22.9L29.3,45.5L54.7,23.4M4.6,43.6L4.6,58L53.8,58L53.8,43.6M29.2,45.1L29.2,0",title:t.getLocaleModel().get(["toolbox","saveAsImage","title"]),type:"png",connectedBackgroundColor:"#fff",name:"",excludeComponents:["toolbox"],lang:t.getLocaleModel().get(["toolbox","saveAsImage","lang"])}},n}(Ba);const F$=ZQ;var N$="__ec_magicType_stack__",r1=[["line","bar"],["stack"]],db=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.getIcons=function(){var t=this.model,s=t.get("icon"),l={};return U(t.get("type"),function(c){s[c]&&(l[c]=s[c])}),l},n.getDefaultOption=function(t){return{show:!0,type:[],icon:{line:"M4.1,28.9h7.1l9.3-22l7.4,38l9.7-19.7l3,12.8h14.9M4.1,58h51.4",bar:"M6.7,22.9h10V48h-10V22.9zM24.9,13h10v35h-10V13zM43.2,2h10v46h-10V2zM3.1,58h53.7",stack:"M8.2,38.4l-8.4,4.1l30.6,15.3L60,42.5l-8.1-4.1l-21.5,11L8.2,38.4z M51.9,30l-8.1,4.2l-13.4,6.9l-13.9-6.9L8.2,30l-8.4,4.2l8.4,4.2l22.2,11l21.5-11l8.1-4.2L51.9,30z M51.9,21.7l-8.1,4.2L35.7,30l-5.3,2.8L24.9,30l-8.4-4.1l-8.3-4.2l-8.4,4.2L8.2,30l8.3,4.2l13.9,6.9l13.4-6.9l8.1-4.2l8.1-4.1L51.9,21.7zM30.4,2.2L-0.2,17.5l8.4,4.1l8.3,4.2l8.4,4.2l5.5,2.7l5.3-2.7l8.1-4.2l8.1-4.2l8.1-4.1L30.4,2.2z"},title:t.getLocaleModel().get(["toolbox","magicType","title"]),option:{},seriesIndex:{}}},n.prototype.onclick=function(t,s,l){var c=this.model,u=c.get(["seriesIndex",l]);if(ub[l]){var f={series:[]};U(r1,function(v){Rt(v,l)>=0&&U(v,function(y){c.setIconStatus(y,"normal")})}),c.setIconStatus(l,"emphasis"),t.eachComponent({mainType:"series",query:null==u?null:{seriesIndex:u}},function(v){var x=ub[l](v.subType,v.id,v,c);x&&(Je(x,v.option),f.series.push(x));var C=v.coordinateSystem;if(C&&"cartesian2d"===C.type&&("line"===l||"bar"===l)){var S=C.getAxesByScale("ordinal")[0];if(S){var T=S.dim+"Axis",E=v.getReferringComponents(T,br).models[0].componentIndex;f[T]=f[T]||[];for(var L=0;L<=E;L++)f[T][E]=f[T][E]||{};f[T][E].boundaryGap="bar"===l}}});var m,g=l;"stack"===l&&(m=At({stack:c.option.title.tiled,tiled:c.option.title.stack},c.option.title),"emphasis"!==c.get(["iconStatus",l])&&(g="tiled")),s.dispatchAction({type:"changeMagicType",currentType:g,newOption:f,newTitle:m,featureName:"magicType"})}},n}(Ba),ub={line:function(r,n,t,s){if("bar"===r)return At({id:n,type:"line",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},s.get(["option","line"])||{},!0)},bar:function(r,n,t,s){if("line"===r)return At({id:n,type:"bar",data:t.get("data"),stack:t.get("stack"),markPoint:t.get("markPoint"),markLine:t.get("markLine")},s.get(["option","bar"])||{},!0)},stack:function(r,n,t,s){var l=t.get("stack")===N$;if("line"===r||"bar"===r)return s.setIconStatus("stack",l?"normal":"emphasis"),At({id:n,stack:l?"":N$},s.get(["option","stack"])||{},!0)}};Xl({type:"changeMagicType",event:"magicTypeChanged",update:"prepareAndUpdate"},function(r,n){n.mergeOption(r.newOption)});const a1=db;var o1=new Array(60).join("-"),Hu="\t";function B$(r){var n=[];return U(r,function(t,s){var l=t.categoryAxis,u=t.valueAxis.dim,f=[" "].concat(xe(t.series,function(b){return b.name})),p=[l.model.getCategories()];U(t.series,function(b){var x=b.getRawData();p.push(b.getRawData().mapArray(x.mapDimension(u),function(C){return C}))});for(var m=[f.join(Hu)],g=0;g=0)return!0}(l)){var u=function KQ(r){for(var n=r.split(/\n+/g),s=[],l=xe(l1(n.shift()).split(_E),function(p){return{name:p,data:[]}}),c=0;c=0)&&u(c,l._targetInfoList)})}return r.prototype.setOutputRanges=function(n,t){return this.matchOutputRanges(n,t,function(s,l,c){if((s.coordRanges||(s.coordRanges=[])).push(l),!s.coordRange){s.coordRange=l;var u=r3[s.brushType](0,c,l);s.__rangeOffset={offset:a3[s.brushType](u.values,s.range,[1,1]),xyMinMax:u.xyMinMax}}}),n},r.prototype.matchOutputRanges=function(n,t,s){U(n,function(l){var c=this.findTargetInfo(l,t);c&&!0!==c&&U(c.coordSyses,function(u){var f=r3[l.brushType](1,u,l.range,!0);s(l,f.values,u,t)})},this)},r.prototype.setInputRanges=function(n,t){U(n,function(s){var l=this.findTargetInfo(s,t);if(s.range=s.range||[],l&&!0!==l){s.panelId=l.panelId;var c=r3[s.brushType](0,l.coordSys,s.coordRange),u=s.__rangeOffset;s.range=u?a3[s.brushType](c.values,u.offset,function W$(r,n){var t=DE(r),s=DE(n),l=[t[0]/s[0],t[1]/s[1]];return isNaN(l[0])&&(l[0]=1),isNaN(l[1])&&(l[1]=1),l}(c.xyMinMax,u.xyMinMax)):c.values}},this)},r.prototype.makePanelOpts=function(n,t){return xe(this._targetInfoList,function(s){var l=s.getPanelRect();return{panelId:s.panelId,defaultBrushType:t?t(s):null,clipPath:Qj(l),isTargetByCursor:e7(l,n,s.coordSysModel),getLinearBrushOtherExtent:Jj(l)}})},r.prototype.controlSeries=function(n,t,s){var l=this.findTargetInfo(n,s);return!0===l||l&&Rt(l.coordSyses,t.coordinateSystem)>=0},r.prototype.findTargetInfo=function(n,t){for(var s=this._targetInfoList,l=t3(t,n),c=0;cr[1]&&r.reverse(),r}function t3(r,n){return p0(r,n,{includeMainTypes:JV})}var n3={grid:function(r,n){var t=r.xAxisModels,s=r.yAxisModels,l=r.gridModels,c=Ye(),u={},f={};!t&&!s&&!l||(U(t,function(p){var m=p.axis.grid.model;c.set(m.id,m),u[m.id]=!0}),U(s,function(p){var m=p.axis.grid.model;c.set(m.id,m),f[m.id]=!0}),U(l,function(p){c.set(p.id,p),u[p.id]=!0,f[p.id]=!0}),c.each(function(p){var g=[];U(p.coordinateSystem.getCartesians(),function(v,y){(Rt(t,v.getAxis("x").model)>=0||Rt(s,v.getAxis("y").model)>=0)&&g.push(v)}),n.push({panelId:"grid--"+p.id,gridModel:p,coordSysModel:p,coordSys:g[0],coordSyses:g,getPanelRect:j$.grid,xAxisDeclared:u[p.id],yAxisDeclared:f[p.id]})}))},geo:function(r,n){U(r.geoModels,function(t){var s=t.coordinateSystem;n.push({panelId:"geo--"+t.id,geoModel:t,coordSysModel:t,coordSys:s,coordSyses:[s],getPanelRect:j$.geo})})}},U$=[function(r,n){var t=r.xAxisModel,s=r.yAxisModel,l=r.gridModel;return!l&&t&&(l=t.axis.grid.model),!l&&s&&(l=s.axis.grid.model),l&&l===n.gridModel},function(r,n){var t=r.geoModel;return t&&t===n.geoModel}],j$={grid:function(){return this.coordSys.master.getRect().clone()},geo:function(){var r=this.coordSys,n=r.getBoundingRect().clone();return n.applyTransform(jc(r)),n}},r3={lineX:$e($$,0),lineY:$e($$,1),rect:function(r,n,t,s){var l=r?n.pointToData([t[0][0],t[1][0]],s):n.dataToPoint([t[0][0],t[1][0]],s),c=r?n.pointToData([t[0][1],t[1][1]],s):n.dataToPoint([t[0][1],t[1][1]],s),u=[e3([l[0],c[0]]),e3([l[1],c[1]])];return{values:u,xyMinMax:u}},polygon:function(r,n,t,s){var l=[[1/0,-1/0],[1/0,-1/0]];return{values:xe(t,function(u){var f=r?n.pointToData(u,s):n.dataToPoint(u,s);return l[0][0]=Math.min(l[0][0],f[0]),l[1][0]=Math.min(l[1][0],f[1]),l[0][1]=Math.max(l[0][1],f[0]),l[1][1]=Math.max(l[1][1],f[1]),f}),xyMinMax:l}}};function $$(r,n,t,s){var l=t.getAxis(["x","y"][r]),c=e3(xe([0,1],function(f){return n?l.coordToData(l.toLocalCoord(s[f]),!0):l.toGlobalCoord(l.dataToCoord(s[f]))})),u=[];return u[r]=c,u[1-r]=[NaN,NaN],{values:c,xyMinMax:u}}var a3={lineX:$e(SE,0),lineY:$e(SE,1),rect:function(r,n,t){return[[r[0][0]-t[0]*n[0][0],r[0][1]-t[0]*n[0][1]],[r[1][0]-t[1]*n[1][0],r[1][1]-t[1]*n[1][1]]]},polygon:function(r,n,t){return xe(r,function(s,l){return[s[0]-t[0]*n[l][0],s[1]-t[1]*n[l][1]]})}};function SE(r,n,t,s){return[n[0]-s[r]*t[0],n[1]-s[r]*t[1]]}function DE(r){return r?[r[0][1]-r[0][0],r[1][1]-r[1][0]]:[NaN,NaN]}const zn=CE;var hb=U,Y$=function T4(r){return gP+r}("toolbox-dataZoom_"),q$=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.render=function(t,s,l,c){this._brushController||(this._brushController=new rB(l.getZr()),this._brushController.on("brush",Ne(this._onBrush,this)).mount()),function o3(r,n,t,s,l){var c=t._isZoomActive;s&&"takeGlobalCursor"===s.type&&(c="dataZoomSelect"===s.key&&s.dataZoomSelectActive),t._isZoomActive=c,r.setIconStatus("zoom",c?"emphasis":"normal");var f=new zn(c1(r),n,{include:["grid"]}).makePanelOpts(l,function(p){return p.xAxisDeclared&&!p.yAxisDeclared?"lineX":!p.xAxisDeclared&&p.yAxisDeclared?"lineY":"rect"});t._brushController.setPanels(f).enableBrush(!(!c||!f.length)&&{brushType:"auto",brushStyle:r.getModel("brushStyle").getItemStyle()})}(t,s,this,c,l),function X$(r,n){r.setIconStatus("back",function G$(r){return Yf(r).length}(n)>1?"emphasis":"normal")}(t,s)},n.prototype.onclick=function(t,s,l){tJ[l].call(this)},n.prototype.remove=function(t,s){this._brushController&&this._brushController.unmount()},n.prototype.dispose=function(t,s){this._brushController&&this._brushController.dispose()},n.prototype._onBrush=function(t){var s=t.areas;if(t.isEnd&&s.length){var l={},c=this.ecModel;this._brushController.updateCovers([]),new zn(c1(this.model),c,{include:["grid"]}).matchOutputRanges(s,c,function(m,g,v){if("cartesian2d"===v.type){var y=m.brushType;"rect"===y?(f("x",v,g[0]),f("y",v,g[1])):f({lineX:"x",lineY:"y"}[y],v,g)}}),function xE(r,n){var t=Yf(r);KV(n,function(s,l){for(var c=t.length-1;c>=0&&!t[c][l];c--);if(c<0){var f=r.queryComponents({mainType:"dataZoom",subType:"select",id:l})[0];if(f){var p=f.getPercentRange();t[0][l]={dataZoomId:l,start:p[0],end:p[1]}}}}),t.push(n)}(c,l),this._dispatchZoomAction(l)}function f(m,g,v){var y=g.getAxis(m),b=y.model,x=function p(m,g,v){var y;return v.eachComponent({mainType:"dataZoom",subType:"select"},function(b){b.getAxisModel(m,g.componentIndex)&&(y=b)}),y}(m,b,c),C=x.findRepresentativeAxisProxy(b).getMinMaxSpan();(null!=C.minValueSpan||null!=C.maxValueSpan)&&(v=ig(0,v.slice(),y.scale.getExtent(),0,C.minValueSpan,C.maxValueSpan)),x&&(l[x.id]={dataZoomId:x.id,startValue:v[0],endValue:v[1]})}},n.prototype._dispatchZoomAction=function(t){var s=[];hb(t,function(l,c){s.push(rt(l))}),s.length&&this.api.dispatchAction({type:"dataZoom",from:this.uid,batch:s})},n.getDefaultOption=function(t){return{show:!0,filterMode:"filter",icon:{zoom:"M0,13.5h26.9 M13.5,26.9V0 M32.1,13.5H58V58H13.5 V32.1",back:"M22,1.4L9.9,13.5l12.3,12.3 M10.3,13.5H54.9v44.6 H10.3v-26"},title:t.getLocaleModel().get(["toolbox","dataZoom","title"]),brushStyle:{borderWidth:0,color:"rgba(210,219,238,0.2)"}}},n}(Ba),tJ={zoom:function(){this.api.dispatchAction({type:"takeGlobalCursor",key:"dataZoomSelect",dataZoomSelectActive:!this._isZoomActive})},back:function(){this._dispatchZoomAction(function H$(r){var n=Yf(r),t=n[n.length-1];n.length>1&&n.pop();var s={};return KV(t,function(l,c){for(var u=n.length-1;u>=0;u--)if(l=n[u][c]){s[c]=l;break}}),s}(this.ecModel))}};function c1(r){var n={xAxisIndex:r.get("xAxisIndex",!0),yAxisIndex:r.get("yAxisIndex",!0),xAxisId:r.get("xAxisId",!0),yAxisId:r.get("yAxisId",!0)};return null==n.xAxisIndex&&null==n.xAxisId&&(n.xAxisIndex="all"),null==n.yAxisIndex&&null==n.yAxisId&&(n.yAxisIndex="all"),n}!function e_(r,n){va(null==AD.get(r)&&n),AD.set(r,n)}("dataZoom",function(r){var n=r.getComponent("toolbox",0),t=["feature","dataZoom"];if(n&&null!=n.get(t)){var s=n.getModel(t),l=[],u=p0(r,c1(s));return hb(u.xAxisModels,function(p){return f(p,"xAxis","xAxisIndex")}),hb(u.yAxisModels,function(p){return f(p,"yAxis","yAxisIndex")}),l}function f(p,m,g){var v=p.componentIndex,y={type:"select",$fromToolbox:!0,filterMode:s.get("filterMode",!0)||"filter",id:Y$+m+v};y[g]=v,l.push(y)}});const Z$=q$;var ME=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="tooltip",n.dependencies=["axisPointer"],n.defaultOption={z:60,show:!0,showContent:!0,trigger:"item",triggerOn:"mousemove|click",alwaysShowContent:!1,displayMode:"single",renderMode:"auto",confine:null,showDelay:0,hideDelay:100,transitionDuration:.4,enterable:!1,backgroundColor:"#fff",shadowBlur:10,shadowColor:"rgba(0, 0, 0, .2)",shadowOffsetX:1,shadowOffsetY:2,borderRadius:4,borderWidth:1,padding:null,extraCssText:"",axisPointer:{type:"line",axis:"auto",animation:"auto",animationDurationUpdate:200,animationEasingUpdate:"exponentialOut",crossStyle:{color:"#999",width:1,type:"dashed",textStyle:{}}},textStyle:{color:"#666",fontSize:14}},n}(qt);const K$=ME;function d1(r){var n=r.get("confine");return null!=n?!!n:"richText"===r.get("renderMode")}function l3(r){if(ln.domSupported)for(var n=document.documentElement.style,t=0,s=r.length;t-1?(f+="top:50%",p+="translateY(-50%) rotate("+(m="left"===c?-225:-45)+"deg)"):(f+="left:50%",p+="translateX(-50%) rotate("+(m="top"===c?225:45)+"deg)");var g=m*Math.PI/180,v=u+l,y=v*Math.abs(Math.cos(g))+v*Math.abs(Math.sin(g)),x=n+" solid "+l+"px;";return'
'}(s,l,c)),Le(n))u.innerHTML=n+f;else if(n){u.innerHTML="",ye(n)||(n=[n]);for(var p=0;p=0?this._tryShow(c,u):"leave"===l&&this._hide(u))},this))},n.prototype._keepShow=function(){var t=this._tooltipModel,s=this._ecModel,l=this._api,c=t.get("triggerOn");if(null!=this._lastX&&null!=this._lastY&&"none"!==c&&"click"!==c){var u=this;clearTimeout(this._refreshUpdateTimeout),this._refreshUpdateTimeout=setTimeout(function(){!l.isDisposed()&&u.manuallyShowTip(t,s,l,{x:u._lastX,y:u._lastY,dataByCoordSys:u._lastDataByCoordSys})})}},n.prototype.manuallyShowTip=function(t,s,l,c){if(c.from!==this.uid&&!ln.node&&l.getDom()){var u=g3(c,l);this._ticket="";var f=c.dataByCoordSys,p=function f1(r,n,t){var s=_P(r).queryOptionMap,l=s.keys()[0];if(l&&"series"!==l){var p,u=Lp(n,l,s.get(l),{useDefault:!1,enableAll:!1,enableNone:!1}).models[0];if(u&&(t.getViewOfComponentModel(u).group.traverse(function(m){var g=mt(m).tooltipConfig;if(g&&g.name===r.name)return p=m,!0}),p))return{componentMainType:l,componentIndex:u.componentIndex,el:p}}}(c,s,l);if(p){var m=p.el.getBoundingRect().clone();m.applyTransform(p.el.transform),this._tryShow({offsetX:m.x+m.width/2,offsetY:m.y+m.height/2,target:p.el,position:c.position,positionDefault:"bottom"},u)}else if(c.tooltip&&null!=c.x&&null!=c.y){var g=Zf;g.x=c.x,g.y=c.y,g.update(),mt(g).tooltipConfig={name:null,option:c.tooltip},this._tryShow({offsetX:c.x,offsetY:c.y,target:g},u)}else if(f)this._tryShow({offsetX:c.x,offsetY:c.y,position:c.position,dataByCoordSys:f,tooltipOption:c.tooltipOption},u);else if(null!=c.seriesIndex){if(this._manuallyAxisShowTip(t,s,l,c))return;var v=l$(c,s),y=v.point[0],b=v.point[1];null!=y&&null!=b&&this._tryShow({offsetX:y,offsetY:b,target:v.el,position:c.position,positionDefault:"bottom"},u)}else null!=c.x&&null!=c.y&&(l.dispatchAction({type:"updateAxisPointer",x:c.x,y:c.y}),this._tryShow({offsetX:c.x,offsetY:c.y,position:c.position,target:l.getZr().findHover(c.x,c.y).target},u))}},n.prototype.manuallyHideTip=function(t,s,l,c){this._tooltipModel&&this._tooltipContent.hideLater(this._tooltipModel.get("hideDelay")),this._lastX=this._lastY=this._lastDataByCoordSys=null,c.from!==this.uid&&this._hide(g3(c,l))},n.prototype._manuallyAxisShowTip=function(t,s,l,c){var u=c.seriesIndex,f=c.dataIndex,p=s.getComponent("axisPointer").coordSysAxesInfo;if(null!=u&&null!=f&&null!=p){var m=s.getSeriesByIndex(u);if(m&&"axis"===bg([m.getData().getItemModel(f),m,(m.coordinateSystem||{}).model],this._tooltipModel).get("trigger"))return l.dispatchAction({type:"updateAxisPointer",seriesIndex:u,dataIndex:f,position:c.position}),!0}},n.prototype._tryShow=function(t,s){var l=t.target;if(this._tooltipModel){this._lastX=t.offsetX,this._lastY=t.offsetY;var u=t.dataByCoordSys;if(u&&u.length)this._showAxisTooltip(u,t);else if(l){var f,p;this._lastDataByCoordSys=null,ql(l,function(m){return null!=mt(m).dataIndex?(f=m,!0):null!=mt(m).tooltipConfig?(p=m,!0):void 0},!0),f?this._showSeriesItemTooltip(t,f,s):p?this._showComponentItemTooltip(t,p,s):this._hide(s)}else this._lastDataByCoordSys=null,this._hide(s)}},n.prototype._showOrMove=function(t,s){var l=t.get("showDelay");s=Ne(s,this),clearTimeout(this._showTimout),l>0?this._showTimout=setTimeout(s,l):s()},n.prototype._showAxisTooltip=function(t,s){var l=this._ecModel,c=this._tooltipModel,u=[s.offsetX,s.offsetY],f=bg([s.tooltipOption],c),p=this._renderMode,m=[],g=Y("section",{blocks:[],noHeader:!0}),v=[],y=new tM;U(t,function(T){U(T.dataByAxis,function(A){var E=l.getComponent(A.axisDim+"Axis",A.axisIndex),L=A.value;if(E&&null!=L){var R=cV(L,E.axis,l,A.seriesDataIndices,A.valueLabelOpt),V=Y("section",{header:R,noHeader:!yo(R),sortBlocks:!0,blocks:[]});g.blocks.push(V),U(A.seriesDataIndices,function(H){var G=l.getSeriesByIndex(H.seriesIndex),j=H.dataIndexInside,$=G.getDataParams(j);if(!($.dataIndex<0)){$.axisDim=A.axisDim,$.axisIndex=A.axisIndex,$.axisType=A.axisType,$.axisId=A.axisId,$.axisValue=yT(E.axis,{value:L}),$.axisValueLabel=R,$.marker=y.makeTooltipMarker("item",Bh($.color),p);var q=UD(G.formatTooltip(j,!0,null)),K=q.frag;if(K){var ee=bg([G],c).get("valueFormatter");V.blocks.push(ee?ge({valueFormatter:ee},K):K)}q.text&&v.push(q.text),m.push($)}})}})}),g.blocks.reverse(),v.reverse();var b=s.position,x=f.get("order"),C=JD(g,y,p,x,l.get("useUTC"),f.get("textStyle"));C&&v.unshift(C);var M=v.join("richText"===p?"\n\n":"
");this._showOrMove(f,function(){this._updateContentNotChangedOnAxis(t,m)?this._updatePosition(f,b,u[0],u[1],this._tooltipContent,m):this._showTooltipContent(f,M,m,Math.random()+"",u[0],u[1],b,null,y)})},n.prototype._showSeriesItemTooltip=function(t,s,l){var c=this._ecModel,u=mt(s),f=u.seriesIndex,p=c.getSeriesByIndex(f),m=u.dataModel||p,g=u.dataIndex,v=u.dataType,y=m.getData(v),b=this._renderMode,x=t.positionDefault,C=bg([y.getItemModel(g),m,p&&(p.coordinateSystem||{}).model],this._tooltipModel,x?{position:x}:null),S=C.get("trigger");if(null==S||"item"===S){var M=m.getDataParams(g,v),T=new tM;M.marker=T.makeTooltipMarker("item",Bh(M.color),b);var A=UD(m.formatTooltip(g,!1,v)),E=C.get("order"),L=C.get("valueFormatter"),R=A.frag,V=R?JD(L?ge({valueFormatter:L},R):R,T,b,E,c.get("useUTC"),C.get("textStyle")):A.text,H="item_"+m.name+"_"+g;this._showOrMove(C,function(){this._showTooltipContent(C,V,M,H,t.offsetX,t.offsetY,t.position,t.target,T)}),l({type:"showTip",dataIndexInside:g,dataIndex:y.getRawIndex(g),seriesIndex:f,from:this.uid})}},n.prototype._showComponentItemTooltip=function(t,s,l){var c=mt(s),f=c.tooltipConfig.option||{};Le(f)&&(f={content:f,formatter:f});var m=[f],g=this._ecModel.getComponent(c.componentMainType,c.componentIndex);g&&m.push(g),m.push({formatter:f.content});var v=t.positionDefault,y=bg(m,this._tooltipModel,v?{position:v}:null),b=y.get("content"),x=Math.random()+"",C=new tM;this._showOrMove(y,function(){var S=rt(y.get("formatterParams")||{});this._showTooltipContent(y,b,S,x,t.offsetX,t.offsetY,t.position,s,C)}),l({type:"showTip",from:this.uid})},n.prototype._showTooltipContent=function(t,s,l,c,u,f,p,m,g){if(this._ticket="",t.get("showContent")&&t.get("show")){var v=this._tooltipContent;v.setEnterable(t.get("enterable"));var y=t.get("formatter");p=p||t.get("position");var b=s,C=this._getNearestPoint([u,f],l,t.get("trigger"),t.get("borderColor")).color;if(y)if(Le(y)){var S=t.ecModel.get("useUTC"),M=ye(l)?l[0]:l;b=y,M&&M.axisType&&M.axisType.indexOf("time")>=0&&(b=Xp(M.axisValue,b,S)),b=bD(b,l,!0)}else if(qe(y)){var A=Ne(function(E,L){E===this._ticket&&(v.setContent(L,g,t,C,p),this._updatePosition(t,p,u,f,v,l,m))},this);this._ticket=c,b=y(l,c,A)}else b=y;v.setContent(b,g,t,C,p),v.show(t,C),this._updatePosition(t,p,u,f,v,l,m)}},n.prototype._getNearestPoint=function(t,s,l,c){return"axis"===l||ye(s)?{color:c||("html"===this._renderMode?"#fff":"none")}:ye(s)?void 0:{color:c||s.color||s.borderColor}},n.prototype._updatePosition=function(t,s,l,c,u,f,p){var m=this._api.getWidth(),g=this._api.getHeight();s=s||t.get("position");var v=u.getSize(),y=t.get("align"),b=t.get("verticalAlign"),x=p&&p.getBoundingRect().clone();if(p&&x.applyTransform(p.transform),qe(s)&&(s=s([l,c],f,u.el,x,{viewSize:[m,g],contentSize:v.slice()})),ye(s))l=Re(s[0],m),c=Re(s[1],g);else if(tt(s)){var C=s;C.width=v[0],C.height=v[1];var S=dr(C,{width:m,height:g});l=S.x,c=S.y,y=null,b=null}else if(Le(s)&&p){var M=function oW(r,n,t,s){var l=t[0],c=t[1],u=Math.ceil(Math.SQRT2*s)+8,f=0,p=0,m=n.width,g=n.height;switch(r){case"inside":f=n.x+m/2-l/2,p=n.y+g/2-c/2;break;case"top":f=n.x+m/2-l/2,p=n.y-c-u;break;case"bottom":f=n.x+m/2-l/2,p=n.y+g+u;break;case"left":f=n.x-l-u,p=n.y+g/2-c/2;break;case"right":f=n.x+m+u,p=n.y+g/2-c/2}return[f,p]}(s,x,v,t.get("borderWidth"));l=M[0],c=M[1]}else M=function v3(r,n,t,s,l,c,u){var f=t.getSize(),p=f[0],m=f[1];return null!=c&&(r+p+c+2>s?r-=p+c:r+=c),null!=u&&(n+m+u>l?n-=m+u:n+=u),[r,n]}(l,c,u,m,g,y?null:20,b?null:20),l=M[0],c=M[1];y&&(l-=Yo(y)?v[0]/2:"right"===y?v[0]:0),b&&(c-=Yo(b)?v[1]/2:"bottom"===b?v[1]:0),d1(t)&&(M=function aW(r,n,t,s,l){var c=t.getSize(),u=c[0],f=c[1];return r=Math.min(r+u,s)-u,n=Math.min(n+f,l)-f,[r=Math.max(r,0),n=Math.max(n,0)]}(l,c,u,m,g),l=M[0],c=M[1]),u.moveTo(l,c)},n.prototype._updateContentNotChangedOnAxis=function(t,s){var l=this._lastDataByCoordSys,c=this._cbParamsList,u=!!l&&l.length===t.length;return u&&U(l,function(f,p){var m=f.dataByAxis||[],v=(t[p]||{}).dataByAxis||[];(u=u&&m.length===v.length)&&U(m,function(y,b){var x=v[b]||{},C=y.seriesDataIndices||[],S=x.seriesDataIndices||[];(u=u&&y.value===x.value&&y.axisType===x.axisType&&y.axisId===x.axisId&&C.length===S.length)&&U(C,function(M,T){var A=S[T];u=u&&M.seriesIndex===A.seriesIndex&&M.dataIndex===A.dataIndex}),c&&U(y.seriesDataIndices,function(M){var T=M.seriesIndex,A=s[T],E=c[T];A&&E&&E.data!==A.data&&(u=!1)})})}),this._lastDataByCoordSys=t,this._cbParamsList=s,!!u},n.prototype._hide=function(t){this._lastDataByCoordSys=null,t({type:"hideTip",from:this.uid})},n.prototype.dispose=function(t,s){ln.node||!s.getDom()||(pm(this,"_updatePosition"),this._tooltipContent.dispose(),BC("itemTooltip",s))},n.type="tooltip",n}(di);function bg(r,n,t){var l,s=n.ecModel;t?(l=new In(t,s,s),l=new In(n.option,l,s)):l=n;for(var c=r.length-1;c>=0;c--){var u=r[c];u&&(u instanceof In&&(u=u.get("tooltip",!0)),Le(u)&&(u={formatter:u}),u&&(l=new In(u,l,s)))}return l}function g3(r,n){return r.dispatchAction||Ne(n.dispatchAction,n)}function Yo(r){return"center"===r||"middle"===r}const sW=rW;var lW=["rect","polygon","keep","clear"];function y3(r,n){var t=Nn(r?r.brush:[]);if(t.length){var s=[];U(t,function(p){var m=p.hasOwnProperty("toolbox")?p.toolbox:[];m instanceof Array&&(s=s.concat(m))});var l=r&&r.toolbox;ye(l)&&(l=l[0]),l||(r.toolbox=[l={feature:{}}]);var c=l.feature||(l.feature={}),u=c.brush||(c.brush={}),f=u.type||(u.type=[]);f.push.apply(f,s),function cW(r){var n={};U(r,function(t){n[t]=1}),r.length=0,U(n,function(t,s){r.push(s)})}(f),n&&!f.length&&f.push.apply(f,lW)}}var wg=U;function b3(r){if(r)for(var n in r)if(r.hasOwnProperty(n))return!0}function p1(r,n,t){var s={};return wg(n,function(c){var u=s[c]=function l(){var c=function(){};return c.prototype.__hidden=c.prototype,new c}();wg(r[c],function(f,p){if(Jr.isValidType(p)){var m={type:p,visual:f};t&&t(m,c),u[p]=new Jr(m),"opacity"===p&&((m=rt(m)).type="colorAlpha",u.__hidden.__alphaForOpacity=new Jr(m))}})}),s}function dW(r,n,t){var s;U(t,function(l){n.hasOwnProperty(l)&&b3(n[l])&&(s=!0)}),s&&U(t,function(l){n.hasOwnProperty(l)&&b3(n[l])?r[l]=rt(n[l]):delete r[l]})}var x3={lineX:uW(0),lineY:uW(1),rect:{point:function(r,n,t){return r&&t.boundingRect.contain(r[0],r[1])},rect:function(r,n,t){return r&&t.boundingRect.intersect(r)}},polygon:{point:function(r,n,t){return r&&t.boundingRect.contain(r[0],r[1])&&ed(t.range,r[0],r[1])},rect:function(r,n,t){var s=t.range;if(!r||s.length<=1)return!1;var l=r.x,c=r.y,u=r.width,f=r.height,p=s[0];return!!(ed(s,l,c)||ed(s,l+u,c)||ed(s,l,c+f)||ed(s,l+u,c+f)||yt.create(r).contain(p[0],p[1])||hm(l,c,l+u,c,s)||hm(l,c,l,c+f,s)||hm(l+u,c,l+u,c+f,s)||hm(l,c+f,l+u,c+f,s))||void 0}}};function uW(r){var n=["x","y"],t=["width","height"];return{point:function(s,l,c){if(s)return m1(s[r],c.range)},rect:function(s,l,c){if(s){var u=c.range,f=[s[n[r]],s[n[r]]+s[t[r]]];return f[1]n[0][1]&&(n[0][1]=c[0]),c[1]n[1][1]&&(n[1][1]=c[1])}return n&&EE(n)}};function EE(r){return new yt(r[0][0],r[1][0],r[0][1]-r[0][0],r[1][1]-r[1][0])}var _W=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.init=function(t,s){this.ecModel=t,this.api=s,(this._brushController=new rB(s.getZr())).on("brush",Ne(this._onBrush,this)).mount()},n.prototype.render=function(t,s,l,c){this.model=t,this._updateController(t,s,l,c)},n.prototype.updateTransform=function(t,s,l,c){fW(s),this._updateController(t,s,l,c)},n.prototype.updateVisual=function(t,s,l,c){this.updateTransform(t,s,l,c)},n.prototype.updateView=function(t,s,l,c){this._updateController(t,s,l,c)},n.prototype._updateController=function(t,s,l,c){(!c||c.$from!==t.id)&&this._brushController.setPanels(t.brushTargetManager.makePanelOpts(l)).enableBrush(t.brushOption).updateCovers(t.areas.slice())},n.prototype.dispose=function(){this._brushController.dispose()},n.prototype._onBrush=function(t){var s=this.model.id,l=this.model.brushTargetManager.setOutputRanges(t.areas,this.ecModel);(!t.isEnd||t.removeOnClick)&&this.api.dispatchAction({type:"brush",brushId:s,areas:rt(l),$from:s}),t.isEnd&&this.api.dispatchAction({type:"brushEnd",brushId:s,areas:rt(l),$from:s})},n.type="brush",n}(di);const yW=_W;var wW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.areas=[],t.brushOption={},t}return se(n,r),n.prototype.optionUpdated=function(t,s){var l=this.option;!s&&dW(l,t,["inBrush","outOfBrush"]);var c=l.inBrush=l.inBrush||{};l.outOfBrush=l.outOfBrush||{color:"#ddd"},c.hasOwnProperty("liftZ")||(c.liftZ=5)},n.prototype.setAreas=function(t){t&&(this.areas=xe(t,function(s){return T3(this.option,s)},this))},n.prototype.setBrushOption=function(t){this.brushOption=T3(this.option,t),this.brushType=this.brushOption.brushType},n.type="brush",n.dependencies=["geo","grid","xAxis","yAxis","parallel","series"],n.defaultOption={seriesIndex:"all",brushType:"rect",brushMode:"single",transformable:!0,brushStyle:{borderWidth:1,color:"rgba(210,219,238,0.3)",borderColor:"#D2DBEE"},throttleType:"fixRate",throttleDelay:0,removeOnClick:!0,z:1e4},n}(qt);function T3(r,n){return At({brushType:r.brushType,brushMode:r.brushMode,transformable:r.transformable,brushStyle:new In(r.brushStyle).getItemStyle(),removeOnClick:r.removeOnClick,z:r.z},n,!0)}const xW=wW;var CW=["rect","polygon","lineX","lineY","keep","clear"],SW=function(r){function n(){return null!==r&&r.apply(this,arguments)||this}return se(n,r),n.prototype.render=function(t,s,l){var c,u,f;s.eachComponent({mainType:"brush"},function(p){c=p.brushType,u=p.brushOption.brushMode||"single",f=f||!!p.areas.length}),this._brushType=c,this._brushMode=u,U(t.get("type",!0),function(p){t.setIconStatus(p,("keep"===p?"multiple"===u:"clear"===p?f:p===c)?"emphasis":"normal")})},n.prototype.updateView=function(t,s,l){this.render(t,s,l)},n.prototype.getIcons=function(){var t=this.model,s=t.get("icon",!0),l={};return U(t.get("type",!0),function(c){s[c]&&(l[c]=s[c])}),l},n.prototype.onclick=function(t,s,l){var c=this._brushType,u=this._brushMode;"clear"===l?(s.dispatchAction({type:"axisAreaSelect",intervals:[]}),s.dispatchAction({type:"brush",command:"clear",areas:[]})):s.dispatchAction({type:"takeGlobalCursor",key:"brush",brushOption:{brushType:"keep"===l?c:c!==l&&l,brushMode:"keep"===l?"multiple"===u?"single":"multiple":u}})},n.getDefaultOption=function(t){return{show:!0,type:CW.slice(),icon:{rect:"M7.3,34.7 M0.4,10V-0.2h9.8 M89.6,10V-0.2h-9.8 M0.4,60v10.2h9.8 M89.6,60v10.2h-9.8 M12.3,22.4V10.5h13.1 M33.6,10.5h7.8 M49.1,10.5h7.8 M77.5,22.4V10.5h-13 M12.3,31.1v8.2 M77.7,31.1v8.2 M12.3,47.6v11.9h13.1 M33.6,59.5h7.6 M49.1,59.5 h7.7 M77.5,47.6v11.9h-13",polygon:"M55.2,34.9c1.7,0,3.1,1.4,3.1,3.1s-1.4,3.1-3.1,3.1 s-3.1-1.4-3.1-3.1S53.5,34.9,55.2,34.9z M50.4,51c1.7,0,3.1,1.4,3.1,3.1c0,1.7-1.4,3.1-3.1,3.1c-1.7,0-3.1-1.4-3.1-3.1 C47.3,52.4,48.7,51,50.4,51z M55.6,37.1l1.5-7.8 M60.1,13.5l1.6-8.7l-7.8,4 M59,19l-1,5.3 M24,16.1l6.4,4.9l6.4-3.3 M48.5,11.6 l-5.9,3.1 M19.1,12.8L9.7,5.1l1.1,7.7 M13.4,29.8l1,7.3l6.6,1.6 M11.6,18.4l1,6.1 M32.8,41.9 M26.6,40.4 M27.3,40.2l6.1,1.6 M49.9,52.1l-5.6-7.6l-4.9-1.2",lineX:"M15.2,30 M19.7,15.6V1.9H29 M34.8,1.9H40.4 M55.3,15.6V1.9H45.9 M19.7,44.4V58.1H29 M34.8,58.1H40.4 M55.3,44.4 V58.1H45.9 M12.5,20.3l-9.4,9.6l9.6,9.8 M3.1,29.9h16.5 M62.5,20.3l9.4,9.6L62.3,39.7 M71.9,29.9H55.4",lineY:"M38.8,7.7 M52.7,12h13.2v9 M65.9,26.6V32 M52.7,46.3h13.2v-9 M24.9,12H11.8v9 M11.8,26.6V32 M24.9,46.3H11.8v-9 M48.2,5.1l-9.3-9l-9.4,9.2 M38.9-3.9V12 M48.2,53.3l-9.3,9l-9.4-9.2 M38.9,62.3V46.4",keep:"M4,10.5V1h10.3 M20.7,1h6.1 M33,1h6.1 M55.4,10.5V1H45.2 M4,17.3v6.6 M55.6,17.3v6.6 M4,30.5V40h10.3 M20.7,40 h6.1 M33,40h6.1 M55.4,30.5V40H45.2 M21,18.9h62.9v48.6H21V18.9z",clear:"M22,14.7l30.9,31 M52.9,14.7L22,45.7 M4.7,16.8V4.2h13.1 M26,4.2h7.8 M41.6,4.2h7.8 M70.3,16.8V4.2H57.2 M4.7,25.9v8.6 M70.3,25.9v8.6 M4.7,43.2v12.6h13.1 M26,55.8h7.8 M41.6,55.8h7.8 M70.3,43.2v12.6H57.2"},title:t.getLocaleModel().get(["toolbox","brush","title"])}},n}(Ba);const DW=SW;var TW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.layoutMode={type:"box",ignoreSize:!0},t}return se(n,r),n.type="title",n.defaultOption={z:6,show:!0,text:"",target:"blank",subtext:"",subtarget:"blank",left:0,top:0,backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,padding:5,itemGap:10,textStyle:{fontSize:18,fontWeight:"bold",color:"#464646"},subtextStyle:{fontSize:12,color:"#6E7079"}},n}(qt),AW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.render=function(t,s,l){if(this.group.removeAll(),t.get("show")){var c=this.group,u=t.getModel("textStyle"),f=t.getModel("subtextStyle"),p=t.get("textAlign"),m=Ct(t.get("textBaseline"),t.get("textVerticalAlign")),g=new an({style:Xn(u,{text:t.get("text"),fill:u.getTextColor()},{disableBox:!0}),z2:10}),v=g.getBoundingRect(),y=t.get("subtext"),b=new an({style:Xn(f,{text:y,fill:f.getTextColor(),y:v.height+t.get("itemGap"),verticalAlign:"top"},{disableBox:!0}),z2:10}),x=t.get("link"),C=t.get("sublink"),S=t.get("triggerEvent",!0);g.silent=!x&&!S,b.silent=!C&&!S,x&&g.on("click",function(){V0(x,"_"+t.get("target"))}),C&&b.on("click",function(){V0(C,"_"+t.get("subtarget"))}),mt(g).eventData=mt(b).eventData=S?{componentType:"title",componentIndex:t.componentIndex}:null,c.add(g),y&&c.add(b);var M=c.getBoundingRect(),T=t.getBoxLayoutParams();T.width=M.width,T.height=M.height;var A=dr(T,{width:l.getWidth(),height:l.getHeight()},t.get("padding"));p||("middle"===(p=t.get("left")||t.get("right"))&&(p="center"),"right"===p?A.x+=A.width:"center"===p&&(A.x+=A.width/2)),m||("center"===(m=t.get("top")||t.get("bottom"))&&(m="middle"),"bottom"===m?A.y+=A.height:"middle"===m&&(A.y+=A.height/2),m=m||"top"),c.x=A.x,c.y=A.y,c.markRedraw();var E={align:p,verticalAlign:m};g.setStyle(E),b.setStyle(E),M=c.getBoundingRect();var L=A.margin,R=t.getItemStyle(["color","opacity"]);R.fill=t.get("backgroundColor");var V=new Zt({shape:{x:M.x-L[3],y:M.y-L[0],width:M.width+L[1]+L[3],height:M.height+L[0]+L[2],r:t.get("borderRadius")},style:R,subPixelOptimize:!0,silent:!0});c.add(V)}},n.type="title",n}(di),oJ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.layoutMode="box",t}return se(n,r),n.prototype.init=function(t,s,l){this.mergeDefaultAndTheme(t,l),this._initData()},n.prototype.mergeOption=function(t){r.prototype.mergeOption.apply(this,arguments),this._initData()},n.prototype.setCurrentIndex=function(t){null==t&&(t=this.option.currentIndex);var s=this._data.count();this.option.loop?t=(t%s+s)%s:(t>=s&&(t=s-1),t<0&&(t=0)),this.option.currentIndex=t},n.prototype.getCurrentIndex=function(){return this.option.currentIndex},n.prototype.isIndexMax=function(){return this.getCurrentIndex()>=this._data.count()-1},n.prototype.setPlayState=function(t){this.option.autoPlay=!!t},n.prototype.getPlayState=function(){return!!this.option.autoPlay},n.prototype._initData=function(){var u,t=this.option,s=t.data||[],l=t.axisType,c=this._names=[];"category"===l?(u=[],U(s,function(m,g){var y,v=cr(Op(m),"");tt(m)?(y=rt(m)).value=g:y=g,u.push(y),c.push(v)})):u=s,(this._data=new Pa([{name:"value",type:{category:"ordinal",time:"time",value:"number"}[l]||"number"}],this)).initData(u,c)},n.prototype.getData=function(){return this._data},n.prototype.getCategories=function(){if("category"===this.get("axisType"))return this._names.slice()},n.type="timeline",n.defaultOption={z:4,show:!0,axisType:"time",realtime:!0,left:"20%",top:null,right:"20%",bottom:0,width:null,height:40,padding:5,controlPosition:"left",autoPlay:!1,rewind:!1,loop:!0,playInterval:2e3,currentIndex:0,itemStyle:{},label:{color:"#000"},data:[]},n}(qt);const A3=oJ;var k3=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="timeline.slider",n.defaultOption=Yd(A3.defaultOption,{backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderWidth:0,orient:"horizontal",inverse:!1,tooltip:{trigger:"item"},symbol:"circle",symbolSize:12,lineStyle:{show:!0,width:2,color:"#DAE1F5"},label:{position:"auto",show:!0,interval:"auto",rotate:0,color:"#A4B1D7"},itemStyle:{color:"#A4B1D7",borderWidth:1},checkpointStyle:{symbol:"circle",symbolSize:15,color:"#316bf3",borderColor:"#fff",borderWidth:2,shadowBlur:2,shadowOffsetX:1,shadowOffsetY:1,shadowColor:"rgba(0, 0, 0, 0.3)",animation:!0,animationDuration:300,animationEasing:"quinticInOut"},controlStyle:{show:!0,showPlayBtn:!0,showPrevBtn:!0,showNextBtn:!0,itemSize:24,itemGap:12,position:"left",playIcon:"path://M31.6,53C17.5,53,6,41.5,6,27.4S17.5,1.8,31.6,1.8C45.7,1.8,57.2,13.3,57.2,27.4S45.7,53,31.6,53z M31.6,3.3 C18.4,3.3,7.5,14.1,7.5,27.4c0,13.3,10.8,24.1,24.1,24.1C44.9,51.5,55.7,40.7,55.7,27.4C55.7,14.1,44.9,3.3,31.6,3.3z M24.9,21.3 c0-2.2,1.6-3.1,3.5-2l10.5,6.1c1.899,1.1,1.899,2.9,0,4l-10.5,6.1c-1.9,1.1-3.5,0.2-3.5-2V21.3z",stopIcon:"path://M30.9,53.2C16.8,53.2,5.3,41.7,5.3,27.6S16.8,2,30.9,2C45,2,56.4,13.5,56.4,27.6S45,53.2,30.9,53.2z M30.9,3.5C17.6,3.5,6.8,14.4,6.8,27.6c0,13.3,10.8,24.1,24.101,24.1C44.2,51.7,55,40.9,55,27.6C54.9,14.4,44.1,3.5,30.9,3.5z M36.9,35.8c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H36c0.5,0,0.9,0.4,0.9,1V35.8z M27.8,35.8 c0,0.601-0.4,1-0.9,1h-1.3c-0.5,0-0.9-0.399-0.9-1V19.5c0-0.6,0.4-1,0.9-1H27c0.5,0,0.9,0.4,0.9,1L27.8,35.8L27.8,35.8z",nextIcon:"M2,18.5A1.52,1.52,0,0,1,.92,18a1.49,1.49,0,0,1,0-2.12L7.81,9.36,1,3.11A1.5,1.5,0,1,1,3,.89l8,7.34a1.48,1.48,0,0,1,.49,1.09,1.51,1.51,0,0,1-.46,1.1L3,18.08A1.5,1.5,0,0,1,2,18.5Z",prevIcon:"M10,.5A1.52,1.52,0,0,1,11.08,1a1.49,1.49,0,0,1,0,2.12L4.19,9.64,11,15.89a1.5,1.5,0,1,1-2,2.22L1,10.77A1.48,1.48,0,0,1,.5,9.68,1.51,1.51,0,0,1,1,8.58L9,.92A1.5,1.5,0,0,1,10,.5Z",prevBtnSize:18,nextBtnSize:18,color:"#A4B1D7",borderColor:"#A4B1D7",borderWidth:1},emphasis:{label:{show:!0,color:"#6f778d"},itemStyle:{color:"#316BF3"},controlStyle:{color:"#316BF3",borderColor:"#316BF3",borderWidth:2}},progress:{lineStyle:{color:"#316BF3"},itemStyle:{color:"#316BF3"},label:{color:"#6f778d"}},data:[]}),n}(A3);Mi(k3,X0.prototype);const kW=k3;var E3=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="timeline",n}(di);const EW=E3;var IW=function(r){function n(t,s,l,c){var u=r.call(this,t,s,l)||this;return u.type=c||"value",u}return se(n,r),n.prototype.getLabelModel=function(){return this.model.getModel("label")},n.prototype.isHorizontal=function(){return"horizontal"===this.model.get("orient")},n}(Fo);const PW=IW;var g1=Math.PI,qo=un(),IE=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.init=function(t,s){this.api=s},n.prototype.render=function(t,s,l){if(this.model=t,this.api=l,this.ecModel=s,this.group.removeAll(),t.get("show",!0)){var c=this._layout(t,l),u=this._createGroup("_mainGroup"),f=this._createGroup("_labelGroup"),p=this._axis=this._createAxis(c,t);t.formatTooltip=function(m){return Y("nameValue",{noName:!0,value:p.scale.getLabel({value:m})})},U(["AxisLine","AxisTick","Control","CurrentPointer"],function(m){this["_render"+m](c,u,p,t)},this),this._renderAxisLabel(c,f,p,t),this._position(c,t)}this._doPlayStop(),this._updateTicksStatus()},n.prototype.remove=function(){this._clearTimer(),this.group.removeAll()},n.prototype.dispose=function(){this._clearTimer()},n.prototype._layout=function(t,s){var f,l=t.get(["label","position"]),c=t.get("orient"),u=function RW(r,n){return dr(r.getBoxLayoutParams(),{width:n.getWidth(),height:n.getHeight()},r.get("padding"))}(t,s),p={horizontal:"center",vertical:(f=null==l||"auto"===l?"horizontal"===c?u.y+u.height/2=0||"+"===f?"left":"right"},m={horizontal:f>=0||"+"===f?"top":"bottom",vertical:"middle"},g={horizontal:0,vertical:g1/2},v="vertical"===c?u.height:u.width,y=t.getModel("controlStyle"),b=y.get("show",!0),x=b?y.get("itemSize"):0,C=b?y.get("itemGap"):0,S=x+C,M=t.get(["label","rotate"])||0;M=M*g1/180;var T,A,E,L=y.get("position",!0),R=b&&y.get("showPlayBtn",!0),V=b&&y.get("showPrevBtn",!0),H=b&&y.get("showNextBtn",!0),G=0,j=v;"left"===L||"bottom"===L?(R&&(T=[0,0],G+=S),V&&(A=[G,0],G+=S),H&&(E=[j-x,0],j-=S)):(R&&(T=[j-x,0],j-=S),V&&(A=[0,0],G+=S),H&&(E=[j-x,0],j-=S));var $=[G,j];return t.get("inverse")&&$.reverse(),{viewRect:u,mainLength:v,orient:c,rotation:g[c],labelRotation:M,labelPosOpt:f,labelAlign:t.get(["label","align"])||p[c],labelBaseline:t.get(["label","verticalAlign"])||t.get(["label","baseline"])||m[c],playPosition:T,prevBtnPosition:A,nextBtnPosition:E,axisExtent:$,controlSize:x,controlGap:C}},n.prototype._position=function(t,s){var l=this._mainGroup,c=this._labelGroup,u=t.viewRect;if("vertical"===t.orient){var f=[1,0,0,1,0,0],p=u.x,m=u.y+u.height;_e(f,f,[-p,-m]),_c(f,f,-g1/2),_e(f,f,[p,m]),(u=u.clone()).applyTransform(f)}var g=T(u),v=T(l.getBoundingRect()),y=T(c.getBoundingRect()),b=[l.x,l.y],x=[c.x,c.y];x[0]=b[0]=g[0][0];var S,C=t.labelPosOpt;function M(E){E.originX=g[0][0]-E.x,E.originY=g[1][0]-E.y}function T(E){return[[E.x,E.x+E.width],[E.y,E.y+E.height]]}function A(E,L,R,V,H){E[V]+=R[V][H]-L[V][H]}null==C||Le(C)?(A(b,v,g,1,S="+"===C?0:1),A(x,y,g,1,1-S)):(A(b,v,g,1,S=C>=0?0:1),x[1]=b[1]+C),l.setPosition(b),c.setPosition(x),l.rotation=c.rotation=t.rotation,M(l),M(c)},n.prototype._createAxis=function(t,s){var l=s.getData(),c=s.get("axisType"),u=function I3(r,n){if(n=n||r.get("type"))switch(n){case"category":return new qw({ordinalMeta:r.getCategories(),extent:[1/0,-1/0]});case"time":return new P_({locale:r.ecModel.getLocaleModel(),useUTC:r.ecModel.get("useUTC")});default:return new Jl}}(s,c);u.getTicks=function(){return l.mapArray(["value"],function(m){return{value:m}})};var f=l.getDataExtent("value");u.setExtent(f[0],f[1]),u.calcNiceTicks();var p=new PW("value",u,t.axisExtent,c);return p.model=s,p},n.prototype._createGroup=function(t){var s=this[t]=new lt;return this.group.add(s),s},n.prototype._renderAxisLine=function(t,s,l,c){var u=l.getExtent();if(c.get(["lineStyle","show"])){var f=new wr({shape:{x1:u[0],y1:0,x2:u[1],y2:0},style:ge({lineCap:"round"},c.getModel("lineStyle").getLineStyle()),silent:!0,z2:1});s.add(f);var p=this._progressLine=new wr({shape:{x1:u[0],x2:this._currentPointer?this._currentPointer.x:u[0],y1:0,y2:0},style:Je({lineCap:"round",lineWidth:f.style.lineWidth},c.getModel(["progress","lineStyle"]).getLineStyle()),silent:!0,z2:1});s.add(p)}},n.prototype._renderAxisTick=function(t,s,l,c){var u=this,f=c.getData(),p=l.scale.getTicks();this._tickSymbols=[],U(p,function(m){var g=l.dataToCoord(m.value),v=f.getItemModel(m.value),y=v.getModel("itemStyle"),b=v.getModel(["emphasis","itemStyle"]),x=v.getModel(["progress","itemStyle"]),C={x:g,y:0,onclick:Ne(u._changeTimeline,u,m.value)},S=P3(v,y,s,C);S.ensureState("emphasis").style=b.getItemStyle(),S.ensureState("progress").style=x.getItemStyle(),Ll(S);var M=mt(S);v.get("tooltip")?(M.dataIndex=m.value,M.dataModel=c):M.dataIndex=M.dataModel=null,u._tickSymbols.push(S)})},n.prototype._renderAxisLabel=function(t,s,l,c){var u=this;if(l.getLabelModel().get("show")){var p=c.getData(),m=l.getViewLabels();this._tickLabels=[],U(m,function(g){var v=g.tickValue,y=p.getItemModel(v),b=y.getModel("label"),x=y.getModel(["emphasis","label"]),C=y.getModel(["progress","label"]),S=l.dataToCoord(g.tickValue),M=new an({x:S,y:0,rotation:t.labelRotation-t.rotation,onclick:Ne(u._changeTimeline,u,v),silent:!1,style:Xn(b,{text:g.formattedLabel,align:t.labelAlign,verticalAlign:t.labelBaseline})});M.ensureState("emphasis").style=Xn(x),M.ensureState("progress").style=Xn(C),s.add(M),Ll(M),qo(M).dataIndex=v,u._tickLabels.push(M)})}},n.prototype._renderControl=function(t,s,l,c){var u=t.controlSize,f=t.rotation,p=c.getModel("controlStyle").getItemStyle(),m=c.getModel(["emphasis","controlStyle"]).getItemStyle(),g=c.getPlayState(),v=c.get("inverse",!0);function y(b,x,C,S){if(b){var M=_t(Ct(c.get(["controlStyle",x+"BtnSize"]),u),u),A=function OW(r,n,t,s){var l=s.style,c=lu(r.get(["controlStyle",n]),s||{},new yt(t[0],t[1],t[2],t[3]));return l&&c.setStyle(l),c}(c,x+"Icon",[0,-M/2,M,M],{x:b[0],y:b[1],originX:u/2,originY:0,rotation:S?-f:0,rectHover:!0,style:p,onclick:C});A.ensureState("emphasis").style=m,s.add(A),Ll(A)}}y(t.nextBtnPosition,"next",Ne(this._changeTimeline,this,v?"-":"+")),y(t.prevBtnPosition,"prev",Ne(this._changeTimeline,this,v?"+":"-")),y(t.playPosition,g?"stop":"play",Ne(this._handlePlayClick,this,!g),!0)},n.prototype._renderCurrentPointer=function(t,s,l,c){var u=c.getData(),f=c.getCurrentIndex(),p=u.getItemModel(f).getModel("checkpointStyle"),m=this;this._currentPointer=P3(p,p,this._mainGroup,{},this._currentPointer,{onCreate:function(v){v.draggable=!0,v.drift=Ne(m._handlePointerDrag,m),v.ondragend=Ne(m._handlePointerDragend,m),LW(v,m._progressLine,f,l,c,!0)},onUpdate:function(v){LW(v,m._progressLine,f,l,c)}})},n.prototype._handlePlayClick=function(t){this._clearTimer(),this.api.dispatchAction({type:"timelinePlayChange",playState:t,from:this.uid})},n.prototype._handlePointerDrag=function(t,s,l){this._clearTimer(),this._pointerChangeTimeline([l.offsetX,l.offsetY])},n.prototype._handlePointerDragend=function(t){this._pointerChangeTimeline([t.offsetX,t.offsetY],!0)},n.prototype._pointerChangeTimeline=function(t,s){var l=this._toAxisCoord(t)[0],u=So(this._axis.getExtent().slice());l>u[1]&&(l=u[1]),l=0&&(u[c]=+u[c].toFixed(y)),[u,v]}var PE={min:$e(y1,"min"),max:$e(y1,"max"),average:$e(y1,"average"),median:$e(y1,"median")};function Ja(r,n){if(n){var t=r.getData(),s=r.coordinateSystem,l=s&&s.dimensions;if(!function HW(r){return!isNaN(parseFloat(r.x))&&!isNaN(parseFloat(r.y))}(n)&&!ye(n.coord)&&ye(l)){var c=F3(n,t,s,r);if((n=rt(n)).type&&PE[n.type]&&c.baseAxis&&c.valueAxis){var u=Rt(l,c.baseAxis.dim),f=Rt(l,c.valueAxis.dim),p=PE[n.type](t,c.baseDataDim,c.valueDataDim,u,f);n.coord=p[0],n.value=p[1]}else n.coord=[null!=n.xAxis?n.xAxis:n.radiusAxis,null!=n.yAxis?n.yAxis:n.angleAxis]}if(null!=n.coord&&ye(l))for(var m=n.coord,g=0;g<2;g++)PE[m[g]]&&(m[g]=N3(t,t.mapDimension(l[g]),m[g]));else n.coord=[];return n}}function F3(r,n,t,s){var l={};return null!=r.valueIndex||null!=r.valueDim?(l.valueDataDim=null!=r.valueIndex?n.getDimension(r.valueIndex):r.valueDim,l.valueAxis=t.getAxis(function lJ(r,n){var t=r.getData().getDimensionInfo(n);return t&&t.coordDim}(s,l.valueDataDim)),l.baseAxis=t.getOtherAxis(l.valueAxis),l.baseDataDim=n.mapDimension(l.baseAxis.dim)):(l.baseAxis=s.getBaseAxis(),l.valueAxis=t.getOtherAxis(l.baseAxis),l.baseDataDim=n.mapDimension(l.baseAxis.dim),l.valueDataDim=n.mapDimension(l.valueAxis.dim)),l}function b1(r,n){return!(r&&r.containData&&n.coord&&!_1(n))||r.containData(n.coord)}function GW(r,n){return r?function(t,s,l,c){return ru(c<2?t.coord&&t.coord[c]:t.value,n[c])}:function(t,s,l,c){return ru(t.value,n[c])}}function N3(r,n,t){if("average"===t){var s=0,l=0;return r.each(n,function(c,u){isNaN(c)||(s+=c,l++)}),s/l}return"median"===t?r.getMedian(n):r.getDataExtent(n)["max"===t?1:0]}var B3=un(),dJ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.init=function(){this.markerGroupMap=Ye()},n.prototype.render=function(t,s,l){var c=this,u=this.markerGroupMap;u.each(function(f){B3(f).keep=!1}),s.eachSeries(function(f){var p=ju.getMarkerModelFromSeries(f,c.type);p&&c.renderSeries(f,p,s,l)}),u.each(function(f){!B3(f).keep&&c.group.remove(f.group)})},n.prototype.markKeep=function(t){B3(t).keep=!0},n.prototype.toggleBlurSeries=function(t,s){var l=this;U(t,function(c){var u=ju.getMarkerModelFromSeries(c,l.type);u&&u.getData().eachItemGraphicEl(function(p){p&&(s?$P(p):E0(p))})})},n.type="marker",n}(di);const V3=dJ;function z3(r,n,t){var s=n.coordinateSystem;r.each(function(l){var u,c=r.getItemModel(l),f=Re(c.get("x"),t.getWidth()),p=Re(c.get("y"),t.getHeight());if(isNaN(f)||isNaN(p)){if(n.getMarkerPosition)u=n.getMarkerPosition(r.getValues(r.dimensions,l));else if(s){var m=r.get(s.dimensions[0],l),g=r.get(s.dimensions[1],l);u=s.dataToPoint([m,g])}}else u=[f,p];isNaN(f)||(u[0]=f),isNaN(p)||(u[1]=p),r.setItemLayout(l,u)})}var UW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.updateTransform=function(t,s,l){s.eachSeries(function(c){var u=ju.getMarkerModelFromSeries(c,"markPoint");u&&(z3(u.getData(),c,l),this.markerGroupMap.get(c.id).updateLayout())},this)},n.prototype.renderSeries=function(t,s,l,c){var u=t.coordinateSystem,f=t.id,p=t.getData(),m=this.markerGroupMap,g=m.get(f)||m.set(f,new nd),v=function jW(r,n,t){var s;s=r?xe(r&&r.dimensions,function(f){return ge(ge({},n.getData().getDimensionInfo(n.getData().mapDimension(f))||{}),{name:f,ordinalMeta:null})}):[{name:"value",type:"float"}];var l=new Pa(s,t),c=xe(t.get("data"),$e(Ja,n));r&&(c=Dn(c,$e(b1,r)));var u=GW(!!r,s);return l.initData(c,null,u),l}(u,t,s);s.setData(v),z3(s.getData(),t,c),v.each(function(y){var b=v.getItemModel(y),x=b.getShallow("symbol"),C=b.getShallow("symbolSize"),S=b.getShallow("symbolRotate"),M=b.getShallow("symbolOffset"),T=b.getShallow("symbolKeepAspect");if(qe(x)||qe(C)||qe(S)||qe(M)){var A=s.getRawValue(y),E=s.getDataParams(y);qe(x)&&(x=x(A,E)),qe(C)&&(C=C(A,E)),qe(S)&&(S=S(A,E)),qe(M)&&(M=M(A,E))}var L=b.getModel("itemStyle").getItemStyle(),R=_s(p,"color");L.fill||(L.fill=R),v.setItemVisual(y,{symbol:x,symbolSize:C,symbolRotate:S,symbolOffset:M,symbolKeepAspect:T,style:L})}),g.updateData(v),this.group.add(g.group),v.eachItemGraphicEl(function(y){y.traverse(function(b){mt(b).dataModel=s})}),this.markKeep(g),g.group.silent=s.get("silent")||t.get("silent")},n.type="markPoint",n}(V3);const $W=UW;var YW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.createMarkerModelFromSeries=function(t,s,l){return new n(t,s,l)},n.type="markLine",n.defaultOption={z:5,symbol:["circle","arrow"],symbolSize:[8,16],symbolOffset:0,precision:2,tooltip:{trigger:"item"},label:{show:!0,position:"end",distance:5},lineStyle:{type:"dashed"},emphasis:{label:{show:!0},lineStyle:{width:3}},animationEasing:"linear"},n}(ju);const qW=YW;var w1=un(),XW=function(r,n,t,s){var c,l=r.getData();if(ye(s))c=s;else{var u=s.type;if("min"===u||"max"===u||"average"===u||"median"===u||null!=s.xAxis||null!=s.yAxis){var f=void 0,p=void 0;if(null!=s.yAxis||null!=s.xAxis)f=n.getAxis(null!=s.yAxis?"y":"x"),p=Tr(s.yAxis,s.xAxis);else{var m=F3(s,l,n,r);f=m.valueAxis,p=N3(l,_O(l,m.valueDataDim),u)}var v="x"===f.dim?0:1,y=1-v,b=rt(s),x={coord:[]};b.type=null,b.coord=[],b.coord[y]=-1/0,x.coord[y]=1/0;var C=t.get("precision");C>=0&&rn(p)&&(p=+p.toFixed(Math.min(C,20))),b.coord[v]=x.coord[v]=p,c=[b,x,{type:u,valueIndex:s.valueIndex,value:p}]}else c=[]}var S=[Ja(r,c[0]),Ja(r,c[1]),ge({},c[2])];return S[2].type=S[2].type||null,At(S[2],S[0]),At(S[2],S[1]),S};function x1(r){return!isNaN(r)&&!isFinite(r)}function H3(r,n,t,s){var l=1-r,c=s.dimensions[r];return x1(n[l])&&x1(t[l])&&n[r]===t[r]&&s.getAxis(c).containData(n[r])}function ZW(r,n){if("cartesian2d"===r.type){var t=n[0].coord,s=n[1].coord;if(t&&s&&(H3(1,t,s,r)||H3(0,t,s,r)))return!0}return b1(r,n[0])&&b1(r,n[1])}function RE(r,n,t,s,l){var f,c=s.coordinateSystem,u=r.getItemModel(n),p=Re(u.get("x"),l.getWidth()),m=Re(u.get("y"),l.getHeight());if(isNaN(p)||isNaN(m)){if(s.getMarkerPosition)f=s.getMarkerPosition(r.getValues(r.dimensions,n));else{var v=r.get((g=c.dimensions)[0],n),y=r.get(g[1],n);f=c.dataToPoint([v,y])}if(Su(c,"cartesian2d")){var g,b=c.getAxis("x"),x=c.getAxis("y");x1(r.get((g=c.dimensions)[0],n))?f[0]=b.toGlobalCoord(b.getExtent()[t?0:1]):x1(r.get(g[1],n))&&(f[1]=x.toGlobalCoord(x.getExtent()[t?0:1]))}isNaN(p)||(f[0]=p),isNaN(m)||(f[1]=m)}else f=[p,m];r.setItemLayout(n,f)}var KW=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.updateTransform=function(t,s,l){s.eachSeries(function(c){var u=ju.getMarkerModelFromSeries(c,"markLine");if(u){var f=u.getData(),p=w1(u).from,m=w1(u).to;p.each(function(g){RE(p,g,!0,c,l),RE(m,g,!1,c,l)}),f.each(function(g){f.setItemLayout(g,[p.getItemLayout(g),m.getItemLayout(g)])}),this.markerGroupMap.get(c.id).updateLayout()}},this)},n.prototype.renderSeries=function(t,s,l,c){var u=t.coordinateSystem,f=t.id,p=t.getData(),m=this.markerGroupMap,g=m.get(f)||m.set(f,new ok);this.group.add(g.group);var v=function G3(r,n,t){var s;s=r?xe(r&&r.dimensions,function(m){return ge(ge({},n.getData().getDimensionInfo(n.getData().mapDimension(m))||{}),{name:m,ordinalMeta:null})}):[{name:"value",type:"float"}];var l=new Pa(s,t),c=new Pa(s,t),u=new Pa([],t),f=xe(t.get("data"),$e(XW,n,r,t));r&&(f=Dn(f,$e(ZW,r)));var p=GW(!!r,s);return l.initData(xe(f,function(m){return m[0]}),null,p),c.initData(xe(f,function(m){return m[1]}),null,p),u.initData(xe(f,function(m){return m[2]})),u.hasItemOption=!0,{from:l,to:c,line:u}}(u,t,s),y=v.from,b=v.to,x=v.line;w1(s).from=y,w1(s).to=b,s.setData(x);var C=s.get("symbol"),S=s.get("symbolSize"),M=s.get("symbolRotate"),T=s.get("symbolOffset");function A(E,L,R){var V=E.getItemModel(L);RE(E,L,R,t,c);var H=V.getModel("itemStyle").getItemStyle();null==H.fill&&(H.fill=_s(p,"color")),E.setItemVisual(L,{symbolKeepAspect:V.get("symbolKeepAspect"),symbolOffset:Ct(V.get("symbolOffset",!0),T[R?0:1]),symbolRotate:Ct(V.get("symbolRotate",!0),M[R?0:1]),symbolSize:Ct(V.get("symbolSize"),S[R?0:1]),symbol:Ct(V.get("symbol",!0),C[R?0:1]),style:H})}ye(C)||(C=[C,C]),ye(S)||(S=[S,S]),ye(M)||(M=[M,M]),ye(T)||(T=[T,T]),v.from.each(function(E){A(y,E,!0),A(b,E,!1)}),x.each(function(E){var L=x.getItemModel(E).getModel("lineStyle").getLineStyle();x.setItemLayout(E,[y.getItemLayout(E),b.getItemLayout(E)]),null==L.stroke&&(L.stroke=y.getItemVisual(E,"style").fill),x.setItemVisual(E,{fromSymbolKeepAspect:y.getItemVisual(E,"symbolKeepAspect"),fromSymbolOffset:y.getItemVisual(E,"symbolOffset"),fromSymbolRotate:y.getItemVisual(E,"symbolRotate"),fromSymbolSize:y.getItemVisual(E,"symbolSize"),fromSymbol:y.getItemVisual(E,"symbol"),toSymbolKeepAspect:b.getItemVisual(E,"symbolKeepAspect"),toSymbolOffset:b.getItemVisual(E,"symbolOffset"),toSymbolRotate:b.getItemVisual(E,"symbolRotate"),toSymbolSize:b.getItemVisual(E,"symbolSize"),toSymbol:b.getItemVisual(E,"symbol"),style:L})}),g.updateData(x),v.line.eachItemGraphicEl(function(E){mt(E).dataModel=s,E.traverse(function(L){mt(L).dataModel=s})}),this.markKeep(g),g.group.silent=s.get("silent")||t.get("silent")},n.type="markLine",n}(V3);const QW=KW;var e9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.createMarkerModelFromSeries=function(t,s,l){return new n(t,s,l)},n.type="markArea",n.defaultOption={z:1,tooltip:{trigger:"item"},animation:!1,label:{show:!0,position:"top"},itemStyle:{borderWidth:0},emphasis:{label:{show:!0,position:"top"}}},n}(ju);const t9=e9;var C1=un(),n9=function(r,n,t,s){var l=s[0],c=s[1];if(l&&c){var u=Ja(r,l),f=Ja(r,c),p=u.coord,m=f.coord;p[0]=Tr(p[0],-1/0),p[1]=Tr(p[1],-1/0),m[0]=Tr(m[0],1/0),m[1]=Tr(m[1],1/0);var g=Rb([{},u,f]);return g.coord=[u.coord,f.coord],g.x0=u.x,g.y0=u.y,g.x1=f.x,g.y1=f.y,g}};function S1(r){return!isNaN(r)&&!isFinite(r)}function U3(r,n,t,s){var l=1-r;return S1(n[l])&&S1(t[l])}function i9(r,n){var t=n.coord[0],s=n.coord[1],l={coord:t,x:n.x0,y:n.y0},c={coord:s,x:n.x1,y:n.y1};return Su(r,"cartesian2d")?!(!t||!s||!U3(1,t,s)&&!U3(0,t,s))||function cJ(r,n,t){return!(r&&r.containZone&&n.coord&&t.coord&&!_1(n)&&!_1(t))||r.containZone(n.coord,t.coord)}(r,l,c):b1(r,l)||b1(r,c)}function j3(r,n,t,s,l){var f,c=s.coordinateSystem,u=r.getItemModel(n),p=Re(u.get(t[0]),l.getWidth()),m=Re(u.get(t[1]),l.getHeight());if(isNaN(p)||isNaN(m)){if(s.getMarkerPosition){var g=r.getValues(["x0","y0"],n),v=r.getValues(["x1","y1"],n),y=c.clampData(g),b=c.clampData(v),x=[];x[0]="x0"===t[0]?y[0]>b[0]?v[0]:g[0]:y[0]>b[0]?g[0]:v[0],x[1]="y0"===t[1]?y[1]>b[1]?v[1]:g[1]:y[1]>b[1]?g[1]:v[1],f=s.getMarkerPosition(x,t,!0)}else{var M=[C=r.get(t[0],n),S=r.get(t[1],n)];c.clampData&&c.clampData(M,M),f=c.dataToPoint(M,!0)}if(Su(c,"cartesian2d")){var T=c.getAxis("x"),A=c.getAxis("y"),C=r.get(t[0],n),S=r.get(t[1],n);S1(C)?f[0]=T.toGlobalCoord(T.getExtent()["x0"===t[0]?0:1]):S1(S)&&(f[1]=A.toGlobalCoord(A.getExtent()["y0"===t[1]?0:1]))}isNaN(p)||(f[0]=p),isNaN(m)||(f[1]=m)}else f=[p,m];return f}var $3=[["x0","y0"],["x1","y0"],["x1","y1"],["x0","y1"]],r9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.updateTransform=function(t,s,l){s.eachSeries(function(c){var u=ju.getMarkerModelFromSeries(c,"markArea");if(u){var f=u.getData();f.each(function(p){var m=xe($3,function(v){return j3(f,p,v,c,l)});f.setItemLayout(p,m),f.getItemGraphicEl(p).setShape("points",m)})}},this)},n.prototype.renderSeries=function(t,s,l,c){var u=t.coordinateSystem,f=t.id,p=t.getData(),m=this.markerGroupMap,g=m.get(f)||m.set(f,{group:new lt});this.group.add(g.group),this.markKeep(g);var v=function a9(r,n,t){var s,l;if(r){var u=xe(r&&r.dimensions,function(m){var g=n.getData();return ge(ge({},g.getDimensionInfo(g.mapDimension(m))||{}),{name:m,ordinalMeta:null})});l=xe(["x0","y0","x1","y1"],function(m,g){return{name:m,type:u[g%2].type}}),s=new Pa(l,t)}else s=new Pa(l=[{name:"value",type:"float"}],t);var f=xe(t.get("data"),$e(n9,n,r,t));r&&(f=Dn(f,$e(i9,r)));var p=r?function(m,g,v,y){return ru(m.coord[Math.floor(y/2)][y%2],l[y])}:function(m,g,v,y){return ru(m.value,l[y])};return s.initData(f,null,p),s.hasItemOption=!0,s}(u,t,s);s.setData(v),v.each(function(y){var b=xe($3,function(H){return j3(v,y,H,t,c)}),x=u.getAxis("x").scale,C=u.getAxis("y").scale,S=x.getExtent(),M=C.getExtent(),T=[x.parse(v.get("x0",y)),x.parse(v.get("x1",y))],A=[C.parse(v.get("y0",y)),C.parse(v.get("y1",y))];So(T),So(A),v.setItemLayout(y,{points:b,allClipped:!!(S[0]>T[1]||S[1]A[1]||M[1]=0},n.prototype.getOrient=function(){return"vertical"===this.get("orient")?{index:1,name:"vertical"}:{index:0,name:"horizontal"}},n.type="legend.plain",n.dependencies=["series"],n.defaultOption={z:4,show:!0,orient:"horizontal",left:"center",top:0,align:"auto",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",borderRadius:0,borderWidth:0,padding:5,itemGap:10,itemWidth:25,itemHeight:14,symbolRotate:"inherit",symbolKeepAspect:!0,inactiveColor:"#ccc",inactiveBorderColor:"#ccc",inactiveBorderWidth:"auto",itemStyle:{color:"inherit",opacity:"inherit",borderColor:"inherit",borderWidth:"auto",borderCap:"inherit",borderJoin:"inherit",borderDashOffset:"inherit",borderMiterLimit:"inherit"},lineStyle:{width:"auto",color:"inherit",inactiveColor:"#ccc",inactiveWidth:2,opacity:"inherit",type:"inherit",cap:"inherit",join:"inherit",dashOffset:"inherit",miterLimit:"inherit"},textStyle:{color:"#333"},selectedMode:!0,selector:!1,selectorLabel:{show:!0,borderRadius:10,padding:[3,5,3,5],fontSize:12,fontFamily:"sans-serif",color:"#666",borderWidth:1,borderColor:"#666"},emphasis:{selectorLabel:{show:!0,color:"#eee",backgroundColor:"#666"}},selectorPosition:"auto",selectorItemGap:7,selectorButtonGap:10,tooltip:{show:!1}},n}(qt);const D1=Y3;var $u=$e,OE=U,xg=lt,q3=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.newlineDisabled=!1,t}return se(n,r),n.prototype.init=function(){this.group.add(this._contentGroup=new xg),this.group.add(this._selectorGroup=new xg),this._isFirstRender=!0},n.prototype.getContentGroup=function(){return this._contentGroup},n.prototype.getSelectorGroup=function(){return this._selectorGroup},n.prototype.render=function(t,s,l){var c=this._isFirstRender;if(this._isFirstRender=!1,this.resetInner(),t.get("show",!0)){var u=t.get("align"),f=t.get("orient");(!u||"auto"===u)&&(u="right"===t.get("left")&&"vertical"===f?"right":"left");var p=t.get("selector",!0),m=t.get("selectorPosition",!0);p&&(!m||"auto"===m)&&(m="horizontal"===f?"end":"start"),this.renderInner(u,t,s,l,p,f,m);var g=t.getBoxLayoutParams(),v={width:l.getWidth(),height:l.getHeight()},y=t.get("padding"),b=dr(g,v,y),x=this.layoutInner(t,u,b,c,p,m),C=dr(Je({width:x.width,height:x.height},g),v,y);this.group.x=C.x-x.x,this.group.y=C.y-x.y,this.group.markRedraw(),this.group.add(this._backgroundEl=gE(x,t))}},n.prototype.resetInner=function(){this.getContentGroup().removeAll(),this._backgroundEl&&this.group.remove(this._backgroundEl),this.getSelectorGroup().removeAll()},n.prototype.renderInner=function(t,s,l,c,u,f,p){var m=this.getContentGroup(),g=Ye(),v=s.get("selectedMode"),y=[];l.eachRawSeries(function(b){!b.get("legendHoverLink")&&y.push(b.id)}),OE(s.getData(),function(b,x){var C=b.get("name");if(!this.newlineDisabled&&(""===C||"\n"===C)){var S=new xg;return S.newline=!0,void m.add(S)}var M=l.getSeriesByName(C)[0];if(!g.get(C))if(M){var T=M.getData(),A=T.getVisual("legendLineStyle")||{},E=T.getVisual("legendIcon"),L=T.getVisual("style");this._createItem(M,C,x,b,s,t,A,L,E,v,c).on("click",$u(M1,C,null,c,y)).on("mouseover",$u(FE,M.name,null,c,y)).on("mouseout",$u(eo,M.name,null,c,y)),g.set(C,!0)}else l.eachRawSeries(function(V){if(!g.get(C)&&V.legendVisualProvider){var H=V.legendVisualProvider;if(!H.containName(C))return;var G=H.indexOfName(C),j=H.getItemVisual(G,"style"),$=H.getItemVisual(G,"legendIcon"),q=$r(j.fill);q&&0===q[3]&&(q[3]=.2,j=ge(ge({},j),{fill:ss(q,"rgba")})),this._createItem(V,C,x,b,s,t,{},j,$,v,c).on("click",$u(M1,null,C,c,y)).on("mouseover",$u(FE,null,C,c,y)).on("mouseout",$u(eo,null,C,c,y)),g.set(C,!0)}},this)},this),u&&this._createSelector(u,s,c,f,p)},n.prototype._createSelector=function(t,s,l,c,u){var f=this.getSelectorGroup();OE(t,function(m){var g=m.type,v=new an({style:{x:0,y:0,align:"center",verticalAlign:"middle"},onclick:function(){l.dispatchAction({type:"all"===g?"legendAllSelect":"legendInverseSelect"})}});f.add(v),Xr(v,{normal:s.getModel("selectorLabel"),emphasis:s.getModel(["emphasis","selectorLabel"])},{defaultText:m.title}),Ll(v)})},n.prototype._createItem=function(t,s,l,c,u,f,p,m,g,v,y){var b=t.visualDrawType,x=u.get("itemWidth"),C=u.get("itemHeight"),S=u.isSelected(s),M=c.get("symbolRotate"),T=c.get("symbolKeepAspect"),A=c.get("icon"),E=function X3(r,n,t,s,l,c,u){function f(S,M){"auto"===S.lineWidth&&(S.lineWidth=M.lineWidth>0?2:0),OE(S,function(T,A){"inherit"===S[A]&&(S[A]=M[A])})}var p=n.getModel("itemStyle"),m=p.getItemStyle(),g=0===r.lastIndexOf("empty",0)?"fill":"stroke",v=p.getShallow("decal");m.decal=v&&"inherit"!==v?pu(v,u):s.decal,"inherit"===m.fill&&(m.fill=s[l]),"inherit"===m.stroke&&(m.stroke=s[g]),"inherit"===m.opacity&&(m.opacity=("fill"===l?s:t).opacity),f(m,s);var y=n.getModel("lineStyle"),b=y.getLineStyle();if(f(b,t),"auto"===m.fill&&(m.fill=s.fill),"auto"===m.stroke&&(m.stroke=s.fill),"auto"===b.stroke&&(b.stroke=s.fill),!c){var x=n.get("inactiveBorderWidth");m.lineWidth="auto"===x?s.lineWidth>0&&m[g]?2:0:m.lineWidth,m.fill=n.get("inactiveColor"),m.stroke=n.get("inactiveBorderColor"),b.stroke=y.get("inactiveColor"),b.lineWidth=y.get("inactiveWidth")}return{itemStyle:m,lineStyle:b}}(g=A||g||"roundRect",c,p,m,b,S,y),L=new xg,R=c.getModel("textStyle");if(!qe(t.getLegendIcon)||A&&"inherit"!==A){var V="inherit"===A&&t.getData().getVisual("symbol")?"inherit"===M?t.getData().getVisual("symbolRotate"):M:0;L.add(function Z3(r){var n=r.icon||"roundRect",t=Ji(n,0,0,r.itemWidth,r.itemHeight,r.itemStyle.fill,r.symbolKeepAspect);return t.setStyle(r.itemStyle),t.rotation=(r.iconRotate||0)*Math.PI/180,t.setOrigin([r.itemWidth/2,r.itemHeight/2]),n.indexOf("empty")>-1&&(t.style.stroke=t.style.fill,t.style.fill="#fff",t.style.lineWidth=2),t}({itemWidth:x,itemHeight:C,icon:g,iconRotate:V,itemStyle:E.itemStyle,lineStyle:E.lineStyle,symbolKeepAspect:T}))}else L.add(t.getLegendIcon({itemWidth:x,itemHeight:C,icon:g,iconRotate:M,itemStyle:E.itemStyle,lineStyle:E.lineStyle,symbolKeepAspect:T}));var H="left"===f?x+5:-5,G=f,j=u.get("formatter"),$=s;Le(j)&&j?$=j.replace("{name}",s??""):qe(j)&&($=j(s));var q=c.get("inactiveColor");L.add(new an({style:Xn(R,{text:$,x:H,y:C/2,fill:S?R.getTextColor():q,align:G,verticalAlign:"middle"})}));var K=new Zt({shape:L.getBoundingRect(),invisible:!0}),ee=c.getModel("tooltip");return ee.get("show")&&cu({el:K,componentModel:u,itemName:s,itemTooltipOption:ee.option}),L.add(K),L.eachChild(function(ne){ne.silent=!0}),K.silent=!v,this.getContentGroup().add(L),Ll(L),L.__legendDataIndex=l,L},n.prototype.layoutInner=function(t,s,l,c,u,f){var p=this.getContentGroup(),m=this.getSelectorGroup();Bc(t.get("orient"),p,t.get("itemGap"),l.width,l.height);var g=p.getBoundingRect(),v=[-g.x,-g.y];if(m.markRedraw(),p.markRedraw(),u){Bc("horizontal",m,t.get("selectorItemGap",!0));var y=m.getBoundingRect(),b=[-y.x,-y.y],x=t.get("selectorButtonGap",!0),C=t.getOrient().index,S=0===C?"width":"height",M=0===C?"height":"width",T=0===C?"y":"x";"end"===f?b[C]+=g[S]+x:v[C]+=y[S]+x,b[1-C]+=g[M]/2-y[M]/2,m.x=b[0],m.y=b[1],p.x=v[0],p.y=v[1];var A={x:0,y:0};return A[S]=g[S]+x+y[S],A[M]=Math.max(g[M],y[M]),A[T]=Math.min(0,y[T]+b[1-C]),A}return p.x=v[0],p.y=v[1],this.group.getBoundingRect()},n.prototype.remove=function(){this.getContentGroup().removeAll(),this._isFirstRender=!0},n.type="legend.plain",n}(di);function M1(r,n,t,s){eo(r,n,t,s),t.dispatchAction({type:"legendToggleSelect",name:r??n}),FE(r,n,t,s)}function LE(r){for(var t,n=r.getZr().storage.getDisplayList(),s=0,l=n.length;sl[u],S=[-b.x,-b.y];s||(S[c]=g[m]);var M=[0,0],T=[-x.x,-x.y],A=Ct(t.get("pageButtonGap",!0),t.get("itemGap",!0));C&&("end"===t.get("pageButtonPosition",!0)?T[c]+=l[u]-x[u]:M[c]+=x[u]+A),T[1-c]+=b[f]/2-x[f]/2,g.setPosition(S),v.setPosition(M),y.setPosition(T);var L={x:0,y:0};if(L[u]=C?l[u]:b[u],L[f]=Math.max(b[f],x[f]),L[p]=Math.min(0,x[p]+T[1-c]),v.__rectSize=l[u],C){var R={x:0,y:0};R[u]=Math.max(l[u]-x[u]-A,0),R[f]=L[f],v.setClipPath(new Zt({shape:R})),v.__rectSize=R[u]}else y.eachChild(function(H){H.attr({invisible:!0,silent:!0})});var V=this._getPageInfo(t);return null!=V.pageIndex&&fn(g,{x:V.contentPosition[0],y:V.contentPosition[1]},C?t:null),this._updatePageInfoView(t,V),L},n.prototype._pageGo=function(t,s,l){var c=this._getPageInfo(s)[t];null!=c&&l.dispatchAction({type:"legendScroll",scrollDataIndex:c,legendId:s.id})},n.prototype._updatePageInfoView=function(t,s){var l=this._controllerGroup;U(["pagePrev","pageNext"],function(g){var y=null!=s[g+"DataIndex"],b=l.childOfName(g);b&&(b.setStyle("fill",t.get(y?"pageIconColor":"pageIconInactiveColor",!0)),b.cursor=y?"pointer":"default")});var c=l.childOfName("pageText"),u=t.get("pageFormatter"),f=s.pageIndex,p=null!=f?f+1:0,m=s.pageCount;c&&u&&c.setStyle("text",Le(u)?u.replace("{current}",null==p?"":p+"").replace("{total}",null==m?"":m+""):u({current:p,total:m}))},n.prototype._getPageInfo=function(t){var s=t.get("scrollDataIndex",!0),l=this.getContentGroup(),c=this._containerGroup.__rectSize,u=t.getOrient().index,f=NE[u],p=BE[u],m=this._findTargetItemIndex(s),g=l.children(),v=g[m],y=g.length,b=y?1:0,x={contentPosition:[l.x,l.y],pageCount:b,pageIndex:b-1,pagePrevDataIndex:null,pageNextDataIndex:null};if(!v)return x;var C=E(v);x.contentPosition[u]=-C.s;for(var S=m+1,M=C,T=C,A=null;S<=y;++S)(!(A=E(g[S]))&&T.e>M.s+c||A&&!L(A,M.s))&&(M=T.i>M.i?T:A)&&(null==x.pageNextDataIndex&&(x.pageNextDataIndex=M.i),++x.pageCount),T=A;for(S=m-1,M=C,T=C,A=null;S>=-1;--S)(!(A=E(g[S]))||!L(T,A.s))&&M.i=V&&R.s<=V+c}},n.prototype._findTargetItemIndex=function(t){return this._showController?(this.getContentGroup().eachChild(function(u,f){var p=u.__legendDataIndex;null==c&&null!=p&&(c=f),p===t&&(s=f)}),s??c):0;var s,c},n.type="legend.scroll",n}(K3);const d9=c9;function h9(r){Lt(T1),r.registerComponentModel(l9),r.registerComponentView(d9),function u9(r){r.registerAction("legendScroll","legendscroll",function(n,t){var s=n.scrollDataIndex;null!=s&&t.eachComponent({mainType:"legend",subType:"scroll",query:n},function(l){l.setScrollDataIndex(s)})})}(r)}var f9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="dataZoom.inside",n.defaultOption=Yd(Wf.defaultOption,{disabled:!1,zoomLock:!1,zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!1,preventDefaultMouseMove:!0}),n}(Wf);const t5=f9;var VE=un();function zE(r,n){if(n){r.removeKey(n.model.uid);var t=n.controller;t&&t.dispose()}}function m9(r,n){r.isDisposed()||r.dispatchAction({type:"dataZoom",animation:{easing:"cubicOut",duration:100},batch:n})}function Cg(r,n,t,s){return r.coordinateSystem.containPoint([t,s])}var g9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type="dataZoom.inside",t}return se(n,r),n.prototype.render=function(t,s,l){r.prototype.render.apply(this,arguments),t.noTarget()?this._clear():(this.range=t.getPercentRange(),function p9(r,n,t){VE(r).coordSysRecordMap.each(function(s){var l=s.dataZoomInfoMap.get(n.uid);l&&(l.getRange=t)})}(l,t,{pan:Ne(HE.pan,this),zoom:Ne(HE.zoom,this),scrollMove:Ne(HE.scrollMove,this)}))},n.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},n.prototype._clear=function(){(function n5(r,n){for(var t=VE(r).coordSysRecordMap,s=t.keys(),l=0;l0?f.pixelStart+f.pixelLength-f.pixel:f.pixel-f.pixelStart)/f.pixelLength*(c[1]-c[0])+c[0],m=Math.max(1/s.scale,0);c[0]=(c[0]-p)*m+p,c[1]=(c[1]-p)*m+p;var g=this.dataZoomModel.findRepresentativeAxisProxy().getMinMaxSpan();if(ig(0,c,[0,100],0,g.minSpan,g.maxSpan),this.range=c,l[0]!==c[0]||l[1]!==c[1])return c}},pan:r5(function(r,n,t,s,l,c){var u=GE[s]([c.oldX,c.oldY],[c.newX,c.newY],n,l,t);return u.signal*(r[1]-r[0])*u.pixel/u.pixelLength}),scrollMove:r5(function(r,n,t,s,l,c){return GE[s]([0,0],[c.scrollDelta,c.scrollDelta],n,l,t).signal*(r[1]-r[0])*c.scrollDelta})};function r5(r){return function(n,t,s,l){var c=this.range,u=c.slice(),f=n.axisModels[0];if(f&&(ig(r(u,f,n,t,s,l),u,[0,100],"all"),this.range=u,c[0]!==u[0]||c[1]!==u[1]))return u}}var GE={grid:function(r,n,t,s,l){var c=t.axis,u={},f=l.model.coordinateSystem.getRect();return r=r||[0,0],"x"===c.dim?(u.pixel=n[0]-r[0],u.pixelLength=f.width,u.pixelStart=f.x,u.signal=c.inverse?1:-1):(u.pixel=n[1]-r[1],u.pixelLength=f.height,u.pixelStart=f.y,u.signal=c.inverse?-1:1),u},polar:function(r,n,t,s,l){var c=t.axis,u={},f=l.model.coordinateSystem,p=f.getRadiusAxis().getExtent(),m=f.getAngleAxis().getExtent();return r=r?f.pointToCoord(r):[0,0],n=f.pointToCoord(n),"radiusAxis"===t.mainType?(u.pixel=n[0]-r[0],u.pixelLength=p[1]-p[0],u.pixelStart=p[0],u.signal=c.inverse?1:-1):(u.pixel=n[1]-r[1],u.pixelLength=m[1]-m[0],u.pixelStart=m[0],u.signal=c.inverse?-1:1),u},singleAxis:function(r,n,t,s,l){var c=t.axis,u=l.model.coordinateSystem.getRect(),f={};return r=r||[0,0],"horizontal"===c.orient?(f.pixel=n[0]-r[0],f.pixelLength=u.width,f.pixelStart=u.x,f.signal=c.inverse?1:-1):(f.pixel=n[1]-r[1],f.pixelLength=u.height,f.pixelStart=u.y,f.signal=c.inverse?-1:1),f}};const v9=g9;function a5(r){gg(r),r.registerComponentModel(t5),r.registerComponentView(v9),function zr(r){r.registerProcessor(r.PRIORITY.PROCESSOR.FILTER,function(n,t){var s=VE(t),l=s.coordSysRecordMap||(s.coordSysRecordMap=Ye());l.each(function(c){c.dataZoomInfoMap=null}),n.eachComponent({mainType:"dataZoom",subType:"inside"},function(c){U(KC(c).infoList,function(f){var p=f.model.uid,m=l.get(p)||l.set(p,function bt(r,n){var t={model:n,containsPoint:$e(Cg,n),dispatchAction:$e(m9,r),dataZoomInfoMap:null,controller:null},s=t.controller=new Gm(r.getZr());return U(["pan","zoom","scrollMove"],function(l){s.on(l,function(c){var u=[];t.dataZoomInfoMap.each(function(f){if(c.isAvailableBehavior(f.model.option)){var p=(f.getRange||{})[l],m=p&&p(f.dzReferCoordSysInfo,t.model.mainType,t.controller,c);!f.model.get("disabled",!0)&&m&&u.push({dataZoomId:f.model.id,start:m[0],end:m[1]})}}),u.length&&t.dispatchAction(u)})}),t}(t,f.model));(m.dataZoomInfoMap||(m.dataZoomInfoMap=Ye())).set(c.uid,{dzReferCoordSysInfo:f,model:c,getRange:null})})}),l.each(function(c){var f,u=c.controller,p=c.dataZoomInfoMap;if(p){var m=p.keys()[0];null!=m&&(f=p.get(m))}if(f){var g=function Sd(r){var n,t="type_",s={type_true:2,type_move:1,type_false:0,type_undefined:-1},l=!0;return r.each(function(c){var u=c.model,f=!u.get("disabled",!0)&&(!u.get("zoomLock",!0)||"move");s[t+f]>s[t+n]&&(n=f),l=l&&u.get("preventDefaultMouseMove",!0)}),{controlType:n,opt:{zoomOnMouseWheel:!0,moveOnMouseMove:!0,moveOnMouseWheel:!0,preventDefaultMouseMove:!!l}}}(p);u.enable(g.controlType,g.opt),u.setPointerChecker(c.containsPoint),tf(c,"dispatchAction",f.model.get("throttle",!0),"fixRate")}else zE(l,c)})})}(r)}var _9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.type="dataZoom.slider",n.layoutMode="box",n.defaultOption=Yd(Wf.defaultOption,{show:!0,right:"ph",top:"ph",width:"ph",height:"ph",left:null,bottom:null,borderColor:"#d2dbee",borderRadius:3,backgroundColor:"rgba(47,69,84,0)",dataBackground:{lineStyle:{color:"#d2dbee",width:.5},areaStyle:{color:"#d2dbee",opacity:.2}},selectedDataBackground:{lineStyle:{color:"#8fb0f7",width:.5},areaStyle:{color:"#8fb0f7",opacity:.2}},fillerColor:"rgba(135,175,274,0.2)",handleIcon:"path://M-9.35,34.56V42m0-40V9.5m-2,0h4a2,2,0,0,1,2,2v21a2,2,0,0,1-2,2h-4a2,2,0,0,1-2-2v-21A2,2,0,0,1-11.35,9.5Z",handleSize:"100%",handleStyle:{color:"#fff",borderColor:"#ACB8D1"},moveHandleSize:7,moveHandleIcon:"path://M-320.9-50L-320.9-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-348-41-339-50-320.9-50z M-212.3-50L-212.3-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-239.4-41-230.4-50-212.3-50z M-103.7-50L-103.7-50c18.1,0,27.1,9,27.1,27.1V85.7c0,18.1-9,27.1-27.1,27.1l0,0c-18.1,0-27.1-9-27.1-27.1V-22.9C-130.9-41-121.8-50-103.7-50z",moveHandleStyle:{color:"#D2DBEE",opacity:.7},showDetail:!0,showDataShadow:"auto",realtime:!0,zoomLock:!1,textStyle:{color:"#6E7079"},brushSelect:!0,brushStyle:{color:"rgba(135,175,274,0.15)"},emphasis:{handleStyle:{borderColor:"#8FB0F7"},moveHandleStyle:{color:"#8FB0F7"}}}),n}(Wf);const y9=_9;var gb=Zt,vb="horizontal",s5="vertical",x9=5,C9=["line","bar","candlestick","scatter"],S9={easing:"cubicOut",duration:100,delay:0},D9=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._displayables={},t}return se(n,r),n.prototype.init=function(t,s){this.api=s,this._onBrush=Ne(this._onBrush,this),this._onBrushEnd=Ne(this._onBrushEnd,this)},n.prototype.render=function(t,s,l,c){if(r.prototype.render.apply(this,arguments),tf(this,"_dispatchZoomAction",t.get("throttle"),"fixRate"),this._orient=t.getOrient(),!1!==t.get("show"))return t.noTarget()?(this._clear(),void this.group.removeAll()):((!c||"dataZoom"!==c.type||c.from!==this.uid)&&this._buildView(),void this._updateView());this.group.removeAll()},n.prototype.dispose=function(){this._clear(),r.prototype.dispose.apply(this,arguments)},n.prototype._clear=function(){pm(this,"_dispatchZoomAction");var t=this.api.getZr();t.off("mousemove",this._onBrush),t.off("mouseup",this._onBrushEnd)},n.prototype._buildView=function(){var t=this.group;t.removeAll(),this._brushing=!1,this._displayables.brushRect=null,this._resetLocation(),this._resetInterval();var s=this._displayables.sliderGroup=new lt;this._renderBackground(),this._renderHandle(),this._renderDataShadow(),t.add(s),this._positionGroup()},n.prototype._resetLocation=function(){var t=this.dataZoomModel,s=this.api,c=t.get("brushSelect")?7:0,u=this._findCoordRect(),f={width:s.getWidth(),height:s.getHeight()},p=this._orient===vb?{right:f.width-u.x-u.width,top:f.height-30-7-c,width:u.width,height:30}:{right:7,top:u.y,width:30,height:u.height},m=Kp(t.option);U(["right","top","width","height"],function(v){"ph"===m[v]&&(m[v]=p[v])});var g=dr(m,f);this._location={x:g.x,y:g.y},this._size=[g.width,g.height],this._orient===s5&&this._size.reverse()},n.prototype._positionGroup=function(){var t=this.group,s=this._location,l=this._orient,c=this.dataZoomModel.getFirstTargetAxisModel(),u=c&&c.get("inverse"),f=this._displayables.sliderGroup,p=(this._dataShadowInfo||{}).otherAxisInverse;f.attr(l!==vb||u?l===vb&&u?{scaleY:p?1:-1,scaleX:-1}:l!==s5||u?{scaleY:p?-1:1,scaleX:-1,rotation:Math.PI/2}:{scaleY:p?-1:1,scaleX:1,rotation:Math.PI/2}:{scaleY:p?1:-1,scaleX:1});var m=t.getBoundingRect([f]);t.x=s.x-m.x,t.y=s.y-m.y,t.markRedraw()},n.prototype._getViewExtent=function(){return[0,this._size[0]]},n.prototype._renderBackground=function(){var t=this.dataZoomModel,s=this._size,l=this._displayables.sliderGroup,c=t.get("brushSelect");l.add(new gb({silent:!0,shape:{x:0,y:0,width:s[0],height:s[1]},style:{fill:t.get("backgroundColor")},z2:-40}));var u=new gb({shape:{x:0,y:0,width:s[0],height:s[1]},style:{fill:"transparent"},z2:0,onclick:Ne(this._onClickPanel,this)}),f=this.api.getZr();c?(u.on("mousedown",this._onBrushStart,this),u.cursor="crosshair",f.on("mousemove",this._onBrush),f.on("mouseup",this._onBrushEnd)):(f.off("mousemove",this._onBrush),f.off("mouseup",this._onBrushEnd)),l.add(u)},n.prototype._renderDataShadow=function(){var t=this._dataShadowInfo=this._prepareDataShadowInfo();if(this._displayables.dataShadowSegs=[],t){var s=this._size,l=this._shadowSize||[],c=t.series,u=c.getRawData(),f=c.getShadowDim&&c.getShadowDim(),p=f&&u.getDimensionInfo(f)?c.getShadowDim():t.otherDim;if(null!=p){var m=this._shadowPolygonPts,g=this._shadowPolylinePts;if(u!==this._shadowData||p!==this._shadowDim||s[0]!==l[0]||s[1]!==l[1]){var v=u.getDataExtent(p),y=.3*(v[1]-v[0]);v=[v[0]-y,v[1]+y];var E,b=[0,s[1]],C=[[s[0],0],[0,0]],S=[],M=s[0]/(u.count()-1),T=0,A=Math.round(u.count()/s[0]);u.each([p],function(G,j){if(A>0&&j%A)T+=M;else{var $=null==G||isNaN(G)||""===G,q=$?0:hn(G,v,b,!0);$&&!E&&j?(C.push([C[C.length-1][0],0]),S.push([S[S.length-1][0],0])):!$&&E&&(C.push([T,0]),S.push([T,0])),C.push([T,q]),S.push([T,q]),T+=M,E=$}}),m=this._shadowPolygonPts=C,g=this._shadowPolylinePts=S}this._shadowData=u,this._shadowDim=p,this._shadowSize=[s[0],s[1]];for(var j,$,q,K,L=this.dataZoomModel,V=0;V<3;V++){var H=(j=void 0,$=void 0,void 0,void 0,j=L.getModel(1===V?"selectedDataBackground":"dataBackground"),$=new lt,q=new Ea({shape:{points:m},segmentIgnoreThreshold:1,style:j.getModel("areaStyle").getAreaStyle(),silent:!0,z2:-20}),K=new ho({shape:{points:g},segmentIgnoreThreshold:1,style:j.getModel("lineStyle").getLineStyle(),silent:!0,z2:-19}),$.add(q),$.add(K),$);this._displayables.sliderGroup.add(H),this._displayables.dataShadowSegs.push(H)}}}},n.prototype._prepareDataShadowInfo=function(){var t=this.dataZoomModel,s=t.get("showDataShadow");if(!1!==s){var l,c=this.ecModel;return t.eachTargetAxis(function(u,f){U(t.getAxisProxy(u,f).getTargetSeriesModels(),function(m){if(!(l||!0!==s&&Rt(C9,m.get("type"))<0)){var y,g=c.getComponent(Cd(u),f).axis,v=function jt(r){return{x:"y",y:"x",radius:"angle",angle:"radius"}[r]}(u),b=m.coordinateSystem;null!=v&&b.getOtherAxis&&(y=b.getOtherAxis(g).inverse),v=m.getData().mapDimension(v),l={thisAxis:g,series:m,thisDim:u,otherDim:v,otherAxisInverse:y}}},this)},this),l}},n.prototype._renderHandle=function(){var t=this.group,s=this._displayables,l=s.handles=[null,null],c=s.handleLabels=[null,null],u=this._displayables.sliderGroup,f=this._size,p=this.dataZoomModel,m=this.api,g=p.get("borderRadius")||0,v=p.get("brushSelect"),y=s.filler=new gb({silent:v,style:{fill:p.get("fillerColor")},textConfig:{position:"inside"}});u.add(y),u.add(new gb({silent:!0,subPixelOptimize:!0,shape:{x:0,y:0,width:f[0],height:f[1],r:g},style:{stroke:p.get("dataBackgroundColor")||p.get("borderColor"),lineWidth:1,fill:"rgba(0,0,0,0)"}})),U([0,1],function(A){var E=p.get("handleIcon");!vm[E]&&E.indexOf("path://")<0&&E.indexOf("image://")<0&&(E="path://"+E);var L=Ji(E,-1,0,2,2,null,!0);L.attr({cursor:jE(this._orient),draggable:!0,drift:Ne(this._onDragMove,this,A),ondragend:Ne(this._onDragEnd,this),onmouseover:Ne(this._showDataInfo,this,!0),onmouseout:Ne(this._showDataInfo,this,!1),z2:5});var R=L.getBoundingRect(),V=p.get("handleSize");this._handleHeight=Re(V,this._size[1]),this._handleWidth=R.width/R.height*this._handleHeight,L.setStyle(p.getModel("handleStyle").getItemStyle()),L.style.strokeNoScale=!0,L.rectHover=!0,L.ensureState("emphasis").style=p.getModel(["emphasis","handleStyle"]).getItemStyle(),Ll(L);var H=p.get("handleColor");null!=H&&(L.style.fill=H),u.add(l[A]=L);var G=p.getModel("textStyle");t.add(c[A]=new an({silent:!0,invisible:!0,style:Xn(G,{x:0,y:0,text:"",verticalAlign:"middle",align:"center",fill:G.getTextColor(),font:G.getFont()}),z2:10}))},this);var b=y;if(v){var x=Re(p.get("moveHandleSize"),f[1]),C=s.moveHandle=new Zt({style:p.getModel("moveHandleStyle").getItemStyle(),silent:!0,shape:{r:[0,0,2,2],y:f[1]-.5,height:x}}),S=.8*x,M=s.moveHandleIcon=Ji(p.get("moveHandleIcon"),-S/2,-S/2,S,S,"#fff",!0);M.silent=!0,M.y=f[1]+x/2-.5,C.ensureState("emphasis").style=p.getModel(["emphasis","moveHandleStyle"]).getItemStyle();var T=Math.min(f[1]/2,Math.max(x,10));(b=s.moveZone=new Zt({invisible:!0,shape:{y:f[1]-T,height:x+T}})).on("mouseover",function(){m.enterEmphasis(C)}).on("mouseout",function(){m.leaveEmphasis(C)}),u.add(C),u.add(M),u.add(b)}b.attr({draggable:!0,cursor:jE(this._orient),drift:Ne(this._onDragMove,this,"all"),ondragstart:Ne(this._showDataInfo,this,!0),ondragend:Ne(this._onDragEnd,this),onmouseover:Ne(this._showDataInfo,this,!0),onmouseout:Ne(this._showDataInfo,this,!1)})},n.prototype._resetInterval=function(){var t=this._range=this.dataZoomModel.getPercentRange(),s=this._getViewExtent();this._handleEnds=[hn(t[0],[0,100],s,!0),hn(t[1],[0,100],s,!0)]},n.prototype._updateInterval=function(t,s){var l=this.dataZoomModel,c=this._handleEnds,u=this._getViewExtent(),f=l.findRepresentativeAxisProxy().getMinMaxSpan(),p=[0,100];ig(s,c,u,l.get("zoomLock")?"all":t,null!=f.minSpan?hn(f.minSpan,p,u,!0):null,null!=f.maxSpan?hn(f.maxSpan,p,u,!0):null);var m=this._range,g=this._range=So([hn(c[0],u,p,!0),hn(c[1],u,p,!0)]);return!m||m[0]!==g[0]||m[1]!==g[1]},n.prototype._updateView=function(t){var s=this._displayables,l=this._handleEnds,c=So(l.slice()),u=this._size;U([0,1],function(b){var C=this._handleHeight;s.handles[b].attr({scaleX:C/2,scaleY:C/2,x:l[b]+(b?-1:1),y:u[1]/2-C/2})},this),s.filler.setShape({x:c[0],y:0,width:c[1]-c[0],height:u[1]});var f={x:c[0],width:c[1]-c[0]};s.moveHandle&&(s.moveHandle.setShape(f),s.moveZone.setShape(f),s.moveZone.getBoundingRect(),s.moveHandleIcon&&s.moveHandleIcon.attr("x",f.x+f.width/2));for(var p=s.dataShadowSegs,m=[0,c[0],c[1],u[0]],g=0;gs[0]||l[1]<0||l[1]>s[1])){var c=this._handleEnds,f=this._updateInterval("all",l[0]-(c[0]+c[1])/2);this._updateView(),f&&this._dispatchZoomAction(!1)}},n.prototype._onBrushStart=function(t){this._brushStart=new Dt(t.offsetX,t.offsetY),this._brushing=!0,this._brushStartTime=+new Date},n.prototype._onBrushEnd=function(t){if(this._brushing){var s=this._displayables.brushRect;if(this._brushing=!1,s){s.attr("ignore",!0);var l=s.shape;if(!(+new Date-this._brushStartTime<200&&Math.abs(l.width)<5)){var u=this._getViewExtent(),f=[0,100];this._range=So([hn(l.x,u,f,!0),hn(l.x+l.width,u,f,!0)]),this._handleEnds=[l.x,l.x+l.width],this._updateView(),this._dispatchZoomAction(!1)}}}},n.prototype._onBrush=function(t){this._brushing&&(Ar(t.event),this._updateBrushRect(t.offsetX,t.offsetY))},n.prototype._updateBrushRect=function(t,s){var l=this._displayables,u=l.brushRect;u||(u=l.brushRect=new gb({silent:!0,style:this.dataZoomModel.getModel("brushStyle").getItemStyle()}),l.sliderGroup.add(u)),u.attr("ignore",!1);var f=this._brushStart,p=this._displayables.sliderGroup,m=p.transformCoordToLocal(t,s),g=p.transformCoordToLocal(f.x,f.y),v=this._size;m[0]=Math.max(Math.min(v[0],m[0]),0),u.setShape({x:g[0],y:0,width:m[0]-g[0],height:v[1]})},n.prototype._dispatchZoomAction=function(t){var s=this._range;this.api.dispatchAction({type:"dataZoom",from:this.uid,dataZoomId:this.dataZoomModel.id,animation:t?S9:null,start:s[0],end:s[1]})},n.prototype._findCoordRect=function(){var t,s=KC(this.dataZoomModel).infoList;if(!t&&s.length){var l=s[0].model.coordinateSystem;t=l.getRect&&l.getRect()}if(!t){var c=this.api.getWidth(),u=this.api.getHeight();t={x:.2*c,y:.2*u,width:.6*c,height:.6*u}}return t},n.type="dataZoom.slider",n}($V);function jE(r){return"vertical"===r?"ns-resize":"ew-resize"}const l5=D9;function c5(r){r.registerComponentModel(y9),r.registerComponentView(l5),gg(r)}var T9={get:function(r,n,t){var s=rt((d5[r]||{})[n]);return t&&ye(s)?s[s.length-1]:s}},d5={color:{active:["#006edd","#e0ffff"],inactive:["rgba(0,0,0,0)"]},colorHue:{active:[0,360],inactive:[0,0]},colorSaturation:{active:[.3,1],inactive:[0,0]},colorLightness:{active:[.9,.5],inactive:[0,0]},colorAlpha:{active:[.3,1],inactive:[0,0]},opacity:{active:[.3,1],inactive:[0,0]},symbol:{active:["circle","roundRect","diamond"],inactive:["none"]},symbolSize:{active:[10,50],inactive:[0,0]}};const $E=T9;var u5=Jr.mapVisual,A9=Jr.eachVisual,k9=ye,h5=U,E9=So,I9=hn,WE=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t.stateList=["inRange","outOfRange"],t.replacableOptionKeys=["inRange","outOfRange","target","controller","color"],t.layoutMode={type:"box",ignoreSize:!0},t.dataBound=[-1/0,1/0],t.targetVisuals={},t.controllerVisuals={},t}return se(n,r),n.prototype.init=function(t,s,l){this.mergeDefaultAndTheme(t,l)},n.prototype.optionUpdated=function(t,s){!s&&dW(this.option,t,this.replacableOptionKeys),this.textStyleModel=this.getModel("textStyle"),this.resetItemSize(),this.completeVisualOption()},n.prototype.resetVisual=function(t){var s=this.stateList;t=Ne(t,this),this.controllerVisuals=p1(this.option.controller,s,t),this.targetVisuals=p1(this.option.target,s,t)},n.prototype.getItemSymbol=function(){return null},n.prototype.getTargetSeriesIndices=function(){var t=this.option.seriesIndex,s=[];return null==t||"all"===t?this.ecModel.eachSeries(function(l,c){s.push(c)}):s=Nn(t),s},n.prototype.eachTargetSeries=function(t,s){U(this.getTargetSeriesIndices(),function(l){var c=this.ecModel.getSeriesByIndex(l);c&&t.call(s,c)},this)},n.prototype.isTargetSeries=function(t){var s=!1;return this.eachTargetSeries(function(l){l===t&&(s=!0)}),s},n.prototype.formatValueText=function(t,s,l){var m,c=this.option,u=c.precision,f=this.dataBound,p=c.formatter;l=l||["<",">"],ye(t)&&(t=t.slice(),m=!0);var g=s?t:m?[v(t[0]),v(t[1])]:v(t);return Le(p)?p.replace("{value}",m?g[0]:g).replace("{value2}",m?g[1]:g):qe(p)?m?p(t[0],t[1]):p(t):m?t[0]===f[0]?l[0]+" "+g[1]:t[1]===f[1]?l[1]+" "+g[0]:g[0]+" - "+g[1]:g;function v(y){return y===f[0]?"min":y===f[1]?"max":(+y).toFixed(Math.min(u,20))}},n.prototype.resetExtent=function(){var t=this.option,s=E9([t.min,t.max]);this._dataExtent=s},n.prototype.getDataDimensionIndex=function(t){var s=this.option.dimension;if(null!=s)return t.getDimensionIndex(s);for(var l=t.dimensions,c=l.length-1;c>=0;c--){var f=t.getDimensionInfo(l[c]);if(!f.isCalculationCoord)return f.storeDimIndex}},n.prototype.getExtent=function(){return this._dataExtent.slice()},n.prototype.completeVisualOption=function(){var t=this.ecModel,s=this.option,l={inRange:s.inRange,outOfRange:s.outOfRange},c=s.target||(s.target={}),u=s.controller||(s.controller={});At(c,l),At(u,l);var f=this.isCategory();function p(v){k9(s.color)&&!v.inRange&&(v.inRange={color:s.color.slice().reverse()}),v.inRange=v.inRange||{color:t.get("gradientColor")}}p.call(this,c),p.call(this,u),function m(v,y,b){var x=v[y],C=v[b];x&&!C&&(C=v[b]={},h5(x,function(S,M){if(Jr.isValidType(M)){var T=$E.get(M,"inactive",f);null!=T&&(C[M]=T,"color"===M&&!C.hasOwnProperty("opacity")&&!C.hasOwnProperty("colorAlpha")&&(C.opacity=[0,0]))}}))}.call(this,c,"inRange","outOfRange"),function g(v){var y=(v.inRange||{}).symbol||(v.outOfRange||{}).symbol,b=(v.inRange||{}).symbolSize||(v.outOfRange||{}).symbolSize,x=this.get("inactiveColor"),S=this.getItemSymbol()||"roundRect";h5(this.stateList,function(M){var T=this.itemSize,A=v[M];A||(A=v[M]={color:f?x:[x]}),null==A.symbol&&(A.symbol=y&&rt(y)||(f?S:[S])),null==A.symbolSize&&(A.symbolSize=b&&rt(b)||(f?T[0]:[T[0],T[0]])),A.symbol=u5(A.symbol,function(R){return"none"===R?S:R});var E=A.symbolSize;if(null!=E){var L=-1/0;A9(E,function(R){R>L&&(L=R)}),A.symbolSize=u5(E,function(R){return I9(R,[0,L],[0,T[0]],!0)})}},this)}.call(this,u)},n.prototype.resetItemSize=function(){this.itemSize=[parseFloat(this.get("itemWidth")),parseFloat(this.get("itemHeight"))]},n.prototype.isCategory=function(){return!!this.option.categories},n.prototype.setSelected=function(t){},n.prototype.getSelected=function(){return null},n.prototype.getValueState=function(t){return null},n.prototype.getVisualMeta=function(t){return null},n.type="visualMap",n.dependencies=["series"],n.defaultOption={show:!0,z:4,seriesIndex:"all",min:0,max:200,left:0,right:null,top:null,bottom:0,itemWidth:null,itemHeight:null,inverse:!1,orient:"vertical",backgroundColor:"rgba(0,0,0,0)",borderColor:"#ccc",contentColor:"#5793f3",inactiveColor:"#aaa",borderWidth:0,padding:5,textGap:10,precision:0,textStyle:{color:"#333"}},n}(qt);const YE=WE;var qE=[20,140],f5=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.optionUpdated=function(t,s){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent(),this.resetVisual(function(l){l.mappingMethod="linear",l.dataExtent=this.getExtent()}),this._resetRange()},n.prototype.resetItemSize=function(){r.prototype.resetItemSize.apply(this,arguments);var t=this.itemSize;(null==t[0]||isNaN(t[0]))&&(t[0]=qE[0]),(null==t[1]||isNaN(t[1]))&&(t[1]=qE[1])},n.prototype._resetRange=function(){var t=this.getExtent(),s=this.option.range;!s||s.auto?(t.auto=1,this.option.range=t):ye(s)&&(s[0]>s[1]&&s.reverse(),s[0]=Math.max(s[0],t[0]),s[1]=Math.min(s[1],t[1]))},n.prototype.completeVisualOption=function(){r.prototype.completeVisualOption.apply(this,arguments),U(this.stateList,function(t){var s=this.option.controller[t].symbolSize;s&&s[0]!==s[1]&&(s[0]=s[1]/3)},this)},n.prototype.setSelected=function(t){this.option.range=t.slice(),this._resetRange()},n.prototype.getSelected=function(){var t=this.getExtent(),s=So((this.get("range")||[]).slice());return s[0]>t[1]&&(s[0]=t[1]),s[1]>t[1]&&(s[1]=t[1]),s[0]=l[1]||t<=s[1])?"inRange":"outOfRange"},n.prototype.findTargetDataIndices=function(t){var s=[];return this.eachTargetSeries(function(l){var c=[],u=l.getData();u.each(this.getDataDimensionIndex(u),function(f,p){t[0]<=f&&f<=t[1]&&c.push(p)},this),s.push({seriesId:l.id,dataIndex:c})},this),s},n.prototype.getVisualMeta=function(t){var s=Sg(0,0,this.getExtent()),l=Sg(0,0,this.option.range.slice()),c=[];function u(b,x){c.push({value:b,color:t(b,x)})}for(var f=0,p=0,m=l.length,g=s.length;pt[1])break;c.push({color:this.getControllerVisual(p,"color",s),offset:f/100})}return c.push({color:this.getControllerVisual(t[1],"color",s),offset:1}),c},n.prototype._createBarPoints=function(t,s){var l=this.visualMapModel.itemSize;return[[l[0]-s[0],t[0]],[l[0],t[0]],[l[0],t[1]],[l[0]-s[1],t[1]]]},n.prototype._createBarGroup=function(t){var s=this._orient,l=this.visualMapModel.get("inverse");return new lt("horizontal"!==s||l?"horizontal"===s&&l?{scaleX:"bottom"===t?-1:1,rotation:-Math.PI/2}:"vertical"!==s||l?{scaleX:"left"===t?1:-1}:{scaleX:"left"===t?1:-1,scaleY:-1}:{scaleX:"bottom"===t?1:-1,rotation:Math.PI/2})},n.prototype._updateHandle=function(t,s){if(this._useHandle){var l=this._shapes,c=this.visualMapModel,u=l.handleThumbs,f=l.handleLabels,p=c.itemSize,m=c.getExtent();P9([0,1],function(g){var v=u[g];v.setStyle("fill",s.handlesColor[g]),v.y=t[g];var y=uc(t[g],[0,p[1]],m,!0),b=this.getControllerVisual(y,"symbolSize");v.scaleX=v.scaleY=b/p[0],v.x=p[0]-b/2;var x=nl(l.handleLabelPoints[g],jc(v,this.group));f[g].setStyle({x:x[0],y:x[1],text:c.formatValueText(this._dataInterval[g]),verticalAlign:"middle",align:"vertical"===this._orient?this._applyTransform("left",l.mainGroup):"center"})},this)}},n.prototype._showIndicator=function(t,s,l,c){var u=this.visualMapModel,f=u.getExtent(),p=u.itemSize,m=[0,p[1]],g=this._shapes,v=g.indicator;if(v){v.attr("invisible",!1);var b=this.getControllerVisual(t,"color",{convertOpacityToAlpha:!0}),x=this.getControllerVisual(t,"symbolSize"),C=uc(t,f,m,!0),S=p[0]-x/2,M={x:v.x,y:v.y};v.y=C,v.x=S;var T=nl(g.indicatorLabelPoint,jc(v,this.group)),A=g.indicatorLabel;A.attr("invisible",!1);var E=this._applyTransform("left",g.mainGroup),R="horizontal"===this._orient;A.setStyle({text:(l||"")+u.formatValueText(s),verticalAlign:R?E:"middle",align:R?"center":E});var V={x:S,y:C,style:{fill:b}},H={style:{x:T[0],y:T[1]}};if(u.ecModel.isAnimationEnabled()&&!this._firstShowIndicator){var G={duration:100,easing:"cubicInOut",additive:!0};v.x=M.x,v.y=M.y,v.animateTo(V,G),A.animateTo(H,G)}else v.attr(V),A.attr(H);this._firstShowIndicator=!1;var j=this._shapes.handleLabels;if(j)for(var $=0;$u[1]&&(v[1]=1/0),s&&(v[0]===-1/0?this._showIndicator(g,v[1],"< ",p):v[1]===1/0?this._showIndicator(g,v[0],"> ",p):this._showIndicator(g,g,"\u2248 ",p));var y=this._hoverLinkDataIndices,b=[];(s||_5(l))&&(b=this._hoverLinkDataIndices=l.findTargetDataIndices(v));var x=function nX(r,n){var t={},s={};return l(r||[],t),l(n||[],s,t),[c(t),c(s)];function l(u,f,p){for(var m=0,g=u.length;m=0&&(c.dimension=u,s.push(c))}}),r.getData().setVisual("visualMeta",s)}}];function H9(r,n,t,s){for(var l=n.targetVisuals[s],c=Jr.prepareVisualTypes(l),u={color:_s(r.getData(),"color")},f=0,p=c.length;f0:n.splitNumber>0)&&!n.calculable?"piecewise":"continuous"}),r.registerAction(B9,V9),U(z9,function(n){r.registerVisual(r.PRIORITY.VISUAL.COMPONENT,n)}),r.registerPreprocessor(G9))}function fi(r){r.registerComponentModel(uJ),r.registerComponentView(N9),x5(r)}var fJ=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t._pieceList=[],t}return se(n,r),n.prototype.optionUpdated=function(t,s){r.prototype.optionUpdated.apply(this,arguments),this.resetExtent();var l=this._mode=this._determineMode();this._pieceList=[],U9[this._mode].call(this,this._pieceList),this._resetSelected(t,s);var c=this.option.categories;this.resetVisual(function(u,f){"categories"===l?(u.mappingMethod="category",u.categories=rt(c)):(u.dataExtent=this.getExtent(),u.mappingMethod="piecewise",u.pieceList=xe(this._pieceList,function(p){return p=rt(p),"inRange"!==f&&(p.visual=null),p}))})},n.prototype.completeVisualOption=function(){var t=this.option,s={},l=Jr.listVisualTypes(),c=this.isCategory();function u(f,p,m){return f&&f[p]&&f[p].hasOwnProperty(m)}U(t.pieces,function(f){U(l,function(p){f.hasOwnProperty(p)&&(s[p]=1)})}),U(s,function(f,p){var m=!1;U(this.stateList,function(g){m=m||u(t,g,p)||u(t.target,g,p)},this),!m&&U(this.stateList,function(g){(t[g]||(t[g]={}))[p]=$E.get(p,"inRange"===g?"active":"inactive",c)})},this),r.prototype.completeVisualOption.apply(this,arguments)},n.prototype._resetSelected=function(t,s){var l=this.option,c=this._pieceList,u=(s?l:t).selected||{};if(l.selected=u,U(c,function(p,m){var g=this.getSelectedMapKey(p);u.hasOwnProperty(g)||(u[g]=!0)},this),"single"===l.selectedMode){var f=!1;U(c,function(p,m){var g=this.getSelectedMapKey(p);u[g]&&(f?u[g]=!1:f=!0)},this)}},n.prototype.getItemSymbol=function(){return this.get("itemSymbol")},n.prototype.getSelectedMapKey=function(t){return"categories"===this._mode?t.value+"":t.index+""},n.prototype.getPieceList=function(){return this._pieceList},n.prototype._determineMode=function(){var t=this.option;return t.pieces&&t.pieces.length>0?"pieces":this.option.categories?"categories":"splitNumber"},n.prototype.setSelected=function(t){this.option.selected=rt(t)},n.prototype.getValueState=function(t){var s=Jr.findPieceIndex(t,this._pieceList);return null!=s&&this.option.selected[this.getSelectedMapKey(this._pieceList[s])]?"inRange":"outOfRange"},n.prototype.findTargetDataIndices=function(t){var s=[],l=this._pieceList;return this.eachTargetSeries(function(c){var u=[],f=c.getData();f.each(this.getDataDimensionIndex(f),function(p,m){Jr.findPieceIndex(p,l)===t&&u.push(m)},this),s.push({seriesId:c.id,dataIndex:u})},this),s},n.prototype.getRepresentValue=function(t){var s;if(this.isCategory())s=t.value;else if(null!=t.value)s=t.value;else{var l=t.interval||[];s=l[0]===-1/0&&l[1]===1/0?0:(l[0]+l[1])/2}return s},n.prototype.getVisualMeta=function(t){if(!this.isCategory()){var s=[],l=["",""],c=this,f=this._pieceList.slice();if(f.length){var p=f[0].interval[0];p!==-1/0&&f.unshift({interval:[-1/0,p]}),(p=f[f.length-1].interval[1])!==1/0&&f.push({interval:[p,1/0]})}else f.push({interval:[-1/0,1/0]});var m=-1/0;return U(f,function(g){var v=g.interval;v&&(v[0]>m&&u([m,v[0]],"outOfRange"),u(v.slice()),m=v[1])},this),{stops:s,outerColors:l}}function u(g,v){var y=c.getRepresentValue({interval:g});v||(v=c.getValueState(y));var b=t(y,v);g[0]===-1/0?l[0]=b:g[1]===1/0?l[1]=b:s.push({value:g[0],color:b},{value:g[1],color:b})}},n.type="visualMap.piecewise",n.defaultOption=Yd(YE.defaultOption,{selected:null,minOpen:!1,maxOpen:!1,align:"auto",itemWidth:20,itemHeight:14,itemSymbol:"roundRect",pieces:null,categories:null,splitNumber:5,selectedMode:"multiple",itemGap:10,hoverLink:!0}),n}(YE),U9={splitNumber:function(r){var n=this.option,t=Math.min(n.precision,20),s=this.getExtent(),l=n.splitNumber;l=Math.max(parseInt(l,10),1),n.splitNumber=l;for(var c=(s[1]-s[0])/l;+c.toFixed(t)!==c&&t<5;)t++;n.precision=t,c=+c.toFixed(t),n.minOpen&&r.push({interval:[-1/0,s[0]],close:[0,0]});for(var u=0,f=s[0];u","\u2265"][s[0]]])},this)}};function j9(r,n){var t=r.inverse;("vertical"===r.orient?!t:t)&&n.reverse()}const $9=fJ;var C5=function(r){function n(){var t=null!==r&&r.apply(this,arguments)||this;return t.type=n.type,t}return se(n,r),n.prototype.doRender=function(){var t=this.group;t.removeAll();var s=this.visualMapModel,l=s.get("textGap"),c=s.textStyleModel,u=c.getFont(),f=c.getTextColor(),p=this._getItemAlign(),m=s.itemSize,g=this._getViewData(),v=g.endsText,y=Tr(s.get("showLabel",!0),!v);v&&this._renderEndsText(t,v[0],m,y,p),U(g.viewPieceList,function(b){var x=b.piece,C=new lt;C.onclick=Ne(this._onItemClick,this,x),this._enableHoverLink(C,b.indexInModelPieceList);var S=s.getRepresentValue(x);if(this._createItemSymbol(C,S,[0,0,m[0],m[1]]),y){var M=this.visualMapModel.getValueState(S);C.add(new an({style:{x:"right"===p?-l:m[0]+l,y:m[1]/2,text:x.text,verticalAlign:"middle",align:p,font:u,fill:f,opacity:"outOfRange"===M?.5:1}}))}t.add(C)},this),v&&this._renderEndsText(t,v[1],m,y,p),Bc(s.get("orient"),t,s.get("itemGap")),this.renderBackground(t),this.positionGroup(t)},n.prototype._enableHoverLink=function(t,s){var l=this;t.on("mouseover",function(){return c("highlight")}).on("mouseout",function(){return c("downplay")});var c=function(u){var f=l.visualMapModel;f.option.hoverLink&&l.api.dispatchAction({type:u,batch:A1(f.findTargetDataIndices(s),f)})}},n.prototype._getItemAlign=function(){var t=this.visualMapModel,s=t.option;if("vertical"===s.orient)return m5(t,this.api,t.itemSize);var l=s.align;return(!l||"auto"===l)&&(l="left"),l},n.prototype._renderEndsText=function(t,s,l,c,u){if(s){var f=new lt;f.add(new an({style:Xn(this.visualMapModel.textStyleModel,{x:c?"right"===u?l[0]:0:l[0]/2,y:l[1]/2,verticalAlign:"middle",align:c?u:"center",text:s})})),t.add(f)}},n.prototype._getViewData=function(){var t=this.visualMapModel,s=xe(t.getPieceList(),function(f,p){return{piece:f,indexInModelPieceList:p}}),l=t.get("text"),c=t.get("orient"),u=t.get("inverse");return("horizontal"===c?u:!u)?s.reverse():l&&(l=l.slice().reverse()),{viewPieceList:s,endsText:l}},n.prototype._createItemSymbol=function(t,s,l){t.add(Ji(this.getControllerVisual(s,"symbol"),l[0],l[1],l[2],l[3],this.getControllerVisual(s,"color")))},n.prototype._onItemClick=function(t){var s=this.visualMapModel,l=s.option,c=l.selectedMode;if(c){var u=rt(l.selected),f=s.getSelectedMapKey(t);"single"===c||!0===c?(u[f]=!0,U(u,function(p,m){u[m]=m===f})):u[f]=!u[f],this.api.dispatchAction({type:"selectDataRange",from:this.uid,visualMapId:this.visualMapModel.id,selected:u})}},n.type="visualMap.piecewise",n}(Dg);const W9=C5;function Y9(r){r.registerComponentModel($9),r.registerComponentView(W9),x5(r)}var Tg={label:{enabled:!0},decal:{show:!1}},ZE=un(),q9={};function D5(r,n){var t=r.getModel("aria");if(t.get("enabled")){var s=rt(Tg);At(s.label,r.getLocaleModel().get("aria"),!1),At(t.option,s,!1),function l(){if(t.getModel("decal").get("show")){var v=Ye();r.eachSeries(function(y){if(!y.isColorBySeries()){var b=v.get(y.type);b||v.set(y.type,b={}),ZE(y).scope=b}}),r.eachRawSeries(function(y){if(!r.isSeriesFiltered(y))if(qe(y.enableAriaDecal))y.enableAriaDecal();else{var b=y.getData();if(y.isColorBySeries()){var T=ED(y.ecModel,y.name,q9,r.getSeriesCount()),A=b.getVisual("decal");b.setVisual("decal",E(A,T))}else{var x=y.getRawData(),C={},S=ZE(y).scope;b.each(function(L){var R=b.getRawIndex(L);C[R]=L});var M=x.count();x.each(function(L){var R=C[L],V=x.getName(L)||L+"",H=ED(y.ecModel,V,S,M),G=b.getItemVisual(R,"decal");b.setItemVisual(R,"decal",E(G,H))})}}function E(L,R){var V=L?ge(ge({},R),L):R;return V.dirty=!0,V}})}}(),function c(){var m=r.getLocaleModel().get("aria"),g=t.getModel("label");if(g.option=Je(g.option,m),g.get("enabled")){var v=n.getZr().dom;if(g.get("description"))return void v.setAttribute("aria-label",g.get("description"));var S,y=r.getSeriesCount(),b=g.get(["data","maxCount"])||10,x=g.get(["series","maxCount"])||10,C=Math.min(y,x);if(!(y<1)){var M=function f(){var m=r.get("title");return m&&m.length&&(m=m[0]),m&&m.text}();S=M?u(g.get(["general","withTitle"]),{title:M}):g.get(["general","withoutTitle"]);var A=[];S+=u(g.get(y>1?["series","multiple","prefix"]:["series","single","prefix"]),{seriesCount:y}),r.eachSeries(function(H,G){if(G1?["series","multiple",q]:["series","single",q]),{seriesId:H.seriesIndex,seriesName:H.get("name"),seriesType:p(H.subType)});var K=H.getData();K.count()>b?j+=u(g.get(["data","partialData"]),{displayCnt:b}):j+=g.get(["data","allData"]);for(var ne=g.get(["data","separator","middle"]),re=g.get(["data","separator","end"]),ue=[],ce=0;ce":"gt",">=":"gte","=":"eq","!=":"ne","<>":"ne"},X9=function(){function r(n){null==(this._condVal=Le(n)?new RegExp(n):_o(n)?n:null)&&xn("")}return r.prototype.evaluate=function(n){var t=typeof n;return Le(t)?this._condVal.test(n):!!rn(t)&&this._condVal.test(n+"")},r}(),E1=function(){function r(){}return r.prototype.evaluate=function(){return this.value},r}(),pJ=function(){function r(){}return r.prototype.evaluate=function(){for(var n=this.children,t=0;t2&&s.push(l),l=[K,ee]}function g(K,ee,ne,re){kg(K,ne)&&kg(ee,re)||l.push(K,ee,ne,re,ne,re)}for(var y,b,x,C,S=0;SH:$2&&s.push(l),s}function tI(r,n,t,s,l,c,u,f,p,m){if(kg(r,t)&&kg(n,s)&&kg(l,u)&&kg(c,f))p.push(u,f);else{var g=2/m,v=g*g,y=u-r,b=f-n,x=Math.sqrt(y*y+b*b);y/=x,b/=x;var C=t-r,S=s-n,M=l-u,T=c-f,A=C*C+S*S,E=M*M+T*T;if(A=0&&E-R*R=0)p.push(u,f);else{var G=[],j=[];mh(r,t,l,u,.5,G),mh(n,s,c,f,.5,j),tI(G[0],j[0],G[1],j[1],G[2],j[2],G[3],j[3],p,m),tI(G[4],j[4],G[5],j[5],G[6],j[6],G[7],j[7],p,m)}}}}function iY(r,n,t){var c=Math.abs(r[n]/r[1-n]),u=Math.ceil(Math.sqrt(c*t)),f=Math.floor(t/u);0===f&&(f=1,u=t);for(var p=[],m=0;m0)for(m=0;mMath.abs(m),v=iY([p,m],g?0:1,n),y=(g?f:m)/v.length,b=0;b1?null:new Dt(C*p+r,C*m+n)}function oY(r,n,t){var s=new Dt;Dt.sub(s,t,n),s.normalize();var l=new Dt;return Dt.sub(l,r,n),l.dot(s)}function Eg(r,n){var t=r[r.length-1];t&&t[0]===n[0]&&t[1]===n[1]||r.push(n)}function E5(r){var n=r.points,t=[],s=[];Tv(n,t,s);var l=new yt(t[0],t[1],s[0]-t[0],s[1]-t[1]),c=l.width,u=l.height,f=l.x,p=l.y,m=new Dt,g=new Dt;return c>u?(m.x=g.x=f+c/2,m.y=p,g.y=p+u):(m.y=g.y=p+u/2,m.x=f,g.x=f+c),function k5(r,n,t){for(var s=r.length,l=[],c=0;c0)for(var L=s/t,R=-s/2;R<=s/2;R+=L){var V=Math.sin(R),H=Math.cos(R),G=0;for(A=0;A0;m/=2){var g=0,v=0;(r&m)>0&&(g=1),(n&m)>0&&(v=1),f+=m*m*(3*g^v),0===v&&(1===g&&(r=m-1-r,n=m-1-n),p=r,r=n,n=p)}return f}function L1(r){var n=1/0,t=1/0,s=-1/0,l=-1/0,c=xe(r,function(f){var p=f.getBoundingRect(),m=f.getComputedTransform(),g=p.x+p.width/2+(m?m[4]:0),v=p.y+p.height/2+(m?m[5]:0);return n=Math.min(g,n),t=Math.min(v,t),s=Math.max(g,s),l=Math.max(v,l),[g,v]});return xe(c,function(f,p){return{cp:f,z:hY(f[0],f[1],n,t,s,l),path:r[p]}}).sort(function(f,p){return f.z-p.z}).map(function(f){return f.path})}function bb(r){return function P5(r,n){var l,t=[],s=r.shape;switch(r.type){case"rect":(function A5(r,n,t){for(var s=r.width,l=r.height,c=s>l,u=iY([s,l],c?0:1,n),f=c?"width":"height",p=c?"height":"width",m=c?"x":"y",g=c?"y":"x",v=r[f]/u.length,y=0;y=0;l--)if(!t[l].many.length){var p=t[f].many;if(p.length<=1){if(!f)return t;f=0}c=p.length;var m=Math.ceil(c/2);t[l].many=p.slice(m,c),t[f].many=p.slice(0,m),f++}return t}var pY={clone:function(r){for(var n=[],t=1-Math.pow(1-r.path.style.opacity,1/r.count),s=0;s0){var m,g,f=s.getModel("universalTransition").get("delay"),p=Object.assign({setToFinal:!0},u);F1(r)&&(m=r,g=n),F1(n)&&(m=n,g=r);for(var y=m?m===r:r.length>n.length,b=m?F5(g,m):F5(y?n:r,[y?r:n]),x=0,C=0;CN5))for(var l=s.getIndices(),c=function Ig(r){for(var n=r.dimensions,t=0;t0&&E.group.traverse(function(R){R instanceof Ht&&!R.animators.length&&R.animateFrom({style:{opacity:0}},L)})})}function z5(r){return r.getModel("universalTransition").get("seriesKey")||r.id}function xb(r){return ye(r)?r.sort().join(","):r}function Wu(r){if(r.hostModel)return r.hostModel.getModel("universalTransition").get("divideShape")}function H5(r,n){for(var t=0;t=0&&l.push({dataGroupId:n.oldDataGroupIds[f],data:n.oldData[f],divide:Wu(n.oldData[f]),dim:u.dimension})}),U(Nn(r.to),function(u){var f=H5(t.updatedSeries,u);if(f>=0){var p=t.updatedSeries[f].getData();c.push({dataGroupId:n.oldDataGroupIds[f],data:p,divide:Wu(p),dim:u.dimension})}}),l.length>0&&c.length>0&&V5(l,c,s)}(b,l,s,t)});else{var u=function _Y(r,n){var t=Ye(),s=Ye(),l=Ye();return U(r.oldSeries,function(u,f){var p=r.oldDataGroupIds[f],m=r.oldData[f],g=z5(u),v=xb(g);s.set(v,{dataGroupId:p,data:m}),ye(g)&&U(g,function(y){l.set(y,{key:v,dataGroupId:p,data:m})})}),U(n.updatedSeries,function(u){if(u.isUniversalTransitionEnabled()&&u.isAnimationEnabled()){var f=u.get("dataGroupId"),p=u.getData(),m=z5(u),g=xb(m),v=s.get(g);if(v)t.set(g,{oldSeries:[{dataGroupId:v.dataGroupId,divide:Wu(v.data),data:v.data}],newSeries:[{dataGroupId:f,divide:Wu(p),data:p}]});else if(ye(m)){var y=[];U(m,function(C){var S=s.get(C);S.data&&y.push({dataGroupId:S.dataGroupId,divide:Wu(S.data),data:S.data})}),y.length&&t.set(g,{oldSeries:y,newSeries:[{dataGroupId:f,data:p,divide:Wu(p)}]})}else{var b=l.get(m);if(b){var x=t.get(b.key);x||(x={oldSeries:[{dataGroupId:b.dataGroupId,data:b.data,divide:Wu(b.data)}],newSeries:[]},t.set(b.key,x)),x.newSeries.push({dataGroupId:f,data:p,divide:Wu(p)})}}}}),t}(l,s);U(u.keys(),function(b){var x=u.get(b);V5(x.oldSeries,x.newSeries,t)})}U(s.updatedSeries,function(b){b[nw]&&(b[nw]=!1)})}for(var f=n.getSeries(),p=l.oldSeries=[],m=l.oldDataGroupIds=[],g=l.oldData=[],v=0;v=200&&Tt.status<=299}function no(vi){try{vi.dispatchEvent(new MouseEvent("click"))}catch{var Tt=document.createEvent("MouseEvents");Tt.initMouseEvent("click",!0,!0,window,0,0,0,80,20,!1,!1,!1,!1,0,null),vi.dispatchEvent(Tt)}}var Bs=ta.navigator&&/Macintosh/.test(navigator.userAgent)&&/AppleWebKit/.test(navigator.userAgent)&&!/Safari/.test(navigator.userAgent),xt=ta.saveAs||("object"!=typeof window||window!==ta?function(){}:"download"in HTMLAnchorElement.prototype&&!Bs?function(Tt,Di,pi){var oi=ta.URL||ta.webkitURL,gr=document.createElement("a");gr.download=Di=Di||Tt.name||"download",gr.rel="noopener","string"==typeof Tt?(gr.href=Tt,gr.origin!==location.origin?Qo(gr.href)?$t(Tt,Di,pi):no(gr,gr.target="_blank"):no(gr)):(gr.href=oi.createObjectURL(Tt),setTimeout(function(){oi.revokeObjectURL(gr.href)},4e4),setTimeout(function(){no(gr)},0))}:"msSaveOrOpenBlob"in navigator?function(Tt,Di,pi){if(Di=Di||Tt.name||"download","string"==typeof Tt)if(Qo(Tt))$t(Tt,Di,pi);else{var oi=document.createElement("a");oi.href=Tt,oi.target="_blank",setTimeout(function(){no(oi)})}else navigator.msSaveOrOpenBlob(function En(vi,Tt){return typeof Tt>"u"?Tt={autoBom:!1}:"object"!=typeof Tt&&(console.warn("Deprecated: Expected third argument to be a object"),Tt={autoBom:!Tt}),Tt.autoBom&&/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(vi.type)?new Blob([String.fromCharCode(65279),vi],{type:vi.type}):vi}(Tt,pi),Di)}:function(Tt,Di,pi,oi){if((oi=oi||open("","_blank"))&&(oi.document.title=oi.document.body.innerText="downloading..."),"string"==typeof Tt)return $t(Tt,Di,pi);var gr="application/octet-stream"===Tt.type,Td=/constructor/i.test(ta.HTMLElement)||ta.safari,tp=/CriOS\/[\d]+/.test(navigator.userAgent);if((tp||gr&&Td||Bs)&&typeof FileReader<"u"){var se=new FileReader;se.onloadend=function(){var Jo=se.result;Jo=tp?Jo:Jo.replace(/^data:[^;]*;/,"data:attachment/file;"),oi?oi.location.href=Jo:location=Jo,oi=null},se.readAsDataURL(Tt)}else{var Fg=ta.URL||ta.webkitURL,np=Fg.createObjectURL(Tt);oi?oi.location=np:location.href=np,oi=null,setTimeout(function(){Fg.revokeObjectURL(np)},4e4)}});ta.saveAs=xt.saveAs=xt,ep.exports=xt}},ep=>{ep(ep.s=513)}]); \ No newline at end of file diff --git a/server/src/uds/static/admin/polyfills.js b/server/src/uds/static/admin/polyfills.js index 1c191f5fb..6270b2cbc 100644 --- a/server/src/uds/static/admin/polyfills.js +++ b/server/src/uds/static/admin/polyfills.js @@ -1 +1 @@ -"use strict";(self.webpackChunkuds=self.webpackChunkuds||[]).push([[429],{583:()=>{!function(e){const n=e.performance;function i(L){n&&n.mark&&n.mark(L)}function o(L,E){n&&n.measure&&n.measure(L,E)}i("Zone");const c=e.__Zone_symbol_prefix||"__zone_symbol__";function a(L){return c+L}const y=!0===e[a("forceDuplicateZoneCheck")];if(e.Zone){if(y||"function"!=typeof e.Zone.__symbol__)throw new Error("Zone already loaded.");return e.Zone}let d=(()=>{class L{constructor(t,r){this._parent=t,this._name=r?r.name||"unnamed":"",this._properties=r&&r.properties||{},this._zoneDelegate=new v(this,this._parent&&this._parent._zoneDelegate,r)}static assertZonePatched(){if(e.Promise!==oe.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let t=L.current;for(;t.parent;)t=t.parent;return t}static get current(){return U.zone}static get currentTask(){return re}static __load_patch(t,r,k=!1){if(oe.hasOwnProperty(t)){if(!k&&y)throw Error("Already loaded patch: "+t)}else if(!e["__Zone_disable_"+t]){const C="Zone:"+t;i(C),oe[t]=r(e,L,z),o(C,C)}}get parent(){return this._parent}get name(){return this._name}get(t){const r=this.getZoneWith(t);if(r)return r._properties[t]}getZoneWith(t){let r=this;for(;r;){if(r._properties.hasOwnProperty(t))return r;r=r._parent}return null}fork(t){if(!t)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,t)}wrap(t,r){if("function"!=typeof t)throw new Error("Expecting function got: "+t);const k=this._zoneDelegate.intercept(this,t,r),C=this;return function(){return C.runGuarded(k,this,arguments,r)}}run(t,r,k,C){U={parent:U,zone:this};try{return this._zoneDelegate.invoke(this,t,r,k,C)}finally{U=U.parent}}runGuarded(t,r=null,k,C){U={parent:U,zone:this};try{try{return this._zoneDelegate.invoke(this,t,r,k,C)}catch($){if(this._zoneDelegate.handleError(this,$))throw $}}finally{U=U.parent}}runTask(t,r,k){if(t.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(t.zone||J).name+"; Execution: "+this.name+")");if(t.state===x&&(t.type===Q||t.type===w))return;const C=t.state!=p;C&&t._transitionTo(p,j),t.runCount++;const $=re;re=t,U={parent:U,zone:this};try{t.type==w&&t.data&&!t.data.isPeriodic&&(t.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,t,r,k)}catch(l){if(this._zoneDelegate.handleError(this,l))throw l}}finally{t.state!==x&&t.state!==h&&(t.type==Q||t.data&&t.data.isPeriodic?C&&t._transitionTo(j,p):(t.runCount=0,this._updateTaskCount(t,-1),C&&t._transitionTo(x,p,x))),U=U.parent,re=$}}scheduleTask(t){if(t.zone&&t.zone!==this){let k=this;for(;k;){if(k===t.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${t.zone.name}`);k=k.parent}}t._transitionTo(X,x);const r=[];t._zoneDelegates=r,t._zone=this;try{t=this._zoneDelegate.scheduleTask(this,t)}catch(k){throw t._transitionTo(h,X,x),this._zoneDelegate.handleError(this,k),k}return t._zoneDelegates===r&&this._updateTaskCount(t,1),t.state==X&&t._transitionTo(j,X),t}scheduleMicroTask(t,r,k,C){return this.scheduleTask(new m(I,t,r,k,C,void 0))}scheduleMacroTask(t,r,k,C,$){return this.scheduleTask(new m(w,t,r,k,C,$))}scheduleEventTask(t,r,k,C,$){return this.scheduleTask(new m(Q,t,r,k,C,$))}cancelTask(t){if(t.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(t.zone||J).name+"; Execution: "+this.name+")");t._transitionTo(G,j,p);try{this._zoneDelegate.cancelTask(this,t)}catch(r){throw t._transitionTo(h,G),this._zoneDelegate.handleError(this,r),r}return this._updateTaskCount(t,-1),t._transitionTo(x,G),t.runCount=0,t}_updateTaskCount(t,r){const k=t._zoneDelegates;-1==r&&(t._zoneDelegates=null);for(let C=0;CL.hasTask(t,r),onScheduleTask:(L,E,t,r)=>L.scheduleTask(t,r),onInvokeTask:(L,E,t,r,k,C)=>L.invokeTask(t,r,k,C),onCancelTask:(L,E,t,r)=>L.cancelTask(t,r)};class v{constructor(E,t,r){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=E,this._parentDelegate=t,this._forkZS=r&&(r&&r.onFork?r:t._forkZS),this._forkDlgt=r&&(r.onFork?t:t._forkDlgt),this._forkCurrZone=r&&(r.onFork?this.zone:t._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:t._interceptZS),this._interceptDlgt=r&&(r.onIntercept?t:t._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this.zone:t._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:t._invokeZS),this._invokeDlgt=r&&(r.onInvoke?t:t._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this.zone:t._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:t._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?t:t._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this.zone:t._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:t._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?t:t._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this.zone:t._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:t._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?t:t._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this.zone:t._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:t._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?t:t._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this.zone:t._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const k=r&&r.onHasTask;(k||t&&t._hasTaskZS)&&(this._hasTaskZS=k?r:P,this._hasTaskDlgt=t,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=E,r.onScheduleTask||(this._scheduleTaskZS=P,this._scheduleTaskDlgt=t,this._scheduleTaskCurrZone=this.zone),r.onInvokeTask||(this._invokeTaskZS=P,this._invokeTaskDlgt=t,this._invokeTaskCurrZone=this.zone),r.onCancelTask||(this._cancelTaskZS=P,this._cancelTaskDlgt=t,this._cancelTaskCurrZone=this.zone))}fork(E,t){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,E,t):new d(E,t)}intercept(E,t,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,E,t,r):t}invoke(E,t,r,k,C){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,E,t,r,k,C):t.apply(r,k)}handleError(E,t){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,E,t)}scheduleTask(E,t){let r=t;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,E,t),r||(r=t);else if(t.scheduleFn)t.scheduleFn(t);else{if(t.type!=I)throw new Error("Task is missing scheduleFn.");R(t)}return r}invokeTask(E,t,r,k){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,E,t,r,k):t.callback.apply(r,k)}cancelTask(E,t){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,E,t);else{if(!t.cancelFn)throw Error("Task is not cancelable");r=t.cancelFn(t)}return r}hasTask(E,t){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,E,t)}catch(r){this.handleError(E,r)}}_updateTaskCount(E,t){const r=this._taskCounts,k=r[E],C=r[E]=k+t;if(C<0)throw new Error("More tasks executed then were scheduled.");0!=k&&0!=C||this.hasTask(this.zone,{microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:E})}}class m{constructor(E,t,r,k,C,$){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=E,this.source=t,this.data=k,this.scheduleFn=C,this.cancelFn=$,!r)throw new Error("callback is not defined");this.callback=r;const l=this;this.invoke=E===Q&&k&&k.useG?m.invokeTask:function(){return m.invokeTask.call(e,l,this,arguments)}}static invokeTask(E,t,r){E||(E=this),ee++;try{return E.runCount++,E.zone.runTask(E,t,r)}finally{1==ee&&_(),ee--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(x,X)}_transitionTo(E,t,r){if(this._state!==t&&this._state!==r)throw new Error(`${this.type} '${this.source}': can not transition to '${E}', expecting state '${t}'${r?" or '"+r+"'":""}, was '${this._state}'.`);this._state=E,E==x&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const M=a("setTimeout"),Z=a("Promise"),N=a("then");let K,B=[],H=!1;function q(L){if(K||e[Z]&&(K=e[Z].resolve(0)),K){let E=K[N];E||(E=K.then),E.call(K,L)}else e[M](L,0)}function R(L){0===ee&&0===B.length&&q(_),L&&B.push(L)}function _(){if(!H){for(H=!0;B.length;){const L=B;B=[];for(let E=0;EU,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:R,showUncaughtError:()=>!d[a("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:q};let U={parent:null,zone:new d(null,null)},re=null,ee=0;function W(){}o("Zone","Zone"),e.Zone=d}(typeof window<"u"&&window||typeof self<"u"&&self||global);const ue=Object.getOwnPropertyDescriptor,pe=Object.defineProperty,ve=Object.getPrototypeOf,Se=Object.create,it=Array.prototype.slice,De="addEventListener",Oe="removeEventListener",Ze=Zone.__symbol__(De),Ne=Zone.__symbol__(Oe),ie="true",ce="false",me=Zone.__symbol__("");function Ie(e,n){return Zone.current.wrap(e,n)}function Le(e,n,i,o,c){return Zone.current.scheduleMacroTask(e,n,i,o,c)}const A=Zone.__symbol__,be=typeof window<"u",_e=be?window:void 0,Y=be&&_e||"object"==typeof self&&self||global;function Me(e,n){for(let i=e.length-1;i>=0;i--)"function"==typeof e[i]&&(e[i]=Ie(e[i],n+"_"+i));return e}function Ve(e){return!e||!1!==e.writable&&!("function"==typeof e.get&&typeof e.set>"u")}const Fe=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Pe=!("nw"in Y)&&typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process),je=!Pe&&!Fe&&!(!be||!_e.HTMLElement),Be=typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process)&&!Fe&&!(!be||!_e.HTMLElement),we={},Ue=function(e){if(!(e=e||Y.event))return;let n=we[e.type];n||(n=we[e.type]=A("ON_PROPERTY"+e.type));const i=this||e.target||Y,o=i[n];let c;return je&&i===_e&&"error"===e.type?(c=o&&o.call(this,e.message,e.filename,e.lineno,e.colno,e.error),!0===c&&e.preventDefault()):(c=o&&o.apply(this,arguments),null!=c&&!c&&e.preventDefault()),c};function We(e,n,i){let o=ue(e,n);if(!o&&i&&ue(i,n)&&(o={enumerable:!0,configurable:!0}),!o||!o.configurable)return;const c=A("on"+n+"patched");if(e.hasOwnProperty(c)&&e[c])return;delete o.writable,delete o.value;const a=o.get,y=o.set,d=n.slice(2);let P=we[d];P||(P=we[d]=A("ON_PROPERTY"+d)),o.set=function(v){let m=this;!m&&e===Y&&(m=Y),m&&("function"==typeof m[P]&&m.removeEventListener(d,Ue),y&&y.call(m,null),m[P]=v,"function"==typeof v&&m.addEventListener(d,Ue,!1))},o.get=function(){let v=this;if(!v&&e===Y&&(v=Y),!v)return null;const m=v[P];if(m)return m;if(a){let M=a.call(this);if(M)return o.set.call(this,M),"function"==typeof v.removeAttribute&&v.removeAttribute(n),M}return null},pe(e,n,o),e[c]=!0}function qe(e,n,i){if(n)for(let o=0;ofunction(y,d){const P=i(y,d);return P.cbIdx>=0&&"function"==typeof d[P.cbIdx]?Le(P.name,d[P.cbIdx],P,c):a.apply(y,d)})}function le(e,n){e[A("OriginalDelegate")]=n}let Xe=!1,Ae=!1;function ft(){if(Xe)return Ae;Xe=!0;try{const e=_e.navigator.userAgent;(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/")||-1!==e.indexOf("Edge/"))&&(Ae=!0)}catch{}return Ae}Zone.__load_patch("ZoneAwarePromise",(e,n,i)=>{const o=Object.getOwnPropertyDescriptor,c=Object.defineProperty,y=i.symbol,d=[],P=!0===e[y("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],v=y("Promise"),m=y("then");i.onUnhandledError=l=>{if(i.showUncaughtError()){const u=l&&l.rejection;u?console.error("Unhandled Promise rejection:",u instanceof Error?u.message:u,"; Zone:",l.zone.name,"; Task:",l.task&&l.task.source,"; Value:",u,u instanceof Error?u.stack:void 0):console.error(l)}},i.microtaskDrainDone=()=>{for(;d.length;){const l=d.shift();try{l.zone.runGuarded(()=>{throw l.throwOriginal?l.rejection:l})}catch(u){N(u)}}};const Z=y("unhandledPromiseRejectionHandler");function N(l){i.onUnhandledError(l);try{const u=n[Z];"function"==typeof u&&u.call(this,l)}catch{}}function B(l){return l&&l.then}function H(l){return l}function K(l){return t.reject(l)}const q=y("state"),R=y("value"),_=y("finally"),J=y("parentPromiseValue"),x=y("parentPromiseState"),j=null,p=!0,G=!1;function I(l,u){return s=>{try{z(l,u,s)}catch(f){z(l,!1,f)}}}const w=function(){let l=!1;return function(s){return function(){l||(l=!0,s.apply(null,arguments))}}},oe=y("currentTaskTrace");function z(l,u,s){const f=w();if(l===s)throw new TypeError("Promise resolved with itself");if(l[q]===j){let g=null;try{("object"==typeof s||"function"==typeof s)&&(g=s&&s.then)}catch(b){return f(()=>{z(l,!1,b)})(),l}if(u!==G&&s instanceof t&&s.hasOwnProperty(q)&&s.hasOwnProperty(R)&&s[q]!==j)re(s),z(l,s[q],s[R]);else if(u!==G&&"function"==typeof g)try{g.call(s,f(I(l,u)),f(I(l,!1)))}catch(b){f(()=>{z(l,!1,b)})()}else{l[q]=u;const b=l[R];if(l[R]=s,l[_]===_&&u===p&&(l[q]=l[x],l[R]=l[J]),u===G&&s instanceof Error){const T=n.currentTask&&n.currentTask.data&&n.currentTask.data.__creationTrace__;T&&c(s,oe,{configurable:!0,enumerable:!1,writable:!0,value:T})}for(let T=0;T{try{const S=l[R],D=!!s&&_===s[_];D&&(s[J]=S,s[x]=b);const O=u.run(T,void 0,D&&T!==K&&T!==H?[]:[S]);z(s,!0,O)}catch(S){z(s,!1,S)}},s)}const L=function(){},E=e.AggregateError;class t{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(u){return z(new this(null),p,u)}static reject(u){return z(new this(null),G,u)}static any(u){if(!u||"function"!=typeof u[Symbol.iterator])return Promise.reject(new E([],"All promises were rejected"));const s=[];let f=0;try{for(let T of u)f++,s.push(t.resolve(T))}catch{return Promise.reject(new E([],"All promises were rejected"))}if(0===f)return Promise.reject(new E([],"All promises were rejected"));let g=!1;const b=[];return new t((T,S)=>{for(let D=0;D{g||(g=!0,T(O))},O=>{b.push(O),f--,0===f&&(g=!0,S(new E(b,"All promises were rejected")))})})}static race(u){let s,f,g=new this((S,D)=>{s=S,f=D});function b(S){s(S)}function T(S){f(S)}for(let S of u)B(S)||(S=this.resolve(S)),S.then(b,T);return g}static all(u){return t.allWithCallback(u)}static allSettled(u){return(this&&this.prototype instanceof t?this:t).allWithCallback(u,{thenCallback:f=>({status:"fulfilled",value:f}),errorCallback:f=>({status:"rejected",reason:f})})}static allWithCallback(u,s){let f,g,b=new this((O,V)=>{f=O,g=V}),T=2,S=0;const D=[];for(let O of u){B(O)||(O=this.resolve(O));const V=S;try{O.then(F=>{D[V]=s?s.thenCallback(F):F,T--,0===T&&f(D)},F=>{s?(D[V]=s.errorCallback(F),T--,0===T&&f(D)):g(F)})}catch(F){g(F)}T++,S++}return T-=2,0===T&&f(D),b}constructor(u){const s=this;if(!(s instanceof t))throw new Error("Must be an instanceof Promise.");s[q]=j,s[R]=[];try{const f=w();u&&u(f(I(s,p)),f(I(s,G)))}catch(f){z(s,!1,f)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return t}then(u,s){var f;let g=null===(f=this.constructor)||void 0===f?void 0:f[Symbol.species];(!g||"function"!=typeof g)&&(g=this.constructor||t);const b=new g(L),T=n.current;return this[q]==j?this[R].push(T,b,u,s):ee(this,T,b,u,s),b}catch(u){return this.then(null,u)}finally(u){var s;let f=null===(s=this.constructor)||void 0===s?void 0:s[Symbol.species];(!f||"function"!=typeof f)&&(f=t);const g=new f(L);g[_]=_;const b=n.current;return this[q]==j?this[R].push(b,g,u,u):ee(this,b,g,u,u),g}}t.resolve=t.resolve,t.reject=t.reject,t.race=t.race,t.all=t.all;const r=e[v]=e.Promise;e.Promise=t;const k=y("thenPatched");function C(l){const u=l.prototype,s=o(u,"then");if(s&&(!1===s.writable||!s.configurable))return;const f=u.then;u[m]=f,l.prototype.then=function(g,b){return new t((S,D)=>{f.call(this,S,D)}).then(g,b)},l[k]=!0}return i.patchThen=C,r&&(C(r),ae(e,"fetch",l=>function $(l){return function(u,s){let f=l.apply(u,s);if(f instanceof t)return f;let g=f.constructor;return g[k]||C(g),f}}(l))),Promise[n.__symbol__("uncaughtPromiseErrors")]=d,t}),Zone.__load_patch("toString",e=>{const n=Function.prototype.toString,i=A("OriginalDelegate"),o=A("Promise"),c=A("Error"),a=function(){if("function"==typeof this){const v=this[i];if(v)return"function"==typeof v?n.call(v):Object.prototype.toString.call(v);if(this===Promise){const m=e[o];if(m)return n.call(m)}if(this===Error){const m=e[c];if(m)return n.call(m)}}return n.call(this)};a[i]=n,Function.prototype.toString=a;const y=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":y.call(this)}});let Ee=!1;if(typeof window<"u")try{const e=Object.defineProperty({},"passive",{get:function(){Ee=!0}});window.addEventListener("test",e,e),window.removeEventListener("test",e,e)}catch{Ee=!1}const ht={useG:!0},te={},ze={},Ye=new RegExp("^"+me+"(\\w+)(true|false)$"),$e=A("propagationStopped");function Je(e,n){const i=(n?n(e):e)+ce,o=(n?n(e):e)+ie,c=me+i,a=me+o;te[e]={},te[e][ce]=c,te[e][ie]=a}function dt(e,n,i,o){const c=o&&o.add||De,a=o&&o.rm||Oe,y=o&&o.listeners||"eventListeners",d=o&&o.rmAll||"removeAllListeners",P=A(c),v="."+c+":",m="prependListener",M="."+m+":",Z=function(R,_,J){if(R.isRemoved)return;const x=R.callback;let X;"object"==typeof x&&x.handleEvent&&(R.callback=p=>x.handleEvent(p),R.originalDelegate=x);try{R.invoke(R,_,[J])}catch(p){X=p}const j=R.options;return j&&"object"==typeof j&&j.once&&_[a].call(_,J.type,R.originalDelegate?R.originalDelegate:R.callback,j),X};function N(R,_,J){if(!(_=_||e.event))return;const x=R||_.target||e,X=x[te[_.type][J?ie:ce]];if(X){const j=[];if(1===X.length){const p=Z(X[0],x,_);p&&j.push(p)}else{const p=X.slice();for(let G=0;G{throw G})}}}const B=function(R){return N(this,R,!1)},H=function(R){return N(this,R,!0)};function K(R,_){if(!R)return!1;let J=!0;_&&void 0!==_.useG&&(J=_.useG);const x=_&&_.vh;let X=!0;_&&void 0!==_.chkDup&&(X=_.chkDup);let j=!1;_&&void 0!==_.rt&&(j=_.rt);let p=R;for(;p&&!p.hasOwnProperty(c);)p=ve(p);if(!p&&R[c]&&(p=R),!p||p[P])return!1;const G=_&&_.eventNameToString,h={},I=p[P]=p[c],w=p[A(a)]=p[a],Q=p[A(y)]=p[y],oe=p[A(d)]=p[d];let z;function U(s,f){return!Ee&&"object"==typeof s&&s?!!s.capture:Ee&&f?"boolean"==typeof s?{capture:s,passive:!0}:s?"object"==typeof s&&!1!==s.passive?Object.assign(Object.assign({},s),{passive:!0}):s:{passive:!0}:s}_&&_.prepend&&(z=p[A(_.prepend)]=p[_.prepend]);const t=J?function(s){if(!h.isExisting)return I.call(h.target,h.eventName,h.capture?H:B,h.options)}:function(s){return I.call(h.target,h.eventName,s.invoke,h.options)},r=J?function(s){if(!s.isRemoved){const f=te[s.eventName];let g;f&&(g=f[s.capture?ie:ce]);const b=g&&s.target[g];if(b)for(let T=0;Tfunction(c,a){c[$e]=!0,o&&o.apply(c,a)})}function Et(e,n,i,o,c){const a=Zone.__symbol__(o);if(n[a])return;const y=n[a]=n[o];n[o]=function(d,P,v){return P&&P.prototype&&c.forEach(function(m){const M=`${i}.${o}::`+m,Z=P.prototype;try{if(Z.hasOwnProperty(m)){const N=e.ObjectGetOwnPropertyDescriptor(Z,m);N&&N.value?(N.value=e.wrapWithCurrentZone(N.value,M),e._redefineProperty(P.prototype,m,N)):Z[m]&&(Z[m]=e.wrapWithCurrentZone(Z[m],M))}else Z[m]&&(Z[m]=e.wrapWithCurrentZone(Z[m],M))}catch{}}),y.call(n,d,P,v)},e.attachOriginToPatched(n[o],y)}function Qe(e,n,i){if(!i||0===i.length)return n;const o=i.filter(a=>a.target===e);if(!o||0===o.length)return n;const c=o[0].ignoreProperties;return n.filter(a=>-1===c.indexOf(a))}function et(e,n,i,o){e&&qe(e,Qe(e,n,i),o)}function He(e){return Object.getOwnPropertyNames(e).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}Zone.__load_patch("util",(e,n,i)=>{const o=He(e);i.patchOnProperties=qe,i.patchMethod=ae,i.bindArguments=Me,i.patchMacroTask=lt;const c=n.__symbol__("BLACK_LISTED_EVENTS"),a=n.__symbol__("UNPATCHED_EVENTS");e[a]&&(e[c]=e[a]),e[c]&&(n[c]=n[a]=e[c]),i.patchEventPrototype=_t,i.patchEventTarget=dt,i.isIEOrEdge=ft,i.ObjectDefineProperty=pe,i.ObjectGetOwnPropertyDescriptor=ue,i.ObjectCreate=Se,i.ArraySlice=it,i.patchClass=ge,i.wrapWithCurrentZone=Ie,i.filterProperties=Qe,i.attachOriginToPatched=le,i._redefineProperty=Object.defineProperty,i.patchCallbacks=Et,i.getGlobalObjects=()=>({globalSources:ze,zoneSymbolEventNames:te,eventNames:o,isBrowser:je,isMix:Be,isNode:Pe,TRUE_STR:ie,FALSE_STR:ce,ZONE_SYMBOL_PREFIX:me,ADD_EVENT_LISTENER_STR:De,REMOVE_EVENT_LISTENER_STR:Oe})});const Re=A("zoneTask");function Te(e,n,i,o){let c=null,a=null;i+=o;const y={};function d(v){const m=v.data;return m.args[0]=function(){return v.invoke.apply(this,arguments)},m.handleId=c.apply(e,m.args),v}function P(v){return a.call(e,v.data.handleId)}c=ae(e,n+=o,v=>function(m,M){if("function"==typeof M[0]){const Z={isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?M[1]||0:void 0,args:M},N=M[0];M[0]=function(){try{return N.apply(this,arguments)}finally{Z.isPeriodic||("number"==typeof Z.handleId?delete y[Z.handleId]:Z.handleId&&(Z.handleId[Re]=null))}};const B=Le(n,M[0],Z,d,P);if(!B)return B;const H=B.data.handleId;return"number"==typeof H?y[H]=B:H&&(H[Re]=B),H&&H.ref&&H.unref&&"function"==typeof H.ref&&"function"==typeof H.unref&&(B.ref=H.ref.bind(H),B.unref=H.unref.bind(H)),"number"==typeof H||H?H:B}return v.apply(e,M)}),a=ae(e,i,v=>function(m,M){const Z=M[0];let N;"number"==typeof Z?N=y[Z]:(N=Z&&Z[Re],N||(N=Z)),N&&"string"==typeof N.type?"notScheduled"!==N.state&&(N.cancelFn&&N.data.isPeriodic||0===N.runCount)&&("number"==typeof Z?delete y[Z]:Z&&(Z[Re]=null),N.zone.cancelTask(N)):v.apply(e,M)})}Zone.__load_patch("legacy",e=>{const n=e[Zone.__symbol__("legacyPatch")];n&&n()}),Zone.__load_patch("queueMicrotask",(e,n,i)=>{i.patchMethod(e,"queueMicrotask",o=>function(c,a){n.current.scheduleMicroTask("queueMicrotask",a[0])})}),Zone.__load_patch("timers",e=>{const n="set",i="clear";Te(e,n,i,"Timeout"),Te(e,n,i,"Interval"),Te(e,n,i,"Immediate")}),Zone.__load_patch("requestAnimationFrame",e=>{Te(e,"request","cancel","AnimationFrame"),Te(e,"mozRequest","mozCancel","AnimationFrame"),Te(e,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(e,n)=>{const i=["alert","prompt","confirm"];for(let o=0;ofunction(P,v){return n.current.run(a,e,v,d)})}),Zone.__load_patch("EventTarget",(e,n,i)=>{(function mt(e,n){n.patchEventPrototype(e,n)})(e,i),function pt(e,n){if(Zone[n.symbol("patchEventTarget")])return;const{eventNames:i,zoneSymbolEventNames:o,TRUE_STR:c,FALSE_STR:a,ZONE_SYMBOL_PREFIX:y}=n.getGlobalObjects();for(let P=0;P{ge("MutationObserver"),ge("WebKitMutationObserver")}),Zone.__load_patch("IntersectionObserver",(e,n,i)=>{ge("IntersectionObserver")}),Zone.__load_patch("FileReader",(e,n,i)=>{ge("FileReader")}),Zone.__load_patch("on_property",(e,n,i)=>{!function Tt(e,n){if(Pe&&!Be||Zone[e.symbol("patchEvents")])return;const i=n.__Zone_ignore_on_properties;let o=[];if(je){const c=window;o=o.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const a=function ut(){try{const e=_e.navigator.userAgent;if(-1!==e.indexOf("MSIE ")||-1!==e.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:c,ignoreProperties:["error"]}]:[];et(c,He(c),i&&i.concat(a),ve(c))}o=o.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{!function yt(e,n){const{isBrowser:i,isMix:o}=n.getGlobalObjects();(i||o)&&e.customElements&&"customElements"in e&&n.patchCallbacks(n,e.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}(e,i)}),Zone.__load_patch("XHR",(e,n)=>{!function P(v){const m=v.XMLHttpRequest;if(!m)return;const M=m.prototype;let N=M[Ze],B=M[Ne];if(!N){const h=v.XMLHttpRequestEventTarget;if(h){const I=h.prototype;N=I[Ze],B=I[Ne]}}const H="readystatechange",K="scheduled";function q(h){const I=h.data,w=I.target;w[a]=!1,w[d]=!1;const Q=w[c];N||(N=w[Ze],B=w[Ne]),Q&&B.call(w,H,Q);const oe=w[c]=()=>{if(w.readyState===w.DONE)if(!I.aborted&&w[a]&&h.state===K){const U=w[n.__symbol__("loadfalse")];if(0!==w.status&&U&&U.length>0){const re=h.invoke;h.invoke=function(){const ee=w[n.__symbol__("loadfalse")];for(let W=0;Wfunction(h,I){return h[o]=0==I[2],h[y]=I[1],J.apply(h,I)}),X=A("fetchTaskAborting"),j=A("fetchTaskScheduling"),p=ae(M,"send",()=>function(h,I){if(!0===n.current[j]||h[o])return p.apply(h,I);{const w={target:h,url:h[y],isPeriodic:!1,args:I,aborted:!1},Q=Le("XMLHttpRequest.send",R,w,q,_);h&&!0===h[d]&&!w.aborted&&Q.state===K&&Q.invoke()}}),G=ae(M,"abort",()=>function(h,I){const w=function Z(h){return h[i]}(h);if(w&&"string"==typeof w.type){if(null==w.cancelFn||w.data&&w.data.aborted)return;w.zone.cancelTask(w)}else if(!0===n.current[X])return G.apply(h,I)})}(e);const i=A("xhrTask"),o=A("xhrSync"),c=A("xhrListener"),a=A("xhrScheduled"),y=A("xhrURL"),d=A("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",e=>{e.navigator&&e.navigator.geolocation&&function at(e,n){const i=e.constructor.name;for(let o=0;o{const P=function(){return d.apply(this,Me(arguments,i+"."+c))};return le(P,d),P})(a)}}}(e.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(e,n)=>{function i(o){return function(c){Ke(e,o).forEach(y=>{const d=e.PromiseRejectionEvent;if(d){const P=new d(o,{promise:c.promise,reason:c.rejection});y.invoke(P)}})}}e.PromiseRejectionEvent&&(n[A("unhandledPromiseRejectionHandler")]=i("unhandledrejection"),n[A("rejectionHandledHandler")]=i("rejectionhandled"))})}},ue=>{ue(ue.s=583)}]); \ No newline at end of file +"use strict";(self.webpackChunkuds=self.webpackChunkuds||[]).push([[429],{583:()=>{!function(t){const n=t.performance;function i(L){n&&n.mark&&n.mark(L)}function o(L,T){n&&n.measure&&n.measure(L,T)}i("Zone");const c=t.__Zone_symbol_prefix||"__zone_symbol__";function a(L){return c+L}const p=!0===t[a("forceDuplicateZoneCheck")];if(t.Zone){if(p||"function"!=typeof t.Zone.__symbol__)throw new Error("Zone already loaded.");return t.Zone}let d=(()=>{class L{static assertZonePatched(){if(t.Promise!==oe.ZoneAwarePromise)throw new Error("Zone.js has detected that ZoneAwarePromise `(window|global).Promise` has been overwritten.\nMost likely cause is that a Promise polyfill has been loaded after Zone.js (Polyfilling Promise api is not necessary when zone.js is loaded. If you must load one, do so before loading zone.js.)")}static get root(){let e=L.current;for(;e.parent;)e=e.parent;return e}static get current(){return U.zone}static get currentTask(){return re}static __load_patch(e,r,k=!1){if(oe.hasOwnProperty(e)){if(!k&&p)throw Error("Already loaded patch: "+e)}else if(!t["__Zone_disable_"+e]){const C="Zone:"+e;i(C),oe[e]=r(t,L,z),o(C,C)}}get parent(){return this._parent}get name(){return this._name}constructor(e,r){this._parent=e,this._name=r?r.name||"unnamed":"",this._properties=r&&r.properties||{},this._zoneDelegate=new v(this,this._parent&&this._parent._zoneDelegate,r)}get(e){const r=this.getZoneWith(e);if(r)return r._properties[e]}getZoneWith(e){let r=this;for(;r;){if(r._properties.hasOwnProperty(e))return r;r=r._parent}return null}fork(e){if(!e)throw new Error("ZoneSpec required!");return this._zoneDelegate.fork(this,e)}wrap(e,r){if("function"!=typeof e)throw new Error("Expecting function got: "+e);const k=this._zoneDelegate.intercept(this,e,r),C=this;return function(){return C.runGuarded(k,this,arguments,r)}}run(e,r,k,C){U={parent:U,zone:this};try{return this._zoneDelegate.invoke(this,e,r,k,C)}finally{U=U.parent}}runGuarded(e,r=null,k,C){U={parent:U,zone:this};try{try{return this._zoneDelegate.invoke(this,e,r,k,C)}catch($){if(this._zoneDelegate.handleError(this,$))throw $}}finally{U=U.parent}}runTask(e,r,k){if(e.zone!=this)throw new Error("A task can only be run in the zone of creation! (Creation: "+(e.zone||J).name+"; Execution: "+this.name+")");if(e.state===x&&(e.type===Q||e.type===w))return;const C=e.state!=E;C&&e._transitionTo(E,A),e.runCount++;const $=re;re=e,U={parent:U,zone:this};try{e.type==w&&e.data&&!e.data.isPeriodic&&(e.cancelFn=void 0);try{return this._zoneDelegate.invokeTask(this,e,r,k)}catch(l){if(this._zoneDelegate.handleError(this,l))throw l}}finally{e.state!==x&&e.state!==h&&(e.type==Q||e.data&&e.data.isPeriodic?C&&e._transitionTo(A,E):(e.runCount=0,this._updateTaskCount(e,-1),C&&e._transitionTo(x,E,x))),U=U.parent,re=$}}scheduleTask(e){if(e.zone&&e.zone!==this){let k=this;for(;k;){if(k===e.zone)throw Error(`can not reschedule task to ${this.name} which is descendants of the original zone ${e.zone.name}`);k=k.parent}}e._transitionTo(X,x);const r=[];e._zoneDelegates=r,e._zone=this;try{e=this._zoneDelegate.scheduleTask(this,e)}catch(k){throw e._transitionTo(h,X,x),this._zoneDelegate.handleError(this,k),k}return e._zoneDelegates===r&&this._updateTaskCount(e,1),e.state==X&&e._transitionTo(A,X),e}scheduleMicroTask(e,r,k,C){return this.scheduleTask(new m(I,e,r,k,C,void 0))}scheduleMacroTask(e,r,k,C,$){return this.scheduleTask(new m(w,e,r,k,C,$))}scheduleEventTask(e,r,k,C,$){return this.scheduleTask(new m(Q,e,r,k,C,$))}cancelTask(e){if(e.zone!=this)throw new Error("A task can only be cancelled in the zone of creation! (Creation: "+(e.zone||J).name+"; Execution: "+this.name+")");if(e.state===A||e.state===E){e._transitionTo(G,A,E);try{this._zoneDelegate.cancelTask(this,e)}catch(r){throw e._transitionTo(h,G),this._zoneDelegate.handleError(this,r),r}return this._updateTaskCount(e,-1),e._transitionTo(x,G),e.runCount=0,e}}_updateTaskCount(e,r){const k=e._zoneDelegates;-1==r&&(e._zoneDelegates=null);for(let C=0;CL.hasTask(e,r),onScheduleTask:(L,T,e,r)=>L.scheduleTask(e,r),onInvokeTask:(L,T,e,r,k,C)=>L.invokeTask(e,r,k,C),onCancelTask:(L,T,e,r)=>L.cancelTask(e,r)};class v{constructor(T,e,r){this._taskCounts={microTask:0,macroTask:0,eventTask:0},this.zone=T,this._parentDelegate=e,this._forkZS=r&&(r&&r.onFork?r:e._forkZS),this._forkDlgt=r&&(r.onFork?e:e._forkDlgt),this._forkCurrZone=r&&(r.onFork?this.zone:e._forkCurrZone),this._interceptZS=r&&(r.onIntercept?r:e._interceptZS),this._interceptDlgt=r&&(r.onIntercept?e:e._interceptDlgt),this._interceptCurrZone=r&&(r.onIntercept?this.zone:e._interceptCurrZone),this._invokeZS=r&&(r.onInvoke?r:e._invokeZS),this._invokeDlgt=r&&(r.onInvoke?e:e._invokeDlgt),this._invokeCurrZone=r&&(r.onInvoke?this.zone:e._invokeCurrZone),this._handleErrorZS=r&&(r.onHandleError?r:e._handleErrorZS),this._handleErrorDlgt=r&&(r.onHandleError?e:e._handleErrorDlgt),this._handleErrorCurrZone=r&&(r.onHandleError?this.zone:e._handleErrorCurrZone),this._scheduleTaskZS=r&&(r.onScheduleTask?r:e._scheduleTaskZS),this._scheduleTaskDlgt=r&&(r.onScheduleTask?e:e._scheduleTaskDlgt),this._scheduleTaskCurrZone=r&&(r.onScheduleTask?this.zone:e._scheduleTaskCurrZone),this._invokeTaskZS=r&&(r.onInvokeTask?r:e._invokeTaskZS),this._invokeTaskDlgt=r&&(r.onInvokeTask?e:e._invokeTaskDlgt),this._invokeTaskCurrZone=r&&(r.onInvokeTask?this.zone:e._invokeTaskCurrZone),this._cancelTaskZS=r&&(r.onCancelTask?r:e._cancelTaskZS),this._cancelTaskDlgt=r&&(r.onCancelTask?e:e._cancelTaskDlgt),this._cancelTaskCurrZone=r&&(r.onCancelTask?this.zone:e._cancelTaskCurrZone),this._hasTaskZS=null,this._hasTaskDlgt=null,this._hasTaskDlgtOwner=null,this._hasTaskCurrZone=null;const k=r&&r.onHasTask;(k||e&&e._hasTaskZS)&&(this._hasTaskZS=k?r:P,this._hasTaskDlgt=e,this._hasTaskDlgtOwner=this,this._hasTaskCurrZone=T,r.onScheduleTask||(this._scheduleTaskZS=P,this._scheduleTaskDlgt=e,this._scheduleTaskCurrZone=this.zone),r.onInvokeTask||(this._invokeTaskZS=P,this._invokeTaskDlgt=e,this._invokeTaskCurrZone=this.zone),r.onCancelTask||(this._cancelTaskZS=P,this._cancelTaskDlgt=e,this._cancelTaskCurrZone=this.zone))}fork(T,e){return this._forkZS?this._forkZS.onFork(this._forkDlgt,this.zone,T,e):new d(T,e)}intercept(T,e,r){return this._interceptZS?this._interceptZS.onIntercept(this._interceptDlgt,this._interceptCurrZone,T,e,r):e}invoke(T,e,r,k,C){return this._invokeZS?this._invokeZS.onInvoke(this._invokeDlgt,this._invokeCurrZone,T,e,r,k,C):e.apply(r,k)}handleError(T,e){return!this._handleErrorZS||this._handleErrorZS.onHandleError(this._handleErrorDlgt,this._handleErrorCurrZone,T,e)}scheduleTask(T,e){let r=e;if(this._scheduleTaskZS)this._hasTaskZS&&r._zoneDelegates.push(this._hasTaskDlgtOwner),r=this._scheduleTaskZS.onScheduleTask(this._scheduleTaskDlgt,this._scheduleTaskCurrZone,T,e),r||(r=e);else if(e.scheduleFn)e.scheduleFn(e);else{if(e.type!=I)throw new Error("Task is missing scheduleFn.");R(e)}return r}invokeTask(T,e,r,k){return this._invokeTaskZS?this._invokeTaskZS.onInvokeTask(this._invokeTaskDlgt,this._invokeTaskCurrZone,T,e,r,k):e.callback.apply(r,k)}cancelTask(T,e){let r;if(this._cancelTaskZS)r=this._cancelTaskZS.onCancelTask(this._cancelTaskDlgt,this._cancelTaskCurrZone,T,e);else{if(!e.cancelFn)throw Error("Task is not cancelable");r=e.cancelFn(e)}return r}hasTask(T,e){try{this._hasTaskZS&&this._hasTaskZS.onHasTask(this._hasTaskDlgt,this._hasTaskCurrZone,T,e)}catch(r){this.handleError(T,r)}}_updateTaskCount(T,e){const r=this._taskCounts,k=r[T],C=r[T]=k+e;if(C<0)throw new Error("More tasks executed then were scheduled.");0!=k&&0!=C||this.hasTask(this.zone,{microTask:r.microTask>0,macroTask:r.macroTask>0,eventTask:r.eventTask>0,change:T})}}class m{constructor(T,e,r,k,C,$){if(this._zone=null,this.runCount=0,this._zoneDelegates=null,this._state="notScheduled",this.type=T,this.source=e,this.data=k,this.scheduleFn=C,this.cancelFn=$,!r)throw new Error("callback is not defined");this.callback=r;const l=this;this.invoke=T===Q&&k&&k.useG?m.invokeTask:function(){return m.invokeTask.call(t,l,this,arguments)}}static invokeTask(T,e,r){T||(T=this),ee++;try{return T.runCount++,T.zone.runTask(T,e,r)}finally{1==ee&&_(),ee--}}get zone(){return this._zone}get state(){return this._state}cancelScheduleRequest(){this._transitionTo(x,X)}_transitionTo(T,e,r){if(this._state!==e&&this._state!==r)throw new Error(`${this.type} '${this.source}': can not transition to '${T}', expecting state '${e}'${r?" or '"+r+"'":""}, was '${this._state}'.`);this._state=T,T==x&&(this._zoneDelegates=null)}toString(){return this.data&&typeof this.data.handleId<"u"?this.data.handleId.toString():Object.prototype.toString.call(this)}toJSON(){return{type:this.type,state:this.state,source:this.source,zone:this.zone.name,runCount:this.runCount}}}const M=a("setTimeout"),O=a("Promise"),N=a("then");let K,B=[],H=!1;function q(L){if(K||t[O]&&(K=t[O].resolve(0)),K){let T=K[N];T||(T=K.then),T.call(K,L)}else t[M](L,0)}function R(L){0===ee&&0===B.length&&q(_),L&&B.push(L)}function _(){if(!H){for(H=!0;B.length;){const L=B;B=[];for(let T=0;TU,onUnhandledError:W,microtaskDrainDone:W,scheduleMicroTask:R,showUncaughtError:()=>!d[a("ignoreConsoleErrorUncaughtError")],patchEventTarget:()=>[],patchOnProperties:W,patchMethod:()=>W,bindArguments:()=>[],patchThen:()=>W,patchMacroTask:()=>W,patchEventPrototype:()=>W,isIEOrEdge:()=>!1,getGlobalObjects:()=>{},ObjectDefineProperty:()=>W,ObjectGetOwnPropertyDescriptor:()=>{},ObjectCreate:()=>{},ArraySlice:()=>[],patchClass:()=>W,wrapWithCurrentZone:()=>W,filterProperties:()=>[],attachOriginToPatched:()=>W,_redefineProperty:()=>W,patchCallbacks:()=>W,nativeScheduleMicroTask:q};let U={parent:null,zone:new d(null,null)},re=null,ee=0;function W(){}o("Zone","Zone"),t.Zone=d}(typeof window<"u"&&window||typeof self<"u"&&self||global);const ue=Object.getOwnPropertyDescriptor,pe=Object.defineProperty,ve=Object.getPrototypeOf,Se=Object.create,it=Array.prototype.slice,De="addEventListener",Ze="removeEventListener",Oe=Zone.__symbol__(De),Ne=Zone.__symbol__(Ze),ie="true",ce="false",me=Zone.__symbol__("");function Ie(t,n){return Zone.current.wrap(t,n)}function Le(t,n,i,o,c){return Zone.current.scheduleMacroTask(t,n,i,o,c)}const j=Zone.__symbol__,be=typeof window<"u",_e=be?window:void 0,Y=be&&_e||"object"==typeof self&&self||global,ct="removeAttribute";function Me(t,n){for(let i=t.length-1;i>=0;i--)"function"==typeof t[i]&&(t[i]=Ie(t[i],n+"_"+i));return t}function Ve(t){return!t||!1!==t.writable&&!("function"==typeof t.get&&typeof t.set>"u")}const Fe=typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope,Pe=!("nw"in Y)&&typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process),Ae=!Pe&&!Fe&&!(!be||!_e.HTMLElement),Be=typeof Y.process<"u"&&"[object process]"==={}.toString.call(Y.process)&&!Fe&&!(!be||!_e.HTMLElement),we={},Ue=function(t){if(!(t=t||Y.event))return;let n=we[t.type];n||(n=we[t.type]=j("ON_PROPERTY"+t.type));const i=this||t.target||Y,o=i[n];let c;return Ae&&i===_e&&"error"===t.type?(c=o&&o.call(this,t.message,t.filename,t.lineno,t.colno,t.error),!0===c&&t.preventDefault()):(c=o&&o.apply(this,arguments),null!=c&&!c&&t.preventDefault()),c};function We(t,n,i){let o=ue(t,n);if(!o&&i&&ue(i,n)&&(o={enumerable:!0,configurable:!0}),!o||!o.configurable)return;const c=j("on"+n+"patched");if(t.hasOwnProperty(c)&&t[c])return;delete o.writable,delete o.value;const a=o.get,p=o.set,d=n.slice(2);let P=we[d];P||(P=we[d]=j("ON_PROPERTY"+d)),o.set=function(v){let m=this;!m&&t===Y&&(m=Y),m&&("function"==typeof m[P]&&m.removeEventListener(d,Ue),p&&p.call(m,null),m[P]=v,"function"==typeof v&&m.addEventListener(d,Ue,!1))},o.get=function(){let v=this;if(!v&&t===Y&&(v=Y),!v)return null;const m=v[P];if(m)return m;if(a){let M=a.call(this);if(M)return o.set.call(this,M),"function"==typeof v[ct]&&v.removeAttribute(n),M}return null},pe(t,n,o),t[c]=!0}function qe(t,n,i){if(n)for(let o=0;ofunction(p,d){const P=i(p,d);return P.cbIdx>=0&&"function"==typeof d[P.cbIdx]?Le(P.name,d[P.cbIdx],P,c):a.apply(p,d)})}function le(t,n){t[j("OriginalDelegate")]=n}let Xe=!1,je=!1;function ft(){if(Xe)return je;Xe=!0;try{const t=_e.navigator.userAgent;(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/")||-1!==t.indexOf("Edge/"))&&(je=!0)}catch{}return je}Zone.__load_patch("ZoneAwarePromise",(t,n,i)=>{const o=Object.getOwnPropertyDescriptor,c=Object.defineProperty,p=i.symbol,d=[],P=!0===t[p("DISABLE_WRAPPING_UNCAUGHT_PROMISE_REJECTION")],v=p("Promise"),m=p("then"),M="__creationTrace__";i.onUnhandledError=l=>{if(i.showUncaughtError()){const u=l&&l.rejection;u?console.error("Unhandled Promise rejection:",u instanceof Error?u.message:u,"; Zone:",l.zone.name,"; Task:",l.task&&l.task.source,"; Value:",u,u instanceof Error?u.stack:void 0):console.error(l)}},i.microtaskDrainDone=()=>{for(;d.length;){const l=d.shift();try{l.zone.runGuarded(()=>{throw l.throwOriginal?l.rejection:l})}catch(u){N(u)}}};const O=p("unhandledPromiseRejectionHandler");function N(l){i.onUnhandledError(l);try{const u=n[O];"function"==typeof u&&u.call(this,l)}catch{}}function B(l){return l&&l.then}function H(l){return l}function K(l){return e.reject(l)}const q=p("state"),R=p("value"),_=p("finally"),J=p("parentPromiseValue"),x=p("parentPromiseState"),X="Promise.then",A=null,E=!0,G=!1,h=0;function I(l,u){return s=>{try{z(l,u,s)}catch(f){z(l,!1,f)}}}const w=function(){let l=!1;return function(s){return function(){l||(l=!0,s.apply(null,arguments))}}},Q="Promise resolved with itself",oe=p("currentTaskTrace");function z(l,u,s){const f=w();if(l===s)throw new TypeError(Q);if(l[q]===A){let g=null;try{("object"==typeof s||"function"==typeof s)&&(g=s&&s.then)}catch(b){return f(()=>{z(l,!1,b)})(),l}if(u!==G&&s instanceof e&&s.hasOwnProperty(q)&&s.hasOwnProperty(R)&&s[q]!==A)re(s),z(l,s[q],s[R]);else if(u!==G&&"function"==typeof g)try{g.call(s,f(I(l,u)),f(I(l,!1)))}catch(b){f(()=>{z(l,!1,b)})()}else{l[q]=u;const b=l[R];if(l[R]=s,l[_]===_&&u===E&&(l[q]=l[x],l[R]=l[J]),u===G&&s instanceof Error){const y=n.currentTask&&n.currentTask.data&&n.currentTask.data[M];y&&c(s,oe,{configurable:!0,enumerable:!1,writable:!0,value:y})}for(let y=0;y{try{const S=l[R],D=!!s&&_===s[_];D&&(s[J]=S,s[x]=b);const Z=u.run(y,void 0,D&&y!==K&&y!==H?[]:[S]);z(s,!0,Z)}catch(S){z(s,!1,S)}},s)}const L=function(){},T=t.AggregateError;class e{static toString(){return"function ZoneAwarePromise() { [native code] }"}static resolve(u){return z(new this(null),E,u)}static reject(u){return z(new this(null),G,u)}static any(u){if(!u||"function"!=typeof u[Symbol.iterator])return Promise.reject(new T([],"All promises were rejected"));const s=[];let f=0;try{for(let y of u)f++,s.push(e.resolve(y))}catch{return Promise.reject(new T([],"All promises were rejected"))}if(0===f)return Promise.reject(new T([],"All promises were rejected"));let g=!1;const b=[];return new e((y,S)=>{for(let D=0;D{g||(g=!0,y(Z))},Z=>{b.push(Z),f--,0===f&&(g=!0,S(new T(b,"All promises were rejected")))})})}static race(u){let s,f,g=new this((S,D)=>{s=S,f=D});function b(S){s(S)}function y(S){f(S)}for(let S of u)B(S)||(S=this.resolve(S)),S.then(b,y);return g}static all(u){return e.allWithCallback(u)}static allSettled(u){return(this&&this.prototype instanceof e?this:e).allWithCallback(u,{thenCallback:f=>({status:"fulfilled",value:f}),errorCallback:f=>({status:"rejected",reason:f})})}static allWithCallback(u,s){let f,g,b=new this((Z,V)=>{f=Z,g=V}),y=2,S=0;const D=[];for(let Z of u){B(Z)||(Z=this.resolve(Z));const V=S;try{Z.then(F=>{D[V]=s?s.thenCallback(F):F,y--,0===y&&f(D)},F=>{s?(D[V]=s.errorCallback(F),y--,0===y&&f(D)):g(F)})}catch(F){g(F)}y++,S++}return y-=2,0===y&&f(D),b}constructor(u){const s=this;if(!(s instanceof e))throw new Error("Must be an instanceof Promise.");s[q]=A,s[R]=[];try{const f=w();u&&u(f(I(s,E)),f(I(s,G)))}catch(f){z(s,!1,f)}}get[Symbol.toStringTag](){return"Promise"}get[Symbol.species](){return e}then(u,s){var f;let g=null===(f=this.constructor)||void 0===f?void 0:f[Symbol.species];(!g||"function"!=typeof g)&&(g=this.constructor||e);const b=new g(L),y=n.current;return this[q]==A?this[R].push(y,b,u,s):ee(this,y,b,u,s),b}catch(u){return this.then(null,u)}finally(u){var s;let f=null===(s=this.constructor)||void 0===s?void 0:s[Symbol.species];(!f||"function"!=typeof f)&&(f=e);const g=new f(L);g[_]=_;const b=n.current;return this[q]==A?this[R].push(b,g,u,u):ee(this,b,g,u,u),g}}e.resolve=e.resolve,e.reject=e.reject,e.race=e.race,e.all=e.all;const r=t[v]=t.Promise;t.Promise=e;const k=p("thenPatched");function C(l){const u=l.prototype,s=o(u,"then");if(s&&(!1===s.writable||!s.configurable))return;const f=u.then;u[m]=f,l.prototype.then=function(g,b){return new e((S,D)=>{f.call(this,S,D)}).then(g,b)},l[k]=!0}return i.patchThen=C,r&&(C(r),ae(t,"fetch",l=>function $(l){return function(u,s){let f=l.apply(u,s);if(f instanceof e)return f;let g=f.constructor;return g[k]||C(g),f}}(l))),Promise[n.__symbol__("uncaughtPromiseErrors")]=d,e}),Zone.__load_patch("toString",t=>{const n=Function.prototype.toString,i=j("OriginalDelegate"),o=j("Promise"),c=j("Error"),a=function(){if("function"==typeof this){const v=this[i];if(v)return"function"==typeof v?n.call(v):Object.prototype.toString.call(v);if(this===Promise){const m=t[o];if(m)return n.call(m)}if(this===Error){const m=t[c];if(m)return n.call(m)}}return n.call(this)};a[i]=n,Function.prototype.toString=a;const p=Object.prototype.toString;Object.prototype.toString=function(){return"function"==typeof Promise&&this instanceof Promise?"[object Promise]":p.call(this)}});let Ee=!1;if(typeof window<"u")try{const t=Object.defineProperty({},"passive",{get:function(){Ee=!0}});window.addEventListener("test",t,t),window.removeEventListener("test",t,t)}catch{Ee=!1}const ht={useG:!0},te={},ze={},Ye=new RegExp("^"+me+"(\\w+)(true|false)$"),$e=j("propagationStopped");function Je(t,n){const i=(n?n(t):t)+ce,o=(n?n(t):t)+ie,c=me+i,a=me+o;te[t]={},te[t][ce]=c,te[t][ie]=a}function dt(t,n,i,o){const c=o&&o.add||De,a=o&&o.rm||Ze,p=o&&o.listeners||"eventListeners",d=o&&o.rmAll||"removeAllListeners",P=j(c),v="."+c+":",m="prependListener",M="."+m+":",O=function(R,_,J){if(R.isRemoved)return;const x=R.callback;let X;"object"==typeof x&&x.handleEvent&&(R.callback=E=>x.handleEvent(E),R.originalDelegate=x);try{R.invoke(R,_,[J])}catch(E){X=E}const A=R.options;return A&&"object"==typeof A&&A.once&&_[a].call(_,J.type,R.originalDelegate?R.originalDelegate:R.callback,A),X};function N(R,_,J){if(!(_=_||t.event))return;const x=R||_.target||t,X=x[te[_.type][J?ie:ce]];if(X){const A=[];if(1===X.length){const E=O(X[0],x,_);E&&A.push(E)}else{const E=X.slice();for(let G=0;G{throw G})}}}const B=function(R){return N(this,R,!1)},H=function(R){return N(this,R,!0)};function K(R,_){if(!R)return!1;let J=!0;_&&void 0!==_.useG&&(J=_.useG);const x=_&&_.vh;let X=!0;_&&void 0!==_.chkDup&&(X=_.chkDup);let A=!1;_&&void 0!==_.rt&&(A=_.rt);let E=R;for(;E&&!E.hasOwnProperty(c);)E=ve(E);if(!E&&R[c]&&(E=R),!E||E[P])return!1;const G=_&&_.eventNameToString,h={},I=E[P]=E[c],w=E[j(a)]=E[a],Q=E[j(p)]=E[p],oe=E[j(d)]=E[d];let z;_&&_.prepend&&(z=E[j(_.prepend)]=E[_.prepend]);const e=J?function(s){if(!h.isExisting)return I.call(h.target,h.eventName,h.capture?H:B,h.options)}:function(s){return I.call(h.target,h.eventName,s.invoke,h.options)},r=J?function(s){if(!s.isRemoved){const f=te[s.eventName];let g;f&&(g=f[s.capture?ie:ce]);const b=g&&s.target[g];if(b)for(let y=0;yfunction(c,a){c[$e]=!0,o&&o.apply(c,a)})}function Et(t,n,i,o,c){const a=Zone.__symbol__(o);if(n[a])return;const p=n[a]=n[o];n[o]=function(d,P,v){return P&&P.prototype&&c.forEach(function(m){const M=`${i}.${o}::`+m,O=P.prototype;try{if(O.hasOwnProperty(m)){const N=t.ObjectGetOwnPropertyDescriptor(O,m);N&&N.value?(N.value=t.wrapWithCurrentZone(N.value,M),t._redefineProperty(P.prototype,m,N)):O[m]&&(O[m]=t.wrapWithCurrentZone(O[m],M))}else O[m]&&(O[m]=t.wrapWithCurrentZone(O[m],M))}catch{}}),p.call(n,d,P,v)},t.attachOriginToPatched(n[o],p)}function Qe(t,n,i){if(!i||0===i.length)return n;const o=i.filter(a=>a.target===t);if(!o||0===o.length)return n;const c=o[0].ignoreProperties;return n.filter(a=>-1===c.indexOf(a))}function et(t,n,i,o){t&&qe(t,Qe(t,n,i),o)}function He(t){return Object.getOwnPropertyNames(t).filter(n=>n.startsWith("on")&&n.length>2).map(n=>n.substring(2))}Zone.__load_patch("util",(t,n,i)=>{const o=He(t);i.patchOnProperties=qe,i.patchMethod=ae,i.bindArguments=Me,i.patchMacroTask=lt;const c=n.__symbol__("BLACK_LISTED_EVENTS"),a=n.__symbol__("UNPATCHED_EVENTS");t[a]&&(t[c]=t[a]),t[c]&&(n[c]=n[a]=t[c]),i.patchEventPrototype=_t,i.patchEventTarget=dt,i.isIEOrEdge=ft,i.ObjectDefineProperty=pe,i.ObjectGetOwnPropertyDescriptor=ue,i.ObjectCreate=Se,i.ArraySlice=it,i.patchClass=ge,i.wrapWithCurrentZone=Ie,i.filterProperties=Qe,i.attachOriginToPatched=le,i._redefineProperty=Object.defineProperty,i.patchCallbacks=Et,i.getGlobalObjects=()=>({globalSources:ze,zoneSymbolEventNames:te,eventNames:o,isBrowser:Ae,isMix:Be,isNode:Pe,TRUE_STR:ie,FALSE_STR:ce,ZONE_SYMBOL_PREFIX:me,ADD_EVENT_LISTENER_STR:De,REMOVE_EVENT_LISTENER_STR:Ze})});const Re=j("zoneTask");function Te(t,n,i,o){let c=null,a=null;i+=o;const p={};function d(v){const m=v.data;return m.args[0]=function(){return v.invoke.apply(this,arguments)},m.handleId=c.apply(t,m.args),v}function P(v){return a.call(t,v.data.handleId)}c=ae(t,n+=o,v=>function(m,M){if("function"==typeof M[0]){const O={isPeriodic:"Interval"===o,delay:"Timeout"===o||"Interval"===o?M[1]||0:void 0,args:M},N=M[0];M[0]=function(){try{return N.apply(this,arguments)}finally{O.isPeriodic||("number"==typeof O.handleId?delete p[O.handleId]:O.handleId&&(O.handleId[Re]=null))}};const B=Le(n,M[0],O,d,P);if(!B)return B;const H=B.data.handleId;return"number"==typeof H?p[H]=B:H&&(H[Re]=B),H&&H.ref&&H.unref&&"function"==typeof H.ref&&"function"==typeof H.unref&&(B.ref=H.ref.bind(H),B.unref=H.unref.bind(H)),"number"==typeof H||H?H:B}return v.apply(t,M)}),a=ae(t,i,v=>function(m,M){const O=M[0];let N;"number"==typeof O?N=p[O]:(N=O&&O[Re],N||(N=O)),N&&"string"==typeof N.type?"notScheduled"!==N.state&&(N.cancelFn&&N.data.isPeriodic||0===N.runCount)&&("number"==typeof O?delete p[O]:O&&(O[Re]=null),N.zone.cancelTask(N)):v.apply(t,M)})}Zone.__load_patch("legacy",t=>{const n=t[Zone.__symbol__("legacyPatch")];n&&n()}),Zone.__load_patch("queueMicrotask",(t,n,i)=>{i.patchMethod(t,"queueMicrotask",o=>function(c,a){n.current.scheduleMicroTask("queueMicrotask",a[0])})}),Zone.__load_patch("timers",t=>{const n="set",i="clear";Te(t,n,i,"Timeout"),Te(t,n,i,"Interval"),Te(t,n,i,"Immediate")}),Zone.__load_patch("requestAnimationFrame",t=>{Te(t,"request","cancel","AnimationFrame"),Te(t,"mozRequest","mozCancel","AnimationFrame"),Te(t,"webkitRequest","webkitCancel","AnimationFrame")}),Zone.__load_patch("blocking",(t,n)=>{const i=["alert","prompt","confirm"];for(let o=0;ofunction(P,v){return n.current.run(a,t,v,d)})}),Zone.__load_patch("EventTarget",(t,n,i)=>{(function mt(t,n){n.patchEventPrototype(t,n)})(t,i),function pt(t,n){if(Zone[n.symbol("patchEventTarget")])return;const{eventNames:i,zoneSymbolEventNames:o,TRUE_STR:c,FALSE_STR:a,ZONE_SYMBOL_PREFIX:p}=n.getGlobalObjects();for(let P=0;P{ge("MutationObserver"),ge("WebKitMutationObserver")}),Zone.__load_patch("IntersectionObserver",(t,n,i)=>{ge("IntersectionObserver")}),Zone.__load_patch("FileReader",(t,n,i)=>{ge("FileReader")}),Zone.__load_patch("on_property",(t,n,i)=>{!function Tt(t,n){if(Pe&&!Be||Zone[t.symbol("patchEvents")])return;const i=n.__Zone_ignore_on_properties;let o=[];if(Ae){const c=window;o=o.concat(["Document","SVGElement","Element","HTMLElement","HTMLBodyElement","HTMLMediaElement","HTMLFrameSetElement","HTMLFrameElement","HTMLIFrameElement","HTMLMarqueeElement","Worker"]);const a=function ut(){try{const t=_e.navigator.userAgent;if(-1!==t.indexOf("MSIE ")||-1!==t.indexOf("Trident/"))return!0}catch{}return!1}()?[{target:c,ignoreProperties:["error"]}]:[];et(c,He(c),i&&i.concat(a),ve(c))}o=o.concat(["XMLHttpRequest","XMLHttpRequestEventTarget","IDBIndex","IDBRequest","IDBOpenDBRequest","IDBDatabase","IDBTransaction","IDBCursor","WebSocket"]);for(let c=0;c{!function yt(t,n){const{isBrowser:i,isMix:o}=n.getGlobalObjects();(i||o)&&t.customElements&&"customElements"in t&&n.patchCallbacks(n,t.customElements,"customElements","define",["connectedCallback","disconnectedCallback","adoptedCallback","attributeChangedCallback"])}(t,i)}),Zone.__load_patch("XHR",(t,n)=>{!function P(v){const m=v.XMLHttpRequest;if(!m)return;const M=m.prototype;let N=M[Oe],B=M[Ne];if(!N){const h=v.XMLHttpRequestEventTarget;if(h){const I=h.prototype;N=I[Oe],B=I[Ne]}}const H="readystatechange",K="scheduled";function q(h){const I=h.data,w=I.target;w[a]=!1,w[d]=!1;const Q=w[c];N||(N=w[Oe],B=w[Ne]),Q&&B.call(w,H,Q);const oe=w[c]=()=>{if(w.readyState===w.DONE)if(!I.aborted&&w[a]&&h.state===K){const U=w[n.__symbol__("loadfalse")];if(0!==w.status&&U&&U.length>0){const re=h.invoke;h.invoke=function(){const ee=w[n.__symbol__("loadfalse")];for(let W=0;Wfunction(h,I){return h[o]=0==I[2],h[p]=I[1],J.apply(h,I)}),X=j("fetchTaskAborting"),A=j("fetchTaskScheduling"),E=ae(M,"send",()=>function(h,I){if(!0===n.current[A]||h[o])return E.apply(h,I);{const w={target:h,url:h[p],isPeriodic:!1,args:I,aborted:!1},Q=Le("XMLHttpRequest.send",R,w,q,_);h&&!0===h[d]&&!w.aborted&&Q.state===K&&Q.invoke()}}),G=ae(M,"abort",()=>function(h,I){const w=function O(h){return h[i]}(h);if(w&&"string"==typeof w.type){if(null==w.cancelFn||w.data&&w.data.aborted)return;w.zone.cancelTask(w)}else if(!0===n.current[X])return G.apply(h,I)})}(t);const i=j("xhrTask"),o=j("xhrSync"),c=j("xhrListener"),a=j("xhrScheduled"),p=j("xhrURL"),d=j("xhrErrorBeforeScheduled")}),Zone.__load_patch("geolocation",t=>{t.navigator&&t.navigator.geolocation&&function at(t,n){const i=t.constructor.name;for(let o=0;o{const P=function(){return d.apply(this,Me(arguments,i+"."+c))};return le(P,d),P})(a)}}}(t.navigator.geolocation,["getCurrentPosition","watchPosition"])}),Zone.__load_patch("PromiseRejectionEvent",(t,n)=>{function i(o){return function(c){Ke(t,o).forEach(p=>{const d=t.PromiseRejectionEvent;if(d){const P=new d(o,{promise:c.promise,reason:c.rejection});p.invoke(P)}})}}t.PromiseRejectionEvent&&(n[j("unhandledPromiseRejectionHandler")]=i("unhandledrejection"),n[j("rejectionHandledHandler")]=i("rejectionhandled"))})}},ue=>{ue(ue.s=583)}]); \ No newline at end of file diff --git a/server/src/uds/static/admin/styles.css b/server/src/uds/static/admin/styles.css index c6ac76c0e..776559339 100644 --- a/server/src/uds/static/admin/styles.css +++ b/server/src/uds/static/admin/styles.css @@ -1 +1 @@ -.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.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,.2,1);transform:scale3d(0,0,0)}.cdk-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;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.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 .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.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}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #3f51b5)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff4081)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #f44336)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox{color:#0000008a}.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:#3f51b5}.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox-indeterminate,.mat-accent .mat-pseudo-checkbox-checked,.mat-accent .mat-pseudo-checkbox-indeterminate{background:#ff4081}.mat-warn .mat-pseudo-checkbox-checked,.mat-warn .mat-pseudo-checkbox-indeterminate{background:#f44336}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#3f51b5de}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff4081de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#f44336de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#3f51b5de}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff4081de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#f44336de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #3f51b5}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff4081}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #f44336}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0px;right:0px;left:0px;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-item-interactive:before{background:black}.mat-mdc-list-item-interactive:not(:focus):not(.mdc-list-item--disabled):hover:before{opacity:.04}.mat-mdc-list-item-interactive:focus:before{opacity:.12}.mat-mdc-list-item-interactive.mdc-list-item--selected:before{background:#3f51b5;opacity:.08}.mat-mdc-list-item-interactive.mdc-list-item--selected:not(:focus):not(.mdc-list-item--disabled):hover:before{opacity:.12}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #3f51b5)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #3f51b5}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff4081}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #f44336}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-item.mdc-list-item--with-one-line{height:48px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-radio.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-switch.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-image.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-video.mdc-list-item--with-one-line{height:72px}.mat-mdc-list-item.mdc-list-item--with-two-lines{height:64px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-thumbnail.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-radio.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-switch.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-image.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-video.mdc-list-item--with-two-lines{height:72px}.mat-mdc-list-item.mdc-list-item--with-three-lines{height:88px}.mat-mdc-list-option-with-trailing-avatar.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-option-with-trailing-avatar.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#3f51b5}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #3f51b5)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#3f51b5}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff4081}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff4081)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff4081}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#f44336}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #f44336)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #3f51b5;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff4081;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #f44336;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#3f51b51a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#3f51b5}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff40811a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff4081}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#f443361a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#f44336}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff4081;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#3f51b50a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.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-badge-content{color:#fff;background:#3f51b5}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff4081;color:#fff}.mat-badge-warn .mat-badge-content{color:#fff;background:#f44336}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.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 #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.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 #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.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 #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(63,81,181,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#3f51b5;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#3f51b566}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,64,129,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff4081;color:#fff}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff408166}.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-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(244,67,54,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#f44336;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#f4433666}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#3f51b5}.mat-datepicker-toggle-active.mat-accent{color:#ff4081}.mat-datepicker-toggle-active.mat-warn{color:#f44336}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.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,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.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-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#3f51b5}.mat-icon.mat-accent{color:#ff4081}.mat-icon.mat-warn{color:#f44336}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(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,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;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:#3f51b5;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#fff}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff4081;color:#fff}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#f44336;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#f44336}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#f44336}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#3f51b5;color:#fff}.mat-toolbar.mat-accent{background:#ff4081;color:#fff}.mat-toolbar.mat-warn{background:#f44336;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-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}html,body{margin:0;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;height:100%}body{background-color:#ededed}.app-loading .logo{width:113px;height:120px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHEAAAB4CAYAAADFcR0YAAAYNElEQVR4nO2deXwT1drHT2nSlFK6JHNOAPX6XlQuive6wEWRrS2iLOJFSpq0ySC2CoKg4AI06ZKyoywCBUVR3NFeRUrbOQMIFSjpnGHTq6C4XVH09RUXWhFBpc/7R7pMli5Jk061/X0+zz/9TGfOPN+c55zznGdmEOpUpzrVqU51CqGiIhRZui8+saQi8S+llYYrS1yGgSLDQ4VKPHo7M4zf/S5J3XeM8NJxwrOPyNQyFzd149bEqUs3xk+d+1js1HtzYqfaHoyZapoRMyXFouXrLCktypZs0o0datIOHJIa3XuQCenVvtc/rIS9sbhU4pIp46aKEllOGdkiMnyQyuQUlfEFUcY1/mz7AVyzrYKrKdycWDPn0TjgZ3eDUZO6QoolukWWbNbV+LMUs+5csln3YbJFV5ycFr0o2Rw1YfDtqJfaflJVb5YnJJQxboAg4YmUkUcowxtFhvdQhk+KMoGW2s5DBLbtx7DmlUR4cHEcTJgaA0NTo2FIqg6GmaIhKa1l8II2s+58iiXalWLWrUoyR1mGpequUNu3YZUg6a+iMl5MGT4uyvg0ZeSsu1e1HJo3wNUvJcK4zK4wIj0aks0tcbzOj4UKqu5CikV3Jtmiez8lLSpdbX+HRMUVXHehkgymjKykDP8QLCx/RhmBh5fGwU3jPSGMsGhhhEUDw9MxDM7oAzdmXAM3ZAyEgdabYIB1GPS3jYb+tjENZr0VBliHwkDrILghYwAMsl0HQyZdA0P5K2C4tRekpHeHEeYIGGHuAiPMGkixRLU8NFuiv042ayf1N6F4tVkEowhBIvNFmZxoTU9ryhY9meDV86JgpAVBf9touHTyejBmFgOXuQv0WRWQmMUgIesgxGcdasQOQ0KmDPj+D6FnzjdwUe7XcHHOZ3CJ/Rhcmn0ILpuzC/o9sAYGTLkLhvF9YWQagpvTUC3UFvXQT4enRSerDaWlihAqyWAqk1PhAKfshen3d1OExxgYaB0KOHMnxGW9AwlZMiRksZbbPQcAP3ISejh/gh751X7sJzA6z4LReR5IQQ30zD8DfR56E/pPvRuG8n0hKYPUtqOZXpoWlYMQ6qI2pCYlMrw0nPCUECdMjakNWbFw+Z0LIT7rUODwMiUwTH8PjDnfNwGwaag986vg0uzD0Hf2JrgxayyMTEOQYtE2MRGK2qQ2p0YlyNw9bQGwzu6xx0KKRQfX2syQkHUgMHhZDBKyJNDPOAo9nWcCgNe0GZ2/wKX2YzB48g2QYolpahmzUW1ePhL3cj3bEqAoE1j7ih5GmCOh112vBd4DsyTgZn0cYO9rIcj8M2B0/gZ9Zz8PSdaLGpn96i4MN+tGq83NQwLDM9oa4luHjXBfng4Md9LAIGZKYJj5YVgAetsljk8gOT3RP0hz9Pdqc/PQYy/Grd9+oG0hijKB3Uc4mLAkB+IzWx5O9TOOhTSENh1ez8JfHB+7lyp+lyBRuWqzq5dlruYNQcJtDlGUCZS4/gL9HtwK8S0AmHjPQTDm/tgmAJV25aynGxsjv+k/DsWozQ8hhFD6vMgt2YUxsONg20PcfoCD1/f0hYum7YH4zCbCaqYEZM5XbRJGfcx5FobZevuGVbPuXLJJM1xtfgghhGx27dO8QwtPFyeq0ht3HOBgfekwME6paHQiY7jvKPRoozDqG1bPQ79Z6+HmNOQbUtN096vNDyGEkC1bO413aOHugijYVoFhuwogdx40wMynZ0BcI+Oj0X5KFYBu+wl65lX5h2iOelZtfgghhPiHEeEdWrBma+G+pdGg1vi461AiZK6bC13vfMdzLJx6RJWx0LM3noNhtst9QmqyJfpttfnVy2bX/Jt3aIF3aCFnfTegrO0hijIBQeoJKQVPes5Ip/8HeuRXqQzxLNx013A/EHXvq82uXqbZSM87ND/yDi3Y7FpY/Woc7DpsVAEkhjf2XgF/myVA97sO1kJ8T1WAdRAHZY70ya8mm3WfqM3OQza79gGbXVNTF1o3FieCGuvH7QcwvFnRG3rdu88Ncdq70COvnfbE9gYRIYRsdk1lXVjNckbB629zqoRVUcaw4s1bQX+3BIlTDreDMfEXGMpf5Q/iEbWZ+WjcFBRjs2t+qAur0xfrYMdBNcIqgR0HDTB/sxmibEfB6PhOZYjnYYSfBX+yWbddbWZ+ZcuOHK8Mq3NXx6jUGwnsOpQAU5+YDYbZn6mz0M+vhh75P8ElOSdhpMl3iZFi1j2tNq9GZbNrN9eFVd6hhZUvx8EOFcZHUSYgMiOMXbwGuNxzqo2HfR7e5nedmGLRPaw2qyZlc2g/r4OYPlcDL4h6VSY6okzg7cPdYciynUDyf1YllF49cxmMMHtD1F0Yboq6Q21OTSrDjq7lHZqf60BOztXCq28ZVAutxa7L4IYVB8GY37ZhlRT8Dv+cwsMIcxfvUPrzsFTtdWpzalZWh2aBMqzOXBYNgqRSWJUxbHVdAX+df6pNQZKCGhjKX+tbg2OO/n7IWJSoNqMWiXdoSuogZszTgL2wm2phdccBPby29zrot+STNuyNZyE5PcHfePiR2mxarDuykUE5PvIOLSze1F21sCrKBJ7fPRh6OdsG4iWOjyA5Pd7PprDuKbXZBCRbduR4JcRJOVrYVJaoyh6kKBN462ACvFh+E/Rd/HnYQ+tlc3ZDcnqsn22oqFS1uQQs3q7J9gZZtNugWmjdLmN46e2B0GfhScB54Zu19p39vN+d/UEm1FVtJkHJ5tCUK0FOW6SDbfvV2boSZXdlgMh6wahCCr0KvvvGmFf9dY+8qu+MeVXVxvzq30IB8e8zFvkrzfg/tVkErQn3oUvT50ScqYNos2shuzAGdh1RJzXnNgzbD2B4dU8/Gd0Bhvh5p3sb7T9cTXKrBxlzqm8z5lbl9MivKjPmVVUHDrEKrp86xc94GP2a2iyCUvl/k6K/+OGOq1/def171mxNfW9Mn6eBZc/HqjY+Ko0yvNdZjjSN3YNx3unebqjVHxjzqqqNedW/Nw3xNNyYOcpfznR6W/q+1Tp69Fb90f+OyX7/xJgDR0+MhQ9PjoO1r10BNrvn+PhsiTo1On5AFrXkvvRzvr+Y5Pw43phftapHXtUX/iD2zPsBhvJ9vQHWDDdpBoXb7yER+2CE4f0TY54/emIseNu7n42GGUvjQDk+Ts7TQqlLvfHRC2RZoPfbI++0yTvk9sz73mf3ItkSfWqYKfqv4fB5SASwsuvRE2NNR0+M2eoPXp0dPzkKKt5LBqs9AXiHpn58nL5Y125AigyvDdgBMz/WGfOqN7ohnoFLs//jk/hONus+bNcz04INvU6989no3499cVsjAMfA8ZMjoexQDtyz6RSkLS+rh1hn+Ru6qQ+w1gTGLQvGD8bcqhyj8xxcNesZ390Ls25bqP0eUqVndzk/OU8HL5T9A+QPR8IHX7phHv/yFjjyqQm2sIVw/4ufwJhVABMKAVILATIW2IB3II+Jzvo3EmDnITVnrATcL3MgIEr4gYAdkVSuwQU1B/tPvdsn8Z2Uprs3DK4PnWwO7WfuzWANTFscC8+WXA3HvxwNT+1+DrKe+RYmFgJMWOuG12A1YMvtA7yji0ePfLZUnRodfzDLJP3IQH2RsBDuHzrpWvB+XjHJhHqEw/chk7J0kXdoIWMugrSVDP61xhucp01cfRL4nHgPiPcu1MHWfWrV6PhaCSPXBOKLRCdcnWL2rqmJ/jZcvg+ZrHbtTCUI3o7AtPJAkwDrzLxsHfD2hrBqzdbCQyu7wluqh9X6HvlVsdTN2FJfDDZxf/OzPlwRTv+HROY56EpviOblpS2COGE9gHX+bcA7IjxAFjyl3taVjzF8sKW+GJ6mG+cNMcmkvTac/g+ZvCFali6H1HXNQ0wtBEhd+yvY8q/xmLFOytHCMyXtZXwkQGW8uSV+SDZ3fcQL4ld/mNeM2ewaqQFkBGQssLQcYiFA2koX8I4Yj/GRd2hhm0udh3X8hNWaMsZlNOeHQSbUNcmseyDZrNuQbIl+LdkSZW8L/4dEvENToHS+La9vQBAnrAOwLF0JkxTjo82uhfuWRENpZftIBFBGzpa4DBep7euwyTpPcwtv1/xaDyC3J0xcc6rFEOssY+HdPsuOhc/Etqew2v5K8EOl9IcQx9s139U7P6c7mFZKAUOcuOZbsOX19hgfLXM18PTWBNipUlW5H5Dt4yHRcIi3a7Y29KBIsCwrDBhiaiGA6fF3YVI28uiNk3O18PIOveoARZmAyMg3RUUoUm1/h0XumtM6x2vA6kwOCmLqOgDLo0/7hNUHHms/46MgkfZdxd0a8Q7tYeVSY+Lqr4IDWfg7WAtGA++IbMgEZWsh94luKj0D6R1Sybk/bW+0ZUferoQY6FLDY3xcex54R5zH+GjN1sKaovh2MdGhksGmtr/DIvfTw9ovGsJgFJge/zTI3ghgWnUIeEc3j7Cama/mM5DK3tiyBMAfUla7ZrHS6emL50BqYU3QINOXOD16o82uhWmLo9XPrzJ8pKgcx6rt73ApgrdrqhuWG3qYuOa7oCGmrgOwFiR5JMozsjXg3BCrajaHyuTbkvLunNrODpt4R+S4ht6IwFowBiasDxJiIUDq2jO160evivJS9QqtqEzOi3u5nmr7OmxKmoyibXaN7LmzsTV4iIUAaSu2A+/QeY6PzigodWFVJjpUxhf+1Gk4hBCyzdOM8synXgmpa8+2CmT6kgLP/Ue7FmY91lWl3ohPb9kfS9T2c9jFO7RFyt6YvujhoJccqYXuRLm14FaP9SPv0MLjm+PVgPiBIOnj1PZx2DVuCoqpq8Gp32t89LlWgZy4+iTwudgnLff621zbhlVG3kQIRajt4zaRzRGZarNrfm/Y4SBgevzjVoVV83LRI6za7FqYskDXprNVKnEWtX3bprLZtRuUm8bW/AGQWvhbq8KqZcl8j7IOm10LS55rowdZGflMbZ+qIptDs78BZBewOoe1qjemrv0FrM6bfKoB3tgT/mxOiYT/3N+HakzmR9BldW+eqtuucmdzggdpevxTj/yqO5ujCy9EiSxX25eqyurQ3ujZcyIgfXF2qxIBaSv3+YyPC5/pHp5JDsPHnM52/sWZtpA1O/JOT5Ao6A1kt9VA+qJ7PfKrmflRULQ7tO/PoTL+UG3ftStZHZplniB1YFm2LugeOXHtGeBzDB5h9cEVXWF3qJ5GZuQzYW8sVttv7U42h/Y5n3rVZauDHx9XujzCavo8DRS+ntDq98t19sBmZLNrX/SeXaYvcQadDMhYYPYIq1MW6KC4IviSDsrw9j/zdlPIpHz7VEPx8SQIZg8ybcUu4HNiPCY5a1+LDy4JwMjLavvmDyXeoX3K7XT3O1N5B4KM+akwcc2PAYO05f3VZ5ITRC8sqG1ax0irhUo2u+ZRzx6pAVvuxYGl6NYBpC9d4LmBPE8DK16Oh50tfVNHpeFmtX3xR1UEQghZHdpZyjyru0fFQtry11scXtNW/cfjcQDeoYV7CqKaneBQhk+WyXiY2o74Uyh9rmaId4/kHVFgnT8OJhb+3vxyY3W1b/FxXhT8u7zxdByVccWfutRCDVkeRJfwDu0x7wkP74gF8/ISSF17vokMToVHOOUdWrgzVwsvbW+kgpyRNzuzMGHS+Fkogc/WrPLtlZFgdQ4C8/Ji91JkneeYaHUOAu/q8TtztfCi6A0R11AZT1b7PjuEbPbIScpXUiuTA7a8PmB+dBNMXP2/YFp1HKwFN4P361XqwulruwzK8a+6jHED1L63DqWMeai399v+67a0eDtyT2TsyGN/UWlZzijl+PfGFtbdoPY9dVhl2DXJNoemyh+oxsy9xIiDnQeNIMhkmtr30CmEkMmEoqzZmjyP2p1GzGbXwsOrusKOg4SVuAwD1W57p7xkmo5i3dta7i/H+QM4c1k0FL2lf1AQkE7t9naqGfHzNCm8PfIJm0Ozh7drXNZszVsPLNOteu8LcpnabetUEOo/BWnVbkOnOtWpTnWqU53q1B9eRUUoqsRl6EsruaQyxt1GJTyGMv0gQdJfHP6Ll+NYyshLVCY7RYZ3UwkvCPU1yhjXR2S4hMpkJ2V4nyDpb2zm+AFUxm9TmexsqYky2UFlUiwy/DyVuccEhmcKzDC+hJFrwrFWpFLiPwSGZ4oyFijDPzRfs0M+pwwXiYy7t8yV+PeQNubN8oQEysjnigRxaUgvgGqhMHK2/hqV3O1NHi/jUaEoN6QM/y7K5IzIyHeijF8trTRc2dp7ESR9nMjwbiqTn5u4brXI8E9NAD0ryoRtY/GheUt/LcT/Nuyx4ZKQnFghd89quGmhkhvX1PGUkVu9Nm43izKXK0hcnre5/07mizJeRSW8iTIsUhnLIsMfU4arfPcQMRUrueuDuQ9ayd3u2S7ys8jwHkHmHhIrues3bPBdpxa54vRCJTdOYOQJUcYf+LaHuzuYtnio/UPENaJk+Fcg1ysqQpFFrjh9sQtfXibjUVQmxV77ib9SGa8L5JyU6QfVv+zd7ac9xS58eUDtKsexAjOkUBl/7dVz1wRyHh/9ESDSSjKhtW3Yukd/CZVxhVdY2+Wv9/htk0zOKSoCpNa8VUqQ9HFUxp8oIs2FYF4eX6+OArFWEZRxs71CdbM9soxxGZ7/YxjR2oYUueL07rG6/gf1ftAn62AQ3eeXcLYHFAkPafJ4mWxQHh+qdggMz1Cet0zGwX1+oSNCLClBMSLDHysceKKZ9rwSDoh0v+GfVMZfU5mcooycFSRyS1An6ogQEUJIlPB9inv+ranCYZHhpUqIIdxkjigqQlF1FnTlXUeF6HSiLl6THGdjx5Ywco3XMuWdMsb1CXWbglZHhYgQQlTGhxUzziZrUKlEpvtZ0D9DKxP+JxxtC0gdGaJ7AV5/30eaWzYIDM8VZfyj94KdMlwtyligMs4RJHKLKOv7lbgMF5WUoJhwtNtHHRkilfE85eSmJWu/EglfQSW8wA2ukZQfI7+IMv5KlMl7lJG3RIaXUma4I2xPHHdwiPc3rP3Iqaa+L+xPoqzvRyW8QJQJExn5P1HGpz2SAn4NnxYZt15w4etC9mqxjgxRkMjDiut8FShEpTZsQNrSffG9BRc3nEoGm8DwIspwqSjjLxoDWruzsbHVifCODJEyslKZMQnXC9qdTtSFVnJJAiNPUIarqIwveM12fyuTSGrQF+jgEHcpJidiWz0hVeIyDKQyXuceOz1SgMF9PMUbYjj2E0td5CZlg9sLRK/QthK17SPeEVRK/IfHBInhnwRJf1XAZ/JJQTF8LNStFSRyS+0Gbd01hjZ1fJtkbBg3VtEDLggSnui3LTLeTGV8mDJ8gDLu0VD3VoEZxnv8mCQyPagTUYYPKH8NRUUoKqQNlck0ZUObG3vaAGIEZaRSuSR4YTvq5u9AUSZM4Zs94Rg3RZmcafhBcY8FdRLKuHyF034VmCEllI2srYGpX1Q3357wQhSYYbwyMlBGHmnsWFEiTymXB0Uu1DWUbUEIIY9SD4YXBnWSF7ajbl4DbMg+3kElPER5bkHmrM3+TxghiowbqxyfqYzLA2k/lfCSULUFIYQESX+j8l5FifDBn0zmHvIc6LGptQ0sk3EP5a+MMny8yBXX7CdawwGxpATFuKvTPO7xy6179Jc09X9F5ThWZPhIqH2DEELC3lisXEdShn9oVYmjsxxpRBkLofrVlUn6kcoJE5XJuZYWKPlAZIY7gm2HKOv7UcblU0be9QKxt6WLbHe1niL8yuS8yPDS4gque7DtKpNIqsjwR54JAJwW7Pk8RBkWvTILZ6iM768dCyKQ/2l4/d/LKg03UEZcnuGZfBtItt8bosDIpNJ98YlFrjh9Y1Ym4x5lrsS/uyvL8FzKyNbGygYpI85AZ5ml++J7eye/qUzOU0aepBXc37z84O2jCIRQhLMcaYRKbPaG566xwXcF0p5mJUg40/uXWxcOKcMiZdwLlJEnqUw2UIY3Uka2iDJhPrWYDP8kMPJEIN+rR8i3ZLG15u5FeL8gcXmt+bLMlv2xhMq4UFkb4/VjP0wZLqOMvKT0j8hwicjwMb9tk/HbZTIeFWybmtSmchQtVJLByqxGAE47KUjcrKKdifEoiAU0lfCY1oHDp0UZ76eMrBAkckvRzsT4EFaBRxRXcN0p49JFRqQg2/ejIOPHi1348pZW24VElOkHiYy7270NQ54UGX6eMvKKKJGnRIksF2TuoTLG3RaKL7ds2IC0W1h3Q1Ph09sESR+n0scpI8RK7vrapLeDSni1KJGnqIw310UskeGlAsMzKSO3dr69qgPr/wEIWo9ONIJi0AAAAABJRU5ErkJggg==)}i.material-icons{vertical-align:middle!important}i.spaced{margin-right:.5rem}.highlight{color:red}.mat-toolbar.mat-primary{background:#fafafa;color:#000}.mat-toolbar-row,.mat-toolbar-single-row{height:4rem!important}.mat-mdc-row{min-height:2.5rem}.mat-mdc-menu-panel.wide-menu{max-width:none;max-height:none}.mat-form-field-disabled{cursor:not-allowed}input:disabled{cursor:not-allowed}.toggle{display:flex;height:32px}.detail .mdc-tab-indicator--active{background-color:#ffffff1f}.card{background-color:#fafafa;border-color:#000;border-radius:6px;box-shadow:#00000024 0 1px 4px;box-sizing:border-box;color:#000;display:flex;flex-direction:column;margin:2rem 1rem 1rem}.card-header{background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;border-radius:3px;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;box-sizing:border-box;color:#fff;font-size:1.2rem;font-weight:300;margin:-1rem 1rem 0rem;padding:15px}.card-header img{width:1.2rem;vertical-align:top;margin-top:2px}.card-title>a{color:#000}.card-subtitle{font-size:.9rem;margin-left:1.4rem}.detail>.title{margin:1rem;padding:1rem;background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;border-radius:3px;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;box-sizing:border-box;color:#fff;font-size:1.2rem;font-weight:300}.detail>.title img{width:2rem;vertical-align:top;margin-top:-4px}.detail>.title a{color:#ff0}.detail>.card{margin-top:0}.mat-mdc-menu-content .mat-mdc-menu-item:hover{background-color:#d4d4d4}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:#d4d4d4}.mat-mdc-dialog-container{--mdc-dialog-supporting-text-font: $font-family;--mdc-dialog-subhead-font: $font-family;--mdc-dialog-title-font: $font-family;--mdc-dialog-button-font: $font-family;--mdc-dialog-supporting-text-size: 1rem;--mdc-dialog-subhead-size: 1.25rem;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-color: rgba(0, 0, 0, 1)}.dark-theme .mat-ripple-element{background-color:#ffffff1a}.dark-theme .mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-option:hover:not(.mdc-list-item--disabled),.dark-theme .mat-mdc-option:focus:not(.mdc-list-item--disabled),.dark-theme .mat-mdc-option.mat-mdc-option-active,.dark-theme .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(255,255,255,.08)}.dark-theme .mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-pseudo-checkbox{color:#ffffffb3}.dark-theme .mat-pseudo-checkbox:after{color:#303030}.dark-theme .mat-pseudo-checkbox-disabled{color:#686868}.dark-theme .mat-primary .mat-pseudo-checkbox-checked,.dark-theme .mat-primary .mat-pseudo-checkbox-indeterminate{background:#3f51b5}.dark-theme .mat-pseudo-checkbox-checked,.dark-theme .mat-pseudo-checkbox-indeterminate,.dark-theme .mat-accent .mat-pseudo-checkbox-checked,.dark-theme .mat-accent .mat-pseudo-checkbox-indeterminate{background:#ff4081}.dark-theme .mat-warn .mat-pseudo-checkbox-checked,.dark-theme .mat-warn .mat-pseudo-checkbox-indeterminate{background:#f44336}.dark-theme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-disabled,.dark-theme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-disabled{background:#686868}.dark-theme .mat-app-background,.dark-theme.mat-app-background{background-color:#303030;color:#fff}.dark-theme .mat-elevation-z0,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.dark-theme .mat-elevation-z1,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.dark-theme .mat-elevation-z2,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.dark-theme .mat-elevation-z3,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.dark-theme .mat-elevation-z4,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.dark-theme .mat-elevation-z5,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.dark-theme .mat-elevation-z6,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.dark-theme .mat-elevation-z7,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.dark-theme .mat-elevation-z8,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dark-theme .mat-elevation-z9,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.dark-theme .mat-elevation-z10,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.dark-theme .mat-elevation-z11,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.dark-theme .mat-elevation-z12,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.dark-theme .mat-elevation-z13,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.dark-theme .mat-elevation-z14,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.dark-theme .mat-elevation-z15,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.dark-theme .mat-elevation-z16,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.dark-theme .mat-elevation-z17,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.dark-theme .mat-elevation-z18,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.dark-theme .mat-elevation-z19,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.dark-theme .mat-elevation-z20,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.dark-theme .mat-elevation-z21,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.dark-theme .mat-elevation-z22,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.dark-theme .mat-elevation-z23,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.dark-theme .mat-elevation-z24,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.dark-theme .mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #424242}.dark-theme .mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #595959}.dark-theme .mat-mdc-card-subtitle{color:#ffffffb3}.dark-theme .mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5}.dark-theme .mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E")}.dark-theme .mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540}.dark-theme .mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081}.dark-theme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E")}.dark-theme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140}.dark-theme .mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336}.dark-theme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E")}.dark-theme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640}.dark-theme .mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#fff9}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#ffffffde}@media all{.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#fff9}}@media all{.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#fff9}}.dark-theme .mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.dark-theme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.dark-theme .mdc-text-field--filled .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(255, 255, 255, .87))}.dark-theme .mdc-text-field--filled:hover .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .08)}.dark-theme .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .24)}.dark-theme .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#4a4a4a}.dark-theme .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#ffffff6b}.dark-theme .mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#ffffffde}.dark-theme .mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ffffff61}.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ffffffde}.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-text-field--outlined .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.dark-theme .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#3f51b5de}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--disabled .mdc-text-field__input{color:#ffffff61}@media all{.dark-theme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#ffffff61}}@media all{.dark-theme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#ffffff61}}.dark-theme .mdc-text-field--disabled .mdc-floating-label{color:#ffffff61}.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.dark-theme .mdc-text-field--disabled .mdc-text-field-character-counter,.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--leading,.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--prefix,.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.dark-theme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#ffffff0f}.dark-theme .mdc-text-field--disabled .mdc-notched-outline__leading,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__notch,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#ffffff0f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field-character-counter,.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-notched-outline__leading,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__notch,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.dark-theme .mdc-text-field--disabled.mdc-text-field--filled{background-color:#464646}.dark-theme .mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field-focus-overlay{background-color:#ffffffde}.dark-theme .mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.08}.dark-theme .mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.24}.dark-theme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:#000000de}.dark-theme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:#00000061}.dark-theme .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#ffffff8a}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#ffffff61}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff4081de}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#f44336de}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}.dark-theme [dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.dark-theme .mat-mdc-select-value{color:#ffffffde}.dark-theme .mat-mdc-select-placeholder{color:#fff9}.dark-theme .mat-mdc-select-disabled .mat-mdc-select-value{color:#ffffff61}.dark-theme .mat-mdc-select-arrow{color:#ffffff8a}.dark-theme .mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#3f51b5de}.dark-theme .mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff4081de}.dark-theme .mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.dark-theme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#f44336de}.dark-theme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#ffffff61}.dark-theme .mat-mdc-dialog-container{--mdc-dialog-container-color: #424242;--mdc-dialog-with-divider-divider-color: rgba(255, 255, 255, .12);--mdc-dialog-subhead-color: rgba(255, 255, 255, .87);--mdc-dialog-supporting-text-color: rgba(255, 255, 255, .6)}.dark-theme .mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #595959;--mdc-chip-elevated-disabled-container-color: #595959;--mdc-chip-label-text-color: #fafafa;--mdc-chip-disabled-label-text-color: #fafafa;--mdc-chip-with-icon-icon-color: #fafafa;--mdc-chip-with-icon-disabled-icon-color: #fafafa;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #fafafa;--mdc-chip-with-trailing-icon-trailing-icon-color: #fafafa;--mdc-chip-with-icon-selected-icon-color: #fafafa}.dark-theme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.dark-theme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.dark-theme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.dark-theme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.dark-theme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.dark-theme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.dark-theme .mat-mdc-chip-focus-overlay{background:white}.dark-theme .mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #000;--mdc-switch-disabled-unselected-handle-color: #000;--mdc-switch-disabled-selected-track-color: #f5f5f5;--mdc-switch-disabled-unselected-track-color: #f5f5f5;--mdc-switch-unselected-focus-state-layer-color: #f5f5f5;--mdc-switch-unselected-pressed-state-layer-color: #f5f5f5;--mdc-switch-unselected-hover-state-layer-color: #f5f5f5;--mdc-switch-unselected-focus-track-color: #616161;--mdc-switch-unselected-hover-track-color: #616161;--mdc-switch-unselected-pressed-track-color: #616161;--mdc-switch-unselected-track-color: #616161;--mdc-switch-unselected-focus-handle-color: #fafafa;--mdc-switch-unselected-hover-handle-color: #fafafa;--mdc-switch-unselected-pressed-handle-color: #fafafa;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #9e9e9e;--mdc-switch-selected-icon-color: #212121;--mdc-switch-disabled-selected-icon-color: #212121;--mdc-switch-disabled-unselected-icon-color: #212121;--mdc-switch-unselected-icon-color: #212121}.dark-theme .mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #7986cb;--mdc-switch-selected-handle-color: #7986cb;--mdc-switch-selected-hover-state-layer-color: #7986cb;--mdc-switch-selected-pressed-state-layer-color: #7986cb;--mdc-switch-selected-focus-handle-color: #9fa8da;--mdc-switch-selected-hover-handle-color: #9fa8da;--mdc-switch-selected-pressed-handle-color: #9fa8da;--mdc-switch-selected-focus-track-color: #3949ab;--mdc-switch-selected-hover-track-color: #3949ab;--mdc-switch-selected-pressed-track-color: #3949ab;--mdc-switch-selected-track-color: #3949ab}.dark-theme .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #f06292;--mdc-switch-selected-handle-color: #f06292;--mdc-switch-selected-hover-state-layer-color: #f06292;--mdc-switch-selected-pressed-state-layer-color: #f06292;--mdc-switch-selected-focus-handle-color: #f48fb1;--mdc-switch-selected-hover-handle-color: #f48fb1;--mdc-switch-selected-pressed-handle-color: #f48fb1;--mdc-switch-selected-focus-track-color: #d81b60;--mdc-switch-selected-hover-track-color: #d81b60;--mdc-switch-selected-pressed-track-color: #d81b60;--mdc-switch-selected-track-color: #d81b60}.dark-theme .mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e57373;--mdc-switch-selected-handle-color: #e57373;--mdc-switch-selected-hover-state-layer-color: #e57373;--mdc-switch-selected-pressed-state-layer-color: #e57373;--mdc-switch-selected-focus-handle-color: #ef9a9a;--mdc-switch-selected-hover-handle-color: #ef9a9a;--mdc-switch-selected-pressed-handle-color: #ef9a9a;--mdc-switch-selected-focus-track-color: #e53935;--mdc-switch-selected-hover-track-color: #e53935;--mdc-switch-selected-pressed-track-color: #e53935;--mdc-switch-selected-track-color: #e53935}.dark-theme .mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #3f51b5}.dark-theme .mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #ff4081}.dark-theme .mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #f44336}.dark-theme .mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-slider{--mdc-slider-label-container-color: white;--mdc-slider-label-label-text-color: black;--mdc-slider-disabled-handle-color: #fff;--mdc-slider-disabled-active-track-color: #fff;--mdc-slider-disabled-inactive-track-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #fff;--mat-mdc-slider-value-indicator-opacity: .9}.dark-theme .mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.dark-theme .mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.dark-theme .mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}.dark-theme .mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #424242);color:var(--mdc-theme-on-surface, #fff)}.dark-theme .mat-mdc-menu-item[disabled],.dark-theme .mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.dark-theme .mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(255, 255, 255, .5))}.dark-theme .mat-mdc-menu-item .mat-icon-no-color,.dark-theme .mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-menu-item:hover:not([disabled]),.dark-theme .mat-mdc-menu-item.cdk-program-focused:not([disabled]),.dark-theme .mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.dark-theme .mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(255,255,255,.08)}.dark-theme .mat-mdc-list-item-interactive:before{background:white}.dark-theme .mat-mdc-list-item-interactive:not(:focus):not(.mdc-list-item--disabled):hover:before{opacity:.08}.dark-theme .mat-mdc-list-item-interactive:focus:before{opacity:.24}.dark-theme .mat-mdc-list-item-interactive.mdc-list-item--selected:before{background:#3f51b5;opacity:.08}.dark-theme .mat-mdc-list-item-interactive.mdc-list-item--selected:not(:focus):not(.mdc-list-item--disabled):hover:before{opacity:.12}.dark-theme .mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(255, 255, 255, .7))}.dark-theme .mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.dark-theme .mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.dark-theme .mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(255, 255, 255, .5))}.dark-theme .mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.dark-theme .mdc-list-item--disabled .mdc-list-item__start,.dark-theme .mdc-list-item--disabled .mdc-list-item__content,.dark-theme .mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.dark-theme .mdc-list-item--disabled .mdc-list-item__primary-text,.dark-theme .mdc-list-item--disabled .mdc-list-item__secondary-text,.dark-theme .mdc-list-item--disabled .mdc-list-item__overline-text,.dark-theme .mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.dark-theme .mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #fff)}.dark-theme .mdc-list-item--selected .mdc-list-item__primary-text,.dark-theme .mdc-list-item--activated .mdc-list-item__primary-text,.dark-theme .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mdc-list-divider:after{border-bottom-color:#fff}.dark-theme .mdc-list-divider{background-color:#fff3}.dark-theme .mat-mdc-list-option .mdc-list-item__start,.dark-theme .mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-list-option .mdc-list-item__start,.dark-theme .mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #3f51b5}.dark-theme .mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.dark-theme .mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #ff4081}.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #f44336}.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-paginator{background:#424242;color:#ffffffde}.dark-theme .mat-mdc-paginator-icon{fill:#ffffff8a}.dark-theme .mat-mdc-paginator-decrement,.dark-theme .mat-mdc-paginator-increment{border-top:2px solid rgba(255,255,255,.54);border-right:2px solid rgba(255,255,255,.54)}.dark-theme .mat-mdc-paginator-first,.dark-theme .mat-mdc-paginator-last{border-top:2px solid rgba(255,255,255,.54)}.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#ffffff1f}.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#ffffff1f}.dark-theme .mat-mdc-tab,.dark-theme .mat-mdc-tab-link{background-color:transparent}.dark-theme .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab__text-label,.dark-theme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab__text-label{color:#fff9}.dark-theme .mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.dark-theme .mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#ffffff80}.dark-theme .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#3f51b5}.dark-theme .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #3f51b5)}.dark-theme .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-link .mat-ripple-element{background-color:#3f51b5}.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff4081}.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff4081)}.dark-theme .mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff4081}.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#f44336}.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #f44336)}.dark-theme .mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#f44336}.dark-theme .mat-mdc-tab-group.mat-background-primary,.dark-theme .mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #3f51b5;--mat-mdc-tab-header-with-background-foreground-color: #fff}.dark-theme .mat-mdc-tab-group.mat-background-accent,.dark-theme .mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff4081;--mat-mdc-tab-header-with-background-foreground-color: #fff}.dark-theme .mat-mdc-tab-group.mat-background-warn,.dark-theme .mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #f44336;--mat-mdc-tab-header-with-background-foreground-color: #fff}.dark-theme .mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #fff)}.dark-theme .mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-checkbox .mat-ripple-element{background-color:#ffffff1a}.dark-theme .mat-mdc-checkbox .mdc-checkbox__ripple{background:#fff}.dark-theme .mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#3f51b51a}.dark-theme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#3f51b5}.dark-theme .mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff40811a}.dark-theme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff4081}.dark-theme .mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#f443361a}.dark-theme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#f44336}.dark-theme .mat-mdc-checkbox-disabled label{color:#ffffff80}.dark-theme .mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #fff}.dark-theme .mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.dark-theme .mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.dark-theme .mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.dark-theme .mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-text-button-label-text-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #424242;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-filled-button-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-label-text-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #424242;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-elevation: 0}.dark-theme .mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12)}.dark-theme .mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #fff}.dark-theme .mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.dark-theme .mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.dark-theme .mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.dark-theme .mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12);--mdc-outlined-button-disabled-outline-color: rgba(255, 255, 255, .12)}.dark-theme .mat-mdc-button,.dark-theme .mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-button.mat-primary,.dark-theme .mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.dark-theme .mat-mdc-button.mat-accent,.dark-theme .mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.dark-theme .mat-mdc-button.mat-warn,.dark-theme .mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.dark-theme .mat-mdc-raised-button,.dark-theme .mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-raised-button.mat-primary,.dark-theme .mat-mdc-unelevated-button.mat-primary,.dark-theme .mat-mdc-raised-button.mat-accent,.dark-theme .mat-mdc-unelevated-button.mat-accent,.dark-theme .mat-mdc-raised-button.mat-warn,.dark-theme .mat-mdc-unelevated-button.mat-warn,.dark-theme .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.dark-theme .mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.dark-theme .mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.dark-theme .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5}.dark-theme .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081}.dark-theme .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336}.dark-theme .mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(255, 255, 255, .5);--mdc-icon-button-disabled-icon-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-fab,.dark-theme .mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-fab.mat-primary,.dark-theme .mat-mdc-mini-fab.mat-primary,.dark-theme .mat-mdc-fab.mat-accent,.dark-theme .mat-mdc-mini-fab.mat-accent,.dark-theme .mat-mdc-fab.mat-warn,.dark-theme .mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-fab.mat-unthemed,.dark-theme .mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #424242;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab.mat-primary,.dark-theme .mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab.mat-accent,.dark-theme .mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab.mat-warn,.dark-theme .mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab[disabled][disabled],.dark-theme .mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(255, 255, 255, .12);--mdc-fab-icon-color: rgba(255, 255, 255, .5);--mat-mdc-fab-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: rgba(0, 0, 0, .87);--mdc-snackbar-container-color: #d9d9d9;--mdc-snackbar-supporting-text-color: rgba(66, 66, 66, .87)}.dark-theme .mdc-data-table{background-color:var(--mdc-theme-surface, #424242);border-color:#ffffff1f}.dark-theme .mdc-data-table__row{background-color:inherit}.dark-theme .mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #424242)}.dark-theme .mdc-data-table__row--selected{background-color:#3f51b50a}.dark-theme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.dark-theme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.dark-theme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#ffffff1f}.dark-theme .mdc-data-table__cell,.dark-theme .mdc-data-table__header-cell{border-bottom-color:#ffffff1f}.dark-theme .mdc-data-table__pagination{border-top-color:#ffffff1f}.dark-theme .mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#ffffff0a}.dark-theme .mdc-data-table__header-cell,.dark-theme .mdc-data-table__pagination-total,.dark-theme .mdc-data-table__pagination-rows-per-page-label,.dark-theme .mdc-data-table__cell{color:#ffffffde}.dark-theme .mat-mdc-table{background:#424242}.dark-theme .mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.dark-theme .mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.dark-theme .mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.dark-theme .mat-badge-content{color:#fff;background:#3f51b5}.cdk-high-contrast-active .dark-theme .mat-badge-content{outline:solid 1px;border-radius:0}.dark-theme .mat-badge-accent .mat-badge-content{background:#ff4081;color:#fff}.dark-theme .mat-badge-warn .mat-badge-content{color:#fff;background:#f44336}.dark-theme .mat-badge-disabled .mat-badge-content{background:#6e6e6e;color:#ffffff80}.dark-theme .mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:#424242;color:#fff}.dark-theme .mat-button-toggle-standalone:not([class*=mat-elevation-z]),.dark-theme .mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.dark-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.dark-theme .mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.dark-theme .mat-button-toggle{color:#ffffff80}.dark-theme .mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#ffffff1f}.dark-theme .mat-button-toggle-appearance-standard{color:#fff;background:#424242}.dark-theme .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#fff}.dark-theme .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #595959}.dark-theme [dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #595959}.dark-theme .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 #595959}.dark-theme .mat-button-toggle-checked{background-color:#212121;color:#ffffffb3}.dark-theme .mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#fff}.dark-theme .mat-button-toggle-disabled{color:#ffffff4d;background-color:#000}.dark-theme .mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:#424242}.dark-theme .mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#424242}.dark-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.dark-theme .mat-button-toggle-group-appearance-standard{border:solid 1px #595959}.dark-theme .mat-calendar-arrow{fill:#fff}.dark-theme .mat-datepicker-toggle,.dark-theme .mat-datepicker-content .mat-calendar-next-button,.dark-theme .mat-datepicker-content .mat-calendar-previous-button{color:#fff}.dark-theme .mat-calendar-table-header-divider:after{background:rgba(255,255,255,.12)}.dark-theme .mat-calendar-table-header,.dark-theme .mat-calendar-body-label{color:#ffffffb3}.dark-theme .mat-calendar-body-cell-content,.dark-theme .mat-date-range-input-separator{color:#fff;border-color:transparent}.dark-theme .mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#ffffff80}.dark-theme .mat-form-field-disabled .mat-date-range-input-separator{color:#ffffff80}.dark-theme .mat-calendar-body-in-preview{color:#ffffff3d}.dark-theme .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff80}.dark-theme .mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff4d}.dark-theme .mat-calendar-body-in-range:before{background:rgba(63,81,181,.2)}.dark-theme .mat-calendar-body-comparison-identical,.dark-theme .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.dark-theme .mat-calendar-body-comparison-bridge-start:before,.dark-theme [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-calendar-body-comparison-bridge-end:before,.dark-theme [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.dark-theme .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.dark-theme .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.dark-theme .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.dark-theme .mat-calendar-body-selected{background-color:#3f51b5;color:#fff}.dark-theme .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#3f51b566}.dark-theme .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.dark-theme .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.dark-theme .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}@media (hover: hover){.dark-theme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}}.dark-theme .mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#424242;color:#fff}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,64,129,.2)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.dark-theme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.dark-theme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff4081;color:#fff}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff408166}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.dark-theme .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.dark-theme .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}@media (hover: hover){.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(244,67,54,.2)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.dark-theme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.dark-theme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#f44336;color:#fff}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#f4433666}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.dark-theme .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.dark-theme .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}@media (hover: hover){.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}}.dark-theme .mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.dark-theme .mat-datepicker-toggle-active{color:#3f51b5}.dark-theme .mat-datepicker-toggle-active.mat-accent{color:#ff4081}.dark-theme .mat-datepicker-toggle-active.mat-warn{color:#f44336}.dark-theme .mat-date-range-input-inner[disabled]{color:#ffffff80}.dark-theme .mat-divider{border-top-color:#ffffff1f}.dark-theme .mat-divider-vertical{border-right-color:#ffffff1f}.dark-theme .mat-expansion-panel{background:#424242;color:#fff}.dark-theme .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.dark-theme .mat-action-row{border-top-color:#ffffff1f}.dark-theme .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.dark-theme .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.dark-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(255,255,255,.04)}@media (hover: none){.dark-theme .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:#424242}}.dark-theme .mat-expansion-panel-header-title{color:#fff}.dark-theme .mat-expansion-panel-header-description,.dark-theme .mat-expansion-indicator:after{color:#ffffffb3}.dark-theme .mat-expansion-panel-header[aria-disabled=true]{color:#ffffff4d}.dark-theme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.dark-theme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.dark-theme .mat-icon.mat-primary{color:#3f51b5}.dark-theme .mat-icon.mat-accent{color:#ff4081}.dark-theme .mat-icon.mat-warn{color:#f44336}.dark-theme .mat-drawer-container{background-color:#303030;color:#fff}.dark-theme .mat-drawer{background-color:#424242;color:#fff}.dark-theme .mat-drawer.mat-drawer-push{background-color:#424242}.dark-theme .mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.dark-theme .mat-drawer-side{border-right:solid 1px rgba(255,255,255,.12)}.dark-theme .mat-drawer-side.mat-drawer-end,.dark-theme [dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(255,255,255,.12);border-right:none}.dark-theme [dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(255,255,255,.12)}.dark-theme .mat-drawer-backdrop.mat-drawer-shown{background-color:#bdbdbd99}.dark-theme .mat-step-header.cdk-keyboard-focused,.dark-theme .mat-step-header.cdk-program-focused,.dark-theme .mat-step-header:hover:not([aria-disabled]),.dark-theme .mat-step-header:hover[aria-disabled=false]{background-color:#ffffff0a}.dark-theme .mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.dark-theme .mat-step-header:hover{background:none}}.dark-theme .mat-step-header .mat-step-label,.dark-theme .mat-step-header .mat-step-optional{color:#ffffffb3}.dark-theme .mat-step-header .mat-step-icon{background-color:#ffffffb3;color:#fff}.dark-theme .mat-step-header .mat-step-icon-selected,.dark-theme .mat-step-header .mat-step-icon-state-done,.dark-theme .mat-step-header .mat-step-icon-state-edit{background-color:#3f51b5;color:#fff}.dark-theme .mat-step-header.mat-accent .mat-step-icon{color:#fff}.dark-theme .mat-step-header.mat-accent .mat-step-icon-selected,.dark-theme .mat-step-header.mat-accent .mat-step-icon-state-done,.dark-theme .mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff4081;color:#fff}.dark-theme .mat-step-header.mat-warn .mat-step-icon{color:#fff}.dark-theme .mat-step-header.mat-warn .mat-step-icon-selected,.dark-theme .mat-step-header.mat-warn .mat-step-icon-state-done,.dark-theme .mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#f44336;color:#fff}.dark-theme .mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#f44336}.dark-theme .mat-step-header .mat-step-label.mat-step-label-active{color:#fff}.dark-theme .mat-step-header .mat-step-label.mat-step-label-error{color:#f44336}.dark-theme .mat-stepper-horizontal,.dark-theme .mat-stepper-vertical{background-color:#424242}.dark-theme .mat-stepper-vertical-line:before{border-left-color:#ffffff1f}.dark-theme .mat-horizontal-stepper-header:before,.dark-theme .mat-horizontal-stepper-header:after,.dark-theme .mat-stepper-horizontal-line{border-top-color:#ffffff1f}.dark-theme .mat-sort-header-arrow{color:#c6c6c6}.dark-theme .mat-toolbar{background:#212121;color:#fff}.dark-theme .mat-toolbar.mat-primary{background:#3f51b5;color:#fff}.dark-theme .mat-toolbar.mat-accent{background:#ff4081;color:#fff}.dark-theme .mat-toolbar.mat-warn{background:#f44336;color:#fff}.dark-theme .mat-toolbar .mat-form-field-underline,.dark-theme .mat-toolbar .mat-form-field-ripple,.dark-theme .mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.dark-theme .mat-toolbar .mat-form-field-label,.dark-theme .mat-toolbar .mat-focused .mat-form-field-label,.dark-theme .mat-toolbar .mat-select-value,.dark-theme .mat-toolbar .mat-select-arrow,.dark-theme .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.dark-theme .mat-toolbar .mat-input-element{caret-color:currentColor}.dark-theme .mat-tree{background:#424242}.dark-theme .mat-tree-node,.dark-theme .mat-nested-tree-node{color:#fff}.dark-theme html,.dark-theme body{background-color:#303030}.dark-theme .mat-toolbar.mat-primary{background:#303030;color:#fff}.dark-theme .card{background-color:#303030;border-color:#666;box-shadow:#ffffff24 0 1px 4px;color:#fff}.dark-theme .card-header{background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;color:#fff}.dark-theme .card-title>a{color:#fff}.dark-theme .card-subtitle{font-size:.9rem;margin-left:1.4rem}.dark-theme .detail>.title{background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;color:#fff}.dark-theme .detail>.title a{color:#ff0}.dark-theme .mat-mdc-menu-content .mat-mdc-menu-item:hover{background-color:#565656}.dark-theme .mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:#565656}.dark-theme .mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:#fff} +.mat-ripple{overflow:hidden;position:relative}.mat-ripple:not(:empty){transform:translateZ(0)}.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,.2,1);transform:scale3d(0,0,0)}.cdk-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;white-space:nowrap;outline:0;-webkit-appearance:none;-moz-appearance:none;left:0}[dir=rtl] .cdk-visually-hidden{left:auto;right:0}.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 .4s cubic-bezier(.25,.8,.25,1);opacity:0}.cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:1}.cdk-high-contrast-active .cdk-overlay-backdrop.cdk-overlay-backdrop-showing{opacity:.6}.cdk-overlay-dark-backdrop{background:rgba(0,0,0,.32)}.cdk-overlay-transparent-backdrop{transition:visibility 1ms linear,opacity 1ms linear;visibility:hidden;opacity:1}.cdk-overlay-transparent-backdrop.cdk-overlay-backdrop-showing{opacity:0;visibility:visible}.cdk-overlay-backdrop-noop-animation{transition:none}.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}textarea.cdk-textarea-autosize{resize:none}textarea.cdk-textarea-autosize-measuring{padding:2px 0!important;box-sizing:content-box!important;height:auto!important;overflow:hidden!important}textarea.cdk-textarea-autosize-measuring-firefox{padding:2px 0!important;box-sizing:content-box!important;height:0!important}@keyframes cdk-text-field-autofill-start{}@keyframes cdk-text-field-autofill-end{}.cdk-text-field-autofill-monitored:-webkit-autofill{animation:cdk-text-field-autofill-start 0s 1ms}.cdk-text-field-autofill-monitored:not(:-webkit-autofill){animation:cdk-text-field-autofill-end 0s 1ms}.mat-focus-indicator{position:relative}.mat-focus-indicator:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-focus-indicator-display, none);border:var(--mat-focus-indicator-border-width, 3px) var(--mat-focus-indicator-border-style, solid) var(--mat-focus-indicator-border-color, transparent);border-radius:var(--mat-focus-indicator-border-radius, 4px)}.mat-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-focus-indicator-display: block}.mat-mdc-focus-indicator{position:relative}.mat-mdc-focus-indicator:before{top:0;left:0;right:0;bottom:0;position:absolute;box-sizing:border-box;pointer-events:none;display:var(--mat-mdc-focus-indicator-display, none);border:var(--mat-mdc-focus-indicator-border-width, 3px) var(--mat-mdc-focus-indicator-border-style, solid) var(--mat-mdc-focus-indicator-border-color, transparent);border-radius:var(--mat-mdc-focus-indicator-border-radius, 4px)}.mat-mdc-focus-indicator:focus:before{content:""}.cdk-high-contrast-active{--mat-mdc-focus-indicator-display: block}.mat-ripple-element{background-color:#0000001a}.mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-option:hover:not(.mdc-list-item--disabled),.mat-mdc-option:focus:not(.mdc-list-item--disabled),.mat-mdc-option.mat-mdc-option-active,.mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(0,0,0,.04)}.mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #3f51b5)}.mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff4081)}.mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #f44336)}.mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-pseudo-checkbox-full{color:#0000008a}.mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#b0b0b0}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#fafafa}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#b0b0b0}.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#b0b0b0}.mat-app-background{background-color:#fafafa;color:#000000de}.mat-elevation-z0,.mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.mat-elevation-z1,.mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.mat-elevation-z2,.mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-elevation-z3,.mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.mat-elevation-z4,.mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.mat-elevation-z5,.mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.mat-elevation-z6,.mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.mat-elevation-z7,.mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.mat-elevation-z8,.mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.mat-elevation-z9,.mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.mat-elevation-z10,.mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.mat-elevation-z11,.mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.mat-elevation-z12,.mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.mat-elevation-z13,.mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.mat-elevation-z14,.mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.mat-elevation-z15,.mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.mat-elevation-z16,.mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-elevation-z17,.mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.mat-elevation-z18,.mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.mat-elevation-z19,.mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.mat-elevation-z20,.mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.mat-elevation-z21,.mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.mat-elevation-z22,.mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.mat-elevation-z23,.mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.mat-elevation-z24,.mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #fff}.mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #e0e0e0}.mat-mdc-card-subtitle{color:#0000008a}.mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540}.mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140}.mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E")}.mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640}.mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#000000de}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#0009}}@media all{.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#0009}}.mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.mdc-text-field--filled .mdc-text-field__ripple:before,.mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(0, 0, 0, .87))}.mdc-text-field--filled:hover .mdc-text-field__ripple:before,.mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .04)}.mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .12)}.mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#f5f5f5}.mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#0000006b}.mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#000000de}.mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#00000061}.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#000000de}.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #3f51b5)}.mdc-text-field--outlined .mdc-text-field__ripple:before,.mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#3f51b5de}.mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mdc-text-field--disabled .mdc-text-field__input{color:#00000061}@media all{.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#00000061}}@media all{.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#00000061}}.mdc-text-field--disabled .mdc-floating-label{color:#00000061}.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.mdc-text-field--disabled .mdc-text-field__icon--leading,.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.mdc-text-field--disabled .mdc-text-field__affix--prefix,.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#0000000f}.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#0000000f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field-character-counter,.mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-text-field--disabled .mdc-notched-outline__leading,.mdc-text-field--disabled .mdc-notched-outline__notch,.mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.mdc-text-field--disabled.mdc-text-field--filled{background-color:#fafafa}.mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field-focus-overlay{background-color:#000000de}.mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.04}.mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.12}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#0000008a}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#00000061}.mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff4081de}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff4081)}.mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#f44336de}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}[dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.mat-mdc-form-field-infix{min-height:56px}.mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:28px}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -34.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:24px;padding-bottom:8px}.mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:16px;padding-bottom:16px}.mat-mdc-select-value{color:#000000de}.mat-mdc-select-placeholder{color:#0009}.mat-mdc-select-disabled .mat-mdc-select-value{color:#00000061}.mat-mdc-select-arrow{color:#0000008a}.mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#3f51b5de}.mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff4081de}.mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#f44336de}.mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#00000061}.mat-mdc-dialog-container{--mdc-dialog-container-color: white;--mdc-dialog-with-divider-divider-color: rgba(0, 0, 0, .12);--mdc-dialog-subhead-color: rgba(0, 0, 0, .87);--mdc-dialog-supporting-text-color: rgba(0, 0, 0, .6)}.mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #e0e0e0;--mdc-chip-elevated-disabled-container-color: #e0e0e0;--mdc-chip-label-text-color: #212121;--mdc-chip-disabled-label-text-color: #212121;--mdc-chip-with-icon-icon-color: #212121;--mdc-chip-with-icon-disabled-icon-color: #212121;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #212121;--mdc-chip-with-trailing-icon-trailing-icon-color: #212121;--mdc-chip-with-icon-selected-icon-color: #212121}.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.mat-mdc-chip-focus-overlay{background:black}.mat-mdc-chip{height:32px}.mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #424242;--mdc-switch-disabled-unselected-handle-color: #424242;--mdc-switch-disabled-selected-track-color: #424242;--mdc-switch-disabled-unselected-track-color: #424242;--mdc-switch-unselected-focus-state-layer-color: #424242;--mdc-switch-unselected-pressed-state-layer-color: #424242;--mdc-switch-unselected-hover-state-layer-color: #424242;--mdc-switch-unselected-focus-track-color: #e0e0e0;--mdc-switch-unselected-hover-track-color: #e0e0e0;--mdc-switch-unselected-pressed-track-color: #e0e0e0;--mdc-switch-unselected-track-color: #e0e0e0;--mdc-switch-unselected-focus-handle-color: #212121;--mdc-switch-unselected-hover-handle-color: #212121;--mdc-switch-unselected-pressed-handle-color: #212121;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #616161;--mdc-switch-selected-icon-color: #fff;--mdc-switch-disabled-selected-icon-color: #fff;--mdc-switch-disabled-unselected-icon-color: #fff;--mdc-switch-unselected-icon-color: #fff}.mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#00000061}.mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #3949ab;--mdc-switch-selected-handle-color: #3949ab;--mdc-switch-selected-hover-state-layer-color: #3949ab;--mdc-switch-selected-pressed-state-layer-color: #3949ab;--mdc-switch-selected-focus-handle-color: #1a237e;--mdc-switch-selected-hover-handle-color: #1a237e;--mdc-switch-selected-pressed-handle-color: #1a237e;--mdc-switch-selected-focus-track-color: #7986cb;--mdc-switch-selected-hover-track-color: #7986cb;--mdc-switch-selected-pressed-track-color: #7986cb;--mdc-switch-selected-track-color: #7986cb}.mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #d81b60;--mdc-switch-selected-handle-color: #d81b60;--mdc-switch-selected-hover-state-layer-color: #d81b60;--mdc-switch-selected-pressed-state-layer-color: #d81b60;--mdc-switch-selected-focus-handle-color: #880e4f;--mdc-switch-selected-hover-handle-color: #880e4f;--mdc-switch-selected-pressed-handle-color: #880e4f;--mdc-switch-selected-focus-track-color: #f06292;--mdc-switch-selected-hover-track-color: #f06292;--mdc-switch-selected-pressed-track-color: #f06292;--mdc-switch-selected-track-color: #f06292}.mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e53935;--mdc-switch-selected-handle-color: #e53935;--mdc-switch-selected-hover-state-layer-color: #e53935;--mdc-switch-selected-pressed-state-layer-color: #e53935;--mdc-switch-selected-focus-handle-color: #b71c1c;--mdc-switch-selected-hover-handle-color: #b71c1c;--mdc-switch-selected-pressed-handle-color: #b71c1c;--mdc-switch-selected-focus-track-color: #e57373;--mdc-switch-selected-hover-track-color: #e57373;--mdc-switch-selected-pressed-track-color: #e57373;--mdc-switch-selected-track-color: #e57373}.mat-mdc-slide-toggle{--mdc-switch-state-layer-size: 48px}.mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #3f51b5}.mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff4081}.mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #f44336}.mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#00000061}.mat-mdc-radio-button .mdc-radio{padding:10px}.mat-mdc-radio-button .mdc-radio .mdc-radio__background:before{top:-10px;left:-10px;width:40px;height:40px}.mat-mdc-radio-button .mdc-radio .mdc-radio__native-control{top:0px;right:0px;left:0px;width:40px;height:40px}.mat-mdc-slider{--mdc-slider-label-container-color: black;--mdc-slider-label-label-text-color: white;--mdc-slider-disabled-handle-color: #000;--mdc-slider-disabled-active-track-color: #000;--mdc-slider-disabled-inactive-track-color: #000;--mdc-slider-with-tick-marks-disabled-container-color: #000;--mat-mdc-slider-value-indicator-opacity: .6}.mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}.mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #fff);color:var(--mdc-theme-on-surface, #000)}.mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(0, 0, 0, .54))}.mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(0, 0, 0, .38))}.mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(0, 0, 0, .38))}.mdc-list-item--disabled .mdc-list-item__start,.mdc-list-item--disabled .mdc-list-item__content,.mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.mdc-list-item--disabled .mdc-list-item__primary-text,.mdc-list-item--disabled .mdc-list-item__secondary-text,.mdc-list-item--disabled .mdc-list-item__overline-text,.mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #000)}.mdc-list-item--selected .mdc-list-item__primary-text,.mdc-list-item--activated .mdc-list-item__primary-text,.mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #3f51b5)}.mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mdc-list-divider:after{border-bottom-color:#fff}.mdc-list-divider{background-color:#0000001f}.mat-mdc-menu-item[disabled],.mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(0, 0, 0, .38))}.mat-mdc-menu-item .mat-icon-no-color,.mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-menu-item:hover:not([disabled]),.mat-mdc-menu-item.cdk-program-focused:not([disabled]),.mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(0,0,0,.04)}.mat-mdc-list-base{--mdc-list-list-item-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-supporting-text-color: rgba(0, 0, 0, .54);--mdc-list-list-item-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-supporting-text-color: rgba(0, 0, 0, .38);--mdc-list-list-item-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-selected-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-disabled-label-text-color: black;--mdc-list-list-item-disabled-leading-icon-color: black;--mdc-list-list-item-disabled-trailing-icon-color: black;--mdc-list-list-item-hover-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-leading-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-hover-trailing-icon-color: rgba(0, 0, 0, .38);--mdc-list-list-item-focus-label-text-color: rgba(0, 0, 0, .87);--mdc-list-list-item-hover-state-layer-color: black;--mdc-list-list-item-hover-state-layer-opacity: .04;--mdc-list-list-item-focus-state-layer-color: black;--mdc-list-list-item-focus-state-layer-opacity: .12}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option .mdc-list-item__start,.mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #3f51b5}.mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-accent .mdc-list-item__start,.mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #ff4081}.mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-list-option.mat-warn .mdc-list-item__start,.mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #000;--mdc-radio-disabled-unselected-icon-color: #000;--mdc-radio-unselected-focus-icon-color: #212121;--mdc-radio-unselected-hover-icon-color: #212121;--mdc-radio-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-radio-unselected-pressed-icon-color: rgba(0, 0, 0, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #000;--mat-mdc-radio-checked-ripple-color: #f44336}.mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#00000061}.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.mat-mdc-list-base{--mdc-list-list-item-one-line-container-height: 48px;--mdc-list-list-item-two-line-container-height: 64px;--mdc-list-list-item-three-line-container-height: 88px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-one-line,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-one-line{height:56px}.mat-mdc-list-item.mdc-list-item--with-leading-avatar.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-checkbox.mdc-list-item--with-two-lines,.mat-mdc-list-item.mdc-list-item--with-leading-icon.mdc-list-item--with-two-lines{height:72px}.mat-mdc-paginator{background:white;color:#000000de}.mat-mdc-paginator-icon{fill:#0000008a}.mat-mdc-paginator-decrement,.mat-mdc-paginator-increment{border-top:2px solid rgba(0,0,0,.54);border-right:2px solid rgba(0,0,0,.54)}.mat-mdc-paginator-first,.mat-mdc-paginator-last{border-top:2px solid rgba(0,0,0,.54)}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#0000001f}.mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#0000001f}.mat-mdc-paginator .mat-mdc-form-field-infix{min-height:40px}.mat-mdc-paginator .mat-mdc-text-field-wrapper .mat-mdc-form-field-flex .mat-mdc-floating-label{top:20px}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{--mat-mdc-form-field-label-transform: translateY( -26.75px) scale(var(--mat-mdc-form-field-floating-label-scale, .75));transform:var(--mat-mdc-form-field-label-transform)}.mat-mdc-paginator .mat-mdc-text-field-wrapper.mdc-text-field--outlined .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mdc-text-field--no-label:not(.mdc-text-field--outlined):not(.mdc-text-field--textarea) .mat-mdc-form-field-infix{padding-top:8px;padding-bottom:8px}.mat-mdc-paginator .mat-mdc-text-field-wrapper:not(.mdc-text-field--outlined) .mat-mdc-floating-label{display:none}.mat-mdc-paginator-container{min-height:56px}.mat-mdc-tab,.mat-mdc-tab-link{background-color:transparent}.mat-mdc-tab .mdc-tab__text-label,.mat-mdc-tab-link .mdc-tab__text-label{color:#0009}.mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#00000061}.mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#3f51b5}.mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #3f51b5)}.mdc-tab__ripple:before,.mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-link .mat-ripple-element{background-color:#3f51b5}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff4081}.mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff4081)}.mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff4081}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#f44336}.mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #f44336)}.mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#f44336}.mat-mdc-tab-group.mat-background-primary,.mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #3f51b5;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-accent,.mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff4081;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-group.mat-background-warn,.mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #f44336;--mat-mdc-tab-header-with-background-foreground-color: #fff}.mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #000)}.mat-mdc-tab-header .mdc-tab{height:48px}.mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, rgba(0, 0, 0, .87))}.mat-mdc-checkbox .mat-ripple-element{background-color:#0000001a}.mat-mdc-checkbox .mdc-checkbox__ripple{background:#000}.mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#3f51b51a}.mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#3f51b5}.mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff40811a}.mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff4081}.mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #212121;--mdc-checkbox-unselected-hover-icon-color: #212121;--mdc-checkbox-disabled-selected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(0, 0, 0, .38);--mdc-checkbox-unselected-icon-color: rgba(0, 0, 0, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(0, 0, 0, .54)}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#f443361a}.mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#f44336}.mat-mdc-checkbox-disabled label{color:#00000061}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-touch-target-size, 40px) - 40px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-ripple-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);right:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);left:calc((40px - var(--mdc-checkbox-touch-target-size, 40px)) / 2);width:var(--mdc-checkbox-touch-target-size, 40px);height:var(--mdc-checkbox-touch-target-size, 40px)}.mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #000}.mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-text-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #fff;--mdc-filled-button-label-text-color: #000}.mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-filled-button-container-color: rgba(0, 0, 0, .12);--mdc-filled-button-label-text-color: rgba(0, 0, 0, .38)}.mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #fff;--mdc-protected-button-label-text-color: #000}.mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-color: rgba(0, 0, 0, .12);--mdc-protected-button-label-text-color: rgba(0, 0, 0, .38);--mdc-protected-button-container-elevation: 0}.mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #000}.mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-disabled-label-text-color: rgba(0, 0, 0, .38);--mdc-outlined-button-outline-color: rgba(0, 0, 0, .12);--mdc-outlined-button-disabled-outline-color: rgba(0, 0, 0, .12)}.mat-mdc-button,.mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-button.mat-primary,.mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-button.mat-accent,.mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-button.mat-warn,.mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-raised-button,.mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-raised-button.mat-primary,.mat-mdc-unelevated-button.mat-primary,.mat-mdc-raised-button.mat-accent,.mat-mdc-unelevated-button.mat-accent,.mat-mdc-raised-button.mat-warn,.mat-mdc-unelevated-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-button.mat-mdc-button-base,.mat-mdc-raised-button.mat-mdc-button-base,.mat-mdc-unelevated-button.mat-mdc-button-base,.mat-mdc-outlined-button.mat-mdc-button-base{height:36px}.mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5}.mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081}.mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336}.mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(0, 0, 0, .38);--mdc-icon-button-disabled-icon-color: rgba(0, 0, 0, .38)}.mat-mdc-icon-button.mat-mdc-button-base{width:48px;height:48px;padding:12px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:4px}.mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%,-50%)}.mat-mdc-fab,.mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #000;--mat-mdc-button-ripple-color: rgba(0, 0, 0, .1)}.mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.04}.mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.12}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary,.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent,.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.mat-mdc-fab.mat-unthemed,.mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #fff;--mdc-fab-icon-color: #000;--mat-mdc-fab-color: #000}.mat-mdc-fab.mat-primary,.mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-accent,.mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab.mat-warn,.mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.mat-mdc-fab[disabled][disabled],.mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(0, 0, 0, .12);--mdc-fab-icon-color: rgba(0, 0, 0, .38);--mat-mdc-fab-color: rgba(0, 0, 0, .38)}.mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: #ff4081;--mdc-snackbar-container-color: #333333;--mdc-snackbar-supporting-text-color: rgba(255, 255, 255, .87)}.mdc-data-table{background-color:var(--mdc-theme-surface, #fff);border-color:#0000001f}.mdc-data-table__row{background-color:inherit}.mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #fff)}.mdc-data-table__row--selected{background-color:#3f51b50a}.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#0000001f}.mdc-data-table__cell,.mdc-data-table__header-cell{border-bottom-color:#0000001f}.mdc-data-table__pagination{border-top-color:#0000001f}.mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#0000000a}.mdc-data-table__header-cell,.mdc-data-table__pagination-total,.mdc-data-table__pagination-rows-per-page-label,.mdc-data-table__cell{color:#000000de}.mat-mdc-table{background:white}.mat-mdc-table .mdc-data-table__row{height:52px}.mat-mdc-table .mdc-data-table__pagination{min-height:52px}.mat-mdc-table .mdc-data-table__header-row{height:56px}.mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.mat-badge{position:relative}.mat-badge.mat-badge{overflow:visible}.mat-badge-hidden .mat-badge-content{display:none}.mat-badge-content{position:absolute;text-align:center;display:inline-block;border-radius:50%;transition:transform .2s ease-in-out;transform:scale(.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-badge-content{color:#fff;background:#3f51b5}.cdk-high-contrast-active .mat-badge-content{outline:solid 1px;border-radius:0}.mat-badge-accent .mat-badge-content{background:#ff4081;color:#fff}.mat-badge-warn .mat-badge-content{color:#fff;background:#f44336}.mat-badge-disabled .mat-badge-content{background:#b9b9b9;color:#00000061}.mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:white;color:#000000de}.mat-button-toggle-standalone:not([class*=mat-elevation-z]),.mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.mat-button-toggle{color:#00000061}.mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#0000001f}.mat-button-toggle-appearance-standard{color:#000000de;background:white}.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 #e0e0e0}[dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #e0e0e0}.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 #e0e0e0}.mat-button-toggle-checked{background-color:#e0e0e0;color:#0000008a}.mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#000000de}.mat-button-toggle-disabled{color:#00000042;background-color:#eee}.mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:white}.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 #e0e0e0}.mat-button-toggle-appearance-standard .mat-button-toggle-label-content{line-height:48px}.mat-calendar-arrow{fill:#0000008a}.mat-datepicker-toggle,.mat-datepicker-content .mat-calendar-next-button,.mat-datepicker-content .mat-calendar-previous-button{color:#0000008a}.mat-calendar-table-header-divider:after{background:rgba(0,0,0,.12)}.mat-calendar-table-header,.mat-calendar-body-label{color:#0000008a}.mat-calendar-body-cell-content,.mat-date-range-input-separator{color:#000000de;border-color:transparent}.mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#00000061}.mat-form-field-disabled .mat-date-range-input-separator{color:#00000061}.mat-calendar-body-in-preview{color:#0000003d}.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#00000061}.mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#0000002e}.mat-calendar-body-in-range:before{background:rgba(63,81,181,.2)}.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-calendar-body-comparison-bridge-start:before,[dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-comparison-bridge-end:before,[dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-calendar-body-selected{background-color:#3f51b5;color:#fff}.mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#3f51b566}.mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}@media (hover: hover){.mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}}.mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#fff;color:#000000de}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,64,129,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff4081;color:#fff}.mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff408166}.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-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}@media (hover: hover){.mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(244,67,54,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#f44336;color:#fff}.mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#f4433666}.mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}@media (hover: hover){.mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}}.mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-datepicker-toggle-active{color:#3f51b5}.mat-datepicker-toggle-active.mat-accent{color:#ff4081}.mat-datepicker-toggle-active.mat-warn{color:#f44336}.mat-date-range-input-inner[disabled]{color:#00000061}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base{width:40px;height:40px;padding:8px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin:0}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mdc-icon-button__touch{position:absolute;top:50%;height:40px;left:50%;width:40px;transform:translate(-50%,-50%)}.mat-calendar-controls .mat-mdc-icon-button.mat-mdc-button-base .mat-mdc-button-touch-target{display:none}.mat-divider{border-top-color:#0000001f}.mat-divider-vertical{border-right-color:#0000001f}.mat-expansion-panel{background:white;color:#000000de}.mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.mat-action-row{border-top-color:#0000001f}.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,.04)}@media (hover: none){.mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:white}}.mat-expansion-panel-header-title{color:#000000de}.mat-expansion-panel-header-description,.mat-expansion-indicator:after{color:#0000008a}.mat-expansion-panel-header[aria-disabled=true]{color:#00000042}.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-expansion-panel-header{height:48px}.mat-expansion-panel-header.mat-expanded{height:64px}.mat-icon.mat-primary{color:#3f51b5}.mat-icon.mat-accent{color:#ff4081}.mat-icon.mat-warn{color:#f44336}.mat-drawer-container{background-color:#fafafa;color:#000000de}.mat-drawer{background-color:#fff;color:#000000de}.mat-drawer.mat-drawer-push{background-color:#fff}.mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.mat-drawer-side{border-right:solid 1px rgba(0,0,0,.12)}.mat-drawer-side.mat-drawer-end,[dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(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,.12)}.mat-drawer-backdrop.mat-drawer-shown{background-color:#0009}.mat-step-header.cdk-keyboard-focused,.mat-step-header.cdk-program-focused,.mat-step-header:hover:not([aria-disabled]),.mat-step-header:hover[aria-disabled=false]{background-color:#0000000a}.mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.mat-step-header:hover{background:none}}.mat-step-header .mat-step-label,.mat-step-header .mat-step-optional{color:#0000008a}.mat-step-header .mat-step-icon{background-color:#0000008a;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:#3f51b5;color:#fff}.mat-step-header.mat-accent .mat-step-icon{color:#fff}.mat-step-header.mat-accent .mat-step-icon-selected,.mat-step-header.mat-accent .mat-step-icon-state-done,.mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff4081;color:#fff}.mat-step-header.mat-warn .mat-step-icon{color:#fff}.mat-step-header.mat-warn .mat-step-icon-selected,.mat-step-header.mat-warn .mat-step-icon-state-done,.mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#f44336;color:#fff}.mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#f44336}.mat-step-header .mat-step-label.mat-step-label-active{color:#000000de}.mat-step-header .mat-step-label.mat-step-label-error{color:#f44336}.mat-stepper-horizontal,.mat-stepper-vertical{background-color:#fff}.mat-stepper-vertical-line:before{border-left-color:#0000001f}.mat-horizontal-stepper-header:before,.mat-horizontal-stepper-header:after,.mat-stepper-horizontal-line{border-top-color:#0000001f}.mat-horizontal-stepper-header{height:72px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header,.mat-vertical-stepper-header{padding:24px}.mat-stepper-vertical-line:before{top:-16px;bottom:-16px}.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:after,.mat-stepper-label-position-bottom .mat-horizontal-stepper-header:before{top:36px}.mat-stepper-label-position-bottom .mat-stepper-horizontal-line{top:36px}.mat-sort-header-arrow{color:#757575}.mat-toolbar{background:whitesmoke;color:#000000de}.mat-toolbar.mat-primary{background:#3f51b5;color:#fff}.mat-toolbar.mat-accent{background:#ff4081;color:#fff}.mat-toolbar.mat-warn{background:#f44336;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-toolbar-multiple-rows{min-height:64px}.mat-toolbar-row,.mat-toolbar-single-row{height:64px}@media (max-width: 599px){.mat-toolbar-multiple-rows{min-height:56px}.mat-toolbar-row,.mat-toolbar-single-row{height:56px}}.mat-tree{background:white}.mat-tree-node,.mat-nested-tree-node{color:#000000de}.mat-tree-node{min-height:48px}html,body{margin:0;font-family:Roboto,Helvetica,Arial,sans-serif;font-size:14px;height:100%}body{background-color:#ededed}.app-loading .logo{width:113px;height:120px;background:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAHEAAAB4CAYAAADFcR0YAAAYNElEQVR4nO2deXwT1drHT2nSlFK6JHNOAPX6XlQuive6wEWRrS2iLOJFSpq0ySC2CoKg4AI06ZKyoywCBUVR3NFeRUrbOQMIFSjpnGHTq6C4XVH09RUXWhFBpc/7R7pMli5Jk061/X0+zz/9TGfOPN+c55zznGdmEOpUpzrVqU51CqGiIhRZui8+saQi8S+llYYrS1yGgSLDQ4VKPHo7M4zf/S5J3XeM8NJxwrOPyNQyFzd149bEqUs3xk+d+1js1HtzYqfaHoyZapoRMyXFouXrLCktypZs0o0datIOHJIa3XuQCenVvtc/rIS9sbhU4pIp46aKEllOGdkiMnyQyuQUlfEFUcY1/mz7AVyzrYKrKdycWDPn0TjgZ3eDUZO6QoolukWWbNbV+LMUs+5csln3YbJFV5ycFr0o2Rw1YfDtqJfaflJVb5YnJJQxboAg4YmUkUcowxtFhvdQhk+KMoGW2s5DBLbtx7DmlUR4cHEcTJgaA0NTo2FIqg6GmaIhKa1l8II2s+58iiXalWLWrUoyR1mGpequUNu3YZUg6a+iMl5MGT4uyvg0ZeSsu1e1HJo3wNUvJcK4zK4wIj0aks0tcbzOj4UKqu5CikV3Jtmiez8lLSpdbX+HRMUVXHehkgymjKykDP8QLCx/RhmBh5fGwU3jPSGMsGhhhEUDw9MxDM7oAzdmXAM3ZAyEgdabYIB1GPS3jYb+tjENZr0VBliHwkDrILghYwAMsl0HQyZdA0P5K2C4tRekpHeHEeYIGGHuAiPMGkixRLU8NFuiv042ayf1N6F4tVkEowhBIvNFmZxoTU9ryhY9meDV86JgpAVBf9touHTyejBmFgOXuQv0WRWQmMUgIesgxGcdasQOQ0KmDPj+D6FnzjdwUe7XcHHOZ3CJ/Rhcmn0ILpuzC/o9sAYGTLkLhvF9YWQagpvTUC3UFvXQT4enRSerDaWlihAqyWAqk1PhAKfshen3d1OExxgYaB0KOHMnxGW9AwlZMiRksZbbPQcAP3ISejh/gh751X7sJzA6z4LReR5IQQ30zD8DfR56E/pPvRuG8n0hKYPUtqOZXpoWlYMQ6qI2pCYlMrw0nPCUECdMjakNWbFw+Z0LIT7rUODwMiUwTH8PjDnfNwGwaag986vg0uzD0Hf2JrgxayyMTEOQYtE2MRGK2qQ2p0YlyNw9bQGwzu6xx0KKRQfX2syQkHUgMHhZDBKyJNDPOAo9nWcCgNe0GZ2/wKX2YzB48g2QYolpahmzUW1ePhL3cj3bEqAoE1j7ih5GmCOh112vBd4DsyTgZn0cYO9rIcj8M2B0/gZ9Zz8PSdaLGpn96i4MN+tGq83NQwLDM9oa4luHjXBfng4Md9LAIGZKYJj5YVgAetsljk8gOT3RP0hz9Pdqc/PQYy/Grd9+oG0hijKB3Uc4mLAkB+IzWx5O9TOOhTSENh1ez8JfHB+7lyp+lyBRuWqzq5dlruYNQcJtDlGUCZS4/gL9HtwK8S0AmHjPQTDm/tgmAJV25aynGxsjv+k/DsWozQ8hhFD6vMgt2YUxsONg20PcfoCD1/f0hYum7YH4zCbCaqYEZM5XbRJGfcx5FobZevuGVbPuXLJJM1xtfgghhGx27dO8QwtPFyeq0ht3HOBgfekwME6paHQiY7jvKPRoozDqG1bPQ79Z6+HmNOQbUtN096vNDyGEkC1bO413aOHugijYVoFhuwogdx40wMynZ0BcI+Oj0X5KFYBu+wl65lX5h2iOelZtfgghhPiHEeEdWrBma+G+pdGg1vi461AiZK6bC13vfMdzLJx6RJWx0LM3noNhtst9QmqyJfpttfnVy2bX/Jt3aIF3aCFnfTegrO0hijIBQeoJKQVPes5Ip/8HeuRXqQzxLNx013A/EHXvq82uXqbZSM87ND/yDi3Y7FpY/Woc7DpsVAEkhjf2XgF/myVA97sO1kJ8T1WAdRAHZY70ya8mm3WfqM3OQza79gGbXVNTF1o3FieCGuvH7QcwvFnRG3rdu88Ncdq70COvnfbE9gYRIYRsdk1lXVjNckbB629zqoRVUcaw4s1bQX+3BIlTDreDMfEXGMpf5Q/iEbWZ+WjcFBRjs2t+qAur0xfrYMdBNcIqgR0HDTB/sxmibEfB6PhOZYjnYYSfBX+yWbddbWZ+ZcuOHK8Mq3NXx6jUGwnsOpQAU5+YDYbZn6mz0M+vhh75P8ElOSdhpMl3iZFi1j2tNq9GZbNrN9eFVd6hhZUvx8EOFcZHUSYgMiOMXbwGuNxzqo2HfR7e5nedmGLRPaw2qyZlc2g/r4OYPlcDL4h6VSY6okzg7cPdYciynUDyf1YllF49cxmMMHtD1F0Yboq6Q21OTSrDjq7lHZqf60BOztXCq28ZVAutxa7L4IYVB8GY37ZhlRT8Dv+cwsMIcxfvUPrzsFTtdWpzalZWh2aBMqzOXBYNgqRSWJUxbHVdAX+df6pNQZKCGhjKX+tbg2OO/n7IWJSoNqMWiXdoSuogZszTgL2wm2phdccBPby29zrot+STNuyNZyE5PcHfePiR2mxarDuykUE5PvIOLSze1F21sCrKBJ7fPRh6OdsG4iWOjyA5Pd7PprDuKbXZBCRbduR4JcRJOVrYVJaoyh6kKBN462ACvFh+E/Rd/HnYQ+tlc3ZDcnqsn22oqFS1uQQs3q7J9gZZtNugWmjdLmN46e2B0GfhScB54Zu19p39vN+d/UEm1FVtJkHJ5tCUK0FOW6SDbfvV2boSZXdlgMh6wahCCr0KvvvGmFf9dY+8qu+MeVXVxvzq30IB8e8zFvkrzfg/tVkErQn3oUvT50ScqYNos2shuzAGdh1RJzXnNgzbD2B4dU8/Gd0Bhvh5p3sb7T9cTXKrBxlzqm8z5lbl9MivKjPmVVUHDrEKrp86xc94GP2a2iyCUvl/k6K/+OGOq1/def171mxNfW9Mn6eBZc/HqjY+Ko0yvNdZjjSN3YNx3unebqjVHxjzqqqNedW/Nw3xNNyYOcpfznR6W/q+1Tp69Fb90f+OyX7/xJgDR0+MhQ9PjoO1r10BNrvn+PhsiTo1On5AFrXkvvRzvr+Y5Pw43phftapHXtUX/iD2zPsBhvJ9vQHWDDdpBoXb7yER+2CE4f0TY54/emIseNu7n42GGUvjQDk+Ts7TQqlLvfHRC2RZoPfbI++0yTvk9sz73mf3ItkSfWqYKfqv4fB5SASwsuvRE2NNR0+M2eoPXp0dPzkKKt5LBqs9AXiHpn58nL5Y125AigyvDdgBMz/WGfOqN7ohnoFLs//jk/hONus+bNcz04INvU6989no3499cVsjAMfA8ZMjoexQDtyz6RSkLS+rh1hn+Ru6qQ+w1gTGLQvGD8bcqhyj8xxcNesZ390Ls25bqP0eUqVndzk/OU8HL5T9A+QPR8IHX7phHv/yFjjyqQm2sIVw/4ufwJhVABMKAVILATIW2IB3II+Jzvo3EmDnITVnrATcL3MgIEr4gYAdkVSuwQU1B/tPvdsn8Z2Uprs3DK4PnWwO7WfuzWANTFscC8+WXA3HvxwNT+1+DrKe+RYmFgJMWOuG12A1YMvtA7yji0ePfLZUnRodfzDLJP3IQH2RsBDuHzrpWvB+XjHJhHqEw/chk7J0kXdoIWMugrSVDP61xhucp01cfRL4nHgPiPcu1MHWfWrV6PhaCSPXBOKLRCdcnWL2rqmJ/jZcvg+ZrHbtTCUI3o7AtPJAkwDrzLxsHfD2hrBqzdbCQyu7wluqh9X6HvlVsdTN2FJfDDZxf/OzPlwRTv+HROY56EpviOblpS2COGE9gHX+bcA7IjxAFjyl3taVjzF8sKW+GJ6mG+cNMcmkvTac/g+ZvCFali6H1HXNQ0wtBEhd+yvY8q/xmLFOytHCMyXtZXwkQGW8uSV+SDZ3fcQL4ld/mNeM2ewaqQFkBGQssLQcYiFA2koX8I4Yj/GRd2hhm0udh3X8hNWaMsZlNOeHQSbUNcmseyDZrNuQbIl+LdkSZW8L/4dEvENToHS+La9vQBAnrAOwLF0JkxTjo82uhfuWRENpZftIBFBGzpa4DBep7euwyTpPcwtv1/xaDyC3J0xcc6rFEOssY+HdPsuOhc/Etqew2v5K8EOl9IcQx9s139U7P6c7mFZKAUOcuOZbsOX19hgfLXM18PTWBNipUlW5H5Dt4yHRcIi3a7Y29KBIsCwrDBhiaiGA6fF3YVI28uiNk3O18PIOveoARZmAyMg3RUUoUm1/h0XumtM6x2vA6kwOCmLqOgDLo0/7hNUHHms/46MgkfZdxd0a8Q7tYeVSY+Lqr4IDWfg7WAtGA++IbMgEZWsh94luKj0D6R1Sybk/bW+0ZUferoQY6FLDY3xcex54R5zH+GjN1sKaovh2MdGhksGmtr/DIvfTw9ovGsJgFJge/zTI3ghgWnUIeEc3j7Cama/mM5DK3tiyBMAfUla7ZrHS6emL50BqYU3QINOXOD16o82uhWmLo9XPrzJ8pKgcx6rt73ApgrdrqhuWG3qYuOa7oCGmrgOwFiR5JMozsjXg3BCrajaHyuTbkvLunNrODpt4R+S4ht6IwFowBiasDxJiIUDq2jO160evivJS9QqtqEzOi3u5nmr7OmxKmoyibXaN7LmzsTV4iIUAaSu2A+/QeY6PzigodWFVJjpUxhf+1Gk4hBCyzdOM8synXgmpa8+2CmT6kgLP/Ue7FmY91lWl3ohPb9kfS9T2c9jFO7RFyt6YvujhoJccqYXuRLm14FaP9SPv0MLjm+PVgPiBIOnj1PZx2DVuCoqpq8Gp32t89LlWgZy4+iTwudgnLff621zbhlVG3kQIRajt4zaRzRGZarNrfm/Y4SBgevzjVoVV83LRI6za7FqYskDXprNVKnEWtX3bprLZtRuUm8bW/AGQWvhbq8KqZcl8j7IOm10LS55rowdZGflMbZ+qIptDs78BZBewOoe1qjemrv0FrM6bfKoB3tgT/mxOiYT/3N+HakzmR9BldW+eqtuucmdzggdpevxTj/yqO5ujCy9EiSxX25eqyurQ3ujZcyIgfXF2qxIBaSv3+YyPC5/pHp5JDsPHnM52/sWZtpA1O/JOT5Ao6A1kt9VA+qJ7PfKrmflRULQ7tO/PoTL+UG3ftStZHZplniB1YFm2LugeOXHtGeBzDB5h9cEVXWF3qJ5GZuQzYW8sVttv7U42h/Y5n3rVZauDHx9XujzCavo8DRS+ntDq98t19sBmZLNrX/SeXaYvcQadDMhYYPYIq1MW6KC4IviSDsrw9j/zdlPIpHz7VEPx8SQIZg8ybcUu4HNiPCY5a1+LDy4JwMjLavvmDyXeoX3K7XT3O1N5B4KM+akwcc2PAYO05f3VZ5ITRC8sqG1ax0irhUo2u+ZRzx6pAVvuxYGl6NYBpC9d4LmBPE8DK16Oh50tfVNHpeFmtX3xR1UEQghZHdpZyjyru0fFQtry11scXtNW/cfjcQDeoYV7CqKaneBQhk+WyXiY2o74Uyh9rmaId4/kHVFgnT8OJhb+3vxyY3W1b/FxXhT8u7zxdByVccWfutRCDVkeRJfwDu0x7wkP74gF8/ISSF17vokMToVHOOUdWrgzVwsvbW+kgpyRNzuzMGHS+Fkogc/WrPLtlZFgdQ4C8/Ji91JkneeYaHUOAu/q8TtztfCi6A0R11AZT1b7PjuEbPbIScpXUiuTA7a8PmB+dBNMXP2/YFp1HKwFN4P361XqwulruwzK8a+6jHED1L63DqWMeai399v+67a0eDtyT2TsyGN/UWlZzijl+PfGFtbdoPY9dVhl2DXJNoemyh+oxsy9xIiDnQeNIMhkmtr30CmEkMmEoqzZmjyP2p1GzGbXwsOrusKOg4SVuAwD1W57p7xkmo5i3dta7i/H+QM4c1k0FL2lf1AQkE7t9naqGfHzNCm8PfIJm0Ozh7drXNZszVsPLNOteu8LcpnabetUEOo/BWnVbkOnOtWpTnWqU53q1B9eRUUoqsRl6EsruaQyxt1GJTyGMv0gQdJfHP6Ll+NYyshLVCY7RYZ3UwkvCPU1yhjXR2S4hMpkJ2V4nyDpb2zm+AFUxm9TmexsqYky2UFlUiwy/DyVuccEhmcKzDC+hJFrwrFWpFLiPwSGZ4oyFijDPzRfs0M+pwwXiYy7t8yV+PeQNubN8oQEysjnigRxaUgvgGqhMHK2/hqV3O1NHi/jUaEoN6QM/y7K5IzIyHeijF8trTRc2dp7ESR9nMjwbiqTn5u4brXI8E9NAD0ryoRtY/GheUt/LcT/Nuyx4ZKQnFghd89quGmhkhvX1PGUkVu9Nm43izKXK0hcnre5/07mizJeRSW8iTIsUhnLIsMfU4arfPcQMRUrueuDuQ9ayd3u2S7ys8jwHkHmHhIrues3bPBdpxa54vRCJTdOYOQJUcYf+LaHuzuYtnio/UPENaJk+Fcg1ysqQpFFrjh9sQtfXibjUVQmxV77ib9SGa8L5JyU6QfVv+zd7ac9xS58eUDtKsexAjOkUBl/7dVz1wRyHh/9ESDSSjKhtW3Yukd/CZVxhVdY2+Wv9/htk0zOKSoCpNa8VUqQ9HFUxp8oIs2FYF4eX6+OArFWEZRxs71CdbM9soxxGZ7/YxjR2oYUueL07rG6/gf1ftAn62AQ3eeXcLYHFAkPafJ4mWxQHh+qdggMz1Cet0zGwX1+oSNCLClBMSLDHysceKKZ9rwSDoh0v+GfVMZfU5mcooycFSRyS1An6ogQEUJIlPB9inv+ranCYZHhpUqIIdxkjigqQlF1FnTlXUeF6HSiLl6THGdjx5Ywco3XMuWdMsb1CXWbglZHhYgQQlTGhxUzziZrUKlEpvtZ0D9DKxP+JxxtC0gdGaJ7AV5/30eaWzYIDM8VZfyj94KdMlwtyligMs4RJHKLKOv7lbgMF5WUoJhwtNtHHRkilfE85eSmJWu/EglfQSW8wA2ukZQfI7+IMv5KlMl7lJG3RIaXUma4I2xPHHdwiPc3rP3Iqaa+L+xPoqzvRyW8QJQJExn5P1HGpz2SAn4NnxYZt15w4etC9mqxjgxRkMjDiut8FShEpTZsQNrSffG9BRc3nEoGm8DwIspwqSjjLxoDWruzsbHVifCODJEyslKZMQnXC9qdTtSFVnJJAiNPUIarqIwveM12fyuTSGrQF+jgEHcpJidiWz0hVeIyDKQyXuceOz1SgMF9PMUbYjj2E0td5CZlg9sLRK/QthK17SPeEVRK/IfHBInhnwRJf1XAZ/JJQTF8LNStFSRyS+0Gbd01hjZ1fJtkbBg3VtEDLggSnui3LTLeTGV8mDJ8gDLu0VD3VoEZxnv8mCQyPagTUYYPKH8NRUUoKqQNlck0ZUObG3vaAGIEZaRSuSR4YTvq5u9AUSZM4Zs94Rg3RZmcafhBcY8FdRLKuHyF034VmCEllI2srYGpX1Q3357wQhSYYbwyMlBGHmnsWFEiTymXB0Uu1DWUbUEIIY9SD4YXBnWSF7ajbl4DbMg+3kElPER5bkHmrM3+TxghiowbqxyfqYzLA2k/lfCSULUFIYQESX+j8l5FifDBn0zmHvIc6LGptQ0sk3EP5a+MMny8yBXX7CdawwGxpATFuKvTPO7xy6179Jc09X9F5ThWZPhIqH2DEELC3lisXEdShn9oVYmjsxxpRBkLofrVlUn6kcoJE5XJuZYWKPlAZIY7gm2HKOv7UcblU0be9QKxt6WLbHe1niL8yuS8yPDS4gque7DtKpNIqsjwR54JAJwW7Pk8RBkWvTILZ6iM768dCyKQ/2l4/d/LKg03UEZcnuGZfBtItt8bosDIpNJ98YlFrjh9Y1Ym4x5lrsS/uyvL8FzKyNbGygYpI85AZ5ml++J7eye/qUzOU0aepBXc37z84O2jCIRQhLMcaYRKbPaG566xwXcF0p5mJUg40/uXWxcOKcMiZdwLlJEnqUw2UIY3Uka2iDJhPrWYDP8kMPJEIN+rR8i3ZLG15u5FeL8gcXmt+bLMlv2xhMq4UFkb4/VjP0wZLqOMvKT0j8hwicjwMb9tk/HbZTIeFWybmtSmchQtVJLByqxGAE47KUjcrKKdifEoiAU0lfCY1oHDp0UZ76eMrBAkckvRzsT4EFaBRxRXcN0p49JFRqQg2/ejIOPHi1348pZW24VElOkHiYy7270NQ54UGX6eMvKKKJGnRIksF2TuoTLG3RaKL7ds2IC0W1h3Q1Ph09sESR+n0scpI8RK7vrapLeDSni1KJGnqIw310UskeGlAsMzKSO3dr69qgPr/wEIWo9ONIJi0AAAAABJRU5ErkJggg==)}i.material-icons{vertical-align:middle!important}i.spaced{margin-right:.5rem}.highlight{color:red}.mat-toolbar.mat-primary{background:#fafafa;color:#000}.mat-toolbar-row,.mat-toolbar-single-row{height:4rem!important}.mat-mdc-row{min-height:2.5rem}.mat-mdc-menu-panel.wide-menu{max-width:none;max-height:none}.mat-form-field-disabled{cursor:not-allowed}input:disabled{cursor:not-allowed}.toggle{display:flex;height:32px}.detail .mdc-tab-indicator--active{background-color:#ffffff1f}.card{background-color:#fafafa;border-color:#000;border-radius:6px;box-shadow:#00000024 0 1px 4px;box-sizing:border-box;color:#000;display:flex;flex-direction:column;margin:2rem 1rem 1rem}.card-header{background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;border-radius:3px;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;box-sizing:border-box;color:#fff;font-size:1.2rem;font-weight:300;margin:-1rem 1rem 0rem;padding:15px}.card-header img{width:1.2rem;vertical-align:top;margin-top:2px}.card-title>a{color:#000}.card-subtitle{font-size:.9rem;margin-left:1.4rem}.detail>.title{margin:1rem;padding:1rem;background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;border-radius:3px;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;box-sizing:border-box;color:#fff;font-size:1.2rem;font-weight:300}.detail>.title img{width:2rem;vertical-align:top;margin-top:-4px}.detail>.title a{color:#ff0}.detail>.card{margin-top:0}.mat-mdc-menu-content .mat-mdc-menu-item:hover{background-color:#d4d4d4}.mat-mdc-option{min-height:2.5rem!important}.mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:#d4d4d4}.mat-mdc-dialog-container{--mdc-dialog-supporting-text-font: $font-family;--mdc-dialog-subhead-font: $font-family;--mdc-dialog-title-font: $font-family;--mdc-dialog-button-font: $font-family;--mdc-dialog-supporting-text-size: 1rem;--mdc-dialog-subhead-size: 1.25rem;--mdc-dialog-supporting-text-weight: 400;--mdc-dialog-supporting-text-color: rgba(0, 0, 0, 1)}.dark-theme .mat-ripple-element{background-color:#ffffff1a}.dark-theme .mat-mdc-option{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-option:hover:not(.mdc-list-item--disabled),.dark-theme .mat-mdc-option:focus:not(.mdc-list-item--disabled),.dark-theme .mat-mdc-option.mat-mdc-option-active,.dark-theme .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple):not(.mdc-list-item--disabled){background:rgba(255,255,255,.08)}.dark-theme .mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mat-accent .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-warn .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-optgroup-label{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-pseudo-checkbox-full{color:#ffffffb3}.dark-theme .mat-pseudo-checkbox-full.mat-pseudo-checkbox-disabled{color:#686868}.dark-theme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.dark-theme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#3f51b5}.dark-theme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.dark-theme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#3f51b5}.dark-theme .mat-primary .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.dark-theme .mat-primary .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.dark-theme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.dark-theme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.dark-theme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.dark-theme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.dark-theme .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.dark-theme .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.dark-theme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.dark-theme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#ff4081}.dark-theme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.dark-theme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#ff4081}.dark-theme .mat-accent .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.dark-theme .mat-accent .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.dark-theme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.dark-theme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#f44336}.dark-theme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.dark-theme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#f44336}.dark-theme .mat-warn .mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full:after,.dark-theme .mat-warn .mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full:after{color:#303030}.dark-theme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-minimal:after,.dark-theme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-minimal:after{color:#686868}.dark-theme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-checked.mat-pseudo-checkbox-full,.dark-theme .mat-pseudo-checkbox-disabled.mat-pseudo-checkbox-indeterminate.mat-pseudo-checkbox-full{background:#686868}.dark-theme .mat-app-background,.dark-theme.mat-app-background{background-color:#303030;color:#fff}.dark-theme .mat-elevation-z0,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z0{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f}.dark-theme .mat-elevation-z1,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z1{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f}.dark-theme .mat-elevation-z2,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z2{box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.dark-theme .mat-elevation-z3,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z3{box-shadow:0 3px 3px -2px #0003,0 3px 4px #00000024,0 1px 8px #0000001f}.dark-theme .mat-elevation-z4,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z4{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f}.dark-theme .mat-elevation-z5,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z5{box-shadow:0 3px 5px -1px #0003,0 5px 8px #00000024,0 1px 14px #0000001f}.dark-theme .mat-elevation-z6,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z6{box-shadow:0 3px 5px -1px #0003,0 6px 10px #00000024,0 1px 18px #0000001f}.dark-theme .mat-elevation-z7,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z7{box-shadow:0 4px 5px -2px #0003,0 7px 10px 1px #00000024,0 2px 16px 1px #0000001f}.dark-theme .mat-elevation-z8,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z8{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f}.dark-theme .mat-elevation-z9,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z9{box-shadow:0 5px 6px -3px #0003,0 9px 12px 1px #00000024,0 3px 16px 2px #0000001f}.dark-theme .mat-elevation-z10,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z10{box-shadow:0 6px 6px -3px #0003,0 10px 14px 1px #00000024,0 4px 18px 3px #0000001f}.dark-theme .mat-elevation-z11,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z11{box-shadow:0 6px 7px -4px #0003,0 11px 15px 1px #00000024,0 4px 20px 3px #0000001f}.dark-theme .mat-elevation-z12,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z12{box-shadow:0 7px 8px -4px #0003,0 12px 17px 2px #00000024,0 5px 22px 4px #0000001f}.dark-theme .mat-elevation-z13,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z13{box-shadow:0 7px 8px -4px #0003,0 13px 19px 2px #00000024,0 5px 24px 4px #0000001f}.dark-theme .mat-elevation-z14,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z14{box-shadow:0 7px 9px -4px #0003,0 14px 21px 2px #00000024,0 5px 26px 4px #0000001f}.dark-theme .mat-elevation-z15,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z15{box-shadow:0 8px 9px -5px #0003,0 15px 22px 2px #00000024,0 6px 28px 5px #0000001f}.dark-theme .mat-elevation-z16,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z16{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.dark-theme .mat-elevation-z17,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z17{box-shadow:0 8px 11px -5px #0003,0 17px 26px 2px #00000024,0 6px 32px 5px #0000001f}.dark-theme .mat-elevation-z18,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z18{box-shadow:0 9px 11px -5px #0003,0 18px 28px 2px #00000024,0 7px 34px 6px #0000001f}.dark-theme .mat-elevation-z19,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z19{box-shadow:0 9px 12px -6px #0003,0 19px 29px 2px #00000024,0 7px 36px 6px #0000001f}.dark-theme .mat-elevation-z20,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z20{box-shadow:0 10px 13px -6px #0003,0 20px 31px 3px #00000024,0 8px 38px 7px #0000001f}.dark-theme .mat-elevation-z21,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z21{box-shadow:0 10px 13px -6px #0003,0 21px 33px 3px #00000024,0 8px 40px 7px #0000001f}.dark-theme .mat-elevation-z22,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z22{box-shadow:0 10px 14px -6px #0003,0 22px 35px 3px #00000024,0 8px 42px 7px #0000001f}.dark-theme .mat-elevation-z23,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z23{box-shadow:0 11px 14px -7px #0003,0 23px 36px 3px #00000024,0 9px 44px 8px #0000001f}.dark-theme .mat-elevation-z24,.dark-theme .mat-mdc-elevation-specific.mat-elevation-z24{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.mat-theme-loaded-marker{display:none}.dark-theme .mat-mdc-card{box-shadow:0 2px 1px -1px #0003,0 1px 1px #00000024,0 1px 3px #0000001f;--mdc-elevated-card-container-color: #424242}.dark-theme .mat-mdc-card-outlined{box-shadow:0 0 #0003,0 0 #00000024,0 0 #0000001f;--mdc-outlined-card-outline-color: #595959}.dark-theme .mat-mdc-card-subtitle{color:#ffffffb3}.dark-theme .mat-mdc-progress-bar{--mdc-linear-progress-active-indicator-color: #3f51b5}.dark-theme .mat-mdc-progress-bar .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(63, 81, 181, 0.25)'/%3E%3C/svg%3E")}.dark-theme .mat-mdc-progress-bar .mdc-linear-progress__buffer-bar{background-color:#3f51b540}.dark-theme .mat-mdc-progress-bar.mat-accent{--mdc-linear-progress-active-indicator-color: #ff4081}.dark-theme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(255, 64, 129, 0.25)'/%3E%3C/svg%3E")}.dark-theme .mat-mdc-progress-bar.mat-accent .mdc-linear-progress__buffer-bar{background-color:#ff408140}.dark-theme .mat-mdc-progress-bar.mat-warn{--mdc-linear-progress-active-indicator-color: #f44336}.dark-theme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-dots{background-image:url("data:image/svg+xml,%3Csvg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' x='0px' y='0px' enable-background='new 0 0 5 2' xml:space='preserve' viewBox='0 0 5 2' preserveAspectRatio='none slice'%3E%3Ccircle cx='1' cy='1' r='1' fill='rgba(244, 67, 54, 0.25)'/%3E%3C/svg%3E")}.dark-theme .mat-mdc-progress-bar.mat-warn .mdc-linear-progress__buffer-bar{background-color:#f4433640}.dark-theme .mat-mdc-tooltip{--mdc-plain-tooltip-container-color: #616161;--mdc-plain-tooltip-supporting-text-color: white}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-floating-label{color:#fff9}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input{color:#ffffffde}@media all{.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input::placeholder{color:#fff9}}@media all{.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__input:-ms-input-placeholder{color:#fff9}}.dark-theme .mdc-text-field .mdc-text-field__input{caret-color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#0009}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field-character-counter,.dark-theme .mdc-text-field:not(.mdc-text-field--disabled)+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#0009}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--leading{color:#0000008a}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:#0000008a}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--prefix{color:#0009}.dark-theme .mdc-text-field:not(.mdc-text-field--disabled) .mdc-text-field__affix--suffix{color:#0009}.dark-theme .mdc-text-field--filled .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--filled .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, rgba(255, 255, 255, .87))}.dark-theme .mdc-text-field--filled:hover .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--filled.mdc-ripple-surface--hover .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-hover-opacity, .08)}.dark-theme .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple:before{opacity:var(--mdc-ripple-focus-opacity, .24)}.dark-theme .mdc-text-field--filled:not(.mdc-text-field--disabled){background-color:#4a4a4a}.dark-theme .mdc-text-field--filled:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:#ffffff6b}.dark-theme .mdc-text-field--filled:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:#ffffffde}.dark-theme .mdc-text-field--filled .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:#ffffff61}.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:#ffffffde}.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-text-field--outlined .mdc-text-field__ripple:before,.dark-theme .mdc-text-field--outlined .mdc-text-field__ripple:after{background-color:var(--mdc-ripple-color, transparent)}.dark-theme .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#3f51b5de}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mdc-text-field--disabled .mdc-text-field__input{color:#ffffff61}@media all{.dark-theme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:#ffffff61}}@media all{.dark-theme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:#ffffff61}}.dark-theme .mdc-text-field--disabled .mdc-floating-label{color:#ffffff61}.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:#00000061}.dark-theme .mdc-text-field--disabled .mdc-text-field-character-counter,.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:#00000061}.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--leading,.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:#0000004d}.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--prefix,.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:#00000061}.dark-theme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:#ffffff0f}.dark-theme .mdc-text-field--disabled .mdc-notched-outline__leading,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__notch,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:#ffffff0f}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__input::placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__input:-ms-input-placeholder{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-floating-label{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-helper-text{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field-character-counter,.dark-theme .mdc-text-field--disabled+.mdc-text-field-helper-line .mdc-text-field-character-counter{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--leading{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__icon--trailing{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--prefix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-text-field__affix--suffix{color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-line-ripple:before{border-bottom-color:GrayText}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.dark-theme .mdc-text-field--disabled .mdc-notched-outline__leading,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__notch,.dark-theme .mdc-text-field--disabled .mdc-notched-outline__trailing{border-color:GrayText}}.dark-theme .mdc-text-field--disabled.mdc-text-field--filled{background-color:#464646}.dark-theme .mat-mdc-form-field-error{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field-focus-overlay{background-color:#ffffffde}.dark-theme .mat-mdc-form-field:hover .mat-mdc-form-field-focus-overlay{opacity:.08}.dark-theme .mat-mdc-form-field.mat-focused .mat-mdc-form-field-focus-overlay{opacity:.24}.dark-theme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option{color:#000000de}.dark-theme select.mat-mdc-form-field-input-control:not(.mat-mdc-native-select-inline) option:disabled{color:#00000061}.dark-theme .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix:after{color:#ffffff8a}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-primary .mat-mdc-form-field-infix:after{color:#3f51b5de}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-accent .mat-mdc-form-field-infix:after{color:#ff4081de}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-focused.mat-warn .mat-mdc-form-field-infix:after{color:#f44336de}.dark-theme .mat-mdc-form-field-type-mat-native-select.mat-form-field-disabled .mat-mdc-form-field-infix:after{color:#ffffff61}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field__input{caret-color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-mdc-form-field.mat-accent:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#ff4081de}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-accent .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-secondary, #ff4081)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--focused:not(.mdc-text-field--disabled) .mdc-floating-label{color:#f44336de}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):hover .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:after{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-floating-label{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid .mdc-text-field__input{caret-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-text-field__icon--trailing{color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-line-ripple:before{border-bottom-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled) .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled):not(.mdc-text-field--focused):hover .mdc-notched-outline .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--invalid:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__leading,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__notch,.dark-theme .mat-mdc-form-field.mat-warn .mdc-text-field--outlined:not(.mdc-text-field--disabled).mdc-text-field--focused .mdc-notched-outline__trailing{border-color:var(--mdc-theme-error, #f44336)}.dark-theme .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:1px solid transparent}.dark-theme [dir=rtl] .mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field.mat-mdc-form-field .mdc-notched-outline__notch{border-left:none;border-right:1px solid transparent}.dark-theme .mat-mdc-select-value{color:#ffffffde}.dark-theme .mat-mdc-select-placeholder{color:#fff9}.dark-theme .mat-mdc-select-disabled .mat-mdc-select-value{color:#ffffff61}.dark-theme .mat-mdc-select-arrow{color:#ffffff8a}.dark-theme .mat-mdc-form-field.mat-focused.mat-primary .mat-mdc-select-arrow{color:#3f51b5de}.dark-theme .mat-mdc-form-field.mat-focused.mat-accent .mat-mdc-select-arrow{color:#ff4081de}.dark-theme .mat-mdc-form-field.mat-focused.mat-warn .mat-mdc-select-arrow,.dark-theme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-invalid .mat-mdc-select-arrow{color:#f44336de}.dark-theme .mat-mdc-form-field .mat-mdc-select.mat-mdc-select-disabled .mat-mdc-select-arrow{color:#ffffff61}.dark-theme .mat-mdc-dialog-container{--mdc-dialog-container-color: #424242;--mdc-dialog-with-divider-divider-color: rgba(255, 255, 255, .12);--mdc-dialog-subhead-color: rgba(255, 255, 255, .87);--mdc-dialog-supporting-text-color: rgba(255, 255, 255, .6)}.dark-theme .mat-mdc-standard-chip{--mdc-chip-elevated-container-color: #595959;--mdc-chip-elevated-disabled-container-color: #595959;--mdc-chip-label-text-color: #fafafa;--mdc-chip-disabled-label-text-color: #fafafa;--mdc-chip-with-icon-icon-color: #fafafa;--mdc-chip-with-icon-disabled-icon-color: #fafafa;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: #fafafa;--mdc-chip-with-trailing-icon-trailing-icon-color: #fafafa;--mdc-chip-with-icon-selected-icon-color: #fafafa}.dark-theme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-selected,.dark-theme .mat-mdc-standard-chip.mat-primary.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #3f51b5;--mdc-chip-elevated-disabled-container-color: #3f51b5;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.dark-theme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-selected,.dark-theme .mat-mdc-standard-chip.mat-accent.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #ff4081;--mdc-chip-elevated-disabled-container-color: #ff4081;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.dark-theme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-selected,.dark-theme .mat-mdc-standard-chip.mat-warn.mat-mdc-chip-highlighted{--mdc-chip-elevated-container-color: #f44336;--mdc-chip-elevated-disabled-container-color: #f44336;--mdc-chip-label-text-color: white;--mdc-chip-disabled-label-text-color: white;--mdc-chip-with-icon-icon-color: white;--mdc-chip-with-icon-disabled-icon-color: white;--mdc-chip-with-trailing-icon-disabled-trailing-icon-color: white;--mdc-chip-with-trailing-icon-trailing-icon-color: white;--mdc-chip-with-icon-selected-icon-color: white}.dark-theme .mat-mdc-chip-focus-overlay{background:white}.dark-theme .mat-mdc-slide-toggle{--mdc-switch-disabled-selected-handle-color: #000;--mdc-switch-disabled-unselected-handle-color: #000;--mdc-switch-disabled-selected-track-color: #f5f5f5;--mdc-switch-disabled-unselected-track-color: #f5f5f5;--mdc-switch-unselected-focus-state-layer-color: #f5f5f5;--mdc-switch-unselected-pressed-state-layer-color: #f5f5f5;--mdc-switch-unselected-hover-state-layer-color: #f5f5f5;--mdc-switch-unselected-focus-track-color: #616161;--mdc-switch-unselected-hover-track-color: #616161;--mdc-switch-unselected-pressed-track-color: #616161;--mdc-switch-unselected-track-color: #616161;--mdc-switch-unselected-focus-handle-color: #fafafa;--mdc-switch-unselected-hover-handle-color: #fafafa;--mdc-switch-unselected-pressed-handle-color: #fafafa;--mdc-switch-handle-surface-color: var(--mdc-theme-surface, #fff);--mdc-switch-unselected-handle-color: #9e9e9e;--mdc-switch-selected-icon-color: #212121;--mdc-switch-disabled-selected-icon-color: #212121;--mdc-switch-disabled-unselected-icon-color: #212121;--mdc-switch-unselected-icon-color: #212121}.dark-theme .mat-mdc-slide-toggle .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-slide-toggle .mdc-switch--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-slide-toggle.mat-primary{--mdc-switch-selected-focus-state-layer-color: #7986cb;--mdc-switch-selected-handle-color: #7986cb;--mdc-switch-selected-hover-state-layer-color: #7986cb;--mdc-switch-selected-pressed-state-layer-color: #7986cb;--mdc-switch-selected-focus-handle-color: #9fa8da;--mdc-switch-selected-hover-handle-color: #9fa8da;--mdc-switch-selected-pressed-handle-color: #9fa8da;--mdc-switch-selected-focus-track-color: #3949ab;--mdc-switch-selected-hover-track-color: #3949ab;--mdc-switch-selected-pressed-track-color: #3949ab;--mdc-switch-selected-track-color: #3949ab}.dark-theme .mat-mdc-slide-toggle.mat-accent{--mdc-switch-selected-focus-state-layer-color: #f06292;--mdc-switch-selected-handle-color: #f06292;--mdc-switch-selected-hover-state-layer-color: #f06292;--mdc-switch-selected-pressed-state-layer-color: #f06292;--mdc-switch-selected-focus-handle-color: #f48fb1;--mdc-switch-selected-hover-handle-color: #f48fb1;--mdc-switch-selected-pressed-handle-color: #f48fb1;--mdc-switch-selected-focus-track-color: #d81b60;--mdc-switch-selected-hover-track-color: #d81b60;--mdc-switch-selected-pressed-track-color: #d81b60;--mdc-switch-selected-track-color: #d81b60}.dark-theme .mat-mdc-slide-toggle.mat-warn{--mdc-switch-selected-focus-state-layer-color: #e57373;--mdc-switch-selected-handle-color: #e57373;--mdc-switch-selected-hover-state-layer-color: #e57373;--mdc-switch-selected-pressed-state-layer-color: #e57373;--mdc-switch-selected-focus-handle-color: #ef9a9a;--mdc-switch-selected-hover-handle-color: #ef9a9a;--mdc-switch-selected-pressed-handle-color: #ef9a9a;--mdc-switch-selected-focus-track-color: #e53935;--mdc-switch-selected-hover-track-color: #e53935;--mdc-switch-selected-pressed-track-color: #e53935;--mdc-switch-selected-track-color: #e53935}.dark-theme .mat-mdc-radio-button .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-radio-button.mat-primary{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #3f51b5}.dark-theme .mat-mdc-radio-button.mat-primary .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-radio-button.mat-accent{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #ff4081}.dark-theme .mat-mdc-radio-button.mat-accent .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-radio-button.mat-warn{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #f44336}.dark-theme .mat-mdc-radio-button.mat-warn .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-slider{--mdc-slider-label-container-color: white;--mdc-slider-label-label-text-color: black;--mdc-slider-disabled-handle-color: #fff;--mdc-slider-disabled-active-track-color: #fff;--mdc-slider-disabled-inactive-track-color: #fff;--mdc-slider-with-tick-marks-disabled-container-color: #fff;--mat-mdc-slider-value-indicator-opacity: .9}.dark-theme .mat-mdc-slider.mat-primary{--mdc-slider-handle-color: #3f51b5;--mdc-slider-focus-handle-color: #3f51b5;--mdc-slider-hover-handle-color: #3f51b5;--mdc-slider-active-track-color: #3f51b5;--mdc-slider-inactive-track-color: #3f51b5;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #3f51b5;--mat-mdc-slider-ripple-color: #3f51b5;--mat-mdc-slider-hover-ripple-color: rgba(63, 81, 181, .05);--mat-mdc-slider-focus-ripple-color: rgba(63, 81, 181, .2)}.dark-theme .mat-mdc-slider.mat-accent{--mdc-slider-handle-color: #ff4081;--mdc-slider-focus-handle-color: #ff4081;--mdc-slider-hover-handle-color: #ff4081;--mdc-slider-active-track-color: #ff4081;--mdc-slider-inactive-track-color: #ff4081;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #ff4081;--mat-mdc-slider-ripple-color: #ff4081;--mat-mdc-slider-hover-ripple-color: rgba(255, 64, 129, .05);--mat-mdc-slider-focus-ripple-color: rgba(255, 64, 129, .2)}.dark-theme .mat-mdc-slider.mat-warn{--mdc-slider-handle-color: #f44336;--mdc-slider-focus-handle-color: #f44336;--mdc-slider-hover-handle-color: #f44336;--mdc-slider-active-track-color: #f44336;--mdc-slider-inactive-track-color: #f44336;--mdc-slider-with-tick-marks-active-container-color: #fff;--mdc-slider-with-tick-marks-inactive-container-color: #f44336;--mat-mdc-slider-ripple-color: #f44336;--mat-mdc-slider-hover-ripple-color: rgba(244, 67, 54, .05);--mat-mdc-slider-focus-ripple-color: rgba(244, 67, 54, .2)}.dark-theme .mdc-menu-surface{box-shadow:0 5px 5px -3px #0003,0 8px 10px 1px #00000024,0 3px 14px 2px #0000001f;background-color:var(--mdc-theme-surface, #424242);color:var(--mdc-theme-on-surface, #fff)}.dark-theme .mdc-list-item__primary-text{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mdc-list-item__secondary-text{color:var(--mdc-theme-text-secondary-on-background, rgba(255, 255, 255, .7))}.dark-theme .mdc-list-item__overline-text{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.dark-theme .mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--with-trailing-icon .mdc-list-item__end{background-color:transparent}.dark-theme .mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--with-trailing-icon .mdc-list-item__end{color:var(--mdc-theme-text-icon-on-background, rgba(255, 255, 255, .5))}.dark-theme .mdc-list-item__end{color:var(--mdc-theme-text-hint-on-background, rgba(255, 255, 255, .5))}.dark-theme .mdc-list-item--disabled .mdc-list-item__start,.dark-theme .mdc-list-item--disabled .mdc-list-item__content,.dark-theme .mdc-list-item--disabled .mdc-list-item__end{opacity:.38}.dark-theme .mdc-list-item--disabled .mdc-list-item__primary-text,.dark-theme .mdc-list-item--disabled .mdc-list-item__secondary-text,.dark-theme .mdc-list-item--disabled .mdc-list-item__overline-text,.dark-theme .mdc-list-item--disabled.mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--disabled.mdc-list-item--with-trailing-icon .mdc-list-item__end,.dark-theme .mdc-list-item--disabled.mdc-list-item--with-trailing-meta .mdc-list-item__end{color:var(--mdc-theme-on-surface, #fff)}.dark-theme .mdc-list-item--selected .mdc-list-item__primary-text,.dark-theme .mdc-list-item--activated .mdc-list-item__primary-text,.dark-theme .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:var(--mdc-theme-primary, #3f51b5)}.dark-theme .mdc-deprecated-list-group__subheader{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mdc-list-divider:after{border-bottom-color:#fff}.dark-theme .mdc-list-divider{background-color:#fff3}.dark-theme .mat-mdc-menu-item[disabled],.dark-theme .mat-mdc-menu-item[disabled] .mat-mdc-menu-submenu-icon,.dark-theme .mat-mdc-menu-item[disabled] .mat-icon-no-color{color:var(--mdc-theme-text-disabled-on-background, rgba(255, 255, 255, .5))}.dark-theme .mat-mdc-menu-item .mat-icon-no-color,.dark-theme .mat-mdc-menu-submenu-icon{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-menu-item:hover:not([disabled]),.dark-theme .mat-mdc-menu-item.cdk-program-focused:not([disabled]),.dark-theme .mat-mdc-menu-item.cdk-keyboard-focused:not([disabled]),.dark-theme .mat-mdc-menu-item-highlighted:not([disabled]){background:rgba(255,255,255,.08)}.dark-theme .mat-mdc-list-base{--mdc-list-list-item-label-text-color: white;--mdc-list-list-item-supporting-text-color: rgba(255, 255, 255, .7);--mdc-list-list-item-leading-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-trailing-supporting-text-color: rgba(255, 255, 255, .5);--mdc-list-list-item-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-selected-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-disabled-label-text-color: white;--mdc-list-list-item-disabled-leading-icon-color: white;--mdc-list-list-item-disabled-trailing-icon-color: white;--mdc-list-list-item-hover-label-text-color: white;--mdc-list-list-item-hover-leading-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-hover-trailing-icon-color: rgba(255, 255, 255, .5);--mdc-list-list-item-focus-label-text-color: white;--mdc-list-list-item-hover-state-layer-color: white;--mdc-list-list-item-hover-state-layer-opacity: .08;--mdc-list-list-item-focus-state-layer-color: white;--mdc-list-list-item-focus-state-layer-opacity: .24}.dark-theme .mat-mdc-list-option .mdc-list-item__start,.dark-theme .mat-mdc-list-option .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-list-option .mdc-list-item__start,.dark-theme .mat-mdc-list-option .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #3f51b5;--mdc-radio-selected-hover-icon-color: #3f51b5;--mdc-radio-selected-icon-color: #3f51b5;--mdc-radio-selected-pressed-icon-color: #3f51b5;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #3f51b5}.dark-theme .mat-mdc-list-option .mdc-list-item__start .mdc-radio--disabled+label,.dark-theme .mat-mdc-list-option .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #ff4081;--mdc-radio-selected-hover-icon-color: #ff4081;--mdc-radio-selected-icon-color: #ff4081;--mdc-radio-selected-pressed-icon-color: #ff4081;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #ff4081}.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__start .mdc-radio--disabled+label,.dark-theme .mat-mdc-list-option.mat-accent .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__start,.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__end{--mdc-radio-disabled-selected-icon-color: #fff;--mdc-radio-disabled-unselected-icon-color: #fff;--mdc-radio-unselected-focus-icon-color: #eeeeee;--mdc-radio-unselected-hover-icon-color: #eeeeee;--mdc-radio-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-radio-unselected-pressed-icon-color: rgba(255, 255, 255, .54);--mdc-radio-selected-focus-icon-color: #f44336;--mdc-radio-selected-hover-icon-color: #f44336;--mdc-radio-selected-icon-color: #f44336;--mdc-radio-selected-pressed-icon-color: #f44336;--mat-mdc-radio-ripple-color: #fff;--mat-mdc-radio-checked-ripple-color: #f44336}.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__start .mdc-radio--disabled+label,.dark-theme .mat-mdc-list-option.mat-warn .mdc-list-item__end .mdc-radio--disabled+label{color:#ffffff80}.dark-theme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected .mdc-list-item__primary-text,.dark-theme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated .mdc-list-item__primary-text,.dark-theme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--selected.mdc-list-item--with-leading-icon .mdc-list-item__start,.dark-theme .mat-mdc-list-base.mat-mdc-list-base .mdc-list-item--activated.mdc-list-item--with-leading-icon .mdc-list-item__start{color:#3f51b5}.dark-theme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__start,.dark-theme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__content,.dark-theme .mat-mdc-list-base .mdc-list-item--disabled .mdc-list-item__end{opacity:1}.dark-theme .mat-mdc-paginator{background:#424242;color:#ffffffde}.dark-theme .mat-mdc-paginator-icon{fill:#ffffff8a}.dark-theme .mat-mdc-paginator-decrement,.dark-theme .mat-mdc-paginator-increment{border-top:2px solid rgba(255,255,255,.54);border-right:2px solid rgba(255,255,255,.54)}.dark-theme .mat-mdc-paginator-first,.dark-theme .mat-mdc-paginator-last{border-top:2px solid rgba(255,255,255,.54)}.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-decrement,.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-increment,.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-first,.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-last{border-color:#ffffff1f}.dark-theme .mat-mdc-icon-button[disabled] .mat-mdc-paginator-icon{fill:#ffffff1f}.dark-theme .mat-mdc-tab,.dark-theme .mat-mdc-tab-link{background-color:transparent}.dark-theme .mat-mdc-tab .mdc-tab__text-label,.dark-theme .mat-mdc-tab-link .mdc-tab__text-label{color:#fff9}.dark-theme .mat-mdc-tab.mat-mdc-tab-disabled .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab.mat-mdc-tab-disabled .mat-ripple-element,.dark-theme .mat-mdc-tab-link.mat-mdc-tab-disabled .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-link.mat-mdc-tab-disabled .mat-ripple-element{background-color:#ffffff80}.dark-theme .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#3f51b5}.dark-theme .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #3f51b5)}.dark-theme .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-link .mat-ripple-element{background-color:#3f51b5}.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#ff4081}.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #ff4081)}.dark-theme .mat-mdc-tab-group.mat-accent .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-accent .mat-mdc-tab-link .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-accent .mat-mdc-tab-link .mat-ripple-element{background-color:#ff4081}.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled).mdc-tab--active .mdc-tab__text-label{color:#f44336}.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link:not(.mat-mdc-tab-disabled) .mdc-tab-indicator__content--underline{border-color:var(--mdc-tab-indicator-active-indicator-color, #f44336)}.dark-theme .mat-mdc-tab-group.mat-warn .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-group.mat-warn .mat-mdc-tab-link .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mdc-tab__ripple:before,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-header-pagination .mat-ripple-element,.dark-theme .mat-mdc-tab-nav-bar.mat-warn .mat-mdc-tab-link .mat-ripple-element{background-color:#f44336}.dark-theme .mat-mdc-tab-group.mat-background-primary,.dark-theme .mat-mdc-tab-nav-bar.mat-background-primary{--mat-mdc-tab-header-with-background-background-color: #3f51b5;--mat-mdc-tab-header-with-background-foreground-color: #fff}.dark-theme .mat-mdc-tab-group.mat-background-accent,.dark-theme .mat-mdc-tab-nav-bar.mat-background-accent{--mat-mdc-tab-header-with-background-background-color: #ff4081;--mat-mdc-tab-header-with-background-foreground-color: #fff}.dark-theme .mat-mdc-tab-group.mat-background-warn,.dark-theme .mat-mdc-tab-nav-bar.mat-background-warn{--mat-mdc-tab-header-with-background-background-color: #f44336;--mat-mdc-tab-header-with-background-foreground-color: #fff}.dark-theme .mat-mdc-tab-header-pagination-chevron{border-color:var(--mdc-theme-on-surface, #fff)}.dark-theme .mat-mdc-checkbox .mdc-form-field{color:var(--mdc-theme-text-primary-on-background, white)}.dark-theme .mat-mdc-checkbox .mat-ripple-element{background-color:#ffffff1a}.dark-theme .mat-mdc-checkbox .mdc-checkbox__ripple{background:#fff}.dark-theme .mat-mdc-checkbox.mat-primary{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #3f51b5;--mdc-checkbox-selected-hover-icon-color: #3f51b5;--mdc-checkbox-selected-icon-color: #3f51b5;--mdc-checkbox-selected-pressed-icon-color: #3f51b5;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#3f51b51a}.dark-theme .mat-mdc-checkbox.mat-primary .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#3f51b5}.dark-theme .mat-mdc-checkbox.mat-accent{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #ff4081;--mdc-checkbox-selected-hover-icon-color: #ff4081;--mdc-checkbox-selected-icon-color: #ff4081;--mdc-checkbox-selected-pressed-icon-color: #ff4081;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#ff40811a}.dark-theme .mat-mdc-checkbox.mat-accent .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#ff4081}.dark-theme .mat-mdc-checkbox.mat-warn{--mdc-checkbox-selected-checkmark-color: #fff;--mdc-checkbox-selected-focus-icon-color: #f44336;--mdc-checkbox-selected-hover-icon-color: #f44336;--mdc-checkbox-selected-icon-color: #f44336;--mdc-checkbox-selected-pressed-icon-color: #f44336;--mdc-checkbox-unselected-focus-icon-color: #eeeeee;--mdc-checkbox-unselected-hover-icon-color: #eeeeee;--mdc-checkbox-disabled-selected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-disabled-unselected-icon-color: rgba(255, 255, 255, .38);--mdc-checkbox-unselected-icon-color: rgba(255, 255, 255, .54);--mdc-checkbox-unselected-pressed-icon-color: rgba(255, 255, 255, .54)}.dark-theme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mat-mdc-checkbox-ripple .mat-ripple-element{background-color:#f443361a}.dark-theme .mat-mdc-checkbox.mat-warn .mdc-checkbox--selected~.mdc-checkbox__ripple{background:#f44336}.dark-theme .mat-mdc-checkbox-disabled label{color:#ffffff80}.dark-theme .mat-mdc-button.mat-unthemed{--mdc-text-button-label-text-color: #fff}.dark-theme .mat-mdc-button.mat-primary{--mdc-text-button-label-text-color: #3f51b5}.dark-theme .mat-mdc-button.mat-accent{--mdc-text-button-label-text-color: #ff4081}.dark-theme .mat-mdc-button.mat-warn{--mdc-text-button-label-text-color: #f44336}.dark-theme .mat-mdc-button[disabled][disabled]{--mdc-text-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-text-button-label-text-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-unelevated-button.mat-unthemed{--mdc-filled-button-container-color: #424242;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button.mat-primary{--mdc-filled-button-container-color: #3f51b5;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button.mat-accent{--mdc-filled-button-container-color: #ff4081;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button.mat-warn{--mdc-filled-button-container-color: #f44336;--mdc-filled-button-label-text-color: #fff}.dark-theme .mat-mdc-unelevated-button[disabled][disabled]{--mdc-filled-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-filled-button-container-color: rgba(255, 255, 255, .12);--mdc-filled-button-label-text-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-raised-button.mat-unthemed{--mdc-protected-button-container-color: #424242;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button.mat-primary{--mdc-protected-button-container-color: #3f51b5;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button.mat-accent{--mdc-protected-button-container-color: #ff4081;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button.mat-warn{--mdc-protected-button-container-color: #f44336;--mdc-protected-button-label-text-color: #fff}.dark-theme .mat-mdc-raised-button[disabled][disabled]{--mdc-protected-button-disabled-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-color: rgba(255, 255, 255, .12);--mdc-protected-button-label-text-color: rgba(255, 255, 255, .5);--mdc-protected-button-container-elevation: 0}.dark-theme .mat-mdc-outlined-button{--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12)}.dark-theme .mat-mdc-outlined-button.mat-unthemed{--mdc-outlined-button-label-text-color: #fff}.dark-theme .mat-mdc-outlined-button.mat-primary{--mdc-outlined-button-label-text-color: #3f51b5}.dark-theme .mat-mdc-outlined-button.mat-accent{--mdc-outlined-button-label-text-color: #ff4081}.dark-theme .mat-mdc-outlined-button.mat-warn{--mdc-outlined-button-label-text-color: #f44336}.dark-theme .mat-mdc-outlined-button[disabled][disabled]{--mdc-outlined-button-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-disabled-label-text-color: rgba(255, 255, 255, .5);--mdc-outlined-button-outline-color: rgba(255, 255, 255, .12);--mdc-outlined-button-disabled-outline-color: rgba(255, 255, 255, .12)}.dark-theme .mat-mdc-button,.dark-theme .mat-mdc-outlined-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-button:hover .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-button:active .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-outlined-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-button.mat-primary,.dark-theme .mat-mdc-outlined-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.dark-theme .mat-mdc-button.mat-accent,.dark-theme .mat-mdc-outlined-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.dark-theme .mat-mdc-button.mat-warn,.dark-theme .mat-mdc-outlined-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.dark-theme .mat-mdc-raised-button,.dark-theme .mat-mdc-unelevated-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-raised-button:hover .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-raised-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-raised-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-raised-button:active .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-unelevated-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-raised-button.mat-primary,.dark-theme .mat-mdc-unelevated-button.mat-primary,.dark-theme .mat-mdc-raised-button.mat-accent,.dark-theme .mat-mdc-unelevated-button.mat-accent,.dark-theme .mat-mdc-raised-button.mat-warn,.dark-theme .mat-mdc-unelevated-button.mat-warn,.dark-theme .mat-mdc-icon-button{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-icon-button:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-icon-button.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-icon-button.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-icon-button:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-icon-button.mat-primary{--mat-mdc-button-persistent-ripple-color: #3f51b5;--mat-mdc-button-ripple-color: rgba(63, 81, 181, .1)}.dark-theme .mat-mdc-icon-button.mat-accent{--mat-mdc-button-persistent-ripple-color: #ff4081;--mat-mdc-button-ripple-color: rgba(255, 64, 129, .1)}.dark-theme .mat-mdc-icon-button.mat-warn{--mat-mdc-button-persistent-ripple-color: #f44336;--mat-mdc-button-ripple-color: rgba(244, 67, 54, .1)}.dark-theme .mat-mdc-icon-button.mat-primary{--mdc-icon-button-icon-color: #3f51b5}.dark-theme .mat-mdc-icon-button.mat-accent{--mdc-icon-button-icon-color: #ff4081}.dark-theme .mat-mdc-icon-button.mat-warn{--mdc-icon-button-icon-color: #f44336}.dark-theme .mat-mdc-icon-button[disabled][disabled]{--mdc-icon-button-icon-color: rgba(255, 255, 255, .5);--mdc-icon-button-disabled-icon-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-fab,.dark-theme .mat-mdc-mini-fab{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-fab:hover .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab:hover .mat-mdc-button-persistent-ripple:before{opacity:.08}.dark-theme .mat-mdc-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab.cdk-program-focused .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab.cdk-keyboard-focused .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-fab:active .mat-mdc-button-persistent-ripple:before,.dark-theme .mat-mdc-mini-fab:active .mat-mdc-button-persistent-ripple:before{opacity:.24}.dark-theme .mat-mdc-fab.mat-primary,.dark-theme .mat-mdc-mini-fab.mat-primary,.dark-theme .mat-mdc-fab.mat-accent,.dark-theme .mat-mdc-mini-fab.mat-accent,.dark-theme .mat-mdc-fab.mat-warn,.dark-theme .mat-mdc-mini-fab.mat-warn{--mat-mdc-button-persistent-ripple-color: #fff;--mat-mdc-button-ripple-color: rgba(255, 255, 255, .1)}.dark-theme .mat-mdc-fab.mat-unthemed,.dark-theme .mat-mdc-mini-fab.mat-unthemed{--mdc-fab-container-color: #424242;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab.mat-primary,.dark-theme .mat-mdc-mini-fab.mat-primary{--mdc-fab-container-color: #3f51b5;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab.mat-accent,.dark-theme .mat-mdc-mini-fab.mat-accent{--mdc-fab-container-color: #ff4081;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab.mat-warn,.dark-theme .mat-mdc-mini-fab.mat-warn{--mdc-fab-container-color: #f44336;--mdc-fab-icon-color: #fff;--mat-mdc-fab-color: #fff}.dark-theme .mat-mdc-fab[disabled][disabled],.dark-theme .mat-mdc-mini-fab[disabled][disabled]{--mdc-fab-container-color: rgba(255, 255, 255, .12);--mdc-fab-icon-color: rgba(255, 255, 255, .5);--mat-mdc-fab-color: rgba(255, 255, 255, .5)}.dark-theme .mat-mdc-snack-bar-container{--mat-mdc-snack-bar-button-color: rgba(0, 0, 0, .87);--mdc-snackbar-container-color: #d9d9d9;--mdc-snackbar-supporting-text-color: rgba(66, 66, 66, .87)}.dark-theme .mdc-data-table{background-color:var(--mdc-theme-surface, #424242);border-color:#ffffff1f}.dark-theme .mdc-data-table__row{background-color:inherit}.dark-theme .mdc-data-table__header-cell{background-color:var(--mdc-theme-surface, #424242)}.dark-theme .mdc-data-table__row--selected{background-color:#3f51b50a}.dark-theme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__leading,.dark-theme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__notch,.dark-theme .mdc-data-table__pagination-rows-per-page-select--outlined:not(.mdc-select--disabled) .mdc-notched-outline__trailing{border-color:#ffffff1f}.dark-theme .mdc-data-table__cell,.dark-theme .mdc-data-table__header-cell{border-bottom-color:#ffffff1f}.dark-theme .mdc-data-table__pagination{border-top-color:#ffffff1f}.dark-theme .mdc-data-table__row:not(.mdc-data-table__row--selected):hover{background-color:#ffffff0a}.dark-theme .mdc-data-table__header-cell,.dark-theme .mdc-data-table__pagination-total,.dark-theme .mdc-data-table__pagination-rows-per-page-label,.dark-theme .mdc-data-table__cell{color:#ffffffde}.dark-theme .mat-mdc-table{background:#424242}.dark-theme .mat-mdc-progress-spinner{--mdc-circular-progress-active-indicator-color: #3f51b5}.dark-theme .mat-mdc-progress-spinner.mat-accent{--mdc-circular-progress-active-indicator-color: #ff4081}.dark-theme .mat-mdc-progress-spinner.mat-warn{--mdc-circular-progress-active-indicator-color: #f44336}.dark-theme .mat-badge-content{color:#fff;background:#3f51b5}.cdk-high-contrast-active .dark-theme .mat-badge-content{outline:solid 1px;border-radius:0}.dark-theme .mat-badge-accent .mat-badge-content{background:#ff4081;color:#fff}.dark-theme .mat-badge-warn .mat-badge-content{color:#fff;background:#f44336}.dark-theme .mat-badge-disabled .mat-badge-content{background:#6e6e6e;color:#ffffff80}.dark-theme .mat-bottom-sheet-container{box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f;background:#424242;color:#fff}.dark-theme .mat-button-toggle-standalone:not([class*=mat-elevation-z]),.dark-theme .mat-button-toggle-group:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.dark-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard:not([class*=mat-elevation-z]),.dark-theme .mat-button-toggle-group-appearance-standard:not([class*=mat-elevation-z]){box-shadow:none}.dark-theme .mat-button-toggle{color:#ffffff80}.dark-theme .mat-button-toggle .mat-button-toggle-focus-overlay{background-color:#ffffff1f}.dark-theme .mat-button-toggle-appearance-standard{color:#fff;background:#424242}.dark-theme .mat-button-toggle-appearance-standard .mat-button-toggle-focus-overlay{background-color:#fff}.dark-theme .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:solid 1px #595959}.dark-theme [dir=rtl] .mat-button-toggle-group-appearance-standard .mat-button-toggle+.mat-button-toggle{border-left:none;border-right:solid 1px #595959}.dark-theme .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 #595959}.dark-theme .mat-button-toggle-checked{background-color:#212121;color:#ffffffb3}.dark-theme .mat-button-toggle-checked.mat-button-toggle-appearance-standard{color:#fff}.dark-theme .mat-button-toggle-disabled{color:#ffffff4d;background-color:#000}.dark-theme .mat-button-toggle-disabled.mat-button-toggle-appearance-standard{background:#424242}.dark-theme .mat-button-toggle-disabled.mat-button-toggle-checked{background-color:#424242}.dark-theme .mat-button-toggle-standalone.mat-button-toggle-appearance-standard,.dark-theme .mat-button-toggle-group-appearance-standard{border:solid 1px #595959}.dark-theme .mat-calendar-arrow{fill:#fff}.dark-theme .mat-datepicker-toggle,.dark-theme .mat-datepicker-content .mat-calendar-next-button,.dark-theme .mat-datepicker-content .mat-calendar-previous-button{color:#fff}.dark-theme .mat-calendar-table-header-divider:after{background:rgba(255,255,255,.12)}.dark-theme .mat-calendar-table-header,.dark-theme .mat-calendar-body-label{color:#ffffffb3}.dark-theme .mat-calendar-body-cell-content,.dark-theme .mat-date-range-input-separator{color:#fff;border-color:transparent}.dark-theme .mat-calendar-body-disabled>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){color:#ffffff80}.dark-theme .mat-form-field-disabled .mat-date-range-input-separator{color:#ffffff80}.dark-theme .mat-calendar-body-in-preview{color:#ffffff3d}.dark-theme .mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff80}.dark-theme .mat-calendar-body-disabled>.mat-calendar-body-today:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){border-color:#ffffff4d}.dark-theme .mat-calendar-body-in-range:before{background:rgba(63,81,181,.2)}.dark-theme .mat-calendar-body-comparison-identical,.dark-theme .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.dark-theme .mat-calendar-body-comparison-bridge-start:before,.dark-theme [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-calendar-body-comparison-bridge-end:before,.dark-theme [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(63,81,181,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.dark-theme .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.dark-theme .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.dark-theme .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.dark-theme .mat-calendar-body-selected{background-color:#3f51b5;color:#fff}.dark-theme .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#3f51b566}.dark-theme .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.dark-theme .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.dark-theme .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}@media (hover: hover){.dark-theme .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#3f51b54d}}.dark-theme .mat-datepicker-content{box-shadow:0 2px 4px -1px #0003,0 4px 5px #00000024,0 1px 10px #0000001f;background-color:#424242;color:#fff}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range:before{background:rgba(255,64,129,.2)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-start:before,.dark-theme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-bridge-end:before,.dark-theme .mat-datepicker-content.mat-accent [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(255,64,129,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-selected{background-color:#ff4081;color:#fff}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#ff408166}.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.dark-theme .mat-datepicker-content.mat-accent .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.dark-theme .mat-datepicker-content.mat-accent .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}@media (hover: hover){.dark-theme .mat-datepicker-content.mat-accent .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#ff40814d}}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range:before{background:rgba(244,67,54,.2)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range:before{background:rgba(249,171,0,.2)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-start:before,.dark-theme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-end:before{background:linear-gradient(to right,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-bridge-end:before,.dark-theme .mat-datepicker-content.mat-warn [dir=rtl] .mat-calendar-body-comparison-bridge-start:before{background:linear-gradient(to left,rgba(244,67,54,.2) 50%,rgba(249,171,0,.2) 50%)}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-range>.mat-calendar-body-comparison-identical,.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range.mat-calendar-body-in-range:after{background:#a8dab5}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-comparison-identical.mat-calendar-body-selected,.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-in-comparison-range>.mat-calendar-body-selected{background:#46a35e}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-selected{background-color:#f44336;color:#fff}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-disabled>.mat-calendar-body-selected{background-color:#f4433666}.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-today.mat-calendar-body-selected{box-shadow:inset 0 0 0 1px #fff}.dark-theme .mat-datepicker-content.mat-warn .cdk-keyboard-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical),.dark-theme .mat-datepicker-content.mat-warn .cdk-program-focused .mat-calendar-body-active>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}@media (hover: hover){.dark-theme .mat-datepicker-content.mat-warn .mat-calendar-body-cell:not(.mat-calendar-body-disabled):hover>.mat-calendar-body-cell-content:not(.mat-calendar-body-selected):not(.mat-calendar-body-comparison-identical){background-color:#f443364d}}.dark-theme .mat-datepicker-content-touch{box-shadow:0 11px 15px -7px #0003,0 24px 38px 3px #00000024,0 9px 46px 8px #0000001f}.dark-theme .mat-datepicker-toggle-active{color:#3f51b5}.dark-theme .mat-datepicker-toggle-active.mat-accent{color:#ff4081}.dark-theme .mat-datepicker-toggle-active.mat-warn{color:#f44336}.dark-theme .mat-date-range-input-inner[disabled]{color:#ffffff80}.dark-theme .mat-divider{border-top-color:#ffffff1f}.dark-theme .mat-divider-vertical{border-right-color:#ffffff1f}.dark-theme .mat-expansion-panel{background:#424242;color:#fff}.dark-theme .mat-expansion-panel:not([class*=mat-elevation-z]){box-shadow:0 3px 1px -2px #0003,0 2px 2px #00000024,0 1px 5px #0000001f}.dark-theme .mat-action-row{border-top-color:#ffffff1f}.dark-theme .mat-expansion-panel .mat-expansion-panel-header.cdk-keyboard-focused:not([aria-disabled=true]),.dark-theme .mat-expansion-panel .mat-expansion-panel-header.cdk-program-focused:not([aria-disabled=true]),.dark-theme .mat-expansion-panel:not(.mat-expanded) .mat-expansion-panel-header:hover:not([aria-disabled=true]){background:rgba(255,255,255,.04)}@media (hover: none){.dark-theme .mat-expansion-panel:not(.mat-expanded):not([aria-disabled=true]) .mat-expansion-panel-header:hover{background:#424242}}.dark-theme .mat-expansion-panel-header-title{color:#fff}.dark-theme .mat-expansion-panel-header-description,.dark-theme .mat-expansion-indicator:after{color:#ffffffb3}.dark-theme .mat-expansion-panel-header[aria-disabled=true]{color:#ffffff4d}.dark-theme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-title,.dark-theme .mat-expansion-panel-header[aria-disabled=true] .mat-expansion-panel-header-description{color:inherit}.dark-theme .mat-icon.mat-primary{color:#3f51b5}.dark-theme .mat-icon.mat-accent{color:#ff4081}.dark-theme .mat-icon.mat-warn{color:#f44336}.dark-theme .mat-drawer-container{background-color:#303030;color:#fff}.dark-theme .mat-drawer{background-color:#424242;color:#fff}.dark-theme .mat-drawer.mat-drawer-push{background-color:#424242}.dark-theme .mat-drawer:not(.mat-drawer-side){box-shadow:0 8px 10px -5px #0003,0 16px 24px 2px #00000024,0 6px 30px 5px #0000001f}.dark-theme .mat-drawer-side{border-right:solid 1px rgba(255,255,255,.12)}.dark-theme .mat-drawer-side.mat-drawer-end,.dark-theme [dir=rtl] .mat-drawer-side{border-left:solid 1px rgba(255,255,255,.12);border-right:none}.dark-theme [dir=rtl] .mat-drawer-side.mat-drawer-end{border-left:none;border-right:solid 1px rgba(255,255,255,.12)}.dark-theme .mat-drawer-backdrop.mat-drawer-shown{background-color:#bdbdbd99}.dark-theme .mat-step-header.cdk-keyboard-focused,.dark-theme .mat-step-header.cdk-program-focused,.dark-theme .mat-step-header:hover:not([aria-disabled]),.dark-theme .mat-step-header:hover[aria-disabled=false]{background-color:#ffffff0a}.dark-theme .mat-step-header:hover[aria-disabled=true]{cursor:default}@media (hover: none){.dark-theme .mat-step-header:hover{background:none}}.dark-theme .mat-step-header .mat-step-label,.dark-theme .mat-step-header .mat-step-optional{color:#ffffffb3}.dark-theme .mat-step-header .mat-step-icon{background-color:#ffffffb3;color:#fff}.dark-theme .mat-step-header .mat-step-icon-selected,.dark-theme .mat-step-header .mat-step-icon-state-done,.dark-theme .mat-step-header .mat-step-icon-state-edit{background-color:#3f51b5;color:#fff}.dark-theme .mat-step-header.mat-accent .mat-step-icon{color:#fff}.dark-theme .mat-step-header.mat-accent .mat-step-icon-selected,.dark-theme .mat-step-header.mat-accent .mat-step-icon-state-done,.dark-theme .mat-step-header.mat-accent .mat-step-icon-state-edit{background-color:#ff4081;color:#fff}.dark-theme .mat-step-header.mat-warn .mat-step-icon{color:#fff}.dark-theme .mat-step-header.mat-warn .mat-step-icon-selected,.dark-theme .mat-step-header.mat-warn .mat-step-icon-state-done,.dark-theme .mat-step-header.mat-warn .mat-step-icon-state-edit{background-color:#f44336;color:#fff}.dark-theme .mat-step-header .mat-step-icon-state-error{background-color:transparent;color:#f44336}.dark-theme .mat-step-header .mat-step-label.mat-step-label-active{color:#fff}.dark-theme .mat-step-header .mat-step-label.mat-step-label-error{color:#f44336}.dark-theme .mat-stepper-horizontal,.dark-theme .mat-stepper-vertical{background-color:#424242}.dark-theme .mat-stepper-vertical-line:before{border-left-color:#ffffff1f}.dark-theme .mat-horizontal-stepper-header:before,.dark-theme .mat-horizontal-stepper-header:after,.dark-theme .mat-stepper-horizontal-line{border-top-color:#ffffff1f}.dark-theme .mat-sort-header-arrow{color:#c6c6c6}.dark-theme .mat-toolbar{background:#212121;color:#fff}.dark-theme .mat-toolbar.mat-primary{background:#3f51b5;color:#fff}.dark-theme .mat-toolbar.mat-accent{background:#ff4081;color:#fff}.dark-theme .mat-toolbar.mat-warn{background:#f44336;color:#fff}.dark-theme .mat-toolbar .mat-form-field-underline,.dark-theme .mat-toolbar .mat-form-field-ripple,.dark-theme .mat-toolbar .mat-focused .mat-form-field-ripple{background-color:currentColor}.dark-theme .mat-toolbar .mat-form-field-label,.dark-theme .mat-toolbar .mat-focused .mat-form-field-label,.dark-theme .mat-toolbar .mat-select-value,.dark-theme .mat-toolbar .mat-select-arrow,.dark-theme .mat-toolbar .mat-form-field.mat-focused .mat-select-arrow{color:inherit}.dark-theme .mat-toolbar .mat-input-element{caret-color:currentColor}.dark-theme .mat-tree{background:#424242}.dark-theme .mat-tree-node,.dark-theme .mat-nested-tree-node{color:#fff}.dark-theme html,.dark-theme body{background-color:#303030}.dark-theme .mat-toolbar.mat-primary{background:#303030;color:#fff}.dark-theme .card{background-color:#303030;border-color:#666;box-shadow:#ffffff24 0 1px 4px;color:#fff}.dark-theme .card-header{background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;color:#fff}.dark-theme .card-title>a{color:#fff}.dark-theme .card-subtitle{font-size:.9rem;margin-left:1.4rem}.dark-theme .detail>.title{background-image:linear-gradient(60deg,rgb(71,102,188),rgb(70,93,156));border-bottom-color:#fff;box-shadow:#00000024 0 4px 20px,#465d9c66 0 7px 10px -5px;color:#fff}.dark-theme .detail>.title a{color:#ff0}.dark-theme .mat-mdc-menu-content .mat-mdc-menu-item:hover{background-color:#565656}.dark-theme .mat-mdc-option:hover:not(.mdc-list-item--disabled){background-color:#565656}.dark-theme .mat-primary .mat-mdc-option.mdc-list-item--selected:not(.mdc-list-item--disabled) .mdc-list-item__primary-text{color:#fff} diff --git a/server/src/uds/static/admin/translations-fakejs.js b/server/src/uds/static/admin/translations-fakejs.js index 157cad270..0be7d97c3 100644 --- a/server/src/uds/static/admin/translations-fakejs.js +++ b/server/src/uds/static/admin/translations-fakejs.js @@ -46,6 +46,19 @@ gettext("dismiss"); gettext("Are you sure do you want to delete the following items?"); gettext("Deletion finished"); gettext("dismiss"); +gettext("provider"); +gettext("service"); +gettext("service pool"); +gettext("authenticator"); +gettext("MFA"); +gettext("user"); +gettext("group"); +gettext("transport"); +gettext("OS manager"); +gettext("calendar"); +gettext("pool group"); +gettext("Go to"); +gettext("Items per page"); gettext("Sunday"); gettext("Monday"); gettext("Tuesday"); @@ -66,19 +79,6 @@ gettext("October"); gettext("November"); gettext("December"); gettext("Never"); -gettext("provider"); -gettext("service"); -gettext("service pool"); -gettext("authenticator"); -gettext("MFA"); -gettext("user"); -gettext("group"); -gettext("transport"); -gettext("OS manager"); -gettext("calendar"); -gettext("pool group"); -gettext("Go to"); -gettext("Items per page"); gettext("New OS Manager"); gettext("Edit OS Manager"); gettext("Delete OS Manager"); @@ -229,12 +229,6 @@ gettext("Delete tunnel token - USE WITH EXTREME CAUTION!!!"); gettext("New Notifier"); gettext("Edit Notifier"); gettext("Delete actor token - USE WITH EXTREME CAUTION!!!"); -gettext("New Network"); -gettext("Edit Network"); -gettext("Delete Network"); -gettext("New Transport"); -gettext("Edit Transport"); -gettext("Delete Transport"); gettext("Pool"); gettext("State"); gettext("User Services"); @@ -283,6 +277,12 @@ gettext("Delete Authenticator"); gettext("New MFA"); gettext("Edit MFA"); gettext("Delete MFA"); +gettext("New Network"); +gettext("Edit Network"); +gettext("Delete Network"); +gettext("New Transport"); +gettext("Edit Transport"); +gettext("Delete Transport"); gettext("Error saving: "); gettext("Error saving element"); gettext("Error handling your request"); diff --git a/server/src/uds/static/modern/img/dario.jpeg b/server/src/uds/static/modern/img/dario.jpeg deleted file mode 100644 index 18bfbef36..000000000 Binary files a/server/src/uds/static/modern/img/dario.jpeg and /dev/null differ diff --git a/server/src/uds/static/modern/img/michael.jpeg b/server/src/uds/static/modern/img/michael.jpeg deleted file mode 100644 index 2b3fa74cf..000000000 Binary files a/server/src/uds/static/modern/img/michael.jpeg and /dev/null differ diff --git a/server/src/uds/static/modern/main.js b/server/src/uds/static/modern/main.js index 881496436..e63acb485 100644 --- a/server/src/uds/static/modern/main.js +++ b/server/src/uds/static/modern/main.js @@ -1 +1 @@ -"use strict";(self.webpackChunkuds=self.webpackChunkuds||[]).push([[179],{2870:(ze,me,b)=>{b.d(me,{S:()=>M});var c=b(5861),o=b(4215);class M{constructor(Q){this.api=Q,this.delay=Q.config.launcher_wait_time}launchURL(Q){var H=this;return(0,c.Z)(function*(){"udsa://"===Q.substring(0,7)?yield H.processUDSUrl(Q):yield H.processExternalUrl(Q)})()}showAlert(Q,H,fe){var Se=this;return(0,c.Z)(function*(){return Se.api.gui.alert(django.gettext("Launching service"),'

'+Q+'

'+H+"

",fe)})()}launchUDSUrl(Q){this.api.download(Q)}processUDSUrl(Q){var H=this;return(0,c.Z)(function*(){const fe=Q.split("//")[1].split("/");if(2!==fe.length)return void(yield H.notifyError(django.gettext("Invalid UDS URL")));const Se=fe[0],ie=fe[1],Z=yield H.showAlert(django.gettext("Please wait until the service is launched."),django.gettext("Remember that you will need the UDS client on your platform to access the service."),0);let ye=!1;(0,o.Vi)(Z.afterClosed()).then(()=>ye=!0);let se=-1;try{const Ee=yield H.api.enabler(Se,ie);if(Ee.error)throw Ee.error;if(Ee.url.startsWith("/"))return Z.close(),void(yield H.launchURL(Ee.url));for("https:"===window.location.protocol&&(Ee.url=Ee.url.replace("uds://","udss://")),H.launchUDSUrl(Ee.url);!ye;){const we=yield H.api.status(Se,ie);if(se>0&&Date.now()-se>5*H.delay&&(Z.componentInstance.data.title=django.gettext("Service ready")+" - "+django.gettext("UDS Client not launching"),Z.componentInstance.data.body=''+django.gettext("It seems that you don't have UDS Client installed. Please, install it from here:")+' '+django.gettext("UDS Client Download")+""),"ready"===we.status)-1===se&&(se=Date.now(),Z.componentInstance.data.title=django.gettext("Service ready"),Z.componentInstance.data.body=django.gettext("Launching UDS Client, almost done."));else{if("accessed"===we.status){Z.close(),ye=!0;continue}if("running"!==we.status){Z.close(),yield H.notifyError(we.status),ye=!0;continue}}yield H.api.sleep(1e3)}}catch(Ee){Z.close(),yield H.notifyError(Ee)}})()}processExternalUrl(Q){var H=this;return(0,c.Z)(function*(){const fe=yield H.showAlert(django.gettext("Please wait until the service is launched."),django.gettext("Remember that you will need the UDS client on your platform to access the service."),0);let Se=!1;(0,o.Vi)(fe.afterClosed()).then(()=>Se=!0);try{for(;!Se;){const ie=yield H.api.transportUrl(Q);if(ie.url){fe.close();const Z=yield H.processCredentials(ie);null!==Z&&(yield H.api.updateTransportTicket(Z.ticket,Z.scrambler,Z.username,Z.password,Z.domain)),H.openWindow(ie.url),Se=!0}else ie.running||(fe.close(),yield H.notifyError(),Se=!0)}yield H.api.sleep(1e3)}catch(ie){fe.close(),yield H.notifyError(ie)}})()}processCredentials(Q){var H=this;return(0,c.Z)(function*(){const fe=Q.url||"";if(-1!==fe.indexOf("&creds=")){const Se=fe.split("&creds=")[1];let ie="",Z="";Q.url=fe.split("&creds=")[0];const ye=fe.split("data=")[1].split("&")[0].split("."),se=ye[0],Ee=ye[1];-1!==Se.indexOf("@")?(ie=Se.split("@")[0],Z=Se.split("@")[1]):ie=Se;const we=yield H.api.gui.askCredentials(ie,Z);if(!1===we.success)throw new Error("User canceled credentials dialog");return{ticket:se,scrambler:Ee,username:we.username,password:we.password,domain:we.domain}}return null})()}openWindow(Q){let H="__global__";if(-1!==Q.indexOf("o_s_w="))H="__same__",Q=/(.*)&o_s_w=.*/.exec(Q)[1];else if(-1!==Q.indexOf("o_n_w=")){const fe=/(.*)&o_n_w=([a-zA-Z0-9._-]*)/.exec(Q);fe&&(H=fe[2],Q=fe[1])}if("__same__"===H)window.location.href=Q;else{M.transportsWindow[H]&&M.transportsWindow[H].close();const fe=window.open(Q,"uds_trans_"+H);fe&&(M.transportsWindow[H]=fe)}}notifyError(Q){var H=this;return(0,c.Z)(function*(){let fe=django.gettext("Error communicating with your service. Please, retry again.");"string"==typeof Q?fe=Q:Q instanceof Error?fe=Q.message:403===Q.status&&(fe=django.gettext("Your session has expired. Please, login again")),yield H.showAlert(django.gettext("Error"),fe,5e3),403===Q.status&&H.api.logout()})()}}M.transportsWindow={}},6410:(ze,me,b)=>{b.d(me,{z:()=>M});var c=b(1571),o=b(1481);class M{constructor(Q){this.sanitizer=Q}transform(Q,H){return Q=(Q=(Q=Q.replace(/<\s*script\s*/gi,"")).replace(/onclick|onmouseover|onmouseout|onmousemove|onmouseenter|onmouseleave|onmouseup|onmousedown|onkeyup|onkeydown|onkeypress|onkeydown|onkeypress|onkeyup|onchange|onfocus|onblur|onload|onunload|onabort|onerror|onresize|onscroll/gi,"")).replace(/javascript\s*\:/gi,""),this.sanitizer.bypassSecurityTrustHtml(Q)}}M.\u0275fac=function(Q){return new(Q||M)(c.Y36(o.H7,16))},M.\u0275pipe=c.Yjl({name:"safeHtml",type:M,pure:!0})},4215:(ze,me,b)=>{b.d(me,{Vi:()=>q});var c=b(4986),o=b(1165),M=b(4482),re=b(8421),Q=b(3888),H=b(5403),fe=b(9672);const Se=(0,Q.d)($=>function(ae=null){$(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=ae});function Z($){throw new Se($)}var we,ye=b(6805),se=b(930);function Ee($,ee){const ae="object"==typeof ee;return new Promise((Pe,de)=>{const be=new se.Hp({next:Fe=>{Pe(Fe),be.unsubscribe()},error:de,complete:()=>{ae?Pe(ee.defaultValue):de(new ye.K)}});$.subscribe(be)})}const q=($,ee)=>{let ae;if($ instanceof Promise)ae=$;else if($ instanceof j)ae=$;else{if(ee)return Ee($.pipe(function ie($,ee){const{first:ae,each:Pe,with:de=Z,scheduler:be=(null!=ee?ee:c.z),meta:Fe=null}=(0,o.q)($)?{first:$}:"number"==typeof $?{each:$}:$;if(null==ae&&null==Pe)throw new TypeError("No timeout provided.");return(0,M.e)((ke,Xe)=>{let $e,bt,At=null,ot=0;const st=mt=>{bt=(0,fe.f)(Xe,be,()=>{try{$e.unsubscribe(),(0,re.Xf)(de({meta:Fe,lastValue:At,seen:ot})).subscribe(Xe)}catch(ut){Xe.error(ut)}},mt)};$e=ke.subscribe((0,H.x)(Xe,mt=>{null==bt||bt.unsubscribe(),ot++,Xe.next(At=mt),Pe>0&&st(Pe)},void 0,void 0,()=>{null!=bt&&bt.closed||null==bt||bt.unsubscribe(),At=null})),!ot&&st(null!=ae?"number"==typeof ae?ae:+ae-be.now():Pe)})}(ee)));ae=Ee($)}return ae};class j{constructor(){this[we]="Future",this.resolve=()=>{},this.reject=()=>{},this.promise=new Promise((ee,ae)=>{this.resolve=ee,this.reject=ae})}then(ee,ae){return this.promise.then(ee,ae)}catch(ee){return this.promise.catch(ee)}finally(ee){return this.promise.finally(ee)}}we=Symbol.toStringTag},4029:(ze,me,b)=>{b.d(me,{P:()=>o});var c=b(1571);class o{constructor(re){this.el=re}ngOnInit(){this.el.nativeElement.innerHTML=django.gettext(this.el.nativeElement.innerHTML.trim())}}o.\u0275fac=function(re){return new(re||o)(c.Y36(c.SBq))},o.\u0275dir=c.lG2({type:o,selectors:[["uds-translate"]]})},4902:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{G:()=>LoginComponent});var _angular_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(1571),_services_uds_api_service__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(7003),_angular_common__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(6895),_angular_forms__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(433),_angular_material_button__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(4859),_angular_material_form_field__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(9549),_angular_material_input__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(4144),_angular_material_select__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(4385),_angular_material_core__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(3238),_helpers_translate_directive__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(4029),_helpers_safe_html_pipe__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(6410);function LoginComponent_div_22_mat_option_6_Template(ze,me){if(1&ze&&(_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(0,"mat-option",19),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()),2&ze){const b=me.$implicit;_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("value",b.id),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.hij(" ",b.name," ")}}function LoginComponent_div_22_Template(ze,me){if(1&ze){const b=_angular_core__WEBPACK_IMPORTED_MODULE_3__.EpF();_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(0,"div",9)(1,"mat-form-field",16)(2,"mat-label")(3,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(4,"Authenticator"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(5,"mat-select",17),_angular_core__WEBPACK_IMPORTED_MODULE_3__.NdJ("selectionChange",function(o){_angular_core__WEBPACK_IMPORTED_MODULE_3__.CHM(b);const M=_angular_core__WEBPACK_IMPORTED_MODULE_3__.oxw();return _angular_core__WEBPACK_IMPORTED_MODULE_3__.KtG(M.changeAuth(o.value))}),_angular_core__WEBPACK_IMPORTED_MODULE_3__.YNc(6,LoginComponent_div_22_mat_option_6_Template,2,2,"mat-option",18),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()()()}if(2&ze){const b=_angular_core__WEBPACK_IMPORTED_MODULE_3__.oxw();_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("value",b.auths[0].id),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("ngForOf",b.auths)}}class LoginComponent{constructor(ze){this.api=ze,this.auth={},this.title="UDS Enterprise",this.title=ze.config.site_name,this.auths=ze.config.authenticators.slice(0),this.auths.sort((me,b)=>me.priority-b.priority)}ngOnInit(){document.getElementById("loginform").action=this.api.config.urls.login;const me=document.getElementById("token");me.name=this.api.csrfField,me.value=this.api.csrfToken,this.auth=document.getElementById("authenticator"),this.auths.length>0&&(this.auth.value=this.auths[0].id,this.changeAuth(this.auth.value)),this.api.errors.length>0&&this.api.gui.alert(django.gettext("Errors found"),"
"+this.api.errors.join("
")+"
")}changeAuth(auth){this.auth.value=auth;const doCustomAuth=data=>{eval(data)};for(const ze of this.auths)ze.id===auth&&ze.is_custom&&(document.getElementsByClassName("login-form")[0].setAttribute("style","display: none;"),this.api.getAuthCustomJavascript(ze.id).then(me=>doCustomAuth(me)))}launch(){return document.getElementById("loginform").submit(),!0}}LoginComponent.\u0275fac=function ze(me){return new(me||LoginComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_3__.Y36(_services_uds_api_service__WEBPACK_IMPORTED_MODULE_0__.n))},LoginComponent.\u0275cmp=_angular_core__WEBPACK_IMPORTED_MODULE_3__.Xpm({type:LoginComponent,selectors:[["uds-login"]],decls:29,vars:6,consts:[["id","loginform","method","post",3,"ngSubmit"],["name","","id","token","value","","type","hidden"],["name","logouturl","id","id_logouturl","value","","type","hidden"],["name","authenticator","id","authenticator","value","","type","hidden"],[1,"login-container"],[1,"login-brand"],[3,"src"],[1,"login-info"],[1,"login-form"],[1,"login-field"],["matInput","","id","id_user","name","user","value","","required","","autofocus",""],["matInput","","id","id_password","type","password","name","password","data-eye","",1,"form-control"],["class","login-field",4,"ngIf"],[1,"login-button"],["mat-stroked-button","","color","primary","type","submit"],[1,"site-info",3,"innerHTML"],["appaerance","standard"],[3,"value","selectionChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function ze(me,b){1&me&&(_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(0,"form",0),_angular_core__WEBPACK_IMPORTED_MODULE_3__.NdJ("ngSubmit",function(){return b.launch()}),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(1,"input",1)(2,"input",2)(3,"input",3),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(4,"div",4)(5,"div",5),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(6,"img",6),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(7,"div",7),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(8),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(9,"div",8)(10,"div",9)(11,"mat-form-field")(12,"mat-label")(13,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(14,"Username"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(15,"input",10),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(16,"div",9)(17,"mat-form-field")(18,"mat-label")(19,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(20,"Password"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(21,"input",11),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.YNc(22,LoginComponent_div_22_Template,7,2,"div",12),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(23,"div",13)(24,"button",14)(25,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(26,"Login"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()()()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(27,"div",15),_angular_core__WEBPACK_IMPORTED_MODULE_3__.ALo(28,"safeHtml"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()()),2&me&&(_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(6),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("src",b.api.staticURL("modern/img/login-img.png"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.LSH),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_3__.hij(" ",b.title," "),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(14),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("ngIf",b.auths.length>1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("innerHTML",_angular_core__WEBPACK_IMPORTED_MODULE_3__.lcZ(28,4,b.api.config.site_information),_angular_core__WEBPACK_IMPORTED_MODULE_3__.oJD))},dependencies:[_angular_common__WEBPACK_IMPORTED_MODULE_4__.sg,_angular_common__WEBPACK_IMPORTED_MODULE_4__.O5,_angular_forms__WEBPACK_IMPORTED_MODULE_5__._Y,_angular_forms__WEBPACK_IMPORTED_MODULE_5__.JL,_angular_forms__WEBPACK_IMPORTED_MODULE_5__.F,_angular_material_button__WEBPACK_IMPORTED_MODULE_6__.lW,_angular_material_form_field__WEBPACK_IMPORTED_MODULE_7__.KE,_angular_material_form_field__WEBPACK_IMPORTED_MODULE_7__.hX,_angular_material_input__WEBPACK_IMPORTED_MODULE_8__.Nt,_angular_material_select__WEBPACK_IMPORTED_MODULE_9__.gD,_angular_material_core__WEBPACK_IMPORTED_MODULE_10__.ey,_helpers_translate_directive__WEBPACK_IMPORTED_MODULE_1__.P,_helpers_safe_html_pipe__WEBPACK_IMPORTED_MODULE_2__.z],styles:[".login-container[_ngcontent-%COMP%]{display:flex;flex-flow:column wrap;justify-content:center;align-items:center}.login-brand[_ngcontent-%COMP%]{margin:1rem 0 0}.login-info[_ngcontent-%COMP%]{margin:1rem 0}.login-form[_ngcontent-%COMP%]{margin:0 1rem 2rem 0;min-width:32em;padding:1rem;box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0000001f,0 1px 5px #0003;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 auto;justify-content:center;flex-flow:column wrap;align-items:center;display:flex}.login-field[_ngcontent-%COMP%]{width:80%;margin:.5rem}.login-button[_ngcontent-%COMP%]{margin:2rem}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}@media only screen and (max-width: 744px){.login-form[_ngcontent-%COMP%]{min-width:80%}}"]})},7003:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{n:()=>UDSApiService});var _home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(5861),_types_config__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(3513),_helpers_tools__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(4215),_helpers_plugin__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2870),_environments_environment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(2340),_angular_core__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(1571),_angular_common_http__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(529),_uds_gui_service__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(4461),_angular_router__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(8247);const DARK_THEME="dark-theme",LIGHT_THEME="light-theme",TIMEOUT=1e4;class UDSApiService{constructor(ze,me,b){this.http=ze,this.gui=me,this.router=b,this.transportsWindow=null,this.user=new _types_config__WEBPACK_IMPORTED_MODULE_4__.n(udsData.profile),this.plugin=new _helpers_plugin__WEBPACK_IMPORTED_MODULE_1__.S(this)}get config(){return udsData.config}get csrfField(){return csrf.csrfField}get csrfToken(){return csrf.csrfToken}get staffInfo(){return udsData.info}get plugins(){return udsData.plugins}get actors(){return udsData.actors}get errors(){return udsData.errors}enabler(ze,me){var b=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const c=b.config.urls.enabler.replace("param1",ze).replace("param2",me);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(b.http.get(c))})()}status(ze,me){var b=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const c=b.config.urls.status.replace("param1",ze).replace("param2",me);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(b.http.get(c))})()}action(ze,me){var b=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const c=b.config.urls.action.replace("param1",me).replace("param2",ze);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(b.http.get(c))})()}transportUrl(ze){var me=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(me.http.get(ze))})()}updateTransportTicket(ze,me,b,c,o){var M=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const re=M.config.urls.updateTransportTicket.replace("param1",ze).replace("param2",me);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(M.http.post(re,{username:b,password:c,domain:o}))})()}galleryImageURL(ze){return this.config.urls.galleryImage.replace("param1",ze)}transportIconURL(ze){return this.config.urls.transportIcon.replace("param1",ze)}staticURL(ze){return _environments_environment__WEBPACK_IMPORTED_MODULE_2__.N.production?this.config.urls.static+ze:"/static/"+ze}getServicesInformation(){var ze=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(ze.http.get(ze.config.urls.services))})()}getErrorInformation(ze){var me=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(me.http.get(me.config.urls.error.replace("9999",ze)))})()}executeCustomJSForServiceLaunch(){void 0!==udsData.customJSForServiceLaunch&&eval(udsData.customJSForServiceLaunch)}gotoAdmin(){window.location.href=this.config.urls.admin}logout(){window.location.href=this.config.urls.logout}download(ze){return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){let me=document.getElementById("download");me||(me=document.createElement("iframe"),me.id="download",me.style.display="none",document.body.appendChild(me)),me.src=ze,me.onload=()=>{alert("Error downloading file. Please try again later.")}})()}sleep(ze){return new Promise(me=>setTimeout(me,ze))}launchURL(ze){this.plugin.launchURL(ze)}getAuthCustomJavascript(ze){var me=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(me.http.get(me.config.urls.customAuth+ze,{responseType:"text"}))})()}switchTheme(ze){const me=document.getElementsByTagName("html")[0];[DARK_THEME,LIGHT_THEME].forEach(b=>{me.classList.contains(b)&&me.classList.remove(b)}),me.classList.add(ze?DARK_THEME:LIGHT_THEME)}putOnStorage(ze,me){void 0!==typeof Storage&&sessionStorage.setItem(ze,me)}getFromStorage(ze){return void 0!==typeof Storage?sessionStorage.getItem(ze):null}}UDSApiService.\u0275fac=function ze(me){return new(me||UDSApiService)(_angular_core__WEBPACK_IMPORTED_MODULE_6__.LFG(_angular_common_http__WEBPACK_IMPORTED_MODULE_7__.eN),_angular_core__WEBPACK_IMPORTED_MODULE_6__.LFG(_uds_gui_service__WEBPACK_IMPORTED_MODULE_3__.h),_angular_core__WEBPACK_IMPORTED_MODULE_6__.LFG(_angular_router__WEBPACK_IMPORTED_MODULE_8__.F0))},UDSApiService.\u0275prov=_angular_core__WEBPACK_IMPORTED_MODULE_6__.Yz7({token:UDSApiService,factory:UDSApiService.\u0275fac})},4461:(ze,me,b)=>{b.d(me,{h:()=>j});var c=b(5861),o=b(5412),M=b(4986),re=b(2805),H=b(1571),fe=b(6895),Se=b(4859),ie=b(4029),Z=b(6410);function ye($,ee){if(1&$){const ae=H.EpF();H.TgZ(0,"button",3),H.NdJ("click",function(){H.CHM(ae);const de=H.oxw();return H.KtG(de.resolveAndClose(!1))}),H.TgZ(1,"uds-translate"),H._uU(2,"Close"),H.qZA(),H._uU(3),H.qZA()}if(2&$){const ae=H.oxw();H.xp6(3),H.Oqu(ae.extra)}}function se($,ee){if(1&$){const ae=H.EpF();H.TgZ(0,"button",3),H.NdJ("click",function(){H.CHM(ae);const de=H.oxw();return H.KtG(de.resolveAndClose(!0))}),H.TgZ(1,"uds-translate"),H._uU(2,"Yes"),H.qZA()()}}function Ee($,ee){if(1&$){const ae=H.EpF();H.TgZ(0,"button",3),H.NdJ("click",function(){H.CHM(ae);const de=H.oxw();return H.KtG(de.resolveAndClose(!1))}),H.TgZ(1,"uds-translate"),H._uU(2,"No"),H.qZA()()}}var we=(()=>{return($=we||(we={}))[$.alert=0]="alert",$[$.yesno=1]="yesno",$[$.credentials=2]="credentials",we;var $})();class Ie{constructor(ee,ae){this.dialogRef=ee,this.data=ae,this.extra="",this.subscription=null,this.yesno=new Promise(Pe=>this.resolver=Pe),this.resolver=()=>{}}resolveAndClose(ee){this.resolver(ee),this.close()}close(){this.dialogRef.close()}setExtra(ee){this.extra=" ("+Math.floor(ee/1e3)+" "+django.gettext("seconds")+") "}initAlert(){var ee=this;return(0,c.Z)(function*(){const ae=ee.data.autoclose||0;ae>0&&(ee.dialogRef.afterClosed().subscribe(Pe=>{ee.close()}),ee.setExtra(ae),function Q($=0,ee=M.z){return $<0&&($=0),(0,re.H)($,$,ee)}(1e3).subscribe(Pe=>{const de=ae-1e3*(Pe+1);ee.setExtra(de),de<=0&&ee.close()}))})()}ngOnInit(){this.data.type===we.alert&&this.initAlert()}}Ie.\u0275fac=function(ee){return new(ee||Ie)(H.Y36(o.so),H.Y36(o.WI))},Ie.\u0275cmp=H.Xpm({type:Ie,selectors:[["uds-modal"]],decls:8,vars:9,consts:[["mat-dialog-title","",3,"innerHtml"],[3,"innerHTML"],["mat-raised-button","","mat-dialog-close","",3,"click",4,"ngIf"],["mat-raised-button","","mat-dialog-close","",3,"click"]],template:function(ee,ae){1&ee&&(H._UZ(0,"h4",0),H.ALo(1,"safeHtml"),H._UZ(2,"mat-dialog-content",1),H.ALo(3,"safeHtml"),H.TgZ(4,"mat-dialog-actions"),H.YNc(5,ye,4,1,"button",2),H.YNc(6,se,3,0,"button",2),H.YNc(7,Ee,3,0,"button",2),H.qZA()),2&ee&&(H.Q6J("innerHtml",H.lcZ(1,5,ae.data.title),H.oJD),H.xp6(2),H.Q6J("innerHTML",H.lcZ(3,7,ae.data.body),H.oJD),H.xp6(3),H.Q6J("ngIf",0===ae.data.type),H.xp6(1),H.Q6J("ngIf",1===ae.data.type),H.xp6(1),H.Q6J("ngIf",1===ae.data.type))},dependencies:[fe.O5,Se.lW,o.ZT,o.uh,o.xY,o.H8,ie.P,Z.z],styles:[".uds-modal-footer[_ngcontent-%COMP%]{display:flex;justify-content:left}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});var Be=b(433),Ve=b(9549),Je=b(4144);const pt=function($,ee,ae){return{username:$,domain:ee,password:ae,success:!1}},_t=function($,ee,ae){return{username:$,domain:ee,password:ae,success:!0}};class ne{constructor(ee){this.data=ee,this.labels={username:django.gettext("Username"),password:django.gettext("Password"),domain:django.gettext("Domain")},this.username=ee.username,this.domain=ee.domain,this.password=""}}ne.\u0275fac=function(ee){return new(ee||ne)(H.Y36(o.WI))},ne.\u0275cmp=H.Xpm({type:ne,selectors:[["uds-credentials-modal"]],decls:21,vars:19,consts:[["mat-dialog-title",""],["matInput","",3,"placeholder","ngModel","ngModelChange"],["matInput","","type","password",3,"placeholder","ngModel","ngModelChange"],["mat-button","",3,"mat-dialog-close"]],template:function(ee,ae){1&ee&&(H.TgZ(0,"h2",0)(1,"uds-translate"),H._uU(2,"Please, enter access credentials"),H.qZA()(),H.TgZ(3,"mat-dialog-content")(4,"mat-form-field")(5,"mat-label"),H._uU(6),H.qZA(),H.TgZ(7,"input",1),H.NdJ("ngModelChange",function(de){return ae.username=de}),H.qZA()(),H.TgZ(8,"mat-form-field")(9,"mat-label"),H._uU(10),H.qZA(),H.TgZ(11,"input",2),H.NdJ("ngModelChange",function(de){return ae.password=de}),H.qZA()(),H.TgZ(12,"mat-form-field")(13,"mat-label"),H._uU(14),H.qZA(),H.TgZ(15,"input",1),H.NdJ("ngModelChange",function(de){return ae.domain=de}),H.qZA()()(),H.TgZ(16,"mat-dialog-actions")(17,"button",3),H._uU(18,"Cancel"),H.qZA(),H.TgZ(19,"button",3),H._uU(20,"Accept"),H.qZA()()),2&ee&&(H.xp6(6),H.hij(" ",ae.labels.username," "),H.xp6(1),H.Q6J("placeholder",ae.labels.username)("ngModel",ae.username),H.xp6(3),H.hij(" ",ae.labels.password," "),H.xp6(1),H.Q6J("placeholder",ae.labels.password)("ngModel",ae.password),H.xp6(3),H.hij(" ",ae.labels.domain," "),H.xp6(1),H.Q6J("placeholder",ae.labels.domain)("ngModel",ae.domain),H.xp6(2),H.Q6J("mat-dialog-close",H.kEZ(11,pt,ae.username,ae.domain,ae.password)),H.xp6(2),H.Q6J("mat-dialog-close",H.kEZ(15,_t,ae.username,ae.domain,ae.password)))},dependencies:[Be.Fj,Be.JJ,Be.On,Se.lW,o.ZT,o.uh,o.xY,o.H8,Ve.KE,Ve.hX,Je.Nt,ie.P],styles:[".mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});var q=b(4215);class j{constructor(ee){this.dialog=ee}alert(ee,ae,Pe=0){var de=this;return(0,c.Z)(function*(){const be=window.innerWidth<800?"80%":"40%";return de.dialog.open(Ie,{width:be,data:{title:ee,body:ae,autoclose:Pe,type:we.alert},disableClose:!0})})()}yesno(ee,ae){const Pe=window.innerWidth<800?"80%":"40%";return this.dialog.open(Ie,{width:Pe,data:{title:ee,body:ae,type:we.yesno},disableClose:!0}).componentInstance.yesno}askCredentials(ee,ae){const Pe=this.dialog.open(ne,{data:{username:ee,domain:ae}});return(0,q.Vi)(Pe.afterClosed())}}j.\u0275fac=function(ee){return new(ee||j)(H.LFG(o.uw))},j.\u0275prov=H.Yz7({token:j,factory:j.\u0275fac})},3513:(ze,me,b)=>{b.d(me,{n:()=>c});class c{constructor(M){this.user=M.user,this.role=M.role,this.admin=M.admin}get isStaff(){return"staff"===this.role||"admin"===this.role}get isAdmin(){return"admin"===this.role}get isLogged(){return null!=this.user}get isRestricted(){return"restricted"===this.role}}},2340:(ze,me,b)=>{b.d(me,{N:()=>c});const c={production:!0}},284:(ze,me,b)=>{var c=b(1481),o=b(1571),M=b(2289),re=b(529),Q=b(8247),H=b(7003);class fe{constructor(l){this.api=l}canActivate(l,s){return!!this.api.user.isLogged||(this.api.router.navigate(["login"]),!1)}}fe.\u0275fac=function(l){return new(l||fe)(o.LFG(H.n))},fe.\u0275prov=o.Yz7({token:fe,factory:fe.\u0275fac,providedIn:"root"});var Se=b(4902),ie=b(6895),Z=b(4029);function ye(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div",6),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw();return o.KtG(W.api.download(P.url))}),o.TgZ(1,"div",7),o._UZ(2,"img",8),o.qZA(),o.TgZ(3,"div",9),o._uU(4),o.qZA(),o.TgZ(5,"div",10),o._uU(6),o.qZA()()}if(2&g){const s=l.$implicit,u=o.oxw();o.Tol(u.css(s)),o.xp6(2),o.Q6J("src",u.img(s.name),o.LSH),o.xp6(2),o.lnq(" ",u.legacy(s)," ",s.name," (",s.url.split(".").pop(),") "),o.xp6(2),o.hij(" ",s.description," ")}}class se{constructor(l){this.api=l}ngOnInit(){}img(l){return this.api.staticURL("modern/img/"+l+".png")}css(l){const s=["plugin"];return l.legacy&&s.push("legacy"),s}legacy(l){return l.legacy?"Legacy":""}}se.\u0275fac=function(l){return new(l||se)(o.Y36(H.n))},se.\u0275cmp=o.Xpm({type:se,selectors:[["uds-client-download"]],decls:13,vars:1,consts:[[1,"plugins-container"],[1,"banner"],[1,"banner-text"],[1,"plugins"],[3,"class","click",4,"ngFor","ngForOf"],[1,"info"],[3,"click"],[1,"image"],[3,"src"],[1,"platform"],[1,"description"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1")(4,"uds-translate"),o._uU(5,"UDS Client"),o.qZA()()()(),o.TgZ(6,"div",3),o.YNc(7,ye,7,7,"div",4),o.qZA(),o.TgZ(8,"div",5)(9,"ul")(10,"li")(11,"uds-translate"),o._uU(12,"Download UDS client for your platform"),o.qZA()()()()()),2&l&&(o.xp6(7),o.Q6J("ngForOf",s.api.plugins))},dependencies:[ie.sg,Z.P],styles:[".plugins-container[_ngcontent-%COMP%]{margin:0 2%}.banner[_ngcontent-%COMP%]{display:flex;justify-content:center;margin-bottom:2rem}.banner-text[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:3rem;text-align:center}.banner-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:1rem}.plugins[_ngcontent-%COMP%]{display:flex;flex-flow:row wrap;justify-content:center}.plugin[_ngcontent-%COMP%]{margin:0 1rem 2rem 0;padding:1rem;border-radius:1rem;box-shadow:0 1rem 2rem #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 15%}.plugin.legacy[_ngcontent-%COMP%]{background-color:#d3d3d3;flex:1 0 19%;max-width:20%}.plugin.legacy[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:5rem}.plugin[_ngcontent-%COMP%]:hover{cursor:pointer;box-shadow:0 .1rem .2rem #00000040,0 10px 10px #00000038;background-color:#0000001a}.image[_ngcontent-%COMP%]{display:flex;justify-content:center}.platform[_ngcontent-%COMP%]{text-align:center;font-size:2rem}.description[_ngcontent-%COMP%]{display:flex;text-align:center;justify-content:center;margin-top:.5rem} .dark-theme uds-client-download{color:#fff!important} .dark-theme .plugin.legacy{background-color:#a9a9a9} .dark-theme .plugin:hover{background-color:#ffffff1a}"]});var Ee=b(6410);function we(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div",6),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw();return o.KtG(W.api.download(P.url))}),o.TgZ(1,"div",7),o._UZ(2,"img",8),o.qZA(),o._UZ(3,"div",9),o.ALo(4,"safeHtml"),o._UZ(5,"div",10),o.ALo(6,"safeHtml"),o.qZA()}if(2&g){const s=l.$implicit,u=o.oxw();o.Tol(u.css(s.name)),o.xp6(2),o.Q6J("src",u.img(s.name),o.LSH),o.xp6(1),o.Q6J("innerHTML",o.lcZ(4,5,s.name),o.oJD),o.xp6(2),o.Q6J("innerHTML",o.lcZ(6,7,s.description),o.oJD)}}class Ie{constructor(l){this.api=l,this.actors=[]}ngOnInit(){this.actors=[];const l=[];for(const s of this.api.actors)s.name.includes("legacy")?l.push(s):this.actors.push(s);for(const s of l)this.actors.push(s)}img(l){const s=(l.split(".").pop()||"").toLowerCase();let u="Linux";return"exe"===s?u="Windows":"pkg"===s&&(u="MacOS"),this.api.staticURL("modern/img/"+u+".png")}css(l){const s=["actor"];return l.toLowerCase().includes("legacy")&&s.push("legacy"),s}}Ie.\u0275fac=function(l){return new(l||Ie)(o.Y36(H.n))},Ie.\u0275cmp=o.Xpm({type:Ie,selectors:[["uds-downloads"]],decls:16,vars:1,consts:[[1,"actors-container"],[1,"banner"],[1,"banner-text"],[1,"actors"],[3,"class","click",4,"ngFor","ngForOf"],[1,"info"],[3,"click"],[1,"image"],[3,"src"],[1,"name",3,"innerHTML"],[1,"description",3,"innerHTML"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1")(4,"uds-translate"),o._uU(5,"Downloads"),o.qZA()()()(),o.TgZ(6,"div",3),o.YNc(7,we,7,9,"div",4),o.qZA(),o.TgZ(8,"div",5)(9,"ul")(10,"li")(11,"uds-translate"),o._uU(12,"Always download the UDS actor matching your platform"),o.qZA()(),o.TgZ(13,"li")(14,"uds-translate"),o._uU(15,"Legacy actors are only provided for old operating system support. Try to avoid them."),o.qZA()()()()()),2&l&&(o.xp6(7),o.Q6J("ngForOf",s.actors))},dependencies:[ie.sg,Z.P,Ee.z],styles:[".actors-container[_ngcontent-%COMP%]{display:flex;flex-flow:column;margin:0 2%}.banner[_ngcontent-%COMP%]{display:flex;justify-content:center}.banner-text[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:2em;text-align:center}.actors[_ngcontent-%COMP%]{display:flex;flex-flow:row wrap;justify-content:space-around;align-content:center;margin:auto}.actor[_ngcontent-%COMP%]{border:1px solid;margin-top:1rem;padding:1em;border-radius:1rem;box-shadow:0 1rem 2rem #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 34%;margin-right:1em}.actor.legacy[_ngcontent-%COMP%]{background-color:#d3d3d3;max-width:50%}.actor[_ngcontent-%COMP%]:hover{cursor:pointer;box-shadow:0 .1rem .2rem #00000040,0 10px 10px #00000038;background-color:#0000001a}.image[_ngcontent-%COMP%]{display:block;float:left;padding-right:1rem;height:100%}.image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:4rem}.name[_ngcontent-%COMP%]{font-size:1.5em;margin-bottom:1em;font-weight:700;overflow:hidden} .dark-theme uds-downloads{color:#fff!important} .dark-theme .actor.legacy{background-color:#464646}"]});var Be=b(5017),Ve=b(1281),Je=b(7579),pt=b(727);let _t=0;const ne=new o.OlP("CdkAccordion");let q=(()=>{class g{constructor(){this._stateChanges=new Je.x,this._openCloseAllActions=new Je.x,this.id="cdk-accordion-"+_t++,this._multi=!1}get multi(){return this._multi}set multi(s){this._multi=(0,Ve.Ig)(s)}openAll(){this._multi&&this._openCloseAllActions.next(!0)}closeAll(){this._openCloseAllActions.next(!1)}ngOnChanges(s){this._stateChanges.next(s)}ngOnDestroy(){this._stateChanges.complete(),this._openCloseAllActions.complete()}}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["cdk-accordion"],["","cdkAccordion",""]],inputs:{multi:"multi"},exportAs:["cdkAccordion"],features:[o._Bn([{provide:ne,useExisting:g}]),o.TTD]}),g})(),j=0,$=(()=>{class g{get expanded(){return this._expanded}set expanded(s){s=(0,Ve.Ig)(s),this._expanded!==s&&(this._expanded=s,this.expandedChange.emit(s),s?(this.opened.emit(),this._expansionDispatcher.notify(this.id,this.accordion?this.accordion.id:this.id)):this.closed.emit(),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(s){this._disabled=(0,Ve.Ig)(s)}constructor(s,u,y){this.accordion=s,this._changeDetectorRef=u,this._expansionDispatcher=y,this._openCloseAllSubscription=pt.w0.EMPTY,this.closed=new o.vpe,this.opened=new o.vpe,this.destroyed=new o.vpe,this.expandedChange=new o.vpe,this.id="cdk-accordion-child-"+j++,this._expanded=!1,this._disabled=!1,this._removeUniqueSelectionListener=()=>{},this._removeUniqueSelectionListener=y.listen((P,W)=>{this.accordion&&!this.accordion.multi&&this.accordion.id===W&&this.id!==P&&(this.expanded=!1)}),this.accordion&&(this._openCloseAllSubscription=this._subscribeToOpenCloseAllActions())}ngOnDestroy(){this.opened.complete(),this.closed.complete(),this.destroyed.emit(),this.destroyed.complete(),this._removeUniqueSelectionListener(),this._openCloseAllSubscription.unsubscribe()}toggle(){this.disabled||(this.expanded=!this.expanded)}close(){this.disabled||(this.expanded=!1)}open(){this.disabled||(this.expanded=!0)}_subscribeToOpenCloseAllActions(){return this.accordion._openCloseAllActions.subscribe(s=>{this.disabled||(this.expanded=s)})}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(ne,12),o.Y36(o.sBO),o.Y36(Be.A8))},g.\u0275dir=o.lG2({type:g,selectors:[["cdk-accordion-item"],["","cdkAccordionItem",""]],inputs:{expanded:"expanded",disabled:"disabled"},outputs:{closed:"closed",opened:"opened",destroyed:"destroyed",expandedChange:"expandedChange"},exportAs:["cdkAccordionItem"],features:[o._Bn([{provide:ne,useValue:void 0}])]}),g})(),ee=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({}),g})();var ae=b(4080),Pe=b(3238),de=b(2687),be=b(1884),Fe=b(8675),ke=b(9300),Xe=b(5698),$e=b(9521),bt=b(515),At=b(6451),ot=b(7340);const st=["body"];function mt(g,l){}const ut=[[["mat-expansion-panel-header"]],"*",[["mat-action-row"]]],lt=["mat-expansion-panel-header","*","mat-action-row"];function jt(g,l){if(1&g&&o._UZ(0,"span",2),2&g){const s=o.oxw();o.Q6J("@indicatorRotate",s._getExpandedState())}}const Lt=[[["mat-panel-title"]],[["mat-panel-description"]],"*"],yt=["mat-panel-title","mat-panel-description","*"],hn=new o.OlP("MAT_ACCORDION"),It="225ms cubic-bezier(0.4,0.0,0.2,1)",yn={indicatorRotate:(0,ot.X$)("indicatorRotate",[(0,ot.SB)("collapsed, void",(0,ot.oB)({transform:"rotate(0deg)"})),(0,ot.SB)("expanded",(0,ot.oB)({transform:"rotate(180deg)"})),(0,ot.eR)("expanded <=> collapsed, void => collapsed",(0,ot.jt)(It))]),bodyExpansion:(0,ot.X$)("bodyExpansion",[(0,ot.SB)("collapsed, void",(0,ot.oB)({height:"0px",visibility:"hidden"})),(0,ot.SB)("expanded",(0,ot.oB)({height:"*",visibility:"visible"})),(0,ot.eR)("expanded <=> collapsed, void => collapsed",(0,ot.jt)(It))])},tn=new o.OlP("MAT_EXPANSION_PANEL");let xn=(()=>{class g{constructor(s,u){this._template=s,this._expansionPanel=u}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.Rgc),o.Y36(tn,8))},g.\u0275dir=o.lG2({type:g,selectors:[["ng-template","matExpansionPanelContent",""]]}),g})(),Ct=0;const Ht=new o.OlP("MAT_EXPANSION_PANEL_DEFAULT_OPTIONS");let oe=(()=>{class g extends ${get hideToggle(){return this._hideToggle||this.accordion&&this.accordion.hideToggle}set hideToggle(s){this._hideToggle=(0,Ve.Ig)(s)}get togglePosition(){return this._togglePosition||this.accordion&&this.accordion.togglePosition}set togglePosition(s){this._togglePosition=s}constructor(s,u,y,P,W,he,Le){super(s,u,y),this._viewContainerRef=P,this._animationMode=he,this._hideToggle=!1,this.afterExpand=new o.vpe,this.afterCollapse=new o.vpe,this._inputChanges=new Je.x,this._headerId="mat-expansion-panel-header-"+Ct++,this._bodyAnimationDone=new Je.x,this.accordion=s,this._document=W,this._bodyAnimationDone.pipe((0,be.x)((qe,vt)=>qe.fromState===vt.fromState&&qe.toState===vt.toState)).subscribe(qe=>{"void"!==qe.fromState&&("expanded"===qe.toState?this.afterExpand.emit():"collapsed"===qe.toState&&this.afterCollapse.emit())}),Le&&(this.hideToggle=Le.hideToggle)}_hasSpacing(){return!!this.accordion&&this.expanded&&"default"===this.accordion.displayMode}_getExpandedState(){return this.expanded?"expanded":"collapsed"}toggle(){this.expanded=!this.expanded}close(){this.expanded=!1}open(){this.expanded=!0}ngAfterContentInit(){this._lazyContent&&this._lazyContent._expansionPanel===this&&this.opened.pipe((0,Fe.O)(null),(0,ke.h)(()=>this.expanded&&!this._portal),(0,Xe.q)(1)).subscribe(()=>{this._portal=new ae.UE(this._lazyContent._template,this._viewContainerRef)})}ngOnChanges(s){this._inputChanges.next(s)}ngOnDestroy(){super.ngOnDestroy(),this._bodyAnimationDone.complete(),this._inputChanges.complete()}_containsFocus(){if(this._body){const s=this._document.activeElement,u=this._body.nativeElement;return s===u||u.contains(s)}return!1}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(hn,12),o.Y36(o.sBO),o.Y36(Be.A8),o.Y36(o.s_b),o.Y36(ie.K0),o.Y36(o.QbO,8),o.Y36(Ht,8))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-expansion-panel"]],contentQueries:function(s,u,y){if(1&s&&o.Suo(y,xn,5),2&s){let P;o.iGM(P=o.CRH())&&(u._lazyContent=P.first)}},viewQuery:function(s,u){if(1&s&&o.Gf(st,5),2&s){let y;o.iGM(y=o.CRH())&&(u._body=y.first)}},hostAttrs:[1,"mat-expansion-panel"],hostVars:6,hostBindings:function(s,u){2&s&&o.ekj("mat-expanded",u.expanded)("_mat-animation-noopable","NoopAnimations"===u._animationMode)("mat-expansion-panel-spacing",u._hasSpacing())},inputs:{disabled:"disabled",expanded:"expanded",hideToggle:"hideToggle",togglePosition:"togglePosition"},outputs:{opened:"opened",closed:"closed",expandedChange:"expandedChange",afterExpand:"afterExpand",afterCollapse:"afterCollapse"},exportAs:["matExpansionPanel"],features:[o._Bn([{provide:hn,useValue:void 0},{provide:tn,useExisting:g}]),o.qOj,o.TTD],ngContentSelectors:lt,decls:7,vars:4,consts:[["role","region",1,"mat-expansion-panel-content",3,"id"],["body",""],[1,"mat-expansion-panel-body"],[3,"cdkPortalOutlet"]],template:function(s,u){1&s&&(o.F$t(ut),o.Hsn(0),o.TgZ(1,"div",0,1),o.NdJ("@bodyExpansion.done",function(P){return u._bodyAnimationDone.next(P)}),o.TgZ(3,"div",2),o.Hsn(4,1),o.YNc(5,mt,0,0,"ng-template",3),o.qZA(),o.Hsn(6,2),o.qZA()),2&s&&(o.xp6(1),o.Q6J("@bodyExpansion",u._getExpandedState())("id",u.id),o.uIk("aria-labelledby",u._headerId),o.xp6(4),o.Q6J("cdkPortalOutlet",u._portal))},dependencies:[ae.Pl],styles:['.mat-expansion-panel{box-sizing:content-box;display:block;margin:0;border-radius:4px;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:4px;border-top-left-radius:4px}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible}.mat-expansion-panel-content[style*="visibility: hidden"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2,data:{animation:[yn.bodyExpansion]},changeDetection:0}),g})();class G{}const Re=(0,Pe.sb)(G);let tt=(()=>{class g extends Re{constructor(s,u,y,P,W,he,Le){super(),this.panel=s,this._element=u,this._focusMonitor=y,this._changeDetectorRef=P,this._animationMode=he,this._parentChangeSubscription=pt.w0.EMPTY;const qe=s.accordion?s.accordion._stateChanges.pipe((0,ke.h)(vt=>!(!vt.hideToggle&&!vt.togglePosition))):bt.E;this.tabIndex=parseInt(Le||"")||0,this._parentChangeSubscription=(0,At.T)(s.opened,s.closed,qe,s._inputChanges.pipe((0,ke.h)(vt=>!!(vt.hideToggle||vt.disabled||vt.togglePosition)))).subscribe(()=>this._changeDetectorRef.markForCheck()),s.closed.pipe((0,ke.h)(()=>s._containsFocus())).subscribe(()=>y.focusVia(u,"program")),W&&(this.expandedHeight=W.expandedHeight,this.collapsedHeight=W.collapsedHeight)}get disabled(){return this.panel.disabled}_toggle(){this.disabled||this.panel.toggle()}_isExpanded(){return this.panel.expanded}_getExpandedState(){return this.panel._getExpandedState()}_getPanelId(){return this.panel.id}_getTogglePosition(){return this.panel.togglePosition}_showToggle(){return!this.panel.hideToggle&&!this.panel.disabled}_getHeaderHeight(){const s=this._isExpanded();return s&&this.expandedHeight?this.expandedHeight:!s&&this.collapsedHeight?this.collapsedHeight:null}_keydown(s){switch(s.keyCode){case $e.L_:case $e.K5:(0,$e.Vb)(s)||(s.preventDefault(),this._toggle());break;default:return void(this.panel.accordion&&this.panel.accordion._handleHeaderKeydown(s))}}focus(s,u){s?this._focusMonitor.focusVia(this._element,s,u):this._element.nativeElement.focus(u)}ngAfterViewInit(){this._focusMonitor.monitor(this._element).subscribe(s=>{s&&this.panel.accordion&&this.panel.accordion._handleHeaderFocus(this)})}ngOnDestroy(){this._parentChangeSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._element)}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(oe,1),o.Y36(o.SBq),o.Y36(de.tE),o.Y36(o.sBO),o.Y36(Ht,8),o.Y36(o.QbO,8),o.$8M("tabindex"))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-expansion-panel-header"]],hostAttrs:["role","button",1,"mat-expansion-panel-header","mat-focus-indicator"],hostVars:15,hostBindings:function(s,u){1&s&&o.NdJ("click",function(){return u._toggle()})("keydown",function(P){return u._keydown(P)}),2&s&&(o.uIk("id",u.panel._headerId)("tabindex",u.tabIndex)("aria-controls",u._getPanelId())("aria-expanded",u._isExpanded())("aria-disabled",u.panel.disabled),o.Udp("height",u._getHeaderHeight()),o.ekj("mat-expanded",u._isExpanded())("mat-expansion-toggle-indicator-after","after"===u._getTogglePosition())("mat-expansion-toggle-indicator-before","before"===u._getTogglePosition())("_mat-animation-noopable","NoopAnimations"===u._animationMode))},inputs:{tabIndex:"tabIndex",expandedHeight:"expandedHeight",collapsedHeight:"collapsedHeight"},features:[o.qOj],ngContentSelectors:yt,decls:5,vars:3,consts:[[1,"mat-content"],["class","mat-expansion-indicator",4,"ngIf"],[1,"mat-expansion-indicator"]],template:function(s,u){1&s&&(o.F$t(Lt),o.TgZ(0,"span",0),o.Hsn(1),o.Hsn(2,1),o.Hsn(3,2),o.qZA(),o.YNc(4,jt,1,1,"span",1)),2&s&&(o.ekj("mat-content-hide-toggle",!u._showToggle()),o.xp6(4),o.Q6J("ngIf",u._showToggle()))},dependencies:[ie.O5],styles:['.mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:"";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}'],encapsulation:2,data:{animation:[yn.indicatorRotate]},changeDetection:0}),g})(),ue=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["mat-panel-description"]],hostAttrs:[1,"mat-expansion-panel-header-description"]}),g})(),R=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["mat-panel-title"]],hostAttrs:[1,"mat-expansion-panel-header-title"]}),g})(),K=(()=>{class g extends q{constructor(){super(...arguments),this._ownHeaders=new o.n_E,this._hideToggle=!1,this.displayMode="default",this.togglePosition="after"}get hideToggle(){return this._hideToggle}set hideToggle(s){this._hideToggle=(0,Ve.Ig)(s)}ngAfterContentInit(){this._headers.changes.pipe((0,Fe.O)(this._headers)).subscribe(s=>{this._ownHeaders.reset(s.filter(u=>u.panel.accordion===this)),this._ownHeaders.notifyOnChanges()}),this._keyManager=new de.Em(this._ownHeaders).withWrap().withHomeAndEnd()}_handleHeaderKeydown(s){this._keyManager.onKeydown(s)}_handleHeaderFocus(s){this._keyManager.updateActiveItem(s)}ngOnDestroy(){var s;super.ngOnDestroy(),null===(s=this._keyManager)||void 0===s||s.destroy(),this._ownHeaders.destroy()}}return g.\u0275fac=function(){let l;return function(u){return(l||(l=o.n5z(g)))(u||g)}}(),g.\u0275dir=o.lG2({type:g,selectors:[["mat-accordion"]],contentQueries:function(s,u,y){if(1&s&&o.Suo(y,tt,5),2&s){let P;o.iGM(P=o.CRH())&&(u._headers=P)}},hostAttrs:[1,"mat-accordion"],hostVars:2,hostBindings:function(s,u){2&s&&o.ekj("mat-accordion-multi",u.multi)},inputs:{multi:"multi",hideToggle:"hideToggle",displayMode:"displayMode",togglePosition:"togglePosition"},exportAs:["matAccordion"],features:[o._Bn([{provide:hn,useExisting:g}]),o.qOj]}),g})(),De=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({imports:[ie.ez,Pe.BQ,ee,ae.eL]}),g})();var Ce=b(4859),Ke=b(9646),it=b(3101),et=b(3900),_e=b(2722),Ye=b(4986),F=b(7272),pe=b(4482),te=b(5403),ge=b(5032),at=b(9718),Vt=b(5577),St=b(8421);function mn(g,l){return l?s=>(0,F.z)(l.pipe((0,Xe.q)(1),function rt(){return(0,pe.e)((g,l)=>{g.subscribe((0,te.x)(l,ge.Z))})}()),s.pipe(mn(g))):(0,Vt.z)((s,u)=>(0,St.Xf)(g(s,u)).pipe((0,Xe.q)(1),(0,at.h)(s)))}var gn=b(2805);function Ze(g,l=Ye.z){const s=(0,gn.H)(g,l);return mn(()=>s)}var Me=b(445),I=b(8184),A=b(3353),T=b(5589);const z=["mat-menu-item",""];function Y(g,l){1&g&&(o.O4$(),o.TgZ(0,"svg",3),o._UZ(1,"polygon",4),o.qZA())}const He=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],gt=["mat-icon, [matMenuItemIcon]","*"];function Ft(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div",0),o.NdJ("keydown",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P._handleKeydown(y))})("click",function(){o.CHM(s);const y=o.oxw();return o.KtG(y.closed.emit("click"))})("@transformMenu.start",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P._onAnimationStart(y))})("@transformMenu.done",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P._onAnimationDone(y))}),o.TgZ(1,"div",1),o.Hsn(2),o.qZA()()}if(2&g){const s=o.oxw();o.Q6J("id",s.panelId)("ngClass",s._classList)("@transformMenu",s._panelAnimationState),o.uIk("aria-label",s.ariaLabel||null)("aria-labelledby",s.ariaLabelledby||null)("aria-describedby",s.ariaDescribedby||null)}}const kt=["*"],on=new o.OlP("MAT_MENU_PANEL"),Jn=(0,Pe.Kr)((0,Pe.Id)(class{}));let ln=(()=>{class g extends Jn{constructor(s,u,y,P,W){var he;super(),this._elementRef=s,this._document=u,this._focusMonitor=y,this._parentMenu=P,this._changeDetectorRef=W,this.role="menuitem",this._hovered=new Je.x,this._focused=new Je.x,this._highlighted=!1,this._triggersSubmenu=!1,null==P||null===(he=P.addItem)||void 0===he||he.call(P,this)}focus(s,u){this._focusMonitor&&s?this._focusMonitor.focusVia(this._getHostElement(),s,u):this._getHostElement().focus(u),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(s){this.disabled&&(s.preventDefault(),s.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){var s;const u=this._elementRef.nativeElement.cloneNode(!0),y=u.querySelectorAll("mat-icon, .material-icons");for(let P=0;P enter",(0,ot.jt)("120ms cubic-bezier(0, 0, 0.2, 1)",(0,ot.oB)({opacity:1,transform:"scale(1)"}))),(0,ot.eR)("* => void",(0,ot.jt)("100ms 25ms linear",(0,ot.oB)({opacity:0})))]),fadeInItems:(0,ot.X$)("fadeInItems",[(0,ot.SB)("showing",(0,ot.oB)({opacity:1})),(0,ot.eR)("void => *",[(0,ot.oB)({opacity:0}),(0,ot.jt)("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let An=0;const jn=new o.OlP("mat-menu-default-options",{providedIn:"root",factory:function si(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}});let Li=(()=>{class g{get xPosition(){return this._xPosition}set xPosition(s){this._xPosition=s,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(s){this._yPosition=s,this.setPositionClasses()}get overlapTrigger(){return this._overlapTrigger}set overlapTrigger(s){this._overlapTrigger=(0,Ve.Ig)(s)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(s){this._hasBackdrop=(0,Ve.Ig)(s)}set panelClass(s){const u=this._previousPanelClass;u&&u.length&&u.split(" ").forEach(y=>{this._classList[y]=!1}),this._previousPanelClass=s,s&&s.length&&(s.split(" ").forEach(y=>{this._classList[y]=!0}),this._elementRef.nativeElement.className="")}get classList(){return this.panelClass}set classList(s){this.panelClass=s}constructor(s,u,y,P){this._elementRef=s,this._ngZone=u,this._defaultOptions=y,this._changeDetectorRef=P,this._xPosition=this._defaultOptions.xPosition,this._yPosition=this._defaultOptions.yPosition,this._directDescendantItems=new o.n_E,this._classList={},this._panelAnimationState="void",this._animationDone=new Je.x,this.overlayPanelClass=this._defaultOptions.overlayPanelClass||"",this.backdropClass=this._defaultOptions.backdropClass,this._overlapTrigger=this._defaultOptions.overlapTrigger,this._hasBackdrop=this._defaultOptions.hasBackdrop,this.closed=new o.vpe,this.close=this.closed,this.panelId="mat-menu-panel-"+An++}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new de.Em(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe((0,Fe.O)(this._directDescendantItems),(0,et.w)(s=>(0,At.T)(...s.map(u=>u._focused)))).subscribe(s=>this._keyManager.updateActiveItem(s)),this._directDescendantItems.changes.subscribe(s=>{var u;const y=this._keyManager;if("enter"===this._panelAnimationState&&null!==(u=y.activeItem)&&void 0!==u&&u._hasFocus()){const P=s.toArray(),W=Math.max(0,Math.min(P.length-1,y.activeItemIndex||0));P[W]&&!P[W].disabled?y.setActiveItem(W):y.setNextItemActive()}})}ngOnDestroy(){var s,u;null===(s=this._keyManager)||void 0===s||s.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),null===(u=this._firstItemFocusSubscription)||void 0===u||u.unsubscribe()}_hovered(){return this._directDescendantItems.changes.pipe((0,Fe.O)(this._directDescendantItems),(0,et.w)(u=>(0,At.T)(...u.map(y=>y._hovered))))}addItem(s){}removeItem(s){}_handleKeydown(s){const u=s.keyCode,y=this._keyManager;switch(u){case $e.hY:(0,$e.Vb)(s)||(s.preventDefault(),this.closed.emit("keydown"));break;case $e.oh:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case $e.SV:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(u===$e.LH||u===$e.JH)&&y.setFocusOrigin("keyboard"),void y.onKeydown(s)}s.stopPropagation()}focusFirstItem(s="program"){var u;null===(u=this._firstItemFocusSubscription)||void 0===u||u.unsubscribe(),this._firstItemFocusSubscription=this._ngZone.onStable.pipe((0,Xe.q)(1)).subscribe(()=>{let y=null;if(this._directDescendantItems.length&&(y=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!y||!y.contains(document.activeElement)){const P=this._keyManager;P.setFocusOrigin(s).setFirstItemActive(),!P.activeItem&&y&&y.focus()}})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(s){const u=Math.min(this._baseElevation+s,24),y=`${this._elevationPrefix}${u}`,P=Object.keys(this._classList).find(W=>W.startsWith(this._elevationPrefix));(!P||P===this._previousElevation)&&(this._previousElevation&&(this._classList[this._previousElevation]=!1),this._classList[y]=!0,this._previousElevation=y)}setPositionClasses(s=this.xPosition,u=this.yPosition){var y;const P=this._classList;P["mat-menu-before"]="before"===s,P["mat-menu-after"]="after"===s,P["mat-menu-above"]="above"===u,P["mat-menu-below"]="below"===u,null===(y=this._changeDetectorRef)||void 0===y||y.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(s){this._animationDone.next(s),this._isAnimating=!1}_onAnimationStart(s){this._isAnimating=!0,"enter"===s.toState&&0===this._keyManager.activeItemIndex&&(s.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe((0,Fe.O)(this._allItems)).subscribe(s=>{this._directDescendantItems.reset(s.filter(u=>u._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(o.R0b),o.Y36(jn),o.Y36(o.sBO))},g.\u0275dir=o.lG2({type:g,contentQueries:function(s,u,y){if(1&s&&(o.Suo(y,J,5),o.Suo(y,ln,5),o.Suo(y,ln,4)),2&s){let P;o.iGM(P=o.CRH())&&(u.lazyContent=P.first),o.iGM(P=o.CRH())&&(u._allItems=P),o.iGM(P=o.CRH())&&(u.items=P)}},viewQuery:function(s,u){if(1&s&&o.Gf(o.Rgc,5),2&s){let y;o.iGM(y=o.CRH())&&(u.templateRef=y.first)}},inputs:{backdropClass:"backdropClass",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:"overlapTrigger",hasBackdrop:"hasBackdrop",panelClass:["class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"}}),g})(),Ti=(()=>{class g extends Li{constructor(s,u,y,P){super(s,u,y,P),this._elevationPrefix="mat-elevation-z",this._baseElevation=8}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(o.R0b),o.Y36(jn),o.Y36(o.sBO))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-menu"]],hostVars:3,hostBindings:function(s,u){2&s&&o.uIk("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},exportAs:["matMenu"],features:[o._Bn([{provide:on,useExisting:g}]),o.qOj],ngContentSelectors:kt,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mdc-menu-surface","mdc-menu-surface--open","mat-mdc-elevation-specific",3,"id","ngClass","keydown","click"],[1,"mat-mdc-menu-content","mdc-list"]],template:function(s,u){1&s&&(o.F$t(),o.YNc(0,Ft,3,6,"ng-template"))},dependencies:[ie.mk],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item.mdc-list-item{align-items:center}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[Tt.transformMenu,Tt.fadeInItems]},changeDetection:0}),g})();const ao=new o.OlP("mat-menu-scroll-strategy"),xi={provide:ao,deps:[I.aV],useFactory:function Ni(g){return()=>g.scrollStrategies.reposition()}},Zi=(0,A.i$)({passive:!0});let bo=(()=>{class g{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(s){this.menu=s}get menu(){return this._menu}set menu(s){var u;s!==this._menu&&(this._menu=s,this._menuCloseSubscription.unsubscribe(),s&&(this._menuCloseSubscription=s.close.subscribe(y=>{this._destroyMenu(y),("click"===y||"tab"===y)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(y)})),null===(u=this._menuItemInstance)||void 0===u||u._setTriggersSubmenu(this.triggersSubmenu()))}constructor(s,u,y,P,W,he,Le,qe,vt){this._overlay=s,this._element=u,this._viewContainerRef=y,this._menuItemInstance=he,this._dir=Le,this._focusMonitor=qe,this._ngZone=vt,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=pt.w0.EMPTY,this._hoverSubscription=pt.w0.EMPTY,this._menuCloseSubscription=pt.w0.EMPTY,this._changeDetectorRef=(0,o.f3M)(o.sBO),this._handleTouchStart=Dt=>{(0,de.yG)(Dt)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new o.vpe,this.onMenuOpen=this.menuOpened,this.menuClosed=new o.vpe,this.onMenuClose=this.menuClosed,this._scrollStrategy=P,this._parentMaterialMenu=W instanceof Li?W:void 0,u.nativeElement.addEventListener("touchstart",this._handleTouchStart,Zi)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,Zi),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){const s=this.menu;if(this._menuOpen||!s)return;const u=this._createOverlay(s),y=u.getConfig(),P=y.positionStrategy;this._setPosition(s,P),y.hasBackdrop=null==s.hasBackdrop?!this.triggersSubmenu():s.hasBackdrop,u.attach(this._getPortal(s)),s.lazyContent&&s.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(s),s instanceof Li&&(s._startAnimation(),s._directDescendantItems.changes.pipe((0,_e.R)(s.close)).subscribe(()=>{P.withLockedPosition(!1).reapplyLastPosition(),P.withLockedPosition(!0)}))}closeMenu(){var s;null===(s=this.menu)||void 0===s||s.close.emit()}focus(s,u){this._focusMonitor&&s?this._focusMonitor.focusVia(this._element,s,u):this._element.nativeElement.focus(u)}updatePosition(){var s;null===(s=this._overlayRef)||void 0===s||s.updatePosition()}_destroyMenu(s){if(!this._overlayRef||!this.menuOpen)return;const u=this.menu;var y;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&("keydown"===s||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,u instanceof Li?(u._resetAnimation(),u.lazyContent?u._animationDone.pipe((0,ke.h)(P=>"void"===P.toState),(0,Xe.q)(1),(0,_e.R)(u.lazyContent._attached)).subscribe({next:()=>u.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),null==u||null===(y=u.lazyContent)||void 0===y||y.detach())}_initMenu(s){s.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,s.direction=this.dir,this._setMenuElevation(s),s.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(s){if(s.setElevation){let u=0,y=s.parentMenu;for(;y;)u++,y=y.parentMenu;s.setElevation(u)}}_setIsMenuOpen(s){s!==this._menuOpen&&(this._menuOpen=s,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(s),this._changeDetectorRef.markForCheck())}_createOverlay(s){if(!this._overlayRef){const u=this._getOverlayConfig(s);this._subscribeToPositions(s,u.positionStrategy),this._overlayRef=this._overlay.create(u),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(s){return new I.X_({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:s.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:s.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(s,u){s.setPositionClasses&&u.positionChanges.subscribe(y=>{const P="start"===y.connectionPair.overlayX?"after":"before",W="top"===y.connectionPair.overlayY?"below":"above";this._ngZone?this._ngZone.run(()=>s.setPositionClasses(P,W)):s.setPositionClasses(P,W)})}_setPosition(s,u){let[y,P]="before"===s.xPosition?["end","start"]:["start","end"],[W,he]="above"===s.yPosition?["bottom","top"]:["top","bottom"],[Le,qe]=[W,he],[vt,Dt]=[y,P],Bt=0;if(this.triggersSubmenu()){if(Dt=y="before"===s.xPosition?"start":"end",P=vt="end"===y?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const qt=this._parentMaterialMenu.items.first;this._parentInnerPadding=qt?qt._getHostElement().offsetTop:0}Bt="bottom"===W?this._parentInnerPadding:-this._parentInnerPadding}}else s.overlapTrigger||(Le="top"===W?"bottom":"top",qe="top"===he?"bottom":"top");u.withPositions([{originX:y,originY:Le,overlayX:vt,overlayY:W,offsetY:Bt},{originX:P,originY:Le,overlayX:Dt,overlayY:W,offsetY:Bt},{originX:y,originY:qe,overlayX:vt,overlayY:he,offsetY:-Bt},{originX:P,originY:qe,overlayX:Dt,overlayY:he,offsetY:-Bt}])}_menuClosingActions(){const s=this._overlayRef.backdropClick(),u=this._overlayRef.detachments(),y=this._parentMaterialMenu?this._parentMaterialMenu.closed:(0,Ke.of)(),P=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe((0,ke.h)(W=>W!==this._menuItemInstance),(0,ke.h)(()=>this._menuOpen)):(0,Ke.of)();return(0,At.T)(s,y,P,u)}_handleMousedown(s){(0,de.X6)(s)||(this._openedBy=0===s.button?"mouse":void 0,this.triggersSubmenu()&&s.preventDefault())}_handleKeydown(s){const u=s.keyCode;(u===$e.K5||u===$e.L_)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(u===$e.SV&&"ltr"===this.dir||u===$e.oh&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(s){this.triggersSubmenu()?(s.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe((0,ke.h)(s=>s===this._menuItemInstance&&!s.disabled),Ze(0,it.E)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof Li&&this.menu._isAnimating?this.menu._animationDone.pipe((0,Xe.q)(1),Ze(0,it.E),(0,_e.R)(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(s){return(!this._portal||this._portal.templateRef!==s.templateRef)&&(this._portal=new ae.UE(s.templateRef,this._viewContainerRef)),this._portal}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(I.aV),o.Y36(o.SBq),o.Y36(o.s_b),o.Y36(ao),o.Y36(on,8),o.Y36(ln,10),o.Y36(Me.Is,8),o.Y36(de.tE),o.Y36(o.R0b))},g.\u0275dir=o.lG2({type:g,hostVars:3,hostBindings:function(s,u){1&s&&o.NdJ("click",function(P){return u._handleClick(P)})("mousedown",function(P){return u._handleMousedown(P)})("keydown",function(P){return u._handleKeydown(P)}),2&s&&o.uIk("aria-haspopup",u.menu?"menu":null)("aria-expanded",u.menuOpen)("aria-controls",u.menuOpen?u.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:["mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:["matMenuTriggerFor","menu"],menuData:["matMenuTriggerData","menuData"],restoreFocus:["matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"}}),g})(),Bi=(()=>{class g extends bo{}return g.\u0275fac=function(){let l;return function(u){return(l||(l=o.n5z(g)))(u||g)}}(),g.\u0275dir=o.lG2({type:g,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],exportAs:["matMenuTrigger"],features:[o.qOj]}),g})(),or=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({providers:[xi],imports:[ie.ez,Pe.si,Pe.BQ,I.U8,T.ZD,Pe.BQ]}),g})();const dn=["tooltip"],ai=new o.OlP("mat-tooltip-scroll-strategy"),Vi={provide:ai,deps:[I.aV],useFactory:function Bn(g){return()=>g.scrollStrategies.reposition({scrollThrottle:20})}},Yt=new o.OlP("mat-tooltip-default-options",{providedIn:"root",factory:function xt(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}}),Tn="tooltip-panel",Gn=(0,A.i$)({passive:!0});let Qt=(()=>{class g{get position(){return this._position}set position(s){var u;s!==this._position&&(this._position=s,this._overlayRef)&&(this._updatePosition(this._overlayRef),null===(u=this._tooltipInstance)||void 0===u||u.show(0),this._overlayRef.updatePosition())}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(s){this._positionAtOrigin=(0,Ve.Ig)(s),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(s){this._disabled=(0,Ve.Ig)(s),this._disabled?this.hide(0):this._setupPointerEnterEventsIfNeeded()}get showDelay(){return this._showDelay}set showDelay(s){this._showDelay=(0,Ve.su)(s)}get hideDelay(){return this._hideDelay}set hideDelay(s){this._hideDelay=(0,Ve.su)(s),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(s){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message,"tooltip"),this._message=null!=s?String(s).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}get tooltipClass(){return this._tooltipClass}set tooltipClass(s){this._tooltipClass=s,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(s,u,y,P,W,he,Le,qe,vt,Dt,Bt,qt){this._overlay=s,this._elementRef=u,this._scrollDispatcher=y,this._viewContainerRef=P,this._ngZone=W,this._platform=he,this._ariaDescriber=Le,this._focusMonitor=qe,this._dir=Dt,this._defaultOptions=Bt,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._viewportMargin=8,this._cssClassPrefix="mat",this._showDelay=this._defaultOptions.showDelay,this._hideDelay=this._defaultOptions.hideDelay,this.touchGestures="auto",this._message="",this._passiveListeners=[],this._destroyed=new Je.x,this._scrollStrategy=vt,this._document=qt,Bt&&(Bt.position&&(this.position=Bt.position),Bt.positionAtOrigin&&(this.positionAtOrigin=Bt.positionAtOrigin),Bt.touchGestures&&(this.touchGestures=Bt.touchGestures)),Dt.change.pipe((0,_e.R)(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe((0,_e.R)(this._destroyed)).subscribe(s=>{s?"keyboard"===s&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const s=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([u,y])=>{s.removeEventListener(u,y,Gn)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(s,this.message,"tooltip"),this._focusMonitor.stopMonitoring(s)}show(s=this.showDelay,u){var y;if(this.disabled||!this.message||this._isTooltipVisible())return void(null===(y=this._tooltipInstance)||void 0===y||y._cancelPendingAnimations());const P=this._createOverlay(u);this._detach(),this._portal=this._portal||new ae.C5(this._tooltipComponent,this._viewContainerRef);const W=this._tooltipInstance=P.attach(this._portal).instance;W._triggerElement=this._elementRef.nativeElement,W._mouseLeaveHideDelay=this._hideDelay,W.afterHidden().pipe((0,_e.R)(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),W.show(s)}hide(s=this.hideDelay){const u=this._tooltipInstance;u&&(u.isVisible()?u.hide(s):(u._cancelPendingAnimations(),this._detach()))}toggle(s){this._isTooltipVisible()?this.hide():this.show(void 0,s)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(s){var u;if(this._overlayRef){const W=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!s)&&W._origin instanceof o.SBq)return this._overlayRef;this._detach()}const y=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),P=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin&&s||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(y);return P.positionChanges.pipe((0,_e.R)(this._destroyed)).subscribe(W=>{this._updateCurrentPositionClass(W.connectionPair),this._tooltipInstance&&W.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:P,panelClass:`${this._cssClassPrefix}-${Tn}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe((0,_e.R)(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe((0,_e.R)(this._destroyed)).subscribe(()=>{var W;return null===(W=this._tooltipInstance)||void 0===W?void 0:W._handleBodyInteraction()}),this._overlayRef.keydownEvents().pipe((0,_e.R)(this._destroyed)).subscribe(W=>{this._isTooltipVisible()&&W.keyCode===$e.hY&&!(0,$e.Vb)(W)&&(W.preventDefault(),W.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),null!==(u=this._defaultOptions)&&void 0!==u&&u.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(s){const u=s.getConfig().positionStrategy,y=this._getOrigin(),P=this._getOverlayPosition();u.withPositions([this._addOffset({...y.main,...P.main}),this._addOffset({...y.fallback,...P.fallback})])}_addOffset(s){return s}_getOrigin(){const s=!this._dir||"ltr"==this._dir.value,u=this.position;let y;"above"==u||"below"==u?y={originX:"center",originY:"above"==u?"top":"bottom"}:"before"==u||"left"==u&&s||"right"==u&&!s?y={originX:"start",originY:"center"}:("after"==u||"right"==u&&s||"left"==u&&!s)&&(y={originX:"end",originY:"center"});const{x:P,y:W}=this._invertPosition(y.originX,y.originY);return{main:y,fallback:{originX:P,originY:W}}}_getOverlayPosition(){const s=!this._dir||"ltr"==this._dir.value,u=this.position;let y;"above"==u?y={overlayX:"center",overlayY:"bottom"}:"below"==u?y={overlayX:"center",overlayY:"top"}:"before"==u||"left"==u&&s||"right"==u&&!s?y={overlayX:"end",overlayY:"center"}:("after"==u||"right"==u&&s||"left"==u&&!s)&&(y={overlayX:"start",overlayY:"center"});const{x:P,y:W}=this._invertPosition(y.overlayX,y.overlayY);return{main:y,fallback:{overlayX:P,overlayY:W}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),this._ngZone.onMicrotaskEmpty.pipe((0,Xe.q)(1),(0,_e.R)(this._destroyed)).subscribe(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()}))}_setTooltipClass(s){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=s,this._tooltipInstance._markForCheck())}_invertPosition(s,u){return"above"===this.position||"below"===this.position?"top"===u?u="bottom":"bottom"===u&&(u="top"):"end"===s?s="start":"start"===s&&(s="end"),{x:s,y:u}}_updateCurrentPositionClass(s){const{overlayY:u,originX:y,originY:P}=s;let W;if(W="center"===u?this._dir&&"rtl"===this._dir.value?"end"===y?"left":"right":"start"===y?"left":"right":"bottom"===u&&"top"===P?"above":"below",W!==this._currentPosition){const he=this._overlayRef;if(he){const Le=`${this._cssClassPrefix}-${Tn}-`;he.removePanelClass(Le+this._currentPosition),he.addPanelClass(Le+W)}this._currentPosition=W}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",s=>{let u;this._setupPointerExitEventsIfNeeded(),void 0!==s.x&&void 0!==s.y&&(u=s),this.show(void 0,u)}]):"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",s=>{var u;const y=null===(u=s.targetTouches)||void 0===u?void 0:u[0],P=y?{x:y.clientX,y:y.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>this.show(void 0,P),500)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;const s=[];if(this._platformSupportsMouseEvents())s.push(["mouseleave",u=>{var y;const P=u.relatedTarget;(!P||null===(y=this._overlayRef)||void 0===y||!y.overlayElement.contains(P))&&this.hide()}],["wheel",u=>this._wheelListener(u)]);else if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const u=()=>{clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};s.push(["touchend",u],["touchcancel",u])}this._addListeners(s),this._passiveListeners.push(...s)}_addListeners(s){s.forEach(([u,y])=>{this._elementRef.nativeElement.addEventListener(u,y,Gn)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(s){if(this._isTooltipVisible()){const u=this._document.elementFromPoint(s.clientX,s.clientY),y=this._elementRef.nativeElement;u!==y&&!y.contains(u)&&this.hide()}}_disableNativeGesturesIfNecessary(){const s=this.touchGestures;if("off"!==s){const u=this._elementRef.nativeElement,y=u.style;("on"===s||"INPUT"!==u.nodeName&&"TEXTAREA"!==u.nodeName)&&(y.userSelect=y.msUserSelect=y.webkitUserSelect=y.MozUserSelect="none"),("on"===s||!u.draggable)&&(y.webkitUserDrag="none"),y.touchAction="none",y.webkitTapHighlightColor="transparent"}}}return g.\u0275fac=function(s){o.$Z()},g.\u0275dir=o.lG2({type:g,inputs:{position:["matTooltipPosition","position"],positionAtOrigin:["matTooltipPositionAtOrigin","positionAtOrigin"],disabled:["matTooltipDisabled","disabled"],showDelay:["matTooltipShowDelay","showDelay"],hideDelay:["matTooltipHideDelay","hideDelay"],touchGestures:["matTooltipTouchGestures","touchGestures"],message:["matTooltip","message"],tooltipClass:["matTooltipClass","tooltipClass"]}}),g})(),Io=(()=>{class g extends Qt{constructor(s,u,y,P,W,he,Le,qe,vt,Dt,Bt,qt){super(s,u,y,P,W,he,Le,qe,vt,Dt,Bt,qt),this._tooltipComponent=kr,this._cssClassPrefix="mat-mdc",this._viewportMargin=8}_addOffset(s){const y=!this._dir||"ltr"==this._dir.value;return"top"===s.originY?s.offsetY=-8:"bottom"===s.originY?s.offsetY=8:"start"===s.originX?s.offsetX=y?-8:8:"end"===s.originX&&(s.offsetX=y?8:-8),s}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(I.aV),o.Y36(o.SBq),o.Y36(T.mF),o.Y36(o.s_b),o.Y36(o.R0b),o.Y36(A.t4),o.Y36(de.$s),o.Y36(de.tE),o.Y36(ai),o.Y36(Me.Is,8),o.Y36(Yt,8),o.Y36(ie.K0))},g.\u0275dir=o.lG2({type:g,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],exportAs:["matTooltip"],features:[o.qOj]}),g})(),zo=(()=>{class g{constructor(s,u){this._changeDetectorRef=s,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new Je.x,this._animationsDisabled="NoopAnimations"===u}show(s){clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},s)}hide(s){clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},s)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:s}){(!s||!this._triggerElement.contains(s))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){}_handleAnimationEnd({animationName:s}){(s===this._showAnimation||s===this._hideAnimation)&&this._finalizeAnimation(s===this._showAnimation)}_cancelPendingAnimations(){clearTimeout(this._showTimeoutId),clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(s){s?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(s){const u=this._tooltip.nativeElement,y=this._showAnimation,P=this._hideAnimation;if(u.classList.remove(s?P:y),u.classList.add(s?y:P),this._isVisible=s,s&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const W=getComputedStyle(u);("0s"===W.getPropertyValue("animation-duration")||"none"===W.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}s&&this._onShow(),this._animationsDisabled&&(u.classList.add("_mat-animation-noopable"),this._finalizeAnimation(s))}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.sBO),o.Y36(o.QbO,8))},g.\u0275dir=o.lG2({type:g}),g})(),kr=(()=>{class g extends zo{constructor(s,u,y){super(s,y),this._elementRef=u,this._isMultiline=!1,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide"}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const s=this._elementRef.nativeElement.getBoundingClientRect();return s.height>24&&s.width>=200}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.sBO),o.Y36(o.SBq),o.Y36(o.QbO,8))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-tooltip-component"]],viewQuery:function(s,u){if(1&s&&o.Gf(dn,7),2&s){let y;o.iGM(y=o.CRH())&&(u._tooltip=y.first)}},hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(s,u){1&s&&o.NdJ("mouseleave",function(P){return u._handleMouseLeave(P)}),2&s&&o.Udp("zoom",u.isVisible()?1:null)},features:[o.qOj],decls:4,vars:4,consts:[[1,"mdc-tooltip","mdc-tooltip--shown","mat-mdc-tooltip",3,"ngClass","animationend"],["tooltip",""],[1,"mdc-tooltip__surface","mdc-tooltip__surface-animation"]],template:function(s,u){1&s&&(o.TgZ(0,"div",0,1),o.NdJ("animationend",function(P){return u._handleAnimationEnd(P)}),o.TgZ(2,"div",2),o._uU(3),o.qZA()()),2&s&&(o.ekj("mdc-tooltip--multiline",u._isMultiline),o.Q6J("ngClass",u.tooltipClass),o.xp6(3),o.Oqu(u.message))},dependencies:[ie.mk],styles:['.mdc-tooltip__surface{word-break:var(--mdc-tooltip-word-break, normal);overflow-wrap:anywhere}.mdc-tooltip{position:fixed;display:none;z-index:9}.mdc-tooltip-wrapper--rich{position:relative}.mdc-tooltip--shown,.mdc-tooltip--showing,.mdc-tooltip--hide{display:inline-flex}.mdc-tooltip--shown.mdc-tooltip--rich,.mdc-tooltip--showing.mdc-tooltip--rich,.mdc-tooltip--hide.mdc-tooltip--rich{display:inline-block;left:-320px;position:absolute}.mdc-tooltip__surface{line-height:16px;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center}.mdc-tooltip__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-tooltip__surface::before{border-color:CanvasText}}.mdc-tooltip--rich .mdc-tooltip__surface{align-items:flex-start;display:flex;flex-direction:column;min-height:24px;min-width:40px;max-width:320px;position:relative}.mdc-tooltip--multiline .mdc-tooltip__surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mdc-tooltip__surface,.mdc-tooltip--multiline .mdc-tooltip__surface[dir=rtl]{text-align:right}.mdc-tooltip__surface .mdc-tooltip__title{margin:0 8px}.mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(200px - (2 * 8px));margin:8px;text-align:left}[dir=rtl] .mdc-tooltip__surface .mdc-tooltip__content,.mdc-tooltip__surface .mdc-tooltip__content[dir=rtl]{text-align:right}.mdc-tooltip--rich .mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(320px - (2 * 8px));align-self:stretch}.mdc-tooltip__surface .mdc-tooltip__content-link{text-decoration:none}.mdc-tooltip--rich-actions,.mdc-tooltip__content,.mdc-tooltip__title{z-index:1}.mdc-tooltip__surface-animation{opacity:0;transform:scale(0.8);will-change:transform,opacity}.mdc-tooltip--shown .mdc-tooltip__surface-animation{transform:scale(1);opacity:1}.mdc-tooltip--hide .mdc-tooltip__surface-animation{transform:scale(1)}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{position:absolute;height:24px;width:24px;transform:rotate(35deg) skewY(20deg) scaleX(0.9396926208)}.mdc-tooltip__caret-surface-top .mdc-elevation-overlay,.mdc-tooltip__caret-surface-bottom .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-tooltip__caret-surface-bottom{outline:1px solid rgba(0,0,0,0);z-index:-1}@media screen and (forced-colors: active){.mdc-tooltip__caret-surface-bottom{outline-color:CanvasText}}.mdc-tooltip__surface{background-color:var(--mdc-plain-tooltip-container-color, #fff)}.mdc-tooltip__surface{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__surface{color:var(--mdc-plain-tooltip-supporting-text-color, #000)}.mdc-tooltip__surface{font-family:var(--mdc-plain-tooltip-supporting-text-font, inherit);font-size:var(--mdc-plain-tooltip-supporting-text-size, inherit);font-weight:var(--mdc-plain-tooltip-supporting-text-weight, inherit);letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, inherit)}.mat-mdc-tooltip{position:relative;transform:scale(0)}.mat-mdc-tooltip::before{content:"";top:-8px;right:-8px;bottom:-8px;left:-8px;z-index:-1;position:absolute}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0}),g})(),ei=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({providers:[Vi],imports:[de.rt,ie.ez,I.U8,Pe.BQ,Pe.BQ,T.ZD]}),g})();function ti(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",14),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw(2);return o.KtG(W.launch(P))}),o.TgZ(1,"div",15),o._UZ(2,"img",9),o._uU(3),o.qZA()()}if(2&g){const s=l.$implicit,u=o.oxw(2);o.xp6(2),o.Q6J("src",u.getTransportIcon(s.id),o.LSH),o.xp6(1),o.hij(" ",s.name," ")}}function ko(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",14),o.NdJ("click",function(){o.CHM(s);const y=o.oxw(2);return o.KtG(y.action("release"))}),o.TgZ(1,"i",16),o._uU(2,"delete"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4," Release service"),o.qZA()()}}function Ui(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",14),o.NdJ("click",function(){o.CHM(s);const y=o.oxw(2);return o.KtG(y.action("reset"))}),o.TgZ(1,"i",16),o._uU(2,"refresh"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4," Reset service"),o.qZA()()}}function Po(g,l){if(1&g&&(o.TgZ(0,"button",17)(1,"uds-translate"),o._uU(2,"Connections"),o.qZA()()),2&g){o.oxw();const s=o.MAs(2);o.Q6J("matMenuTriggerFor",s)}}function rr(g,l){if(1&g&&(o.TgZ(0,"button",17)(1,"uds-translate"),o._uU(2,"Actions"),o.qZA()()),2&g){o.oxw();const s=o.MAs(5);o.Q6J("matMenuTriggerFor",s)}}function En(g,l){if(1&g&&(o.TgZ(0,"button",18)(1,"i",16),o._uU(2,"menu"),o.qZA()()),2&g){o.oxw();const s=o.MAs(9);o.Q6J("matMenuTriggerFor",s)}}function Pr(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div")(1,"mat-menu",null,1),o.YNc(3,ti,4,2,"button",2),o.qZA(),o.TgZ(4,"mat-menu",null,3),o.YNc(6,ko,5,0,"button",4),o.YNc(7,Ui,5,0,"button",4),o.qZA(),o.TgZ(8,"mat-menu",null,5),o.YNc(10,Po,3,1,"button",6),o.YNc(11,rr,3,1,"button",6),o.qZA(),o.TgZ(12,"div",7)(13,"div",8),o.NdJ("click",function(){o.CHM(s);const y=o.oxw();return o.KtG(y.launch(null))}),o._UZ(14,"img",9),o.qZA(),o.TgZ(15,"div",10)(16,"span",11),o._uU(17),o.qZA()(),o.TgZ(18,"div",12),o.YNc(19,En,3,1,"button",13),o.qZA()()()}if(2&g){const s=o.oxw();o.xp6(3),o.Q6J("ngForOf",s.service.transports),o.xp6(3),o.Q6J("ngIf",s.service.allow_users_remove),o.xp6(1),o.Q6J("ngIf",s.service.allow_users_reset),o.xp6(3),o.Q6J("ngIf",s.showTransportsMenu()),o.xp6(1),o.Q6J("ngIf",s.hasActions()),o.xp6(1),o.Q6J("ngClass",s.serviceClass)("matTooltipDisabled",""===s.serviceTooltip)("matTooltip",s.serviceTooltip),o.xp6(2),o.Q6J("src",s.serviceImage,o.LSH),o.xp6(2),o.Q6J("ngClass",s.serviceNameClass),o.xp6(1),o.Oqu(s.serviceName),o.xp6(2),o.Q6J("ngIf",s.hasMenu())}}class xo{constructor(l){this.api=l,this.service={}}get serviceImage(){return this.api.galleryImageURL(this.service.imageId)}get serviceName(){let l=this.service.visual_name;return l.length>32&&(l=l.substring(0,29)+"..."),l}get serviceTooltip(){return null!==this.service.to_be_replaced?this.service.to_be_replaced_text:this.service.maintenance?django.gettext("Service is in maintenance"):this.service.not_accesible?this.service.custom_calendar_text:this.serviceName!==this.service.name?this.service.name:""}get serviceClass(){const l=["service"];return null!=this.service.to_be_replaced?l.push("tobereplaced"):this.service.maintenance?l.push("maintenance"):this.service.not_accesible?l.push("forbidden"):this.service.in_use&&l.push("inuse"),l.length>1&&l.push("alert"),l}get serviceNameClass(){const l=[],s=Math.min(4*Math.floor((this.service.visual_name.length-1)/4),28);return s>=16&&l.push("small-"+s.toString()),l}ngOnInit(){}getTransportIcon(l){return this.api.transportIconURL(l)}hasActions(){return this.service.allow_users_remove||this.service.allow_users_reset}showTransportsMenu(){return this.service.transports.length>1&&this.service.show_transports}hasMenu(){return!1===this.service.maintenance&&!1===this.service.not_accesible&&(this.hasActions()||this.showTransportsMenu())}notifyNotLaunching(l){this.api.gui.alert('

'+django.gettext("Launcher")+"

",l)}launch(l){if(this.service.maintenance)this.notifyNotLaunching(django.gettext("Service is in maintenance and cannot be launched"));else if(this.service.not_accesible){const s=this.service.custom_calendar_text||this.api.config.messages.calendarDenied;this.notifyNotLaunching('

'+django.gettext("This service is currently not accesible due to schedule restrictions.")+'

'+s+'

')}else(null===l||!1===this.service.show_transports)&&(l=this.service.transports[0]),this.api.executeCustomJSForServiceLaunch(),this.api.launchURL(l.link)}action(l){const s=("release"===l?django.gettext("Release service: "):django.gettext("Reset service: "))+" "+this.serviceName,u="release"===l?django.gettext("Service released"):django.gettext("Service reseted");this.api.gui.yesno(s,django.gettext("Are you sure?")).then(y=>{y&&this.api.action(l,this.service.id).then(P=>{P&&this.api.gui.alert(s,u)})})}}function $o(g,l){1&g&&o._UZ(0,"uds-service",8),2&g&&o.Q6J("service",l.$implicit)}function Go(g,l){if(1&g&&(o.TgZ(0,"mat-expansion-panel",1)(1,"mat-expansion-panel-header",2)(2,"mat-panel-title")(3,"div",3),o._UZ(4,"img",4),o._uU(5),o.qZA()(),o.TgZ(6,"mat-panel-description",5),o._uU(7),o.qZA()(),o.TgZ(8,"div",6),o.YNc(9,$o,1,1,"uds-service",7),o.qZA()()),2&g){const s=o.oxw();o.Q6J("expanded",s.expanded),o.xp6(1),o.Q6J("collapsedHeight","3rem")("expandedHeight","5rem"),o.xp6(3),o.Q6J("src",s.groupImage,o.LSH),o.xp6(1),o.hij(" ",s.group.name,""),o.xp6(2),o.hij(" ",s.group.comments," "),o.xp6(2),o.Q6J("ngForOf",s.sortedServices)}}xo.\u0275fac=function(l){return new(l||xo)(o.Y36(H.n))},xo.\u0275cmp=o.Xpm({type:xo,selectors:[["uds-service"]],inputs:{service:"service"},decls:1,vars:1,consts:[[4,"ngIf"],["transports",""],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["actions",""],["mat-menu-item","",3,"click",4,"ngIf"],["menu",""],["mat-menu-item","",3,"matMenuTriggerFor",4,"ngIf"],["matTooltipShowDelay","1000","matTooltipPosition","above",3,"ngClass","matTooltipDisabled","matTooltip"],[1,"icon",3,"click"],[3,"src"],[1,"name"],[3,"ngClass"],[1,"menu"],["mat-icon-button","","class","service-menu",3,"matMenuTriggerFor",4,"ngIf"],["mat-menu-item","",3,"click"],[1,"transport-item"],[1,"material-icons"],["mat-menu-item","",3,"matMenuTriggerFor"],["mat-icon-button","",1,"service-menu",3,"matMenuTriggerFor"]],template:function(l,s){1&l&&o.YNc(0,Pr,20,12,"div",0),2&l&&o.Q6J("ngIf",s.service.transports.length>0)},dependencies:[ie.mk,ie.sg,ie.O5,Ce.RK,Ti,ln,Bi,Io,Z.P],styles:['.service[_ngcontent-%COMP%]{width:10rem;margin:0 1rem 2rem 0;padding:.5rem 0 1rem;border-radius:1rem;box-shadow:0 12px 18px #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);border:1px;border-style:solid;border-color:#00000038;display:flex;flex:1;align-items:center;justify-content:flex-start;flex-flow:column wrap;position:relative}.service-menu[_ngcontent-%COMP%]{border-radius:.6rem!important}.service[_ngcontent-%COMP%]:hover{box-shadow:0 2px 3px #00000040,0 10px 10px #00000038}.icon[_ngcontent-%COMP%]{cursor:pointer;display:flex;justify-content:center;transition:all .3s cubic-bezier(.25,.8,.25,1);width:6rem;height:6rem;margin:.5rem}.service[_ngcontent-%COMP%]:not(.forbidden):not(.maintenance):hover .icon[_ngcontent-%COMP%]{transition:all .3s cubic-bezier(.25,.8,.25,1);width:7rem;height:7rem;margin:0}.icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;overflow:hidden}.forbidden[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%], .maintenance[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{opacity:.5;z-index:10}.tobereplaced[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{opacity:.7;z-index:10}.name[_ngcontent-%COMP%]{margin-top:.5em;font-size:1.05rem;width:calc(100% - 1em);display:flex;flex:1 0 auto;flex-flow:row;align-items:center;justify-content:center;padding:0 .5em;overflow:hidden;height:2.4em;text-align:center}.small-16[_ngcontent-%COMP%]{font-size:1.05rem}.small-20[_ngcontent-%COMP%]{font-size:1rem}.small-24[_ngcontent-%COMP%]{font-size:.95rem}.small-28[_ngcontent-%COMP%]{font-size:.9rem}.menu[_ngcontent-%COMP%]{position:absolute;top:2px;right:2px}.menu[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{cursor:pointer;background-color:#fffc}.menu[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]:hover{box-shadow:0 2px 3px #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1)}.transport-item[_ngcontent-%COMP%]{display:flex;align-items:center}.transport-item[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:2em;margin-right:.4em}.alert[_ngcontent-%COMP%]:before{position:absolute;top:1rem;left:1rem;font-size:8rem;font-weight:500;font-family:Material Icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;font-feature-settings:"liga";text-shadow:0 6px 8px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);z-index:1}.forbidden[_ngcontent-%COMP%]:before{color:#fc0000;content:"update"}.maintenance[_ngcontent-%COMP%]:before{color:#fcb900;content:"build"}.tobereplaced[_ngcontent-%COMP%]:before{color:#fc0000;content:"delete_forever"} .dark-theme .menu .mat-mdc-icon-button{background-color:#0003!important}']});class Oi{constructor(l){this.api=l,this.services=[],this.group={},this.expanded=!1}get groupImage(){return this.api.galleryImageURL(this.group.imageUuid)}get hasVisibleServices(){return this.services.length>0}get sortedServices(){return this.services.sort((l,s)=>l.name>s.name?1:l.namethis.update(l.nativeElement.value))).subscribe()}update(l){this.updateEvent.emit(l.toLowerCase())}}function Ro(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"uds-filter",3),o.NdJ("updateEvent",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P.update(y))}),o.qZA()}}function Yo(g,l){if(1&g&&o._UZ(0,"uds-services-group",4),2&g){const s=l.$implicit,u=l.index;o.Q6J("services",s.services)("group",s.group)("expanded",0===u)}}function Rr(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"uds-filter",3),o.NdJ("updateEvent",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P.update(y))}),o.qZA()}}qi.\u0275fac=function(l){return new(l||qi)},qi.\u0275cmp=o.Xpm({type:qi,selectors:[["uds-filter"]],viewQuery:function(l,s){if(1&l&&o.Gf(Wo,7),2&l){let u;o.iGM(u=o.CRH())&&(s.input=u.first)}},outputs:{updateEvent:"updateEvent"},decls:9,vars:0,consts:[[1,"filter"],["floatLabel","auto",1,"nav-input-field"],["matInput","","type","text"],["input",""],["matSuffix","",1,"material-icons"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"mat-form-field",1)(2,"mat-label")(3,"uds-translate"),o._uU(4,"Filter"),o.qZA()(),o._UZ(5,"input",2,3),o.TgZ(7,"i",4),o._uU(8,"search"),o.qZA()()())},dependencies:[Kn.KE,Kn.hX,Kn.R9,ar.Nt,Z.P],styles:[".filter[_ngcontent-%COMP%]{margin-top:.5rem;display:flex;justify-content:flex-end;font-size:.8rem}"]});class Fr{constructor(l){this.group=l,this.services=[]}}class Do{constructor(l){this.api=l,this.servicesInformation={autorun:!1,ip:"",nets:"",services:[],transports:""},this.group=[]}update(l){this.updateServices(l)}ngOnInit(){this.api.config.urls.launch?this.api.logout():this.loadServices()}autorun(){if(this.servicesInformation.autorun&&1===this.servicesInformation.services.length){if(!this.servicesInformation.services[0].maintenance)return this.api.executeCustomJSForServiceLaunch(),this.api.launchURL(this.servicesInformation.services[0].transports[0].link),!0;this.api.gui.alert(django.gettext("Warning"),django.gettext("Service is in maintenance and cannot be executed"))}return!1}loadServices(){this.api.user.isRestricted&&this.api.logout(),this.api.getServicesInformation().then(l=>{this.servicesInformation=l,this.autorun(),this.updateServices()})}updateServices(l=""){this.group=[];let s=null;this.servicesInformation.services.filter(u=>!l||u.visual_name.toLowerCase().includes(l)||u.group.name.toLowerCase().includes(l)).sort((u,y)=>u.group.priority!==y.group.priority?u.group.priority-y.group.priority:u.group.id>y.group.id?1:u.group.id{(null===s||u.group.id!==s.group.id)&&(null!==s&&this.group.push(s),s=new Fr(u.group)),s.services.push(u)}),null!==s&&this.group.push(s)}}Do.\u0275fac=function(l){return new(l||Do)(o.Y36(H.n))},Do.\u0275cmp=o.Xpm({type:Do,selectors:[["uds-services-page"]],decls:6,vars:3,consts:[[3,"updateEvent",4,"ngIf"],[1,"services-groups"],[3,"services","group","expanded",4,"ngFor","ngForOf"],[3,"updateEvent"],[3,"services","group","expanded"]],template:function(l,s){1&l&&(o.YNc(0,Ro,1,0,"uds-filter",0),o.TgZ(1,"div",1)(2,"mat-accordion"),o.YNc(3,Yo,1,3,"uds-services-group",2),o.qZA()(),o.YNc(4,Rr,1,0,"uds-filter",0),o._UZ(5,"uds-staff-info")),2&l&&(o.Q6J("ngIf",s.servicesInformation.services.length>=s.api.config.min_for_filter&&s.api.config.site_filter_on_top),o.xp6(3),o.Q6J("ngForOf",s.group),o.xp6(1),o.Q6J("ngIf",s.servicesInformation.services.length>=s.api.config.min_for_filter&&!s.api.config.site_filter_on_top))},dependencies:[ie.sg,ie.O5,K,Oi,mi,qi],styles:[".services-groups[_ngcontent-%COMP%]{padding-top:1rem}"]});var lr=b(5861);class Xi{constructor(l,s){this.api=l,this.route=s,this.error="",this.returnUrl="/"}ngOnInit(){var l=this;return(0,lr.Z)(function*(){yield l.getError()})()}getError(){var l=this;return(0,lr.Z)(function*(){const s=l.route.snapshot.paramMap.get("id")||"-1";"19"===s&&(l.returnUrl="/mfa"),l.error=(yield l.api.getErrorInformation(s)).error})()}}Xi.\u0275fac=function(l){return new(l||Xi)(o.Y36(H.n),o.Y36(Q.gz))},Xi.\u0275cmp=o.Xpm({type:Xi,selectors:[["uds-error"]],decls:14,vars:2,consts:[[1,"error-container"],[1,"graph"],["viewBox","0 0 55 41","xmlns","http://www.w3.org/2000/svg",1,"bird"],["d","M35.5 5L54.7.6H32.3L35.5 5zM12.4 40.8l10.3-10.1-6.2-6.7-4.1 16.8zM33.8 5.3L30.5.8l-5.4 4 8.7.5zM20.8 4.6L8.8 0l1.9 4.1 10.1.5zM0 5l15.2 15.4 7.5-14.2L0 5zM34.2 6.8l-9.9-.5-8 15.2 7.4 8.1 8-7.9 2.5-14.9z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 32 32",1,"gears"],["d","M29.18 19.07c-1.678-2.908-.668-6.634 2.256-8.328L28.29 5.295c-.897.527-1.942.83-3.057.83-3.36 0-6.085-2.743-6.085-6.126h-6.29c.01 1.043-.25 2.102-.81 3.07-1.68 2.907-5.41 3.896-8.34 2.21L.566 10.727c.905.515 1.69 1.268 2.246 2.234 1.677 2.904.673 6.624-2.24 8.32l3.145 5.447c.895-.522 1.935-.82 3.044-.82 3.35 0 6.066 2.725 6.083 6.092h6.29c-.004-1.035.258-2.08.81-3.04 1.676-2.902 5.4-3.893 8.325-2.218l3.145-5.447c-.9-.515-1.678-1.266-2.232-2.226zM16 22.48c-3.578 0-6.48-2.902-6.48-6.48S12.423 9.52 16 9.52c3.578 0 6.48 2.902 6.48 6.48s-2.902 6.48-6.48 6.48z"],[1,"title"],[1,"description"],["mat-raised-button","","color","warn",3,"routerLink"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1),o.O4$(),o.TgZ(2,"svg",2),o._UZ(3,"path",3),o.qZA(),o.TgZ(4,"svg",4),o._UZ(5,"path",5),o.qZA()(),o.kcU(),o.TgZ(6,"h1",6)(7,"uds-translate"),o._uU(8,"An error has occurred"),o.qZA()(),o.TgZ(9,"p",7),o._uU(10),o.qZA(),o.TgZ(11,"a",8)(12,"uds-translate"),o._uU(13,"Return"),o.qZA()()()),2&l&&(o.xp6(10),o.hij(" ",s.error," "),o.xp6(1),o.Q6J("routerLink",s.returnUrl))},dependencies:[Q.rH,Ce.zs,Z.P],styles:[".error-container[_ngcontent-%COMP%]{margin-top:3rem;text-align:center;position:relative}.title[_ngcontent-%COMP%]{display:block;font-size:2rem;font-weight:lighter;text-align:center}.description[_ngcontent-%COMP%]{font-size:1.2rem;font-weight:lighter}.graph[_ngcontent-%COMP%]{position:relative}.gears[_ngcontent-%COMP%]{width:10rem;height:10rem;fill:#6aafe6;transition:easeInOutQuint();animation:_ngcontent-%COMP%_CogAnimation 5s infinite}.bird[_ngcontent-%COMP%]{position:absolute;width:3rem;height:3rem;fill:#30a9de;left:50%;top:50%;transform:translate(-50%,-50%)}@keyframes _ngcontent-%COMP%_CogAnimation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"]});class Fo{constructor(l){this.api=l,this.year=(new Date).getFullYear()}ngOnInit(){this.year<2021&&(this.year=2021)}}Fo.\u0275fac=function(l){return new(l||Fo)(o.Y36(H.n))},Fo.\u0275cmp=o.Xpm({type:Fo,selectors:[["uds-about"]],decls:46,vars:3,consts:[[1,"about"],["rel","noopener noreferrer","href","http://www.udsenterprise.com","target","_blank"],["rel","noopener noreferrer","href","https://github.com/dkmstr/openuds","target","_blank"],[1,"components"],["rel","noopener noreferrer","href","https://www.python.org/","target","_blank"],["rel","noopener noreferrer","href","https://www.typescriptlang.org/","target","_blank"],["rel","noopener noreferrer","href","https://www.djangoproject.com/","target","_blank"],["rel","noopener noreferrer","href","https://angular.io","target","_blank"],["rel","noopener noreferrer","href","https://guac-dev.org/","target","_blank"],["rel","noopener noreferrer","href","https://weasyprint.org/","target","_blank"],["rel","noopener noreferrer","href","https://kde-look.org/content/show.php/Crystal+Project?content=60475)","target","_blank"],["rel","noopener noreferrer","href","https://github.com/NitruxSA/flattr-icons","target","_blank"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"h1"),o._uU(2),o.qZA(),o.TgZ(3,"h3")(4,"a",1),o._uU(5),o.qZA()(),o.TgZ(6,"h4")(7,"uds-translate"),o._uU(8,"You can access UDS Open Source code at"),o.qZA(),o._uU(9,"\xa0"),o.TgZ(10,"a",2),o._uU(11,"OpenUDS github repository"),o.qZA()(),o.TgZ(12,"div",3)(13,"h2")(14,"uds-translate"),o._uU(15,"UDS has been developed using these components:"),o.qZA()(),o.TgZ(16,"ul")(17,"li")(18,"a",4),o._uU(19,"Python"),o.qZA()(),o.TgZ(20,"li")(21,"a",5),o._uU(22,"TypeScript"),o.qZA()(),o.TgZ(23,"li")(24,"a",6),o._uU(25,"Django"),o.qZA()(),o.TgZ(26,"li")(27,"a",7),o._uU(28,"Angular"),o.qZA()(),o.TgZ(29,"li")(30,"a",8),o._uU(31,"Guacamole"),o.qZA()(),o.TgZ(32,"li")(33,"a",9),o._uU(34,"weasyprint"),o.qZA()(),o.TgZ(35,"li")(36,"a",10),o._uU(37,"Crystal project icons"),o.qZA()(),o.TgZ(38,"li")(39,"a",11),o._uU(40,"Flattr Icons"),o.qZA()()(),o.TgZ(41,"p")(42,"small"),o._uU(43,"* "),o.TgZ(44,"uds-translate"),o._uU(45,"If you find that we missed any component, please let us know"),o.qZA()()()()()),2&l&&(o.xp6(2),o.AsE("Universal Desktop Services ",s.api.config.version," build ",s.api.config.version_stamp,""),o.xp6(3),o.hij(" \xa9 2012-",s.year," Virtual Cable S.L.U."))},dependencies:[Z.P],styles:["[_nghost-%COMP%]{display:flex;flex-flow:column;justify-content:center;align-items:center}.about[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{text-align:center}.about[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{text-align:center;font-size:1em;font-weight:400}.about[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{text-align:center}ul[_ngcontent-%COMP%]{padding:0}ul[_ngcontent-%COMP%]{list-style:none}ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{display:block;text-decoration:none;color:#000;background-color:#fff;line-height:30px;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#ccc;padding-left:10px;cursor:pointer}ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:#3e6b2d}ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-right:10px} .dark-theme .about{color:#fff!important} .dark-theme ul li a{color:#fff!important;background-color:inherit!important} .dark-theme ul li a:hover{color:#3e6b2d!important}"]});class Ko{constructor(l){this.api=l}ngOnInit(){this.api.config.urls.launch&&this.api.launchURL(this.api.config.urls.launch)}}Ko.\u0275fac=function(l){return new(l||Ko)(o.Y36(H.n))},Ko.\u0275cmp=o.Xpm({type:Ko,selectors:[["uds-launcher"]],decls:24,vars:0,consts:[[1,"launcher"],[1,"launcher-box"],["routerLink","/client-download"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1)(2,"h1")(3,"uds-translate"),o._uU(4,"UDS Service launcher"),o.qZA()(),o.TgZ(5,"h4")(6,"uds-translate"),o._uU(7,"The service you have requested is being launched."),o.qZA()(),o.TgZ(8,"h5")(9,"uds-translate"),o._uU(10,"Please, note that reloading this page will not work."),o.qZA()(),o.TgZ(11,"h5")(12,"uds-translate"),o._uU(13,"To relaunch service, you will have to do it from origin."),o.qZA()(),o.TgZ(14,"h6")(15,"uds-translate"),o._uU(16,"If the service does not launchs automatically, probably you dont have the UDS Client installed"),o.qZA()(),o.TgZ(17,"h6")(18,"uds-translate"),o._uU(19,"You can obtain it from the"),o.qZA(),o._uU(20,"\xa0"),o.TgZ(21,"a",2)(22,"uds-translate"),o._uU(23,"UDS Client download page"),o.qZA()()()()())},dependencies:[Q.rH,Z.P],styles:[".launcher[_ngcontent-%COMP%]{justify-content:center;display:flex;margin-top:1rem;font-size:larger}.launcher-box[_ngcontent-%COMP%]{box-shadow:0 12px 18px #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);border:1px;border-style:solid;border-radius:.5rem;border-color:#00000038;padding:1rem}.launcher-box[_ngcontent-%COMP%] h1[_ngcontent-%COMP%], h4[_ngcontent-%COMP%]{text-align:center}.launcher-box[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], h6[_ngcontent-%COMP%]{margin-top:.6rem;margin-bottom:.6rem;font-weight:400}"]});var li=b(433);const ws=["input"],As=["label"],cr=["*"],Lr=new o.OlP("mat-checkbox-default-options",{providedIn:"root",factory:Ts});function Ts(){return{color:"accent",clickAction:"check-indeterminate"}}const Eo={provide:li.JU,useExisting:(0,o.Gpc)(()=>Mo),multi:!0};class Zo{}let Ii=0;const Nr=Ts(),Hi=(0,Pe.sb)((0,Pe.pj)((0,Pe.Kr)((0,Pe.Id)(class{constructor(g){this._elementRef=g}}))));let dr=(()=>{class g extends Hi{get inputId(){return`${this.id||this._uniqueId}-input`}get required(){return this._required}set required(s){this._required=(0,Ve.Ig)(s)}constructor(s,u,y,P,W,he,Le){super(u),this._changeDetectorRef=y,this._ngZone=P,this._animationMode=he,this._options=Le,this.ariaLabel="",this.ariaLabelledby=null,this.labelPosition="after",this.name=null,this.change=new o.vpe,this.indeterminateChange=new o.vpe,this._onTouched=()=>{},this._currentAnimationClass="",this._currentCheckState=0,this._controlValueAccessorChangeFn=()=>{},this._checked=!1,this._disabled=!1,this._indeterminate=!1,this._options=this._options||Nr,this.color=this.defaultColor=this._options.color||Nr.color,this.tabIndex=parseInt(W)||0,this.id=this._uniqueId=`${s}${++Ii}`}ngAfterViewInit(){this._syncIndeterminate(this._indeterminate)}get checked(){return this._checked}set checked(s){const u=(0,Ve.Ig)(s);u!=this.checked&&(this._checked=u,this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(s){const u=(0,Ve.Ig)(s);u!==this.disabled&&(this._disabled=u,this._changeDetectorRef.markForCheck())}get indeterminate(){return this._indeterminate}set indeterminate(s){const u=s!=this._indeterminate;this._indeterminate=(0,Ve.Ig)(s),u&&(this._transitionCheckState(this._indeterminate?3:this.checked?1:2),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(s){this.checked=!!s}registerOnChange(s){this._controlValueAccessorChangeFn=s}registerOnTouched(s){this._onTouched=s}setDisabledState(s){this.disabled=s}_getAriaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"}_transitionCheckState(s){let u=this._currentCheckState,y=this._getAnimationTargetElement();if(u!==s&&y&&(this._currentAnimationClass&&y.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(u,s),this._currentCheckState=s,this._currentAnimationClass.length>0)){y.classList.add(this._currentAnimationClass);const P=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{y.classList.remove(P)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){var s;const u=null===(s=this._options)||void 0===s?void 0:s.clickAction;this.disabled||"noop"===u?!this.disabled&&"noop"===u&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==u&&Promise.resolve().then(()=>{this._indeterminate=!1,this.indeterminateChange.emit(this._indeterminate)}),this._checked=!this._checked,this._transitionCheckState(this._checked?1:2),this._emitChangeEvent())}_onInteractionEvent(s){s.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(s,u){if("NoopAnimations"===this._animationMode)return"";switch(s){case 0:if(1===u)return this._animationClasses.uncheckedToChecked;if(3==u)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case 2:return 1===u?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case 1:return 2===u?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case 3:return 1===u?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(s){const u=this._inputElement;u&&(u.nativeElement.indeterminate=s)}}return g.\u0275fac=function(s){o.$Z()},g.\u0275dir=o.lG2({type:g,viewQuery:function(s,u){if(1&s&&(o.Gf(ws,5),o.Gf(As,5),o.Gf(Pe.wG,5)),2&s){let y;o.iGM(y=o.CRH())&&(u._inputElement=y.first),o.iGM(y=o.CRH())&&(u._labelElement=y.first),o.iGM(y=o.CRH())&&(u.ripple=y.first)}},inputs:{ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],id:"id",required:"required",labelPosition:"labelPosition",name:"name",value:"value",checked:"checked",disabled:"disabled",indeterminate:"indeterminate"},outputs:{change:"change",indeterminateChange:"indeterminateChange"},features:[o.qOj]}),g})(),Mo=(()=>{class g extends dr{constructor(s,u,y,P,W,he){super("mat-mdc-checkbox-",s,u,y,P,W,he),this._animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"}}focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(s){const u=new Zo;return u.source=this,u.checked=s,u}_getAnimationTargetElement(){var s;return null===(s=this._inputElement)||void 0===s?void 0:s.nativeElement}_onInputClick(){super._handleInputClick()}_preventBubblingFromLabel(s){s.target&&this._labelElement.nativeElement.contains(s.target)&&s.stopPropagation()}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(o.sBO),o.Y36(o.R0b),o.$8M("tabindex"),o.Y36(o.QbO,8),o.Y36(Lr,8))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-checkbox"]],hostAttrs:[1,"mat-mdc-checkbox"],hostVars:12,hostBindings:function(s,u){2&s&&(o.Ikx("id",u.id),o.uIk("tabindex",null)("aria-label",null)("aria-labelledby",null),o.ekj("_mat-animation-noopable","NoopAnimations"===u._animationMode)("mdc-checkbox--disabled",u.disabled)("mat-mdc-checkbox-disabled",u.disabled)("mat-mdc-checkbox-checked",u.checked))},inputs:{disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matCheckbox"],features:[o._Bn([Eo]),o.qOj],ngContentSelectors:cr,decls:15,vars:19,consts:[[1,"mdc-form-field",3,"click"],[1,"mdc-checkbox"],["checkbox",""],[1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"checked","disabled","id","required","tabIndex","blur","click","change"],["input",""],[1,"mdc-checkbox__ripple"],[1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24","aria-hidden","true",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","",1,"mat-mdc-checkbox-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[3,"for"],["label",""]],template:function(s,u){if(1&s&&(o.F$t(),o.TgZ(0,"div",0),o.NdJ("click",function(P){return u._preventBubblingFromLabel(P)}),o.TgZ(1,"div",1,2)(3,"div",3),o.NdJ("click",function(){return u._onInputClick()}),o.qZA(),o.TgZ(4,"input",4,5),o.NdJ("blur",function(){return u._onBlur()})("click",function(){return u._onInputClick()})("change",function(P){return u._onInteractionEvent(P)}),o.qZA(),o._UZ(6,"div",6),o.TgZ(7,"div",7),o.O4$(),o.TgZ(8,"svg",8),o._UZ(9,"path",9),o.qZA(),o.kcU(),o._UZ(10,"div",10),o.qZA(),o._UZ(11,"div",11),o.qZA(),o.TgZ(12,"label",12,13),o.Hsn(14),o.qZA()()),2&s){const y=o.MAs(2);o.ekj("mdc-form-field--align-end","before"==u.labelPosition),o.xp6(4),o.ekj("mdc-checkbox--selected",u.checked),o.Q6J("checked",u.checked)("disabled",u.disabled)("id",u.inputId)("required",u.required)("tabIndex",u.tabIndex),o.uIk("aria-checked",u._getAriaChecked())("aria-label",u.ariaLabel||null)("aria-labelledby",u.ariaLabelledby)("aria-describedby",u.ariaDescribedby)("name",u.name)("value",u.value),o.xp6(7),o.Q6J("matRippleTrigger",y)("matRippleDisabled",u.disableRipple||u.disabled)("matRippleCentered",!0),o.xp6(1),o.Q6J("for",u.inputId)}},dependencies:[Pe.wG],styles:['.mdc-touch-target-wrapper{display:inline}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}.mdc-checkbox[hidden]{display:none}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{border-color:CanvasText}}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{border-color:CanvasText}}@media all and (-ms-high-contrast: none){.mdc-checkbox .mdc-checkbox__focus-ring{display:none}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox--touch{margin:calc((var(--mdc-checkbox-state-layer-size, 48px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mdc-checkbox--touch .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);width:var(--mdc-checkbox-state-layer-size, 48px);height:var(--mdc-checkbox-state-layer-size, 48px)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none}.mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color, rgba(0, 0, 0, 0.38));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:transparent;background-color:var(--mdc-checkbox-disabled-selected-icon-color, rgba(0, 0, 0, 0.38))}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);width:var(--mdc-checkbox-state-layer-size, 40px);height:var(--mdc-checkbox-state-layer-size, 40px)}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple{opacity:.04;transform:scale(1);transition:opacity 80ms 0 cubic-bezier(0, 0, 0.2, 1),transform 80ms 0 cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:not([disabled]):focus~.mdc-checkbox__ripple{opacity:.16}.mat-mdc-checkbox .mdc-checkbox__background{-webkit-print-color-adjust:exact;color-adjust:exact}.mat-mdc-checkbox._mat-animation-noopable *,.mat-mdc-checkbox._mat-animation-noopable *::before{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__native-control:focus:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, black)}.cdk-high-contrast-active .mat-mdc-checkbox.mat-mdc-checkbox-disabled{opacity:.5}.cdk-high-contrast-active .mat-mdc-checkbox .mdc-checkbox__checkmark{--mdc-checkbox-selected-checkmark-color: CanvasText;--mdc-checkbox-disabled-selected-checkmark-color: CanvasText}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),g})(),Vr=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({}),g})(),Ss=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({imports:[Pe.BQ,Pe.si,Vr,Pe.BQ,Vr]}),g})();function Qi(g,l){1&g&&(o.TgZ(0,"div",6)(1,"mat-checkbox",14)(2,"uds-translate"),o._uU(3,"Remember Me"),o.qZA()()())}function ur(g,l){1&g&&o._UZ(0,"input",15)}class Rn{constructor(l){this.api=l}ngOnInit(){document.getElementById("mfaform").action=this.api.config.urls.mfa,this.api.user.isLogged&&this.api.router.navigate(["/"]),this.api.errors.length>0&&this.api.gui.alert(django.gettext("Errors found"),"
"+this.api.errors.join("
")+"
")}launch(){return document.getElementById("mfaform").submit(),!0}}Rn.\u0275fac=function(l){return new(l||Rn)(o.Y36(H.n))},Rn.\u0275cmp=o.Xpm({type:Rn,selectors:[["uds-mfa"]],decls:22,vars:7,consts:[["id","mfaform","method","post",3,"ngSubmit"],[1,"mfa-container"],[1,"mfa-brand"],[3,"src"],[1,"mfa-info"],[1,"mfa-form"],[1,"mfa-field"],["matInput","","id","code","name","code","value","","required","","autofocus",""],["class","mfa-field",4,"ngIf"],["type","hidden","name","remember","value","0",4,"ngIf"],[1,"mfa-button"],["mat-stroked-button","","color","primary","type","submit"],[1,"mfa-html-container"],[1,"mfa-html",3,"innerHtml"],["id","remember","name","remember"],["type","hidden","name","remember","value","0"]],template:function(l,s){1&l&&(o.TgZ(0,"form",0),o.NdJ("ngSubmit",function(){return s.launch()}),o.TgZ(1,"div",1)(2,"div",2),o._UZ(3,"img",3),o.qZA(),o.TgZ(4,"div",4)(5,"uds-translate"),o._uU(6,"Login Verification"),o.qZA()(),o.TgZ(7,"div",5)(8,"div",6)(9,"mat-form-field")(10,"mat-label"),o._uU(11),o.qZA(),o._UZ(12,"input",7),o.qZA()(),o.YNc(13,Qi,4,0,"div",8),o.YNc(14,ur,1,0,"input",9),o.TgZ(15,"div",10)(16,"button",11)(17,"uds-translate"),o._uU(18,"Submit"),o.qZA()()()()()(),o.TgZ(19,"div",12),o._UZ(20,"div",13),o.ALo(21,"safeHtml"),o.qZA()),2&l&&(o.xp6(3),o.Q6J("src",s.api.staticURL("modern/img/login-img.png"),o.LSH),o.xp6(8),o.hij(" ",s.api.config.mfa.label," "),o.xp6(2),o.Q6J("ngIf",s.api.config.mfa.remember_device>0),o.xp6(1),o.Q6J("ngIf",s.api.config.mfa.remember_device<=0),o.xp6(6),o.Q6J("innerHtml",o.lcZ(21,5,s.api.config.mfa.html),o.oJD))},dependencies:[ie.O5,li._Y,li.JL,li.F,Ce.lW,Kn.KE,Kn.hX,ar.Nt,Mo,Z.P,Ee.z],styles:[".mfa-container[_ngcontent-%COMP%]{display:flex;flex-flow:column wrap;justify-content:center;align-items:center}.mfa-form[_ngcontent-%COMP%]{margin:0 1rem 2rem 0;min-width:32em;padding:1rem;box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0000001f,0 1px 5px #0003;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 auto;justify-content:center;flex-flow:column wrap;align-items:center;display:flex}.mfa-field[_ngcontent-%COMP%]{width:80%;margin:.5rem}.mfa-button[_ngcontent-%COMP%]{margin:2rem}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.mfa-info[_ngcontent-%COMP%]{margin:1rem}.mfa-html-container[_ngcontent-%COMP%]{display:flex;flex-flow:column wrap;justify-content:center;align-items:center;margin:1rem}@media only screen and (max-width: 744px){.mfa-form[_ngcontent-%COMP%]{min-width:80%}}"]});const hr=[{path:"",redirectTo:"services",pathMatch:"full"},{path:"services",component:Do,canActivate:[fe]},{path:"login",component:Se.G},{path:"login/:id",component:Se.G},{path:"mfa",component:Rn},{path:"client-download",component:se},{path:"downloads",component:Ie,canActivate:[fe]},{path:"error/:id",component:Xi},{path:"about",component:Fo},{path:"ticket/launcher",component:Ko},{path:"**",redirectTo:"services"}];class ji{}function fr(g){return new o.vHH(3e3,!1)}function ks(){return typeof window<"u"&&typeof window.document<"u"}function io(){return typeof process<"u"&&"[object process]"==={}.toString.call(process)}function Vn(g){switch(g.length){case 0:return new ot.ZN;case 1:return g[0];default:return new ot.ZE(g)}}function ia(g,l,s,u,y=new Map,P=new Map){const W=[],he=[];let Le=-1,qe=null;if(u.forEach(vt=>{const Dt=vt.get("offset"),Bt=Dt==Le,qt=Bt&&qe||new Map;vt.forEach(($t,Xt)=>{let wn=Xt,kn=$t;if("offset"!==Xt)switch(wn=l.normalizePropertyName(wn,W),kn){case ot.k1:kn=y.get(Xt);break;case ot.l3:kn=P.get(Xt);break;default:kn=l.normalizeStyleValue(Xt,wn,kn,W)}qt.set(wn,kn)}),Bt||he.push(qt),qe=qt,Le=Dt}),W.length)throw function fn(g){return new o.vHH(3502,!1)}();return he}function ds(g,l,s,u){switch(l){case"start":g.onStart(()=>u(s&&Ps(s,"start",g)));break;case"done":g.onDone(()=>u(s&&Ps(s,"done",g)));break;case"destroy":g.onDestroy(()=>u(s&&Ps(s,"destroy",g)))}}function Ps(g,l,s){const u=s.totalTime,P=Rs(g.element,g.triggerName,g.fromState,g.toState,l||g.phaseName,null==u?g.totalTime:u,!!s.disabled),W=g._data;return null!=W&&(P._data=W),P}function Rs(g,l,s,u,y="",P=0,W){return{element:g,triggerName:l,fromState:s,toState:u,phaseName:y,totalTime:P,disabled:!!W}}function Zn(g,l,s){let u=g.get(l);return u||g.set(l,u=s),u}function Hr(g){const l=g.indexOf(":");return[g.substring(1,l),g.slice(l+1)]}ji.\u0275fac=function(l){return new(l||ji)},ji.\u0275mod=o.oAB({type:ji}),ji.\u0275inj=o.cJS({imports:[Q.Bz.forRoot(hr,{}),Q.Bz]});let jr=(g,l)=>!1,qo=(g,l,s)=>[],zr=null;function $r(g){const l=g.parentNode||g.host;return l===zr?null:l}(io()||typeof Element<"u")&&(ks()?(zr=(()=>document.documentElement)(),jr=(g,l)=>{for(;l;){if(l===g)return!0;l=$r(l)}return!1}):jr=(g,l)=>g.contains(l),qo=(g,l,s)=>{if(s)return Array.from(g.querySelectorAll(l));const u=g.querySelector(l);return u?[u]:[]});let Ao=null,us=!1;const Ls=jr,ui=qo;let On=(()=>{class g{validateStyleProperty(s){return function oa(g){Ao||(Ao=function wa(){return typeof document<"u"?document.body:null}()||{},us=!!Ao.style&&"WebkitAppearance"in Ao.style);let l=!0;return Ao.style&&!function Fs(g){return"ebkit"==g.substring(1,6)}(g)&&(l=g in Ao.style,!l&&us&&(l="Webkit"+g.charAt(0).toUpperCase()+g.slice(1)in Ao.style)),l}(s)}matchesElement(s,u){return!1}containsElement(s,u){return Ls(s,u)}getParentElement(s){return $r(s)}query(s,u,y){return ui(s,u,y)}computeStyle(s,u,y){return y||""}animate(s,u,y,P,W,he=[],Le){return new ot.ZN(y,P)}}return g.\u0275fac=function(s){return new(s||g)},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})(),hs=(()=>{class g{}return g.NOOP=new On,g})();const L="ng-enter",le="ng-leave",je="ng-trigger",Qe=".ng-trigger",wt="ng-animating",nn=".ng-animating";function Zt(g){if("number"==typeof g)return g;const l=g.match(/^(-?[\.\d]+)(m?s)/);return!l||l.length<2?0:an(parseFloat(l[1]),l[2])}function an(g,l){return"s"===l?1e3*g:g}function Wt(g,l,s){return g.hasOwnProperty("duration")?g:function Mn(g,l,s){let y,P=0,W="";if("string"==typeof g){const he=g.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===he)return l.push(fr()),{duration:0,delay:0,easing:""};y=an(parseFloat(he[1]),he[2]);const Le=he[3];null!=Le&&(P=an(parseFloat(Le),he[4]));const qe=he[5];qe&&(W=qe)}else y=g;if(!s){let he=!1,Le=l.length;y<0&&(l.push(function zi(){return new o.vHH(3100,!1)}()),he=!0),P<0&&(l.push(function ci(){return new o.vHH(3101,!1)}()),he=!0),he&&l.splice(Le,0,fr())}return{duration:y,delay:P,easing:W}}(g,l,s)}function pn(g,l={}){return Object.keys(g).forEach(s=>{l[s]=g[s]}),l}function qn(g){const l=new Map;return Object.keys(g).forEach(s=>{l.set(s,g[s])}),l}function ii(g,l=new Map,s){if(s)for(let[u,y]of s)l.set(u,y);for(let[u,y]of g)l.set(u,y);return l}function po(g,l,s){return s?l+":"+s+";":""}function gr(g){let l="";for(let s=0;s{const P=Yr(y);s&&!s.has(y)&&s.set(y,g.style[P]),g.style[P]=u}),io()&&gr(g))}function ki(g,l){g.style&&(l.forEach((s,u)=>{const y=Yr(u);g.style[y]=""}),io()&&gr(g))}function Gr(g){return Array.isArray(g)?1==g.length?g[0]:(0,ot.vP)(g):g}const To=new RegExp("{{\\s*(.+?)\\s*}}","g");function Wr(g){let l=[];if("string"==typeof g){let s;for(;s=To.exec(g);)l.push(s[1]);To.lastIndex=0}return l}function _r(g,l,s){const u=g.toString(),y=u.replace(To,(P,W)=>{let he=l[W];return null==he&&(s.push(function as(g){return new o.vHH(3003,!1)}()),he=""),he.toString()});return y==u?g:y}function Qo(g){const l=[];let s=g.next();for(;!s.done;)l.push(s.value),s=g.next();return l}const al=/-+([a-z0-9])/g;function Yr(g){return g.replace(al,(...l)=>l[1].toUpperCase())}function aa(g){return g.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function hi(g,l,s){switch(l.type){case 7:return g.visitTrigger(l,s);case 0:return g.visitState(l,s);case 1:return g.visitTransition(l,s);case 2:return g.visitSequence(l,s);case 3:return g.visitGroup(l,s);case 4:return g.visitAnimate(l,s);case 5:return g.visitKeyframes(l,s);case 6:return g.visitStyle(l,s);case 8:return g.visitReference(l,s);case 9:return g.visitAnimateChild(l,s);case 10:return g.visitAnimateRef(l,s);case 11:return g.visitQuery(l,s);case 12:return g.visitStagger(l,s);default:throw function Ji(g){return new o.vHH(3004,!1)}()}}function la(g,l){return window.getComputedStyle(g)[l]}function Us(g,l){const s=[];return"string"==typeof g?g.split(/\s*,\s*/).forEach(u=>function Aa(g,l,s){if(":"==g[0]){const Le=function Ta(g,l){switch(g){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(s,u)=>parseFloat(u)>parseFloat(s);case":decrement":return(s,u)=>parseFloat(u) *"}}(g,s);if("function"==typeof Le)return void l.push(Le);g=Le}const u=g.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==u||u.length<4)return s.push(function E(g){return new o.vHH(3015,!1)}()),l;const y=u[1],P=u[2],W=u[3];l.push(dl(y,W));"<"==P[0]&&!("*"==y&&"*"==W)&&l.push(dl(W,y))}(u,s,l)):s.push(g),s}const Zr=new Set(["true","1"]),Hs=new Set(["false","0"]);function dl(g,l){const s=Zr.has(g)||Hs.has(g),u=Zr.has(l)||Hs.has(l);return(y,P)=>{let W="*"==g||g==y,he="*"==l||l==P;return!W&&s&&"boolean"==typeof y&&(W=y?Zr.has(g):Hs.has(g)),!he&&u&&"boolean"==typeof P&&(he=P?Zr.has(l):Hs.has(l)),W&&he}}const Bo=new RegExp("s*:selfs*,?","g");function js(g,l,s,u){return new ul(g).build(l,s,u)}class ul{constructor(l){this._driver=l}build(l,s,u){const y=new zs(s);return this._resetContextStyleTimingState(y),hi(this,Gr(l),y)}_resetContextStyleTimingState(l){l.currentQuerySelector="",l.collectedStyles=new Map,l.collectedStyles.set("",new Map),l.currentTime=0}visitTrigger(l,s){let u=s.queryCount=0,y=s.depCount=0;const P=[],W=[];return"@"==l.name.charAt(0)&&s.errors.push(function ls(){return new o.vHH(3006,!1)}()),l.definitions.forEach(he=>{if(this._resetContextStyleTimingState(s),0==he.type){const Le=he,qe=Le.name;qe.toString().split(/\s*,\s*/).forEach(vt=>{Le.name=vt,P.push(this.visitState(Le,s))}),Le.name=qe}else if(1==he.type){const Le=this.visitTransition(he,s);u+=Le.queryCount,y+=Le.depCount,W.push(Le)}else s.errors.push(function $i(){return new o.vHH(3007,!1)}())}),{type:7,name:l.name,states:P,transitions:W,queryCount:u,depCount:y,options:null}}visitState(l,s){const u=this.visitStyle(l.styles,s),y=l.options&&l.options.params||null;if(u.containsDynamicStyles){const P=new Set,W=y||{};u.styles.forEach(he=>{he instanceof Map&&he.forEach(Le=>{Wr(Le).forEach(qe=>{W.hasOwnProperty(qe)||P.add(qe)})})}),P.size&&(Qo(P.values()),s.errors.push(function pr(g,l){return new o.vHH(3008,!1)}()))}return{type:0,name:l.name,style:u,options:y?{params:y}:null}}visitTransition(l,s){s.queryCount=0,s.depCount=0;const u=hi(this,Gr(l.animation),s);return{type:1,matchers:Us(l.expr,s.errors),animation:u,queryCount:s.queryCount,depCount:s.depCount,options:yr(l.options)}}visitSequence(l,s){return{type:2,steps:l.steps.map(u=>hi(this,u,s)),options:yr(l.options)}}visitGroup(l,s){const u=s.currentTime;let y=0;const P=l.steps.map(W=>{s.currentTime=u;const he=hi(this,W,s);return y=Math.max(y,s.currentTime),he});return s.currentTime=y,{type:3,steps:P,options:yr(l.options)}}visitAnimate(l,s){const u=function Gl(g,l){if(g.hasOwnProperty("duration"))return g;if("number"==typeof g)return qr(Wt(g,l).duration,0,"");const s=g;if(s.split(/\s+/).some(P=>"{"==P.charAt(0)&&"{"==P.charAt(1))){const P=qr(0,0,"");return P.dynamic=!0,P.strValue=s,P}const y=Wt(s,l);return qr(y.duration,y.delay,y.easing)}(l.timings,s.errors);s.currentAnimateTimings=u;let y,P=l.styles?l.styles:(0,ot.oB)({});if(5==P.type)y=this.visitKeyframes(P,s);else{let W=l.styles,he=!1;if(!W){he=!0;const qe={};u.easing&&(qe.easing=u.easing),W=(0,ot.oB)(qe)}s.currentTime+=u.duration+u.delay;const Le=this.visitStyle(W,s);Le.isEmptyStep=he,y=Le}return s.currentAnimateTimings=null,{type:4,timings:u,style:y,options:null}}visitStyle(l,s){const u=this._makeStyleAst(l,s);return this._validateStyleAst(u,s),u}_makeStyleAst(l,s){const u=[],y=Array.isArray(l.styles)?l.styles:[l.styles];for(let he of y)"string"==typeof he?he===ot.l3?u.push(he):s.errors.push(new o.vHH(3002,!1)):u.push(qn(he));let P=!1,W=null;return u.forEach(he=>{if(he instanceof Map&&(he.has("easing")&&(W=he.get("easing"),he.delete("easing")),!P))for(let Le of he.values())if(Le.toString().indexOf("{{")>=0){P=!0;break}}),{type:6,styles:u,easing:W,offset:l.offset,containsDynamicStyles:P,options:null}}_validateStyleAst(l,s){const u=s.currentAnimateTimings;let y=s.currentTime,P=s.currentTime;u&&P>0&&(P-=u.duration+u.delay),l.styles.forEach(W=>{"string"!=typeof W&&W.forEach((he,Le)=>{const qe=s.collectedStyles.get(s.currentQuerySelector),vt=qe.get(Le);let Dt=!0;vt&&(P!=y&&P>=vt.startTime&&y<=vt.endTime&&(s.errors.push(function wo(g,l,s,u,y){return new o.vHH(3010,!1)}()),Dt=!1),P=vt.startTime),Dt&&qe.set(Le,{startTime:P,endTime:y}),s.options&&function sa(g,l,s){const u=l.params||{},y=Wr(g);y.length&&y.forEach(P=>{u.hasOwnProperty(P)||s.push(function Ur(g){return new o.vHH(3001,!1)}())})}(he,s.options,s.errors)})})}visitKeyframes(l,s){const u={type:5,styles:[],options:null};if(!s.currentAnimateTimings)return s.errors.push(function zt(){return new o.vHH(3011,!1)}()),u;let P=0;const W=[];let he=!1,Le=!1,qe=0;const vt=l.steps.map(kn=>{const fi=this._makeStyleAst(kn,s);let Yi=null!=fi.offset?fi.offset:function da(g){if("string"==typeof g)return null;let l=null;if(Array.isArray(g))g.forEach(s=>{if(s instanceof Map&&s.has("offset")){const u=s;l=parseFloat(u.get("offset")),u.delete("offset")}});else if(g instanceof Map&&g.has("offset")){const s=g;l=parseFloat(s.get("offset")),s.delete("offset")}return l}(fi.styles),bi=0;return null!=Yi&&(P++,bi=fi.offset=Yi),Le=Le||bi<0||bi>1,he=he||bi0&&P{const Yi=Bt>0?fi==qt?1:Bt*fi:W[fi],bi=Yi*wn;s.currentTime=$t+Xt.delay+bi,Xt.duration=bi,this._validateStyleAst(kn,s),kn.offset=Yi,u.styles.push(kn)}),u}visitReference(l,s){return{type:8,animation:hi(this,Gr(l.animation),s),options:yr(l.options)}}visitAnimateChild(l,s){return s.depCount++,{type:9,options:yr(l.options)}}visitAnimateRef(l,s){return{type:10,animation:this.visitReference(l.animation,s),options:yr(l.options)}}visitQuery(l,s){const u=s.currentQuerySelector,y=l.options||{};s.queryCount++,s.currentQuery=l;const[P,W]=function vr(g){const l=!!g.split(/\s*,\s*/).find(s=>":self"==s);return l&&(g=g.replace(Bo,"")),g=g.replace(/@\*/g,Qe).replace(/@\w+/g,s=>Qe+"-"+s.slice(1)).replace(/:animating/g,nn),[g,l]}(l.selector);s.currentQuerySelector=u.length?u+" "+P:P,Zn(s.collectedStyles,s.currentQuerySelector,new Map);const he=hi(this,Gr(l.animation),s);return s.currentQuery=null,s.currentQuerySelector=u,{type:11,selector:P,limit:y.limit||0,optional:!!y.optional,includeSelf:W,animation:he,originalSelector:l.selector,options:yr(l.options)}}visitStagger(l,s){s.currentQuery||s.errors.push(function na(){return new o.vHH(3013,!1)}());const u="full"===l.timings?{duration:0,delay:0,easing:"full"}:Wt(l.timings,s.errors,!0);return{type:12,animation:hi(this,Gr(l.animation),s),timings:u,options:null}}}class zs{constructor(l){this.errors=l,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function yr(g){return g?(g=pn(g)).params&&(g.params=function br(g){return g?pn(g):null}(g.params)):g={},g}function qr(g,l,s){return{duration:g,delay:l,easing:s}}function Vo(g,l,s,u,y,P,W=null,he=!1){return{type:1,element:g,keyframes:l,preStyleProps:s,postStyleProps:u,duration:y,delay:P,totalTime:y+P,easing:W,subTimeline:he}}class mo{constructor(){this._map=new Map}get(l){return this._map.get(l)||[]}append(l,s){let u=this._map.get(l);u||this._map.set(l,u=[]),u.push(...s)}has(l){return this._map.has(l)}clear(){this._map.clear()}}const ua=new RegExp(":enter","g"),Wl=new RegExp(":leave","g");function Oa(g,l,s,u,y,P=new Map,W=new Map,he,Le,qe=[]){return(new In).buildKeyframes(g,l,s,u,y,P,W,he,Le,qe)}class In{buildKeyframes(l,s,u,y,P,W,he,Le,qe,vt=[]){qe=qe||new mo;const Dt=new hl(l,s,qe,y,P,vt,[]);Dt.options=Le;const Bt=Le.delay?Zt(Le.delay):0;Dt.currentTimeline.delayNextStep(Bt),Dt.currentTimeline.setStyles([W],null,Dt.errors,Le),hi(this,u,Dt);const qt=Dt.timelines.filter($t=>$t.containsAnimation());if(qt.length&&he.size){let $t;for(let Xt=qt.length-1;Xt>=0;Xt--){const wn=qt[Xt];if(wn.element===s){$t=wn;break}}$t&&!$t.allowOnlyTimelineStyles()&&$t.setStyles([he],null,Dt.errors,Le)}return qt.length?qt.map($t=>$t.buildKeyframes()):[Vo(s,[],[],[],0,Bt,"",!1)]}visitTrigger(l,s){}visitState(l,s){}visitTransition(l,s){}visitAnimateChild(l,s){const u=s.subInstructions.get(s.element);if(u){const y=s.createSubContext(l.options),P=s.currentTimeline.currentTime,W=this._visitSubInstructions(u,y,y.options);P!=W&&s.transformIntoNewTimeline(W)}s.previousNode=l}visitAnimateRef(l,s){const u=s.createSubContext(l.options);u.transformIntoNewTimeline(),this._applyAnimationRefDelays([l.options,l.animation.options],s,u),this.visitReference(l.animation,u),s.transformIntoNewTimeline(u.currentTimeline.currentTime),s.previousNode=l}_applyAnimationRefDelays(l,s,u){for(const P of l){const W=null==P?void 0:P.delay;if(W){var y;const he="number"==typeof W?W:Zt(_r(W,null!==(y=null==P?void 0:P.params)&&void 0!==y?y:{},s.errors));u.delayNextStep(he)}}}_visitSubInstructions(l,s,u){let P=s.currentTimeline.currentTime;const W=null!=u.duration?Zt(u.duration):null,he=null!=u.delay?Zt(u.delay):null;return 0!==W&&l.forEach(Le=>{const qe=s.appendInstructionToTimeline(Le,W,he);P=Math.max(P,qe.duration+qe.delay)}),P}visitReference(l,s){s.updateOptions(l.options,!0),hi(this,l.animation,s),s.previousNode=l}visitSequence(l,s){const u=s.subContextCount;let y=s;const P=l.options;if(P&&(P.params||P.delay)&&(y=s.createSubContext(P),y.transformIntoNewTimeline(),null!=P.delay)){6==y.previousNode.type&&(y.currentTimeline.snapshotCurrentStyles(),y.previousNode=Cr);const W=Zt(P.delay);y.delayNextStep(W)}l.steps.length&&(l.steps.forEach(W=>hi(this,W,y)),y.currentTimeline.applyStylesToKeyframe(),y.subContextCount>u&&y.transformIntoNewTimeline()),s.previousNode=l}visitGroup(l,s){const u=[];let y=s.currentTimeline.currentTime;const P=l.options&&l.options.delay?Zt(l.options.delay):0;l.steps.forEach(W=>{const he=s.createSubContext(l.options);P&&he.delayNextStep(P),hi(this,W,he),y=Math.max(y,he.currentTimeline.currentTime),u.push(he.currentTimeline)}),u.forEach(W=>s.currentTimeline.mergeTimelineCollectedStyles(W)),s.transformIntoNewTimeline(y),s.previousNode=l}_visitTiming(l,s){if(l.dynamic){const u=l.strValue;return Wt(s.params?_r(u,s.params,s.errors):u,s.errors)}return{duration:l.duration,delay:l.delay,easing:l.easing}}visitAnimate(l,s){const u=s.currentAnimateTimings=this._visitTiming(l.timings,s),y=s.currentTimeline;u.delay&&(s.incrementTime(u.delay),y.snapshotCurrentStyles());const P=l.style;5==P.type?this.visitKeyframes(P,s):(s.incrementTime(u.duration),this.visitStyle(P,s),y.applyStylesToKeyframe()),s.currentAnimateTimings=null,s.previousNode=l}visitStyle(l,s){const u=s.currentTimeline,y=s.currentAnimateTimings;!y&&u.hasCurrentStyleProperties()&&u.forwardFrame();const P=y&&y.easing||l.easing;l.isEmptyStep?u.applyEmptyStep(P):u.setStyles(l.styles,P,s.errors,s.options),s.previousNode=l}visitKeyframes(l,s){const u=s.currentAnimateTimings,y=s.currentTimeline.duration,P=u.duration,he=s.createSubContext().currentTimeline;he.easing=u.easing,l.styles.forEach(Le=>{he.forwardTime((Le.offset||0)*P),he.setStyles(Le.styles,Le.easing,s.errors,s.options),he.applyStylesToKeyframe()}),s.currentTimeline.mergeTimelineCollectedStyles(he),s.transformIntoNewTimeline(y+P),s.previousNode=l}visitQuery(l,s){const u=s.currentTimeline.currentTime,y=l.options||{},P=y.delay?Zt(y.delay):0;P&&(6===s.previousNode.type||0==u&&s.currentTimeline.hasCurrentStyleProperties())&&(s.currentTimeline.snapshotCurrentStyles(),s.previousNode=Cr);let W=u;const he=s.invokeQuery(l.selector,l.originalSelector,l.limit,l.includeSelf,!!y.optional,s.errors);s.currentQueryTotal=he.length;let Le=null;he.forEach((qe,vt)=>{s.currentQueryIndex=vt;const Dt=s.createSubContext(l.options,qe);P&&Dt.delayNextStep(P),qe===s.element&&(Le=Dt.currentTimeline),hi(this,l.animation,Dt),Dt.currentTimeline.applyStylesToKeyframe(),W=Math.max(W,Dt.currentTimeline.currentTime)}),s.currentQueryIndex=0,s.currentQueryTotal=0,s.transformIntoNewTimeline(W),Le&&(s.currentTimeline.mergeTimelineCollectedStyles(Le),s.currentTimeline.snapshotCurrentStyles()),s.previousNode=l}visitStagger(l,s){const u=s.parentContext,y=s.currentTimeline,P=l.timings,W=Math.abs(P.duration),he=W*(s.currentQueryTotal-1);let Le=W*s.currentQueryIndex;switch(P.duration<0?"reverse":P.easing){case"reverse":Le=he-Le;break;case"full":Le=u.currentStaggerTime}const vt=s.currentTimeline;Le&&vt.delayNextStep(Le);const Dt=vt.currentTime;hi(this,l.animation,s),s.previousNode=l,u.currentStaggerTime=y.currentTime-Dt+(y.startTime-u.currentTimeline.startTime)}}const Cr={};class hl{constructor(l,s,u,y,P,W,he,Le){this._driver=l,this.element=s,this.subInstructions=u,this._enterClassName=y,this._leaveClassName=P,this.errors=W,this.timelines=he,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Cr,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=Le||new $s(this._driver,s,0),he.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(l,s){if(!l)return;const u=l;let y=this.options;null!=u.duration&&(y.duration=Zt(u.duration)),null!=u.delay&&(y.delay=Zt(u.delay));const P=u.params;if(P){let W=y.params;W||(W=this.options.params={}),Object.keys(P).forEach(he=>{(!s||!W.hasOwnProperty(he))&&(W[he]=_r(P[he],W,this.errors))})}}_copyOptions(){const l={};if(this.options){const s=this.options.params;if(s){const u=l.params={};Object.keys(s).forEach(y=>{u[y]=s[y]})}}return l}createSubContext(l=null,s,u){const y=s||this.element,P=new hl(this._driver,y,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(y,u||0));return P.previousNode=this.previousNode,P.currentAnimateTimings=this.currentAnimateTimings,P.options=this._copyOptions(),P.updateOptions(l),P.currentQueryIndex=this.currentQueryIndex,P.currentQueryTotal=this.currentQueryTotal,P.parentContext=this,this.subContextCount++,P}transformIntoNewTimeline(l){return this.previousNode=Cr,this.currentTimeline=this.currentTimeline.fork(this.element,l),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(l,s,u){const y={duration:null!=s?s:l.duration,delay:this.currentTimeline.currentTime+(null!=u?u:0)+l.delay,easing:""},P=new Yl(this._driver,l.element,l.keyframes,l.preStyleProps,l.postStyleProps,y,l.stretchStartingKeyframe);return this.timelines.push(P),y}incrementTime(l){this.currentTimeline.forwardTime(this.currentTimeline.duration+l)}delayNextStep(l){l>0&&this.currentTimeline.delayNextStep(l)}invokeQuery(l,s,u,y,P,W){let he=[];if(y&&he.push(this.element),l.length>0){l=(l=l.replace(ua,"."+this._enterClassName)).replace(Wl,"."+this._leaveClassName);let qe=this._driver.query(this.element,l,1!=u);0!==u&&(qe=u<0?qe.slice(qe.length+u,qe.length):qe.slice(0,u)),he.push(...qe)}return!P&&0==he.length&&W.push(function S(g){return new o.vHH(3014,!1)}()),he}}class $s{constructor(l,s,u,y){this._driver=l,this.element=s,this.startTime=u,this._elementTimelineStylesLookup=y,this.duration=0,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(s),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(s,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(l){const s=1===this._keyframes.size&&this._pendingStyles.size;this.duration||s?(this.forwardTime(this.currentTime+l),s&&this.snapshotCurrentStyles()):this.startTime+=l}fork(l,s){return this.applyStylesToKeyframe(),new $s(this._driver,l,s||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(l){this.applyStylesToKeyframe(),this.duration=l,this._loadKeyframe()}_updateStyle(l,s){this._localTimelineStyles.set(l,s),this._globalTimelineStyles.set(l,s),this._styleSummary.set(l,{time:this.currentTime,value:s})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(l){l&&this._previousKeyframe.set("easing",l);for(let[s,u]of this._globalTimelineStyles)this._backFill.set(s,u||ot.l3),this._currentKeyframe.set(s,ot.l3);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(l,s,u,y){s&&this._previousKeyframe.set("easing",s);const P=y&&y.params||{},W=function Kl(g,l){const s=new Map;let u;return g.forEach(y=>{if("*"===y){u=u||l.keys();for(let P of u)s.set(P,ot.l3)}else ii(y,s)}),s}(l,this._globalTimelineStyles);for(let[Le,qe]of W){const vt=_r(qe,P,u);var he;this._pendingStyles.set(Le,vt),this._localTimelineStyles.has(Le)||this._backFill.set(Le,null!==(he=this._globalTimelineStyles.get(Le))&&void 0!==he?he:ot.l3),this._updateStyle(Le,vt)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((l,s)=>{this._currentKeyframe.set(s,l)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((l,s)=>{this._currentKeyframe.has(s)||this._currentKeyframe.set(s,l)}))}snapshotCurrentStyles(){for(let[l,s]of this._localTimelineStyles)this._pendingStyles.set(l,s),this._updateStyle(l,s)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const l=[];for(let s in this._currentKeyframe)l.push(s);return l}mergeTimelineCollectedStyles(l){l._styleSummary.forEach((s,u)=>{const y=this._styleSummary.get(u);(!y||s.time>y.time)&&this._updateStyle(u,s.value)})}buildKeyframes(){this.applyStylesToKeyframe();const l=new Set,s=new Set,u=1===this._keyframes.size&&0===this.duration;let y=[];this._keyframes.forEach((he,Le)=>{const qe=ii(he,new Map,this._backFill);qe.forEach((vt,Dt)=>{vt===ot.k1?l.add(Dt):vt===ot.l3&&s.add(Dt)}),u||qe.set("offset",Le/this.duration),y.push(qe)});const P=l.size?Qo(l.values()):[],W=s.size?Qo(s.values()):[];if(u){const he=y[0],Le=new Map(he);he.set("offset",0),Le.set("offset",1),y=[he,Le]}return Vo(this.element,y,P,W,this.duration,this.startTime,this.easing,!1)}}class Yl extends $s{constructor(l,s,u,y,P,W,he=!1){super(l,s,W.delay),this.keyframes=u,this.preStyleProps=y,this.postStyleProps=P,this._stretchStartingKeyframe=he,this.timings={duration:W.duration,delay:W.delay,easing:W.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let l=this.keyframes,{delay:s,duration:u,easing:y}=this.timings;if(this._stretchStartingKeyframe&&s){const P=[],W=u+s,he=s/W,Le=ii(l[0]);Le.set("offset",0),P.push(Le);const qe=ii(l[0]);qe.set("offset",fl(he)),P.push(qe);const vt=l.length-1;for(let Dt=1;Dt<=vt;Dt++){let Bt=ii(l[Dt]);const qt=Bt.get("offset");Bt.set("offset",fl((s+qt*u)/W)),P.push(Bt)}u=W,s=0,y="",l=P}return Vo(this.element,l,this.preStyleProps,this.postStyleProps,u,s,y,!0)}}function fl(g,l=3){const s=Math.pow(10,l-1);return Math.round(g*s)/s}class Dr{}const Zl=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class Xn extends Dr{normalizePropertyName(l,s){return Yr(l)}normalizeStyleValue(l,s,u,y){let P="";const W=u.toString().trim();if(Zl.has(s)&&0!==u&&"0"!==u)if("number"==typeof u)P="px";else{const he=u.match(/^[+-]?[\d\.]+([a-z]*)$/);he&&0==he[1].length&&y.push(function gi(g,l){return new o.vHH(3005,!1)}())}return W+P}}function ps(g,l,s,u,y,P,W,he,Le,qe,vt,Dt,Bt){return{type:0,element:g,triggerName:l,isRemovalTransition:y,fromState:s,fromStyles:P,toState:u,toStyles:W,timelines:he,queriedElements:Le,preStyleProps:qe,postStyleProps:vt,totalTime:Dt,errors:Bt}}const Er={};class pl{constructor(l,s,u){this._triggerName=l,this.ast=s,this._stateStyles=u}match(l,s,u,y){return function p(g,l,s,u,y){return g.some(P=>P(l,s,u,y))}(this.ast.matchers,l,s,u,y)}buildStyles(l,s,u){let y=this._stateStyles.get("*");return void 0!==l&&(y=this._stateStyles.get(null==l?void 0:l.toString())||y),y?y.buildStyles(s,u):new Map}build(l,s,u,y,P,W,he,Le,qe,vt){var Dt;const Bt=[],qt=this.ast.options&&this.ast.options.params||Er,Xt=this.buildStyles(u,he&&he.params||Er,Bt),wn=Le&&Le.params||Er,kn=this.buildStyles(y,wn,Bt),fi=new Set,Yi=new Map,bi=new Map,vs="void"===y,Jr={params:d(wn,qt),delay:null===(Dt=this.ast.options)||void 0===Dt?void 0:Dt.delay},ro=vt?[]:Oa(l,s,this.ast.animation,P,W,Xt,kn,Jr,qe,Bt);let Oo=0;if(ro.forEach(_o=>{Oo=Math.max(_o.duration+_o.delay,Oo)}),Bt.length)return ps(s,this._triggerName,u,y,vs,Xt,kn,[],[],Yi,bi,Oo,Bt);ro.forEach(_o=>{const qs=_o.element,bs=Zn(Yi,qs,new Set);_o.preStyleProps.forEach(Xs=>bs.add(Xs));const pa=Zn(bi,qs,new Set);_o.postStyleProps.forEach(Xs=>pa.add(Xs)),qs!==s&&fi.add(qs)});const fa=Qo(fi.values());return ps(s,this._triggerName,u,y,vs,Xt,kn,ro,fa,Yi,bi,Oo)}}function d(g,l){const s=pn(l);for(const u in g)g.hasOwnProperty(u)&&null!=g[u]&&(s[u]=g[u]);return s}class _{constructor(l,s,u){this.styles=l,this.defaultParams=s,this.normalizer=u}buildStyles(l,s){const u=new Map,y=pn(this.defaultParams);return Object.keys(l).forEach(P=>{const W=l[P];null!==W&&(y[P]=W)}),this.styles.styles.forEach(P=>{"string"!=typeof P&&P.forEach((W,he)=>{W&&(W=_r(W,y,s));const Le=this.normalizer.normalizePropertyName(he,s);W=this.normalizer.normalizeStyleValue(he,Le,W,s),u.set(he,W)})}),u}}class N{constructor(l,s,u){this.name=l,this.ast=s,this._normalizer=u,this.transitionFactories=[],this.states=new Map,s.states.forEach(y=>{this.states.set(y.name,new _(y.style,y.options&&y.options.params||{},u))}),Ae(this.states,"true","1"),Ae(this.states,"false","0"),s.transitions.forEach(y=>{this.transitionFactories.push(new pl(l,y,this.states))}),this.fallbackTransition=function V(g,l,s){return new pl(g,{type:1,animation:{type:2,steps:[],options:null},matchers:[(W,he)=>!0],options:null,queryCount:0,depCount:0},l)}(l,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(l,s,u,y){return this.transitionFactories.find(W=>W.match(l,s,u,y))||null}matchStyles(l,s,u){return this.fallbackTransition.buildStyles(l,s,u)}}function Ae(g,l,s){g.has(l)?g.has(s)||g.set(s,g.get(l)):g.has(s)&&g.set(l,g.get(s))}const We=new mo;class ft{constructor(l,s,u){this.bodyNode=l,this._driver=s,this._normalizer=u,this._animations=new Map,this._playersById=new Map,this.players=[]}register(l,s){const u=[],P=js(this._driver,s,u,[]);if(u.length)throw function di(g){return new o.vHH(3503,!1)}();this._animations.set(l,P)}_buildPlayer(l,s,u){const y=l.element,P=ia(0,this._normalizer,0,l.keyframes,s,u);return this._driver.animate(y,P,l.duration,l.delay,l.easing,[],!0)}create(l,s,u={}){const y=[],P=this._animations.get(l);let W;const he=new Map;if(P?(W=Oa(this._driver,s,P,L,le,new Map,new Map,u,We,y),W.forEach(vt=>{const Dt=Zn(he,vt.element,new Map);vt.postStyleProps.forEach(Bt=>Dt.set(Bt,null))})):(y.push(function Sn(){return new o.vHH(3300,!1)}()),W=[]),y.length)throw function eo(g){return new o.vHH(3504,!1)}();he.forEach((vt,Dt)=>{vt.forEach((Bt,qt)=>{vt.set(qt,this._driver.computeStyle(Dt,qt,ot.l3))})});const qe=Vn(W.map(vt=>{const Dt=he.get(vt.element);return this._buildPlayer(vt,new Map,Dt)}));return this._playersById.set(l,qe),qe.onDestroy(()=>this.destroy(l)),this.players.push(qe),qe}destroy(l){const s=this._getPlayer(l);s.destroy(),this._playersById.delete(l);const u=this.players.indexOf(s);u>=0&&this.players.splice(u,1)}_getPlayer(l){const s=this._playersById.get(l);if(!s)throw function to(g){return new o.vHH(3301,!1)}();return s}listen(l,s,u,y){const P=Rs(s,"","","");return ds(this._getPlayer(l),u,P,y),()=>{}}command(l,s,u,y){if("register"==u)return void this.register(l,y[0]);if("create"==u)return void this.create(l,s,y[0]||{});const P=this._getPlayer(l);switch(u){case"play":P.play();break;case"pause":P.pause();break;case"reset":P.reset();break;case"restart":P.restart();break;case"finish":P.finish();break;case"init":P.init();break;case"setPosition":P.setPosition(parseFloat(y[0]));break;case"destroy":this.destroy(l)}}}const Ot="ng-animate-queued",Cn="ng-animate-disabled",go=[],So={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},ms={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Wi="__ng_removed";class Mi{get params(){return this.options.params}constructor(l,s=""){this.namespaceId=s;const u=l&&l.hasOwnProperty("value");if(this.value=function Xl(g){return null!=g?g:null}(u?l.value:l),u){const P=pn(l);delete P.value,this.options=P}else this.options={};this.options.params||(this.options.params={})}absorbOptions(l){const s=l.params;if(s){const u=this.options.params;Object.keys(s).forEach(y=>{null==u[y]&&(u[y]=s[y])})}}}const er="void",Gs=new Mi(er);class ha{constructor(l,s,u){this.id=l,this.hostElement=s,this._engine=u,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+l,wi(s,this._hostClassName)}listen(l,s,u,y){if(!this._triggers.has(s))throw function _i(g,l){return new o.vHH(3302,!1)}();if(null==u||0==u.length)throw function Lo(g){return new o.vHH(3303,!1)}();if(!function Ia(g){return"start"==g||"done"==g}(u))throw function No(g,l){return new o.vHH(3400,!1)}();const P=Zn(this._elementListeners,l,[]),W={name:s,phase:u,callback:y};P.push(W);const he=Zn(this._engine.statesByElement,l,new Map);return he.has(s)||(wi(l,je),wi(l,je+"-"+s),he.set(s,Gs)),()=>{this._engine.afterFlush(()=>{const Le=P.indexOf(W);Le>=0&&P.splice(Le,1),this._triggers.has(s)||he.delete(s)})}}register(l,s){return!this._triggers.has(l)&&(this._triggers.set(l,s),!0)}_getTrigger(l){const s=this._triggers.get(l);if(!s)throw function Ma(g){return new o.vHH(3401,!1)}();return s}trigger(l,s,u,y=!0){const P=this._getTrigger(s),W=new gs(this.id,s,l);let he=this._engine.statesByElement.get(l);he||(wi(l,je),wi(l,je+"-"+s),this._engine.statesByElement.set(l,he=new Map));let Le=he.get(s);const qe=new Mi(u,this.id);if(!(u&&u.hasOwnProperty("value"))&&Le&&qe.absorbOptions(Le.options),he.set(s,qe),Le||(Le=Gs),qe.value!==er&&Le.value===qe.value){if(!function Qc(g,l){const s=Object.keys(g),u=Object.keys(l);if(s.length!=u.length)return!1;for(let y=0;y{ki(l,wn),oi(l,kn)})}return}const Bt=Zn(this._engine.playersByElement,l,[]);Bt.forEach(Xt=>{Xt.namespaceId==this.id&&Xt.triggerName==s&&Xt.queued&&Xt.destroy()});let qt=P.matchTransition(Le.value,qe.value,l,qe.params),$t=!1;if(!qt){if(!y)return;qt=P.fallbackTransition,$t=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:l,triggerName:s,transition:qt,fromState:Le,toState:qe,player:W,isFallbackTransition:$t}),$t||(wi(l,Ot),W.onStart(()=>{tr(l,Ot)})),W.onDone(()=>{let Xt=this.players.indexOf(W);Xt>=0&&this.players.splice(Xt,1);const wn=this._engine.playersByElement.get(l);if(wn){let kn=wn.indexOf(W);kn>=0&&wn.splice(kn,1)}}),this.players.push(W),Bt.push(W),W}deregister(l){this._triggers.delete(l),this._engine.statesByElement.forEach(s=>s.delete(l)),this._elementListeners.forEach((s,u)=>{this._elementListeners.set(u,s.filter(y=>y.name!=l))})}clearElementCache(l){this._engine.statesByElement.delete(l),this._elementListeners.delete(l);const s=this._engine.playersByElement.get(l);s&&(s.forEach(u=>u.destroy()),this._engine.playersByElement.delete(l))}_signalRemovalForInnerTriggers(l,s){const u=this._engine.driver.query(l,Qe,!0);u.forEach(y=>{if(y[Wi])return;const P=this._engine.fetchNamespacesByElement(y);P.size?P.forEach(W=>W.triggerLeaveAnimation(y,s,!1,!0)):this.clearElementCache(y)}),this._engine.afterFlushAnimationsDone(()=>u.forEach(y=>this.clearElementCache(y)))}triggerLeaveAnimation(l,s,u,y){const P=this._engine.statesByElement.get(l),W=new Map;if(P){const he=[];if(P.forEach((Le,qe)=>{if(W.set(qe,Le.value),this._triggers.has(qe)){const vt=this.trigger(l,qe,er,y);vt&&he.push(vt)}}),he.length)return this._engine.markElementAsRemoved(this.id,l,!0,s,W),u&&Vn(he).onDone(()=>this._engine.processLeaveNode(l)),!0}return!1}prepareLeaveAnimationListeners(l){const s=this._elementListeners.get(l),u=this._engine.statesByElement.get(l);if(s&&u){const y=new Set;s.forEach(P=>{const W=P.name;if(y.has(W))return;y.add(W);const Le=this._triggers.get(W).fallbackTransition,qe=u.get(W)||Gs,vt=new Mi(er),Dt=new gs(this.id,W,l);this._engine.totalQueuedPlayers++,this._queue.push({element:l,triggerName:W,transition:Le,fromState:qe,toState:vt,player:Dt,isFallbackTransition:!0})})}}removeNode(l,s){const u=this._engine;if(l.childElementCount&&this._signalRemovalForInnerTriggers(l,s),this.triggerLeaveAnimation(l,s,!0))return;let y=!1;if(u.totalAnimations){const P=u.players.length?u.playersByQueriedElement.get(l):[];if(P&&P.length)y=!0;else{let W=l;for(;W=W.parentNode;)if(u.statesByElement.get(W)){y=!0;break}}}if(this.prepareLeaveAnimationListeners(l),y)u.markElementAsRemoved(this.id,l,!1,s);else{const P=l[Wi];(!P||P===So)&&(u.afterFlush(()=>this.clearElementCache(l)),u.destroyInnerAnimations(l),u._onRemovalComplete(l,s))}}insertNode(l,s){wi(l,this._hostClassName)}drainQueuedTransitions(l){const s=[];return this._queue.forEach(u=>{const y=u.player;if(y.destroyed)return;const P=u.element,W=this._elementListeners.get(P);W&&W.forEach(he=>{if(he.name==u.triggerName){const Le=Rs(P,u.triggerName,u.fromState.value,u.toState.value);Le._data=l,ds(u.player,he.phase,Le,he.callback)}}),y.markedForDestroy?this._engine.afterFlush(()=>{y.destroy()}):s.push(u)}),this._queue=[],s.sort((u,y)=>{const P=u.transition.ast.depCount,W=y.transition.ast.depCount;return 0==P||0==W?P-W:this._engine.driver.containsElement(u.element,y.element)?1:-1})}destroy(l){this.players.forEach(s=>s.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,l)}elementContainsData(l){let s=!1;return this._elementListeners.has(l)&&(s=!0),s=!!this._queue.find(u=>u.element===l)||s,s}}class ql{_onRemovalComplete(l,s){this.onRemovalComplete(l,s)}constructor(l,s,u){this.bodyNode=l,this.driver=s,this._normalizer=u,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(y,P)=>{}}get queuedPlayers(){const l=[];return this._namespaceList.forEach(s=>{s.players.forEach(u=>{u.queued&&l.push(u)})}),l}createNamespace(l,s){const u=new ha(l,s,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,s)?this._balanceNamespaceList(u,s):(this.newHostElements.set(s,u),this.collectEnterElement(s)),this._namespaceLookup[l]=u}_balanceNamespaceList(l,s){const u=this._namespaceList,y=this.namespacesByHostElement;if(u.length-1>=0){let W=!1,he=this.driver.getParentElement(s);for(;he;){const Le=y.get(he);if(Le){const qe=u.indexOf(Le);u.splice(qe+1,0,l),W=!0;break}he=this.driver.getParentElement(he)}W||u.unshift(l)}else u.push(l);return y.set(s,l),l}register(l,s){let u=this._namespaceLookup[l];return u||(u=this.createNamespace(l,s)),u}registerTrigger(l,s,u){let y=this._namespaceLookup[l];y&&y.register(s,u)&&this.totalAnimations++}destroy(l,s){if(!l)return;const u=this._fetchNamespace(l);this.afterFlush(()=>{this.namespacesByHostElement.delete(u.hostElement),delete this._namespaceLookup[l];const y=this._namespaceList.indexOf(u);y>=0&&this._namespaceList.splice(y,1)}),this.afterFlushAnimationsDone(()=>u.destroy(s))}_fetchNamespace(l){return this._namespaceLookup[l]}fetchNamespacesByElement(l){const s=new Set,u=this.statesByElement.get(l);if(u)for(let y of u.values())if(y.namespaceId){const P=this._fetchNamespace(y.namespaceId);P&&s.add(P)}return s}trigger(l,s,u,y){if(Qr(s)){const P=this._fetchNamespace(l);if(P)return P.trigger(s,u,y),!0}return!1}insertNode(l,s,u,y){if(!Qr(s))return;const P=s[Wi];if(P&&P.setForRemoval){P.setForRemoval=!1,P.setForMove=!0;const W=this.collectedLeaveElements.indexOf(s);W>=0&&this.collectedLeaveElements.splice(W,1)}if(l){const W=this._fetchNamespace(l);W&&W.insertNode(s,u)}y&&this.collectEnterElement(s)}collectEnterElement(l){this.collectedEnterElements.push(l)}markElementAsDisabled(l,s){s?this.disabledNodes.has(l)||(this.disabledNodes.add(l),wi(l,Cn)):this.disabledNodes.has(l)&&(this.disabledNodes.delete(l),tr(l,Cn))}removeNode(l,s,u,y){if(Qr(s)){const P=l?this._fetchNamespace(l):null;if(P?P.removeNode(s,y):this.markElementAsRemoved(l,s,!1,y),u){const W=this.namespacesByHostElement.get(s);W&&W.id!==l&&W.removeNode(s,y)}}else this._onRemovalComplete(s,y)}markElementAsRemoved(l,s,u,y,P){this.collectedLeaveElements.push(s),s[Wi]={namespaceId:l,setForRemoval:y,hasAnimation:u,removedBeforeQueried:!1,previousTriggersValues:P}}listen(l,s,u,y,P){return Qr(s)?this._fetchNamespace(l).listen(s,u,y,P):()=>{}}_buildInstruction(l,s,u,y,P){return l.transition.build(this.driver,l.element,l.fromState.value,l.toState.value,u,y,l.fromState.options,l.toState.options,s,P)}destroyInnerAnimations(l){let s=this.driver.query(l,Qe,!0);s.forEach(u=>this.destroyActiveAnimationsForElement(u)),0!=this.playersByQueriedElement.size&&(s=this.driver.query(l,nn,!0),s.forEach(u=>this.finishActiveQueriedAnimationOnElement(u)))}destroyActiveAnimationsForElement(l){const s=this.playersByElement.get(l);s&&s.forEach(u=>{u.queued?u.markedForDestroy=!0:u.destroy()})}finishActiveQueriedAnimationOnElement(l){const s=this.playersByQueriedElement.get(l);s&&s.forEach(u=>u.finish())}whenRenderingDone(){return new Promise(l=>{if(this.players.length)return Vn(this.players).onDone(()=>l());l()})}processLeaveNode(l){var s;const u=l[Wi];if(u&&u.setForRemoval){if(l[Wi]=So,u.namespaceId){this.destroyInnerAnimations(l);const y=this._fetchNamespace(u.namespaceId);y&&y.clearElementCache(l)}this._onRemovalComplete(l,u.setForRemoval)}null!==(s=l.classList)&&void 0!==s&&s.contains(Cn)&&this.markElementAsDisabled(l,!1),this.driver.query(l,".ng-animate-disabled",!0).forEach(y=>{this.markElementAsDisabled(y,!1)})}flush(l=-1){let s=[];if(this.newHostElements.size&&(this.newHostElements.forEach((u,y)=>this._balanceNamespaceList(u,y)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let u=0;uu()),this._flushFns=[],this._whenQuietFns.length){const u=this._whenQuietFns;this._whenQuietFns=[],s.length?Vn(s).onDone(()=>{u.forEach(y=>y())}):u.forEach(y=>y())}}reportError(l){throw function sl(g){return new o.vHH(3402,!1)}()}_flushAnimations(l,s){const u=new mo,y=[],P=new Map,W=[],he=new Map,Le=new Map,qe=new Map,vt=new Set;this.disabledNodes.forEach(Rt=>{vt.add(Rt);const Nt=this.driver.query(Rt,".ng-animate-queued",!0);for(let Gt=0;Gt{const Gt=L+Xt++;$t.set(Nt,Gt),Rt.forEach(cn=>wi(cn,Gt))});const wn=[],kn=new Set,fi=new Set;for(let Rt=0;Rtkn.add(cn)):fi.add(Nt))}const Yi=new Map,bi=Jl(Bt,Array.from(kn));bi.forEach((Rt,Nt)=>{const Gt=le+Xt++;Yi.set(Nt,Gt),Rt.forEach(cn=>wi(cn,Gt))}),l.push(()=>{qt.forEach((Rt,Nt)=>{const Gt=$t.get(Nt);Rt.forEach(cn=>tr(cn,Gt))}),bi.forEach((Rt,Nt)=>{const Gt=Yi.get(Nt);Rt.forEach(cn=>tr(cn,Gt))}),wn.forEach(Rt=>{this.processLeaveNode(Rt)})});const vs=[],Jr=[];for(let Rt=this._namespaceList.length-1;Rt>=0;Rt--)this._namespaceList[Rt].drainQueuedTransitions(s).forEach(Gt=>{const cn=Gt.player,zn=Gt.element;if(vs.push(cn),this.collectedEnterElements.length){const yi=zn[Wi];if(yi&&yi.setForMove){if(yi.previousTriggersValues&&yi.previousTriggersValues.has(Gt.triggerName)){const ts=yi.previousTriggersValues.get(Gt.triggerName),Ki=this.statesByElement.get(Gt.element);if(Ki&&Ki.has(Gt.triggerName)){const ys=Ki.get(Gt.triggerName);ys.value=ts,Ki.set(Gt.triggerName,ys)}}return void cn.destroy()}}const Ar=!Dt||!this.driver.containsElement(Dt,zn),Fi=Yi.get(zn),es=$t.get(zn),Un=this._buildInstruction(Gt,u,es,Fi,Ar);if(Un.errors&&Un.errors.length)return void Jr.push(Un);if(Ar)return cn.onStart(()=>ki(zn,Un.fromStyles)),cn.onDestroy(()=>oi(zn,Un.toStyles)),void y.push(cn);if(Gt.isFallbackTransition)return cn.onStart(()=>ki(zn,Un.fromStyles)),cn.onDestroy(()=>oi(zn,Un.toStyles)),void y.push(cn);const Cl=[];Un.timelines.forEach(yi=>{yi.stretchStartingKeyframe=!0,this.disabledNodes.has(yi.element)||Cl.push(yi)}),Un.timelines=Cl,u.append(zn,Un.timelines),W.push({instruction:Un,player:cn,element:zn}),Un.queriedElements.forEach(yi=>Zn(he,yi,[]).push(cn)),Un.preStyleProps.forEach((yi,ts)=>{if(yi.size){let Ki=Le.get(ts);Ki||Le.set(ts,Ki=new Set),yi.forEach((ys,Na)=>Ki.add(Na))}}),Un.postStyleProps.forEach((yi,ts)=>{let Ki=qe.get(ts);Ki||qe.set(ts,Ki=new Set),yi.forEach((ys,Na)=>Ki.add(Na))})});if(Jr.length){const Rt=[];Jr.forEach(Nt=>{Rt.push(function ni(g,l){return new o.vHH(3505,!1)}())}),vs.forEach(Nt=>Nt.destroy()),this.reportError(Rt)}const ro=new Map,Oo=new Map;W.forEach(Rt=>{const Nt=Rt.element;u.has(Nt)&&(Oo.set(Nt,Nt),this._beforeAnimationBuild(Rt.player.namespaceId,Rt.instruction,ro))}),y.forEach(Rt=>{const Nt=Rt.element;this._getPreviousPlayers(Nt,!1,Rt.namespaceId,Rt.triggerName,null).forEach(cn=>{Zn(ro,Nt,[]).push(cn),cn.destroy()})});const fa=wn.filter(Rt=>Jc(Rt,Le,qe)),_o=new Map;Ql(_o,this.driver,fi,qe,ot.l3).forEach(Rt=>{Jc(Rt,Le,qe)&&fa.push(Rt)});const bs=new Map;qt.forEach((Rt,Nt)=>{Ql(bs,this.driver,new Set(Rt),Le,ot.k1)}),fa.forEach(Rt=>{var Nt,Gt;const cn=_o.get(Rt),zn=bs.get(Rt);_o.set(Rt,new Map([...Array.from(null!==(Nt=null==cn?void 0:cn.entries())&&void 0!==Nt?Nt:[]),...Array.from(null!==(Gt=null==zn?void 0:zn.entries())&&void 0!==Gt?Gt:[])]))});const pa=[],Xs=[],xl={};W.forEach(Rt=>{const{element:Nt,player:Gt,instruction:cn}=Rt;if(u.has(Nt)){if(vt.has(Nt))return Gt.onDestroy(()=>oi(Nt,cn.toStyles)),Gt.disabled=!0,Gt.overrideTotalTime(cn.totalTime),void y.push(Gt);let zn=xl;if(Oo.size>1){let Fi=Nt;const es=[];for(;Fi=Fi.parentNode;){const Un=Oo.get(Fi);if(Un){zn=Un;break}es.push(Fi)}es.forEach(Un=>Oo.set(Un,zn))}const Ar=this._buildAnimation(Gt.namespaceId,cn,ro,P,bs,_o);if(Gt.setRealPlayer(Ar),zn===xl)pa.push(Gt);else{const Fi=this.playersByElement.get(zn);Fi&&Fi.length&&(Gt.parentPlayer=Vn(Fi)),y.push(Gt)}}else ki(Nt,cn.fromStyles),Gt.onDestroy(()=>oi(Nt,cn.toStyles)),Xs.push(Gt),vt.has(Nt)&&y.push(Gt)}),Xs.forEach(Rt=>{const Nt=P.get(Rt.element);if(Nt&&Nt.length){const Gt=Vn(Nt);Rt.setRealPlayer(Gt)}}),y.forEach(Rt=>{Rt.parentPlayer?Rt.syncPlayerEvents(Rt.parentPlayer):Rt.destroy()});for(let Rt=0;Rt!Ar.destroyed);zn.length?Xc(this,Nt,zn):this.processLeaveNode(Nt)}return wn.length=0,pa.forEach(Rt=>{this.players.push(Rt),Rt.onDone(()=>{Rt.destroy();const Nt=this.players.indexOf(Rt);this.players.splice(Nt,1)}),Rt.play()}),pa}elementContainsData(l,s){let u=!1;const y=s[Wi];return y&&y.setForRemoval&&(u=!0),this.playersByElement.has(s)&&(u=!0),this.playersByQueriedElement.has(s)&&(u=!0),this.statesByElement.has(s)&&(u=!0),this._fetchNamespace(l).elementContainsData(s)||u}afterFlush(l){this._flushFns.push(l)}afterFlushAnimationsDone(l){this._whenQuietFns.push(l)}_getPreviousPlayers(l,s,u,y,P){let W=[];if(s){const he=this.playersByQueriedElement.get(l);he&&(W=he)}else{const he=this.playersByElement.get(l);if(he){const Le=!P||P==er;he.forEach(qe=>{qe.queued||!Le&&qe.triggerName!=y||W.push(qe)})}}return(u||y)&&(W=W.filter(he=>!(u&&u!=he.namespaceId||y&&y!=he.triggerName))),W}_beforeAnimationBuild(l,s,u){const P=s.element,W=s.isRemovalTransition?void 0:l,he=s.isRemovalTransition?void 0:s.triggerName;for(const Le of s.timelines){const qe=Le.element,vt=qe!==P,Dt=Zn(u,qe,[]);this._getPreviousPlayers(qe,vt,W,he,s.toState).forEach(qt=>{const $t=qt.getRealPlayer();$t.beforeDestroy&&$t.beforeDestroy(),qt.destroy(),Dt.push(qt)})}ki(P,s.fromStyles)}_buildAnimation(l,s,u,y,P,W){const he=s.triggerName,Le=s.element,qe=[],vt=new Set,Dt=new Set,Bt=s.timelines.map($t=>{const Xt=$t.element;vt.add(Xt);const wn=Xt[Wi];if(wn&&wn.removedBeforeQueried)return new ot.ZN($t.duration,$t.delay);const kn=Xt!==Le,fi=function Qu(g){const l=[];return gl(g,l),l}((u.get(Xt)||go).map(ro=>ro.getRealPlayer())).filter(ro=>!!ro.element&&ro.element===Xt),Yi=P.get(Xt),bi=W.get(Xt),vs=ia(0,this._normalizer,0,$t.keyframes,Yi,bi),Jr=this._buildPlayer($t,vs,fi);if($t.subTimeline&&y&&Dt.add(Xt),kn){const ro=new gs(l,he,Xt);ro.setRealPlayer(Jr),qe.push(ro)}return Jr});qe.forEach($t=>{Zn(this.playersByQueriedElement,$t.element,[]).push($t),$t.onDone(()=>function qc(g,l,s){let u=g.get(l);if(u){if(u.length){const y=u.indexOf(s);u.splice(y,1)}0==u.length&&g.delete(l)}return u}(this.playersByQueriedElement,$t.element,$t))}),vt.forEach($t=>wi($t,wt));const qt=Vn(Bt);return qt.onDestroy(()=>{vt.forEach($t=>tr($t,wt)),oi(Le,s.toStyles)}),Dt.forEach($t=>{Zn(y,$t,[]).push(qt)}),qt}_buildPlayer(l,s,u){return s.length>0?this.driver.animate(l.element,s,l.duration,l.delay,l.easing,u):new ot.ZN(l.duration,l.delay)}}class gs{constructor(l,s,u){this.namespaceId=l,this.triggerName=s,this.element=u,this._player=new ot.ZN,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(l){this._containsRealPlayer||(this._player=l,this._queuedCallbacks.forEach((s,u)=>{s.forEach(y=>ds(l,u,void 0,y))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(l.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(l){this.totalTime=l}syncPlayerEvents(l){const s=this._player;s.triggerCallback&&l.onStart(()=>s.triggerCallback("start")),l.onDone(()=>this.finish()),l.onDestroy(()=>this.destroy())}_queueEvent(l,s){Zn(this._queuedCallbacks,l,[]).push(s)}onDone(l){this.queued&&this._queueEvent("done",l),this._player.onDone(l)}onStart(l){this.queued&&this._queueEvent("start",l),this._player.onStart(l)}onDestroy(l){this.queued&&this._queueEvent("destroy",l),this._player.onDestroy(l)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(l){this.queued||this._player.setPosition(l)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(l){const s=this._player;s.triggerCallback&&s.triggerCallback(l)}}function Qr(g){return g&&1===g.nodeType}function ml(g,l){const s=g.style.display;return g.style.display=null!=l?l:"none",s}function Ql(g,l,s,u,y){const P=[];s.forEach(Le=>P.push(ml(Le)));const W=[];u.forEach((Le,qe)=>{const vt=new Map;Le.forEach(Dt=>{const Bt=l.computeStyle(qe,Dt,y);vt.set(Dt,Bt),(!Bt||0==Bt.length)&&(qe[Wi]=ms,W.push(qe))}),g.set(qe,vt)});let he=0;return s.forEach(Le=>ml(Le,P[he++])),W}function Jl(g,l){const s=new Map;if(g.forEach(he=>s.set(he,[])),0==l.length)return s;const y=new Set(l),P=new Map;function W(he){if(!he)return 1;let Le=P.get(he);if(Le)return Le;const qe=he.parentNode;return Le=s.has(qe)?qe:y.has(qe)?1:W(qe),P.set(he,Le),Le}return l.forEach(he=>{const Le=W(he);1!==Le&&s.get(Le).push(he)}),s}function wi(g,l){var s;null===(s=g.classList)||void 0===s||s.add(l)}function tr(g,l){var s;null===(s=g.classList)||void 0===s||s.remove(l)}function Xc(g,l,s){Vn(s).onDone(()=>g.processLeaveNode(l))}function gl(g,l){for(let s=0;sy.add(P)):l.set(g,u),s.delete(g),!0}class ka{constructor(l,s,u){this.bodyNode=l,this._driver=s,this._normalizer=u,this._triggerCache={},this.onRemovalComplete=(y,P)=>{},this._transitionEngine=new ql(l,s,u),this._timelineEngine=new ft(l,s,u),this._transitionEngine.onRemovalComplete=(y,P)=>this.onRemovalComplete(y,P)}registerTrigger(l,s,u,y,P){const W=l+"-"+y;let he=this._triggerCache[W];if(!he){const Le=[],vt=js(this._driver,P,Le,[]);if(Le.length)throw function dt(g,l){return new o.vHH(3404,!1)}();he=function w(g,l,s){return new N(g,l,s)}(y,vt,this._normalizer),this._triggerCache[W]=he}this._transitionEngine.registerTrigger(s,y,he)}register(l,s){this._transitionEngine.register(l,s)}destroy(l,s){this._transitionEngine.destroy(l,s)}onInsert(l,s,u,y){this._transitionEngine.insertNode(l,s,u,y)}onRemove(l,s,u,y){this._transitionEngine.removeNode(l,s,y||!1,u)}disableAnimations(l,s){this._transitionEngine.markElementAsDisabled(l,s)}process(l,s,u,y){if("@"==u.charAt(0)){const[P,W]=Hr(u);this._timelineEngine.command(P,s,W,y)}else this._transitionEngine.trigger(l,s,u,y)}listen(l,s,u,y,P){if("@"==u.charAt(0)){const[W,he]=Hr(u);return this._timelineEngine.listen(W,s,he,P)}return this._transitionEngine.listen(l,s,u,y,P)}flush(l=-1){this._transitionEngine.flush(l)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}let td=(()=>{class g{constructor(s,u,y){this._element=s,this._startStyles=u,this._endStyles=y,this._state=0;let P=g.initialStylesByElement.get(s);P||g.initialStylesByElement.set(s,P=new Map),this._initialStyles=P}start(){this._state<1&&(this._startStyles&&oi(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(oi(this._element,this._initialStyles),this._endStyles&&(oi(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(g.initialStylesByElement.delete(this._element),this._startStyles&&(ki(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(ki(this._element,this._endStyles),this._endStyles=null),oi(this._element,this._initialStyles),this._state=3)}}return g.initialStylesByElement=new WeakMap,g})();function Ws(g){let l=null;return g.forEach((s,u)=>{(function ec(g){return"display"===g||"position"===g})(u)&&(l=l||new Map,l.set(u,s))}),l}class tc{constructor(l,s,u,y){this.element=l,this.keyframes=s,this.options=u,this._specialStyles=y,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=u.duration,this._delay=u.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(l=>l()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const l=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,l,this.options),this._finalKeyframe=l.length?l[l.length-1]:new Map,this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(l){const s=[];return l.forEach(u=>{s.push(Object.fromEntries(u))}),s}_triggerWebAnimation(l,s,u){return l.animate(this._convertKeyframesToObject(s),u)}onStart(l){this._originalOnStartFns.push(l),this._onStartFns.push(l)}onDone(l){this._originalOnDoneFns.push(l),this._onDoneFns.push(l)}onDestroy(l){this._onDestroyFns.push(l)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(l=>l()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(l=>l()),this._onDestroyFns=[])}setPosition(l){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=l*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const l=new Map;this.hasStarted()&&this._finalKeyframe.forEach((u,y)=>{"offset"!==y&&l.set(y,this._finished?u:la(this.element,y))}),this.currentSnapshot=l}triggerCallback(l){const s="start"===l?this._onStartFns:this._onDoneFns;s.forEach(u=>u()),s.length=0}}class nc{validateStyleProperty(l){return!0}validateAnimatableStyleProperty(l){return!0}matchesElement(l,s){return!1}containsElement(l,s){return Ls(l,s)}getParentElement(l){return $r(l)}query(l,s,u){return ui(l,s,u)}computeStyle(l,s,u){return window.getComputedStyle(l)[s]}animate(l,s,u,y,P,W=[]){const Le={duration:u,delay:y,fill:0==y?"both":"forwards"};P&&(Le.easing=P);const qe=new Map,vt=W.filter(qt=>qt instanceof tc);(function Ns(g,l){return 0===g||0===l})(u,y)&&vt.forEach(qt=>{qt.currentSnapshot.forEach(($t,Xt)=>qe.set(Xt,$t))});let Dt=function fo(g){return g.length?g[0]instanceof Map?g:g.map(l=>qn(l)):[]}(s).map(qt=>ii(qt));Dt=function $l(g,l,s){if(s.size&&l.length){let u=l[0],y=[];if(s.forEach((P,W)=>{u.has(W)||y.push(W),u.set(W,P)}),y.length)for(let P=1;PW.set(he,la(g,he)))}}return l}(l,Dt,qe);const Bt=function ed(g,l){let s=null,u=null;return Array.isArray(l)&&l.length?(s=Ws(l[0]),l.length>1&&(u=Ws(l[l.length-1]))):l instanceof Map&&(s=Ws(l)),s||u?new td(g,s,u):null}(l,Dt);return new tc(l,Dt,Le,Bt)}}let Ju=(()=>{class g extends ot._j{constructor(s,u){super(),this._nextAnimationId=0,this._renderer=s.createRenderer(u.body,{id:"0",encapsulation:o.ifc.None,styles:[],data:{animation:[]}})}build(s){const u=this._nextAnimationId.toString();this._nextAnimationId++;const y=Array.isArray(s)?(0,ot.vP)(s):s;return oc(this._renderer,null,u,"register",[y]),new ic(u,this._renderer)}}return g.\u0275fac=function(s){return new(s||g)(o.LFG(o.FYo),o.LFG(ie.K0))},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})();class ic extends ot.LC{constructor(l,s){super(),this._id=l,this._renderer=s}create(l,s){return new eh(this._id,l,s||{},this._renderer)}}class eh{constructor(l,s,u,y){this.id=l,this.element=s,this._renderer=y,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",u)}_listen(l,s){return this._renderer.listen(this.element,`@@${this.id}:${l}`,s)}_command(l,...s){return oc(this._renderer,this.element,this.id,l,s)}onDone(l){this._listen("done",l)}onStart(l){this._listen("start",l)}onDestroy(l){this._listen("destroy",l)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(l){this._command("setPosition",l)}getPosition(){var l,s;return null!==(l=null===(s=this._renderer.engine.players[+this.id])||void 0===s?void 0:s.getPosition())&&void 0!==l?l:0}}function oc(g,l,s,u,y){return g.setProperty(l,`@@${s}:${u}`,y)}const Ra="@.disabled";let th=(()=>{class g{constructor(s,u,y){this.delegate=s,this.engine=u,this._zone=y,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),u.onRemovalComplete=(P,W)=>{const he=null==W?void 0:W.parentNode(P);he&&W.removeChild(he,P)}}createRenderer(s,u){const P=this.delegate.createRenderer(s,u);if(!(s&&u&&u.data&&u.data.animation)){let vt=this._rendererCache.get(P);return vt||(vt=new nd("",P,this.engine,()=>this._rendererCache.delete(P)),this._rendererCache.set(P,vt)),vt}const W=u.id,he=u.id+"-"+this._currentId;this._currentId++,this.engine.register(he,s);const Le=vt=>{Array.isArray(vt)?vt.forEach(Le):this.engine.registerTrigger(W,he,s,vt.name,vt)};return u.data.animation.forEach(Le),new _l(this,he,P,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(s,u,y){s>=0&&su(y)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(P=>{const[W,he]=P;W(he)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([u,y]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return g.\u0275fac=function(s){return new(s||g)(o.LFG(o.FYo),o.LFG(ka),o.LFG(o.R0b))},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})();class nd{constructor(l,s,u,y){this.namespaceId=l,this.delegate=s,this.engine=u,this._onDestroy=y,this.destroyNode=this.delegate.destroyNode?P=>s.destroyNode(P):null}get data(){return this.delegate.data}destroy(){var l;this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy(),null===(l=this._onDestroy)||void 0===l||l.call(this)}createElement(l,s){return this.delegate.createElement(l,s)}createComment(l){return this.delegate.createComment(l)}createText(l){return this.delegate.createText(l)}appendChild(l,s){this.delegate.appendChild(l,s),this.engine.onInsert(this.namespaceId,s,l,!1)}insertBefore(l,s,u,y=!0){this.delegate.insertBefore(l,s,u),this.engine.onInsert(this.namespaceId,s,l,y)}removeChild(l,s,u){this.engine.onRemove(this.namespaceId,s,this.delegate,u)}selectRootElement(l,s){return this.delegate.selectRootElement(l,s)}parentNode(l){return this.delegate.parentNode(l)}nextSibling(l){return this.delegate.nextSibling(l)}setAttribute(l,s,u,y){this.delegate.setAttribute(l,s,u,y)}removeAttribute(l,s,u){this.delegate.removeAttribute(l,s,u)}addClass(l,s){this.delegate.addClass(l,s)}removeClass(l,s){this.delegate.removeClass(l,s)}setStyle(l,s,u,y){this.delegate.setStyle(l,s,u,y)}removeStyle(l,s,u){this.delegate.removeStyle(l,s,u)}setProperty(l,s,u){"@"==s.charAt(0)&&s==Ra?this.disableAnimations(l,!!u):this.delegate.setProperty(l,s,u)}setValue(l,s){this.delegate.setValue(l,s)}listen(l,s,u){return this.delegate.listen(l,s,u)}disableAnimations(l,s){this.engine.disableAnimations(l,s)}}class _l extends nd{constructor(l,s,u,y,P){super(s,u,y,P),this.factory=l,this.namespaceId=s}setProperty(l,s,u){"@"==s.charAt(0)?"."==s.charAt(1)&&s==Ra?this.disableAnimations(l,u=void 0===u||!!u):this.engine.process(this.namespaceId,l,s.slice(1),u):this.delegate.setProperty(l,s,u)}listen(l,s,u){if("@"==s.charAt(0)){const y=function nh(g){switch(g){case"body":return document.body;case"document":return document;case"window":return window;default:return g}}(l);let P=s.slice(1),W="";return"@"!=P.charAt(0)&&([P,W]=function ih(g){const l=g.indexOf(".");return[g.substring(0,l),g.slice(l+1)]}(P)),this.engine.listen(this.namespaceId,y,P,W,he=>{this.factory.scheduleListenerCallback(he._data||-1,u,he)})}return this.delegate.listen(l,s,u)}}const rc=[{provide:ot._j,useClass:Ju},{provide:Dr,useFactory:function rh(){return new Xn}},{provide:ka,useClass:(()=>{class g extends ka{constructor(s,u,y,P){super(s.body,u,y)}ngOnDestroy(){this.flush()}}return g.\u0275fac=function(s){return new(s||g)(o.LFG(ie.K0),o.LFG(hs),o.LFG(Dr),o.LFG(o.z2F))},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})()},{provide:o.FYo,useFactory:function sh(g,l,s){return new th(g,l,s)},deps:[c.se,ka,o.R0b]}],Fa=[{provide:hs,useFactory:()=>new nc},{provide:o.QbO,useValue:"BrowserAnimations"},...rc],La=[{provide:hs,useClass:On},{provide:o.QbO,useValue:"NoopAnimations"},...rc];let sc=(()=>{class g{static withConfig(s){return{ngModule:g,providers:s.disableAnimations?La:Fa}}}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({providers:Fa,imports:[c.b2]}),g})();var rd=b(5412),sd=b(4385);const ad=["*",[["mat-toolbar-row"]]],ac=["*","mat-toolbar-row"],vl=(0,Pe.pj)(class{constructor(g){this._elementRef=g}});let ld=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"]}),g})(),cd=(()=>{class g extends vl{constructor(s,u,y){super(s),this._platform=u,this._document=y}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(A.t4),o.Y36(ie.K0))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-toolbar"]],contentQueries:function(s,u,y){if(1&s&&o.Suo(y,ld,5),2&s){let P;o.iGM(P=o.CRH())&&(u._toolbarRows=P)}},hostAttrs:[1,"mat-toolbar"],hostVars:4,hostBindings:function(s,u){2&s&&o.ekj("mat-toolbar-multiple-rows",u._toolbarRows.length>0)("mat-toolbar-single-row",0===u._toolbarRows.length)},inputs:{color:"color"},exportAs:["matToolbar"],features:[o.qOj],ngContentSelectors:ac,decls:2,vars:0,template:function(s,u){1&s&&(o.F$t(ad),o.Hsn(0),o.Hsn(1,1))},styles:[".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color: inherit;--mdc-outlined-button-label-text-color: inherit}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}"],encapsulation:2,changeDetection:0}),g})(),lc=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({imports:[Pe.BQ,Pe.BQ]}),g})();class Ys{}function dd(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",9),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw(2);return o.KtG(W.changeLang(P))}),o._uU(1),o.qZA()}if(2&g){const s=l.$implicit;o.xp6(1),o.Oqu(s.name)}}function oo(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",9),o.NdJ("click",function(){o.CHM(s);const y=o.oxw(2);return o.KtG(y.admin())}),o.TgZ(1,"i",24),o._uU(2,"dashboard"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4,"Dashboard"),o.qZA()()}}function bl(g,l){1&g&&(o.TgZ(0,"button",29)(1,"i",24),o._uU(2,"file_download"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4,"Downloads"),o.qZA()())}function cc(g,l){if(1&g&&(o.TgZ(0,"button",14),o._uU(1),o.qZA()),2&g){o.oxw();const s=o.MAs(8),u=o.oxw();o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.Oqu(u.api.user.user)}}function yl(g,l){if(1&g&&(o.TgZ(0,"button",26),o._uU(1),o.TgZ(2,"i",24),o._uU(3,"arrow_drop_down"),o.qZA()()),2&g){o.oxw();const s=o.MAs(8),u=o.oxw();o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.hij("",u.api.user.user," ")}}function Ri(g,l){if(1&g){const s=o.EpF();o.ynx(0),o.TgZ(1,"form",1),o._UZ(2,"input",2)(3,"input",3),o.qZA(),o.TgZ(4,"mat-menu",null,4),o.YNc(6,dd,2,1,"button",5),o.qZA(),o.TgZ(7,"mat-menu",null,6),o.YNc(9,oo,5,0,"button",7),o.YNc(10,bl,5,0,"button",8),o.TgZ(11,"button",9),o.NdJ("click",function(){o.CHM(s);const y=o.oxw();return o.KtG(y.logout())}),o.TgZ(12,"i",10),o._uU(13,"exit_to_app"),o.qZA(),o.TgZ(14,"uds-translate"),o._uU(15,"Logout"),o.qZA()()(),o.TgZ(16,"mat-menu",11,12),o.YNc(18,cc,2,2,"button",13),o.TgZ(19,"button",14),o._uU(20),o.qZA(),o.TgZ(21,"button",15)(22,"uds-translate"),o._uU(23,"UDS Client"),o.qZA()(),o.TgZ(24,"button",16)(25,"uds-translate"),o._uU(26,"About"),o.qZA()()(),o.TgZ(27,"mat-toolbar",17)(28,"button",18)(29,"div",19),o._UZ(30,"img",20),o._uU(31),o.qZA()(),o._UZ(32,"span",21),o.TgZ(33,"div",22)(34,"button",23)(35,"i",24),o._uU(36,"file_download"),o.qZA(),o.TgZ(37,"uds-translate"),o._uU(38,"UDS Client"),o.qZA()(),o.TgZ(39,"button",25)(40,"i",24),o._uU(41,"info"),o.qZA(),o.TgZ(42,"uds-translate"),o._uU(43,"About"),o.qZA()(),o.TgZ(44,"button",26),o._uU(45),o.TgZ(46,"i",24),o._uU(47,"arrow_drop_down"),o.qZA()(),o.YNc(48,yl,4,2,"button",27),o.qZA(),o.TgZ(49,"div",28)(50,"button",26)(51,"i",24),o._uU(52,"menu"),o.qZA()()()(),o.BQk()}if(2&g){const s=o.MAs(5),u=o.MAs(17),y=o.oxw();o.xp6(1),o.s9C("action",y.api.config.urls.changeLang,o.LSH),o.xp6(1),o.s9C("name",y.api.csrfField),o.s9C("value",y.api.csrfToken),o.xp6(1),o.s9C("value",y.lang.id),o.xp6(3),o.Q6J("ngForOf",y.langs),o.xp6(3),o.Q6J("ngIf",y.api.user.isStaff),o.xp6(1),o.Q6J("ngIf",y.api.user.isStaff),o.xp6(8),o.Q6J("ngIf",y.api.user.isLogged),o.xp6(1),o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.hij("",y.lang.name," "),o.xp6(10),o.Q6J("src",y.api.staticURL("modern/img/udsicon.png"),o.LSH),o.xp6(1),o.hij(" ","UDS"===y.api.config.site_logo_name?"":y.api.config.site_logo_name," "),o.xp6(13),o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.hij("",y.lang.name," "),o.xp6(3),o.Q6J("ngIf",y.api.user.isLogged),o.xp6(2),o.Q6J("matMenuTriggerFor",u)}}Ys.\u0275fac=function(l){return new(l||Ys)},Ys.\u0275mod=o.oAB({type:Ys}),Ys.\u0275inj=o.cJS({providers:[{provide:Kn.o2,useValue:{floatLabel:"always"}}],imports:[li.u5,lc,Ce.ot,or,ei,De,rd.Is,Kn.lN,ar.c,sd.LD,Ss]});class wr{constructor(l){this.api=l,this.lang={},this.langs=[],this.style="";const s=l.config.language;this.langs=[];for(const u of l.config.available_languages)u.id===s?this.lang=u:this.langs.push(u)}ngOnInit(){}changeLang(l){this.lang=l;const s=document.getElementById("id_language");s&&s.setAttribute("value",l.id);const u=document.getElementById("form_language");u&&u.submit()}admin(){this.api.gotoAdmin()}logout(){this.api.logout()}}wr.\u0275fac=function(l){return new(l||wr)(o.Y36(H.n))},wr.\u0275cmp=o.Xpm({type:wr,selectors:[["uds-navbar"]],decls:1,vars:1,consts:[[4,"ngIf"],["id","form_language","method","post",3,"action"],["type","hidden",3,"name","value"],["id","id_language","type","hidden","name","language",3,"value"],["appMenu","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["userMenu","matMenu"],["mat-menu-item","",3,"click",4,"ngIf"],["mat-menu-item","","routerLink","/downloads",4,"ngIf"],["mat-menu-item","",3,"click"],[1,"material-icons","highlight"],["x-position","before"],["shrink","matMenu"],["mat-menu-item","",3,"matMenuTriggerFor",4,"ngIf"],["mat-menu-item","",3,"matMenuTriggerFor"],["mat-menu-item","","routerLink","/client-download"],["mat-menu-item","","routerLink","/about"],["color","primary",1,"uds-nav"],["mat-button","","routerLink","/"],[1,"logo"],["alt","Universal Desktop Services",3,"src"],[1,"fill-remaining-space"],[1,"expanded"],["mat-button","","routerLink","/client-download"],[1,"material-icons"],["mat-button","","routerLink","/about"],["mat-button","",3,"matMenuTriggerFor"],["mat-button","",3,"matMenuTriggerFor",4,"ngIf"],[1,"shrinked"],["mat-menu-item","","routerLink","/downloads"]],template:function(l,s){1&l&&o.YNc(0,Ri,53,16,"ng-container",0),2&l&&o.Q6J("ngIf",""===s.api.config.urls.launch)},dependencies:[ie.sg,ie.O5,Q.rH,li._Y,li.JL,li.F,cd,Ce.lW,Ti,ln,Bi,Z.P],styles:[".uds-nav[_ngcontent-%COMP%]{position:fixed;top:0;z-index:1000}.fill-remaining-space[_ngcontent-%COMP%]{flex:1 1 auto}.material-icons[_ngcontent-%COMP%]{margin-right:.3rem}.logo[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{display:block;width:2rem}@media only screen and (max-width: 744px){.expanded[_ngcontent-%COMP%]{display:none;visibility:hidden}.shrinked[_ngcontent-%COMP%]{visibility:visible}}@media only screen and (min-width: 745px){.expanded[_ngcontent-%COMP%]{visibility:visible}.shrinked[_ngcontent-%COMP%]{display:none;visibility:hidden}}"]});class Ks{constructor(l){this.api=l}ngOnInit(){}}Ks.\u0275fac=function(l){return new(l||Ks)(o.Y36(H.n))},Ks.\u0275cmp=o.Xpm({type:Ks,selectors:[["uds-footer"]],decls:3,vars:2,consts:[[3,"href"]],template:function(l,s){1&l&&(o.TgZ(0,"div")(1,"a",0),o._uU(2),o.qZA()()),2&l&&(o.xp6(1),o.Q6J("href",s.api.config.site_copyright_link,o.LSH),o.xp6(1),o.Oqu(s.api.config.site_copyright_info))}});class Zs{constructor(l){this.api=l,this.title="UDS"}get blackTheme(){return"true"===this.api.getFromStorage("blackTheme")}set blackTheme(l){this.api.putOnStorage("blackTheme",l.toString())}handleKeyboardEvent(l){l.altKey&&l.ctrlKey&&"b"===l.key&&(this.blackTheme=!this.blackTheme,this.api.switchTheme(this.blackTheme))}ngOnInit(){this.api.switchTheme(this.blackTheme),cookieconsent.initialise({palette:{popup:{background:"#343c66",text:"#cfcfe8"},button:{background:"#f71559"}},content:{message:django.gettext("We use cookies to track usage and preferences"),dismiss:django.gettext("I Understand"),link:django.gettext("Learn more")}})}}Zs.\u0275fac=function(l){return new(l||Zs)(o.Y36(H.n))},Zs.\u0275cmp=o.Xpm({type:Zs,selectors:[["uds-root"]],hostBindings:function(l,s){1&l&&o.NdJ("keydown",function(y){return s.handleKeyboardEvent(y)},!1,o.evT)},decls:6,vars:0,consts:[[1,"page"],[1,"content"],[1,"footer"]],template:function(l,s){1&l&&(o._UZ(0,"uds-navbar"),o.TgZ(1,"div",0)(2,"div",1),o._UZ(3,"router-outlet"),o.qZA(),o.TgZ(4,"div",2),o._UZ(5,"uds-footer"),o.qZA()())},dependencies:[Q.lC,wr,Ks],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.footer[_ngcontent-%COMP%]{flex-shrink:0;margin:1em;height:1em;display:flex;flex-direction:row;justify-content:flex-end}.content[_ngcontent-%COMP%]{flex:1 0 auto;width:80%;margin:64px auto 0}@media only screen and (max-width: 744px){.content[_ngcontent-%COMP%]{width:100%}}"]});var ud=b(4461);class _s{}_s.\u0275fac=function(l){return new(l||_s)},_s.\u0275mod=o.oAB({type:_s,bootstrap:[Zs]}),_s.\u0275inj=o.cJS({providers:[H.n,ud.h],imports:[c.b2,M.xu,re.JF,ji,sc,Ys]}),b(2340).N.production&&(0,o.G48)(),c.q6().bootstrapModule(_s).catch(g=>console.log(g))},1135:(ze,me,b)=>{b.d(me,{X:()=>o});var c=b(7579);class o extends c.x{constructor(re){super(),this._value=re}get value(){return this.getValue()}_subscribe(re){const Q=super._subscribe(re);return!Q.closed&&re.next(this._value),Q}getValue(){const{hasError:re,thrownError:Q,_value:H}=this;if(re)throw Q;return this._throwIfClosed(),H}next(re){super.next(this._value=re)}}},9751:(ze,me,b)=>{b.d(me,{y:()=>Se});var c=b(930),o=b(727),M=b(8822),re=b(9635),Q=b(2416),H=b(576),fe=b(2806);let Se=(()=>{class se{constructor(we){we&&(this._subscribe=we)}lift(we){const Ie=new se;return Ie.source=this,Ie.operator=we,Ie}subscribe(we,Ie,Be){const Ve=function ye(se){return se&&se instanceof c.Lv||function Z(se){return se&&(0,H.m)(se.next)&&(0,H.m)(se.error)&&(0,H.m)(se.complete)}(se)&&(0,o.Nn)(se)}(we)?we:new c.Hp(we,Ie,Be);return(0,fe.x)(()=>{const{operator:Je,source:pt}=this;Ve.add(Je?Je.call(Ve,pt):pt?this._subscribe(Ve):this._trySubscribe(Ve))}),Ve}_trySubscribe(we){try{return this._subscribe(we)}catch(Ie){we.error(Ie)}}forEach(we,Ie){return new(Ie=ie(Ie))((Be,Ve)=>{const Je=new c.Hp({next:pt=>{try{we(pt)}catch(_t){Ve(_t),Je.unsubscribe()}},error:Ve,complete:Be});this.subscribe(Je)})}_subscribe(we){var Ie;return null===(Ie=this.source)||void 0===Ie?void 0:Ie.subscribe(we)}[M.L](){return this}pipe(...we){return(0,re.U)(we)(this)}toPromise(we){return new(we=ie(we))((Ie,Be)=>{let Ve;this.subscribe(Je=>Ve=Je,Je=>Be(Je),()=>Ie(Ve))})}}return se.create=Ee=>new se(Ee),se})();function ie(se){var Ee;return null!==(Ee=null!=se?se:Q.v.Promise)&&void 0!==Ee?Ee:Promise}},7579:(ze,me,b)=>{b.d(me,{x:()=>fe});var c=b(9751),o=b(727);const re=(0,b(3888).d)(ie=>function(){ie(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var Q=b(8737),H=b(2806);let fe=(()=>{class ie extends c.y{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(ye){const se=new Se(this,this);return se.operator=ye,se}_throwIfClosed(){if(this.closed)throw new re}next(ye){(0,H.x)(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const se of this.currentObservers)se.next(ye)}})}error(ye){(0,H.x)(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=ye;const{observers:se}=this;for(;se.length;)se.shift().error(ye)}})}complete(){(0,H.x)(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:ye}=this;for(;ye.length;)ye.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var ye;return(null===(ye=this.observers)||void 0===ye?void 0:ye.length)>0}_trySubscribe(ye){return this._throwIfClosed(),super._trySubscribe(ye)}_subscribe(ye){return this._throwIfClosed(),this._checkFinalizedStatuses(ye),this._innerSubscribe(ye)}_innerSubscribe(ye){const{hasError:se,isStopped:Ee,observers:we}=this;return se||Ee?o.Lc:(this.currentObservers=null,we.push(ye),new o.w0(()=>{this.currentObservers=null,(0,Q.P)(we,ye)}))}_checkFinalizedStatuses(ye){const{hasError:se,thrownError:Ee,isStopped:we}=this;se?ye.error(Ee):we&&ye.complete()}asObservable(){const ye=new c.y;return ye.source=this,ye}}return ie.create=(Z,ye)=>new Se(Z,ye),ie})();class Se extends fe{constructor(Z,ye){super(),this.destination=Z,this.source=ye}next(Z){var ye,se;null===(se=null===(ye=this.destination)||void 0===ye?void 0:ye.next)||void 0===se||se.call(ye,Z)}error(Z){var ye,se;null===(se=null===(ye=this.destination)||void 0===ye?void 0:ye.error)||void 0===se||se.call(ye,Z)}complete(){var Z,ye;null===(ye=null===(Z=this.destination)||void 0===Z?void 0:Z.complete)||void 0===ye||ye.call(Z)}_subscribe(Z){var ye,se;return null!==(se=null===(ye=this.source)||void 0===ye?void 0:ye.subscribe(Z))&&void 0!==se?se:o.Lc}}},930:(ze,me,b)=>{b.d(me,{Hp:()=>Be,Lv:()=>se});var c=b(576),o=b(727),M=b(2416),re=b(7849),Q=b(5032);const H=ie("C",void 0,void 0);function ie(ne,q,j){return{kind:ne,value:q,error:j}}var Z=b(3410),ye=b(2806);class se extends o.w0{constructor(q){super(),this.isStopped=!1,q?(this.destination=q,(0,o.Nn)(q)&&q.add(this)):this.destination=_t}static create(q,j,$){return new Be(q,j,$)}next(q){this.isStopped?pt(function Se(ne){return ie("N",ne,void 0)}(q),this):this._next(q)}error(q){this.isStopped?pt(function fe(ne){return ie("E",void 0,ne)}(q),this):(this.isStopped=!0,this._error(q))}complete(){this.isStopped?pt(H,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(q){this.destination.next(q)}_error(q){try{this.destination.error(q)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const Ee=Function.prototype.bind;function we(ne,q){return Ee.call(ne,q)}class Ie{constructor(q){this.partialObserver=q}next(q){const{partialObserver:j}=this;if(j.next)try{j.next(q)}catch($){Ve($)}}error(q){const{partialObserver:j}=this;if(j.error)try{j.error(q)}catch($){Ve($)}else Ve(q)}complete(){const{partialObserver:q}=this;if(q.complete)try{q.complete()}catch(j){Ve(j)}}}class Be extends se{constructor(q,j,$){let ee;if(super(),(0,c.m)(q)||!q)ee={next:null!=q?q:void 0,error:null!=j?j:void 0,complete:null!=$?$:void 0};else{let ae;this&&M.v.useDeprecatedNextContext?(ae=Object.create(q),ae.unsubscribe=()=>this.unsubscribe(),ee={next:q.next&&we(q.next,ae),error:q.error&&we(q.error,ae),complete:q.complete&&we(q.complete,ae)}):ee=q}this.destination=new Ie(ee)}}function Ve(ne){M.v.useDeprecatedSynchronousErrorHandling?(0,ye.O)(ne):(0,re.h)(ne)}function pt(ne,q){const{onStoppedNotification:j}=M.v;j&&Z.z.setTimeout(()=>j(ne,q))}const _t={closed:!0,next:Q.Z,error:function Je(ne){throw ne},complete:Q.Z}},727:(ze,me,b)=>{b.d(me,{Lc:()=>H,w0:()=>Q,Nn:()=>fe});var c=b(576);const M=(0,b(3888).d)(ie=>function(ye){ie(this),this.message=ye?`${ye.length} errors occurred during unsubscription:\n${ye.map((se,Ee)=>`${Ee+1}) ${se.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=ye});var re=b(8737);class Q{constructor(Z){this.initialTeardown=Z,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let Z;if(!this.closed){this.closed=!0;const{_parentage:ye}=this;if(ye)if(this._parentage=null,Array.isArray(ye))for(const we of ye)we.remove(this);else ye.remove(this);const{initialTeardown:se}=this;if((0,c.m)(se))try{se()}catch(we){Z=we instanceof M?we.errors:[we]}const{_finalizers:Ee}=this;if(Ee){this._finalizers=null;for(const we of Ee)try{Se(we)}catch(Ie){Z=null!=Z?Z:[],Ie instanceof M?Z=[...Z,...Ie.errors]:Z.push(Ie)}}if(Z)throw new M(Z)}}add(Z){var ye;if(Z&&Z!==this)if(this.closed)Se(Z);else{if(Z instanceof Q){if(Z.closed||Z._hasParent(this))return;Z._addParent(this)}(this._finalizers=null!==(ye=this._finalizers)&&void 0!==ye?ye:[]).push(Z)}}_hasParent(Z){const{_parentage:ye}=this;return ye===Z||Array.isArray(ye)&&ye.includes(Z)}_addParent(Z){const{_parentage:ye}=this;this._parentage=Array.isArray(ye)?(ye.push(Z),ye):ye?[ye,Z]:Z}_removeParent(Z){const{_parentage:ye}=this;ye===Z?this._parentage=null:Array.isArray(ye)&&(0,re.P)(ye,Z)}remove(Z){const{_finalizers:ye}=this;ye&&(0,re.P)(ye,Z),Z instanceof Q&&Z._removeParent(this)}}Q.EMPTY=(()=>{const ie=new Q;return ie.closed=!0,ie})();const H=Q.EMPTY;function fe(ie){return ie instanceof Q||ie&&"closed"in ie&&(0,c.m)(ie.remove)&&(0,c.m)(ie.add)&&(0,c.m)(ie.unsubscribe)}function Se(ie){(0,c.m)(ie)?ie():ie.unsubscribe()}},2416:(ze,me,b)=>{b.d(me,{v:()=>c});const c={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}},9841:(ze,me,b)=>{b.d(me,{a:()=>Z});var c=b(9751),o=b(4742),M=b(2076),re=b(4671),Q=b(3268),H=b(3269),fe=b(1810),Se=b(5403),ie=b(9672);function Z(...Ee){const we=(0,H.yG)(Ee),Ie=(0,H.jO)(Ee),{args:Be,keys:Ve}=(0,o.D)(Ee);if(0===Be.length)return(0,M.D)([],we);const Je=new c.y(function ye(Ee,we,Ie=re.y){return Be=>{se(we,()=>{const{length:Ve}=Ee,Je=new Array(Ve);let pt=Ve,_t=Ve;for(let ne=0;ne{const q=(0,M.D)(Ee[ne],we);let j=!1;q.subscribe((0,Se.x)(Be,$=>{Je[ne]=$,j||(j=!0,_t--),_t||Be.next(Ie(Je.slice()))},()=>{--pt||Be.complete()}))},Be)},Be)}}(Be,we,Ve?pt=>(0,fe.n)(Ve,pt):re.y));return Ie?Je.pipe((0,Q.Z)(Ie)):Je}function se(Ee,we,Ie){Ee?(0,ie.f)(Ie,Ee,we):we()}},7272:(ze,me,b)=>{b.d(me,{z:()=>Q});var c=b(8189),M=b(3269),re=b(2076);function Q(...H){return function o(){return(0,c.J)(1)}()((0,re.D)(H,(0,M.yG)(H)))}},9770:(ze,me,b)=>{b.d(me,{P:()=>M});var c=b(9751),o=b(8421);function M(re){return new c.y(Q=>{(0,o.Xf)(re()).subscribe(Q)})}},515:(ze,me,b)=>{b.d(me,{E:()=>o});const o=new(b(9751).y)(Q=>Q.complete())},2076:(ze,me,b)=>{b.d(me,{D:()=>$});var c=b(8421),o=b(9672),M=b(4482),re=b(5403);function Q(ee,ae=0){return(0,M.e)((Pe,de)=>{Pe.subscribe((0,re.x)(de,be=>(0,o.f)(de,ee,()=>de.next(be),ae),()=>(0,o.f)(de,ee,()=>de.complete(),ae),be=>(0,o.f)(de,ee,()=>de.error(be),ae)))})}function H(ee,ae=0){return(0,M.e)((Pe,de)=>{de.add(ee.schedule(()=>Pe.subscribe(de),ae))})}var ie=b(9751),ye=b(2202),se=b(576);function we(ee,ae){if(!ee)throw new Error("Iterable cannot be null");return new ie.y(Pe=>{(0,o.f)(Pe,ae,()=>{const de=ee[Symbol.asyncIterator]();(0,o.f)(Pe,ae,()=>{de.next().then(be=>{be.done?Pe.complete():Pe.next(be.value)})},0,!0)})})}var Ie=b(3670),Be=b(8239),Ve=b(1144),Je=b(6495),pt=b(2206),_t=b(4532),ne=b(3260);function $(ee,ae){return ae?function j(ee,ae){if(null!=ee){if((0,Ie.c)(ee))return function fe(ee,ae){return(0,c.Xf)(ee).pipe(H(ae),Q(ae))}(ee,ae);if((0,Ve.z)(ee))return function Z(ee,ae){return new ie.y(Pe=>{let de=0;return ae.schedule(function(){de===ee.length?Pe.complete():(Pe.next(ee[de++]),Pe.closed||this.schedule())})})}(ee,ae);if((0,Be.t)(ee))return function Se(ee,ae){return(0,c.Xf)(ee).pipe(H(ae),Q(ae))}(ee,ae);if((0,pt.D)(ee))return we(ee,ae);if((0,Je.T)(ee))return function Ee(ee,ae){return new ie.y(Pe=>{let de;return(0,o.f)(Pe,ae,()=>{de=ee[ye.h](),(0,o.f)(Pe,ae,()=>{let be,Fe;try{({value:be,done:Fe}=de.next())}catch(ke){return void Pe.error(ke)}Fe?Pe.complete():Pe.next(be)},0,!0)}),()=>(0,se.m)(null==de?void 0:de.return)&&de.return()})}(ee,ae);if((0,ne.L)(ee))return function q(ee,ae){return we((0,ne.Q)(ee),ae)}(ee,ae)}throw(0,_t.z)(ee)}(ee,ae):(0,c.Xf)(ee)}},4968:(ze,me,b)=>{b.d(me,{R:()=>Z});var c=b(8421),o=b(9751),M=b(5577),re=b(1144),Q=b(576),H=b(3268);const fe=["addListener","removeListener"],Se=["addEventListener","removeEventListener"],ie=["on","off"];function Z(Ie,Be,Ve,Je){if((0,Q.m)(Ve)&&(Je=Ve,Ve=void 0),Je)return Z(Ie,Be,Ve).pipe((0,H.Z)(Je));const[pt,_t]=function we(Ie){return(0,Q.m)(Ie.addEventListener)&&(0,Q.m)(Ie.removeEventListener)}(Ie)?Se.map(ne=>q=>Ie[ne](Be,q,Ve)):function se(Ie){return(0,Q.m)(Ie.addListener)&&(0,Q.m)(Ie.removeListener)}(Ie)?fe.map(ye(Ie,Be)):function Ee(Ie){return(0,Q.m)(Ie.on)&&(0,Q.m)(Ie.off)}(Ie)?ie.map(ye(Ie,Be)):[];if(!pt&&(0,re.z)(Ie))return(0,M.z)(ne=>Z(ne,Be,Ve))((0,c.Xf)(Ie));if(!pt)throw new TypeError("Invalid event target");return new o.y(ne=>{const q=(...j)=>ne.next(1_t(q)})}function ye(Ie,Be){return Ve=>Je=>Ie[Ve](Be,Je)}},8421:(ze,me,b)=>{b.d(me,{Xf:()=>Ee});var c=b(655),o=b(1144),M=b(8239),re=b(9751),Q=b(3670),H=b(2206),fe=b(4532),Se=b(6495),ie=b(3260),Z=b(576),ye=b(7849),se=b(8822);function Ee(ne){if(ne instanceof re.y)return ne;if(null!=ne){if((0,Q.c)(ne))return function we(ne){return new re.y(q=>{const j=ne[se.L]();if((0,Z.m)(j.subscribe))return j.subscribe(q);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(ne);if((0,o.z)(ne))return function Ie(ne){return new re.y(q=>{for(let j=0;j{ne.then(j=>{q.closed||(q.next(j),q.complete())},j=>q.error(j)).then(null,ye.h)})}(ne);if((0,H.D)(ne))return Je(ne);if((0,Se.T)(ne))return function Ve(ne){return new re.y(q=>{for(const j of ne)if(q.next(j),q.closed)return;q.complete()})}(ne);if((0,ie.L)(ne))return function pt(ne){return Je((0,ie.Q)(ne))}(ne)}throw(0,fe.z)(ne)}function Je(ne){return new re.y(q=>{(function _t(ne,q){var j,$,ee,ae;return(0,c.mG)(this,void 0,void 0,function*(){try{for(j=(0,c.KL)(ne);!($=yield j.next()).done;)if(q.next($.value),q.closed)return}catch(Pe){ee={error:Pe}}finally{try{$&&!$.done&&(ae=j.return)&&(yield ae.call(j))}finally{if(ee)throw ee.error}}q.complete()})})(ne,q).catch(j=>q.error(j))})}},6451:(ze,me,b)=>{b.d(me,{T:()=>H});var c=b(8189),o=b(8421),M=b(515),re=b(3269),Q=b(2076);function H(...fe){const Se=(0,re.yG)(fe),ie=(0,re._6)(fe,1/0),Z=fe;return Z.length?1===Z.length?(0,o.Xf)(Z[0]):(0,c.J)(ie)((0,Q.D)(Z,Se)):M.E}},9646:(ze,me,b)=>{b.d(me,{of:()=>M});var c=b(3269),o=b(2076);function M(...re){const Q=(0,c.yG)(re);return(0,o.D)(re,Q)}},2805:(ze,me,b)=>{b.d(me,{H:()=>Q});var c=b(9751),o=b(4986),M=b(3532),re=b(1165);function Q(H=0,fe,Se=o.P){let ie=-1;return null!=fe&&((0,M.K)(fe)?Se=fe:ie=fe),new c.y(Z=>{let ye=(0,re.q)(H)?+H-Se.now():H;ye<0&&(ye=0);let se=0;return Se.schedule(function(){Z.closed||(Z.next(se++),0<=ie?this.schedule(void 0,ie):Z.complete())},ye)})}},5403:(ze,me,b)=>{b.d(me,{x:()=>o});var c=b(930);function o(re,Q,H,fe,Se){return new M(re,Q,H,fe,Se)}class M extends c.Lv{constructor(Q,H,fe,Se,ie,Z){super(Q),this.onFinalize=ie,this.shouldUnsubscribe=Z,this._next=H?function(ye){try{H(ye)}catch(se){Q.error(se)}}:super._next,this._error=Se?function(ye){try{Se(ye)}catch(se){Q.error(se)}finally{this.unsubscribe()}}:super._error,this._complete=fe?function(){try{fe()}catch(ye){Q.error(ye)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var Q;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:H}=this;super.unsubscribe(),!H&&(null===(Q=this.onFinalize)||void 0===Q||Q.call(this))}}}},4351:(ze,me,b)=>{b.d(me,{b:()=>M});var c=b(5577),o=b(576);function M(re,Q){return(0,o.m)(Q)?(0,c.z)(re,Q,1):(0,c.z)(re,1)}},8372:(ze,me,b)=>{b.d(me,{b:()=>re});var c=b(4986),o=b(4482),M=b(5403);function re(Q,H=c.z){return(0,o.e)((fe,Se)=>{let ie=null,Z=null,ye=null;const se=()=>{if(ie){ie.unsubscribe(),ie=null;const we=Z;Z=null,Se.next(we)}};function Ee(){const we=ye+Q,Ie=H.now();if(Ie{Z=we,ye=H.now(),ie||(ie=H.schedule(Ee,Q),Se.add(ie))},()=>{se(),Se.complete()},void 0,()=>{Z=ie=null}))})}},1884:(ze,me,b)=>{b.d(me,{x:()=>re});var c=b(4671),o=b(4482),M=b(5403);function re(H,fe=c.y){return H=null!=H?H:Q,(0,o.e)((Se,ie)=>{let Z,ye=!0;Se.subscribe((0,M.x)(ie,se=>{const Ee=fe(se);(ye||!H(Z,Ee))&&(ye=!1,Z=Ee,ie.next(se))}))})}function Q(H,fe){return H===fe}},9300:(ze,me,b)=>{b.d(me,{h:()=>M});var c=b(4482),o=b(5403);function M(re,Q){return(0,c.e)((H,fe)=>{let Se=0;H.subscribe((0,o.x)(fe,ie=>re.call(Q,ie,Se++)&&fe.next(ie)))})}},4004:(ze,me,b)=>{b.d(me,{U:()=>M});var c=b(4482),o=b(5403);function M(re,Q){return(0,c.e)((H,fe)=>{let Se=0;H.subscribe((0,o.x)(fe,ie=>{fe.next(re.call(Q,ie,Se++))}))})}},9718:(ze,me,b)=>{b.d(me,{h:()=>o});var c=b(4004);function o(M){return(0,c.U)(()=>M)}},8189:(ze,me,b)=>{b.d(me,{J:()=>M});var c=b(5577),o=b(4671);function M(re=1/0){return(0,c.z)(o.y,re)}},5577:(ze,me,b)=>{b.d(me,{z:()=>Se});var c=b(4004),o=b(8421),M=b(4482),re=b(9672),Q=b(5403),fe=b(576);function Se(ie,Z,ye=1/0){return(0,fe.m)(Z)?Se((se,Ee)=>(0,c.U)((we,Ie)=>Z(se,we,Ee,Ie))((0,o.Xf)(ie(se,Ee))),ye):("number"==typeof Z&&(ye=Z),(0,M.e)((se,Ee)=>function H(ie,Z,ye,se,Ee,we,Ie,Be){const Ve=[];let Je=0,pt=0,_t=!1;const ne=()=>{_t&&!Ve.length&&!Je&&Z.complete()},q=$=>Je{we&&Z.next($),Je++;let ee=!1;(0,o.Xf)(ye($,pt++)).subscribe((0,Q.x)(Z,ae=>{null==Ee||Ee(ae),we?q(ae):Z.next(ae)},()=>{ee=!0},void 0,()=>{if(ee)try{for(Je--;Ve.length&&Jej(ae)):j(ae)}ne()}catch(ae){Z.error(ae)}}))};return ie.subscribe((0,Q.x)(Z,q,()=>{_t=!0,ne()})),()=>{null==Be||Be()}}(se,Ee,ie,ye)))}},5684:(ze,me,b)=>{b.d(me,{T:()=>o});var c=b(9300);function o(M){return(0,c.h)((re,Q)=>M<=Q)}},8675:(ze,me,b)=>{b.d(me,{O:()=>re});var c=b(7272),o=b(3269),M=b(4482);function re(...Q){const H=(0,o.yG)(Q);return(0,M.e)((fe,Se)=>{(H?(0,c.z)(Q,fe,H):(0,c.z)(Q,fe)).subscribe(Se)})}},3900:(ze,me,b)=>{b.d(me,{w:()=>re});var c=b(8421),o=b(4482),M=b(5403);function re(Q,H){return(0,o.e)((fe,Se)=>{let ie=null,Z=0,ye=!1;const se=()=>ye&&!ie&&Se.complete();fe.subscribe((0,M.x)(Se,Ee=>{null==ie||ie.unsubscribe();let we=0;const Ie=Z++;(0,c.Xf)(Q(Ee,Ie)).subscribe(ie=(0,M.x)(Se,Be=>Se.next(H?H(Ee,Be,Ie,we++):Be),()=>{ie=null,se()}))},()=>{ye=!0,se()}))})}},5698:(ze,me,b)=>{b.d(me,{q:()=>re});var c=b(515),o=b(4482),M=b(5403);function re(Q){return Q<=0?()=>c.E:(0,o.e)((H,fe)=>{let Se=0;H.subscribe((0,M.x)(fe,ie=>{++Se<=Q&&(fe.next(ie),Q<=Se&&fe.complete())}))})}},2722:(ze,me,b)=>{b.d(me,{R:()=>Q});var c=b(4482),o=b(5403),M=b(8421),re=b(5032);function Q(H){return(0,c.e)((fe,Se)=>{(0,M.Xf)(H).subscribe((0,o.x)(Se,()=>Se.complete(),re.Z)),!Se.closed&&fe.subscribe(Se)})}},2529:(ze,me,b)=>{b.d(me,{o:()=>M});var c=b(4482),o=b(5403);function M(re,Q=!1){return(0,c.e)((H,fe)=>{let Se=0;H.subscribe((0,o.x)(fe,ie=>{const Z=re(ie,Se++);(Z||Q)&&fe.next(ie),!Z&&fe.complete()}))})}},8505:(ze,me,b)=>{b.d(me,{b:()=>Q});var c=b(576),o=b(4482),M=b(5403),re=b(4671);function Q(H,fe,Se){const ie=(0,c.m)(H)||fe||Se?{next:H,error:fe,complete:Se}:H;return ie?(0,o.e)((Z,ye)=>{var se;null===(se=ie.subscribe)||void 0===se||se.call(ie);let Ee=!0;Z.subscribe((0,M.x)(ye,we=>{var Ie;null===(Ie=ie.next)||void 0===Ie||Ie.call(ie,we),ye.next(we)},()=>{var we;Ee=!1,null===(we=ie.complete)||void 0===we||we.call(ie),ye.complete()},we=>{var Ie;Ee=!1,null===(Ie=ie.error)||void 0===Ie||Ie.call(ie,we),ye.error(we)},()=>{var we,Ie;Ee&&(null===(we=ie.unsubscribe)||void 0===we||we.call(ie)),null===(Ie=ie.finalize)||void 0===Ie||Ie.call(ie)}))}):re.y}},4408:(ze,me,b)=>{b.d(me,{o:()=>Q});var c=b(727);class o extends c.w0{constructor(fe,Se){super()}schedule(fe,Se=0){return this}}const M={setInterval(H,fe,...Se){const{delegate:ie}=M;return null!=ie&&ie.setInterval?ie.setInterval(H,fe,...Se):setInterval(H,fe,...Se)},clearInterval(H){const{delegate:fe}=M;return((null==fe?void 0:fe.clearInterval)||clearInterval)(H)},delegate:void 0};var re=b(8737);class Q extends o{constructor(fe,Se){super(fe,Se),this.scheduler=fe,this.work=Se,this.pending=!1}schedule(fe,Se=0){var ie;if(this.closed)return this;this.state=fe;const Z=this.id,ye=this.scheduler;return null!=Z&&(this.id=this.recycleAsyncId(ye,Z,Se)),this.pending=!0,this.delay=Se,this.id=null!==(ie=this.id)&&void 0!==ie?ie:this.requestAsyncId(ye,this.id,Se),this}requestAsyncId(fe,Se,ie=0){return M.setInterval(fe.flush.bind(fe,this),ie)}recycleAsyncId(fe,Se,ie=0){if(null!=ie&&this.delay===ie&&!1===this.pending)return Se;null!=Se&&M.clearInterval(Se)}execute(fe,Se){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const ie=this._execute(fe,Se);if(ie)return ie;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(fe,Se){let Z,ie=!1;try{this.work(fe)}catch(ye){ie=!0,Z=ye||new Error("Scheduled action threw falsy error")}if(ie)return this.unsubscribe(),Z}unsubscribe(){if(!this.closed){const{id:fe,scheduler:Se}=this,{actions:ie}=Se;this.work=this.state=this.scheduler=null,this.pending=!1,(0,re.P)(ie,this),null!=fe&&(this.id=this.recycleAsyncId(Se,fe,null)),this.delay=null,super.unsubscribe()}}}},640:(ze,me,b)=>{b.d(me,{v:()=>M});const c={now:()=>(c.delegate||Date).now(),delegate:void 0};class o{constructor(Q,H=o.now){this.schedulerActionCtor=Q,this.now=H}schedule(Q,H=0,fe){return new this.schedulerActionCtor(this,Q).schedule(fe,H)}}o.now=c.now;class M extends o{constructor(Q,H=o.now){super(Q,H),this.actions=[],this._active=!1}flush(Q){const{actions:H}=this;if(this._active)return void H.push(Q);let fe;this._active=!0;do{if(fe=Q.execute(Q.state,Q.delay))break}while(Q=H.shift());if(this._active=!1,fe){for(;Q=H.shift();)Q.unsubscribe();throw fe}}}},3101:(ze,me,b)=>{b.d(me,{E:()=>we});var c=b(4408);let M,o=1;const re={};function Q(Be){return Be in re&&(delete re[Be],!0)}const H={setImmediate(Be){const Ve=o++;return re[Ve]=!0,M||(M=Promise.resolve()),M.then(()=>Q(Ve)&&Be()),Ve},clearImmediate(Be){Q(Be)}},{setImmediate:Se,clearImmediate:ie}=H,Z={setImmediate(...Be){const{delegate:Ve}=Z;return((null==Ve?void 0:Ve.setImmediate)||Se)(...Be)},clearImmediate(Be){const{delegate:Ve}=Z;return((null==Ve?void 0:Ve.clearImmediate)||ie)(Be)},delegate:void 0};var se=b(640);const we=new class Ee extends se.v{flush(Ve){this._active=!0;const Je=this._scheduled;this._scheduled=void 0;const{actions:pt}=this;let _t;Ve=Ve||pt.shift();do{if(_t=Ve.execute(Ve.state,Ve.delay))break}while((Ve=pt[0])&&Ve.id===Je&&pt.shift());if(this._active=!1,_t){for(;(Ve=pt[0])&&Ve.id===Je&&pt.shift();)Ve.unsubscribe();throw _t}}}(class ye extends c.o{constructor(Ve,Je){super(Ve,Je),this.scheduler=Ve,this.work=Je}requestAsyncId(Ve,Je,pt=0){return null!==pt&&pt>0?super.requestAsyncId(Ve,Je,pt):(Ve.actions.push(this),Ve._scheduled||(Ve._scheduled=Z.setImmediate(Ve.flush.bind(Ve,void 0))))}recycleAsyncId(Ve,Je,pt=0){var _t;if(null!=pt?pt>0:this.delay>0)return super.recycleAsyncId(Ve,Je,pt);const{actions:ne}=Ve;null!=Je&&(null===(_t=ne[ne.length-1])||void 0===_t?void 0:_t.id)!==Je&&(Z.clearImmediate(Je),Ve._scheduled=void 0)}})},4986:(ze,me,b)=>{b.d(me,{P:()=>re,z:()=>M});var c=b(4408);const M=new(b(640).v)(c.o),re=M},3410:(ze,me,b)=>{b.d(me,{z:()=>c});const c={setTimeout(o,M,...re){const{delegate:Q}=c;return null!=Q&&Q.setTimeout?Q.setTimeout(o,M,...re):setTimeout(o,M,...re)},clearTimeout(o){const{delegate:M}=c;return((null==M?void 0:M.clearTimeout)||clearTimeout)(o)},delegate:void 0}},2202:(ze,me,b)=>{b.d(me,{h:()=>o});const o=function c(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}()},8822:(ze,me,b)=>{b.d(me,{L:()=>c});const c="function"==typeof Symbol&&Symbol.observable||"@@observable"},6805:(ze,me,b)=>{b.d(me,{K:()=>o});const o=(0,b(3888).d)(M=>function(){M(this),this.name="EmptyError",this.message="no elements in sequence"})},3269:(ze,me,b)=>{b.d(me,{_6:()=>H,jO:()=>re,yG:()=>Q});var c=b(576),o=b(3532);function M(fe){return fe[fe.length-1]}function re(fe){return(0,c.m)(M(fe))?fe.pop():void 0}function Q(fe){return(0,o.K)(M(fe))?fe.pop():void 0}function H(fe,Se){return"number"==typeof M(fe)?fe.pop():Se}},4742:(ze,me,b)=>{b.d(me,{D:()=>Q});const{isArray:c}=Array,{getPrototypeOf:o,prototype:M,keys:re}=Object;function Q(fe){if(1===fe.length){const Se=fe[0];if(c(Se))return{args:Se,keys:null};if(function H(fe){return fe&&"object"==typeof fe&&o(fe)===M}(Se)){const ie=re(Se);return{args:ie.map(Z=>Se[Z]),keys:ie}}}return{args:fe,keys:null}}},8737:(ze,me,b)=>{function c(o,M){if(o){const re=o.indexOf(M);0<=re&&o.splice(re,1)}}b.d(me,{P:()=>c})},3888:(ze,me,b)=>{function c(o){const re=o(Q=>{Error.call(Q),Q.stack=(new Error).stack});return re.prototype=Object.create(Error.prototype),re.prototype.constructor=re,re}b.d(me,{d:()=>c})},1810:(ze,me,b)=>{function c(o,M){return o.reduce((re,Q,H)=>(re[Q]=M[H],re),{})}b.d(me,{n:()=>c})},2806:(ze,me,b)=>{b.d(me,{O:()=>re,x:()=>M});var c=b(2416);let o=null;function M(Q){if(c.v.useDeprecatedSynchronousErrorHandling){const H=!o;if(H&&(o={errorThrown:!1,error:null}),Q(),H){const{errorThrown:fe,error:Se}=o;if(o=null,fe)throw Se}}else Q()}function re(Q){c.v.useDeprecatedSynchronousErrorHandling&&o&&(o.errorThrown=!0,o.error=Q)}},9672:(ze,me,b)=>{function c(o,M,re,Q=0,H=!1){const fe=M.schedule(function(){re(),H?o.add(this.schedule(null,Q)):this.unsubscribe()},Q);if(o.add(fe),!H)return fe}b.d(me,{f:()=>c})},4671:(ze,me,b)=>{function c(o){return o}b.d(me,{y:()=>c})},1144:(ze,me,b)=>{b.d(me,{z:()=>c});const c=o=>o&&"number"==typeof o.length&&"function"!=typeof o},2206:(ze,me,b)=>{b.d(me,{D:()=>o});var c=b(576);function o(M){return Symbol.asyncIterator&&(0,c.m)(null==M?void 0:M[Symbol.asyncIterator])}},1165:(ze,me,b)=>{function c(o){return o instanceof Date&&!isNaN(o)}b.d(me,{q:()=>c})},576:(ze,me,b)=>{function c(o){return"function"==typeof o}b.d(me,{m:()=>c})},3670:(ze,me,b)=>{b.d(me,{c:()=>M});var c=b(8822),o=b(576);function M(re){return(0,o.m)(re[c.L])}},6495:(ze,me,b)=>{b.d(me,{T:()=>M});var c=b(2202),o=b(576);function M(re){return(0,o.m)(null==re?void 0:re[c.h])}},8239:(ze,me,b)=>{b.d(me,{t:()=>o});var c=b(576);function o(M){return(0,c.m)(null==M?void 0:M.then)}},3260:(ze,me,b)=>{b.d(me,{L:()=>re,Q:()=>M});var c=b(655),o=b(576);function M(Q){return(0,c.FC)(this,arguments,function*(){const fe=Q.getReader();try{for(;;){const{value:Se,done:ie}=yield(0,c.qq)(fe.read());if(ie)return yield(0,c.qq)(void 0);yield yield(0,c.qq)(Se)}}finally{fe.releaseLock()}})}function re(Q){return(0,o.m)(null==Q?void 0:Q.getReader)}},3532:(ze,me,b)=>{b.d(me,{K:()=>o});var c=b(576);function o(M){return M&&(0,c.m)(M.schedule)}},4482:(ze,me,b)=>{b.d(me,{A:()=>o,e:()=>M});var c=b(576);function o(re){return(0,c.m)(null==re?void 0:re.lift)}function M(re){return Q=>{if(o(Q))return Q.lift(function(H){try{return re(H,this)}catch(fe){this.error(fe)}});throw new TypeError("Unable to lift unknown Observable type")}}},3268:(ze,me,b)=>{b.d(me,{Z:()=>re});var c=b(4004);const{isArray:o}=Array;function re(Q){return(0,c.U)(H=>function M(Q,H){return o(H)?Q(...H):Q(H)}(Q,H))}},5032:(ze,me,b)=>{function c(){}b.d(me,{Z:()=>c})},9635:(ze,me,b)=>{b.d(me,{U:()=>M,z:()=>o});var c=b(4671);function o(...re){return M(re)}function M(re){return 0===re.length?c.y:1===re.length?re[0]:function(H){return re.reduce((fe,Se)=>Se(fe),H)}}},7849:(ze,me,b)=>{b.d(me,{h:()=>M});var c=b(2416),o=b(3410);function M(re){o.z.setTimeout(()=>{const{onUnhandledError:Q}=c.v;if(!Q)throw re;Q(re)})}},4532:(ze,me,b)=>{function c(o){return new TypeError(`You provided ${null!==o&&"object"==typeof o?"an invalid object":`'${o}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}b.d(me,{z:()=>c})},655:(ze,me,b)=>{function Se(de,be,Fe,ke){return new(Fe||(Fe=Promise))(function($e,bt){function At(mt){try{st(ke.next(mt))}catch(ut){bt(ut)}}function ot(mt){try{st(ke.throw(mt))}catch(ut){bt(ut)}}function st(mt){mt.done?$e(mt.value):function Xe($e){return $e instanceof Fe?$e:new Fe(function(bt){bt($e)})}(mt.value).then(At,ot)}st((ke=ke.apply(de,be||[])).next())})}function Ve(de){return this instanceof Ve?(this.v=de,this):new Ve(de)}function Je(de,be,Fe){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var Xe,ke=Fe.apply(de,be||[]),$e=[];return Xe={},bt("next"),bt("throw"),bt("return"),Xe[Symbol.asyncIterator]=function(){return this},Xe;function bt(lt){ke[lt]&&(Xe[lt]=function(jt){return new Promise(function(Lt,yt){$e.push([lt,jt,Lt,yt])>1||At(lt,jt)})})}function At(lt,jt){try{!function ot(lt){lt.value instanceof Ve?Promise.resolve(lt.value.v).then(st,mt):ut($e[0][2],lt)}(ke[lt](jt))}catch(Lt){ut($e[0][3],Lt)}}function st(lt){At("next",lt)}function mt(lt){At("throw",lt)}function ut(lt,jt){lt(jt),$e.shift(),$e.length&&At($e[0][0],$e[0][1])}}function _t(de){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var Fe,be=de[Symbol.asyncIterator];return be?be.call(de):(de=function se(de){var be="function"==typeof Symbol&&Symbol.iterator,Fe=be&&de[be],ke=0;if(Fe)return Fe.call(de);if(de&&"number"==typeof de.length)return{next:function(){return de&&ke>=de.length&&(de=void 0),{value:de&&de[ke++],done:!de}}};throw new TypeError(be?"Object is not iterable.":"Symbol.iterator is not defined.")}(de),Fe={},ke("next"),ke("throw"),ke("return"),Fe[Symbol.asyncIterator]=function(){return this},Fe);function ke($e){Fe[$e]=de[$e]&&function(bt){return new Promise(function(At,ot){!function Xe($e,bt,At,ot){Promise.resolve(ot).then(function(st){$e({value:st,done:At})},bt)}(At,ot,(bt=de[$e](bt)).done,bt.value)})}}}b.d(me,{FC:()=>Je,KL:()=>_t,mG:()=>Se,qq:()=>Ve})},7340:(ze,me,b)=>{b.d(me,{IO:()=>Ie,LC:()=>o,SB:()=>ie,X$:()=>re,ZE:()=>pt,ZN:()=>Je,_j:()=>c,eR:()=>ye,jt:()=>Q,k1:()=>_t,l3:()=>M,oB:()=>Se,pV:()=>Ee,ru:()=>H,vP:()=>fe});class c{}class o{}const M="*";function re(ne,q){return{type:7,name:ne,definitions:q,options:{}}}function Q(ne,q=null){return{type:4,styles:q,timings:ne}}function H(ne,q=null){return{type:3,steps:ne,options:q}}function fe(ne,q=null){return{type:2,steps:ne,options:q}}function Se(ne){return{type:6,styles:ne,offset:null}}function ie(ne,q,j){return{type:0,name:ne,styles:q,options:j}}function ye(ne,q,j=null){return{type:1,expr:ne,animation:q,options:j}}function Ee(ne=null){return{type:9,options:ne}}function Ie(ne,q,j=null){return{type:11,selector:ne,animation:q,options:j}}function Ve(ne){Promise.resolve().then(ne)}class Je{constructor(q=0,j=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=q+j}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(q=>q()),this._onDoneFns=[])}onStart(q){this._originalOnStartFns.push(q),this._onStartFns.push(q)}onDone(q){this._originalOnDoneFns.push(q),this._onDoneFns.push(q)}onDestroy(q){this._onDestroyFns.push(q)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){Ve(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(q=>q()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(q=>q()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(q){this._position=this.totalTime?q*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(q){const j="start"==q?this._onStartFns:this._onDoneFns;j.forEach($=>$()),j.length=0}}class pt{constructor(q){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=q;let j=0,$=0,ee=0;const ae=this.players.length;0==ae?Ve(()=>this._onFinish()):this.players.forEach(Pe=>{Pe.onDone(()=>{++j==ae&&this._onFinish()}),Pe.onDestroy(()=>{++$==ae&&this._onDestroy()}),Pe.onStart(()=>{++ee==ae&&this._onStart()})}),this.totalTime=this.players.reduce((Pe,de)=>Math.max(Pe,de.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(q=>q()),this._onDoneFns=[])}init(){this.players.forEach(q=>q.init())}onStart(q){this._onStartFns.push(q)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(q=>q()),this._onStartFns=[])}onDone(q){this._onDoneFns.push(q)}onDestroy(q){this._onDestroyFns.push(q)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(q=>q.play())}pause(){this.players.forEach(q=>q.pause())}restart(){this.players.forEach(q=>q.restart())}finish(){this._onFinish(),this.players.forEach(q=>q.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(q=>q.destroy()),this._onDestroyFns.forEach(q=>q()),this._onDestroyFns=[])}reset(){this.players.forEach(q=>q.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(q){const j=q*this.totalTime;this.players.forEach($=>{const ee=$.totalTime?Math.min(1,j/$.totalTime):1;$.setPosition(ee)})}getPosition(){const q=this.players.reduce((j,$)=>null===j||$.totalTime>j.totalTime?$:j,null);return null!=q?q.getPosition():0}beforeDestroy(){this.players.forEach(q=>{q.beforeDestroy&&q.beforeDestroy()})}triggerCallback(q){const j="start"==q?this._onStartFns:this._onDoneFns;j.forEach($=>$()),j.length=0}}const _t="!"},2687:(ze,me,b)=>{b.d(me,{$s:()=>de,Em:()=>$e,Kd:()=>pe,X6:()=>ue,ic:()=>At,qV:()=>Ct,qm:()=>Ze,rt:()=>Me,s1:()=>Xe,tE:()=>at,yG:()=>R});var c=b(6895),o=b(1571),M=b(3353),re=b(7579),Q=b(727),H=b(1135),fe=b(9646),Se=b(9521),ie=b(8505),Z=b(8372),ye=b(9300),se=b(4004),Ee=b(5698),we=b(5684),Ie=b(1884),Be=b(2722),Ve=b(1281),Je=b(9643),pt=b(2289);function j(I,A){return(I.getAttribute(A)||"").match(/\S+/g)||[]}const ee="cdk-describedby-message",ae="cdk-describedby-host";let Pe=0,de=(()=>{class I{constructor(T,z){this._platform=z,this._messageRegistry=new Map,this._messagesContainer=null,this._id=""+Pe++,this._document=T,this._id=(0,o.f3M)(o.AFp)+"-"+Pe++}describe(T,z,Y){if(!this._canBeDescribed(T,z))return;const He=be(z,Y);"string"!=typeof z?(Fe(z,this._id),this._messageRegistry.set(He,{messageElement:z,referenceCount:0})):this._messageRegistry.has(He)||this._createMessageElement(z,Y),this._isElementDescribedByMessage(T,He)||this._addMessageReference(T,He)}removeDescription(T,z,Y){var He;if(!z||!this._isElementNode(T))return;const gt=be(z,Y);if(this._isElementDescribedByMessage(T,gt)&&this._removeMessageReference(T,gt),"string"==typeof z){const Ft=this._messageRegistry.get(gt);Ft&&0===Ft.referenceCount&&this._deleteMessageElement(gt)}0===(null===(He=this._messagesContainer)||void 0===He?void 0:He.childNodes.length)&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){var T;const z=this._document.querySelectorAll(`[${ae}="${this._id}"]`);for(let Y=0;Y0!=Y.indexOf(ee));T.setAttribute("aria-describedby",z.join(" "))}_addMessageReference(T,z){const Y=this._messageRegistry.get(z);(function ne(I,A,T){const z=j(I,A);z.some(Y=>Y.trim()==T.trim())||(z.push(T.trim()),I.setAttribute(A,z.join(" ")))})(T,"aria-describedby",Y.messageElement.id),T.setAttribute(ae,this._id),Y.referenceCount++}_removeMessageReference(T,z){const Y=this._messageRegistry.get(z);Y.referenceCount--,function q(I,A,T){const Y=j(I,A).filter(He=>He!=T.trim());Y.length?I.setAttribute(A,Y.join(" ")):I.removeAttribute(A)}(T,"aria-describedby",Y.messageElement.id),T.removeAttribute(ae)}_isElementDescribedByMessage(T,z){const Y=j(T,"aria-describedby"),He=this._messageRegistry.get(z),gt=He&&He.messageElement.id;return!!gt&&-1!=Y.indexOf(gt)}_canBeDescribed(T,z){if(!this._isElementNode(T))return!1;if(z&&"object"==typeof z)return!0;const Y=null==z?"":`${z}`.trim(),He=T.getAttribute("aria-label");return!(!Y||He&&He.trim()===Y)}_isElementNode(T){return T.nodeType===this._document.ELEMENT_NODE}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(c.K0),o.LFG(M.t4))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();function be(I,A){return"string"==typeof I?`${A||""}/${I}`:I}function Fe(I,A){I.id||(I.id=`${ee}-${A}-${Pe++}`)}class ke{constructor(A){this._items=A,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new re.x,this._typeaheadSubscription=Q.w0.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=T=>T.disabled,this._pressedLetters=[],this.tabOut=new re.x,this.change=new re.x,A instanceof o.n_E&&(this._itemChangesSubscription=A.changes.subscribe(T=>{if(this._activeItem){const Y=T.toArray().indexOf(this._activeItem);Y>-1&&Y!==this._activeItemIndex&&(this._activeItemIndex=Y)}}))}skipPredicate(A){return this._skipPredicateFn=A,this}withWrap(A=!0){return this._wrap=A,this}withVerticalOrientation(A=!0){return this._vertical=A,this}withHorizontalOrientation(A){return this._horizontal=A,this}withAllowedModifierKeys(A){return this._allowedModifierKeys=A,this}withTypeAhead(A=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe((0,ie.b)(T=>this._pressedLetters.push(T)),(0,Z.b)(A),(0,ye.h)(()=>this._pressedLetters.length>0),(0,se.U)(()=>this._pressedLetters.join(""))).subscribe(T=>{const z=this._getItemsArray();for(let Y=1;Y!A[He]||this._allowedModifierKeys.indexOf(He)>-1);switch(T){case Se.Mf:return void this.tabOut.next();case Se.JH:if(this._vertical&&Y){this.setNextItemActive();break}return;case Se.LH:if(this._vertical&&Y){this.setPreviousItemActive();break}return;case Se.SV:if(this._horizontal&&Y){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case Se.oh:if(this._horizontal&&Y){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case Se.Sd:if(this._homeAndEnd&&Y){this.setFirstItemActive();break}return;case Se.uR:if(this._homeAndEnd&&Y){this.setLastItemActive();break}return;case Se.Ku:if(this._pageUpAndDown.enabled&&Y){const He=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(He>0?He:0,1);break}return;case Se.VM:if(this._pageUpAndDown.enabled&&Y){const He=this._activeItemIndex+this._pageUpAndDown.delta,gt=this._getItemsArray().length;this._setActiveItemByIndex(He=Se.A&&T<=Se.Z||T>=Se.xE&&T<=Se.aO)&&this._letterKeyStream.next(String.fromCharCode(T))))}this._pressedLetters=[],A.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(A){const T=this._getItemsArray(),z="number"==typeof A?A:T.indexOf(A),Y=T[z];this._activeItem=null==Y?null:Y,this._activeItemIndex=z}destroy(){var A;this._typeaheadSubscription.unsubscribe(),null===(A=this._itemChangesSubscription)||void 0===A||A.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(A){this._wrap?this._setActiveInWrapMode(A):this._setActiveInDefaultMode(A)}_setActiveInWrapMode(A){const T=this._getItemsArray();for(let z=1;z<=T.length;z++){const Y=(this._activeItemIndex+A*z+T.length)%T.length;if(!this._skipPredicateFn(T[Y]))return void this.setActiveItem(Y)}}_setActiveInDefaultMode(A){this._setActiveItemByIndex(this._activeItemIndex+A,A)}_setActiveItemByIndex(A,T){const z=this._getItemsArray();if(z[A]){for(;this._skipPredicateFn(z[A]);)if(!z[A+=T])return;this.setActiveItem(A)}}_getItemsArray(){return this._items instanceof o.n_E?this._items.toArray():this._items}}class Xe extends ke{setActiveItem(A){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(A),this.activeItem&&this.activeItem.setActiveStyles()}}class $e extends ke{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(A){return this._origin=A,this}setActiveItem(A){super.setActiveItem(A),this.activeItem&&this.activeItem.focus(this._origin)}}let At=(()=>{class I{constructor(T){this._platform=T}isDisabled(T){return T.hasAttribute("disabled")}isVisible(T){return function st(I){return!!(I.offsetWidth||I.offsetHeight||"function"==typeof I.getClientRects&&I.getClientRects().length)}(T)&&"visible"===getComputedStyle(T).visibility}isTabbable(T){if(!this._platform.isBrowser)return!1;const z=function ot(I){try{return I.frameElement}catch{return null}}(function tn(I){return I.ownerDocument&&I.ownerDocument.defaultView||window}(T));if(z&&(-1===hn(z)||!this.isVisible(z)))return!1;let Y=T.nodeName.toLowerCase(),He=hn(T);return T.hasAttribute("contenteditable")?-1!==He:!("iframe"===Y||"object"===Y||this._platform.WEBKIT&&this._platform.IOS&&!function It(I){let A=I.nodeName.toLowerCase(),T="input"===A&&I.type;return"text"===T||"password"===T||"select"===A||"textarea"===A}(T))&&("audio"===Y?!!T.hasAttribute("controls")&&-1!==He:"video"===Y?-1!==He&&(null!==He||this._platform.FIREFOX||T.hasAttribute("controls")):T.tabIndex>=0)}isFocusable(T,z){return function yn(I){return!function ut(I){return function jt(I){return"input"==I.nodeName.toLowerCase()}(I)&&"hidden"==I.type}(I)&&(function mt(I){let A=I.nodeName.toLowerCase();return"input"===A||"select"===A||"button"===A||"textarea"===A}(I)||function lt(I){return function Lt(I){return"a"==I.nodeName.toLowerCase()}(I)&&I.hasAttribute("href")}(I)||I.hasAttribute("contenteditable")||yt(I))}(T)&&!this.isDisabled(T)&&((null==z?void 0:z.ignoreVisibility)||this.isVisible(T))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(M.t4))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();function yt(I){if(!I.hasAttribute("tabindex")||void 0===I.tabIndex)return!1;let A=I.getAttribute("tabindex");return!(!A||isNaN(parseInt(A,10)))}function hn(I){if(!yt(I))return null;const A=parseInt(I.getAttribute("tabindex")||"",10);return isNaN(A)?-1:A}class xn{get enabled(){return this._enabled}set enabled(A){this._enabled=A,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(A,this._startAnchor),this._toggleAnchorTabIndex(A,this._endAnchor))}constructor(A,T,z,Y,He=!1){this._element=A,this._checker=T,this._ngZone=z,this._document=Y,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,He||this.attachAnchors()}destroy(){const A=this._startAnchor,T=this._endAnchor;A&&(A.removeEventListener("focus",this.startAnchorListener),A.remove()),T&&(T.removeEventListener("focus",this.endAnchorListener),T.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(A){return new Promise(T=>{this._executeOnStable(()=>T(this.focusInitialElement(A)))})}focusFirstTabbableElementWhenReady(A){return new Promise(T=>{this._executeOnStable(()=>T(this.focusFirstTabbableElement(A)))})}focusLastTabbableElementWhenReady(A){return new Promise(T=>{this._executeOnStable(()=>T(this.focusLastTabbableElement(A)))})}_getRegionBoundary(A){const T=this._element.querySelectorAll(`[cdk-focus-region-${A}], [cdkFocusRegion${A}], [cdk-focus-${A}]`);return"start"==A?T.length?T[0]:this._getFirstTabbableElement(this._element):T.length?T[T.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(A){const T=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(T){if(!this._checker.isFocusable(T)){const z=this._getFirstTabbableElement(T);return null==z||z.focus(A),!!z}return T.focus(A),!0}return this.focusFirstTabbableElement(A)}focusFirstTabbableElement(A){const T=this._getRegionBoundary("start");return T&&T.focus(A),!!T}focusLastTabbableElement(A){const T=this._getRegionBoundary("end");return T&&T.focus(A),!!T}hasAttached(){return this._hasAttached}_getFirstTabbableElement(A){if(this._checker.isFocusable(A)&&this._checker.isTabbable(A))return A;const T=A.children;for(let z=0;z=0;z--){const Y=T[z].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(T[z]):null;if(Y)return Y}return null}_createAnchor(){const A=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,A),A.classList.add("cdk-visually-hidden"),A.classList.add("cdk-focus-trap-anchor"),A.setAttribute("aria-hidden","true"),A}_toggleAnchorTabIndex(A,T){A?T.setAttribute("tabindex","0"):T.removeAttribute("tabindex")}toggleAnchors(A){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(A,this._startAnchor),this._toggleAnchorTabIndex(A,this._endAnchor))}_executeOnStable(A){this._ngZone.isStable?A():this._ngZone.onStable.pipe((0,Ee.q)(1)).subscribe(A)}}let Ct=(()=>{class I{constructor(T,z,Y){this._checker=T,this._ngZone=z,this._document=Y}create(T,z=!1){return new xn(T,this._checker,this._ngZone,this._document,z)}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(At),o.LFG(o.R0b),o.LFG(c.K0))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();function ue(I){return 0===I.buttons||0===I.offsetX&&0===I.offsetY}function R(I){const A=I.touches&&I.touches[0]||I.changedTouches&&I.changedTouches[0];return!(!A||-1!==A.identifier||null!=A.radiusX&&1!==A.radiusX||null!=A.radiusY&&1!==A.radiusY)}const K=new o.OlP("cdk-input-modality-detector-options"),De={ignoreKeys:[Se.zL,Se.jx,Se.b2,Se.MW,Se.JU]},Ke=(0,M.i$)({passive:!0,capture:!0});let it=(()=>{class I{get mostRecentModality(){return this._modality.value}constructor(T,z,Y,He){this._platform=T,this._mostRecentTarget=null,this._modality=new H.X(null),this._lastTouchMs=0,this._onKeydown=gt=>{var Ft,kt;null!==(Ft=this._options)&&void 0!==Ft&&null!==(kt=Ft.ignoreKeys)&&void 0!==kt&&kt.some(on=>on===gt.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=(0,M.sA)(gt))},this._onMousedown=gt=>{Date.now()-this._lastTouchMs<650||(this._modality.next(ue(gt)?"keyboard":"mouse"),this._mostRecentTarget=(0,M.sA)(gt))},this._onTouchstart=gt=>{R(gt)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=(0,M.sA)(gt))},this._options={...De,...He},this.modalityDetected=this._modality.pipe((0,we.T)(1)),this.modalityChanged=this.modalityDetected.pipe((0,Ie.x)()),T.isBrowser&&z.runOutsideAngular(()=>{Y.addEventListener("keydown",this._onKeydown,Ke),Y.addEventListener("mousedown",this._onMousedown,Ke),Y.addEventListener("touchstart",this._onTouchstart,Ke)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,Ke),document.removeEventListener("mousedown",this._onMousedown,Ke),document.removeEventListener("touchstart",this._onTouchstart,Ke))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(M.t4),o.LFG(o.R0b),o.LFG(c.K0),o.LFG(K,8))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();const et=new o.OlP("liveAnnouncerElement",{providedIn:"root",factory:function _e(){return null}}),Ye=new o.OlP("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let F=0,pe=(()=>{class I{constructor(T,z,Y,He){this._ngZone=z,this._defaultOptions=He,this._document=Y,this._liveElement=T||this._createLiveElement()}announce(T,...z){const Y=this._defaultOptions;let He,gt;return 1===z.length&&"number"==typeof z[0]?gt=z[0]:[He,gt]=z,this.clear(),clearTimeout(this._previousTimeout),He||(He=Y&&Y.politeness?Y.politeness:"polite"),null==gt&&Y&&(gt=Y.duration),this._liveElement.setAttribute("aria-live",He),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(Ft=>this._currentResolve=Ft)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=T,"number"==typeof gt&&(this._previousTimeout=setTimeout(()=>this.clear(),gt)),this._currentResolve(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){var T,z;clearTimeout(this._previousTimeout),null===(T=this._liveElement)||void 0===T||T.remove(),this._liveElement=null,null===(z=this._currentResolve)||void 0===z||z.call(this),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const T="cdk-live-announcer-element",z=this._document.getElementsByClassName(T),Y=this._document.createElement("div");for(let He=0;He .cdk-overlay-container [aria-modal="true"]');for(let Y=0;Y{class I{constructor(T,z,Y,He,gt){this._ngZone=T,this._platform=z,this._inputModalityDetector=Y,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new re.x,this._rootNodeFocusAndBlurListener=Ft=>{for(let on=(0,M.sA)(Ft);on;on=on.parentElement)"focus"===Ft.type?this._onFocus(Ft,on):this._onBlur(Ft,on)},this._document=He,this._detectionMode=(null==gt?void 0:gt.detectionMode)||0}monitor(T,z=!1){const Y=(0,Ve.fI)(T);if(!this._platform.isBrowser||1!==Y.nodeType)return(0,fe.of)(null);const He=(0,M.kV)(Y)||this._getDocument(),gt=this._elementInfo.get(Y);if(gt)return z&&(gt.checkChildren=!0),gt.subject;const Ft={checkChildren:z,subject:new re.x,rootNode:He};return this._elementInfo.set(Y,Ft),this._registerGlobalListeners(Ft),Ft.subject}stopMonitoring(T){const z=(0,Ve.fI)(T),Y=this._elementInfo.get(z);Y&&(Y.subject.complete(),this._setClasses(z),this._elementInfo.delete(z),this._removeGlobalListeners(Y))}focusVia(T,z,Y){const He=(0,Ve.fI)(T);He===this._getDocument().activeElement?this._getClosestElementsInfo(He).forEach(([Ft,kt])=>this._originChanged(Ft,z,kt)):(this._setOrigin(z),"function"==typeof He.focus&&He.focus(Y))}ngOnDestroy(){this._elementInfo.forEach((T,z)=>this.stopMonitoring(z))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(T){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(T)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:T&&this._isLastInteractionFromInputLabel(T)?"mouse":"program"}_shouldBeAttributedToTouch(T){return 1===this._detectionMode||!(null==T||!T.contains(this._inputModalityDetector._mostRecentTarget))}_setClasses(T,z){T.classList.toggle("cdk-focused",!!z),T.classList.toggle("cdk-touch-focused","touch"===z),T.classList.toggle("cdk-keyboard-focused","keyboard"===z),T.classList.toggle("cdk-mouse-focused","mouse"===z),T.classList.toggle("cdk-program-focused","program"===z)}_setOrigin(T,z=!1){this._ngZone.runOutsideAngular(()=>{this._origin=T,this._originFromTouchInteraction="touch"===T&&z,0===this._detectionMode&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(T,z){const Y=this._elementInfo.get(z),He=(0,M.sA)(T);!Y||!Y.checkChildren&&z!==He||this._originChanged(z,this._getFocusOrigin(He),Y)}_onBlur(T,z){const Y=this._elementInfo.get(z);!Y||Y.checkChildren&&T.relatedTarget instanceof Node&&z.contains(T.relatedTarget)||(this._setClasses(z),this._emitOrigin(Y,null))}_emitOrigin(T,z){T.subject.observers.length&&this._ngZone.run(()=>T.subject.next(z))}_registerGlobalListeners(T){if(!this._platform.isBrowser)return;const z=T.rootNode,Y=this._rootNodeFocusListenerCount.get(z)||0;Y||this._ngZone.runOutsideAngular(()=>{z.addEventListener("focus",this._rootNodeFocusAndBlurListener,rt),z.addEventListener("blur",this._rootNodeFocusAndBlurListener,rt)}),this._rootNodeFocusListenerCount.set(z,Y+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe((0,Be.R)(this._stopInputModalityDetector)).subscribe(He=>{this._setOrigin(He,!0)}))}_removeGlobalListeners(T){const z=T.rootNode;if(this._rootNodeFocusListenerCount.has(z)){const Y=this._rootNodeFocusListenerCount.get(z);Y>1?this._rootNodeFocusListenerCount.set(z,Y-1):(z.removeEventListener("focus",this._rootNodeFocusAndBlurListener,rt),z.removeEventListener("blur",this._rootNodeFocusAndBlurListener,rt),this._rootNodeFocusListenerCount.delete(z))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(T,z,Y){this._setClasses(T,z),this._emitOrigin(Y,z),this._lastFocusOrigin=z}_getClosestElementsInfo(T){const z=[];return this._elementInfo.forEach((Y,He)=>{(He===T||Y.checkChildren&&He.contains(T))&&z.push([He,Y])}),z}_isLastInteractionFromInputLabel(T){const{_mostRecentTarget:z,mostRecentModality:Y}=this._inputModalityDetector;if("mouse"!==Y||!z||z===T||"INPUT"!==T.nodeName&&"TEXTAREA"!==T.nodeName||T.disabled)return!1;const He=T.labels;if(He)for(let gt=0;gt{class I{constructor(T,z){this._platform=T,this._document=z,this._breakpointSubscription=(0,o.f3M)(pt.Yg).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return 0;const T=this._document.createElement("div");T.style.backgroundColor="rgb(1,2,3)",T.style.position="absolute",this._document.body.appendChild(T);const z=this._document.defaultView||window,Y=z&&z.getComputedStyle?z.getComputedStyle(T):null,He=(Y&&Y.backgroundColor||"").replace(/ /g,"");switch(T.remove(),He){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return 2;case"rgb(255,255,255)":case"rgb(255,250,239)":return 1}return 0}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const T=this._document.body.classList;T.remove(gn,St,mn),this._hasCheckedHighContrastMode=!0;const z=this.getHighContrastMode();1===z?T.add(gn,St):2===z&&T.add(gn,mn)}}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(M.t4),o.LFG(c.K0))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})(),Me=(()=>{class I{constructor(T){T._applyBodyHighContrastModeCssClasses()}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(Ze))},I.\u0275mod=o.oAB({type:I}),I.\u0275inj=o.cJS({imports:[Je.Q8]}),I})()},445:(ze,me,b)=>{b.d(me,{Is:()=>fe,vT:()=>ie});var c=b(1571),o=b(6895);const M=new c.OlP("cdk-dir-doc",{providedIn:"root",factory:function re(){return(0,c.f3M)(o.K0)}}),Q=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let fe=(()=>{class Z{constructor(se){this.value="ltr",this.change=new c.vpe,se&&(this.value=function H(Z){var ye;const se=(null==Z?void 0:Z.toLowerCase())||"";return"auto"===se&&typeof navigator<"u"&&null!==(ye=navigator)&&void 0!==ye&&ye.language?Q.test(navigator.language)?"rtl":"ltr":"rtl"===se?"rtl":"ltr"}((se.body?se.body.dir:null)||(se.documentElement?se.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return Z.\u0275fac=function(se){return new(se||Z)(c.LFG(M,8))},Z.\u0275prov=c.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z})(),ie=(()=>{class Z{}return Z.\u0275fac=function(se){return new(se||Z)},Z.\u0275mod=c.oAB({type:Z}),Z.\u0275inj=c.cJS({}),Z})()},1281:(ze,me,b)=>{b.d(me,{Eq:()=>Q,HM:()=>H,Ig:()=>o,fI:()=>fe,su:()=>M});var c=b(1571);function o(ie){return null!=ie&&"false"!=`${ie}`}function M(ie,Z=0){return function re(ie){return!isNaN(parseFloat(ie))&&!isNaN(Number(ie))}(ie)?Number(ie):Z}function Q(ie){return Array.isArray(ie)?ie:[ie]}function H(ie){return null==ie?"":"string"==typeof ie?ie:`${ie}px`}function fe(ie){return ie instanceof c.SBq?ie.nativeElement:ie}},5017:(ze,me,b)=>{b.d(me,{A8:()=>Z,Ov:()=>Se});var c=b(7579),o=b(1571);class Se{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(Ee=!1,we,Ie=!0,Be){this._multiple=Ee,this._emitChanges=Ie,this.compareWith=Be,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new c.x,we&&we.length&&(Ee?we.forEach(Ve=>this._markSelected(Ve)):this._markSelected(we[0]),this._selectedToEmit.length=0)}select(...Ee){this._verifyValueAssignment(Ee),Ee.forEach(Ie=>this._markSelected(Ie));const we=this._hasQueuedChanges();return this._emitChangeEvent(),we}deselect(...Ee){this._verifyValueAssignment(Ee),Ee.forEach(Ie=>this._unmarkSelected(Ie));const we=this._hasQueuedChanges();return this._emitChangeEvent(),we}setSelection(...Ee){this._verifyValueAssignment(Ee);const we=this.selected,Ie=new Set(Ee);Ee.forEach(Ve=>this._markSelected(Ve)),we.filter(Ve=>!Ie.has(Ve)).forEach(Ve=>this._unmarkSelected(Ve));const Be=this._hasQueuedChanges();return this._emitChangeEvent(),Be}toggle(Ee){return this.isSelected(Ee)?this.deselect(Ee):this.select(Ee)}clear(Ee=!0){this._unmarkAll();const we=this._hasQueuedChanges();return Ee&&this._emitChangeEvent(),we}isSelected(Ee){if(this.compareWith){for(const we of this._selection)if(this.compareWith(we,Ee))return!0;return!1}return this._selection.has(Ee)}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(Ee){this._multiple&&this.selected&&this._selected.sort(Ee)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(Ee){this.isSelected(Ee)||(this._multiple||this._unmarkAll(),this.isSelected(Ee)||this._selection.add(Ee),this._emitChanges&&this._selectedToEmit.push(Ee))}_unmarkSelected(Ee){this.isSelected(Ee)&&(this._selection.delete(Ee),this._emitChanges&&this._deselectedToEmit.push(Ee))}_unmarkAll(){this.isEmpty()||this._selection.forEach(Ee=>this._unmarkSelected(Ee))}_verifyValueAssignment(Ee){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}}let Z=(()=>{class se{constructor(){this._listeners=[]}notify(we,Ie){for(let Be of this._listeners)Be(we,Ie)}listen(we){return this._listeners.push(we),()=>{this._listeners=this._listeners.filter(Ie=>we!==Ie)}}ngOnDestroy(){this._listeners=[]}}return se.\u0275fac=function(we){return new(we||se)},se.\u0275prov=o.Yz7({token:se,factory:se.\u0275fac,providedIn:"root"}),se})()},9521:(ze,me,b)=>{b.d(me,{A:()=>ut,JH:()=>_t,JU:()=>H,K5:()=>Q,Ku:()=>Ee,LH:()=>Je,L_:()=>se,MW:()=>Ye,Mf:()=>M,SV:()=>pt,Sd:()=>Be,VM:()=>we,Vb:()=>Dn,Z:()=>_e,aO:()=>bt,b2:()=>Yt,hY:()=>ye,jx:()=>fe,oh:()=>Ve,uR:()=>Ie,xE:()=>ee,zL:()=>Se});const M=9,Q=13,H=16,fe=17,Se=18,ye=27,se=32,Ee=33,we=34,Ie=35,Be=36,Ve=37,Je=38,pt=39,_t=40,ee=48,bt=57,ut=65,_e=90,Ye=91,Yt=224;function Dn(Tn,...Gn){return Gn.length?Gn.some(vn=>Tn[vn]):Tn.altKey||Tn.shiftKey||Tn.ctrlKey||Tn.metaKey}},2289:(ze,me,b)=>{b.d(me,{Yg:()=>_t,xu:()=>we});var c=b(1571),o=b(1281),M=b(7579),re=b(9841),Q=b(7272),H=b(9751),fe=b(5698),Se=b(5684),ie=b(8372),Z=b(4004),ye=b(8675),se=b(2722),Ee=b(3353);let we=(()=>{class j{}return j.\u0275fac=function(ee){return new(ee||j)},j.\u0275mod=c.oAB({type:j}),j.\u0275inj=c.cJS({}),j})();const Ie=new Set;let Be,Ve=(()=>{class j{constructor(ee){this._platform=ee,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):pt}matchMedia(ee){return(this._platform.WEBKIT||this._platform.BLINK)&&function Je(j){if(!Ie.has(j))try{Be||(Be=document.createElement("style"),Be.setAttribute("type","text/css"),document.head.appendChild(Be)),Be.sheet&&(Be.sheet.insertRule(`@media ${j} {body{ }}`,0),Ie.add(j))}catch($){console.error($)}}(ee),this._matchMedia(ee)}}return j.\u0275fac=function(ee){return new(ee||j)(c.LFG(Ee.t4))},j.\u0275prov=c.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})();function pt(j){return{matches:"all"===j||""===j,media:j,addListener:()=>{},removeListener:()=>{}}}let _t=(()=>{class j{constructor(ee,ae){this._mediaMatcher=ee,this._zone=ae,this._queries=new Map,this._destroySubject=new M.x}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(ee){return ne((0,o.Eq)(ee)).some(Pe=>this._registerQuery(Pe).mql.matches)}observe(ee){const Pe=ne((0,o.Eq)(ee)).map(be=>this._registerQuery(be).observable);let de=(0,re.a)(Pe);return de=(0,Q.z)(de.pipe((0,fe.q)(1)),de.pipe((0,Se.T)(1),(0,ie.b)(0))),de.pipe((0,Z.U)(be=>{const Fe={matches:!1,breakpoints:{}};return be.forEach(({matches:ke,query:Xe})=>{Fe.matches=Fe.matches||ke,Fe.breakpoints[Xe]=ke}),Fe}))}_registerQuery(ee){if(this._queries.has(ee))return this._queries.get(ee);const ae=this._mediaMatcher.matchMedia(ee),de={observable:new H.y(be=>{const Fe=ke=>this._zone.run(()=>be.next(ke));return ae.addListener(Fe),()=>{ae.removeListener(Fe)}}).pipe((0,ye.O)(ae),(0,Z.U)(({matches:be})=>({query:ee,matches:be})),(0,se.R)(this._destroySubject)),mql:ae};return this._queries.set(ee,de),de}}return j.\u0275fac=function(ee){return new(ee||j)(c.LFG(Ve),c.LFG(c.R0b))},j.\u0275prov=c.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})();function ne(j){return j.map($=>$.split(",")).reduce(($,ee)=>$.concat(ee)).map($=>$.trim())}},9643:(ze,me,b)=>{b.d(me,{Q8:()=>ie,wD:()=>Se});var c=b(1281),o=b(1571),M=b(9751),re=b(7579),Q=b(8372);let H=(()=>{class Z{create(se){return typeof MutationObserver>"u"?null:new MutationObserver(se)}}return Z.\u0275fac=function(se){return new(se||Z)},Z.\u0275prov=o.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z})(),fe=(()=>{class Z{constructor(se){this._mutationObserverFactory=se,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((se,Ee)=>this._cleanupObserver(Ee))}observe(se){const Ee=(0,c.fI)(se);return new M.y(we=>{const Be=this._observeElement(Ee).subscribe(we);return()=>{Be.unsubscribe(),this._unobserveElement(Ee)}})}_observeElement(se){if(this._observedElements.has(se))this._observedElements.get(se).count++;else{const Ee=new re.x,we=this._mutationObserverFactory.create(Ie=>Ee.next(Ie));we&&we.observe(se,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(se,{observer:we,stream:Ee,count:1})}return this._observedElements.get(se).stream}_unobserveElement(se){this._observedElements.has(se)&&(this._observedElements.get(se).count--,this._observedElements.get(se).count||this._cleanupObserver(se))}_cleanupObserver(se){if(this._observedElements.has(se)){const{observer:Ee,stream:we}=this._observedElements.get(se);Ee&&Ee.disconnect(),we.complete(),this._observedElements.delete(se)}}}return Z.\u0275fac=function(se){return new(se||Z)(o.LFG(H))},Z.\u0275prov=o.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z})(),Se=(()=>{class Z{get disabled(){return this._disabled}set disabled(se){this._disabled=(0,c.Ig)(se),this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(se){this._debounce=(0,c.su)(se),this._subscribe()}constructor(se,Ee,we){this._contentObserver=se,this._elementRef=Ee,this._ngZone=we,this.event=new o.vpe,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const se=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?se.pipe((0,Q.b)(this.debounce)):se).subscribe(this.event)})}_unsubscribe(){var se;null===(se=this._currentSubscription)||void 0===se||se.unsubscribe()}}return Z.\u0275fac=function(se){return new(se||Z)(o.Y36(fe),o.Y36(o.SBq),o.Y36(o.R0b))},Z.\u0275dir=o.lG2({type:Z,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),Z})(),ie=(()=>{class Z{}return Z.\u0275fac=function(se){return new(se||Z)},Z.\u0275mod=o.oAB({type:Z}),Z.\u0275inj=o.cJS({providers:[H]}),Z})()},8184:(ze,me,b)=>{b.d(me,{Iu:()=>bt,U8:()=>Re,X_:()=>$,Xj:()=>$e,aV:()=>tn,pI:()=>oe,xu:()=>Ht});var c=b(5589),o=b(6895),M=b(1571),re=b(1281),Q=b(3353),H=b(445),fe=b(4080),Se=b(7579),ie=b(727),Z=b(6451),ye=b(5698),se=b(2722),Ee=b(2529),we=b(9521);const Ie=(0,Q.Mq)();class Be{constructor(R,K){this._viewportRuler=R,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=K}attach(){}enable(){if(this._canBeEnabled()){const R=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=R.style.left||"",this._previousHTMLStyles.top=R.style.top||"",R.style.left=(0,re.HM)(-this._previousScrollPosition.left),R.style.top=(0,re.HM)(-this._previousScrollPosition.top),R.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const R=this._document.documentElement,De=R.style,Ce=this._document.body.style,Ke=De.scrollBehavior||"",it=Ce.scrollBehavior||"";this._isEnabled=!1,De.left=this._previousHTMLStyles.left,De.top=this._previousHTMLStyles.top,R.classList.remove("cdk-global-scrollblock"),Ie&&(De.scrollBehavior=Ce.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Ie&&(De.scrollBehavior=Ke,Ce.scrollBehavior=it)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const K=this._document.body,De=this._viewportRuler.getViewportSize();return K.scrollHeight>De.height||K.scrollWidth>De.width}}class Je{constructor(R,K,De,Ce){this._scrollDispatcher=R,this._ngZone=K,this._viewportRuler=De,this._config=Ce,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(R){this._overlayRef=R}enable(){if(this._scrollSubscription)return;const R=this._scrollDispatcher.scrolled(0);this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=R.subscribe(()=>{const K=this._viewportRuler.getViewportScrollPosition().top;Math.abs(K-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=R.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class pt{enable(){}disable(){}attach(){}}function _t(ue,R){return R.some(K=>ue.bottomK.bottom||ue.rightK.right)}function ne(ue,R){return R.some(K=>ue.topK.bottom||ue.leftK.right)}class q{constructor(R,K,De,Ce){this._scrollDispatcher=R,this._viewportRuler=K,this._ngZone=De,this._config=Ce,this._scrollSubscription=null}attach(R){this._overlayRef=R}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const K=this._overlayRef.overlayElement.getBoundingClientRect(),{width:De,height:Ce}=this._viewportRuler.getViewportSize();_t(K,[{width:De,height:Ce,bottom:Ce,right:De,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let j=(()=>{class ue{constructor(K,De,Ce,Ke){this._scrollDispatcher=K,this._viewportRuler=De,this._ngZone=Ce,this.noop=()=>new pt,this.close=it=>new Je(this._scrollDispatcher,this._ngZone,this._viewportRuler,it),this.block=()=>new Be(this._viewportRuler,this._document),this.reposition=it=>new q(this._scrollDispatcher,this._viewportRuler,this._ngZone,it),this._document=Ke}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(c.mF),M.LFG(c.rL),M.LFG(M.R0b),M.LFG(o.K0))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})();class ${constructor(R){if(this.scrollStrategy=new pt,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,R){const K=Object.keys(R);for(const De of K)void 0!==R[De]&&(this[De]=R[De])}}}class Pe{constructor(R,K){this.connectionPair=R,this.scrollableViewProperties=K}}let Fe=(()=>{class ue{constructor(K){this._attachedOverlays=[],this._document=K}ngOnDestroy(){this.detach()}add(K){this.remove(K),this._attachedOverlays.push(K)}remove(K){const De=this._attachedOverlays.indexOf(K);De>-1&&this._attachedOverlays.splice(De,1),0===this._attachedOverlays.length&&this.detach()}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(o.K0))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),ke=(()=>{class ue extends Fe{constructor(K,De){super(K),this._ngZone=De,this._keydownListener=Ce=>{const Ke=this._attachedOverlays;for(let it=Ke.length-1;it>-1;it--)if(Ke[it]._keydownEvents.observers.length>0){const et=Ke[it]._keydownEvents;this._ngZone?this._ngZone.run(()=>et.next(Ce)):et.next(Ce);break}}}add(K){super.add(K),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(o.K0),M.LFG(M.R0b,8))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),Xe=(()=>{class ue extends Fe{constructor(K,De,Ce){super(K),this._platform=De,this._ngZone=Ce,this._cursorStyleIsSet=!1,this._pointerDownListener=Ke=>{this._pointerDownEventTarget=(0,Q.sA)(Ke)},this._clickListener=Ke=>{const it=(0,Q.sA)(Ke),et="click"===Ke.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:it;this._pointerDownEventTarget=null;const _e=this._attachedOverlays.slice();for(let Ye=_e.length-1;Ye>-1;Ye--){const F=_e[Ye];if(F._outsidePointerEvents.observers.length<1||!F.hasAttached())continue;if(F.overlayElement.contains(it)||F.overlayElement.contains(et))break;const pe=F._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>pe.next(Ke)):pe.next(Ke)}}}add(K){if(super.add(K),!this._isAttached){const De=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(De)):this._addEventListeners(De),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=De.style.cursor,De.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const K=this._document.body;K.removeEventListener("pointerdown",this._pointerDownListener,!0),K.removeEventListener("click",this._clickListener,!0),K.removeEventListener("auxclick",this._clickListener,!0),K.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(K.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(K){K.addEventListener("pointerdown",this._pointerDownListener,!0),K.addEventListener("click",this._clickListener,!0),K.addEventListener("auxclick",this._clickListener,!0),K.addEventListener("contextmenu",this._clickListener,!0)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(o.K0),M.LFG(Q.t4),M.LFG(M.R0b,8))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),$e=(()=>{class ue{constructor(K,De){this._platform=De,this._document=K}ngOnDestroy(){var K;null===(K=this._containerElement)||void 0===K||K.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const K="cdk-overlay-container";if(this._platform.isBrowser||(0,Q.Oy)()){const Ce=this._document.querySelectorAll(`.${K}[platform="server"], .${K}[platform="test"]`);for(let Ke=0;Kethis._backdropClick.next(pe),this._backdropTransitionendHandler=pe=>{this._disposeBackdrop(pe.target)},this._keydownEvents=new Se.x,this._outsidePointerEvents=new Se.x,Ce.scrollStrategy&&(this._scrollStrategy=Ce.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=Ce.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(R){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const K=this._portalOutlet.attach(R);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe((0,ye.q)(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof(null==K?void 0:K.onDestroy)&&K.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),K}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const R=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),R}dispose(){var R;const K=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),null===(R=this._host)||void 0===R||R.remove(),this._previousHostParent=this._pane=this._host=null,K&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(R){R!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=R,this.hasAttached()&&(R.attach(this),this.updatePosition()))}updateSize(R){this._config={...this._config,...R},this._updateElementSize()}setDirection(R){this._config={...this._config,direction:R},this._updateElementDirection()}addPanelClass(R){this._pane&&this._toggleClasses(this._pane,R,!0)}removePanelClass(R){this._pane&&this._toggleClasses(this._pane,R,!1)}getDirection(){const R=this._config.direction;return R?"string"==typeof R?R:R.value:"ltr"}updateScrollStrategy(R){R!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=R,this.hasAttached()&&(R.attach(this),R.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const R=this._pane.style;R.width=(0,re.HM)(this._config.width),R.height=(0,re.HM)(this._config.height),R.minWidth=(0,re.HM)(this._config.minWidth),R.minHeight=(0,re.HM)(this._config.minHeight),R.maxWidth=(0,re.HM)(this._config.maxWidth),R.maxHeight=(0,re.HM)(this._config.maxHeight)}_togglePointerEvents(R){this._pane.style.pointerEvents=R?"":"none"}_attachBackdrop(){const R="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(R)})}):this._backdropElement.classList.add(R)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const R=this._backdropElement;if(R){if(this._animationsDisabled)return void this._disposeBackdrop(R);R.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{R.addEventListener("transitionend",this._backdropTransitionendHandler)}),R.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(R)},500))}}_toggleClasses(R,K,De){const Ce=(0,re.Eq)(K||[]).filter(Ke=>!!Ke);Ce.length&&(De?R.classList.add(...Ce):R.classList.remove(...Ce))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const R=this._ngZone.onStable.pipe((0,se.R)((0,Z.T)(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),R.unsubscribe())})})}_disposeScrollStrategy(){const R=this._scrollStrategy;R&&(R.disable(),R.detach&&R.detach())}_disposeBackdrop(R){R&&(R.removeEventListener("click",this._backdropClickHandler),R.removeEventListener("transitionend",this._backdropTransitionendHandler),R.remove(),this._backdropElement===R&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const At="cdk-overlay-connected-position-bounding-box",ot=/([A-Za-z%]+)$/;class st{get positions(){return this._preferredPositions}constructor(R,K,De,Ce,Ke){this._viewportRuler=K,this._document=De,this._platform=Ce,this._overlayContainer=Ke,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new Se.x,this._resizeSubscription=ie.w0.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(R)}attach(R){this._validatePositions(),R.hostElement.classList.add(At),this._overlayRef=R,this._boundingBox=R.hostElement,this._pane=R.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const R=this._originRect,K=this._overlayRect,De=this._viewportRect,Ce=this._containerRect,Ke=[];let it;for(let et of this._preferredPositions){let _e=this._getOriginPoint(R,Ce,et),Ye=this._getOverlayPoint(_e,K,et),F=this._getOverlayFit(Ye,K,De,et);if(F.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(et,_e);this._canFitWithFlexibleDimensions(F,Ye,De)?Ke.push({position:et,origin:_e,overlayRect:K,boundingBoxRect:this._calculateBoundingBoxRect(_e,et)}):(!it||it.overlayFit.visibleArea_e&&(_e=F,et=Ye)}return this._isPushed=!1,void this._applyPosition(et.position,et.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(it.position,it.originPoint);this._applyPosition(it.position,it.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&mt(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(At),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const R=this._lastPosition;if(R){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const K=this._getOriginPoint(this._originRect,this._containerRect,R);this._applyPosition(R,K)}else this.apply()}withScrollableContainers(R){return this._scrollables=R,this}withPositions(R){return this._preferredPositions=R,-1===R.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(R){return this._viewportMargin=R,this}withFlexibleDimensions(R=!0){return this._hasFlexibleDimensions=R,this}withGrowAfterOpen(R=!0){return this._growAfterOpen=R,this}withPush(R=!0){return this._canPush=R,this}withLockedPosition(R=!0){return this._positionLocked=R,this}setOrigin(R){return this._origin=R,this}withDefaultOffsetX(R){return this._offsetX=R,this}withDefaultOffsetY(R){return this._offsetY=R,this}withTransformOriginOn(R){return this._transformOriginSelector=R,this}_getOriginPoint(R,K,De){let Ce,Ke;if("center"==De.originX)Ce=R.left+R.width/2;else{const it=this._isRtl()?R.right:R.left,et=this._isRtl()?R.left:R.right;Ce="start"==De.originX?it:et}return K.left<0&&(Ce-=K.left),Ke="center"==De.originY?R.top+R.height/2:"top"==De.originY?R.top:R.bottom,K.top<0&&(Ke-=K.top),{x:Ce,y:Ke}}_getOverlayPoint(R,K,De){let Ce,Ke;return Ce="center"==De.overlayX?-K.width/2:"start"===De.overlayX?this._isRtl()?-K.width:0:this._isRtl()?0:-K.width,Ke="center"==De.overlayY?-K.height/2:"top"==De.overlayY?0:-K.height,{x:R.x+Ce,y:R.y+Ke}}_getOverlayFit(R,K,De,Ce){const Ke=lt(K);let{x:it,y:et}=R,_e=this._getOffset(Ce,"x"),Ye=this._getOffset(Ce,"y");_e&&(it+=_e),Ye&&(et+=Ye);let te=0-et,ge=et+Ke.height-De.height,rt=this._subtractOverflows(Ke.width,0-it,it+Ke.width-De.width),at=this._subtractOverflows(Ke.height,te,ge),Vt=rt*at;return{visibleArea:Vt,isCompletelyWithinViewport:Ke.width*Ke.height===Vt,fitsInViewportVertically:at===Ke.height,fitsInViewportHorizontally:rt==Ke.width}}_canFitWithFlexibleDimensions(R,K,De){if(this._hasFlexibleDimensions){const Ce=De.bottom-K.y,Ke=De.right-K.x,it=ut(this._overlayRef.getConfig().minHeight),et=ut(this._overlayRef.getConfig().minWidth);return(R.fitsInViewportVertically||null!=it&&it<=Ce)&&(R.fitsInViewportHorizontally||null!=et&&et<=Ke)}return!1}_pushOverlayOnScreen(R,K,De){if(this._previousPushAmount&&this._positionLocked)return{x:R.x+this._previousPushAmount.x,y:R.y+this._previousPushAmount.y};const Ce=lt(K),Ke=this._viewportRect,it=Math.max(R.x+Ce.width-Ke.width,0),et=Math.max(R.y+Ce.height-Ke.height,0),_e=Math.max(Ke.top-De.top-R.y,0),Ye=Math.max(Ke.left-De.left-R.x,0);let F=0,pe=0;return F=Ce.width<=Ke.width?Ye||-it:R.xrt&&!this._isInitialRender&&!this._growAfterOpen&&(it=R.y-rt/2)}if("end"===K.overlayX&&!Ce||"start"===K.overlayX&&Ce)te=De.width-R.x+this._viewportMargin,F=R.x-this._viewportMargin;else if("start"===K.overlayX&&!Ce||"end"===K.overlayX&&Ce)pe=R.x,F=De.right-R.x;else{const ge=Math.min(De.right-R.x+De.left,R.x),rt=this._lastBoundingBoxSize.width;F=2*ge,pe=R.x-ge,F>rt&&!this._isInitialRender&&!this._growAfterOpen&&(pe=R.x-rt/2)}return{top:it,left:pe,bottom:et,right:te,width:F,height:Ke}}_setBoundingBoxStyles(R,K){const De=this._calculateBoundingBoxRect(R,K);!this._isInitialRender&&!this._growAfterOpen&&(De.height=Math.min(De.height,this._lastBoundingBoxSize.height),De.width=Math.min(De.width,this._lastBoundingBoxSize.width));const Ce={};if(this._hasExactPosition())Ce.top=Ce.left="0",Ce.bottom=Ce.right=Ce.maxHeight=Ce.maxWidth="",Ce.width=Ce.height="100%";else{const Ke=this._overlayRef.getConfig().maxHeight,it=this._overlayRef.getConfig().maxWidth;Ce.height=(0,re.HM)(De.height),Ce.top=(0,re.HM)(De.top),Ce.bottom=(0,re.HM)(De.bottom),Ce.width=(0,re.HM)(De.width),Ce.left=(0,re.HM)(De.left),Ce.right=(0,re.HM)(De.right),Ce.alignItems="center"===K.overlayX?"center":"end"===K.overlayX?"flex-end":"flex-start",Ce.justifyContent="center"===K.overlayY?"center":"bottom"===K.overlayY?"flex-end":"flex-start",Ke&&(Ce.maxHeight=(0,re.HM)(Ke)),it&&(Ce.maxWidth=(0,re.HM)(it))}this._lastBoundingBoxSize=De,mt(this._boundingBox.style,Ce)}_resetBoundingBoxStyles(){mt(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){mt(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(R,K){const De={},Ce=this._hasExactPosition(),Ke=this._hasFlexibleDimensions,it=this._overlayRef.getConfig();if(Ce){const F=this._viewportRuler.getViewportScrollPosition();mt(De,this._getExactOverlayY(K,R,F)),mt(De,this._getExactOverlayX(K,R,F))}else De.position="static";let et="",_e=this._getOffset(K,"x"),Ye=this._getOffset(K,"y");_e&&(et+=`translateX(${_e}px) `),Ye&&(et+=`translateY(${Ye}px)`),De.transform=et.trim(),it.maxHeight&&(Ce?De.maxHeight=(0,re.HM)(it.maxHeight):Ke&&(De.maxHeight="")),it.maxWidth&&(Ce?De.maxWidth=(0,re.HM)(it.maxWidth):Ke&&(De.maxWidth="")),mt(this._pane.style,De)}_getExactOverlayY(R,K,De){let Ce={top:"",bottom:""},Ke=this._getOverlayPoint(K,this._overlayRect,R);return this._isPushed&&(Ke=this._pushOverlayOnScreen(Ke,this._overlayRect,De)),"bottom"===R.overlayY?Ce.bottom=this._document.documentElement.clientHeight-(Ke.y+this._overlayRect.height)+"px":Ce.top=(0,re.HM)(Ke.y),Ce}_getExactOverlayX(R,K,De){let it,Ce={left:"",right:""},Ke=this._getOverlayPoint(K,this._overlayRect,R);return this._isPushed&&(Ke=this._pushOverlayOnScreen(Ke,this._overlayRect,De)),it=this._isRtl()?"end"===R.overlayX?"left":"right":"end"===R.overlayX?"right":"left","right"===it?Ce.right=this._document.documentElement.clientWidth-(Ke.x+this._overlayRect.width)+"px":Ce.left=(0,re.HM)(Ke.x),Ce}_getScrollVisibility(){const R=this._getOriginRect(),K=this._pane.getBoundingClientRect(),De=this._scrollables.map(Ce=>Ce.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:ne(R,De),isOriginOutsideView:_t(R,De),isOverlayClipped:ne(K,De),isOverlayOutsideView:_t(K,De)}}_subtractOverflows(R,...K){return K.reduce((De,Ce)=>De-Math.max(Ce,0),R)}_getNarrowedViewportRect(){const R=this._document.documentElement.clientWidth,K=this._document.documentElement.clientHeight,De=this._viewportRuler.getViewportScrollPosition();return{top:De.top+this._viewportMargin,left:De.left+this._viewportMargin,right:De.left+R-this._viewportMargin,bottom:De.top+K-this._viewportMargin,width:R-2*this._viewportMargin,height:K-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(R,K){return"x"===K?null==R.offsetX?this._offsetX:R.offsetX:null==R.offsetY?this._offsetY:R.offsetY}_validatePositions(){}_addPanelClasses(R){this._pane&&(0,re.Eq)(R).forEach(K=>{""!==K&&-1===this._appliedPanelClasses.indexOf(K)&&(this._appliedPanelClasses.push(K),this._pane.classList.add(K))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(R=>{this._pane.classList.remove(R)}),this._appliedPanelClasses=[])}_getOriginRect(){const R=this._origin;if(R instanceof M.SBq)return R.nativeElement.getBoundingClientRect();if(R instanceof Element)return R.getBoundingClientRect();const K=R.width||0,De=R.height||0;return{top:R.y,bottom:R.y+De,left:R.x,right:R.x+K,height:De,width:K}}}function mt(ue,R){for(let K in R)R.hasOwnProperty(K)&&(ue[K]=R[K]);return ue}function ut(ue){if("number"!=typeof ue&&null!=ue){const[R,K]=ue.split(ot);return K&&"px"!==K?null:parseFloat(R)}return ue||null}function lt(ue){return{top:Math.floor(ue.top),right:Math.floor(ue.right),bottom:Math.floor(ue.bottom),left:Math.floor(ue.left),width:Math.floor(ue.width),height:Math.floor(ue.height)}}const yt="cdk-global-overlay-wrapper";class hn{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(R){const K=R.getConfig();this._overlayRef=R,this._width&&!K.width&&R.updateSize({width:this._width}),this._height&&!K.height&&R.updateSize({height:this._height}),R.hostElement.classList.add(yt),this._isDisposed=!1}top(R=""){return this._bottomOffset="",this._topOffset=R,this._alignItems="flex-start",this}left(R=""){return this._xOffset=R,this._xPosition="left",this}bottom(R=""){return this._topOffset="",this._bottomOffset=R,this._alignItems="flex-end",this}right(R=""){return this._xOffset=R,this._xPosition="right",this}start(R=""){return this._xOffset=R,this._xPosition="start",this}end(R=""){return this._xOffset=R,this._xPosition="end",this}width(R=""){return this._overlayRef?this._overlayRef.updateSize({width:R}):this._width=R,this}height(R=""){return this._overlayRef?this._overlayRef.updateSize({height:R}):this._height=R,this}centerHorizontally(R=""){return this.left(R),this._xPosition="center",this}centerVertically(R=""){return this.top(R),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const R=this._overlayRef.overlayElement.style,K=this._overlayRef.hostElement.style,De=this._overlayRef.getConfig(),{width:Ce,height:Ke,maxWidth:it,maxHeight:et}=De,_e=!("100%"!==Ce&&"100vw"!==Ce||it&&"100%"!==it&&"100vw"!==it),Ye=!("100%"!==Ke&&"100vh"!==Ke||et&&"100%"!==et&&"100vh"!==et),F=this._xPosition,pe=this._xOffset,te="rtl"===this._overlayRef.getConfig().direction;let ge="",rt="",at="";_e?at="flex-start":"center"===F?(at="center",te?rt=pe:ge=pe):te?"left"===F||"end"===F?(at="flex-end",ge=pe):("right"===F||"start"===F)&&(at="flex-start",rt=pe):"left"===F||"start"===F?(at="flex-start",ge=pe):("right"===F||"end"===F)&&(at="flex-end",rt=pe),R.position=this._cssPosition,R.marginLeft=_e?"0":ge,R.marginTop=Ye?"0":this._topOffset,R.marginBottom=this._bottomOffset,R.marginRight=_e?"0":rt,K.justifyContent=at,K.alignItems=Ye?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const R=this._overlayRef.overlayElement.style,K=this._overlayRef.hostElement,De=K.style;K.classList.remove(yt),De.justifyContent=De.alignItems=R.marginTop=R.marginBottom=R.marginLeft=R.marginRight=R.position="",this._overlayRef=null,this._isDisposed=!0}}let It=(()=>{class ue{constructor(K,De,Ce,Ke){this._viewportRuler=K,this._document=De,this._platform=Ce,this._overlayContainer=Ke}global(){return new hn}flexibleConnectedTo(K){return new st(K,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(c.rL),M.LFG(o.K0),M.LFG(Q.t4),M.LFG($e))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),yn=0,tn=(()=>{class ue{constructor(K,De,Ce,Ke,it,et,_e,Ye,F,pe,te,ge){this.scrollStrategies=K,this._overlayContainer=De,this._componentFactoryResolver=Ce,this._positionBuilder=Ke,this._keyboardDispatcher=it,this._injector=et,this._ngZone=_e,this._document=Ye,this._directionality=F,this._location=pe,this._outsideClickDispatcher=te,this._animationsModuleType=ge}create(K){const De=this._createHostElement(),Ce=this._createPaneElement(De),Ke=this._createPortalOutlet(Ce),it=new $(K);return it.direction=it.direction||this._directionality.value,new bt(Ke,De,Ce,it,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(K){const De=this._document.createElement("div");return De.id="cdk-overlay-"+yn++,De.classList.add("cdk-overlay-pane"),K.appendChild(De),De}_createHostElement(){const K=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(K),K}_createPortalOutlet(K){return this._appRef||(this._appRef=this._injector.get(M.z2F)),new fe.u0(K,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(j),M.LFG($e),M.LFG(M._Vd),M.LFG(It),M.LFG(ke),M.LFG(M.zs3),M.LFG(M.R0b),M.LFG(o.K0),M.LFG(H.Is),M.LFG(o.Ye),M.LFG(Xe),M.LFG(M.QbO,8))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})();const xn=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Ct=new M.OlP("cdk-connected-overlay-scroll-strategy");let Ht=(()=>{class ue{constructor(K){this.elementRef=K}}return ue.\u0275fac=function(K){return new(K||ue)(M.Y36(M.SBq))},ue.\u0275dir=M.lG2({type:ue,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),ue})(),oe=(()=>{class ue{get offsetX(){return this._offsetX}set offsetX(K){this._offsetX=K,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(K){this._offsetY=K,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(K){this._hasBackdrop=(0,re.Ig)(K)}get lockPosition(){return this._lockPosition}set lockPosition(K){this._lockPosition=(0,re.Ig)(K)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(K){this._flexibleDimensions=(0,re.Ig)(K)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(K){this._growAfterOpen=(0,re.Ig)(K)}get push(){return this._push}set push(K){this._push=(0,re.Ig)(K)}constructor(K,De,Ce,Ke,it){this._overlay=K,this._dir=it,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=ie.w0.EMPTY,this._attachSubscription=ie.w0.EMPTY,this._detachSubscription=ie.w0.EMPTY,this._positionSubscription=ie.w0.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new M.vpe,this.positionChange=new M.vpe,this.attach=new M.vpe,this.detach=new M.vpe,this.overlayKeydown=new M.vpe,this.overlayOutsideClick=new M.vpe,this._templatePortal=new fe.UE(De,Ce),this._scrollStrategyFactory=Ke,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(K){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),K.origin&&this.open&&this._position.apply()),K.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=xn);const K=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=K.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=K.detachments().subscribe(()=>this.detach.emit()),K.keydownEvents().subscribe(De=>{this.overlayKeydown.next(De),De.keyCode===we.hY&&!this.disableClose&&!(0,we.Vb)(De)&&(De.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(De=>{this.overlayOutsideClick.next(De)})}_buildConfig(){const K=this._position=this.positionStrategy||this._createPositionStrategy(),De=new $({direction:this._dir,positionStrategy:K,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(De.width=this.width),(this.height||0===this.height)&&(De.height=this.height),(this.minWidth||0===this.minWidth)&&(De.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(De.minHeight=this.minHeight),this.backdropClass&&(De.backdropClass=this.backdropClass),this.panelClass&&(De.panelClass=this.panelClass),De}_updatePositionStrategy(K){const De=this.positions.map(Ce=>({originX:Ce.originX,originY:Ce.originY,overlayX:Ce.overlayX,overlayY:Ce.overlayY,offsetX:Ce.offsetX||this.offsetX,offsetY:Ce.offsetY||this.offsetY,panelClass:Ce.panelClass||void 0}));return K.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(De).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const K=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(K),K}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof Ht?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(K=>{this.backdropClick.emit(K)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe((0,Ee.o)(()=>this.positionChange.observers.length>0)).subscribe(K=>{this.positionChange.emit(K),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return ue.\u0275fac=function(K){return new(K||ue)(M.Y36(tn),M.Y36(M.Rgc),M.Y36(M.s_b),M.Y36(Ct),M.Y36(H.Is,8))},ue.\u0275dir=M.lG2({type:ue,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[M.TTD]}),ue})();const G={provide:Ct,deps:[tn],useFactory:function ve(ue){return()=>ue.scrollStrategies.reposition()}};let Re=(()=>{class ue{}return ue.\u0275fac=function(K){return new(K||ue)},ue.\u0275mod=M.oAB({type:ue}),ue.\u0275inj=M.cJS({providers:[tn,G],imports:[H.vT,fe.eL,c.Cl,c.Cl]}),ue})()},3353:(ze,me,b)=>{b.d(me,{Mq:()=>we,Oy:()=>ne,_i:()=>Ie,ht:()=>pt,i$:()=>ye,kV:()=>Je,qK:()=>Se,sA:()=>_t,t4:()=>re});var c=b(1571),o=b(6895);let M;try{M=typeof Intl<"u"&&Intl.v8BreakIterator}catch{M=!1}let H,re=(()=>{class q{constructor($){this._platformId=$,this.isBrowser=this._platformId?(0,o.NF)(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!M)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return q.\u0275fac=function($){return new($||q)(c.LFG(c.Lbi))},q.\u0275prov=c.Yz7({token:q,factory:q.\u0275fac,providedIn:"root"}),q})();const fe=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function Se(){if(H)return H;if("object"!=typeof document||!document)return H=new Set(fe),H;let q=document.createElement("input");return H=new Set(fe.filter(j=>(q.setAttribute("type",j),q.type===j))),H}let ie,se,Ee,Be;function ye(q){return function Z(){if(null==ie&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>ie=!0}))}finally{ie=ie||!1}return ie}()?q:!!q.capture}function we(){if(null==Ee){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Ee=!1,Ee;if("scrollBehavior"in document.documentElement.style)Ee=!0;else{const q=Element.prototype.scrollTo;Ee=!!q&&!/\{\s*\[native code\]\s*\}/.test(q.toString())}}return Ee}function Ie(){if("object"!=typeof document||!document)return 0;if(null==se){const q=document.createElement("div"),j=q.style;q.dir="rtl",j.width="1px",j.overflow="auto",j.visibility="hidden",j.pointerEvents="none",j.position="absolute";const $=document.createElement("div"),ee=$.style;ee.width="2px",ee.height="1px",q.appendChild($),document.body.appendChild(q),se=0,0===q.scrollLeft&&(q.scrollLeft=1,se=0===q.scrollLeft?1:2),q.remove()}return se}function Je(q){if(function Ve(){if(null==Be){const q=typeof document<"u"?document.head:null;Be=!(!q||!q.createShadowRoot&&!q.attachShadow)}return Be}()){const j=q.getRootNode?q.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&j instanceof ShadowRoot)return j}return null}function pt(){let q=typeof document<"u"&&document?document.activeElement:null;for(;q&&q.shadowRoot;){const j=q.shadowRoot.activeElement;if(j===q)break;q=j}return q}function _t(q){return q.composedPath?q.composedPath()[0]:q.target}function ne(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}},4080:(ze,me,b)=>{b.d(me,{C5:()=>Z,Pl:()=>pt,UE:()=>ye,eL:()=>ne,en:()=>Ee,u0:()=>Ie});var c=b(1571),o=b(6895);class ie{attach($){return this._attachedHost=$,$.attach(this)}detach(){let $=this._attachedHost;null!=$&&(this._attachedHost=null,$.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost($){this._attachedHost=$}}class Z extends ie{constructor($,ee,ae,Pe,de){super(),this.component=$,this.viewContainerRef=ee,this.injector=ae,this.componentFactoryResolver=Pe,this.projectableNodes=de}}class ye extends ie{constructor($,ee,ae,Pe){super(),this.templateRef=$,this.viewContainerRef=ee,this.context=ae,this.injector=Pe}get origin(){return this.templateRef.elementRef}attach($,ee=this.context){return this.context=ee,super.attach($)}detach(){return this.context=void 0,super.detach()}}class se extends ie{constructor($){super(),this.element=$ instanceof c.SBq?$.nativeElement:$}}class Ee{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach($){return $ instanceof Z?(this._attachedPortal=$,this.attachComponentPortal($)):$ instanceof ye?(this._attachedPortal=$,this.attachTemplatePortal($)):this.attachDomPortal&&$ instanceof se?(this._attachedPortal=$,this.attachDomPortal($)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn($){this._disposeFn=$}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class Ie extends Ee{constructor($,ee,ae,Pe,de){super(),this.outletElement=$,this._componentFactoryResolver=ee,this._appRef=ae,this._defaultInjector=Pe,this.attachDomPortal=be=>{const Fe=be.element,ke=this._document.createComment("dom-portal");Fe.parentNode.insertBefore(ke,Fe),this.outletElement.appendChild(Fe),this._attachedPortal=be,super.setDisposeFn(()=>{ke.parentNode&&ke.parentNode.replaceChild(Fe,ke)})},this._document=de}attachComponentPortal($){const ae=($.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory($.component);let Pe;return $.viewContainerRef?(Pe=$.viewContainerRef.createComponent(ae,$.viewContainerRef.length,$.injector||$.viewContainerRef.injector,$.projectableNodes||void 0),this.setDisposeFn(()=>Pe.destroy())):(Pe=ae.create($.injector||this._defaultInjector||c.zs3.NULL),this._appRef.attachView(Pe.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(Pe.hostView),Pe.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(Pe)),this._attachedPortal=$,Pe}attachTemplatePortal($){let ee=$.viewContainerRef,ae=ee.createEmbeddedView($.templateRef,$.context,{injector:$.injector});return ae.rootNodes.forEach(Pe=>this.outletElement.appendChild(Pe)),ae.detectChanges(),this.setDisposeFn(()=>{let Pe=ee.indexOf(ae);-1!==Pe&&ee.remove(Pe)}),this._attachedPortal=$,ae}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode($){return $.hostView.rootNodes[0]}}let pt=(()=>{class j extends Ee{constructor(ee,ae,Pe){super(),this._componentFactoryResolver=ee,this._viewContainerRef=ae,this._isInitialized=!1,this.attached=new c.vpe,this.attachDomPortal=de=>{const be=de.element,Fe=this._document.createComment("dom-portal");de.setAttachedHost(this),be.parentNode.insertBefore(Fe,be),this._getRootNode().appendChild(be),this._attachedPortal=de,super.setDisposeFn(()=>{Fe.parentNode&&Fe.parentNode.replaceChild(be,Fe)})},this._document=Pe}get portal(){return this._attachedPortal}set portal(ee){this.hasAttached()&&!ee&&!this._isInitialized||(this.hasAttached()&&super.detach(),ee&&super.attach(ee),this._attachedPortal=ee||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(ee){ee.setAttachedHost(this);const ae=null!=ee.viewContainerRef?ee.viewContainerRef:this._viewContainerRef,de=(ee.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(ee.component),be=ae.createComponent(de,ae.length,ee.injector||ae.injector,ee.projectableNodes||void 0);return ae!==this._viewContainerRef&&this._getRootNode().appendChild(be.hostView.rootNodes[0]),super.setDisposeFn(()=>be.destroy()),this._attachedPortal=ee,this._attachedRef=be,this.attached.emit(be),be}attachTemplatePortal(ee){ee.setAttachedHost(this);const ae=this._viewContainerRef.createEmbeddedView(ee.templateRef,ee.context,{injector:ee.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=ee,this._attachedRef=ae,this.attached.emit(ae),ae}_getRootNode(){const ee=this._viewContainerRef.element.nativeElement;return ee.nodeType===ee.ELEMENT_NODE?ee:ee.parentNode}}return j.\u0275fac=function(ee){return new(ee||j)(c.Y36(c._Vd),c.Y36(c.s_b),c.Y36(o.K0))},j.\u0275dir=c.lG2({type:j,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[c.qOj]}),j})(),ne=(()=>{class j{}return j.\u0275fac=function(ee){return new(ee||j)},j.\u0275mod=c.oAB({type:j}),j.\u0275inj=c.cJS({}),j})()},5589:(ze,me,b)=>{b.d(me,{ZD:()=>Ct,mF:()=>ot,Cl:()=>Ht,rL:()=>ut});var c=b(1281),o=b(1571),M=b(7579),re=b(9646),Q=b(9751),H=b(4968),fe=b(4408),Se=b(727);const ie={schedule(oe){let ve=requestAnimationFrame,G=cancelAnimationFrame;const{delegate:Re}=ie;Re&&(ve=Re.requestAnimationFrame,G=Re.cancelAnimationFrame);const tt=ve(ue=>{G=void 0,oe(ue)});return new Se.w0(()=>null==G?void 0:G(tt))},requestAnimationFrame(...oe){const{delegate:ve}=ie;return((null==ve?void 0:ve.requestAnimationFrame)||requestAnimationFrame)(...oe)},cancelAnimationFrame(...oe){const{delegate:ve}=ie;return((null==ve?void 0:ve.cancelAnimationFrame)||cancelAnimationFrame)(...oe)},delegate:void 0};var ye=b(640);const Ee=new class se extends ye.v{flush(ve){this._active=!0;const G=this._scheduled;this._scheduled=void 0;const{actions:Re}=this;let tt;ve=ve||Re.shift();do{if(tt=ve.execute(ve.state,ve.delay))break}while((ve=Re[0])&&ve.id===G&&Re.shift());if(this._active=!1,tt){for(;(ve=Re[0])&&ve.id===G&&Re.shift();)ve.unsubscribe();throw tt}}}(class Z extends fe.o{constructor(ve,G){super(ve,G),this.scheduler=ve,this.work=G}requestAsyncId(ve,G,Re=0){return null!==Re&&Re>0?super.requestAsyncId(ve,G,Re):(ve.actions.push(this),ve._scheduled||(ve._scheduled=ie.requestAnimationFrame(()=>ve.flush(void 0))))}recycleAsyncId(ve,G,Re=0){var tt;if(null!=Re?Re>0:this.delay>0)return super.recycleAsyncId(ve,G,Re);const{actions:ue}=ve;null!=G&&(null===(tt=ue[ue.length-1])||void 0===tt?void 0:tt.id)!==G&&(ie.cancelAnimationFrame(G),ve._scheduled=void 0)}});var Ie=b(3101),Be=b(4986),Ve=b(4482),Je=b(8421),pt=b(5403),ne=b(2805);function q(oe,ve=Be.z){return function _t(oe){return(0,Ve.e)((ve,G)=>{let Re=!1,tt=null,ue=null,R=!1;const K=()=>{if(null==ue||ue.unsubscribe(),ue=null,Re){Re=!1;const Ce=tt;tt=null,G.next(Ce)}R&&G.complete()},De=()=>{ue=null,R&&G.complete()};ve.subscribe((0,pt.x)(G,Ce=>{Re=!0,tt=Ce,ue||(0,Je.Xf)(oe(Ce)).subscribe(ue=(0,pt.x)(G,K,De))},()=>{R=!0,(!Re||!ue||ue.closed)&&G.complete()}))})}(()=>(0,ne.H)(oe,ve))}var j=b(9300),$=b(2722),ee=b(8675),ae=b(3353),Pe=b(6895),de=b(445);const be=["contentWrapper"],Fe=["*"],ke=new o.OlP("VIRTUAL_SCROLL_STRATEGY");let ot=(()=>{class oe{constructor(G,Re,tt){this._ngZone=G,this._platform=Re,this._scrolled=new M.x,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=tt}register(G){this.scrollContainers.has(G)||this.scrollContainers.set(G,G.elementScrolled().subscribe(()=>this._scrolled.next(G)))}deregister(G){const Re=this.scrollContainers.get(G);Re&&(Re.unsubscribe(),this.scrollContainers.delete(G))}scrolled(G=20){return this._platform.isBrowser?new Q.y(Re=>{this._globalSubscription||this._addGlobalListener();const tt=G>0?this._scrolled.pipe(q(G)).subscribe(Re):this._scrolled.subscribe(Re);return this._scrolledCount++,()=>{tt.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):(0,re.of)()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((G,Re)=>this.deregister(Re)),this._scrolled.complete()}ancestorScrolled(G,Re){const tt=this.getAncestorScrollContainers(G);return this.scrolled(Re).pipe((0,j.h)(ue=>!ue||tt.indexOf(ue)>-1))}getAncestorScrollContainers(G){const Re=[];return this.scrollContainers.forEach((tt,ue)=>{this._scrollableContainsElement(ue,G)&&Re.push(ue)}),Re}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(G,Re){let tt=(0,c.fI)(Re),ue=G.getElementRef().nativeElement;do{if(tt==ue)return!0}while(tt=tt.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>{const G=this._getWindow();return(0,H.R)(G.document,"scroll").subscribe(()=>this._scrolled.next())})}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return oe.\u0275fac=function(G){return new(G||oe)(o.LFG(o.R0b),o.LFG(ae.t4),o.LFG(Pe.K0,8))},oe.\u0275prov=o.Yz7({token:oe,factory:oe.\u0275fac,providedIn:"root"}),oe})(),st=(()=>{class oe{constructor(G,Re,tt,ue){this.elementRef=G,this.scrollDispatcher=Re,this.ngZone=tt,this.dir=ue,this._destroyed=new M.x,this._elementScrolled=new Q.y(R=>this.ngZone.runOutsideAngular(()=>(0,H.R)(this.elementRef.nativeElement,"scroll").pipe((0,$.R)(this._destroyed)).subscribe(R)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(G){const Re=this.elementRef.nativeElement,tt=this.dir&&"rtl"==this.dir.value;null==G.left&&(G.left=tt?G.end:G.start),null==G.right&&(G.right=tt?G.start:G.end),null!=G.bottom&&(G.top=Re.scrollHeight-Re.clientHeight-G.bottom),tt&&0!=(0,ae._i)()?(null!=G.left&&(G.right=Re.scrollWidth-Re.clientWidth-G.left),2==(0,ae._i)()?G.left=G.right:1==(0,ae._i)()&&(G.left=G.right?-G.right:G.right)):null!=G.right&&(G.left=Re.scrollWidth-Re.clientWidth-G.right),this._applyScrollToOptions(G)}_applyScrollToOptions(G){const Re=this.elementRef.nativeElement;(0,ae.Mq)()?Re.scrollTo(G):(null!=G.top&&(Re.scrollTop=G.top),null!=G.left&&(Re.scrollLeft=G.left))}measureScrollOffset(G){const Re="left",ue=this.elementRef.nativeElement;if("top"==G)return ue.scrollTop;if("bottom"==G)return ue.scrollHeight-ue.clientHeight-ue.scrollTop;const R=this.dir&&"rtl"==this.dir.value;return"start"==G?G=R?"right":Re:"end"==G&&(G=R?Re:"right"),R&&2==(0,ae._i)()?G==Re?ue.scrollWidth-ue.clientWidth-ue.scrollLeft:ue.scrollLeft:R&&1==(0,ae._i)()?G==Re?ue.scrollLeft+ue.scrollWidth-ue.clientWidth:-ue.scrollLeft:G==Re?ue.scrollLeft:ue.scrollWidth-ue.clientWidth-ue.scrollLeft}}return oe.\u0275fac=function(G){return new(G||oe)(o.Y36(o.SBq),o.Y36(ot),o.Y36(o.R0b),o.Y36(de.Is,8))},oe.\u0275dir=o.lG2({type:oe,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),oe})(),ut=(()=>{class oe{constructor(G,Re,tt){this._platform=G,this._change=new M.x,this._changeListener=ue=>{this._change.next(ue)},this._document=tt,Re.runOutsideAngular(()=>{if(G.isBrowser){const ue=this._getWindow();ue.addEventListener("resize",this._changeListener),ue.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const G=this._getWindow();G.removeEventListener("resize",this._changeListener),G.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const G={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),G}getViewportRect(){const G=this.getViewportScrollPosition(),{width:Re,height:tt}=this.getViewportSize();return{top:G.top,left:G.left,bottom:G.top+tt,right:G.left+Re,height:tt,width:Re}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const G=this._document,Re=this._getWindow(),tt=G.documentElement,ue=tt.getBoundingClientRect();return{top:-ue.top||G.body.scrollTop||Re.scrollY||tt.scrollTop||0,left:-ue.left||G.body.scrollLeft||Re.scrollX||tt.scrollLeft||0}}change(G=20){return G>0?this._change.pipe(q(G)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const G=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:G.innerWidth,height:G.innerHeight}:{width:0,height:0}}}return oe.\u0275fac=function(G){return new(G||oe)(o.LFG(ae.t4),o.LFG(o.R0b),o.LFG(Pe.K0,8))},oe.\u0275prov=o.Yz7({token:oe,factory:oe.\u0275fac,providedIn:"root"}),oe})();const lt=new o.OlP("VIRTUAL_SCROLLABLE");let jt=(()=>{class oe extends st{constructor(G,Re,tt,ue){super(G,Re,tt,ue)}measureViewportSize(G){const Re=this.elementRef.nativeElement;return"horizontal"===G?Re.clientWidth:Re.clientHeight}}return oe.\u0275fac=function(G){return new(G||oe)(o.Y36(o.SBq),o.Y36(ot),o.Y36(o.R0b),o.Y36(de.Is,8))},oe.\u0275dir=o.lG2({type:oe,features:[o.qOj]}),oe})();const yt=typeof requestAnimationFrame<"u"?Ee:Ie.E;let hn=(()=>{class oe extends jt{get orientation(){return this._orientation}set orientation(G){this._orientation!==G&&(this._orientation=G,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(G){this._appendOnly=(0,c.Ig)(G)}constructor(G,Re,tt,ue,R,K,De,Ce){super(G,K,tt,R),this.elementRef=G,this._changeDetectorRef=Re,this._scrollStrategy=ue,this.scrollable=Ce,this._platform=(0,o.f3M)(ae.t4),this._detachedSubject=new M.x,this._renderedRangeSubject=new M.x,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new Q.y(Ke=>this._scrollStrategy.scrolledIndexChange.subscribe(it=>Promise.resolve().then(()=>this.ngZone.run(()=>Ke.next(it))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=Se.w0.EMPTY,this._viewportChanges=De.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe((0,ee.O)(null),q(0,yt)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(G){this.ngZone.runOutsideAngular(()=>{this._forOf=G,this._forOf.dataStream.pipe((0,$.R)(this._detachedSubject)).subscribe(Re=>{const tt=Re.length;tt!==this._dataLength&&(this._dataLength=tt,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(G){return this.getElementRef().nativeElement.getBoundingClientRect()[G]}setTotalContentSize(G){this._totalContentSize!==G&&(this._totalContentSize=G,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(G){(function Lt(oe,ve){return oe.start==ve.start&&oe.end==ve.end})(this._renderedRange,G)||(this.appendOnly&&(G={start:0,end:Math.max(this._renderedRange.end,G.end)}),this._renderedRangeSubject.next(this._renderedRange=G),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(G,Re="to-start"){G=this.appendOnly&&"to-start"===Re?0:G;const ue="horizontal"==this.orientation,R=ue?"X":"Y";let De=`translate${R}(${Number((ue&&this.dir&&"rtl"==this.dir.value?-1:1)*G)}px)`;this._renderedContentOffset=G,"to-end"===Re&&(De+=` translate${R}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=De&&(this._renderedContentTransform=De,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(G,Re="auto"){const tt={behavior:Re};"horizontal"===this.orientation?tt.start=G:tt.top=G,this.scrollable.scrollTo(tt)}scrollToIndex(G,Re="auto"){this._scrollStrategy.scrollToIndex(G,Re)}measureScrollOffset(G){let Re;return Re=this.scrollable==this?tt=>super.measureScrollOffset(tt):tt=>this.scrollable.measureScrollOffset(tt),Math.max(0,Re(null!=G?G:"horizontal"===this.orientation?"start":"top")-this.measureViewportOffset())}measureViewportOffset(G){var Re;let tt;const R="right",K="rtl"==(null===(Re=this.dir)||void 0===Re?void 0:Re.value);tt="start"==G?K?R:"left":"end"==G?K?"left":R:G||("horizontal"===this.orientation?"left":"top");const De=this.scrollable.measureBoundingClientRectWithScrollOffset(tt);return this.elementRef.nativeElement.getBoundingClientRect()[tt]-De}measureRenderedContentSize(){const G=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?G.offsetWidth:G.offsetHeight}measureRangeSize(G){return this._forOf?this._forOf.measureRangeSize(G,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(G){G&&this._runAfterChangeDetection.push(G),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const G=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const Re of G)Re()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return oe.\u0275fac=function(G){return new(G||oe)(o.Y36(o.SBq),o.Y36(o.sBO),o.Y36(o.R0b),o.Y36(ke,8),o.Y36(de.Is,8),o.Y36(ot),o.Y36(ut),o.Y36(lt,8))},oe.\u0275cmp=o.Xpm({type:oe,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(G,Re){if(1&G&&o.Gf(be,7),2&G){let tt;o.iGM(tt=o.CRH())&&(Re._contentWrapper=tt.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(G,Re){2&G&&o.ekj("cdk-virtual-scroll-orientation-horizontal","horizontal"===Re.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==Re.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[o._Bn([{provide:st,useFactory:(ve,G)=>ve||G,deps:[[new o.FiY,new o.tBr(lt)],oe]}]),o.qOj,o.jDz],ngContentSelectors:Fe,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(G,Re){1&G&&(o.F$t(),o.TgZ(0,"div",0,1),o.Hsn(2),o.qZA(),o._UZ(3,"div",2)),2&G&&(o.xp6(3),o.Udp("width",Re._totalContentWidth)("height",Re._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),oe})(),Ct=(()=>{class oe{}return oe.\u0275fac=function(G){return new(G||oe)},oe.\u0275mod=o.oAB({type:oe}),oe.\u0275inj=o.cJS({}),oe})(),Ht=(()=>{class oe{}return oe.\u0275fac=function(G){return new(G||oe)},oe.\u0275mod=o.oAB({type:oe}),oe.\u0275inj=o.cJS({imports:[de.vT,Ct,hn,de.vT,Ct]}),oe})()},6895:(ze,me,b)=>{b.d(me,{Do:()=>pt,ED:()=>lo,EM:()=>Ts,HT:()=>re,JF:()=>Hi,K0:()=>H,Mx:()=>dn,NF:()=>li,O5:()=>Tn,RF:()=>sn,S$:()=>Be,V_:()=>ie,Ye:()=>_t,b0:()=>Je,bD:()=>lr,ez:()=>Do,mk:()=>Nn,n9:()=>Ci,q:()=>M,sg:()=>xt,tP:()=>co,w_:()=>Q});var c=b(1571);let o=null;function M(){return o}function re(v){o||(o=v)}class Q{}const H=new c.OlP("DocumentToken");let fe=(()=>{class v{historyGo(D){throw new Error("Not implemented")}}return v.\u0275fac=function(D){return new(D||v)},v.\u0275prov=c.Yz7({token:v,factory:function(){return function Se(){return(0,c.LFG)(Z)}()},providedIn:"platform"}),v})();const ie=new c.OlP("Location Initialized");let Z=(()=>{class v extends fe{constructor(D){super(),this._doc=D,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return M().getBaseHref(this._doc)}onPopState(D){const L=M().getGlobalEventTarget(this._doc,"window");return L.addEventListener("popstate",D,!1),()=>L.removeEventListener("popstate",D)}onHashChange(D){const L=M().getGlobalEventTarget(this._doc,"window");return L.addEventListener("hashchange",D,!1),()=>L.removeEventListener("hashchange",D)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(D){this._location.pathname=D}pushState(D,L,le){ye()?this._history.pushState(D,L,le):this._location.hash=le}replaceState(D,L,le){ye()?this._history.replaceState(D,L,le):this._location.hash=le}forward(){this._history.forward()}back(){this._history.back()}historyGo(D=0){this._history.go(D)}getState(){return this._history.state}}return v.\u0275fac=function(D){return new(D||v)(c.LFG(H))},v.\u0275prov=c.Yz7({token:v,factory:function(){return function se(){return new Z((0,c.LFG)(H))}()},providedIn:"platform"}),v})();function ye(){return!!window.history.pushState}function Ee(v,k){if(0==v.length)return k;if(0==k.length)return v;let D=0;return v.endsWith("/")&&D++,k.startsWith("/")&&D++,2==D?v+k.substring(1):1==D?v+k:v+"/"+k}function we(v){const k=v.match(/#|\?|$/),D=k&&k.index||v.length;return v.slice(0,D-("/"===v[D-1]?1:0))+v.slice(D)}function Ie(v){return v&&"?"!==v[0]?"?"+v:v}let Be=(()=>{class v{historyGo(D){throw new Error("Not implemented")}}return v.\u0275fac=function(D){return new(D||v)},v.\u0275prov=c.Yz7({token:v,factory:function(){return(0,c.f3M)(Je)},providedIn:"root"}),v})();const Ve=new c.OlP("appBaseHref");let Je=(()=>{class v extends Be{constructor(D,L){var le,je,Qe;super(),this._platformLocation=D,this._removeListenerFns=[],this._baseHref=null!==(le=null!==(je=null!=L?L:this._platformLocation.getBaseHrefFromDOM())&&void 0!==je?je:null===(Qe=(0,c.f3M)(H).location)||void 0===Qe?void 0:Qe.origin)&&void 0!==le?le:""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(D){this._removeListenerFns.push(this._platformLocation.onPopState(D),this._platformLocation.onHashChange(D))}getBaseHref(){return this._baseHref}prepareExternalUrl(D){return Ee(this._baseHref,D)}path(D=!1){const L=this._platformLocation.pathname+Ie(this._platformLocation.search),le=this._platformLocation.hash;return le&&D?`${L}${le}`:L}pushState(D,L,le,je){const Qe=this.prepareExternalUrl(le+Ie(je));this._platformLocation.pushState(D,L,Qe)}replaceState(D,L,le,je){const Qe=this.prepareExternalUrl(le+Ie(je));this._platformLocation.replaceState(D,L,Qe)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(D=0){var L,le;null===(L=(le=this._platformLocation).historyGo)||void 0===L||L.call(le,D)}}return v.\u0275fac=function(D){return new(D||v)(c.LFG(fe),c.LFG(Ve,8))},v.\u0275prov=c.Yz7({token:v,factory:v.\u0275fac,providedIn:"root"}),v})(),pt=(()=>{class v extends Be{constructor(D,L){super(),this._platformLocation=D,this._baseHref="",this._removeListenerFns=[],null!=L&&(this._baseHref=L)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(D){this._removeListenerFns.push(this._platformLocation.onPopState(D),this._platformLocation.onHashChange(D))}getBaseHref(){return this._baseHref}path(D=!1){let L=this._platformLocation.hash;return null==L&&(L="#"),L.length>0?L.substring(1):L}prepareExternalUrl(D){const L=Ee(this._baseHref,D);return L.length>0?"#"+L:L}pushState(D,L,le,je){let Qe=this.prepareExternalUrl(le+Ie(je));0==Qe.length&&(Qe=this._platformLocation.pathname),this._platformLocation.pushState(D,L,Qe)}replaceState(D,L,le,je){let Qe=this.prepareExternalUrl(le+Ie(je));0==Qe.length&&(Qe=this._platformLocation.pathname),this._platformLocation.replaceState(D,L,Qe)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(D=0){var L,le;null===(L=(le=this._platformLocation).historyGo)||void 0===L||L.call(le,D)}}return v.\u0275fac=function(D){return new(D||v)(c.LFG(fe),c.LFG(Ve,8))},v.\u0275prov=c.Yz7({token:v,factory:v.\u0275fac}),v})(),_t=(()=>{class v{constructor(D){this._subject=new c.vpe,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=D;const L=this._locationStrategy.getBaseHref();this._basePath=function $(v){if(new RegExp("^(https?:)?//").test(v)){const[,D]=v.split(/\/\/[^\/]+/);return D}return v}(we(j(L))),this._locationStrategy.onPopState(le=>{this._subject.emit({url:this.path(!0),pop:!0,state:le.state,type:le.type})})}ngOnDestroy(){var D;null===(D=this._urlChangeSubscription)||void 0===D||D.unsubscribe(),this._urlChangeListeners=[]}path(D=!1){return this.normalize(this._locationStrategy.path(D))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(D,L=""){return this.path()==this.normalize(D+Ie(L))}normalize(D){return v.stripTrailingSlash(function q(v,k){return v&&k.startsWith(v)?k.substring(v.length):k}(this._basePath,j(D)))}prepareExternalUrl(D){return D&&"/"!==D[0]&&(D="/"+D),this._locationStrategy.prepareExternalUrl(D)}go(D,L="",le=null){this._locationStrategy.pushState(le,"",D,L),this._notifyUrlChangeListeners(this.prepareExternalUrl(D+Ie(L)),le)}replaceState(D,L="",le=null){this._locationStrategy.replaceState(le,"",D,L),this._notifyUrlChangeListeners(this.prepareExternalUrl(D+Ie(L)),le)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(D=0){var L,le;null===(L=(le=this._locationStrategy).historyGo)||void 0===L||L.call(le,D)}onUrlChange(D){return this._urlChangeListeners.push(D),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(L=>{this._notifyUrlChangeListeners(L.url,L.state)})),()=>{const L=this._urlChangeListeners.indexOf(D);var le;this._urlChangeListeners.splice(L,1),0===this._urlChangeListeners.length&&(null===(le=this._urlChangeSubscription)||void 0===le||le.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(D="",L){this._urlChangeListeners.forEach(le=>le(D,L))}subscribe(D,L,le){return this._subject.subscribe({next:D,error:L,complete:le})}}return v.normalizeQueryParams=Ie,v.joinWithSlash=Ee,v.stripTrailingSlash=we,v.\u0275fac=function(D){return new(D||v)(c.LFG(Be))},v.\u0275prov=c.Yz7({token:v,factory:function(){return function ne(){return new _t((0,c.LFG)(Be))}()},providedIn:"root"}),v})();function j(v){return v.replace(/\/index.html$/,"")}function dn(v,k){k=encodeURIComponent(k);for(const D of v.split(";")){const L=D.indexOf("="),[le,je]=-1==L?[D,""]:[D.slice(0,L),D.slice(L+1)];if(le.trim()===k)return decodeURIComponent(je)}return null}let Nn=(()=>{class v{constructor(D,L,le,je){this._iterableDiffers=D,this._keyValueDiffers=L,this._ngEl=le,this._renderer=je,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(D){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof D?D.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(D){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof D?D.split(/\s+/):D,this._rawClass&&((0,c.sIi)(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const D=this._iterableDiffer.diff(this._rawClass);D&&this._applyIterableChanges(D)}else if(this._keyValueDiffer){const D=this._keyValueDiffer.diff(this._rawClass);D&&this._applyKeyValueChanges(D)}}_applyKeyValueChanges(D){D.forEachAddedItem(L=>this._toggleClass(L.key,L.currentValue)),D.forEachChangedItem(L=>this._toggleClass(L.key,L.currentValue)),D.forEachRemovedItem(L=>{L.previousValue&&this._toggleClass(L.key,!1)})}_applyIterableChanges(D){D.forEachAddedItem(L=>{if("string"!=typeof L.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${(0,c.AaK)(L.item)}`);this._toggleClass(L.item,!0)}),D.forEachRemovedItem(L=>this._toggleClass(L.item,!1))}_applyClasses(D){D&&(Array.isArray(D)||D instanceof Set?D.forEach(L=>this._toggleClass(L,!0)):Object.keys(D).forEach(L=>this._toggleClass(L,!!D[L])))}_removeClasses(D){D&&(Array.isArray(D)||D instanceof Set?D.forEach(L=>this._toggleClass(L,!1)):Object.keys(D).forEach(L=>this._toggleClass(L,!1)))}_toggleClass(D,L){(D=D.trim())&&D.split(/\s+/g).forEach(le=>{L?this._renderer.addClass(this._ngEl.nativeElement,le):this._renderer.removeClass(this._ngEl.nativeElement,le)})}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.ZZ4),c.Y36(c.aQg),c.Y36(c.SBq),c.Y36(c.Qsj))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),v})();class Vi{constructor(k,D,L,le){this.$implicit=k,this.ngForOf=D,this.index=L,this.count=le}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let xt=(()=>{class v{set ngForOf(D){this._ngForOf=D,this._ngForOfDirty=!0}set ngForTrackBy(D){this._trackByFn=D}get ngForTrackBy(){return this._trackByFn}constructor(D,L,le){this._viewContainer=D,this._template=L,this._differs=le,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(D){D&&(this._template=D)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const D=this._ngForOf;!this._differ&&D&&(this._differ=this._differs.find(D).create(this.ngForTrackBy))}if(this._differ){const D=this._differ.diff(this._ngForOf);D&&this._applyChanges(D)}}_applyChanges(D){const L=this._viewContainer;D.forEachOperation((le,je,Qe)=>{if(null==le.previousIndex)L.createEmbeddedView(this._template,new Vi(le.item,this._ngForOf,-1,-1),null===Qe?void 0:Qe);else if(null==Qe)L.remove(null===je?void 0:je);else if(null!==je){const wt=L.get(je);L.move(wt,Qe),Yt(wt,le)}});for(let le=0,je=L.length;le{Yt(L.get(le.currentIndex),le)})}static ngTemplateContextGuard(D,L){return!0}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc),c.Y36(c.ZZ4))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),v})();function Yt(v,k){v.context.$implicit=k.item}let Tn=(()=>{class v{constructor(D,L){this._viewContainer=D,this._context=new Gn,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=L}set ngIf(D){this._context.$implicit=this._context.ngIf=D,this._updateView()}set ngIfThen(D){vn("ngIfThen",D),this._thenTemplateRef=D,this._thenViewRef=null,this._updateView()}set ngIfElse(D){vn("ngIfElse",D),this._elseTemplateRef=D,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(D,L){return!0}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),v})();class Gn{constructor(){this.$implicit=null,this.ngIf=null}}function vn(v,k){if(k&&!k.createEmbeddedView)throw new Error(`${v} must be a TemplateRef, but received '${(0,c.AaK)(k)}'.`)}class Si{constructor(k,D){this._viewContainerRef=k,this._templateRef=D,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(k){k&&!this._created?this.create():!k&&this._created&&this.destroy()}}let sn=(()=>{class v{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(D){this._ngSwitch=D,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(D){this._defaultViews.push(D)}_matchCase(D){const L=D==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||L,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),L}_updateDefaultCases(D){if(this._defaultViews.length>0&&D!==this._defaultUsed){this._defaultUsed=D;for(const L of this._defaultViews)L.enforceState(D)}}}return v.\u0275fac=function(D){return new(D||v)},v.\u0275dir=c.lG2({type:v,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0}),v})(),Ci=(()=>{class v{constructor(D,L,le){this.ngSwitch=le,le._addCase(),this._view=new Si(D,L)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc),c.Y36(sn,9))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0}),v})(),lo=(()=>{class v{constructor(D,L,le){le._addDefault(new Si(D,L))}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc),c.Y36(sn,9))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngSwitchDefault",""]],standalone:!0}),v})(),co=(()=>{class v{constructor(D){this._viewContainerRef=D,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(D){if(D.ngTemplateOutlet||D.ngTemplateOutletInjector){const L=this._viewContainerRef;if(this._viewRef&&L.remove(L.indexOf(this._viewRef)),this.ngTemplateOutlet){const{ngTemplateOutlet:le,ngTemplateOutletContext:je,ngTemplateOutletInjector:Qe}=this;this._viewRef=L.createEmbeddedView(le,je,Qe?{injector:Qe}:void 0)}else this._viewRef=null}else this._viewRef&&D.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[c.TTD]}),v})(),Do=(()=>{class v{}return v.\u0275fac=function(D){return new(D||v)},v.\u0275mod=c.oAB({type:v}),v.\u0275inj=c.cJS({}),v})();const lr="browser";function li(v){return v===lr}let Ts=(()=>{class v{}return v.\u0275prov=(0,c.Yz7)({token:v,providedIn:"root",factory:()=>new Eo((0,c.LFG)(H),window)}),v})();class Eo{constructor(k,D){this.document=k,this.window=D,this.offset=()=>[0,0]}setOffset(k){this.offset=Array.isArray(k)?()=>k:k}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(k){this.supportsScrolling()&&this.window.scrollTo(k[0],k[1])}scrollToAnchor(k){if(!this.supportsScrolling())return;const D=function Ii(v,k){const D=v.getElementById(k)||v.getElementsByName(k)[0];if(D)return D;if("function"==typeof v.createTreeWalker&&v.body&&(v.body.createShadowRoot||v.body.attachShadow)){const L=v.createTreeWalker(v.body,NodeFilter.SHOW_ELEMENT);let le=L.currentNode;for(;le;){const je=le.shadowRoot;if(je){const Qe=je.getElementById(k)||je.querySelector(`[name="${k}"]`);if(Qe)return Qe}le=L.nextNode()}}return null}(this.document,k);D&&(this.scrollToElement(D),D.focus())}setHistoryScrollRestoration(k){if(this.supportScrollRestoration()){const D=this.window.history;D&&D.scrollRestoration&&(D.scrollRestoration=k)}}scrollToElement(k){const D=k.getBoundingClientRect(),L=D.left+this.window.pageXOffset,le=D.top+this.window.pageYOffset,je=this.offset();this.window.scrollTo(L-je[0],le-je[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const k=Zo(this.window.history)||Zo(Object.getPrototypeOf(this.window.history));return!(!k||!k.writable&&!k.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function Zo(v){return Object.getOwnPropertyDescriptor(v,"scrollRestoration")}class Hi{}},529:(ze,me,b)=>{b.d(me,{JF:()=>gn,eN:()=>$e});var c=b(6895),o=b(1571),M=b(9646),re=b(9751),Q=b(4351),H=b(9300),fe=b(4004);class Se{}class ie{}class Z{constructor(A){this.normalizedNames=new Map,this.lazyUpdate=null,A?this.lazyInit="string"==typeof A?()=>{this.headers=new Map,A.split("\n").forEach(T=>{const z=T.indexOf(":");if(z>0){const Y=T.slice(0,z),He=Y.toLowerCase(),gt=T.slice(z+1).trim();this.maybeSetNormalizedName(Y,He),this.headers.has(He)?this.headers.get(He).push(gt):this.headers.set(He,[gt])}})}:()=>{this.headers=new Map,Object.keys(A).forEach(T=>{let z=A[T];const Y=T.toLowerCase();"string"==typeof z&&(z=[z]),z.length>0&&(this.headers.set(Y,z),this.maybeSetNormalizedName(T,Y))})}:this.headers=new Map}has(A){return this.init(),this.headers.has(A.toLowerCase())}get(A){this.init();const T=this.headers.get(A.toLowerCase());return T&&T.length>0?T[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(A){return this.init(),this.headers.get(A.toLowerCase())||null}append(A,T){return this.clone({name:A,value:T,op:"a"})}set(A,T){return this.clone({name:A,value:T,op:"s"})}delete(A,T){return this.clone({name:A,value:T,op:"d"})}maybeSetNormalizedName(A,T){this.normalizedNames.has(T)||this.normalizedNames.set(T,A)}init(){this.lazyInit&&(this.lazyInit instanceof Z?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(A=>this.applyUpdate(A)),this.lazyUpdate=null))}copyFrom(A){A.init(),Array.from(A.headers.keys()).forEach(T=>{this.headers.set(T,A.headers.get(T)),this.normalizedNames.set(T,A.normalizedNames.get(T))})}clone(A){const T=new Z;return T.lazyInit=this.lazyInit&&this.lazyInit instanceof Z?this.lazyInit:this,T.lazyUpdate=(this.lazyUpdate||[]).concat([A]),T}applyUpdate(A){const T=A.name.toLowerCase();switch(A.op){case"a":case"s":let z=A.value;if("string"==typeof z&&(z=[z]),0===z.length)return;this.maybeSetNormalizedName(A.name,T);const Y=("a"===A.op?this.headers.get(T):void 0)||[];Y.push(...z),this.headers.set(T,Y);break;case"d":const He=A.value;if(He){let gt=this.headers.get(T);if(!gt)return;gt=gt.filter(Ft=>-1===He.indexOf(Ft)),0===gt.length?(this.headers.delete(T),this.normalizedNames.delete(T)):this.headers.set(T,gt)}else this.headers.delete(T),this.normalizedNames.delete(T)}}forEach(A){this.init(),Array.from(this.normalizedNames.keys()).forEach(T=>A(this.normalizedNames.get(T),this.headers.get(T)))}}class se{encodeKey(A){return Be(A)}encodeValue(A){return Be(A)}decodeKey(A){return decodeURIComponent(A)}decodeValue(A){return decodeURIComponent(A)}}const we=/%(\d[a-f0-9])/gi,Ie={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function Be(I){return encodeURIComponent(I).replace(we,(A,T)=>{var z;return null!==(z=Ie[T])&&void 0!==z?z:A})}function Ve(I){return`${I}`}class Je{constructor(A={}){if(this.updates=null,this.cloneFrom=null,this.encoder=A.encoder||new se,A.fromString){if(A.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function Ee(I,A){const T=new Map;return I.length>0&&I.replace(/^\?/,"").split("&").forEach(Y=>{const He=Y.indexOf("="),[gt,Ft]=-1==He?[A.decodeKey(Y),""]:[A.decodeKey(Y.slice(0,He)),A.decodeValue(Y.slice(He+1))],kt=T.get(gt)||[];kt.push(Ft),T.set(gt,kt)}),T}(A.fromString,this.encoder)}else A.fromObject?(this.map=new Map,Object.keys(A.fromObject).forEach(T=>{const z=A.fromObject[T],Y=Array.isArray(z)?z.map(Ve):[Ve(z)];this.map.set(T,Y)})):this.map=null}has(A){return this.init(),this.map.has(A)}get(A){this.init();const T=this.map.get(A);return T?T[0]:null}getAll(A){return this.init(),this.map.get(A)||null}keys(){return this.init(),Array.from(this.map.keys())}append(A,T){return this.clone({param:A,value:T,op:"a"})}appendAll(A){const T=[];return Object.keys(A).forEach(z=>{const Y=A[z];Array.isArray(Y)?Y.forEach(He=>{T.push({param:z,value:He,op:"a"})}):T.push({param:z,value:Y,op:"a"})}),this.clone(T)}set(A,T){return this.clone({param:A,value:T,op:"s"})}delete(A,T){return this.clone({param:A,value:T,op:"d"})}toString(){return this.init(),this.keys().map(A=>{const T=this.encoder.encodeKey(A);return this.map.get(A).map(z=>T+"="+this.encoder.encodeValue(z)).join("&")}).filter(A=>""!==A).join("&")}clone(A){const T=new Je({encoder:this.encoder});return T.cloneFrom=this.cloneFrom||this,T.updates=(this.updates||[]).concat(A),T}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(A=>this.map.set(A,this.cloneFrom.map.get(A))),this.updates.forEach(A=>{switch(A.op){case"a":case"s":const T=("a"===A.op?this.map.get(A.param):void 0)||[];T.push(Ve(A.value)),this.map.set(A.param,T);break;case"d":if(void 0===A.value){this.map.delete(A.param);break}{let z=this.map.get(A.param)||[];const Y=z.indexOf(Ve(A.value));-1!==Y&&z.splice(Y,1),z.length>0?this.map.set(A.param,z):this.map.delete(A.param)}}}),this.cloneFrom=this.updates=null)}}class _t{constructor(){this.map=new Map}set(A,T){return this.map.set(A,T),this}get(A){return this.map.has(A)||this.map.set(A,A.defaultValue()),this.map.get(A)}delete(A){return this.map.delete(A),this}has(A){return this.map.has(A)}keys(){return this.map.keys()}}function q(I){return typeof ArrayBuffer<"u"&&I instanceof ArrayBuffer}function j(I){return typeof Blob<"u"&&I instanceof Blob}function $(I){return typeof FormData<"u"&&I instanceof FormData}class ae{constructor(A,T,z,Y){let He;if(this.url=T,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=A.toUpperCase(),function ne(I){switch(I){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||Y?(this.body=void 0!==z?z:null,He=Y):He=z,He&&(this.reportProgress=!!He.reportProgress,this.withCredentials=!!He.withCredentials,He.responseType&&(this.responseType=He.responseType),He.headers&&(this.headers=He.headers),He.context&&(this.context=He.context),He.params&&(this.params=He.params)),this.headers||(this.headers=new Z),this.context||(this.context=new _t),this.params){const gt=this.params.toString();if(0===gt.length)this.urlWithParams=T;else{const Ft=T.indexOf("?");this.urlWithParams=T+(-1===Ft?"?":Ft_n.set(Oe,A.setHeaders[Oe]),on)),A.setParams&&(Jn=Object.keys(A.setParams).reduce((_n,Oe)=>_n.set(Oe,A.setParams[Oe]),Jn)),new ae(z,Y,gt,{params:Jn,headers:on,context:ln,reportProgress:kt,responseType:He,withCredentials:Ft})}}var Pe=(()=>((Pe=Pe||{})[Pe.Sent=0]="Sent",Pe[Pe.UploadProgress=1]="UploadProgress",Pe[Pe.ResponseHeader=2]="ResponseHeader",Pe[Pe.DownloadProgress=3]="DownloadProgress",Pe[Pe.Response=4]="Response",Pe[Pe.User=5]="User",Pe))();class de{constructor(A,T=200,z="OK"){this.headers=A.headers||new Z,this.status=void 0!==A.status?A.status:T,this.statusText=A.statusText||z,this.url=A.url||null,this.ok=this.status>=200&&this.status<300}}class be extends de{constructor(A={}){super(A),this.type=Pe.ResponseHeader}clone(A={}){return new be({headers:A.headers||this.headers,status:void 0!==A.status?A.status:this.status,statusText:A.statusText||this.statusText,url:A.url||this.url||void 0})}}class Fe extends de{constructor(A={}){super(A),this.type=Pe.Response,this.body=void 0!==A.body?A.body:null}clone(A={}){return new Fe({body:void 0!==A.body?A.body:this.body,headers:A.headers||this.headers,status:void 0!==A.status?A.status:this.status,statusText:A.statusText||this.statusText,url:A.url||this.url||void 0})}}class ke extends de{constructor(A){super(A,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${A.url||"(unknown url)"}`:`Http failure response for ${A.url||"(unknown url)"}: ${A.status} ${A.statusText}`,this.error=A.error||null}}function Xe(I,A){return{body:A,headers:I.headers,context:I.context,observe:I.observe,params:I.params,reportProgress:I.reportProgress,responseType:I.responseType,withCredentials:I.withCredentials}}let $e=(()=>{class I{constructor(T){this.handler=T}request(T,z,Y={}){let He;if(T instanceof ae)He=T;else{let kt,on;kt=Y.headers instanceof Z?Y.headers:new Z(Y.headers),Y.params&&(on=Y.params instanceof Je?Y.params:new Je({fromObject:Y.params})),He=new ae(T,z,void 0!==Y.body?Y.body:null,{headers:kt,context:Y.context,params:on,reportProgress:Y.reportProgress,responseType:Y.responseType||"json",withCredentials:Y.withCredentials})}const gt=(0,M.of)(He).pipe((0,Q.b)(kt=>this.handler.handle(kt)));if(T instanceof ae||"events"===Y.observe)return gt;const Ft=gt.pipe((0,H.h)(kt=>kt instanceof Fe));switch(Y.observe||"body"){case"body":switch(He.responseType){case"arraybuffer":return Ft.pipe((0,fe.U)(kt=>{if(null!==kt.body&&!(kt.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return kt.body}));case"blob":return Ft.pipe((0,fe.U)(kt=>{if(null!==kt.body&&!(kt.body instanceof Blob))throw new Error("Response is not a Blob.");return kt.body}));case"text":return Ft.pipe((0,fe.U)(kt=>{if(null!==kt.body&&"string"!=typeof kt.body)throw new Error("Response is not a string.");return kt.body}));default:return Ft.pipe((0,fe.U)(kt=>kt.body))}case"response":return Ft;default:throw new Error(`Unreachable: unhandled observe type ${Y.observe}}`)}}delete(T,z={}){return this.request("DELETE",T,z)}get(T,z={}){return this.request("GET",T,z)}head(T,z={}){return this.request("HEAD",T,z)}jsonp(T,z){return this.request("JSONP",T,{params:(new Je).append(z,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(T,z={}){return this.request("OPTIONS",T,z)}patch(T,z,Y={}){return this.request("PATCH",T,Xe(Y,z))}post(T,z,Y={}){return this.request("POST",T,Xe(Y,z))}put(T,z,Y={}){return this.request("PUT",T,Xe(Y,z))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(Se))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();function bt(I,A){return A(I)}function At(I,A){return(T,z)=>A.intercept(T,{handle:Y=>I(Y,z)})}const st=new o.OlP("HTTP_INTERCEPTORS"),mt=new o.OlP("HTTP_INTERCEPTOR_FNS");function ut(){let I=null;return(A,T)=>{var z;return null===I&&(I=(null!==(z=(0,o.f3M)(st,{optional:!0}))&&void 0!==z?z:[]).reduceRight(At,bt)),I(A,T)}}let lt=(()=>{class I extends Se{constructor(T,z){super(),this.backend=T,this.injector=z,this.chain=null}handle(T){if(null===this.chain){const z=Array.from(new Set(this.injector.get(mt)));this.chain=z.reduceRight((Y,He)=>function ot(I,A,T){return(z,Y)=>T.runInContext(()=>A(z,He=>I(He,Y)))}(Y,He,this.injector),bt)}return this.chain(T,z=>this.backend.handle(z))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(ie),o.LFG(o.lqb))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();const ve=/^\)\]\}',?\n/;let Re=(()=>{class I{constructor(T){this.xhrFactory=T}handle(T){if("JSONP"===T.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new re.y(z=>{const Y=this.xhrFactory.build();if(Y.open(T.method,T.urlWithParams),T.withCredentials&&(Y.withCredentials=!0),T.headers.forEach((Oe,xe)=>Y.setRequestHeader(Oe,xe.join(","))),T.headers.has("Accept")||Y.setRequestHeader("Accept","application/json, text/plain, */*"),!T.headers.has("Content-Type")){const Oe=T.detectContentTypeHeader();null!==Oe&&Y.setRequestHeader("Content-Type",Oe)}if(T.responseType){const Oe=T.responseType.toLowerCase();Y.responseType="json"!==Oe?Oe:"text"}const He=T.serializeBody();let gt=null;const Ft=()=>{if(null!==gt)return gt;const Oe=Y.statusText||"OK",xe=new Z(Y.getAllResponseHeaders()),J=function G(I){return"responseURL"in I&&I.responseURL?I.responseURL:/^X-Request-URL:/m.test(I.getAllResponseHeaders())?I.getResponseHeader("X-Request-URL"):null}(Y)||T.url;return gt=new be({headers:xe,status:Y.status,statusText:Oe,url:J}),gt},kt=()=>{let{headers:Oe,status:xe,statusText:J,url:Ne}=Ft(),Ge=null;204!==xe&&(Ge=typeof Y.response>"u"?Y.responseText:Y.response),0===xe&&(xe=Ge?200:0);let Tt=xe>=200&&xe<300;if("json"===T.responseType&&"string"==typeof Ge){const Jt=Ge;Ge=Ge.replace(ve,"");try{Ge=""!==Ge?JSON.parse(Ge):null}catch(un){Ge=Jt,Tt&&(Tt=!1,Ge={error:un,text:Ge})}}Tt?(z.next(new Fe({body:Ge,headers:Oe,status:xe,statusText:J,url:Ne||void 0})),z.complete()):z.error(new ke({error:Ge,headers:Oe,status:xe,statusText:J,url:Ne||void 0}))},on=Oe=>{const{url:xe}=Ft(),J=new ke({error:Oe,status:Y.status||0,statusText:Y.statusText||"Unknown Error",url:xe||void 0});z.error(J)};let Jn=!1;const ln=Oe=>{Jn||(z.next(Ft()),Jn=!0);let xe={type:Pe.DownloadProgress,loaded:Oe.loaded};Oe.lengthComputable&&(xe.total=Oe.total),"text"===T.responseType&&Y.responseText&&(xe.partialText=Y.responseText),z.next(xe)},_n=Oe=>{let xe={type:Pe.UploadProgress,loaded:Oe.loaded};Oe.lengthComputable&&(xe.total=Oe.total),z.next(xe)};return Y.addEventListener("load",kt),Y.addEventListener("error",on),Y.addEventListener("timeout",on),Y.addEventListener("abort",on),T.reportProgress&&(Y.addEventListener("progress",ln),null!==He&&Y.upload&&Y.upload.addEventListener("progress",_n)),Y.send(He),z.next({type:Pe.Sent}),()=>{Y.removeEventListener("error",on),Y.removeEventListener("abort",on),Y.removeEventListener("load",kt),Y.removeEventListener("timeout",on),T.reportProgress&&(Y.removeEventListener("progress",ln),null!==He&&Y.upload&&Y.upload.removeEventListener("progress",_n)),Y.readyState!==Y.DONE&&Y.abort()}})}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(c.JF))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();const tt=new o.OlP("XSRF_ENABLED"),ue="XSRF-TOKEN",R=new o.OlP("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>ue}),K="X-XSRF-TOKEN",De=new o.OlP("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>K});class Ce{}let Ke=(()=>{class I{constructor(T,z,Y){this.doc=T,this.platform=z,this.cookieName=Y,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const T=this.doc.cookie||"";return T!==this.lastCookieString&&(this.parseCount++,this.lastToken=(0,c.Mx)(T,this.cookieName),this.lastCookieString=T),this.lastToken}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(c.K0),o.LFG(o.Lbi),o.LFG(R))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();function it(I,A){const T=I.url.toLowerCase();if(!(0,o.f3M)(tt)||"GET"===I.method||"HEAD"===I.method||T.startsWith("http://")||T.startsWith("https://"))return A(I);const z=(0,o.f3M)(Ce).getToken(),Y=(0,o.f3M)(De);return null!=z&&!I.headers.has(Y)&&(I=I.clone({headers:I.headers.set(Y,z)})),A(I)}var _e=(()=>((_e=_e||{})[_e.Interceptors=0]="Interceptors",_e[_e.LegacyInterceptors=1]="LegacyInterceptors",_e[_e.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",_e[_e.NoXsrfProtection=3]="NoXsrfProtection",_e[_e.JsonpSupport=4]="JsonpSupport",_e[_e.RequestsMadeViaParent=5]="RequestsMadeViaParent",_e))();function Ye(I,A){return{\u0275kind:I,\u0275providers:A}}function F(...I){const A=[$e,Re,lt,{provide:Se,useExisting:lt},{provide:ie,useExisting:Re},{provide:mt,useValue:it,multi:!0},{provide:tt,useValue:!0},{provide:Ce,useClass:Ke}];for(const T of I)A.push(...T.\u0275providers);return(0,o.MR2)(A)}const te=new o.OlP("LEGACY_INTERCEPTOR_FN");function rt({cookieName:I,headerName:A}){const T=[];return void 0!==I&&T.push({provide:R,useValue:I}),void 0!==A&&T.push({provide:De,useValue:A}),Ye(_e.CustomXsrfConfiguration,T)}let gn=(()=>{class I{}return I.\u0275fac=function(T){return new(T||I)},I.\u0275mod=o.oAB({type:I}),I.\u0275inj=o.cJS({providers:[F(Ye(_e.LegacyInterceptors,[{provide:te,useFactory:ut},{provide:mt,useExisting:te,multi:!0}]),rt({cookieName:ue,headerName:K}))]}),I})()},1571:(ze,me,b)=>{b.d(me,{QbO:()=>ax,tb:()=>lg,AFp:()=>rg,ip1:()=>og,CZH:()=>jc,hGG:()=>Yx,z2F:()=>$c,sBO:()=>Ix,Sil:()=>hx,_Vd:()=>wl,EJc:()=>dx,Xts:()=>Dd,SBq:()=>Al,lqb:()=>va,qLn:()=>Tl,vpe:()=>ss,tBr:()=>Gs,XFs:()=>Ce,OlP:()=>In,zs3:()=>ba,ZZ4:()=>qu,aQg:()=>Xu,soG:()=>zc,YKP:()=>dm,h0i:()=>il,PXZ:()=>Mx,R0b:()=>ir,FiY:()=>ha,Lbi:()=>sx,g9A:()=>ag,n_E:()=>Nc,Qsj:()=>S_,FYo:()=>Lh,JOm:()=>Mr,q3G:()=>pi,tp0:()=>gs,Rgc:()=>jl,dDg:()=>xx,eoX:()=>mg,GfV:()=>Nh,s_b:()=>Vc,ifc:()=>J,MMx:()=>wu,Lck:()=>n0,eFA:()=>vg,G48:()=>Ox,Gpc:()=>Ie,f3M:()=>Y,$WT:()=>ai,MR2:()=>p_,_c5:()=>Wx,c2e:()=>lx,zSh:()=>Ad,wAp:()=>Kt,vHH:()=>ne,lri:()=>fg,rWj:()=>pg,JZr:()=>_t,EiD:()=>xh,mCW:()=>fc,qzn:()=>Ba,JVY:()=>Zg,pB0:()=>Jg,eBb:()=>Xg,L6k:()=>qg,LAX:()=>Qg,D6c:()=>Kx,cg1:()=>vu,kL8:()=>Fp,dqk:()=>F,Z0I:()=>oe,sIi:()=>kl,CqO:()=>Hf,QGY:()=>ou,F4k:()=>Uf,RDi:()=>jg,AaK:()=>se,z3N:()=>xs,qOj:()=>Xd,TTD:()=>Hi,_Bn:()=>cm,jDz:()=>hm,xp6:()=>Gh,uIk:()=>eu,Tol:()=>dp,Gre:()=>Ep,ekj:()=>hu,Suo:()=>Rm,Xpm:()=>Ti,lG2:()=>Bi,Yz7:()=>tn,cJS:()=>Ct,oAB:()=>Zi,Yjl:()=>or,Y36:()=>za,_UZ:()=>iu,BQk:()=>Sc,ynx:()=>Tc,qZA:()=>Ac,TgZ:()=>wc,EpF:()=>Vf,n5z:()=>zs,Ikx:()=>_u,LFG:()=>T,$8M:()=>qr,$Z:()=>sf,NdJ:()=>ru,CRH:()=>Fm,kcU:()=>k,O4$:()=>hs,oxw:()=>Wf,ALo:()=>Mm,lcZ:()=>wm,Hsn:()=>Kf,F$t:()=>Yf,Q6J:()=>tu,s9C:()=>su,kEZ:()=>bm,iGM:()=>km,MAs:()=>Nf,KtG:()=>di,evT:()=>Bh,CHM:()=>fn,oJD:()=>Ch,LSH:()=>Cd,P3R:()=>Eh,Udp:()=>uu,YNc:()=>Lf,W1O:()=>Vm,_uU:()=>_p,Oqu:()=>pu,hij:()=>kc,AsE:()=>mu,lnq:()=>gu,Gf:()=>Pm});var c=b(7579),o=b(727),M=b(9751),re=b(6451),Q=b(8421),H=b(930),fe=b(4482);function ie(e,t,...n){if(!0===t)return void e();if(!1===t)return;const i=new H.Hp({next:()=>{i.unsubscribe(),e()}});return(0,Q.Xf)(t(...n)).subscribe(i)}function Z(e){for(let t in e)if(e[t]===Z)return t;throw Error("Could not find renamed property on target object.")}function ye(e,t){for(const n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function se(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(se).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function Ee(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const we=Z({__forward_ref__:Z});function Ie(e){return e.__forward_ref__=Ie,e.toString=function(){return se(this())},e}function Be(e){return Ve(e)?e():e}function Ve(e){return"function"==typeof e&&e.hasOwnProperty(we)&&e.__forward_ref__===Ie}function Je(e){return e&&!!e.\u0275providers}const _t="https://g.co/ng/security#xss";class ne extends Error{constructor(t,n){super(function q(e,t){return`NG0${Math.abs(e)}${t?": "+t.trim():""}`}(t,n)),this.code=t}}function j(e){return"string"==typeof e?e:null==e?"":String(e)}function de(e,t){throw new ne(-201,!1)}function Lt(e,t){null==e&&function yt(e,t,n,i){throw new Error(`ASSERTION ERROR: ${e}`+(null==i?"":` [Expected=> ${n} ${i} ${t} <=Actual]`))}(t,e,null,"!=")}function tn(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Ct(e){return{providers:e.providers||[],imports:e.imports||[]}}function Ht(e){return ve(e,ue)||ve(e,K)}function oe(e){return null!==Ht(e)}function ve(e,t){return e.hasOwnProperty(t)?e[t]:null}function tt(e){return e&&(e.hasOwnProperty(R)||e.hasOwnProperty(De))?e[R]:null}const ue=Z({\u0275prov:Z}),R=Z({\u0275inj:Z}),K=Z({ngInjectableDef:Z}),De=Z({ngInjectorDef:Z});var Ce=(()=>((Ce=Ce||{})[Ce.Default=0]="Default",Ce[Ce.Host=1]="Host",Ce[Ce.Self=2]="Self",Ce[Ce.SkipSelf=4]="SkipSelf",Ce[Ce.Optional=8]="Optional",Ce))();let Ke;function et(e){const t=Ke;return Ke=e,t}function _e(e,t,n){const i=Ht(e);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:n&Ce.Optional?null:void 0!==t?t:void de(se(e))}const F=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),rt={},at="__NG_DI_FLAG__",Vt="ngTempTokenPath",mn=/\n/gm,Ze="__source";let Me;function I(e){const t=Me;return Me=e,t}function A(e,t=Ce.Default){if(void 0===Me)throw new ne(-203,!1);return null===Me?_e(e,void 0,t):Me.get(e,t&Ce.Optional?null:void 0,t)}function T(e,t=Ce.Default){return(function it(){return Ke}()||A)(Be(e),t)}function Y(e,t=Ce.Default){return T(e,He(t))}function He(e){return typeof e>"u"||"number"==typeof e?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function gt(e){const t=[];for(let n=0;n((_n=_n||{})[_n.OnPush=0]="OnPush",_n[_n.Default=1]="Default",_n))(),J=(()=>{return(e=J||(J={}))[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",J;var e})();const Ne={},Ge=[],Tt=Z({\u0275cmp:Z}),Jt=Z({\u0275dir:Z}),un=Z({\u0275pipe:Z}),An=Z({\u0275mod:Z}),jn=Z({\u0275fac:Z}),si=Z({__NG_ELEMENT_ID__:Z});let Li=0;function Ti(e){return ln(()=>{const n=!0===e.standalone,i={},r={type:e.type,providersResolver:null,decls:e.decls,vars:e.vars,factory:null,template:e.template||null,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:i,inputs:null,outputs:null,exportAs:e.exportAs||null,onPush:e.changeDetection===_n.OnPush,directiveDefs:null,pipeDefs:null,standalone:n,dependencies:n&&e.dependencies||null,getStandaloneInjector:null,selectors:e.selectors||Ge,viewQuery:e.viewQuery||null,features:e.features||null,data:e.data||{},encapsulation:e.encapsulation||J.Emulated,id:"c"+Li++,styles:e.styles||Ge,_:null,setInput:null,schemas:e.schemas||null,tView:null,findHostDirectiveDefs:null,hostDirectives:null},a=e.dependencies,h=e.features;return r.inputs=bo(e.inputs,i),r.outputs=bo(e.outputs),h&&h.forEach(m=>m(r)),r.directiveDefs=a?()=>("function"==typeof a?a():a).map(Ni).filter(xi):null,r.pipeDefs=a?()=>("function"==typeof a?a():a).map($n).filter(xi):null,r})}function Ni(e){return dn(e)||Nn(e)}function xi(e){return null!==e}function Zi(e){return ln(()=>({type:e.type,bootstrap:e.bootstrap||Ge,declarations:e.declarations||Ge,imports:e.imports||Ge,exports:e.exports||Ge,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function bo(e,t){if(null==e)return Ne;const n={};for(const i in e)if(e.hasOwnProperty(i)){let r=e[i],a=r;Array.isArray(r)&&(a=r[1],r=r[0]),n[r]=i,t&&(t[r]=a)}return n}const Bi=Ti;function or(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function dn(e){return e[Tt]||null}function Nn(e){return e[Jt]||null}function $n(e){return e[un]||null}function ai(e){const t=dn(e)||Nn(e)||$n(e);return null!==t&&t.standalone}function Bn(e,t){const n=e[An]||null;if(!n&&!0===t)throw new Error(`Type ${se(e)} does not have '\u0275mod' property.`);return n}function Yn(e){return Array.isArray(e)&&"object"==typeof e[1]}function Pn(e){return Array.isArray(e)&&!0===e[1]}function mi(e){return 0!=(4&e.flags)}function uo(e){return e.componentOffset>-1}function Co(e){return 1==(1&e.flags)}function Di(e){return null!==e.template}function Kn(e){return 0!=(256&e[2])}function Ii(e,t){return e.hasOwnProperty(jn)?e[jn]:null}class Nr{constructor(t,n,i){this.previousValue=t,this.currentValue=n,this.firstChange=i}isFirstChange(){return this.firstChange}}function Hi(){return dr}function dr(e){return e.type.prototype.ngOnChanges&&(e.setInput=ea),Mo}function Mo(){const e=Vr(this),t=null==e?void 0:e.current;if(t){const n=e.previous;if(n===Ne)e.previous=t;else for(let i in t)n[i]=t[i];e.current=null,this.ngOnChanges(t)}}function ea(e,t,n,i){const r=this.declaredInputs[n],a=Vr(e)||function Ss(e,t){return e[Br]=t}(e,{previous:Ne,current:null}),h=a.current||(a.current={}),m=a.previous,x=m[r];h[r]=new Nr(x&&x.currentValue,t,m===Ne),e[i]=t}Hi.ngInherit=!0;const Br="__ngSimpleChanges__";function Vr(e){return e[Br]||null}function bn(e){for(;Array.isArray(e);)e=e[0];return e}function zi(e,t){return bn(t[e])}function ci(e,t){return bn(t[e.index])}function as(e,t){return e.data[t]}function Ji(e,t){return e[t]}function gi(e,t){const n=t[e];return Yn(n)?n:n[0]}function $i(e){return 64==(64&e[2])}function ho(e,t){return null==t?null:e[t]}function Os(e){e[18]=0}function wo(e,t){e[5]+=t;let n=e,i=e[3];for(;null!==i&&(1===t&&1===n[5]||-1===t&&0===n[5]);)i[5]+=t,n=i,i=i[3]}const zt={lFrame:Ao(null),bindingsEnabled:!0};function E(){return zt.bindingsEnabled}function ce(){return zt.lFrame.lView}function dt(){return zt.lFrame.tView}function fn(e){return zt.lFrame.contextLView=e,e[8]}function di(e){return zt.lFrame.contextLView=null,e}function Sn(){let e=eo();for(;null!==e&&64===e.type;)e=e.parent;return e}function eo(){return zt.lFrame.currentTNode}function _i(e,t){const n=zt.lFrame;n.currentTNode=e,n.isParent=t}function Lo(){return zt.lFrame.isParent}function No(){zt.lFrame.isParent=!1}function ni(){const e=zt.lFrame;let t=e.bindingRootIndex;return-1===t&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function no(){return zt.lFrame.bindingIndex}function io(){return zt.lFrame.bindingIndex++}function Vn(e){const t=zt.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function Ps(e,t){const n=zt.lFrame;n.bindingIndex=n.bindingRootIndex=e,Zn(t)}function Zn(e){zt.lFrame.currentDirectiveIndex=e}function jr(){return zt.lFrame.currentQueryIndex}function qo(e){zt.lFrame.currentQueryIndex=e}function zr(e){const t=e[1];return 2===t.type?t.declTNode:1===t.type?e[6]:null}function $r(e,t,n){if(n&Ce.SkipSelf){let r=t,a=e;for(;!(r=r.parent,null!==r||n&Ce.Host||(r=zr(a),null===r||(a=a[15],10&r.type))););if(null===r)return!1;t=r,e=a}const i=zt.lFrame=Fs();return i.currentTNode=t,i.lView=e,!0}function Xo(e){const t=Fs(),n=e[1];zt.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Fs(){const e=zt.lFrame,t=null===e?null:e.child;return null===t?Ao(e):t}function Ao(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function us(){const e=zt.lFrame;return zt.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const oa=us;function ra(){const e=us();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ui(){return zt.lFrame.selectedIndex}function mr(e){zt.lFrame.selectedIndex=e}function On(){const e=zt.lFrame;return as(e.tView,e.selectedIndex)}function hs(){zt.lFrame.currentNamespace="svg"}function k(){!function D(){zt.lFrame.currentNamespace=null}()}function je(e,t){for(let n=t.directiveStart,i=t.directiveEnd;n=i)break}else t[x]<0&&(e[18]+=65536),(m>11>16&&(3&e[2])===t){e[2]+=2048;try{a.call(m)}finally{}}}else try{a.call(m)}finally{}}class Mn{constructor(t,n,i){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=i}}function ki(e,t,n){let i=0;for(;it){h=a-1;break}}}for(;a>16}(e),i=t;for(;n>0;)i=i[15],n--;return i}let aa=!0;function Ns(e){const t=aa;return aa=e,t}let Bs=0;const Pi={};function Vs(e,t){const n=cl(e,t);if(-1!==n)return n;const i=t[1];i.firstCreatePass&&(e.injectorIndex=t.length,ca(i.data,e),ca(t,null),ca(i.blueprint,null));const r=Ei(e,t),a=e.injectorIndex;if(_r(r)){const h=Qo(r),m=Yr(r,t),x=m[1].data;for(let O=0;O<8;O++)t[a+O]=m[h+O]|x[h+O]}return t[a+8]=r,a}function ca(e,t){e.push(0,0,0,0,0,0,0,0,t)}function cl(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function Ei(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,i=null,r=t;for(;null!==r;){if(i=yr(r),null===i)return-1;if(n++,r=r[15],-1!==i.injectorIndex)return i.injectorIndex|n<<16}return-1}function Kr(e,t,n){!function ll(e,t,n){let i;"string"==typeof n?i=n.charCodeAt(0)||0:n.hasOwnProperty(si)&&(i=n[si]),null==i&&(i=n[si]=Bs++);const r=255&i;t.data[e+(r>>5)]|=1<=0?255&t:br:t}(n);if("function"==typeof a){if(!$r(t,e,i))return i&Ce.Host?Aa(r,0,i):Ta(t,n,i,r);try{const h=a(i);if(null!=h||i&Ce.Optional)return h;de()}finally{oa()}}else if("number"==typeof a){let h=null,m=cl(e,t),x=-1,O=i&Ce.Host?t[16][6]:null;for((-1===m||i&Ce.SkipSelf)&&(x=-1===m?Ei(e,t):t[m+8],-1!==x&&ul(i,!1)?(h=t[1],m=Qo(x),t=Yr(x,t)):m=-1);-1!==m;){const B=t[1];if(Jo(a,m,B.data)){const X=dl(m,t,n,h,i,O);if(X!==Pi)return X}x=t[m+8],-1!==x&&ul(i,t[1].data[m+8]===O)&&Jo(a,m,t)?(h=B,m=Qo(x),t=Yr(x,t)):m=-1}}return r}function dl(e,t,n,i,r,a){const h=t[1],m=h.data[e+8],B=fs(m,h,n,null==i?uo(m)&&aa:i!=h&&0!=(3&m.type),r&Ce.Host&&a===m);return null!==B?Bo(t,h,B,m):Pi}function fs(e,t,n,i,r){const a=e.providerIndexes,h=t.data,m=1048575&a,x=e.directiveStart,B=a>>20,Te=r?m+B:e.directiveEnd;for(let Ue=i?m:m+B;Ue=x&&nt.type===n)return Ue}if(r){const Ue=h[x];if(Ue&&Di(Ue)&&Ue.type===n)return x}return null}function Bo(e,t,n,i){let r=e[n];const a=t.data;if(function pn(e){return e instanceof Mn}(r)){const h=r;h.resolving&&function ee(e,t){const n=t?`. Dependency path: ${t.join(" > ")} > ${e}`:"";throw new ne(-200,`Circular dependency in DI detected for ${e}${n}`)}(function $(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():j(e)}(a[n]));const m=Ns(h.canSeeViewProviders);h.resolving=!0;const x=h.injectImpl?et(h.injectImpl):null;$r(e,i,Ce.Default);try{r=e[n]=h.factory(void 0,a,e,i),t.firstCreatePass&&n>=i.directiveStart&&function le(e,t,n){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:a}=t.type.prototype;if(i){const h=dr(t);(n.preOrderHooks||(n.preOrderHooks=[])).push(e,h),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(e,h)}r&&(n.preOrderHooks||(n.preOrderHooks=[])).push(0-e,r),a&&((n.preOrderHooks||(n.preOrderHooks=[])).push(e,a),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(e,a))}(n,a[n],t)}finally{null!==x&&et(x),Ns(m),h.resolving=!1,oa()}}return r}function Jo(e,t,n){return!!(n[t+(e>>5)]&1<{const t=e.prototype.constructor,n=t[jn]||da(t),i=Object.prototype;let r=Object.getPrototypeOf(e.prototype).constructor;for(;r&&r!==i;){const a=r[jn]||da(r);if(a&&a!==n)return a;r=Object.getPrototypeOf(r)}return a=>new a})}function da(e){return Ve(e)?()=>{const t=da(Be(e));return t&&t()}:Ii(e)}function yr(e){const t=e[1],n=t.type;return 2===n?t.declTNode:1===n?e[6]:null}function qr(e){return function Us(e,t){if("class"===t)return e.classes;if("style"===t)return e.styles;const n=e.attrs;if(n){const i=n.length;let r=0;for(;r{const i=function ua(e){return function(...n){if(e){const i=e(...n);for(const r in i)this[r]=i[r]}}}(t);function r(...a){if(this instanceof r)return i.apply(this,a),this;const h=new r(...a);return m.annotation=h,m;function m(x,O,B){const X=x.hasOwnProperty(mo)?x[mo]:Object.defineProperty(x,mo,{value:[]})[mo];for(;X.length<=B;)X.push(null);return(X[B]=X[B]||[]).push(h),x}}return n&&(r.prototype=Object.create(n.prototype)),r.prototype.ngMetadataName=e,r.annotationCls=r,r})}class In{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=tn({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function p(e,t){e.forEach(n=>Array.isArray(n)?p(n,t):t(n))}function d(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function _(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function w(e,t){const n=[];for(let i=0;i=0?e[1|i]=n:(i=~i,function Ae(e,t,n,i){let r=e.length;if(r==t)e.push(n,i);else if(1===r)e.push(i,e[0]),e[0]=n;else{for(r--,e.push(e[r-1],e[r]);r>t;)e[r]=e[r-2],r--;e[t]=n,e[t+1]=i}}(e,i,t,n)),i}function Ot(e,t){const n=Et(e,t);if(n>=0)return e[1|n]}function Et(e,t){return function Hn(e,t,n){let i=0,r=e.length>>n;for(;r!==i;){const a=i+(r-i>>1),h=e[a<t?r=a:i=a+1}return~(r<({token:e})),-1),ha=Ft(xr("Optional"),8),gs=Ft(xr("SkipSelf"),4);var Mr=(()=>((Mr=Mr||{})[Mr.Important=1]="Important",Mr[Mr.DashCase=2]="DashCase",Mr))();const vl=new Map;let ld=0;const yl="__ngContext__";function Ri(e,t){Yn(t)?(e[yl]=t[20],function ah(e){vl.set(e[20],e)}(t)):e[yl]=t}function W(e,t){return undefined(e,t)}function Le(e){const t=e[3];return Pn(t)?t[3]:t}function Dt(e){return qt(e[13])}function Bt(e){return qt(e[4])}function qt(e){for(;null!==e&&!Pn(e);)e=e[4];return e}function $t(e,t,n,i,r){if(null!=i){let a,h=!1;Pn(i)?a=i:Yn(i)&&(h=!0,i=i[0]);const m=bn(i);0===e&&null!==n?null==r?Gt(t,n,m):Nt(t,n,m,r||null,!0):1===e&&null!==n?Nt(t,n,m,r||null,!0):2===e?function pd(e,t,n){const i=Fi(e,t);i&&function zn(e,t,n,i){e.removeChild(t,n,i)}(e,i,t,n)}(t,m,h):3===e&&t.destroyNode(m),null!=a&&function Lg(e,t,n,i,r){const a=n[7];a!==bn(n)&&$t(t,e,i,a,r);for(let m=10;m0&&(e[n-1][4]=i[4]);const a=_(e,10+t);!function Yi(e,t){Dl(e,t,t[11],2,null,null),t[0]=null,t[6]=null}(i[1],i);const h=a[19];null!==h&&h.detachView(a[1]),i[3]=null,i[4]=null,i[2]&=-65}return i}function qs(e,t){if(!(128&t[2])){const n=t[11];n.destroyNode&&Dl(e,t,n,3,null,null),function Jr(e){let t=e[13];if(!t)return bs(e[1],e);for(;t;){let n=null;if(Yn(t))n=t[13];else{const i=t[10];i&&(n=i)}if(!n){for(;t&&!t[4]&&t!==e;)Yn(t)&&bs(t[1],t),t=t[3];null===t&&(t=e),Yn(t)&&bs(t[1],t),n=t&&t[4]}t=n}}(t)}}function bs(e,t){if(!(128&t[2])){t[2]&=-65,t[2]|=128,function Xs(e,t){let n;if(null!=e&&null!=(n=e.destroyHooks))for(let i=0;i=0?i[r=h]():i[r=-h].unsubscribe(),a+=2}else{const h=i[r=n[a+1]];n[a].call(h)}if(null!==i){for(let a=r+1;a-1){const{encapsulation:a}=e.data[i.directiveStart+r];if(a===J.None||a===J.Emulated)return null}return ci(i,n)}}(e,t.parent,n)}function Nt(e,t,n,i,r){e.insertBefore(t,n,i,r)}function Gt(e,t,n){e.appendChild(t,n)}function cn(e,t,n,i,r){null!==i?Nt(e,t,n,i,r):Gt(e,t,n)}function Fi(e,t){return e.parentNode(t)}function Un(e,t,n){return dc(e,t,n)}let uc,_d,hc,dc=function Cl(e,t,n){return 40&e.type?ci(e,n):null};function Ki(e,t,n,i){const r=xl(e,i,t),a=t[11],m=Un(i.parent||t[6],i,t);if(null!=r)if(Array.isArray(n))for(let x=0;xe,createScript:e=>e,createScriptURL:e=>e})}catch{}return uc}())||void 0===t?void 0:t.createHTML(e))||e}function jg(e){_d=e}function vd(){if(void 0===hc&&(hc=null,F.trustedTypes))try{hc=F.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return hc}function hh(e){var t;return(null===(t=vd())||void 0===t?void 0:t.createHTML(e))||e}function ph(e){var t;return(null===(t=vd())||void 0===t?void 0:t.createScriptURL(e))||e}class ga{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${_t})`}}class zg extends ga{getTypeName(){return"HTML"}}class $g extends ga{getTypeName(){return"Style"}}class Gg extends ga{getTypeName(){return"Script"}}class Wg extends ga{getTypeName(){return"URL"}}class Yg extends ga{getTypeName(){return"ResourceURL"}}function xs(e){return e instanceof ga?e.changingThisBreaksApplicationSecurity:e}function Ba(e,t){const n=function Kg(e){return e instanceof ga&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${_t})`)}return n===t}function Zg(e){return new zg(e)}function qg(e){return new $g(e)}function Xg(e){return new Gg(e)}function Qg(e){return new Wg(e)}function Jg(e){return new Yg(e)}class e_{constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=""+t;try{const n=(new window.DOMParser).parseFromString(ma(t),"text/html").body;return null===n?this.inertDocumentHelper.getInertBodyElement(t):(n.removeChild(n.firstChild),n)}catch{return null}}}class t_{constructor(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),null==this.inertDocument.body){const n=this.inertDocument.createElement("html");this.inertDocument.appendChild(n);const i=this.inertDocument.createElement("body");n.appendChild(i)}}getInertBodyElement(t){const n=this.inertDocument.createElement("template");if("content"in n)return n.innerHTML=ma(t),n;const i=this.inertDocument.createElement("body");return i.innerHTML=ma(t),this.defaultDoc.documentMode&&this.stripCustomNsAttrs(i),i}stripCustomNsAttrs(t){const n=t.attributes;for(let r=n.length-1;0"),!0}endElement(t){const n=t.nodeName.toLowerCase();bd.hasOwnProperty(n)&&!gh.hasOwnProperty(n)&&(this.buf.push(""))}chars(t){this.buf.push(yh(t))}checkClobberedElement(t,n){if(n&&(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`);return n}}const s_=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,a_=/([^\#-~ |!])/g;function yh(e){return e.replace(/&/g,"&").replace(s_,function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"}).replace(a_,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(//g,">")}let pc;function xh(e,t){let n=null;try{pc=pc||function mh(e){const t=new t_(e);return function n_(){try{return!!(new window.DOMParser).parseFromString(ma(""),"text/html")}catch{return!1}}()?new e_(t):t}(e);let i=t?String(t):"";n=pc.getInertBodyElement(i);let r=5,a=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=a,a=n.innerHTML,n=pc.getInertBodyElement(i)}while(i!==a);return ma((new r_).sanitizeChildren(xd(n)||n))}finally{if(n){const i=xd(n)||n;for(;i.firstChild;)i.removeChild(i.firstChild)}}}function xd(e){return"content"in e&&function l_(e){return e.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===e.nodeName}(e)?e.content:null}var pi=(()=>((pi=pi||{})[pi.NONE=0]="NONE",pi[pi.HTML=1]="HTML",pi[pi.STYLE=2]="STYLE",pi[pi.SCRIPT=3]="SCRIPT",pi[pi.URL=4]="URL",pi[pi.RESOURCE_URL=5]="RESOURCE_URL",pi))();function Ch(e){const t=Ml();return t?hh(t.sanitize(pi.HTML,e)||""):Ba(e,"HTML")?hh(xs(e)):xh(function uh(){return void 0!==_d?_d:typeof document<"u"?document:void 0}(),j(e))}function Cd(e){const t=Ml();return t?t.sanitize(pi.URL,e)||"":Ba(e,"URL")?xs(e):fc(j(e))}function Dh(e){const t=Ml();if(t)return ph(t.sanitize(pi.RESOURCE_URL,e)||"");if(Ba(e,"ResourceURL"))return ph(xs(e));throw new ne(904,!1)}function Eh(e,t,n){return function f_(e,t){return"src"===t&&("embed"===e||"frame"===e||"iframe"===e||"media"===e||"script"===e)||"href"===t&&("base"===e||"link"===e)?Dh:Cd}(t,n)(e)}function Ml(){const e=ce();return e&&e[12]}const Dd=new In("ENVIRONMENT_INITIALIZER"),Mh=new In("INJECTOR",-1),wh=new In("INJECTOR_DEF_TYPES");class Ah{get(t,n=rt){if(n===rt){const i=new Error(`NullInjectorError: No provider for ${se(t)}!`);throw i.name="NullInjectorError",i}return n}}function p_(e){return{\u0275providers:e}}function m_(...e){return{\u0275providers:Th(0,e),\u0275fromNgModule:!0}}function Th(e,...t){const n=[],i=new Set;let r;return p(t,a=>{const h=a;Ed(h,n,[],i)&&(r||(r=[]),r.push(h))}),void 0!==r&&Sh(r,n),n}function Sh(e,t){for(let n=0;n{t.push(a)})}}function Ed(e,t,n,i){if(!(e=Be(e)))return!1;let r=null,a=tt(e);const h=!a&&dn(e);if(a||h){if(h&&!h.standalone)return!1;r=e}else{const x=e.ngModule;if(a=tt(x),!a)return!1;r=x}const m=i.has(r);if(h){if(m)return!1;if(i.add(r),h.dependencies){const x="function"==typeof h.dependencies?h.dependencies():h.dependencies;for(const O of x)Ed(O,t,n,i)}}else{if(!a)return!1;{if(null!=a.imports&&!m){let O;i.add(r);try{p(a.imports,B=>{Ed(B,t,n,i)&&(O||(O=[]),O.push(B))})}finally{}void 0!==O&&Sh(O,t)}if(!m){const O=Ii(r)||(()=>new r);t.push({provide:r,useFactory:O,deps:Ge},{provide:wh,useValue:r,multi:!0},{provide:Dd,useValue:()=>T(r),multi:!0})}const x=a.providers;null==x||m||Md(x,B=>{t.push(B)})}}return r!==e&&void 0!==e.providers}function Md(e,t){for(let n of e)Je(n)&&(n=n.\u0275providers),Array.isArray(n)?Md(n,t):t(n)}const g_=Z({provide:String,useValue:Z});function wd(e){return null!==e&&"object"==typeof e&&g_ in e}function _a(e){return"function"==typeof e}const Ad=new In("Set Injector scope."),mc={},v_={};let Td;function gc(){return void 0===Td&&(Td=new Ah),Td}class va{}class kh extends va{get destroyed(){return this._destroyed}constructor(t,n,i,r){super(),this.parent=n,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Od(t,h=>this.processProvider(h)),this.records.set(Mh,Va(void 0,this)),r.has("environment")&&this.records.set(va,Va(void 0,this));const a=this.records.get(Ad);null!=a&&"string"==typeof a.value&&this.scopes.add(a.value),this.injectorDefTypes=new Set(this.get(wh.multi,Ge,Ce.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const t of this._ngOnDestroyHooks)t.ngOnDestroy();for(const t of this._onDestroyHooks)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(t){this._onDestroyHooks.push(t)}runInContext(t){this.assertNotDestroyed();const n=I(this),i=et(void 0);try{return t()}finally{I(n),et(i)}}get(t,n=rt,i=Ce.Default){this.assertNotDestroyed(),i=He(i);const r=I(this),a=et(void 0);try{if(!(i&Ce.SkipSelf)){let m=this.records.get(t);if(void 0===m){const x=function D_(e){return"function"==typeof e||"object"==typeof e&&e instanceof In}(t)&&Ht(t);m=x&&this.injectableDefInScope(x)?Va(Sd(t),mc):null,this.records.set(t,m)}if(null!=m)return this.hydrate(t,m)}return(i&Ce.Self?gc():this.parent).get(t,n=i&Ce.Optional&&n===rt?null:n)}catch(h){if("NullInjectorError"===h.name){if((h[Vt]=h[Vt]||[]).unshift(se(t)),r)throw h;return function on(e,t,n,i){const r=e[Vt];throw t[Ze]&&r.unshift(t[Ze]),e.message=function Jn(e,t,n,i=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let r=se(t);if(Array.isArray(t))r=t.map(se).join(" -> ");else if("object"==typeof t){let a=[];for(let h in t)if(t.hasOwnProperty(h)){let m=t[h];a.push(h+":"+("string"==typeof m?JSON.stringify(m):se(m)))}r=`{${a.join(", ")}}`}return`${n}${i?"("+i+")":""}[${r}]: ${e.replace(mn,"\n ")}`}("\n"+e.message,r,n,i),e.ngTokenPath=r,e[Vt]=null,e}(h,t,"R3InjectorError",this.source)}throw h}finally{et(a),I(r)}}resolveInjectorInitializers(){const t=I(this),n=et(void 0);try{const i=this.get(Dd.multi,Ge,Ce.Self);for(const r of i)r()}finally{I(t),et(n)}}toString(){const t=[],n=this.records;for(const i of n.keys())t.push(se(i));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new ne(205,!1)}processProvider(t){let n=_a(t=Be(t))?t:Be(t&&t.provide);const i=function y_(e){return wd(e)?Va(void 0,e.useValue):Va(Ph(e),mc)}(t);if(_a(t)||!0!==t.multi)this.records.get(n);else{let r=this.records.get(n);r||(r=Va(void 0,mc,!0),r.factory=()=>gt(r.multi),this.records.set(n,r)),n=t,r.multi.push(t)}this.records.set(n,i)}hydrate(t,n){return n.value===mc&&(n.value=v_,n.value=n.factory()),"object"==typeof n.value&&n.value&&function C_(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}injectableDefInScope(t){if(!t.providedIn)return!1;const n=Be(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}}function Sd(e){const t=Ht(e),n=null!==t?t.factory:Ii(e);if(null!==n)return n;if(e instanceof In)throw new ne(204,!1);if(e instanceof Function)return function b_(e){const t=e.length;if(t>0)throw w(t,"?"),new ne(204,!1);const n=function G(e){const t=e&&(e[ue]||e[K]);if(t){const n=function Re(e){if(e.hasOwnProperty("name"))return e.name;const t=(""+e).match(/^function\s*([^\s(]+)/);return null===t?"":t[1]}(e);return console.warn(`DEPRECATED: DI is instantiating a token "${n}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${n}" class.`),t}return null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new ne(204,!1)}function Ph(e,t,n){let i;if(_a(e)){const r=Be(e);return Ii(r)||Sd(r)}if(wd(e))i=()=>Be(e.useValue);else if(function Ih(e){return!(!e||!e.useFactory)}(e))i=()=>e.useFactory(...gt(e.deps||[]));else if(function Oh(e){return!(!e||!e.useExisting)}(e))i=()=>T(Be(e.useExisting));else{const r=Be(e&&(e.useClass||e.provide));if(!function x_(e){return!!e.deps}(e))return Ii(r)||Sd(r);i=()=>new r(...gt(e.deps))}return i}function Va(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Od(e,t){for(const n of e)Array.isArray(n)?Od(n,t):n&&Je(n)?Od(n.\u0275providers,t):t(n)}class E_{}class Rh{}class w_{resolveComponentFactory(t){throw function M_(e){const t=Error(`No component factory found for ${se(e)}. Did you add it to @NgModule.entryComponents?`);return t.ngComponent=e,t}(t)}}let wl=(()=>{class e{}return e.NULL=new w_,e})();function A_(){return Ua(Sn(),ce())}function Ua(e,t){return new Al(ci(e,t))}let Al=(()=>{class e{constructor(n){this.nativeElement=n}}return e.__NG_ELEMENT_ID__=A_,e})();function T_(e){return e instanceof Al?e.nativeElement:e}class Lh{}let S_=(()=>{class e{}return e.__NG_ELEMENT_ID__=()=>function O_(){const e=ce(),n=gi(Sn().index,e);return(Yn(n)?n:e)[11]}(),e})(),I_=(()=>{class e{}return e.\u0275prov=tn({token:e,providedIn:"root",factory:()=>null}),e})();class Nh{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const k_=new Nh("15.1.0"),Id={};function Pd(e){return e.ngOriginalError}class Tl{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Pd(t);for(;n&&Pd(n);)n=Pd(n);return n||null}}function Bh(e){return e.ownerDocument}function Ds(e){return e instanceof Function?e():e}function Uh(e,t,n){let i=e.length;for(;;){const r=e.indexOf(t,n);if(-1===r)return r;if(0===r||e.charCodeAt(r-1)<=32){const a=t.length;if(r+a===i||e.charCodeAt(r+a)<=32)return r}n=r+1}}const Hh="ng-template";function j_(e,t,n){let i=0;for(;ia?"":r[X+1].toLowerCase();const Ue=8&i?Te:null;if(Ue&&-1!==Uh(Ue,O,0)||2&i&&O!==Te){if(Tr(i))return!1;h=!0}}}}else{if(!h&&!Tr(i)&&!Tr(x))return!1;if(h&&Tr(x))continue;h=!1,i=x|1&i}}return Tr(i)||h}function Tr(e){return 0==(1&e)}function G_(e,t,n,i){if(null===t)return-1;let r=0;if(i||!n){let a=!1;for(;r-1)for(n++;n0?'="'+m+'"':"")+"]"}else 8&i?r+="."+h:4&i&&(r+=" "+h);else""!==r&&!Tr(h)&&(t+=$h(a,r),r=""),i=h,a=a||!Tr(i);n++}return""!==r&&(t+=$h(a,r)),t}const rn={};function Gh(e){Wh(dt(),ce(),ui()+e,!1)}function Wh(e,t,n,i){if(!i)if(3==(3&t[2])){const a=e.preOrderCheckHooks;null!==a&&Qe(t,a,n)}else{const a=e.preOrderHooks;null!==a&&wt(t,a,0,n)}mr(n)}function qh(e,t=null,n=null,i){const r=Xh(e,t,n,i);return r.resolveInjectorInitializers(),r}function Xh(e,t=null,n=null,i,r=new Set){const a=[n||Ge,m_(e)];return i=i||("object"==typeof e?void 0:se(e)),new kh(a,t||gc(),i||null,r)}let ba=(()=>{class e{static create(n,i){if(Array.isArray(n))return qh({name:""},i,n,"");{var r;const a=null!==(r=n.name)&&void 0!==r?r:"";return qh({name:a},n.parent,n.providers,a)}}}return e.THROW_IF_NOT_FOUND=rt,e.NULL=new Ah,e.\u0275prov=tn({token:e,providedIn:"any",factory:()=>T(Mh)}),e.__NG_ELEMENT_ID__=-1,e})();function za(e,t=Ce.Default){const n=ce();return null===n?T(e,t):Zr(Sn(),n,Be(e),t)}function sf(){throw new Error("invalid")}function af(e,t){const n=e.contentQueries;if(null!==n)for(let i=0;i22&&Wh(e,t,22,!1),n(i,r)}finally{mr(a)}}function Ud(e,t,n){if(mi(t)){const r=t.directiveEnd;for(let a=t.directiveStart;a0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(h)!=m&&h.push(m),h.push(n,i,a)}}(e,t,i,Sl(e,n,r.hostVars,rn),r)}function ns(e,t,n,i,r,a){const h=ci(e,t);!function Wd(e,t,n,i,r,a,h){if(null==a)e.removeAttribute(t,r,n);else{const m=null==h?j(a):h(a,i||"",r);e.setAttribute(t,r,m,n)}}(t[11],h,a,e.value,n,i,r)}function Lv(e,t,n,i,r,a){const h=a[t];if(null!==h){const m=i.setInput;for(let x=0;x0&&Yd(n)}}function Yd(e){for(let i=Dt(e);null!==i;i=Bt(i))for(let r=10;r0&&Yd(a)}const n=e[1].components;if(null!==n)for(let i=0;i0&&Yd(r)}}function Hv(e,t){const n=gi(t,e),i=n[1];(function jv(e,t){for(let n=t.length;n-1&&(_o(t,i),_(n,i))}this._attachedToViewContainer=!1}qs(this._lView[1],this._lView)}onDestroy(t){df(this._lView[1],this._lView,null,t)}markForCheck(){Kd(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-65}reattach(){this._lView[2]|=64}detectChanges(){xc(this._lView[1],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new ne(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function vs(e,t){Dl(e,t,t[11],2,null,null)}(this._lView[1],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new ne(902,!1);this._appRef=t}}class zv extends Ol{constructor(t){super(t),this._view=t}detectChanges(){const t=this._view;xc(t[1],t,t[8],!1)}checkNoChanges(){}get context(){return null}}class xf extends wl{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const n=dn(t);return new Il(n,this.ngModule)}}function Cf(e){const t=[];for(let n in e)e.hasOwnProperty(n)&&t.push({propName:e[n],templateName:n});return t}class Gv{constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,i){i=He(i);const r=this.injector.get(t,Id,i);return r!==Id||n===Id?r:this.parentInjector.get(t,n,i)}}class Il extends Rh{get inputs(){return Cf(this.componentDef.inputs)}get outputs(){return Cf(this.componentDef.outputs)}constructor(t,n){super(),this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=function X_(e){return e.map(q_).join(",")}(t.selectors),this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!n}create(t,n,i,r){var a;let h=(r=r||this.ngModule)instanceof va?r:null===(a=r)||void 0===a?void 0:a.injector;h&&null!==this.componentDef.getStandaloneInjector&&(h=this.componentDef.getStandaloneInjector(h)||h);const m=h?new Gv(t,h):t,x=m.get(Lh,null);if(null===x)throw new ne(407,!1);const O=m.get(I_,null),B=x.createRenderer(null,this.componentDef),X=this.componentDef.selectors[0][0]||"div",Te=i?function xv(e,t,n){return e.selectRootElement(t,n===J.ShadowDom)}(B,i,this.componentDef.encapsulation):fi(B,X,function $v(e){const t=e.toLowerCase();return"svg"===t?"svg":"math"===t?"math":null}(X)),Ue=this.componentDef.onPush?288:272,nt=zd(0,null,null,1,0,null,null,null,null,null),ht=vc(null,nt,null,Ue,null,null,x,B,O,m,null);let Mt,Pt;Xo(ht);try{const Ut=this.componentDef;let ct,en=null;Ut.findHostDirectiveDefs?(ct=[],en=new Map,Ut.findHostDirectiveDefs(Ut,ct,en),ct.push(Ut)):ct=[Ut];const Ln=function Yv(e,t){const n=e[1];return e[22]=t,$a(n,22,2,"#host",null)}(ht,Te),Qn=function Kv(e,t,n,i,r,a,h,m){const x=r[1];!function Zv(e,t,n,i){for(const r of e)t.mergedAttrs=To(t.mergedAttrs,r.hostAttrs);null!==t.mergedAttrs&&(Cc(t,t.mergedAttrs,!0),null!==n&&dh(i,n,t))}(i,e,t,h);const O=a.createRenderer(t,n),B=vc(r,cf(n),null,n.onPush?32:16,r[e.index],e,a,O,m||null,null,null);return x.firstCreatePass&&Gd(x,e,i.length-1),yc(r,B),r[e.index]=B}(Ln,Te,Ut,ct,ht,x,B);Pt=as(nt,22),Te&&function Xv(e,t,n,i){if(i)ki(e,n,["ng-version",k_.full]);else{const{attrs:r,classes:a}=function Q_(e){const t=[],n=[];let i=1,r=2;for(;i0&&ch(e,n,a.join(" "))}}(B,Ut,Te,i),void 0!==n&&function Qv(e,t,n){const i=e.projection=[];for(let r=0;r=0;i--){const r=e[i];r.hostVars=t+=r.hostVars,r.hostAttrs=To(r.hostAttrs,n=To(n,r.hostAttrs))}}(i)}function Qd(e){return e===Ne?{}:e===Ge?[]:e}function tb(e,t){const n=e.viewQuery;e.viewQuery=n?(i,r)=>{t(i,r),n(i,r)}:t}function nb(e,t){const n=e.contentQueries;e.contentQueries=n?(i,r,a)=>{t(i,r,a),n(i,r,a)}:t}function ib(e,t){const n=e.hostBindings;e.hostBindings=n?(i,r)=>{t(i,r),n(i,r)}:t}let Ec=null;function ya(){if(!Ec){const e=F.Symbol;if(e&&e.iterator)Ec=e.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let n=0;nh(bn(en[i.index])):i.index;let ct=null;if(!h&&m&&(ct=function _b(e,t,n,i){const r=e.cleanup;if(null!=r)for(let a=0;ax?m[x]:null}"string"==typeof h&&(a+=2)}return null}(e,t,r,i.index)),null!==ct)(ct.__ngLastListenerFn__||ct).__ngNextListenerFn__=a,ct.__ngLastListenerFn__=a,Te=!1;else{a=Gf(i,t,B,a,!1);const en=n.listen(Mt,r,a);X.push(a,en),O&&O.push(r,Ut,Pt,Pt+1)}}else a=Gf(i,t,B,a,!1);const Ue=i.outputs;let nt;if(Te&&null!==Ue&&(nt=Ue[r])){const ht=nt.length;if(ht)for(let Mt=0;Mt-1?gi(e.index,t):t);let x=$f(t,0,i,h),O=a.__ngNextListenerFn__;for(;O;)x=$f(t,0,O,h)&&x,O=O.__ngNextListenerFn__;return r&&!1===x&&(h.preventDefault(),h.returnValue=!1),x}}function Wf(e=1){return function wa(e){return(zt.lFrame.contextLView=function Ls(e,t){for(;e>0;)t=t[15],e--;return t}(e,zt.lFrame.contextLView))[8]}(e)}function vb(e,t){let n=null;const i=function W_(e){const t=e.attrs;if(null!=t){const n=t.indexOf(5);if(!(1&n))return t[n+1]}return null}(e);for(let r=0;r>17&32767}function lu(e){return 2|e}function Ca(e){return(131068&e)>>2}function cu(e,t){return-131069&e|t<<2}function du(e){return 1|e}function ip(e,t,n,i,r){const a=e[n+1],h=null===t;let m=i?Qs(a):Ca(a),x=!1;for(;0!==m&&(!1===x||h);){const B=e[m+1];Eb(e[m],t)&&(x=!0,e[m+1]=i?du(B):lu(B)),m=i?Qs(B):Ca(B)}x&&(e[n+1]=i?lu(a):du(a))}function Eb(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&Et(e,t)>=0}const Ai={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function op(e){return e.substring(Ai.key,Ai.keyEnd)}function rp(e,t){const n=Ai.textEnd;return n===t?-1:(t=Ai.keyEnd=function Tb(e,t,n){for(;t32;)t++;return t}(e,Ai.key=t,n),el(e,t,n))}function el(e,t,n){for(;t=0;n=rp(t,n))ft(e,op(t),!0)}function Sr(e,t,n,i){const r=ce(),a=dt(),h=Vn(2);a.firstUpdatePass&&hp(a,e,h,i),t!==rn&&so(r,h,t)&&pp(a,a.data[ui()],r,r[11],e,r[h+1]=function Bb(e,t){return null==e||("string"==typeof t?e+=t:"object"==typeof e&&(e=se(xs(e)))),e}(t,n),i,h)}function Or(e,t,n,i){const r=dt(),a=Vn(2);r.firstUpdatePass&&hp(r,null,a,i);const h=ce();if(n!==rn&&so(h,a,n)){const m=r.data[ui()];if(gp(m,i)&&!up(r,a)){let x=i?m.classesWithoutHost:m.stylesWithoutHost;null!==x&&(n=Ee(x,n||"")),nu(r,m,h,n,i)}else!function Nb(e,t,n,i,r,a,h,m){r===rn&&(r=Ge);let x=0,O=0,B=0=e.expandoStartIndex}function hp(e,t,n,i){const r=e.data;if(null===r[n+1]){const a=r[ui()],h=up(e,n);gp(a,i)&&null===t&&!h&&(t=!1),t=function kb(e,t,n,i){const r=function Hr(e){const t=zt.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}(e);let a=i?t.residualClasses:t.residualStyles;if(null===r)0===(i?t.classBindings:t.styleBindings)&&(n=Rl(n=fu(null,e,t,n,i),t.attrs,i),a=null);else{const h=t.directiveStylingLast;if(-1===h||e[h]!==r)if(n=fu(r,e,t,n,i),null===a){let x=function Pb(e,t,n){const i=n?t.classBindings:t.styleBindings;if(0!==Ca(i))return e[Qs(i)]}(e,t,i);void 0!==x&&Array.isArray(x)&&(x=fu(null,e,t,x[1],i),x=Rl(x,t.attrs,i),function Rb(e,t,n,i){e[Qs(n?t.classBindings:t.styleBindings)]=i}(e,t,i,x))}else a=function Fb(e,t,n){let i;const r=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0)&&(O=!0)):B=n,r)if(0!==x){const Te=Qs(e[m+1]);e[i+1]=Oc(Te,m),0!==Te&&(e[Te+1]=cu(e[Te+1],i)),e[m+1]=function yb(e,t){return 131071&e|t<<17}(e[m+1],i)}else e[i+1]=Oc(m,0),0!==m&&(e[m+1]=cu(e[m+1],i)),m=i;else e[i+1]=Oc(x,0),0===m?m=i:e[x+1]=cu(e[x+1],i),x=i;O&&(e[i+1]=lu(e[i+1])),ip(e,B,i,!0),ip(e,B,i,!1),function Db(e,t,n,i,r){const a=r?e.residualClasses:e.residualStyles;null!=a&&"string"==typeof t&&Et(a,t)>=0&&(n[i+1]=du(n[i+1]))}(t,B,e,i,a),h=Oc(m,x),a?t.classBindings=h:t.styleBindings=h}(r,a,t,n,h,i)}}function fu(e,t,n,i,r){let a=null;const h=n.directiveEnd;let m=n.directiveStylingLast;for(-1===m?m=n.directiveStart:m++;m0;){const x=e[r],O=Array.isArray(x),B=O?x[1]:x,X=null===B;let Te=n[r+1];Te===rn&&(Te=X?Ge:void 0);let Ue=X?Ot(Te,i):B===i?Te:void 0;if(O&&!Ic(Ue)&&(Ue=Ot(x,i)),Ic(Ue)&&(m=Ue,h))return m;const nt=e[r+1];r=h?Qs(nt):Ca(nt)}if(null!==t){let x=a?t.residualClasses:t.residualStyles;null!=x&&(m=Ot(x,i))}return m}function Ic(e){return void 0!==e}function gp(e,t){return 0!=(e.flags&(t?8:16))}function _p(e,t=""){const n=ce(),i=dt(),r=e+22,a=i.firstCreatePass?$a(i,r,1,t,null):i.data[r],h=n[r]=function Xt(e,t){return e.createText(t)}(n[11],t);Ki(i,n,h,a),_i(a,!1)}function pu(e){return kc("",e,""),pu}function kc(e,t,n){const i=ce(),r=Wa(i,e,t,n);return r!==rn&&Es(i,ui(),r),kc}function mu(e,t,n,i,r){const a=ce(),h=function Ya(e,t,n,i,r,a){const m=xa(e,no(),n,r);return Vn(2),m?t+j(n)+i+j(r)+a:rn}(a,e,t,n,i,r);return h!==rn&&Es(a,ui(),h),mu}function gu(e,t,n,i,r,a,h){const m=ce(),x=function Ka(e,t,n,i,r,a,h,m){const O=Mc(e,no(),n,r,h);return Vn(3),O?t+j(n)+i+j(r)+a+j(h)+m:rn}(m,e,t,n,i,r,a,h);return x!==rn&&Es(m,ui(),x),gu}function Ep(e,t,n){Or(ft,rs,Wa(ce(),e,t,n),!0)}function _u(e,t,n){const i=ce();return so(i,io(),t)&&Ho(dt(),On(),i,e,t,i[11],n,!0),_u}const Da=void 0;var iy=["en",[["a","p"],["AM","PM"],Da],[["AM","PM"],Da,Da],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Da,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Da,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Da,"{1} 'at' {0}",Da],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function ny(e){const n=Math.floor(Math.abs(e)),i=e.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===i?1:5}];let tl={};function vu(e){const t=function oy(e){return e.toLowerCase().replace(/_/g,"-")}(e);let n=Lp(t);if(n)return n;const i=t.split("-")[0];if(n=Lp(i),n)return n;if("en"===i)return iy;throw new ne(701,!1)}function Fp(e){return vu(e)[Kt.PluralCase]}function Lp(e){return e in tl||(tl[e]=F.ng&&F.ng.common&&F.ng.common.locales&&F.ng.common.locales[e]),tl[e]}var Kt=(()=>((Kt=Kt||{})[Kt.LocaleId=0]="LocaleId",Kt[Kt.DayPeriodsFormat=1]="DayPeriodsFormat",Kt[Kt.DayPeriodsStandalone=2]="DayPeriodsStandalone",Kt[Kt.DaysFormat=3]="DaysFormat",Kt[Kt.DaysStandalone=4]="DaysStandalone",Kt[Kt.MonthsFormat=5]="MonthsFormat",Kt[Kt.MonthsStandalone=6]="MonthsStandalone",Kt[Kt.Eras=7]="Eras",Kt[Kt.FirstDayOfWeek=8]="FirstDayOfWeek",Kt[Kt.WeekendRange=9]="WeekendRange",Kt[Kt.DateFormat=10]="DateFormat",Kt[Kt.TimeFormat=11]="TimeFormat",Kt[Kt.DateTimeFormat=12]="DateTimeFormat",Kt[Kt.NumberSymbols=13]="NumberSymbols",Kt[Kt.NumberFormats=14]="NumberFormats",Kt[Kt.CurrencyCode=15]="CurrencyCode",Kt[Kt.CurrencySymbol=16]="CurrencySymbol",Kt[Kt.CurrencyName=17]="CurrencyName",Kt[Kt.Currencies=18]="Currencies",Kt[Kt.Directionality=19]="Directionality",Kt[Kt.PluralCase=20]="PluralCase",Kt[Kt.ExtraData=21]="ExtraData",Kt))();const nl="en-US";let Np=nl;function xu(e,t,n,i,r){if(e=Be(e),Array.isArray(e))for(let a=0;a>20;if(_a(e)||!e.multi){const Ue=new Mn(x,r,za),nt=Du(m,t,r?B:B+Te,X);-1===nt?(Kr(Vs(O,h),a,m),Cu(a,e,t.length),t.push(m),O.directiveStart++,O.directiveEnd++,r&&(O.providerIndexes+=1048576),n.push(Ue),h.push(Ue)):(n[nt]=Ue,h[nt]=Ue)}else{const Ue=Du(m,t,B+Te,X),nt=Du(m,t,B,B+Te),Mt=nt>=0&&n[nt];if(r&&!Mt||!r&&!(Ue>=0&&n[Ue])){Kr(Vs(O,h),a,m);const Pt=function t0(e,t,n,i,r){const a=new Mn(e,n,za);return a.multi=[],a.index=t,a.componentProviders=0,lm(a,r,i&&!n),a}(r?e0:Jy,n.length,r,i,x);!r&&Mt&&(n[nt].providerFactory=Pt),Cu(a,e,t.length,0),t.push(m),O.directiveStart++,O.directiveEnd++,r&&(O.providerIndexes+=1048576),n.push(Pt),h.push(Pt)}else Cu(a,e,Ue>-1?Ue:nt,lm(n[r?nt:Ue],x,!r&&i));!r&&i&&Mt&&n[nt].componentProviders++}}}function Cu(e,t,n,i){const r=_a(t),a=function __(e){return!!e.useClass}(t);if(r||a){const x=(a?Be(t.useClass):t).prototype.ngOnDestroy;if(x){const O=e.destroyHooks||(e.destroyHooks=[]);if(!r&&t.multi){const B=O.indexOf(n);-1===B?O.push(n,[i,x]):O[B+1].push(i,x)}else O.push(n,x)}}}function lm(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function Du(e,t,n,i){for(let r=n;r{n.providersResolver=(i,r)=>function Qy(e,t,n){const i=dt();if(i.firstCreatePass){const r=Di(e);xu(n,i.data,i.blueprint,r,!0),xu(t,i.data,i.blueprint,r,!1)}}(i,r?r(e):e,t)}}class il{}class dm{}function n0(e,t){return new um(e,null!=t?t:null)}class um extends il{constructor(t,n){super(),this._parent=n,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new xf(this);const i=Bn(t);this._bootstrapComponents=Ds(i.bootstrap),this._r3Injector=Xh(t,n,[{provide:il,useValue:this},{provide:wl,useValue:this.componentFactoryResolver}],se(t),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(t)}get injector(){return this._r3Injector}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class Mu extends dm{constructor(t){super(),this.moduleType=t}create(t){return new um(this.moduleType,t)}}class o0 extends il{constructor(t,n,i){super(),this.componentFactoryResolver=new xf(this),this.instance=null;const r=new kh([...t,{provide:il,useValue:this},{provide:wl,useValue:this.componentFactoryResolver}],n||gc(),i,new Set(["environment"]));this.injector=r,r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}function wu(e,t,n=null){return new o0(e,t,n).injector}let r0=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n.id)){const i=Th(0,n.type),r=i.length>0?wu([i],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n.id,r)}return this.cachedInjectors.get(n.id)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}}return e.\u0275prov=tn({token:e,providedIn:"environment",factory:()=>new e(T(va))}),e})();function hm(e){e.getStandaloneInjector=t=>t.get(r0).getOrCreateStandaloneInjector(e)}function bm(e,t,n,i,r,a){return function Cm(e,t,n,i,r,a,h,m){const x=t+n;return Mc(e,x,r,a,h)?is(e,x+3,m?i.call(m,r,a,h):i(r,a,h)):Ul(e,x+3)}(ce(),ni(),e,t,n,i,r,a)}function Ul(e,t){const n=e[t];return n===rn?void 0:n}function Mm(e,t){const n=dt();let i;const r=e+22;n.firstCreatePass?(i=function D0(e,t){if(t)for(let n=t.length-1;n>=0;n--){const i=t[n];if(e===i.name)return i}}(t,n.pipeRegistry),n.data[r]=i,i.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(r,i.onDestroy)):i=n.data[r];const a=i.factory||(i.factory=Ii(i.type)),h=et(za);try{const m=Ns(!1),x=a();return Ns(m),function pb(e,t,n,i){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=i}(n,ce(),r,x),x}finally{et(h)}}function wm(e,t,n){const i=e+22,r=ce(),a=Ji(r,i);return function Hl(e,t){return e[1].data[t].pure}(r,i)?function ym(e,t,n,i,r,a){const h=t+n;return so(e,h,r)?is(e,h+1,a?i.call(a,r):i(r)):Ul(e,h+1)}(r,ni(),t,a.transform,n,a):a.transform(n)}function Tu(e){return t=>{setTimeout(e,void 0,t)}}const ss=class T0 extends c.x{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,n,i){let r=t,a=n||(()=>null),h=i;if(t&&"object"==typeof t){var m,x,O;const X=t;r=null===(m=X.next)||void 0===m?void 0:m.bind(X),a=null===(x=X.error)||void 0===x?void 0:x.bind(X),h=null===(O=X.complete)||void 0===O?void 0:O.bind(X)}this.__isAsync&&(a=Tu(a),r&&(r=Tu(r)),h&&(h=Tu(h)));const B=super.subscribe({next:r,error:a,complete:h});return t instanceof o.w0&&t.add(B),B}};function S0(){return this._results[ya()]()}class Nc{get changes(){return this._changes||(this._changes=new ss)}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const n=ya(),i=Nc.prototype;i[n]||(i[n]=S0)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){const i=this;i.dirty=!1;const r=function f(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function pl(e,t,n){if(e.length!==t.length)return!1;for(let i=0;i{class e{}return e.__NG_ELEMENT_ID__=k0,e})();const O0=jl,I0=class extends O0{constructor(t,n,i){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=i}createEmbeddedView(t,n){const i=this._declarationTContainer.tViews,r=vc(this._declarationLView,i,t,16,null,i.declTNode,null,null,null,null,n||null);r[17]=this._declarationLView[this._declarationTContainer.index];const h=this._declarationLView[19];return null!==h&&(r[19]=h.createEmbeddedView(i)),Vd(i,r,t),new Ol(r)}};function k0(){return Bc(Sn(),ce())}function Bc(e,t){return 4&e.type?new I0(t,e,Ua(e,t)):null}let Vc=(()=>{class e{}return e.__NG_ELEMENT_ID__=P0,e})();function P0(){return Sm(Sn(),ce())}const R0=Vc,Am=class extends R0{constructor(t,n,i){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=i}get element(){return Ua(this._hostTNode,this._hostLView)}get injector(){return new vr(this._hostTNode,this._hostLView)}get parentInjector(){const t=Ei(this._hostTNode,this._hostLView);if(_r(t)){const n=Yr(t,this._hostLView),i=Qo(t);return new vr(n[1].data[i+8],n)}return new vr(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=Tm(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-10}createEmbeddedView(t,n,i){let r,a;"number"==typeof i?r=i:null!=i&&(r=i.index,a=i.injector);const h=t.createEmbeddedView(n||{},a);return this.insert(h,r),h}createComponent(t,n,i,r,a){const h=t&&!function Er(e){return"function"==typeof e}(t);let m;if(h)m=n;else{const X=n||{};m=X.index,i=X.injector,r=X.projectableNodes,a=X.environmentInjector||X.ngModuleRef}const x=h?t:new Il(dn(t)),O=i||this.parentInjector;if(!a&&null==x.ngModule){const Te=(h?O:this.parentInjector).get(va,null);Te&&(a=Te)}const B=x.create(O,r,void 0,a);return this.insert(B.hostView,m),B}insert(t,n){const i=t._lView,r=i[1];if(function pr(e){return Pn(e[3])}(i)){const B=this.indexOf(t);if(-1!==B)this.detach(B);else{const X=i[3],Te=new Am(X,X[6],X[3]);Te.detach(Te.indexOf(t))}}const a=this._adjustIndex(n),h=this._lContainer;!function ro(e,t,n,i){const r=10+i,a=n.length;i>0&&(n[r-1][4]=t),i0)i.push(h[m/2]);else{const O=a[m+1],B=t[-x];for(let X=10;X{class e{constructor(n){this.appInits=n,this.resolve=Hc,this.reject=Hc,this.initialized=!1,this.done=!1,this.donePromise=new Promise((i,r)=>{this.resolve=i,this.reject=r})}runInitializers(){if(this.initialized)return;const n=[],i=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let r=0;r{a.subscribe({complete:m,error:x})});n.push(h)}}Promise.all(n).then(()=>{i()}).catch(r=>{this.reject(r)}),0===n.length&&i(),this.initialized=!0}}return e.\u0275fac=function(n){return new(n||e)(T(og,8))},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const rg=new In("AppId",{providedIn:"root",factory:function sg(){return`${Vu()}${Vu()}${Vu()}`}});function Vu(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const ag=new In("Platform Initializer"),sx=new In("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),lg=new In("appBootstrapListener"),ax=new In("AnimationModuleType");let lx=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();const zc=new In("LocaleId",{providedIn:"root",factory:()=>Y(zc,Ce.Optional|Ce.SkipSelf)||function cx(){return typeof $localize<"u"&&$localize.locale||nl}()}),dx=new In("DefaultCurrencyCode",{providedIn:"root",factory:()=>"USD"});class ux{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}let hx=(()=>{class e{compileModuleSync(n){return new Mu(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){const i=this.compileModuleSync(n),a=Ds(Bn(n).declarations).reduce((h,m)=>{const x=dn(m);return x&&h.push(new Il(x)),h},[]);return new ux(i,a)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const mx=(()=>Promise.resolve(0))();function Uu(e){typeof Zone>"u"?mx.then(()=>{e&&e.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",e)}class ir{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ss(!1),this.onMicrotaskEmpty=new ss(!1),this.onStable=new ss(!1),this.onError=new ss(!1),typeof Zone>"u")throw new ne(908,!1);Zone.assertZonePatched();const r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&n,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function gx(){let e=F.requestAnimationFrame,t=F.cancelAnimationFrame;if(typeof Zone<"u"&&e&&t){const n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);const i=t[Zone.__symbol__("OriginalDelegate")];i&&(t=i)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:t}}().nativeRequestAnimationFrame,function bx(e){const t=()=>{!function vx(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(F,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,ju(e),e.isCheckStableRunning=!0,Hu(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),ju(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,i,r,a,h,m)=>{try{return ug(e),n.invokeTask(r,a,h,m)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===a.type||e.shouldCoalesceRunChangeDetection)&&t(),hg(e)}},onInvoke:(n,i,r,a,h,m,x)=>{try{return ug(e),n.invoke(r,a,h,m,x)}finally{e.shouldCoalesceRunChangeDetection&&t(),hg(e)}},onHasTask:(n,i,r,a)=>{n.hasTask(r,a),i===r&&("microTask"==a.change?(e._hasPendingMicrotasks=a.microTask,ju(e),Hu(e)):"macroTask"==a.change&&(e.hasPendingMacrotasks=a.macroTask))},onHandleError:(n,i,r,a)=>(n.handleError(r,a),e.runOutsideAngular(()=>e.onError.emit(a)),!1)})}(r)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!ir.isInAngularZone())throw new ne(909,!1)}static assertNotInAngularZone(){if(ir.isInAngularZone())throw new ne(909,!1)}run(t,n,i){return this._inner.run(t,n,i)}runTask(t,n,i,r){const a=this._inner,h=a.scheduleEventTask("NgZoneEvent: "+r,t,_x,Hc,Hc);try{return a.runTask(h,n,i)}finally{a.cancelTask(h)}}runGuarded(t,n,i){return this._inner.runGuarded(t,n,i)}runOutsideAngular(t){return this._outer.run(t)}}const _x={};function Hu(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function ju(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function ug(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function hg(e){e._nesting--,Hu(e)}class yx{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ss,this.onMicrotaskEmpty=new ss,this.onStable=new ss,this.onError=new ss}run(t,n,i){return t.apply(n,i)}runGuarded(t,n,i){return t.apply(n,i)}runOutsideAngular(t){return t()}runTask(t,n,i,r){return t.apply(n,i)}}const fg=new In(""),pg=new In("");let zu,xx=(()=>{class e{constructor(n,i,r){this._ngZone=n,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,zu||(function Cx(e){zu=e}(r),r.addToWindow(i)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{ir.assertNotInAngularZone(),Uu(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Uu(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb(this._didWork)}this._didWork=!1});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(n)||(clearTimeout(i.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,i,r){let a=-1;i&&i>0&&(a=setTimeout(()=>{this._callbacks=this._callbacks.filter(h=>h.timeoutId!==a),n(this._didWork,this.getPendingTasks())},i)),this._callbacks.push({doneCb:n,timeoutId:a,updateCb:r})}whenStable(n,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,i,r){return[]}}return e.\u0275fac=function(n){return new(n||e)(T(ir),T(mg),T(pg))},e.\u0275prov=tn({token:e,factory:e.\u0275fac}),e})(),mg=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,i){this._applications.set(n,i)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,i=!0){var r,a;return null!==(r=null===(a=zu)||void 0===a?void 0:a.findTestabilityInTree(this,n,i))&&void 0!==r?r:null}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})(),Js=null;const gg=new In("AllowMultipleToken"),$u=new In("PlatformDestroyListeners");class Mx{constructor(t,n){this.name=t,this.token=n}}function vg(e,t,n=[]){const i=`Platform: ${t}`,r=new In(i);return(a=[])=>{let h=Gu();if(!h||h.injector.get(gg,!1)){const m=[...n,...a,{provide:r,useValue:!0}];e?e(m):function wx(e){if(Js&&!Js.get(gg,!1))throw new ne(400,!1);Js=e;const t=e.get(yg);(function _g(e){const t=e.get(ag,null);t&&t.forEach(n=>n())})(e)}(function bg(e=[],t){return ba.create({name:t,providers:[{provide:Ad,useValue:"platform"},{provide:$u,useValue:new Set([()=>Js=null])},...e]})}(m,i))}return function Tx(e){const t=Gu();if(!t)throw new ne(401,!1);return t}()}}function Gu(){var e,t;return null!==(e=null===(t=Js)||void 0===t?void 0:t.get(yg))&&void 0!==e?e:null}let yg=(()=>{class e{constructor(n){this._injector=n,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(n,i){const r=function Cg(e,t){let n;return n="noop"===e?new yx:("zone.js"===e?void 0:e)||new ir(t),n}(null==i?void 0:i.ngZone,function xg(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!e||!e.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!e||!e.ngZoneRunCoalescing)||!1}}(i)),a=[{provide:ir,useValue:r}];return r.run(()=>{const h=ba.create({providers:a,parent:this.injector,name:n.moduleType.name}),m=n.create(h),x=m.injector.get(Tl,null);if(!x)throw new ne(402,!1);return r.runOutsideAngular(()=>{const O=r.onError.subscribe({next:B=>{x.handleError(B)}});m.onDestroy(()=>{Gc(this._modules,m),O.unsubscribe()})}),function Dg(e,t,n){try{const i=n();return ou(i)?i.catch(r=>{throw t.runOutsideAngular(()=>e.handleError(r)),r}):i}catch(i){throw t.runOutsideAngular(()=>e.handleError(i)),i}}(x,r,()=>{const O=m.injector.get(jc);return O.runInitializers(),O.donePromise.then(()=>(function Bp(e){Lt(e,"Expected localeId to be defined"),"string"==typeof e&&(Np=e.toLowerCase().replace(/_/g,"-"))}(m.injector.get(zc,nl)||nl),this._moduleDoBootstrap(m),m))})})}bootstrapModule(n,i=[]){const r=Eg({},i);return function Dx(e,t,n){const i=new Mu(n);return Promise.resolve(i)}(0,0,n).then(a=>this.bootstrapModuleFactory(a,r))}_moduleDoBootstrap(n){const i=n.injector.get($c);if(n._bootstrapComponents.length>0)n._bootstrapComponents.forEach(r=>i.bootstrap(r));else{if(!n.instance.ngDoBootstrap)throw new ne(-403,!1);n.instance.ngDoBootstrap(i)}this._modules.push(n)}onDestroy(n){this._destroyListeners.push(n)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new ne(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const n=this._injector.get($u,null);n&&(n.forEach(i=>i()),n.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return e.\u0275fac=function(n){return new(n||e)(T(ba))},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();function Eg(e,t){return Array.isArray(t)?t.reduce(Eg,e):{...e,...t}}let $c=(()=>{class e{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(n,i,r){this._zone=n,this._injector=i,this._exceptionHandler=r,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const a=new M.y(m=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{m.next(this._stable),m.complete()})}),h=new M.y(m=>{let x;this._zone.runOutsideAngular(()=>{x=this._zone.onStable.subscribe(()=>{ir.assertNotInAngularZone(),Uu(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,m.next(!0))})})});const O=this._zone.onUnstable.subscribe(()=>{ir.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{m.next(!1)}))});return()=>{x.unsubscribe(),O.unsubscribe()}});this.isStable=(0,re.T)(a,h.pipe(function Se(e={}){const{connector:t=(()=>new c.x),resetOnError:n=!0,resetOnComplete:i=!0,resetOnRefCountZero:r=!0}=e;return a=>{let h,m,x,O=0,B=!1,X=!1;const Te=()=>{null==m||m.unsubscribe(),m=void 0},Ue=()=>{Te(),h=x=void 0,B=X=!1},nt=()=>{const ht=h;Ue(),null==ht||ht.unsubscribe()};return(0,fe.e)((ht,Mt)=>{O++,!X&&!B&&Te();const Pt=x=null!=x?x:t();Mt.add(()=>{O--,0===O&&!X&&!B&&(m=ie(nt,r))}),Pt.subscribe(Mt),!h&&O>0&&(h=new H.Hp({next:Ut=>Pt.next(Ut),error:Ut=>{X=!0,Te(),m=ie(Ue,n,Ut),Pt.error(Ut)},complete:()=>{B=!0,Te(),m=ie(Ue,i),Pt.complete()}}),(0,Q.Xf)(ht).subscribe(h))})(a)}}()))}bootstrap(n,i){const r=n instanceof Rh;if(!this._injector.get(jc).done)throw!r&&ai(n),new ne(405,false);let h;h=r?n:this._injector.get(wl).resolveComponentFactory(n),this.componentTypes.push(h.componentType);const m=function Ex(e){return e.isBoundToModule}(h)?void 0:this._injector.get(il),O=h.create(ba.NULL,[],i||h.selector,m),B=O.location.nativeElement,X=O.injector.get(fg,null);return null==X||X.registerApplication(B),O.onDestroy(()=>{this.detachView(O.hostView),Gc(this.components,O),null==X||X.unregisterApplication(B)}),this._loadComponent(O),O}tick(){if(this._runningTick)throw new ne(101,!1);try{this._runningTick=!0;for(let n of this._views)n.detectChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1}}attachView(n){const i=n;this._views.push(i),i.attachToAppRef(this)}detachView(n){const i=n;Gc(this._views,i),i.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const i=this._injector.get(lg,[]);i.push(...this._bootstrapListeners),i.forEach(r=>r(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Gc(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new ne(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return e.\u0275fac=function(n){return new(n||e)(T(ir),T(va),T(Tl))},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function Gc(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function Ox(){}let Ix=(()=>{class e{}return e.__NG_ELEMENT_ID__=kx,e})();function kx(e){return function Px(e,t,n){if(uo(e)&&!n){const i=gi(e.index,t);return new Ol(i,i)}return 47&e.type?new Ol(t[16],t):null}(Sn(),ce(),16==(16&e))}class Sg{constructor(){}supports(t){return kl(t)}create(t){return new Vx(t)}}const Bx=(e,t)=>t;class Vx{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||Bx}forEachItem(t){let n;for(n=this._itHead;null!==n;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,i=this._removalsHead,r=0,a=null;for(;n||i;){const h=!i||n&&n.currentIndex{h=this._trackByFn(r,m),null!==n&&Object.is(n.trackById,h)?(i&&(n=this._verifyReinsertion(n,m,h,r)),Object.is(n.item,m)||this._addIdentityChange(n,m)):(n=this._mismatch(n,m,h,r),i=!0),n=n._next,r++}),this.length=r;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,i,r){let a;return null===t?a=this._itTail:(a=t._prev,this._remove(t)),null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,a,r)):null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,a,r)):t=this._addAfter(new Ux(n,i),a,r),t}_verifyReinsertion(t,n,i,r){let a=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==a?t=this._reinsertAfter(a,t._prev,r):t.currentIndex!=r&&(t.currentIndex=r,this._addToMoves(t,r)),t}_truncate(t){for(;null!==t;){const n=t._next;this._addToRemovals(this._unlink(t)),t=n}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const r=t._prevRemoved,a=t._nextRemoved;return null===r?this._removalsHead=a:r._nextRemoved=a,null===a?this._removalsTail=r:a._prevRemoved=r,this._insertAfter(t,n,i),this._addToMoves(t,i),t}_moveAfter(t,n,i){return this._unlink(t),this._insertAfter(t,n,i),this._addToMoves(t,i),t}_addAfter(t,n,i){return this._insertAfter(t,n,i),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,n,i){const r=null===n?this._itHead:n._next;return t._next=r,t._prev=n,null===r?this._itTail=t:r._prev=t,null===n?this._itHead=t:n._next=t,null===this._linkedRecords&&(this._linkedRecords=new Og),this._linkedRecords.put(t),t.currentIndex=i,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const n=t._prev,i=t._next;return null===n?this._itHead=i:n._next=i,null===i?this._itTail=n:i._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new Og),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class Ux{constructor(t,n){this.item=t,this.trackById=n,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class Hx{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===n||n<=i.currentIndex)&&Object.is(i.trackById,t))return i;return null}remove(t){const n=t._prevDup,i=t._nextDup;return null===n?this._head=i:n._nextDup=i,null===i?this._tail=n:i._prevDup=n,null===this._head}}class Og{constructor(){this.map=new Map}put(t){const n=t.trackById;let i=this.map.get(n);i||(i=new Hx,this.map.set(n,i)),i.add(t)}get(t,n){const r=this.map.get(t);return r?r.get(t,n):null}remove(t){const n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function Ig(e,t,n){const i=e.previousIndex;if(null===i)return i;let r=0;return n&&i{if(n&&n.key===r)this._maybeAddToChanges(n,i),this._appendAfter=n,n=n._next;else{const a=this._getOrCreateRecordForKey(r,i);n=this._insertBeforeOrAppend(n,a)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(let i=n;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,n){if(t){const i=t._prev;return n._next=t,n._prev=i,t._prev=n,i&&(i._next=n),t===this._mapHead&&(this._mapHead=n),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=n,n._prev=this._appendAfter):this._mapHead=n,this._appendAfter=n,null}_getOrCreateRecordForKey(t,n){if(this._records.has(t)){const r=this._records.get(t);this._maybeAddToChanges(r,n);const a=r._prev,h=r._next;return a&&(a._next=h),h&&(h._prev=a),r._next=null,r._prev=null,r}const i=new zx(t);return this._records.set(t,i),i.currentValue=n,this._addToAdditions(i),i}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,n){Object.is(n,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=n,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,n){t instanceof Map?t.forEach(n):Object.keys(t).forEach(i=>n(t[i],i))}}class zx{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function Pg(){return new qu([new Sg])}let qu=(()=>{class e{constructor(n){this.factories=n}static create(n,i){if(null!=i){const r=i.factories.slice();n=n.concat(r)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||Pg()),deps:[[e,new gs,new ha]]}}find(n){const i=this.factories.find(r=>r.supports(n));if(null!=i)return i;throw new ne(901,!1)}}return e.\u0275prov=tn({token:e,providedIn:"root",factory:Pg}),e})();function Rg(){return new Xu([new kg])}let Xu=(()=>{class e{constructor(n){this.factories=n}static create(n,i){if(i){const r=i.factories.slice();n=n.concat(r)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||Rg()),deps:[[e,new gs,new ha]]}}find(n){const i=this.factories.find(r=>r.supports(n));if(i)return i;throw new ne(901,!1)}}return e.\u0275prov=tn({token:e,providedIn:"root",factory:Rg}),e})();const Wx=vg(null,"core",[]);let Yx=(()=>{class e{constructor(n){}}return e.\u0275fac=function(n){return new(n||e)(T($c))},e.\u0275mod=Zi({type:e}),e.\u0275inj=Ct({}),e})();function Kx(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}},433:(ze,me,b)=>{b.d(me,{Zs:()=>ur,Fj:()=>ne,sg:()=>Wo,u5:()=>Fn,Cf:()=>ee,JU:()=>Ie,a5:()=>R,JJ:()=>Ke,JL:()=>it,F:()=>Ci,On:()=>yo,kI:()=>de,_Y:()=>xo});var c=b(1571),o=b(6895),M=b(2076),re=b(9751),Q=b(4742),H=b(8421),fe=b(3269),Se=b(5403),ie=b(3268),Z=b(1810),se=b(4004);let Ee=(()=>{class S{constructor(C,U){this._renderer=C,this._elementRef=U,this.onChange=ce=>{},this.onTouched=()=>{}}setProperty(C,U){this._renderer.setProperty(this._elementRef.nativeElement,C,U)}registerOnTouched(C){this.onTouched=C}registerOnChange(C){this.onChange=C}setDisabledState(C){this.setProperty("disabled",C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(c.Qsj),c.Y36(c.SBq))},S.\u0275dir=c.lG2({type:S}),S})(),we=(()=>{class S extends Ee{}return S.\u0275fac=function(){let E;return function(U){return(E||(E=c.n5z(S)))(U||S)}}(),S.\u0275dir=c.lG2({type:S,features:[c.qOj]}),S})();const Ie=new c.OlP("NgValueAccessor"),Je={provide:Ie,useExisting:(0,c.Gpc)(()=>ne),multi:!0},_t=new c.OlP("CompositionEventMode");let ne=(()=>{class S extends Ee{constructor(C,U,ce){super(C,U),this._compositionMode=ce,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function pt(){const S=(0,o.q)()?(0,o.q)().getUserAgent():"";return/android (\d+)/.test(S.toLowerCase())}())}writeValue(C){this.setProperty("value",null==C?"":C)}_handleInput(C){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(C)}_compositionStart(){this._composing=!0}_compositionEnd(C){this._composing=!1,this._compositionMode&&this.onChange(C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(c.Qsj),c.Y36(c.SBq),c.Y36(_t,8))},S.\u0275dir=c.lG2({type:S,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(C,U){1&C&&c.NdJ("input",function(dt){return U._handleInput(dt.target.value)})("blur",function(){return U.onTouched()})("compositionstart",function(){return U._compositionStart()})("compositionend",function(dt){return U._compositionEnd(dt.target.value)})},features:[c._Bn([Je]),c.qOj]}),S})();function j(S){return null==S||("string"==typeof S||Array.isArray(S))&&0===S.length}function $(S){return null!=S&&"number"==typeof S.length}const ee=new c.OlP("NgValidators"),ae=new c.OlP("NgAsyncValidators"),Pe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class de{static min(E){return function be(S){return E=>{if(j(E.value)||j(S))return null;const C=parseFloat(E.value);return!isNaN(C)&&C{if(j(E.value)||j(S))return null;const C=parseFloat(E.value);return!isNaN(C)&&C>S?{max:{max:S,actual:E.value}}:null}}(E)}static required(E){return ke(E)}static requiredTrue(E){return Xe(E)}static email(E){return function $e(S){return j(S.value)||Pe.test(S.value)?null:{email:!0}}(E)}static minLength(E){return function bt(S){return E=>j(E.value)||!$(E.value)?null:E.value.length$(E.value)&&E.value.length>S?{maxlength:{requiredLength:S,actualLength:E.value.length}}:null}(E)}static pattern(E){return function ot(S){if(!S)return st;let E,C;return"string"==typeof S?(C="","^"!==S.charAt(0)&&(C+="^"),C+=S,"$"!==S.charAt(S.length-1)&&(C+="$"),E=new RegExp(C)):(C=S.toString(),E=S),U=>{if(j(U.value))return null;const ce=U.value;return E.test(ce)?null:{pattern:{requiredPattern:C,actualValue:ce}}}}(E)}static nullValidator(E){return null}static compose(E){return hn(E)}static composeAsync(E){return yn(E)}}function ke(S){return j(S.value)?{required:!0}:null}function Xe(S){return!0===S.value?null:{required:!0}}function st(S){return null}function mt(S){return null!=S}function ut(S){return(0,c.QGY)(S)?(0,M.D)(S):S}function lt(S){let E={};return S.forEach(C=>{E=null!=C?{...E,...C}:E}),0===Object.keys(E).length?null:E}function jt(S,E){return E.map(C=>C(S))}function yt(S){return S.map(E=>function Lt(S){return!S.validate}(E)?E:C=>E.validate(C))}function hn(S){if(!S)return null;const E=S.filter(mt);return 0==E.length?null:function(C){return lt(jt(C,E))}}function It(S){return null!=S?hn(yt(S)):null}function yn(S){if(!S)return null;const E=S.filter(mt);return 0==E.length?null:function(C){return function ye(...S){const E=(0,fe.jO)(S),{args:C,keys:U}=(0,Q.D)(S),ce=new re.y(dt=>{const{length:fn}=C;if(!fn)return void dt.complete();const di=new Array(fn);let Sn=fn,eo=fn;for(let to=0;to{_i||(_i=!0,eo--),di[to]=Lo},()=>Sn--,void 0,()=>{(!Sn||!_i)&&(eo||dt.next(U?(0,Z.n)(U,di):di),dt.complete())}))}});return E?ce.pipe((0,ie.Z)(E)):ce}(jt(C,E).map(ut)).pipe((0,se.U)(lt))}}function tn(S){return null!=S?yn(yt(S)):null}function xn(S,E){return null===S?[E]:Array.isArray(S)?[...S,E]:[S,E]}function Ct(S){return S._rawValidators}function Ht(S){return S._rawAsyncValidators}function oe(S){return S?Array.isArray(S)?S:[S]:[]}function ve(S,E){return Array.isArray(S)?S.includes(E):S===E}function G(S,E){const C=oe(E);return oe(S).forEach(ce=>{ve(C,ce)||C.push(ce)}),C}function Re(S,E){return oe(E).filter(C=>!ve(S,C))}class tt{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(E){this._rawValidators=E||[],this._composedValidatorFn=It(this._rawValidators)}_setAsyncValidators(E){this._rawAsyncValidators=E||[],this._composedAsyncValidatorFn=tn(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(E){this._onDestroyCallbacks.push(E)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(E=>E()),this._onDestroyCallbacks=[]}reset(E){this.control&&this.control.reset(E)}hasError(E,C){return!!this.control&&this.control.hasError(E,C)}getError(E,C){return this.control?this.control.getError(E,C):null}}class ue extends tt{get formDirective(){return null}get path(){return null}}class R extends tt{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class K{constructor(E){this._cd=E}get isTouched(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.touched)}get isUntouched(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.untouched)}get isPristine(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.pristine)}get isDirty(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.dirty)}get isValid(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.valid)}get isInvalid(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.invalid)}get isPending(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.pending)}get isSubmitted(){var E;return!(null===(E=this._cd)||void 0===E||!E.submitted)}}let Ke=(()=>{class S extends K{constructor(C){super(C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(R,2))},S.\u0275dir=c.lG2({type:S,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(C,U){2&C&&c.ekj("ng-untouched",U.isUntouched)("ng-touched",U.isTouched)("ng-pristine",U.isPristine)("ng-dirty",U.isDirty)("ng-valid",U.isValid)("ng-invalid",U.isInvalid)("ng-pending",U.isPending)},features:[c.qOj]}),S})(),it=(()=>{class S extends K{constructor(C){super(C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ue,10))},S.\u0275dir=c.lG2({type:S,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(C,U){2&C&&c.ekj("ng-untouched",U.isUntouched)("ng-touched",U.isTouched)("ng-pristine",U.isPristine)("ng-dirty",U.isDirty)("ng-valid",U.isValid)("ng-invalid",U.isInvalid)("ng-pending",U.isPending)("ng-submitted",U.isSubmitted)},features:[c.qOj]}),S})();const z="VALID",Y="INVALID",He="PENDING",gt="DISABLED";function Ft(S){return(ln(S)?S.validators:S)||null}function on(S,E){return(ln(E)?E.asyncValidators:S)||null}function ln(S){return null!=S&&!Array.isArray(S)&&"object"==typeof S}class xe{constructor(E,C){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(E),this._assignAsyncValidators(C)}get validator(){return this._composedValidatorFn}set validator(E){this._rawValidators=this._composedValidatorFn=E}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(E){this._rawAsyncValidators=this._composedAsyncValidatorFn=E}get parent(){return this._parent}get valid(){return this.status===z}get invalid(){return this.status===Y}get pending(){return this.status==He}get disabled(){return this.status===gt}get enabled(){return this.status!==gt}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(E){this._assignValidators(E)}setAsyncValidators(E){this._assignAsyncValidators(E)}addValidators(E){this.setValidators(G(E,this._rawValidators))}addAsyncValidators(E){this.setAsyncValidators(G(E,this._rawAsyncValidators))}removeValidators(E){this.setValidators(Re(E,this._rawValidators))}removeAsyncValidators(E){this.setAsyncValidators(Re(E,this._rawAsyncValidators))}hasValidator(E){return ve(this._rawValidators,E)}hasAsyncValidator(E){return ve(this._rawAsyncValidators,E)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(E={}){this.touched=!0,this._parent&&!E.onlySelf&&this._parent.markAsTouched(E)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(E=>E.markAllAsTouched())}markAsUntouched(E={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(C=>{C.markAsUntouched({onlySelf:!0})}),this._parent&&!E.onlySelf&&this._parent._updateTouched(E)}markAsDirty(E={}){this.pristine=!1,this._parent&&!E.onlySelf&&this._parent.markAsDirty(E)}markAsPristine(E={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(C=>{C.markAsPristine({onlySelf:!0})}),this._parent&&!E.onlySelf&&this._parent._updatePristine(E)}markAsPending(E={}){this.status=He,!1!==E.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!E.onlySelf&&this._parent.markAsPending(E)}disable(E={}){const C=this._parentMarkedDirty(E.onlySelf);this.status=gt,this.errors=null,this._forEachChild(U=>{U.disable({...E,onlySelf:!0})}),this._updateValue(),!1!==E.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...E,skipPristineCheck:C}),this._onDisabledChange.forEach(U=>U(!0))}enable(E={}){const C=this._parentMarkedDirty(E.onlySelf);this.status=z,this._forEachChild(U=>{U.enable({...E,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:E.emitEvent}),this._updateAncestors({...E,skipPristineCheck:C}),this._onDisabledChange.forEach(U=>U(!1))}_updateAncestors(E){this._parent&&!E.onlySelf&&(this._parent.updateValueAndValidity(E),E.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(E){this._parent=E}getRawValue(){return this.value}updateValueAndValidity(E={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===z||this.status===He)&&this._runAsyncValidator(E.emitEvent)),!1!==E.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!E.onlySelf&&this._parent.updateValueAndValidity(E)}_updateTreeValidity(E={emitEvent:!0}){this._forEachChild(C=>C._updateTreeValidity(E)),this.updateValueAndValidity({onlySelf:!0,emitEvent:E.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?gt:z}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(E){if(this.asyncValidator){this.status=He,this._hasOwnPendingAsyncValidator=!0;const C=ut(this.asyncValidator(this));this._asyncValidationSubscription=C.subscribe(U=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(U,{emitEvent:E})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(E,C={}){this.errors=E,this._updateControlsErrors(!1!==C.emitEvent)}get(E){let C=E;return null==C||(Array.isArray(C)||(C=C.split(".")),0===C.length)?null:C.reduce((U,ce)=>U&&U._find(ce),this)}getError(E,C){const U=C?this.get(C):this;return U&&U.errors?U.errors[E]:null}hasError(E,C){return!!this.getError(E,C)}get root(){let E=this;for(;E._parent;)E=E._parent;return E}_updateControlsErrors(E){this.status=this._calculateStatus(),E&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(E)}_initObservables(){this.valueChanges=new c.vpe,this.statusChanges=new c.vpe}_calculateStatus(){return this._allControlsDisabled()?gt:this.errors?Y:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(He)?He:this._anyControlsHaveStatus(Y)?Y:z}_anyControlsHaveStatus(E){return this._anyControls(C=>C.status===E)}_anyControlsDirty(){return this._anyControls(E=>E.dirty)}_anyControlsTouched(){return this._anyControls(E=>E.touched)}_updatePristine(E={}){this.pristine=!this._anyControlsDirty(),this._parent&&!E.onlySelf&&this._parent._updatePristine(E)}_updateTouched(E={}){this.touched=this._anyControlsTouched(),this._parent&&!E.onlySelf&&this._parent._updateTouched(E)}_registerOnCollectionChange(E){this._onCollectionChange=E}_setUpdateStrategy(E){ln(E)&&null!=E.updateOn&&(this._updateOn=E.updateOn)}_parentMarkedDirty(E){return!E&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(E){return null}_assignValidators(E){this._rawValidators=Array.isArray(E)?E.slice():E,this._composedValidatorFn=function kt(S){return Array.isArray(S)?It(S):S||null}(this._rawValidators)}_assignAsyncValidators(E){this._rawAsyncValidators=Array.isArray(E)?E.slice():E,this._composedAsyncValidatorFn=function Jn(S){return Array.isArray(S)?tn(S):S||null}(this._rawAsyncValidators)}}class J extends xe{constructor(E,C,U){super(Ft(C),on(U,C)),this.controls=E,this._initObservables(),this._setUpdateStrategy(C),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(E,C){return this.controls[E]?this.controls[E]:(this.controls[E]=C,C.setParent(this),C._registerOnCollectionChange(this._onCollectionChange),C)}addControl(E,C,U={}){this.registerControl(E,C),this.updateValueAndValidity({emitEvent:U.emitEvent}),this._onCollectionChange()}removeControl(E,C={}){this.controls[E]&&this.controls[E]._registerOnCollectionChange(()=>{}),delete this.controls[E],this.updateValueAndValidity({emitEvent:C.emitEvent}),this._onCollectionChange()}setControl(E,C,U={}){this.controls[E]&&this.controls[E]._registerOnCollectionChange(()=>{}),delete this.controls[E],C&&this.registerControl(E,C),this.updateValueAndValidity({emitEvent:U.emitEvent}),this._onCollectionChange()}contains(E){return this.controls.hasOwnProperty(E)&&this.controls[E].enabled}setValue(E,C={}){(function Oe(S,E,C){S._forEachChild((U,ce)=>{if(void 0===C[ce])throw new c.vHH(1002,"")})})(this,0,E),Object.keys(E).forEach(U=>{(function _n(S,E,C){const U=S.controls;if(!(E?Object.keys(U):U).length)throw new c.vHH(1e3,"");if(!U[C])throw new c.vHH(1001,"")})(this,!0,U),this.controls[U].setValue(E[U],{onlySelf:!0,emitEvent:C.emitEvent})}),this.updateValueAndValidity(C)}patchValue(E,C={}){null!=E&&(Object.keys(E).forEach(U=>{const ce=this.controls[U];ce&&ce.patchValue(E[U],{onlySelf:!0,emitEvent:C.emitEvent})}),this.updateValueAndValidity(C))}reset(E={},C={}){this._forEachChild((U,ce)=>{U.reset(E[ce],{onlySelf:!0,emitEvent:C.emitEvent})}),this._updatePristine(C),this._updateTouched(C),this.updateValueAndValidity(C)}getRawValue(){return this._reduceChildren({},(E,C,U)=>(E[U]=C.getRawValue(),E))}_syncPendingControls(){let E=this._reduceChildren(!1,(C,U)=>!!U._syncPendingControls()||C);return E&&this.updateValueAndValidity({onlySelf:!0}),E}_forEachChild(E){Object.keys(this.controls).forEach(C=>{const U=this.controls[C];U&&E(U,C)})}_setUpControls(){this._forEachChild(E=>{E.setParent(this),E._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(E){for(const[C,U]of Object.entries(this.controls))if(this.contains(C)&&E(U))return!0;return!1}_reduceValue(){return this._reduceChildren({},(C,U,ce)=>((U.enabled||this.disabled)&&(C[ce]=U.value),C))}_reduceChildren(E,C){let U=E;return this._forEachChild((ce,dt)=>{U=C(U,ce,dt)}),U}_allControlsDisabled(){for(const E of Object.keys(this.controls))if(this.controls[E].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(E){return this.controls.hasOwnProperty(E)?this.controls[E]:null}}const un=new c.OlP("CallSetDisabledState",{providedIn:"root",factory:()=>An}),An="always";function si(S,E,C=An){var U,ce;Ni(S,E),E.valueAccessor.writeValue(S.value),(S.disabled||"always"===C)&&(null===(U=(ce=E.valueAccessor).setDisabledState)||void 0===U||U.call(ce,S.disabled)),function Zi(S,E){E.valueAccessor.registerOnChange(C=>{S._pendingValue=C,S._pendingChange=!0,S._pendingDirty=!0,"change"===S.updateOn&&bo(S,E)})}(S,E),function Bi(S,E){const C=(U,ce)=>{E.valueAccessor.writeValue(U),ce&&E.viewToModelUpdate(U)};S.registerOnChange(C),E._registerOnDestroy(()=>{S._unregisterOnChange(C)})}(S,E),function jo(S,E){E.valueAccessor.registerOnTouched(()=>{S._pendingTouched=!0,"blur"===S.updateOn&&S._pendingChange&&bo(S,E),"submit"!==S.updateOn&&S.markAsTouched()})}(S,E),function ao(S,E){if(E.valueAccessor.setDisabledState){const C=U=>{E.valueAccessor.setDisabledState(U)};S.registerOnDisabledChange(C),E._registerOnDestroy(()=>{S._unregisterOnDisabledChange(C)})}}(S,E)}function Li(S,E,C=!0){const U=()=>{};E.valueAccessor&&(E.valueAccessor.registerOnChange(U),E.valueAccessor.registerOnTouched(U)),xi(S,E),S&&(E._invokeOnDestroyCallbacks(),S._registerOnCollectionChange(()=>{}))}function Ti(S,E){S.forEach(C=>{C.registerOnValidatorChange&&C.registerOnValidatorChange(E)})}function Ni(S,E){const C=Ct(S);null!==E.validator?S.setValidators(xn(C,E.validator)):"function"==typeof C&&S.setValidators([C]);const U=Ht(S);null!==E.asyncValidator?S.setAsyncValidators(xn(U,E.asyncValidator)):"function"==typeof U&&S.setAsyncValidators([U]);const ce=()=>S.updateValueAndValidity();Ti(E._rawValidators,ce),Ti(E._rawAsyncValidators,ce)}function xi(S,E){let C=!1;if(null!==S){if(null!==E.validator){const ce=Ct(S);if(Array.isArray(ce)&&ce.length>0){const dt=ce.filter(fn=>fn!==E.validator);dt.length!==ce.length&&(C=!0,S.setValidators(dt))}}if(null!==E.asyncValidator){const ce=Ht(S);if(Array.isArray(ce)&&ce.length>0){const dt=ce.filter(fn=>fn!==E.asyncValidator);dt.length!==ce.length&&(C=!0,S.setAsyncValidators(dt))}}}const U=()=>{};return Ti(E._rawValidators,U),Ti(E._rawAsyncValidators,U),C}function bo(S,E){S._pendingDirty&&S.markAsDirty(),S.setValue(S._pendingValue,{emitModelToViewChange:!1}),E.viewToModelUpdate(S._pendingValue),S._pendingChange=!1}function or(S,E){Ni(S,E)}function Dn(S,E){S._syncPendingControls(),E.forEach(C=>{const U=C.control;"submit"===U.updateOn&&U._pendingChange&&(C.viewToModelUpdate(U._pendingValue),U._pendingChange=!1)})}const Si={provide:ue,useExisting:(0,c.Gpc)(()=>Ci)},sn=(()=>Promise.resolve())();let Ci=(()=>{class S extends ue{constructor(C,U,ce){super(),this.callSetDisabledState=ce,this.submitted=!1,this._directives=new Set,this.ngSubmit=new c.vpe,this.form=new J({},It(C),tn(U))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(C){sn.then(()=>{const U=this._findContainer(C.path);C.control=U.registerControl(C.name,C.control),si(C.control,C,this.callSetDisabledState),C.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(C)})}getControl(C){return this.form.get(C.path)}removeControl(C){sn.then(()=>{const U=this._findContainer(C.path);U&&U.removeControl(C.name),this._directives.delete(C)})}addFormGroup(C){sn.then(()=>{const U=this._findContainer(C.path),ce=new J({});or(ce,C),U.registerControl(C.name,ce),ce.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(C){sn.then(()=>{const U=this._findContainer(C.path);U&&U.removeControl(C.name)})}getFormGroup(C){return this.form.get(C.path)}updateModel(C,U){sn.then(()=>{this.form.get(C.path).setValue(U)})}setValue(C){this.control.setValue(C)}onSubmit(C){var U;return this.submitted=!0,Dn(this.form,this._directives),this.ngSubmit.emit(C),"dialog"===(null==C||null===(U=C.target)||void 0===U?void 0:U.method)}onReset(){this.resetForm()}resetForm(C){this.form.reset(C),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(C){return C.pop(),C.length?this.form.get(C):this.form}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ee,10),c.Y36(ae,10),c.Y36(un,8))},S.\u0275dir=c.lG2({type:S,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(C,U){1&C&&c.NdJ("submit",function(dt){return U.onSubmit(dt)})("reset",function(){return U.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[c._Bn([Si]),c.qOj]}),S})();function lo(S,E){const C=S.indexOf(E);C>-1&&S.splice(C,1)}function Qt(S){return"object"==typeof S&&null!==S&&2===Object.keys(S).length&&"value"in S&&"disabled"in S}const Io=class extends xe{constructor(E=null,C,U){super(Ft(C),on(U,C)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(E),this._setUpdateStrategy(C),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),ln(C)&&(C.nonNullable||C.initialValueIsDefault)&&(this.defaultValue=Qt(E)?E.value:E)}setValue(E,C={}){this.value=this._pendingValue=E,this._onChange.length&&!1!==C.emitModelToViewChange&&this._onChange.forEach(U=>U(this.value,!1!==C.emitViewToModelChange)),this.updateValueAndValidity(C)}patchValue(E,C={}){this.setValue(E,C)}reset(E=this.defaultValue,C={}){this._applyFormState(E),this.markAsPristine(C),this.markAsUntouched(C),this.setValue(this.value,C),this._pendingChange=!1}_updateValue(){}_anyControls(E){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(E){this._onChange.push(E)}_unregisterOnChange(E){lo(this._onChange,E)}registerOnDisabledChange(E){this._onDisabledChange.push(E)}_unregisterOnDisabledChange(E){lo(this._onDisabledChange,E)}_forEachChild(E){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(E){Qt(E)?(this.value=this._pendingValue=E.value,E.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=E}},En={provide:R,useExisting:(0,c.Gpc)(()=>yo)},Pr=(()=>Promise.resolve())();let yo=(()=>{class S extends R{constructor(C,U,ce,dt,fn,di){super(),this._changeDetectorRef=fn,this.callSetDisabledState=di,this.control=new Io,this._registered=!1,this.update=new c.vpe,this._parent=C,this._setValidators(U),this._setAsyncValidators(ce),this.valueAccessor=function Tn(S,E){if(!E)return null;let C,U,ce;return Array.isArray(E),E.forEach(dt=>{dt.constructor===ne?C=dt:function Yt(S){return Object.getPrototypeOf(S.constructor)===we}(dt)?U=dt:ce=dt}),ce||U||C||null}(0,dt)}ngOnChanges(C){if(this._checkForErrors(),!this._registered||"name"in C){if(this._registered&&(this._checkName(),this.formDirective)){const U=C.name.previousValue;this.formDirective.removeControl({name:U,path:this._getPath(U)})}this._setUpControl()}"isDisabled"in C&&this._updateDisabled(C),function xt(S,E){if(!S.hasOwnProperty("model"))return!1;const C=S.model;return!!C.isFirstChange()||!Object.is(E,C.currentValue)}(C,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(C){this.viewModel=C,this.update.emit(C)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){si(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(C){Pr.then(()=>{var U;this.control.setValue(C,{emitViewToModelChange:!1}),null===(U=this._changeDetectorRef)||void 0===U||U.markForCheck()})}_updateDisabled(C){const U=C.isDisabled.currentValue,ce=0!==U&&(0,c.D6c)(U);Pr.then(()=>{var dt;ce&&!this.control.disabled?this.control.disable():!ce&&this.control.disabled&&this.control.enable(),null===(dt=this._changeDetectorRef)||void 0===dt||dt.markForCheck()})}_getPath(C){return this._parent?function jn(S,E){return[...E.path,S]}(C,this._parent):[C]}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ue,9),c.Y36(ee,10),c.Y36(ae,10),c.Y36(Ie,10),c.Y36(c.sBO,8),c.Y36(un,8))},S.\u0275dir=c.lG2({type:S,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[c._Bn([En]),c.qOj,c.TTD]}),S})(),xo=(()=>{class S{}return S.\u0275fac=function(C){return new(C||S)},S.\u0275dir=c.lG2({type:S,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]}),S})(),sr=(()=>{class S{}return S.\u0275fac=function(C){return new(C||S)},S.\u0275mod=c.oAB({type:S}),S.\u0275inj=c.cJS({}),S})();const ar={provide:ue,useExisting:(0,c.Gpc)(()=>Wo)};let Wo=(()=>{class S extends ue{constructor(C,U,ce){super(),this.callSetDisabledState=ce,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new c.vpe,this._setValidators(C),this._setAsyncValidators(U)}ngOnChanges(C){this._checkFormPresent(),C.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(xi(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(C){const U=this.form.get(C.path);return si(U,C,this.callSetDisabledState),U.updateValueAndValidity({emitEvent:!1}),this.directives.push(C),U}getControl(C){return this.form.get(C.path)}removeControl(C){Li(C.control||null,C,!1),function Gn(S,E){const C=S.indexOf(E);C>-1&&S.splice(C,1)}(this.directives,C)}addFormGroup(C){this._setUpFormContainer(C)}removeFormGroup(C){this._cleanUpFormContainer(C)}getFormGroup(C){return this.form.get(C.path)}addFormArray(C){this._setUpFormContainer(C)}removeFormArray(C){this._cleanUpFormContainer(C)}getFormArray(C){return this.form.get(C.path)}updateModel(C,U){this.form.get(C.path).setValue(U)}onSubmit(C){var U;return this.submitted=!0,Dn(this.form,this.directives),this.ngSubmit.emit(C),"dialog"===(null==C||null===(U=C.target)||void 0===U?void 0:U.method)}onReset(){this.resetForm()}resetForm(C){this.form.reset(C),this.submitted=!1}_updateDomValue(){this.directives.forEach(C=>{const U=C.control,ce=this.form.get(C.path);U!==ce&&(Li(U||null,C),(S=>S instanceof Io)(ce)&&(si(ce,C,this.callSetDisabledState),C.control=ce))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(C){const U=this.form.get(C.path);or(U,C),U.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(C){if(this.form){const U=this.form.get(C.path);U&&function dn(S,E){return xi(S,E)}(U,C)&&U.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){Ni(this.form,this),this._oldForm&&xi(this._oldForm,this)}_checkFormPresent(){}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ee,10),c.Y36(ae,10),c.Y36(un,8))},S.\u0275dir=c.lG2({type:S,selectors:[["","formGroup",""]],hostBindings:function(C,U){1&C&&c.NdJ("submit",function(dt){return U.onSubmit(dt)})("reset",function(){return U.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[c._Bn([ar]),c.qOj,c.TTD]}),S})(),Hi=(()=>{class S{constructor(){this._validator=st}ngOnChanges(C){if(this.inputName in C){const U=this.normalizeInput(C[this.inputName].currentValue);this._enabled=this.enabled(U),this._validator=this._enabled?this.createValidator(U):st,this._onChange&&this._onChange()}}validate(C){return this._validator(C)}registerOnValidatorChange(C){this._onChange=C}enabled(C){return null!=C}}return S.\u0275fac=function(C){return new(C||S)},S.\u0275dir=c.lG2({type:S,features:[c.TTD]}),S})();const Vr={provide:ee,useExisting:(0,c.Gpc)(()=>Qi),multi:!0},Ss={provide:ee,useExisting:(0,c.Gpc)(()=>ur),multi:!0};let Qi=(()=>{class S extends Hi{constructor(){super(...arguments),this.inputName="required",this.normalizeInput=c.D6c,this.createValidator=C=>ke}enabled(C){return C}}return S.\u0275fac=function(){let E;return function(U){return(E||(E=c.n5z(S)))(U||S)}}(),S.\u0275dir=c.lG2({type:S,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(C,U){2&C&&c.uIk("required",U._enabled?"":null)},inputs:{required:"required"},features:[c._Bn([Vr]),c.qOj]}),S})(),ur=(()=>{class S extends Qi{constructor(){super(...arguments),this.createValidator=C=>Xe}}return S.\u0275fac=function(){let E;return function(U){return(E||(E=c.n5z(S)))(U||S)}}(),S.\u0275dir=c.lG2({type:S,selectors:[["input","type","checkbox","required","","formControlName",""],["input","type","checkbox","required","","formControl",""],["input","type","checkbox","required","","ngModel",""]],hostVars:1,hostBindings:function(C,U){2&C&&c.uIk("required",U._enabled?"":null)},features:[c._Bn([Ss]),c.qOj]}),S})(),ls=(()=>{class S{}return S.\u0275fac=function(C){return new(C||S)},S.\u0275mod=c.oAB({type:S}),S.\u0275inj=c.cJS({imports:[sr]}),S})(),Fn=(()=>{class S{static withConfig(C){var U;return{ngModule:S,providers:[{provide:un,useValue:null!==(U=C.callSetDisabledState)&&void 0!==U?U:An}]}}}return S.\u0275fac=function(C){return new(C||S)},S.\u0275mod=c.oAB({type:S}),S.\u0275inj=c.cJS({imports:[ls]}),S})()},4859:(ze,me,b)=>{b.d(me,{RK:()=>bt,lW:()=>$,ot:()=>ot,zs:()=>ee});var c=b(3353),o=b(1571),M=b(2687),re=b(3238);const Q=["mat-button",""],H=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],fe=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],ie=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",Ee=["mat-icon-button",""],we=["*"],Je=[{selector:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{selector:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{selector:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{selector:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{selector:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{selector:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{selector:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],pt=(0,re.pj)((0,re.Id)((0,re.Kr)(class{constructor(st){this._elementRef=st}})));let _t=(()=>{class st extends pt{constructor(ut,lt,jt,Lt){super(ut),this._platform=lt,this._ngZone=jt,this._animationMode=Lt,this._focusMonitor=(0,o.f3M)(M.tE),this._isFab=!1;const yt=ut.nativeElement.classList;for(const hn of Je)this._hasHostAttributes(hn.selector)&&hn.mdcClasses.forEach(It=>{yt.add(It)})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}focus(ut="program",lt){ut?this._focusMonitor.focusVia(this._elementRef.nativeElement,ut,lt):this._elementRef.nativeElement.focus(lt)}_hasHostAttributes(...ut){return ut.some(lt=>this._elementRef.nativeElement.hasAttribute(lt))}_isRippleDisabled(){return this.disableRipple||this.disabled}}return st.\u0275fac=function(ut){o.$Z()},st.\u0275dir=o.lG2({type:st,viewQuery:function(ut,lt){if(1&ut&&o.Gf(re.wG,5),2&ut){let jt;o.iGM(jt=o.CRH())&&(lt.ripple=jt.first)}},features:[o.qOj]}),st})(),j=(()=>{class st extends _t{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt),this._haltDisabledEvents=yt=>{this.disabled&&(yt.preventDefault(),yt.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}}return st.\u0275fac=function(ut){o.$Z()},st.\u0275dir=o.lG2({type:st,features:[o.qOj]}),st})(),$=(()=>{class st extends _t{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt)}}return st.\u0275fac=function(ut){return new(ut||st)(o.Y36(o.SBq),o.Y36(c.t4),o.Y36(o.R0b),o.Y36(o.QbO,8))},st.\u0275cmp=o.Xpm({type:st,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:7,hostBindings:function(ut,lt){2&ut&&(o.uIk("disabled",lt.disabled||null),o.ekj("_mat-animation-noopable","NoopAnimations"===lt._animationMode)("mat-unthemed",!lt.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[o.qOj],attrs:Q,ngContentSelectors:fe,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(ut,lt){1&ut&&(o.F$t(H),o._UZ(0,"span",0),o.Hsn(1),o.TgZ(2,"span",1),o.Hsn(3,1),o.qZA(),o.Hsn(4,2),o._UZ(5,"span",2)(6,"span",3)(7,"span",4)),2&ut&&(o.ekj("mdc-button__ripple",!lt._isFab)("mdc-fab__ripple",lt._isFab),o.xp6(6),o.Q6J("matRippleDisabled",lt._isRippleDisabled())("matRippleTrigger",lt._elementRef.nativeElement))},dependencies:[re.wG],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),st})(),ee=(()=>{class st extends j{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt)}}return st.\u0275fac=function(ut){return new(ut||st)(o.Y36(o.SBq),o.Y36(c.t4),o.Y36(o.R0b),o.Y36(o.QbO,8))},st.\u0275cmp=o.Xpm({type:st,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:9,hostBindings:function(ut,lt){2&ut&&(o.uIk("disabled",lt.disabled||null)("tabindex",lt.disabled?-1:lt.tabIndex)("aria-disabled",lt.disabled.toString()),o.ekj("_mat-animation-noopable","NoopAnimations"===lt._animationMode)("mat-unthemed",!lt.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[o.qOj],attrs:Q,ngContentSelectors:fe,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(ut,lt){1&ut&&(o.F$t(H),o._UZ(0,"span",0),o.Hsn(1),o.TgZ(2,"span",1),o.Hsn(3,1),o.qZA(),o.Hsn(4,2),o._UZ(5,"span",2)(6,"span",3)(7,"span",4)),2&ut&&(o.ekj("mdc-button__ripple",!lt._isFab)("mdc-fab__ripple",lt._isFab),o.xp6(6),o.Q6J("matRippleDisabled",lt._isRippleDisabled())("matRippleTrigger",lt._elementRef.nativeElement))},dependencies:[re.wG],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',ie],encapsulation:2,changeDetection:0}),st})(),bt=(()=>{class st extends _t{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt)}}return st.\u0275fac=function(ut){return new(ut||st)(o.Y36(o.SBq),o.Y36(c.t4),o.Y36(o.R0b),o.Y36(o.QbO,8))},st.\u0275cmp=o.Xpm({type:st,selectors:[["button","mat-icon-button",""]],hostVars:7,hostBindings:function(ut,lt){2&ut&&(o.uIk("disabled",lt.disabled||null),o.ekj("_mat-animation-noopable","NoopAnimations"===lt._animationMode)("mat-unthemed",!lt.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[o.qOj],attrs:Ee,ngContentSelectors:we,decls:5,vars:3,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(ut,lt){1&ut&&(o.F$t(),o._UZ(0,"span",0),o.Hsn(1),o._UZ(2,"span",1)(3,"span",2)(4,"span",3)),2&ut&&(o.xp6(3),o.Q6J("matRippleDisabled",lt._isRippleDisabled())("matRippleCentered",!0)("matRippleTrigger",lt._elementRef.nativeElement))},dependencies:[re.wG],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',ie],encapsulation:2,changeDetection:0}),st})(),ot=(()=>{class st{}return st.\u0275fac=function(ut){return new(ut||st)},st.\u0275mod=o.oAB({type:st}),st.\u0275inj=o.cJS({imports:[re.BQ,re.si,re.BQ]}),st})()},3238:(ze,me,b)=>{b.d(me,{rD:()=>yt,K7:()=>pe,HF:()=>et,BQ:()=>q,ey:()=>Vt,Ng:()=>gn,wG:()=>De,si:()=>Ce,CB:()=>St,jH:()=>mn,pj:()=>Pe,Kr:()=>de,Id:()=>ae,FD:()=>Fe,sb:()=>be});var c=b(1571),o=b(2687),M=b(445),Q=b(6895),H=b(3353),fe=b(1281),Se=b(7579),ie=b(9521);const se=["text"];function Ee(Ze,Me){if(1&Ze&&c._UZ(0,"mat-pseudo-checkbox",5),2&Ze){const I=c.oxw();c.Q6J("state",I.selected?"checked":"unchecked")("disabled",I.disabled)}}function we(Ze,Me){if(1&Ze&&(c.TgZ(0,"span",6),c._uU(1),c.qZA()),2&Ze){const I=c.oxw();c.xp6(1),c.hij("(",I.group.label,")")}}const Ie=[[["mat-icon"]],"*"],Be=["mat-icon","*"],ne=new c.OlP("mat-sanity-checks",{providedIn:"root",factory:function _t(){return!0}});let q=(()=>{class Ze{constructor(I,A,T){this._sanityChecks=A,this._document=T,this._hasDoneGlobalChecks=!1,I._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(I){return!(0,H.Oy)()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[I])}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.LFG(o.qm),c.LFG(ne,8),c.LFG(Q.K0))},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[M.vT,M.vT]}),Ze})();function ae(Ze){return class extends Ze{get disabled(){return this._disabled}set disabled(Me){this._disabled=(0,fe.Ig)(Me)}constructor(...Me){super(...Me),this._disabled=!1}}}function Pe(Ze,Me){return class extends Ze{get color(){return this._color}set color(I){const A=I||this.defaultColor;A!==this._color&&(this._color&&this._elementRef.nativeElement.classList.remove(`mat-${this._color}`),A&&this._elementRef.nativeElement.classList.add(`mat-${A}`),this._color=A)}constructor(...I){super(...I),this.defaultColor=Me,this.color=Me}}}function de(Ze){return class extends Ze{get disableRipple(){return this._disableRipple}set disableRipple(Me){this._disableRipple=(0,fe.Ig)(Me)}constructor(...Me){super(...Me),this._disableRipple=!1}}}function be(Ze,Me=0){return class extends Ze{get tabIndex(){return this.disabled?-1:this._tabIndex}set tabIndex(I){this._tabIndex=null!=I?(0,fe.su)(I):this.defaultTabIndex}constructor(...I){super(...I),this._tabIndex=Me,this.defaultTabIndex=Me}}}function Fe(Ze){return class extends Ze{updateErrorState(){const Me=this.errorState,z=(this.errorStateMatcher||this._defaultErrorStateMatcher).isErrorState(this.ngControl?this.ngControl.control:null,this._parentFormGroup||this._parentForm);z!==Me&&(this.errorState=z,this.stateChanges.next())}constructor(...Me){super(...Me),this.errorState=!1}}}let yt=(()=>{class Ze{isErrorState(I,A){return!!(I&&I.invalid&&(I.touched||A&&A.submitted))}}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275prov=c.Yz7({token:Ze,factory:Ze.\u0275fac,providedIn:"root"}),Ze})();class xn{constructor(Me,I,A,T=!1){this._renderer=Me,this.element=I,this.config=A,this._animationForciblyDisabledThroughCss=T,this.state=3}fadeOut(){this._renderer.fadeOutRipple(this)}}const Ct=(0,H.i$)({passive:!0,capture:!0});class Ht{constructor(){this._events=new Map,this._delegateEventHandler=Me=>{const I=(0,H.sA)(Me);var A;I&&(null===(A=this._events.get(Me.type))||void 0===A||A.forEach((T,z)=>{(z===I||z.contains(I))&&T.forEach(Y=>Y.handleEvent(Me))}))}}addHandler(Me,I,A,T){const z=this._events.get(I);if(z){const Y=z.get(A);Y?Y.add(T):z.set(A,new Set([T]))}else this._events.set(I,new Map([[A,new Set([T])]])),Me.runOutsideAngular(()=>{document.addEventListener(I,this._delegateEventHandler,Ct)})}removeHandler(Me,I,A){const T=this._events.get(Me);if(!T)return;const z=T.get(I);z&&(z.delete(A),0===z.size&&T.delete(I),0===T.size&&(this._events.delete(Me),document.removeEventListener(Me,this._delegateEventHandler,Ct)))}}const oe={enterDuration:225,exitDuration:150},G=(0,H.i$)({passive:!0,capture:!0}),Re=["mousedown","touchstart"],tt=["mouseup","mouseleave","touchend","touchcancel"];class ue{constructor(Me,I,A,T){this._target=Me,this._ngZone=I,this._platform=T,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,T.isBrowser&&(this._containerElement=(0,fe.fI)(A))}fadeInRipple(Me,I,A={}){const T=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),z={...oe,...A.animation};A.centered&&(Me=T.left+T.width/2,I=T.top+T.height/2);const Y=A.radius||function R(Ze,Me,I){const A=Math.max(Math.abs(Ze-I.left),Math.abs(Ze-I.right)),T=Math.max(Math.abs(Me-I.top),Math.abs(Me-I.bottom));return Math.sqrt(A*A+T*T)}(Me,I,T),He=Me-T.left,gt=I-T.top,Ft=z.enterDuration,kt=document.createElement("div");kt.classList.add("mat-ripple-element"),kt.style.left=He-Y+"px",kt.style.top=gt-Y+"px",kt.style.height=2*Y+"px",kt.style.width=2*Y+"px",null!=A.color&&(kt.style.backgroundColor=A.color),kt.style.transitionDuration=`${Ft}ms`,this._containerElement.appendChild(kt);const on=window.getComputedStyle(kt),ln=on.transitionDuration,_n="none"===on.transitionProperty||"0s"===ln||"0s, 0s"===ln||0===T.width&&0===T.height,Oe=new xn(this,kt,A,_n);kt.style.transform="scale3d(1, 1, 1)",Oe.state=0,A.persistent||(this._mostRecentTransientRipple=Oe);let xe=null;return!_n&&(Ft||z.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const J=()=>this._finishRippleTransition(Oe),Ne=()=>this._destroyRipple(Oe);kt.addEventListener("transitionend",J),kt.addEventListener("transitioncancel",Ne),xe={onTransitionEnd:J,onTransitionCancel:Ne}}),this._activeRipples.set(Oe,xe),(_n||!Ft)&&this._finishRippleTransition(Oe),Oe}fadeOutRipple(Me){if(2===Me.state||3===Me.state)return;const I=Me.element,A={...oe,...Me.config.animation};I.style.transitionDuration=`${A.exitDuration}ms`,I.style.opacity="0",Me.state=2,(Me._animationForciblyDisabledThroughCss||!A.exitDuration)&&this._finishRippleTransition(Me)}fadeOutAll(){this._getActiveRipples().forEach(Me=>Me.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(Me=>{Me.config.persistent||Me.fadeOut()})}setupTriggerEvents(Me){const I=(0,fe.fI)(Me);!this._platform.isBrowser||!I||I===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=I,Re.forEach(A=>{ue._eventManager.addHandler(this._ngZone,A,I,this)}))}handleEvent(Me){"mousedown"===Me.type?this._onMousedown(Me):"touchstart"===Me.type?this._onTouchStart(Me):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{tt.forEach(I=>{this._triggerElement.addEventListener(I,this,G)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(Me){0===Me.state?this._startFadeOutTransition(Me):2===Me.state&&this._destroyRipple(Me)}_startFadeOutTransition(Me){const I=Me===this._mostRecentTransientRipple,{persistent:A}=Me.config;Me.state=1,!A&&(!I||!this._isPointerDown)&&Me.fadeOut()}_destroyRipple(Me){var I;const A=null!==(I=this._activeRipples.get(Me))&&void 0!==I?I:null;this._activeRipples.delete(Me),this._activeRipples.size||(this._containerRect=null),Me===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),Me.state=3,null!==A&&(Me.element.removeEventListener("transitionend",A.onTransitionEnd),Me.element.removeEventListener("transitioncancel",A.onTransitionCancel)),Me.element.remove()}_onMousedown(Me){const I=(0,o.X6)(Me),A=this._lastTouchStartEvent&&Date.now(){!Me.config.persistent&&(1===Me.state||Me.config.terminateOnPointerUp&&0===Me.state)&&Me.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const Me=this._triggerElement;Me&&(Re.forEach(I=>ue._eventManager.removeHandler(I,Me,this)),this._pointerUpEventsRegistered&&tt.forEach(I=>Me.removeEventListener(I,this,G)))}}ue._eventManager=new Ht;const K=new c.OlP("mat-ripple-global-options");let De=(()=>{class Ze{get disabled(){return this._disabled}set disabled(I){I&&this.fadeOutAllNonPersistent(),this._disabled=I,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(I){this._trigger=I,this._setupTriggerEventsIfEnabled()}constructor(I,A,T,z,Y){this._elementRef=I,this._animationMode=Y,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=z||{},this._rippleRenderer=new ue(this,A,I,T)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(I,A=0,T){return"number"==typeof I?this._rippleRenderer.fadeInRipple(I,A,{...this.rippleConfig,...T}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...I})}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.Y36(c.SBq),c.Y36(c.R0b),c.Y36(H.t4),c.Y36(K,8),c.Y36(c.QbO,8))},Ze.\u0275dir=c.lG2({type:Ze,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(I,A){2&I&&c.ekj("mat-ripple-unbounded",A.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"]}),Ze})(),Ce=(()=>{class Ze{}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[q,q]}),Ze})(),Ke=(()=>{class Ze{constructor(I){this._animationMode=I,this.state="unchecked",this.disabled=!1}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.Y36(c.QbO,8))},Ze.\u0275cmp=c.Xpm({type:Ze,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:8,hostBindings:function(I,A){2&I&&c.ekj("mat-pseudo-checkbox-indeterminate","indeterminate"===A.state)("mat-pseudo-checkbox-checked","checked"===A.state)("mat-pseudo-checkbox-disabled",A.disabled)("_mat-animation-noopable","NoopAnimations"===A._animationMode)},inputs:{state:"state",disabled:"disabled"},decls:0,vars:0,template:function(I,A){},styles:['.mat-pseudo-checkbox{border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}.mat-pseudo-checkbox-checked::after{top:2.7px;width:10px;height:4px}'],encapsulation:2,changeDetection:0}),Ze})(),it=(()=>{class Ze{}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[q]}),Ze})();const et=new c.OlP("MAT_OPTION_PARENT_COMPONENT"),pe=new c.OlP("MatOptgroup");let ge=0;class rt{constructor(Me,I=!1){this.source=Me,this.isUserInput=I}}let at=(()=>{class Ze{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(I){this._disabled=(0,fe.Ig)(I)}get disableRipple(){return!(!this._parent||!this._parent.disableRipple)}constructor(I,A,T,z){this._element=I,this._changeDetectorRef=A,this._parent=T,this.group=z,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id="mat-option-"+ge++,this.onSelectionChange=new c.vpe,this._stateChanges=new Se.x}get active(){return this._active}get viewValue(){var I;return((null===(I=this._text)||void 0===I?void 0:I.nativeElement.textContent)||"").trim()}select(){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}deselect(){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}focus(I,A){const T=this._getHostElement();"function"==typeof T.focus&&T.focus(A)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(I){(I.keyCode===ie.K5||I.keyCode===ie.L_)&&!(0,ie.Vb)(I)&&(this._selectViaInteraction(),I.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getAriaSelected(){return this.selected||!this.multiple&&null}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const I=this.viewValue;I!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=I)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(I=!1){this.onSelectionChange.emit(new rt(this,I))}}return Ze.\u0275fac=function(I){c.$Z()},Ze.\u0275dir=c.lG2({type:Ze,viewQuery:function(I,A){if(1&I&&c.Gf(se,7),2&I){let T;c.iGM(T=c.CRH())&&(A._text=T.first)}},inputs:{value:"value",id:"id",disabled:"disabled"},outputs:{onSelectionChange:"onSelectionChange"}}),Ze})(),Vt=(()=>{class Ze extends at{constructor(I,A,T,z){super(I,A,T,z)}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.Y36(c.SBq),c.Y36(c.sBO),c.Y36(et,8),c.Y36(pe,8))},Ze.\u0275cmp=c.Xpm({type:Ze,selectors:[["mat-option"]],hostAttrs:["role","option",1,"mat-mdc-option","mat-mdc-focus-indicator","mdc-list-item"],hostVars:12,hostBindings:function(I,A){1&I&&c.NdJ("click",function(){return A._selectViaInteraction()})("keydown",function(z){return A._handleKeydown(z)}),2&I&&(c.Ikx("id",A.id),c.uIk("tabindex",A._getTabIndex())("aria-selected",A._getAriaSelected())("aria-disabled",A.disabled.toString()),c.ekj("mdc-list-item--selected",A.selected)("mat-mdc-option-multiple",A.multiple)("mat-mdc-option-active",A.active)("mdc-list-item--disabled",A.disabled))},exportAs:["matOption"],features:[c.qOj],ngContentSelectors:Be,decls:7,vars:4,consts:[["class","mat-mdc-option-pseudo-checkbox",3,"state","disabled",4,"ngIf"],[1,"mdc-list-item__primary-text"],["text",""],["class","cdk-visually-hidden",4,"ngIf"],["mat-ripple","",1,"mat-mdc-option-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mat-mdc-option-pseudo-checkbox",3,"state","disabled"],[1,"cdk-visually-hidden"]],template:function(I,A){1&I&&(c.F$t(Ie),c.YNc(0,Ee,1,2,"mat-pseudo-checkbox",0),c.Hsn(1),c.TgZ(2,"span",1,2),c.Hsn(4,1),c.qZA(),c.YNc(5,we,2,1,"span",3),c._UZ(6,"div",4)),2&I&&(c.Q6J("ngIf",A.multiple),c.xp6(5),c.Q6J("ngIf",A.group&&A.group._inert),c.xp6(1),c.Q6J("matRippleTrigger",A._getHostElement())("matRippleDisabled",A.disabled||A.disableRipple))},dependencies:[De,Q.O5,Ke],styles:['.mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox{margin-right:0;margin-left:16px}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active::before{content:""}'],encapsulation:2,changeDetection:0}),Ze})();function St(Ze,Me,I){if(I.length){let A=Me.toArray(),T=I.toArray(),z=0;for(let Y=0;YI+A?Math.max(0,Ze-A+Me):I}let gn=(()=>{class Ze{}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[Ce,Q.ez,q,it]}),Ze})()},5412:(ze,me,b)=>{b.d(me,{WI:()=>yn,uw:()=>Re,H8:()=>De,ZT:()=>ue,xY:()=>K,Is:()=>Ke,so:()=>hn,uh:()=>R});var c=b(8184),o=b(6895),M=b(1571),re=b(2687),Q=b(3353),H=b(4080),fe=b(9521),Se=b(7579),ie=b(9770),Z=b(9646),ye=b(445),se=b(8675);function Ee(_e,Ye){}class we{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0}}let Be=(()=>{class _e extends H.en{constructor(F,pe,te,ge,rt,at,Vt,St){super(),this._elementRef=F,this._focusTrapFactory=pe,this._config=ge,this._interactivityChecker=rt,this._ngZone=at,this._overlayRef=Vt,this._focusMonitor=St,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this.attachDomPortal=mn=>{this._portalOutlet.hasAttached();const gn=this._portalOutlet.attachDomPortal(mn);return this._contentAttached(),gn},this._ariaLabelledBy=this._config.ariaLabelledBy||null,this._document=te}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(F){this._portalOutlet.hasAttached();const pe=this._portalOutlet.attachComponentPortal(F);return this._contentAttached(),pe}attachTemplatePortal(F){this._portalOutlet.hasAttached();const pe=this._portalOutlet.attachTemplatePortal(F);return this._contentAttached(),pe}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(F,pe){this._interactivityChecker.isFocusable(F)||(F.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const te=()=>{F.removeEventListener("blur",te),F.removeEventListener("mousedown",te),F.removeAttribute("tabindex")};F.addEventListener("blur",te),F.addEventListener("mousedown",te)})),F.focus(pe)}_focusByCssSelector(F,pe){let te=this._elementRef.nativeElement.querySelector(F);te&&this._forceFocus(te,pe)}_trapFocus(){const F=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||F.focus();break;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(pe=>{pe||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus)}}_restoreFocus(){const F=this._config.restoreFocus;let pe=null;if("string"==typeof F?pe=this._document.querySelector(F):"boolean"==typeof F?pe=F?this._elementFocusedBeforeDialogWasOpened:null:F&&(pe=F),this._config.restoreFocus&&pe&&"function"==typeof pe.focus){const te=(0,Q.ht)(),ge=this._elementRef.nativeElement;(!te||te===this._document.body||te===ge||ge.contains(te))&&(this._focusMonitor?(this._focusMonitor.focusVia(pe,this._closeInteractionType),this._closeInteractionType=null):pe.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){const F=this._elementRef.nativeElement,pe=(0,Q.ht)();return F===pe||F.contains(pe)}_initializeFocusTrap(){this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=(0,Q.ht)())}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(M.SBq),M.Y36(re.qV),M.Y36(o.K0,8),M.Y36(we),M.Y36(re.ic),M.Y36(M.R0b),M.Y36(c.Iu),M.Y36(re.tE))},_e.\u0275cmp=M.Xpm({type:_e,selectors:[["cdk-dialog-container"]],viewQuery:function(F,pe){if(1&F&&M.Gf(H.Pl,7),2&F){let te;M.iGM(te=M.CRH())&&(pe._portalOutlet=te.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(F,pe){2&F&&M.uIk("id",pe._config.id||null)("role",pe._config.role)("aria-modal",pe._config.ariaModal)("aria-labelledby",pe._config.ariaLabel?null:pe._ariaLabelledBy)("aria-label",pe._config.ariaLabel)("aria-describedby",pe._config.ariaDescribedBy||null)},features:[M.qOj],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(F,pe){1&F&&M.YNc(0,Ee,0,0,"ng-template",0)},dependencies:[H.Pl],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2}),_e})();class Ve{constructor(Ye,F){this.overlayRef=Ye,this.config=F,this.closed=new Se.x,this.disableClose=F.disableClose,this.backdropClick=Ye.backdropClick(),this.keydownEvents=Ye.keydownEvents(),this.outsidePointerEvents=Ye.outsidePointerEvents(),this.id=F.id,this.keydownEvents.subscribe(pe=>{pe.keyCode===fe.hY&&!this.disableClose&&!(0,fe.Vb)(pe)&&(pe.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})})}close(Ye,F){if(this.containerInstance){const pe=this.closed;this.containerInstance._closeInteractionType=(null==F?void 0:F.focusOrigin)||"program",this.overlayRef.dispose(),pe.next(Ye),pe.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(Ye="",F=""){return this.overlayRef.updateSize({width:Ye,height:F}),this}addPanelClass(Ye){return this.overlayRef.addPanelClass(Ye),this}removePanelClass(Ye){return this.overlayRef.removePanelClass(Ye),this}}const Je=new M.OlP("DialogScrollStrategy"),pt=new M.OlP("DialogData"),_t=new M.OlP("DefaultDialogConfig"),q={provide:Je,deps:[c.aV],useFactory:function ne(_e){return()=>_e.scrollStrategies.block()}};let j=0,$=(()=>{class _e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(F,pe,te,ge,rt,at){this._overlay=F,this._injector=pe,this._defaultOptions=te,this._parentDialog=ge,this._overlayContainer=rt,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new Se.x,this._afterOpenedAtThisLevel=new Se.x,this._ariaHiddenElements=new Map,this.afterAllClosed=(0,ie.P)(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe((0,se.O)(void 0))),this._scrollStrategy=at}open(F,pe){(pe={...this._defaultOptions||new we,...pe}).id=pe.id||"cdk-dialog-"+j++,pe.id&&this.getDialogById(pe.id);const ge=this._getOverlayConfig(pe),rt=this._overlay.create(ge),at=new Ve(rt,pe),Vt=this._attachContainer(rt,at,pe);return at.containerInstance=Vt,this._attachDialogContent(F,at,Vt,pe),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(at),at.closed.subscribe(()=>this._removeOpenDialog(at,!0)),this.afterOpened.next(at),at}closeAll(){ee(this.openDialogs,F=>F.close())}getDialogById(F){return this.openDialogs.find(pe=>pe.id===F)}ngOnDestroy(){ee(this._openDialogsAtThisLevel,F=>{!1===F.config.closeOnDestroy&&this._removeOpenDialog(F,!1)}),ee(this._openDialogsAtThisLevel,F=>F.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(F){const pe=new c.X_({positionStrategy:F.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:F.scrollStrategy||this._scrollStrategy(),panelClass:F.panelClass,hasBackdrop:F.hasBackdrop,direction:F.direction,minWidth:F.minWidth,minHeight:F.minHeight,maxWidth:F.maxWidth,maxHeight:F.maxHeight,width:F.width,height:F.height,disposeOnNavigation:F.closeOnNavigation});return F.backdropClass&&(pe.backdropClass=F.backdropClass),pe}_attachContainer(F,pe,te){var ge;const rt=te.injector||(null===(ge=te.viewContainerRef)||void 0===ge?void 0:ge.injector),at=[{provide:we,useValue:te},{provide:Ve,useValue:pe},{provide:c.Iu,useValue:F}];let Vt;te.container?"function"==typeof te.container?Vt=te.container:(Vt=te.container.type,at.push(...te.container.providers(te))):Vt=Be;const St=new H.C5(Vt,te.viewContainerRef,M.zs3.create({parent:rt||this._injector,providers:at}),te.componentFactoryResolver);return F.attach(St).instance}_attachDialogContent(F,pe,te,ge){if(F instanceof M.Rgc){const rt=this._createInjector(ge,pe,te,void 0);let at={$implicit:ge.data,dialogRef:pe};ge.templateContext&&(at={...at,..."function"==typeof ge.templateContext?ge.templateContext():ge.templateContext}),te.attachTemplatePortal(new H.UE(F,null,at,rt))}else{const rt=this._createInjector(ge,pe,te,this._injector),at=te.attachComponentPortal(new H.C5(F,ge.viewContainerRef,rt,ge.componentFactoryResolver));pe.componentInstance=at.instance}}_createInjector(F,pe,te,ge){var rt;const at=F.injector||(null===(rt=F.viewContainerRef)||void 0===rt?void 0:rt.injector),Vt=[{provide:pt,useValue:F.data},{provide:Ve,useValue:pe}];return F.providers&&("function"==typeof F.providers?Vt.push(...F.providers(pe,F,te)):Vt.push(...F.providers)),F.direction&&(!at||!at.get(ye.Is,null,{optional:!0}))&&Vt.push({provide:ye.Is,useValue:{value:F.direction,change:(0,Z.of)()}}),M.zs3.create({parent:at||ge,providers:Vt})}_removeOpenDialog(F,pe){const te=this.openDialogs.indexOf(F);te>-1&&(this.openDialogs.splice(te,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((ge,rt)=>{ge?rt.setAttribute("aria-hidden",ge):rt.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),pe&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){const F=this._overlayContainer.getContainerElement();if(F.parentElement){const pe=F.parentElement.children;for(let te=pe.length-1;te>-1;te--){const ge=pe[te];ge!==F&&"SCRIPT"!==ge.nodeName&&"STYLE"!==ge.nodeName&&!ge.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(ge,ge.getAttribute("aria-hidden")),ge.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const F=this._parentDialog;return F?F._getAfterAllClosed():this._afterAllClosedAtThisLevel}}return _e.\u0275fac=function(F){return new(F||_e)(M.LFG(c.aV),M.LFG(M.zs3),M.LFG(_t,8),M.LFG(_e,12),M.LFG(c.Xj),M.LFG(Je))},_e.\u0275prov=M.Yz7({token:_e,factory:_e.\u0275fac}),_e})();function ee(_e,Ye){let F=_e.length;for(;F--;)Ye(_e[F])}let ae=(()=>{class _e{}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275mod=M.oAB({type:_e}),_e.\u0275inj=M.cJS({providers:[$,q],imports:[c.U8,H.eL,re.rt,H.eL]}),_e})();var Pe=b(1281),de=b(6451),be=b(9300),Fe=b(5698),ke=b(3238);function $e(_e,Ye){}b(7340);class bt{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}}const At="mdc-dialog--open",ot="mdc-dialog--opening",st="mdc-dialog--closing";let lt=(()=>{class _e extends Be{constructor(F,pe,te,ge,rt,at,Vt,St){super(F,pe,te,ge,rt,at,Vt,St),this._animationStateChanged=new M.vpe}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(F){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:F})}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(M.SBq),M.Y36(re.qV),M.Y36(o.K0,8),M.Y36(bt),M.Y36(re.ic),M.Y36(M.R0b),M.Y36(c.Iu),M.Y36(re.tE))},_e.\u0275cmp=M.Xpm({type:_e,selectors:[["ng-component"]],features:[M.qOj],decls:0,vars:0,template:function(F,pe){},encapsulation:2}),_e})();const jt="--mat-dialog-transition-duration";function Lt(_e){return null==_e?null:"number"==typeof _e?_e:_e.endsWith("ms")?(0,Pe.su)(_e.substring(0,_e.length-2)):_e.endsWith("s")?1e3*(0,Pe.su)(_e.substring(0,_e.length-1)):"0"===_e?0:null}let yt=(()=>{class _e extends lt{constructor(F,pe,te,ge,rt,at,Vt,St,mn){var gn,Ze;super(F,pe,te,ge,rt,at,Vt,mn),this._animationMode=St,this._animationsEnabled="NoopAnimations"!==this._animationMode,this._hostElement=this._elementRef.nativeElement,this._openAnimationDuration=this._animationsEnabled?null!==(gn=Lt(this._config.enterAnimationDuration))&&void 0!==gn?gn:150:0,this._closeAnimationDuration=this._animationsEnabled?null!==(Ze=Lt(this._config.exitAnimationDuration))&&void 0!==Ze?Ze:75:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._openAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._closeAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._openAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(jt,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(ot),this._hostElement.classList.add(At),this._waitForAnimationToComplete(this._openAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(At),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._closeAnimationDuration}),this._hostElement.classList.remove(At),this._animationsEnabled?(this._hostElement.style.setProperty(jt,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(st),this._waitForAnimationToComplete(this._closeAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_clearAnimationClasses(){this._hostElement.classList.remove(ot),this._hostElement.classList.remove(st)}_waitForAnimationToComplete(F,pe){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(pe,F)}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(M.SBq),M.Y36(re.qV),M.Y36(o.K0,8),M.Y36(bt),M.Y36(re.ic),M.Y36(M.R0b),M.Y36(c.Iu),M.Y36(M.QbO,8),M.Y36(re.tE))},_e.\u0275cmp=M.Xpm({type:_e,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:8,hostBindings:function(F,pe){2&F&&(M.Ikx("id",pe._config.id),M.uIk("aria-modal",pe._config.ariaModal)("role",pe._config.role)("aria-labelledby",pe._config.ariaLabel?null:pe._ariaLabelledBy)("aria-label",pe._config.ariaLabel)("aria-describedby",pe._config.ariaDescribedBy||null),M.ekj("_mat-animation-noopable",!pe._animationsEnabled))},features:[M.qOj],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(F,pe){1&F&&(M.TgZ(0,"div",0)(1,"div",1),M.YNc(2,$e,0,0,"ng-template",2),M.qZA()())},dependencies:[H.Pl],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 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-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, var(--mdc-shape-medium, 4px))}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title,.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__actions,.mat-mdc-dialog-container.mdc-dialog--scrollable.mdc-dialog-scroll-divider-footer .mdc-dialog__actions{border-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title{border-bottom-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, "Arial");line-height:var(--mdc-dialog-subhead-line-height, 14px);font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500);letter-spacing:var(--mdc-dialog-subhead-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, black)}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, "Arial");line-height:var(--mdc-dialog-supporting-text-line-height, 14px);font-size:var(--mdc-dialog-supporting-text-size, 14px);font-weight:var(--mdc-dialog-supporting-text-weight, 500);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, black)}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2}),_e})();class hn{constructor(Ye,F,pe){this._ref=Ye,this._containerInstance=pe,this._afterOpened=new Se.x,this._beforeClosed=new Se.x,this._state=0,this.disableClose=F.disableClose,this.id=Ye.id,pe._animationStateChanged.pipe((0,be.h)(te=>"opened"===te.state),(0,Fe.q)(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),pe._animationStateChanged.pipe((0,be.h)(te=>"closed"===te.state),(0,Fe.q)(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),Ye.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),(0,de.T)(this.backdropClick(),this.keydownEvents().pipe((0,be.h)(te=>te.keyCode===fe.hY&&!this.disableClose&&!(0,fe.Vb)(te)))).subscribe(te=>{this.disableClose||(te.preventDefault(),It(this,"keydown"===te.type?"keyboard":"mouse"))})}close(Ye){this._result=Ye,this._containerInstance._animationStateChanged.pipe((0,be.h)(F=>"closing"===F.state),(0,Fe.q)(1)).subscribe(F=>{this._beforeClosed.next(Ye),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),F.totalTime+100)}),this._state=1,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(Ye){let F=this._ref.config.positionStrategy;return Ye&&(Ye.left||Ye.right)?Ye.left?F.left(Ye.left):F.right(Ye.right):F.centerHorizontally(),Ye&&(Ye.top||Ye.bottom)?Ye.top?F.top(Ye.top):F.bottom(Ye.bottom):F.centerVertically(),this._ref.updatePosition(),this}updateSize(Ye="",F=""){return this._ref.updateSize(Ye,F),this}addPanelClass(Ye){return this._ref.addPanelClass(Ye),this}removePanelClass(Ye){return this._ref.removePanelClass(Ye),this}getState(){return this._state}_finishDialogClose(){this._state=2,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function It(_e,Ye,F){return _e._closeInteractionType=Ye,_e.close(F)}const yn=new M.OlP("MatMdcDialogData"),tn=new M.OlP("mat-mdc-dialog-default-options"),xn=new M.OlP("mat-mdc-dialog-scroll-strategy"),Ht={provide:xn,deps:[c.aV],useFactory:function Ct(_e){return()=>_e.scrollStrategies.block()}};let ve=0,G=(()=>{class _e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const F=this._parentDialog;return F?F._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(F,pe,te,ge,rt,at,Vt,St,mn,gn){this._overlay=F,this._defaultOptions=te,this._parentDialog=ge,this._dialogRefConstructor=Vt,this._dialogContainerType=St,this._dialogDataToken=mn,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new Se.x,this._afterOpenedAtThisLevel=new Se.x,this._idPrefix="mat-dialog-",this.dialogConfigClass=bt,this.afterAllClosed=(0,ie.P)(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe((0,se.O)(void 0))),this._scrollStrategy=at,this._dialog=pe.get($)}open(F,pe){let te;(pe={...this._defaultOptions||new bt,...pe}).id=pe.id||`${this._idPrefix}${ve++}`,pe.scrollStrategy=pe.scrollStrategy||this._scrollStrategy();const ge=this._dialog.open(F,{...pe,positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:pe},{provide:we,useValue:pe}]},templateContext:()=>({dialogRef:te}),providers:(rt,at,Vt)=>{var St;return te=new this._dialogRefConstructor(rt,pe,Vt),te.updatePosition(null===(St=pe)||void 0===St?void 0:St.position),[{provide:this._dialogContainerType,useValue:Vt},{provide:this._dialogDataToken,useValue:at.data},{provide:this._dialogRefConstructor,useValue:te}]}});return te.componentInstance=ge.componentInstance,this.openDialogs.push(te),this.afterOpened.next(te),te.afterClosed().subscribe(()=>{const rt=this.openDialogs.indexOf(te);rt>-1&&(this.openDialogs.splice(rt,1),this.openDialogs.length||this._getAfterAllClosed().next())}),te}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(F){return this.openDialogs.find(pe=>pe.id===F)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(F){let pe=F.length;for(;pe--;)F[pe].close()}}return _e.\u0275fac=function(F){M.$Z()},_e.\u0275prov=M.Yz7({token:_e,factory:_e.\u0275fac}),_e})(),Re=(()=>{class _e extends G{constructor(F,pe,te,ge,rt,at,Vt,St){super(F,pe,ge,at,Vt,rt,hn,yt,yn,St),this._idPrefix="mat-mdc-dialog-"}}return _e.\u0275fac=function(F){return new(F||_e)(M.LFG(c.aV),M.LFG(M.zs3),M.LFG(o.Ye,8),M.LFG(tn,8),M.LFG(xn),M.LFG(_e,12),M.LFG(c.Xj),M.LFG(M.QbO,8))},_e.\u0275prov=M.Yz7({token:_e,factory:_e.\u0275fac}),_e})(),tt=0,ue=(()=>{class _e{constructor(F,pe,te){this.dialogRef=F,this._elementRef=pe,this._dialog=te,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=Ce(this._elementRef,this._dialog.openDialogs))}ngOnChanges(F){const pe=F._matDialogClose||F._matDialogCloseResult;pe&&(this.dialogResult=pe.currentValue)}_onButtonClick(F){It(this.dialogRef,0===F.screenX&&0===F.screenY?"keyboard":"mouse",this.dialogResult)}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(hn,8),M.Y36(M.SBq),M.Y36(Re))},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(F,pe){1&F&&M.NdJ("click",function(ge){return pe._onButtonClick(ge)}),2&F&&M.uIk("aria-label",pe.ariaLabel||null)("type",pe.type)},inputs:{ariaLabel:["aria-label","ariaLabel"],type:"type",dialogResult:["mat-dialog-close","dialogResult"],_matDialogClose:["matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[M.TTD]}),_e})(),R=(()=>{class _e{constructor(F,pe,te){this._dialogRef=F,this._elementRef=pe,this._dialog=te,this.id="mat-mdc-dialog-title-"+tt++}ngOnInit(){this._dialogRef||(this._dialogRef=Ce(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{const F=this._dialogRef._containerInstance;F&&!F._ariaLabelledBy&&(F._ariaLabelledBy=this.id)})}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(hn,8),M.Y36(M.SBq),M.Y36(Re))},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(F,pe){2&F&&M.Ikx("id",pe.id)},inputs:{id:"id"},exportAs:["matDialogTitle"]}),_e})(),K=(()=>{class _e{}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"]}),_e})(),De=(()=>{class _e{constructor(){this.align="start"}}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:4,hostBindings:function(F,pe){2&F&&M.ekj("mat-mdc-dialog-actions-align-center","center"===pe.align)("mat-mdc-dialog-actions-align-end","end"===pe.align)},inputs:{align:"align"}}),_e})();function Ce(_e,Ye){let F=_e.nativeElement.parentElement;for(;F&&!F.classList.contains("mat-mdc-dialog-container");)F=F.parentElement;return F?Ye.find(pe=>pe.id===F.id):null}let Ke=(()=>{class _e{}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275mod=M.oAB({type:_e}),_e.\u0275inj=M.cJS({providers:[Re,Ht],imports:[ae,c.U8,H.eL,ke.BQ,ke.BQ]}),_e})()},9549:(ze,me,b)=>{b.d(me,{Eo:()=>G,G_:()=>R,KE:()=>_e,R9:()=>It,hX:()=>ot,lN:()=>Ye,o2:()=>K});var c=b(1571),o=b(445),M=b(3353),re=b(7579),Q=b(6451),H=b(2722),fe=b(6895),Se=b(1281),ie=b(7340),Z=b(9643),ye=b(3238);const se=["matFormFieldNotchedOutline",""],Ee=["*"],we=["textField"],Ie=["iconPrefixContainer"],Be=["textPrefixContainer"];function Ve(F,pe){1&F&&c._UZ(0,"span",19)}function Je(F,pe){if(1&F){const te=c.EpF();c.TgZ(0,"label",17),c.NdJ("cdkObserveContent",function(){c.CHM(te);const rt=c.oxw(2);return c.KtG(rt._refreshOutlineNotchWidth())}),c.Hsn(1,1),c.YNc(2,Ve,1,0,"span",18),c.qZA()}if(2&F){const te=c.oxw(2);c.Q6J("floating",te._shouldLabelFloat())("cdkObserveContentDisabled",!te._hasOutline())("id",te._labelId),c.uIk("for",te._control.id)("aria-owns",te._control.id),c.xp6(2),c.Q6J("ngIf",!te.hideRequiredMarker&&te._control.required)}}function pt(F,pe){if(1&F&&c.YNc(0,Je,3,6,"label",16),2&F){const te=c.oxw();c.Q6J("ngIf",te._hasFloatingLabel())}}function _t(F,pe){1&F&&c._UZ(0,"div",20)}function ne(F,pe){}function q(F,pe){if(1&F&&c.YNc(0,ne,0,0,"ng-template",22),2&F){c.oxw(2);const te=c.MAs(1);c.Q6J("ngTemplateOutlet",te)}}function j(F,pe){if(1&F&&(c.TgZ(0,"div",21),c.YNc(1,q,1,1,"ng-template",9),c.qZA()),2&F){const te=c.oxw();c.Q6J("matFormFieldNotchedOutlineOpen",te._shouldLabelFloat())("matFormFieldNotchedOutlineLabelWidth",te._labelWidth),c.xp6(1),c.Q6J("ngIf",!te._forceDisplayInfixLabel())}}function $(F,pe){1&F&&(c.TgZ(0,"div",23,24),c.Hsn(2,2),c.qZA())}function ee(F,pe){1&F&&(c.TgZ(0,"div",25,26),c.Hsn(2,3),c.qZA())}function ae(F,pe){}function Pe(F,pe){if(1&F&&c.YNc(0,ae,0,0,"ng-template",22),2&F){c.oxw();const te=c.MAs(1);c.Q6J("ngTemplateOutlet",te)}}function de(F,pe){1&F&&(c.TgZ(0,"div",27),c.Hsn(1,4),c.qZA())}function be(F,pe){1&F&&(c.TgZ(0,"div",28),c.Hsn(1,5),c.qZA())}function Fe(F,pe){1&F&&c._UZ(0,"div",29)}function ke(F,pe){if(1&F&&(c.TgZ(0,"div",30),c.Hsn(1,6),c.qZA()),2&F){const te=c.oxw();c.Q6J("@transitionMessages",te._subscriptAnimationState)}}function Xe(F,pe){if(1&F&&(c.TgZ(0,"mat-hint",34),c._uU(1),c.qZA()),2&F){const te=c.oxw(2);c.Q6J("id",te._hintLabelId),c.xp6(1),c.Oqu(te.hintLabel)}}function $e(F,pe){if(1&F&&(c.TgZ(0,"div",31),c.YNc(1,Xe,2,2,"mat-hint",32),c.Hsn(2,7),c._UZ(3,"div",33),c.Hsn(4,8),c.qZA()),2&F){const te=c.oxw();c.Q6J("@transitionMessages",te._subscriptAnimationState),c.xp6(1),c.Q6J("ngIf",te.hintLabel)}}const bt=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],At=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];let ot=(()=>{class F{}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F,selectors:[["mat-label"]]}),F})();const mt=new c.OlP("MatError");let lt=0,jt=(()=>{class F{constructor(){this.align="start",this.id="mat-mdc-hint-"+lt++}}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(te,ge){2&te&&(c.Ikx("id",ge.id),c.uIk("align",null),c.ekj("mat-mdc-form-field-hint-end","end"===ge.align))},inputs:{align:"align",id:"id"}}),F})();const Lt=new c.OlP("MatPrefix"),hn=new c.OlP("MatSuffix");let It=(()=>{class F{constructor(){this._isText=!1}set _isTextSelector(te){this._isText=!0}}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:["matTextSuffix","_isTextSelector"]},features:[c._Bn([{provide:hn,useExisting:F}])]}),F})(),yn=(()=>{class F{constructor(te){this._elementRef=te,this.floating=!1}getWidth(){return function tn(F){if(null!==F.offsetParent)return F.scrollWidth;const te=F.cloneNode(!0);te.style.setProperty("position","absolute"),te.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(te);const ge=te.scrollWidth;return te.remove(),ge}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq))},F.\u0275dir=c.lG2({type:F,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(te,ge){2&te&&c.ekj("mdc-floating-label--float-above",ge.floating)},inputs:{floating:"floating"}}),F})();const xn="mdc-line-ripple--active",Ct="mdc-line-ripple--deactivating";let Ht=(()=>{class F{constructor(te,ge){this._elementRef=te,this._handleTransitionEnd=rt=>{const at=this._elementRef.nativeElement.classList,Vt=at.contains(Ct);"opacity"===rt.propertyName&&Vt&&at.remove(xn,Ct)},ge.runOutsideAngular(()=>{te.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const te=this._elementRef.nativeElement.classList;te.remove(Ct),te.add(xn)}deactivate(){this._elementRef.nativeElement.classList.add(Ct)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq),c.Y36(c.R0b))},F.\u0275dir=c.lG2({type:F,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]}),F})(),oe=(()=>{class F{constructor(te,ge){this._elementRef=te,this._ngZone=ge,this.labelWidth=0,this.open=!1}ngAfterViewInit(){const te=this._elementRef.nativeElement.querySelector(".mdc-floating-label");te?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(te.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>te.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_getNotchWidth(){return this.open?this.labelWidth>0?`calc(${this.labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:"0px":null}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq),c.Y36(c.R0b))},F.\u0275cmp=c.Xpm({type:F,selectors:[["div","matFormFieldNotchedOutline",""]],hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(te,ge){2&te&&c.ekj("mdc-notched-outline--notched",ge.open)},inputs:{labelWidth:["matFormFieldNotchedOutlineLabelWidth","labelWidth"],open:["matFormFieldNotchedOutlineOpen","open"]},attrs:se,ngContentSelectors:Ee,decls:4,vars:2,consts:[[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(te,ge){1&te&&(c.F$t(),c._UZ(0,"div",0),c.TgZ(1,"div",1),c.Hsn(2),c.qZA(),c._UZ(3,"div",2)),2&te&&(c.xp6(1),c.Udp("width",ge._getNotchWidth()))},encapsulation:2,changeDetection:0}),F})();const ve={transitionMessages:(0,ie.X$)("transitionMessages",[(0,ie.SB)("enter",(0,ie.oB)({opacity:1,transform:"translateY(0%)"})),(0,ie.eR)("void => enter",[(0,ie.oB)({opacity:0,transform:"translateY(-5px)"}),(0,ie.jt)("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let G=(()=>{class F{}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F}),F})();const R=new c.OlP("MatFormField"),K=new c.OlP("MAT_FORM_FIELD_DEFAULT_OPTIONS");let De=0,_e=(()=>{class F{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(te){this._hideRequiredMarker=(0,Se.Ig)(te)}get floatLabel(){var te;return this._floatLabel||(null===(te=this._defaults)||void 0===te?void 0:te.floatLabel)||"auto"}set floatLabel(te){te!==this._floatLabel&&(this._floatLabel=te,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(te){var ge;const rt=this._appearance,at=te||(null===(ge=this._defaults)||void 0===ge?void 0:ge.appearance)||"fill";this._appearance=at,"outline"===this._appearance&&this._appearance!==rt&&(this._refreshOutlineNotchWidth(),this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){var te;return this._subscriptSizing||(null===(te=this._defaults)||void 0===te?void 0:te.subscriptSizing)||"fixed"}set subscriptSizing(te){var ge;this._subscriptSizing=te||(null===(ge=this._defaults)||void 0===ge?void 0:ge.subscriptSizing)||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(te){this._hintLabel=te,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(te){this._explicitFormFieldControl=te}constructor(te,ge,rt,at,Vt,St,mn,gn){this._elementRef=te,this._changeDetectorRef=ge,this._ngZone=rt,this._dir=at,this._platform=Vt,this._defaults=St,this._animationMode=mn,this._document=gn,this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+De++,this._hintLabelId="mat-mdc-hint-"+De++,this._subscriptAnimationState="",this._labelWidth=0,this._destroyed=new re.x,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,St&&(St.appearance&&(this.appearance=St.appearance),this._hideRequiredMarker=Boolean(null==St?void 0:St.hideRequiredMarker),St.color&&(this.color=St.color))}ngAfterViewInit(){var te,ge;this._updateFocusState(),this._refreshOutlineNotchWidth(),null!==(te=this._document)&&void 0!==te&&null!==(ge=te.fonts)&&void 0!==ge&&ge.ready?this._document.fonts.ready.then(()=>{this._refreshOutlineNotchWidth(),this._changeDetectorRef.markForCheck()}):setTimeout(()=>this._refreshOutlineNotchWidth(),100),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){const te=this._control;te.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${te.controlType}`),te.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),te.ngControl&&te.ngControl.valueChanges&&te.ngControl.valueChanges.pipe((0,H.R)(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(te=>!te._isText),this._hasTextPrefix=!!this._prefixChildren.find(te=>te._isText),this._hasIconSuffix=!!this._suffixChildren.find(te=>!te._isText),this._hasTextSuffix=!!this._suffixChildren.find(te=>te._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),(0,Q.T)(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){var te,ge;if(this._control.focused&&!this._isFocused)this._isFocused=!0,null===(ge=this._lineRipple)||void 0===ge||ge.activate();else if(!this._control.focused&&(this._isFocused||null===this._isFocused)){var rt;this._isFocused=!1,null===(rt=this._lineRipple)||void 0===rt||rt.deactivate()}null===(te=this._textField)||void 0===te||te.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe((0,H.R)(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe((0,H.R)(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(te){const ge=this._control?this._control.ngControl:null;return ge&&ge[te]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||(this._labelWidth=this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let te=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&te.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const ge=this._hintChildren?this._hintChildren.find(at=>"start"===at.align):null,rt=this._hintChildren?this._hintChildren.find(at=>"end"===at.align):null;ge?te.push(ge.id):this._hintLabel&&te.push(this._hintLabelId),rt&&te.push(rt.id)}else this._errorChildren&&te.push(...this._errorChildren.map(ge=>ge.id));this._control.setDescribedByIds(te)}}_updateOutlineLabelOffset(){var te,ge,rt,at;if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;const Vt=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(Vt.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdateOnStable=!0);const St=null===(te=this._iconPrefixContainer)||void 0===te?void 0:te.nativeElement,mn=null===(ge=this._textPrefixContainer)||void 0===ge?void 0:ge.nativeElement,gn=null!==(rt=null==St?void 0:St.getBoundingClientRect().width)&&void 0!==rt?rt:0,Ze=null!==(at=null==mn?void 0:mn.getBoundingClientRect().width)&&void 0!==at?at:0;Vt.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${gn+Ze}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`}_isAttachedToDom(){const te=this._elementRef.nativeElement;if(te.getRootNode){const ge=te.getRootNode();return ge&&ge!==te}return document.documentElement.contains(te)}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq),c.Y36(c.sBO),c.Y36(c.R0b),c.Y36(o.Is),c.Y36(M.t4),c.Y36(K,8),c.Y36(c.QbO,8),c.Y36(fe.K0))},F.\u0275cmp=c.Xpm({type:F,selectors:[["mat-form-field"]],contentQueries:function(te,ge,rt){if(1&te&&(c.Suo(rt,ot,5),c.Suo(rt,ot,7),c.Suo(rt,G,5),c.Suo(rt,Lt,5),c.Suo(rt,hn,5),c.Suo(rt,mt,5),c.Suo(rt,jt,5)),2&te){let at;c.iGM(at=c.CRH())&&(ge._labelChildNonStatic=at.first),c.iGM(at=c.CRH())&&(ge._labelChildStatic=at.first),c.iGM(at=c.CRH())&&(ge._formFieldControl=at.first),c.iGM(at=c.CRH())&&(ge._prefixChildren=at),c.iGM(at=c.CRH())&&(ge._suffixChildren=at),c.iGM(at=c.CRH())&&(ge._errorChildren=at),c.iGM(at=c.CRH())&&(ge._hintChildren=at)}},viewQuery:function(te,ge){if(1&te&&(c.Gf(we,5),c.Gf(Ie,5),c.Gf(Be,5),c.Gf(yn,5),c.Gf(oe,5),c.Gf(Ht,5)),2&te){let rt;c.iGM(rt=c.CRH())&&(ge._textField=rt.first),c.iGM(rt=c.CRH())&&(ge._iconPrefixContainer=rt.first),c.iGM(rt=c.CRH())&&(ge._textPrefixContainer=rt.first),c.iGM(rt=c.CRH())&&(ge._floatingLabel=rt.first),c.iGM(rt=c.CRH())&&(ge._notchedOutline=rt.first),c.iGM(rt=c.CRH())&&(ge._lineRipple=rt.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(te,ge){2&te&&c.ekj("mat-mdc-form-field-label-always-float",ge._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",ge._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",ge._hasIconSuffix)("mat-form-field-invalid",ge._control.errorState)("mat-form-field-disabled",ge._control.disabled)("mat-form-field-autofilled",ge._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===ge._animationMode)("mat-form-field-appearance-fill","fill"==ge.appearance)("mat-form-field-appearance-outline","outline"==ge.appearance)("mat-form-field-hide-placeholder",ge._hasFloatingLabel()&&!ge._shouldLabelFloat())("mat-focused",ge._control.focused)("mat-primary","accent"!==ge.color&&"warn"!==ge.color)("mat-accent","accent"===ge.color)("mat-warn","warn"===ge.color)("ng-untouched",ge._shouldForward("untouched"))("ng-touched",ge._shouldForward("touched"))("ng-pristine",ge._shouldForward("pristine"))("ng-dirty",ge._shouldForward("dirty"))("ng-valid",ge._shouldForward("valid"))("ng-invalid",ge._shouldForward("invalid"))("ng-pending",ge._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[c._Bn([{provide:R,useExisting:F}])],ngContentSelectors:At,decls:18,vars:23,consts:[["labelTemplate",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],["textField",""],["class","mat-mdc-form-field-focus-overlay",4,"ngIf"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth",4,"ngIf"],["class","mat-mdc-form-field-icon-prefix",4,"ngIf"],["class","mat-mdc-form-field-text-prefix",4,"ngIf"],[1,"mat-mdc-form-field-infix"],[3,"ngIf"],["class","mat-mdc-form-field-text-suffix",4,"ngIf"],["class","mat-mdc-form-field-icon-suffix",4,"ngIf"],["matFormFieldLineRipple","",4,"ngIf"],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align",3,"ngSwitch"],["class","mat-mdc-form-field-error-wrapper",4,"ngSwitchCase"],["class","mat-mdc-form-field-hint-wrapper",4,"ngSwitchCase"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent",4,"ngIf"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent"],["aria-hidden","true","class","mat-mdc-form-field-required-marker mdc-floating-label--required",4,"ngIf"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-focus-overlay"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-icon-prefix"],["iconPrefixContainer",""],[1,"mat-mdc-form-field-text-prefix"],["textPrefixContainer",""],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id",4,"ngIf"],[1,"mat-mdc-form-field-hint-spacer"],[3,"id"]],template:function(te,ge){1&te&&(c.F$t(bt),c.YNc(0,pt,1,1,"ng-template",null,0,c.W1O),c.TgZ(2,"div",1,2),c.NdJ("click",function(at){return ge._control.onContainerClick&&ge._control.onContainerClick(at)}),c.YNc(4,_t,1,0,"div",3),c.TgZ(5,"div",4),c.YNc(6,j,2,3,"div",5),c.YNc(7,$,3,0,"div",6),c.YNc(8,ee,3,0,"div",7),c.TgZ(9,"div",8),c.YNc(10,Pe,1,1,"ng-template",9),c.Hsn(11),c.qZA(),c.YNc(12,de,2,0,"div",10),c.YNc(13,be,2,0,"div",11),c.qZA(),c.YNc(14,Fe,1,0,"div",12),c.qZA(),c.TgZ(15,"div",13),c.YNc(16,ke,2,1,"div",14),c.YNc(17,$e,5,2,"div",15),c.qZA()),2&te&&(c.xp6(2),c.ekj("mdc-text-field--filled",!ge._hasOutline())("mdc-text-field--outlined",ge._hasOutline())("mdc-text-field--no-label",!ge._hasFloatingLabel())("mdc-text-field--disabled",ge._control.disabled)("mdc-text-field--invalid",ge._control.errorState),c.xp6(2),c.Q6J("ngIf",!ge._hasOutline()&&!ge._control.disabled),c.xp6(2),c.Q6J("ngIf",ge._hasOutline()),c.xp6(1),c.Q6J("ngIf",ge._hasIconPrefix),c.xp6(1),c.Q6J("ngIf",ge._hasTextPrefix),c.xp6(2),c.Q6J("ngIf",!ge._hasOutline()||ge._forceDisplayInfixLabel()),c.xp6(2),c.Q6J("ngIf",ge._hasTextSuffix),c.xp6(1),c.Q6J("ngIf",ge._hasIconSuffix),c.xp6(1),c.Q6J("ngIf",!ge._hasOutline()),c.xp6(1),c.ekj("mat-mdc-form-field-subscript-dynamic-size","dynamic"===ge.subscriptSizing),c.Q6J("ngSwitch",ge._getDisplayedMessages()),c.xp6(1),c.Q6J("ngSwitchCase","error"),c.xp6(1),c.Q6J("ngSwitchCase","hint"))},dependencies:[fe.O5,fe.tP,fe.RF,fe.n9,Z.wD,jt,yn,oe,Ht],styles:['.mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal;pointer-events:all}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}'],encapsulation:2,data:{animation:[ve.transitionMessages]},changeDetection:0}),F})(),Ye=(()=>{class F{}return F.\u0275fac=function(te){return new(te||F)},F.\u0275mod=c.oAB({type:F}),F.\u0275inj=c.cJS({imports:[ye.BQ,fe.ez,Z.Q8,ye.BQ]}),F})()},4144:(ze,me,b)=>{b.d(me,{Nt:()=>pt,c:()=>_t});var c=b(1281),o=b(3353),M=b(1571),re=b(515),Q=b(7579);const H=(0,o.i$)({passive:!0});let fe=(()=>{class ne{constructor(j,$){this._platform=j,this._ngZone=$,this._monitoredElements=new Map}monitor(j){if(!this._platform.isBrowser)return re.E;const $=(0,c.fI)(j),ee=this._monitoredElements.get($);if(ee)return ee.subject;const ae=new Q.x,Pe="cdk-text-field-autofilled",de=be=>{"cdk-text-field-autofill-start"!==be.animationName||$.classList.contains(Pe)?"cdk-text-field-autofill-end"===be.animationName&&$.classList.contains(Pe)&&($.classList.remove(Pe),this._ngZone.run(()=>ae.next({target:be.target,isAutofilled:!1}))):($.classList.add(Pe),this._ngZone.run(()=>ae.next({target:be.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{$.addEventListener("animationstart",de,H),$.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set($,{subject:ae,unlisten:()=>{$.removeEventListener("animationstart",de,H)}}),ae}stopMonitoring(j){const $=(0,c.fI)(j),ee=this._monitoredElements.get($);ee&&(ee.unlisten(),ee.subject.complete(),$.classList.remove("cdk-text-field-autofill-monitored"),$.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete($))}ngOnDestroy(){this._monitoredElements.forEach((j,$)=>this.stopMonitoring($))}}return ne.\u0275fac=function(j){return new(j||ne)(M.LFG(o.t4),M.LFG(M.R0b))},ne.\u0275prov=M.Yz7({token:ne,factory:ne.\u0275fac,providedIn:"root"}),ne})(),Z=(()=>{class ne{}return ne.\u0275fac=function(j){return new(j||ne)},ne.\u0275mod=M.oAB({type:ne}),ne.\u0275inj=M.cJS({}),ne})();var ye=b(433),se=b(3238),Ee=b(9549);const Ie=new M.OlP("MAT_INPUT_VALUE_ACCESSOR"),Be=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let Ve=0;const Je=(0,se.FD)(class{constructor(ne,q,j,$){this._defaultErrorStateMatcher=ne,this._parentForm=q,this._parentFormGroup=j,this.ngControl=$,this.stateChanges=new Q.x}});let pt=(()=>{class ne extends Je{get disabled(){return this._disabled}set disabled(j){this._disabled=(0,c.Ig)(j),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(j){this._id=j||this._uid}get required(){var j,$,ee,ae;return null!==(j=null!==($=this._required)&&void 0!==$?$:null===(ee=this.ngControl)||void 0===ee||null===(ae=ee.control)||void 0===ae?void 0:ae.hasValidator(ye.kI.required))&&void 0!==j&&j}set required(j){this._required=(0,c.Ig)(j)}get type(){return this._type}set type(j){this._type=j||"text",this._validateType(),!this._isTextarea&&(0,o.qK)().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get value(){return this._inputValueAccessor.value}set value(j){j!==this.value&&(this._inputValueAccessor.value=j,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(j){this._readonly=(0,c.Ig)(j)}constructor(j,$,ee,ae,Pe,de,be,Fe,ke,Xe){super(de,ae,Pe,ee),this._elementRef=j,this._platform=$,this._autofillMonitor=Fe,this._formField=Xe,this._uid="mat-input-"+Ve++,this.focused=!1,this.stateChanges=new Q.x,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(At=>(0,o.qK)().has(At)),this._iOSKeyupListener=At=>{const ot=At.target;!ot.value&&0===ot.selectionStart&&0===ot.selectionEnd&&(ot.setSelectionRange(1,1),ot.setSelectionRange(0,0))};const $e=this._elementRef.nativeElement,bt=$e.nodeName.toLowerCase();this._inputValueAccessor=be||$e,this._previousNativeValue=this.value,this.id=this.id,$.IOS&&ke.runOutsideAngular(()=>{j.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===bt,this._isTextarea="textarea"===bt,this._isInFormField=!!Xe,this._isNativeSelect&&(this.controlType=$e.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(j=>{this.autofilled=j.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(j){this._elementRef.nativeElement.focus(j)}_focusChanged(j){j!==this.focused&&(this.focused=j,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const j=this._elementRef.nativeElement.value;this._previousNativeValue!==j&&(this._previousNativeValue=j,this.stateChanges.next())}_dirtyCheckPlaceholder(){const j=this._getPlaceholder();if(j!==this._previousPlaceholder){const $=this._elementRef.nativeElement;this._previousPlaceholder=j,j?$.setAttribute("placeholder",j):$.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){Be.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let j=this._elementRef.nativeElement.validity;return j&&j.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const j=this._elementRef.nativeElement,$=j.options[0];return this.focused||j.multiple||!this.empty||!!(j.selectedIndex>-1&&$&&$.label)}return this.focused||!this.empty}setDescribedByIds(j){j.length?this._elementRef.nativeElement.setAttribute("aria-describedby",j.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const j=this._elementRef.nativeElement;return this._isNativeSelect&&(j.multiple||j.size>1)}}return ne.\u0275fac=function(j){return new(j||ne)(M.Y36(M.SBq),M.Y36(o.t4),M.Y36(ye.a5,10),M.Y36(ye.F,8),M.Y36(ye.sg,8),M.Y36(se.rD),M.Y36(Ie,10),M.Y36(fe),M.Y36(M.R0b),M.Y36(Ee.G_,8))},ne.\u0275dir=M.lG2({type:ne,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(j,$){1&j&&M.NdJ("focus",function(){return $._focusChanged(!0)})("blur",function(){return $._focusChanged(!1)})("input",function(){return $._onInput()}),2&j&&(M.Ikx("id",$.id)("disabled",$.disabled)("required",$.required),M.uIk("name",$.name||null)("readonly",$.readonly&&!$._isNativeSelect||null)("aria-invalid",$.empty&&$.required?null:$.errorState)("aria-required",$.required)("id",$.id),M.ekj("mat-input-server",$._isServer)("mat-mdc-form-field-textarea-control",$._isInFormField&&$._isTextarea)("mat-mdc-form-field-input-control",$._isInFormField)("mdc-text-field__input",$._isInFormField)("mat-mdc-native-select-inline",$._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],features:[M._Bn([{provide:Ee.Eo,useExisting:ne}]),M.qOj,M.TTD]}),ne})(),_t=(()=>{class ne{}return ne.\u0275fac=function(j){return new(j||ne)},ne.\u0275mod=M.oAB({type:ne}),ne.\u0275inj=M.cJS({imports:[se.BQ,Ee.lN,Ee.lN,Z,se.BQ]}),ne})()},4385:(ze,me,b)=>{b.d(me,{LD:()=>xn,gD:()=>tn});var c=b(8184),o=b(6895),M=b(1571),re=b(3238),Q=b(9549),H=b(5589),fe=b(2687),Se=b(445),ie=b(1281),Z=b(5017),ye=b(9521),se=b(433),Ee=b(7579),we=b(9770),Ie=b(6451),Be=b(8675),Ve=b(3900),Je=b(5698),pt=b(9300),_t=b(4004),ne=b(1884),q=b(2722),j=b(7340);const $=["trigger"],ee=["panel"];function ae(Ct,Ht){if(1&Ct&&(M.TgZ(0,"span",10),M._uU(1),M.qZA()),2&Ct){const oe=M.oxw();M.xp6(1),M.Oqu(oe.placeholder)}}function Pe(Ct,Ht){if(1&Ct&&(M.TgZ(0,"span",14),M._uU(1),M.qZA()),2&Ct){const oe=M.oxw(2);M.xp6(1),M.Oqu(oe.triggerValue)}}function de(Ct,Ht){1&Ct&&M.Hsn(0,0,["*ngSwitchCase","true"])}function be(Ct,Ht){if(1&Ct&&(M.TgZ(0,"span",11),M.YNc(1,Pe,2,1,"span",12),M.YNc(2,de,1,0,"ng-content",13),M.qZA()),2&Ct){const oe=M.oxw();M.Q6J("ngSwitch",!!oe.customTrigger),M.xp6(2),M.Q6J("ngSwitchCase",!0)}}function Fe(Ct,Ht){if(1&Ct){const oe=M.EpF();M.O4$(),M.kcU(),M.TgZ(0,"div",15,16),M.NdJ("@transformPanel.done",function(G){M.CHM(oe);const Re=M.oxw();return M.KtG(Re._panelDoneAnimatingStream.next(G.toState))})("keydown",function(G){M.CHM(oe);const Re=M.oxw();return M.KtG(Re._handleKeydown(G))}),M.Hsn(2,1),M.qZA()}if(2&Ct){const oe=M.oxw();M.Gre("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",oe._getPanelTheme(),""),M.Q6J("ngClass",oe.panelClass)("@transformPanel","showing"),M.uIk("id",oe.id+"-panel")("aria-multiselectable",oe.multiple)("aria-label",oe.ariaLabel||null)("aria-labelledby",oe._getPanelAriaLabelledby())}}const ke=[[["mat-select-trigger"]],"*"],Xe=["mat-select-trigger","*"],$e={transformPanelWrap:(0,j.X$)("transformPanelWrap",[(0,j.eR)("* => void",(0,j.IO)("@transformPanel",[(0,j.pV)()],{optional:!0}))]),transformPanel:(0,j.X$)("transformPanel",[(0,j.SB)("void",(0,j.oB)({opacity:0,transform:"scale(1, 0.8)"})),(0,j.eR)("void => showing",(0,j.jt)("120ms cubic-bezier(0, 0, 0.2, 1)",(0,j.oB)({opacity:1,transform:"scale(1, 1)"}))),(0,j.eR)("* => void",(0,j.jt)("100ms linear",(0,j.oB)({opacity:0})))])};let st=0;const mt=new M.OlP("mat-select-scroll-strategy"),lt=new M.OlP("MAT_SELECT_CONFIG"),jt={provide:mt,deps:[c.aV],useFactory:function ut(Ct){return()=>Ct.scrollStrategies.reposition()}},Lt=new M.OlP("MatSelectTrigger");class yt{constructor(Ht,oe){this.source=Ht,this.value=oe}}const hn=(0,re.Kr)((0,re.sb)((0,re.Id)((0,re.FD)(class{constructor(Ct,Ht,oe,ve,G){this._elementRef=Ct,this._defaultErrorStateMatcher=Ht,this._parentForm=oe,this._parentFormGroup=ve,this.ngControl=G,this.stateChanges=new Ee.x}}))));let It=(()=>{class Ct extends hn{get focused(){return this._focused||this._panelOpen}get placeholder(){return this._placeholder}set placeholder(oe){this._placeholder=oe,this.stateChanges.next()}get required(){var oe,ve,G,Re;return null!==(oe=null!==(ve=this._required)&&void 0!==ve?ve:null===(G=this.ngControl)||void 0===G||null===(Re=G.control)||void 0===Re?void 0:Re.hasValidator(se.kI.required))&&void 0!==oe&&oe}set required(oe){this._required=(0,ie.Ig)(oe),this.stateChanges.next()}get multiple(){return this._multiple}set multiple(oe){this._multiple=(0,ie.Ig)(oe)}get disableOptionCentering(){return this._disableOptionCentering}set disableOptionCentering(oe){this._disableOptionCentering=(0,ie.Ig)(oe)}get compareWith(){return this._compareWith}set compareWith(oe){this._compareWith=oe,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(oe){this._assignValue(oe)&&this._onChange(oe)}get typeaheadDebounceInterval(){return this._typeaheadDebounceInterval}set typeaheadDebounceInterval(oe){this._typeaheadDebounceInterval=(0,ie.su)(oe)}get id(){return this._id}set id(oe){this._id=oe||this._uid,this.stateChanges.next()}constructor(oe,ve,G,Re,tt,ue,R,K,De,Ce,Ke,it,et,_e){var Ye,F,pe;super(tt,Re,R,K,Ce),this._viewportRuler=oe,this._changeDetectorRef=ve,this._ngZone=G,this._dir=ue,this._parentFormField=De,this._liveAnnouncer=et,this._defaultOptions=_e,this._panelOpen=!1,this._compareWith=(te,ge)=>te===ge,this._uid="mat-select-"+st++,this._triggerAriaLabelledBy=null,this._destroy=new Ee.x,this._onChange=()=>{},this._onTouched=()=>{},this._valueId="mat-select-value-"+st++,this._panelDoneAnimatingStream=new Ee.x,this._overlayPanelClass=(null===(Ye=this._defaultOptions)||void 0===Ye?void 0:Ye.overlayPanelClass)||"",this._focused=!1,this.controlType="mat-select",this._multiple=!1,this._disableOptionCentering=null!==(F=null===(pe=this._defaultOptions)||void 0===pe?void 0:pe.disableOptionCentering)&&void 0!==F&&F,this.ariaLabel="",this.optionSelectionChanges=(0,we.P)(()=>{const te=this.options;return te?te.changes.pipe((0,Be.O)(te),(0,Ve.w)(()=>(0,Ie.T)(...te.map(ge=>ge.onSelectionChange)))):this._ngZone.onStable.pipe((0,Je.q)(1),(0,Ve.w)(()=>this.optionSelectionChanges))}),this.openedChange=new M.vpe,this._openedStream=this.openedChange.pipe((0,pt.h)(te=>te),(0,_t.U)(()=>{})),this._closedStream=this.openedChange.pipe((0,pt.h)(te=>!te),(0,_t.U)(()=>{})),this.selectionChange=new M.vpe,this.valueChange=new M.vpe,this.ngControl&&(this.ngControl.valueAccessor=this),null!=(null==_e?void 0:_e.typeaheadDebounceInterval)&&(this._typeaheadDebounceInterval=_e.typeaheadDebounceInterval),this._scrollStrategyFactory=it,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(Ke)||0,this.id=this.id}ngOnInit(){this._selectionModel=new Z.Ov(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe((0,ne.x)(),(0,q.R)(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen))}ngAfterContentInit(){this._initKeyManager(),this._selectionModel.changed.pipe((0,q.R)(this._destroy)).subscribe(oe=>{oe.added.forEach(ve=>ve.select()),oe.removed.forEach(ve=>ve.deselect())}),this.options.changes.pipe((0,Be.O)(null),(0,q.R)(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const oe=this._getTriggerAriaLabelledby(),ve=this.ngControl;if(oe!==this._triggerAriaLabelledBy){const G=this._elementRef.nativeElement;this._triggerAriaLabelledBy=oe,oe?G.setAttribute("aria-labelledby",oe):G.removeAttribute("aria-labelledby")}ve&&(this._previousControl!==ve.control&&(void 0!==this._previousControl&&null!==ve.disabled&&ve.disabled!==this.disabled&&(this.disabled=ve.disabled),this._previousControl=ve.control),this.updateErrorState())}ngOnChanges(oe){(oe.disabled||oe.userAriaDescribedBy)&&this.stateChanges.next(),oe.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this._typeaheadDebounceInterval)}ngOnDestroy(){var oe;null===(oe=this._keyManager)||void 0===oe||oe.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck())}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched())}writeValue(oe){this._assignValue(oe)}registerOnChange(oe){this._onChange=oe}registerOnTouched(oe){this._onTouched=oe}setDisabledState(oe){this.disabled=oe,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){var oe,ve;return this.multiple?(null===(oe=this._selectionModel)||void 0===oe?void 0:oe.selected)||[]:null===(ve=this._selectionModel)||void 0===ve?void 0:ve.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const oe=this._selectionModel.selected.map(ve=>ve.viewValue);return this._isRtl()&&oe.reverse(),oe.join(", ")}return this._selectionModel.selected[0].viewValue}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(oe){this.disabled||(this.panelOpen?this._handleOpenKeydown(oe):this._handleClosedKeydown(oe))}_handleClosedKeydown(oe){const ve=oe.keyCode,G=ve===ye.JH||ve===ye.LH||ve===ye.oh||ve===ye.SV,Re=ve===ye.K5||ve===ye.L_,tt=this._keyManager;if(!tt.isTyping()&&Re&&!(0,ye.Vb)(oe)||(this.multiple||oe.altKey)&&G)oe.preventDefault(),this.open();else if(!this.multiple){const ue=this.selected;tt.onKeydown(oe);const R=this.selected;R&&ue!==R&&this._liveAnnouncer.announce(R.viewValue,1e4)}}_handleOpenKeydown(oe){const ve=this._keyManager,G=oe.keyCode,Re=G===ye.JH||G===ye.LH,tt=ve.isTyping();if(Re&&oe.altKey)oe.preventDefault(),this.close();else if(tt||G!==ye.K5&&G!==ye.L_||!ve.activeItem||(0,ye.Vb)(oe))if(!tt&&this._multiple&&G===ye.A&&oe.ctrlKey){oe.preventDefault();const ue=this.options.some(R=>!R.disabled&&!R.selected);this.options.forEach(R=>{R.disabled||(ue?R.select():R.deselect())})}else{const ue=ve.activeItemIndex;ve.onKeydown(oe),this._multiple&&Re&&oe.shiftKey&&ve.activeItem&&ve.activeItemIndex!==ue&&ve.activeItem._selectViaInteraction()}else oe.preventDefault(),ve.activeItem._selectViaInteraction()}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){var oe;this._focused=!1,null===(oe=this._keyManager)||void 0===oe||oe.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe((0,Je.q)(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(oe){if(this._selectionModel.selected.forEach(ve=>ve.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&oe)Array.isArray(oe),oe.forEach(ve=>this._selectOptionByValue(ve)),this._sortValues();else{const ve=this._selectOptionByValue(oe);ve?this._keyManager.updateActiveItem(ve):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(oe){const ve=this.options.find(G=>{if(this._selectionModel.isSelected(G))return!1;try{return null!=G.value&&this._compareWith(G.value,oe)}catch{return!1}});return ve&&this._selectionModel.select(ve),ve}_assignValue(oe){return!!(oe!==this._value||this._multiple&&Array.isArray(oe))&&(this.options&&this._setSelectionByValue(oe),this._value=oe,!0)}_initKeyManager(){this._keyManager=new fe.s1(this.options).withTypeAhead(this._typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const oe=(0,Ie.T)(this.options.changes,this._destroy);this.optionSelectionChanges.pipe((0,q.R)(oe)).subscribe(ve=>{this._onSelect(ve.source,ve.isUserInput),ve.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),(0,Ie.T)(...this.options.map(ve=>ve._stateChanges)).pipe((0,q.R)(oe)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(oe,ve){const G=this._selectionModel.isSelected(oe);null!=oe.value||this._multiple?(G!==oe.selected&&(oe.selected?this._selectionModel.select(oe):this._selectionModel.deselect(oe)),ve&&this._keyManager.setActiveItem(oe),this.multiple&&(this._sortValues(),ve&&this.focus())):(oe.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(oe.value)),G!==this._selectionModel.isSelected(oe)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const oe=this.options.toArray();this._selectionModel.sort((ve,G)=>this.sortComparator?this.sortComparator(ve,G,oe):oe.indexOf(ve)-oe.indexOf(G)),this.stateChanges.next()}}_propagateChanges(oe){let ve=null;ve=this.multiple?this.selected.map(G=>G.value):this.selected?this.selected.value:oe,this._value=ve,this.valueChange.emit(ve),this._onChange(ve),this.selectionChange.emit(this._getChangeEvent(ve)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){this._keyManager&&(this.empty?this._keyManager.setFirstItemActive():this._keyManager.setActiveItem(this._selectionModel.selected[0]))}_canOpen(){var oe;return!this._panelOpen&&!this.disabled&&(null===(oe=this.options)||void 0===oe?void 0:oe.length)>0}focus(oe){this._elementRef.nativeElement.focus(oe)}_getPanelAriaLabelledby(){var oe;if(this.ariaLabel)return null;const ve=null===(oe=this._parentFormField)||void 0===oe?void 0:oe.getLabelId();return this.ariaLabelledby?(ve?ve+" ":"")+this.ariaLabelledby:ve}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){var oe;if(this.ariaLabel)return null;const ve=null===(oe=this._parentFormField)||void 0===oe?void 0:oe.getLabelId();let G=(ve?ve+" ":"")+this._valueId;return this.ariaLabelledby&&(G+=" "+this.ariaLabelledby),G}_panelDoneAnimating(oe){this.openedChange.emit(oe)}setDescribedByIds(oe){oe.length?this._elementRef.nativeElement.setAttribute("aria-describedby",oe.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this._panelOpen||!this.empty||this._focused&&!!this._placeholder}}return Ct.\u0275fac=function(oe){return new(oe||Ct)(M.Y36(H.rL),M.Y36(M.sBO),M.Y36(M.R0b),M.Y36(re.rD),M.Y36(M.SBq),M.Y36(Se.Is,8),M.Y36(se.F,8),M.Y36(se.sg,8),M.Y36(Q.G_,8),M.Y36(se.a5,10),M.$8M("tabindex"),M.Y36(mt),M.Y36(fe.Kd),M.Y36(lt,8))},Ct.\u0275dir=M.lG2({type:Ct,viewQuery:function(oe,ve){if(1&oe&&(M.Gf($,5),M.Gf(ee,5),M.Gf(c.pI,5)),2&oe){let G;M.iGM(G=M.CRH())&&(ve.trigger=G.first),M.iGM(G=M.CRH())&&(ve.panel=G.first),M.iGM(G=M.CRH())&&(ve._overlayDir=G.first)}},inputs:{userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",placeholder:"placeholder",required:"required",multiple:"multiple",disableOptionCentering:"disableOptionCentering",compareWith:"compareWith",value:"value",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:"typeaheadDebounceInterval",sortComparator:"sortComparator",id:"id"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},features:[M.qOj,M.TTD]}),Ct})(),tn=(()=>{class Ct extends It{constructor(){super(...arguments),this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}]}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}ngOnInit(){super.ngOnInit(),this._viewportRuler.change().pipe((0,q.R)(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(),this._changeDetectorRef.detectChanges())})}ngAfterViewInit(){this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin())}open(){this._overlayWidth=this._getOverlayWidth(),super.open(),this.stateChanges.next()}close(){super.close(),this.stateChanges.next()}_scrollOptionIntoView(oe){const ve=this.options.toArray()[oe];if(ve){const G=this.panel.nativeElement,Re=(0,re.CB)(oe,this.options,this.optionGroups),tt=ve._getHostElement();G.scrollTop=0===oe&&1===Re?0:(0,re.jH)(tt.offsetTop,tt.offsetHeight,G.scrollTop,G.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(oe){return new yt(this,oe)}_getOverlayWidth(){return(this._preferredOverlayOrigin instanceof c.xu?this._preferredOverlayOrigin.elementRef:this._preferredOverlayOrigin||this._elementRef).nativeElement.getBoundingClientRect().width}}return Ct.\u0275fac=function(){let Ht;return function(ve){return(Ht||(Ht=M.n5z(Ct)))(ve||Ct)}}(),Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["mat-select"]],contentQueries:function(oe,ve,G){if(1&oe&&(M.Suo(G,Lt,5),M.Suo(G,re.ey,5),M.Suo(G,re.K7,5)),2&oe){let Re;M.iGM(Re=M.CRH())&&(ve.customTrigger=Re.first),M.iGM(Re=M.CRH())&&(ve.options=Re),M.iGM(Re=M.CRH())&&(ve.optionGroups=Re)}},hostAttrs:["role","combobox","aria-autocomplete","none","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(oe,ve){1&oe&&M.NdJ("keydown",function(Re){return ve._handleKeydown(Re)})("focus",function(){return ve._onFocus()})("blur",function(){return ve._onBlur()}),2&oe&&(M.uIk("id",ve.id)("tabindex",ve.tabIndex)("aria-controls",ve.panelOpen?ve.id+"-panel":null)("aria-expanded",ve.panelOpen)("aria-label",ve.ariaLabel||null)("aria-required",ve.required.toString())("aria-disabled",ve.disabled.toString())("aria-invalid",ve.errorState)("aria-activedescendant",ve._getAriaActiveDescendant()),M.ekj("mat-mdc-select-disabled",ve.disabled)("mat-mdc-select-invalid",ve.errorState)("mat-mdc-select-required",ve.required)("mat-mdc-select-empty",ve.empty)("mat-mdc-select-multiple",ve.multiple))},inputs:{disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex"},exportAs:["matSelect"],features:[M._Bn([{provide:Q.Eo,useExisting:Ct},{provide:re.HF,useExisting:Ct}]),M.qOj],ngContentSelectors:Xe,decls:11,vars:11,consts:[["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],[1,"mat-mdc-select-value",3,"ngSwitch"],["class","mat-mdc-select-placeholder mat-mdc-select-min-line",4,"ngSwitchCase"],["class","mat-mdc-select-value-text",3,"ngSwitch",4,"ngSwitchCase"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","backdropClick","attach","detach"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text",3,"ngSwitch"],["class","mat-mdc-select-min-line",4,"ngSwitchDefault"],[4,"ngSwitchCase"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"ngClass","keydown"],["panel",""]],template:function(oe,ve){if(1&oe&&(M.F$t(ke),M.TgZ(0,"div",0,1),M.NdJ("click",function(){return ve.toggle()}),M.TgZ(3,"div",2),M.YNc(4,ae,2,1,"span",3),M.YNc(5,be,3,2,"span",4),M.qZA(),M.TgZ(6,"div",5)(7,"div",6),M.O4$(),M.TgZ(8,"svg",7),M._UZ(9,"path",8),M.qZA()()()(),M.YNc(10,Fe,3,9,"ng-template",9),M.NdJ("backdropClick",function(){return ve.close()})("attach",function(){return ve._onAttached()})("detach",function(){return ve.close()})),2&oe){const G=M.MAs(1);M.uIk("aria-owns",ve.panelOpen?ve.id+"-panel":null),M.xp6(3),M.Q6J("ngSwitch",ve.empty),M.uIk("id",ve._valueId),M.xp6(1),M.Q6J("ngSwitchCase",!0),M.xp6(1),M.Q6J("ngSwitchCase",!1),M.xp6(5),M.Q6J("cdkConnectedOverlayPanelClass",ve._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",ve._scrollStrategy)("cdkConnectedOverlayOrigin",ve._preferredOverlayOrigin||G)("cdkConnectedOverlayOpen",ve.panelOpen)("cdkConnectedOverlayPositions",ve._positions)("cdkConnectedOverlayWidth",ve._overlayWidth)}},dependencies:[o.mk,o.RF,o.n9,o.ED,c.pI,c.xu],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}.mat-mdc-select{display:inline-block;width:100%;outline:none}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:translateY(-8px)}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-select-arrow{width:10px;height:5px;position:relative}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}.mdc-menu-surface.mat-mdc-select-panel{width:100%;max-height:275px;position:static;outline:0;margin:0;padding:8px 0;list-style-type:none}.mdc-menu-surface.mat-mdc-select-panel:focus{outline:none}.cdk-high-contrast-active .mdc-menu-surface.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) .mdc-menu-surface.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above .mdc-menu-surface.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}'],encapsulation:2,data:{animation:[$e.transformPanel]},changeDetection:0}),Ct})(),xn=(()=>{class Ct{}return Ct.\u0275fac=function(oe){return new(oe||Ct)},Ct.\u0275mod=M.oAB({type:Ct}),Ct.\u0275inj=M.cJS({providers:[jt],imports:[o.ez,c.U8,re.Ng,re.BQ,H.ZD,Q.lN,re.Ng,re.BQ]}),Ct})()},1481:(ze,me,b)=>{b.d(me,{Dx:()=>Ce,H7:()=>on,b2:()=>tt,q6:()=>oe,se:()=>Fe});var c=b(6895),o=b(1571);class M extends c.w_{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class re extends M{static makeCurrent(){(0,c.HT)(new re)}onAndCancel(xe,J,Ne){return xe.addEventListener(J,Ne,!1),()=>{xe.removeEventListener(J,Ne,!1)}}dispatchEvent(xe,J){xe.dispatchEvent(J)}remove(xe){xe.parentNode&&xe.parentNode.removeChild(xe)}createElement(xe,J){return(J=J||this.getDefaultDocument()).createElement(xe)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(xe){return xe.nodeType===Node.ELEMENT_NODE}isShadowRoot(xe){return xe instanceof DocumentFragment}getGlobalEventTarget(xe,J){return"window"===J?window:"document"===J?xe:"body"===J?xe.body:null}getBaseHref(xe){const J=function H(){return Q=Q||document.querySelector("base"),Q?Q.getAttribute("href"):null}();return null==J?null:function Se(Oe){fe=fe||document.createElement("a"),fe.setAttribute("href",Oe);const xe=fe.pathname;return"/"===xe.charAt(0)?xe:`/${xe}`}(J)}resetBaseElement(){Q=null}getUserAgent(){return window.navigator.userAgent}getCookie(xe){return(0,c.Mx)(document.cookie,xe)}}let fe,Q=null;const ie=new o.OlP("TRANSITION_ID"),ye=[{provide:o.ip1,useFactory:function Z(Oe,xe,J){return()=>{J.get(o.CZH).donePromise.then(()=>{const Ne=(0,c.q)(),Ge=xe.querySelectorAll(`style[ng-transition="${Oe}"]`);for(let Tt=0;Tt{class Oe{build(){return new XMLHttpRequest}}return Oe.\u0275fac=function(J){return new(J||Oe)},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();const we=new o.OlP("EventManagerPlugins");let Ie=(()=>{class Oe{constructor(J,Ne){this._zone=Ne,this._eventNameToPlugin=new Map,J.forEach(Ge=>Ge.manager=this),this._plugins=J.slice().reverse()}addEventListener(J,Ne,Ge){return this._findPluginFor(Ne).addEventListener(J,Ne,Ge)}addGlobalEventListener(J,Ne,Ge){return this._findPluginFor(Ne).addGlobalEventListener(J,Ne,Ge)}getZone(){return this._zone}_findPluginFor(J){const Ne=this._eventNameToPlugin.get(J);if(Ne)return Ne;const Ge=this._plugins;for(let Tt=0;Tt{class Oe{constructor(){this._stylesSet=new Set}addStyles(J){const Ne=new Set;J.forEach(Ge=>{this._stylesSet.has(Ge)||(this._stylesSet.add(Ge),Ne.add(Ge))}),this.onStylesAdded(Ne)}onStylesAdded(J){}getAllStyles(){return Array.from(this._stylesSet)}}return Oe.\u0275fac=function(J){return new(J||Oe)},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})(),Je=(()=>{class Oe extends Ve{constructor(J){super(),this._doc=J,this._hostNodes=new Map,this._hostNodes.set(J.head,[])}_addStylesToHost(J,Ne,Ge){J.forEach(Tt=>{const Jt=this._doc.createElement("style");Jt.textContent=Tt,Ge.push(Ne.appendChild(Jt))})}addHost(J){const Ne=[];this._addStylesToHost(this._stylesSet,J,Ne),this._hostNodes.set(J,Ne)}removeHost(J){const Ne=this._hostNodes.get(J);Ne&&Ne.forEach(pt),this._hostNodes.delete(J)}onStylesAdded(J){this._hostNodes.forEach((Ne,Ge)=>{this._addStylesToHost(J,Ge,Ne)})}ngOnDestroy(){this._hostNodes.forEach(J=>J.forEach(pt))}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();function pt(Oe){(0,c.q)().remove(Oe)}const _t={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},ne=/%COMP%/g,j="%COMP%",$=`_nghost-${j}`,ee=`_ngcontent-${j}`;function de(Oe,xe){return xe.flat(100).map(J=>J.replace(ne,Oe))}function be(Oe){return xe=>{if("__ngUnwrap__"===xe)return Oe;!1===Oe(xe)&&(xe.preventDefault(),xe.returnValue=!1)}}let Fe=(()=>{class Oe{constructor(J,Ne,Ge){this.eventManager=J,this.sharedStylesHost=Ne,this.appId=Ge,this.rendererByCompId=new Map,this.defaultRenderer=new ke(J)}createRenderer(J,Ne){if(!J||!Ne)return this.defaultRenderer;switch(Ne.encapsulation){case o.ifc.Emulated:{let Ge=this.rendererByCompId.get(Ne.id);return Ge||(Ge=new At(this.eventManager,this.sharedStylesHost,Ne,this.appId),this.rendererByCompId.set(Ne.id,Ge)),Ge.applyToHost(J),Ge}case o.ifc.ShadowDom:return new ot(this.eventManager,this.sharedStylesHost,J,Ne);default:if(!this.rendererByCompId.has(Ne.id)){const Ge=de(Ne.id,Ne.styles);this.sharedStylesHost.addStyles(Ge),this.rendererByCompId.set(Ne.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(Ie),o.LFG(Je),o.LFG(o.AFp))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();class ke{constructor(xe){this.eventManager=xe,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(xe,J){return J?document.createElementNS(_t[J]||J,xe):document.createElement(xe)}createComment(xe){return document.createComment(xe)}createText(xe){return document.createTextNode(xe)}appendChild(xe,J){(bt(xe)?xe.content:xe).appendChild(J)}insertBefore(xe,J,Ne){xe&&(bt(xe)?xe.content:xe).insertBefore(J,Ne)}removeChild(xe,J){xe&&xe.removeChild(J)}selectRootElement(xe,J){let Ne="string"==typeof xe?document.querySelector(xe):xe;if(!Ne)throw new Error(`The selector "${xe}" did not match any elements`);return J||(Ne.textContent=""),Ne}parentNode(xe){return xe.parentNode}nextSibling(xe){return xe.nextSibling}setAttribute(xe,J,Ne,Ge){if(Ge){J=Ge+":"+J;const Tt=_t[Ge];Tt?xe.setAttributeNS(Tt,J,Ne):xe.setAttribute(J,Ne)}else xe.setAttribute(J,Ne)}removeAttribute(xe,J,Ne){if(Ne){const Ge=_t[Ne];Ge?xe.removeAttributeNS(Ge,J):xe.removeAttribute(`${Ne}:${J}`)}else xe.removeAttribute(J)}addClass(xe,J){xe.classList.add(J)}removeClass(xe,J){xe.classList.remove(J)}setStyle(xe,J,Ne,Ge){Ge&(o.JOm.DashCase|o.JOm.Important)?xe.style.setProperty(J,Ne,Ge&o.JOm.Important?"important":""):xe.style[J]=Ne}removeStyle(xe,J,Ne){Ne&o.JOm.DashCase?xe.style.removeProperty(J):xe.style[J]=""}setProperty(xe,J,Ne){xe[J]=Ne}setValue(xe,J){xe.nodeValue=J}listen(xe,J,Ne){return"string"==typeof xe?this.eventManager.addGlobalEventListener(xe,J,be(Ne)):this.eventManager.addEventListener(xe,J,be(Ne))}}function bt(Oe){return"TEMPLATE"===Oe.tagName&&void 0!==Oe.content}class At extends ke{constructor(xe,J,Ne,Ge){super(xe),this.component=Ne;const Tt=de(Ge+"-"+Ne.id,Ne.styles);J.addStyles(Tt),this.contentAttr=function ae(Oe){return ee.replace(ne,Oe)}(Ge+"-"+Ne.id),this.hostAttr=function Pe(Oe){return $.replace(ne,Oe)}(Ge+"-"+Ne.id)}applyToHost(xe){super.setAttribute(xe,this.hostAttr,"")}createElement(xe,J){const Ne=super.createElement(xe,J);return super.setAttribute(Ne,this.contentAttr,""),Ne}}class ot extends ke{constructor(xe,J,Ne,Ge){super(xe),this.sharedStylesHost=J,this.hostEl=Ne,this.shadowRoot=Ne.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const Tt=de(Ge.id,Ge.styles);for(let Jt=0;Jt{class Oe extends Be{constructor(J){super(J)}supports(J){return!0}addEventListener(J,Ne,Ge){return J.addEventListener(Ne,Ge,!1),()=>this.removeEventListener(J,Ne,Ge)}removeEventListener(J,Ne,Ge){return J.removeEventListener(Ne,Ge)}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();const mt=["alt","control","meta","shift"],ut={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},lt={alt:Oe=>Oe.altKey,control:Oe=>Oe.ctrlKey,meta:Oe=>Oe.metaKey,shift:Oe=>Oe.shiftKey};let jt=(()=>{class Oe extends Be{constructor(J){super(J)}supports(J){return null!=Oe.parseEventName(J)}addEventListener(J,Ne,Ge){const Tt=Oe.parseEventName(Ne),Jt=Oe.eventCallback(Tt.fullKey,Ge,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>(0,c.q)().onAndCancel(J,Tt.domEventName,Jt))}static parseEventName(J){const Ne=J.toLowerCase().split("."),Ge=Ne.shift();if(0===Ne.length||"keydown"!==Ge&&"keyup"!==Ge)return null;const Tt=Oe._normalizeKey(Ne.pop());let Jt="",un=Ne.indexOf("code");if(un>-1&&(Ne.splice(un,1),Jt="code."),mt.forEach(jn=>{const si=Ne.indexOf(jn);si>-1&&(Ne.splice(si,1),Jt+=jn+".")}),Jt+=Tt,0!=Ne.length||0===Tt.length)return null;const An={};return An.domEventName=Ge,An.fullKey=Jt,An}static matchEventFullKeyCode(J,Ne){let Ge=ut[J.key]||J.key,Tt="";return Ne.indexOf("code.")>-1&&(Ge=J.code,Tt="code."),!(null==Ge||!Ge)&&(Ge=Ge.toLowerCase()," "===Ge?Ge="space":"."===Ge&&(Ge="dot"),mt.forEach(Jt=>{Jt!==Ge&&(0,lt[Jt])(J)&&(Tt+=Jt+".")}),Tt+=Ge,Tt===Ne)}static eventCallback(J,Ne,Ge){return Tt=>{Oe.matchEventFullKeyCode(Tt,J)&&Ge.runGuarded(()=>Ne(Tt))}}static _normalizeKey(J){return"esc"===J?"escape":J}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();const oe=(0,o.eFA)(o._c5,"browser",[{provide:o.Lbi,useValue:c.bD},{provide:o.g9A,useValue:function tn(){re.makeCurrent()},multi:!0},{provide:c.K0,useFactory:function Ct(){return(0,o.RDi)(document),document},deps:[]}]),ve=new o.OlP(""),G=[{provide:o.rWj,useClass:class se{addToWindow(xe){o.dqk.getAngularTestability=(Ne,Ge=!0)=>{const Tt=xe.findTestabilityInTree(Ne,Ge);if(null==Tt)throw new Error("Could not find testability for element.");return Tt},o.dqk.getAllAngularTestabilities=()=>xe.getAllTestabilities(),o.dqk.getAllAngularRootElements=()=>xe.getAllRootElements(),o.dqk.frameworkStabilizers||(o.dqk.frameworkStabilizers=[]),o.dqk.frameworkStabilizers.push(Ne=>{const Ge=o.dqk.getAllAngularTestabilities();let Tt=Ge.length,Jt=!1;const un=function(An){Jt=Jt||An,Tt--,0==Tt&&Ne(Jt)};Ge.forEach(function(An){An.whenStable(un)})})}findTestabilityInTree(xe,J,Ne){if(null==J)return null;const Ge=xe.getTestability(J);return null!=Ge?Ge:Ne?(0,c.q)().isShadowRoot(J)?this.findTestabilityInTree(xe,J.host,!0):this.findTestabilityInTree(xe,J.parentElement,!0):null}},deps:[]},{provide:o.lri,useClass:o.dDg,deps:[o.R0b,o.eoX,o.rWj]},{provide:o.dDg,useClass:o.dDg,deps:[o.R0b,o.eoX,o.rWj]}],Re=[{provide:o.zSh,useValue:"root"},{provide:o.qLn,useFactory:function xn(){return new o.qLn},deps:[]},{provide:we,useClass:st,multi:!0,deps:[c.K0,o.R0b,o.Lbi]},{provide:we,useClass:jt,multi:!0,deps:[c.K0]},{provide:Fe,useClass:Fe,deps:[Ie,Je,o.AFp]},{provide:o.FYo,useExisting:Fe},{provide:Ve,useExisting:Je},{provide:Je,useClass:Je,deps:[c.K0]},{provide:Ie,useClass:Ie,deps:[we,o.R0b]},{provide:c.JF,useClass:Ee,deps:[]},[]];let tt=(()=>{class Oe{constructor(J){}static withServerTransition(J){return{ngModule:Oe,providers:[{provide:o.AFp,useValue:J.appId},{provide:ie,useExisting:o.AFp},ye]}}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(ve,12))},Oe.\u0275mod=o.oAB({type:Oe}),Oe.\u0275inj=o.cJS({providers:[...Re,...G],imports:[c.ez,o.hGG]}),Oe})(),Ce=(()=>{class Oe{constructor(J){this._doc=J}getTitle(){return this._doc.title}setTitle(J){this._doc.title=J||""}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:function(J){let Ne=null;return Ne=J?new J:function De(){return new Ce((0,o.LFG)(c.K0))}(),Ne},providedIn:"root"}),Oe})();typeof window<"u"&&window;let on=(()=>{class Oe{}return Oe.\u0275fac=function(J){return new(J||Oe)},Oe.\u0275prov=o.Yz7({token:Oe,factory:function(J){let Ne=null;return Ne=J?new(J||Oe):o.LFG(ln),Ne},providedIn:"root"}),Oe})(),ln=(()=>{class Oe extends on{constructor(J){super(),this._doc=J}sanitize(J,Ne){if(null==Ne)return null;switch(J){case o.q3G.NONE:return Ne;case o.q3G.HTML:return(0,o.qzn)(Ne,"HTML")?(0,o.z3N)(Ne):(0,o.EiD)(this._doc,String(Ne)).toString();case o.q3G.STYLE:return(0,o.qzn)(Ne,"Style")?(0,o.z3N)(Ne):Ne;case o.q3G.SCRIPT:if((0,o.qzn)(Ne,"Script"))return(0,o.z3N)(Ne);throw new Error("unsafe value used in a script context");case o.q3G.URL:return(0,o.qzn)(Ne,"URL")?(0,o.z3N)(Ne):(0,o.mCW)(String(Ne));case o.q3G.RESOURCE_URL:if((0,o.qzn)(Ne,"ResourceURL"))return(0,o.z3N)(Ne);throw new Error(`unsafe value used in a resource URL context (see ${o.JZr})`);default:throw new Error(`Unexpected SecurityContext ${J} (see ${o.JZr})`)}}bypassSecurityTrustHtml(J){return(0,o.JVY)(J)}bypassSecurityTrustStyle(J){return(0,o.L6k)(J)}bypassSecurityTrustScript(J){return(0,o.eBb)(J)}bypassSecurityTrustUrl(J){return(0,o.LAX)(J)}bypassSecurityTrustResourceUrl(J){return(0,o.pB0)(J)}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:function(J){let Ne=null;return Ne=J?new J:function Jn(Oe){return new ln(Oe.get(c.K0))}(o.LFG(o.zs3)),Ne},providedIn:"root"}),Oe})()},8247:(ze,me,b)=>{b.d(me,{gz:()=>Kn,F0:()=>Ei,rH:()=>Us,Bz:()=>Kl,lC:()=>Ii});var c=b(1571),o=b(2076),M=b(9646),re=b(1135),Q=b(6805),H=b(9841),fe=b(7272),Se=b(9770),ie=b(9635),Z=b(9751),ye=b(576);function se(f,p){const d=(0,ye.m)(f)?f:()=>f,_=w=>w.error(d());return new Z.y(p?w=>p.schedule(_,0,w):_)}var Ee=b(515),we=b(727),Ie=b(4482),Be=b(5403);function Ve(){return(0,Ie.e)((f,p)=>{let d=null;f._refCount++;const _=(0,Be.x)(p,void 0,void 0,void 0,()=>{if(!f||f._refCount<=0||0<--f._refCount)return void(d=null);const w=f._connection,N=d;d=null,w&&(!N||w===N)&&w.unsubscribe(),p.unsubscribe()});f.subscribe(_),_.closed||(d=f.connect())})}class Je extends Z.y{constructor(p,d){super(),this.source=p,this.subjectFactory=d,this._subject=null,this._refCount=0,this._connection=null,(0,Ie.A)(p)&&(this.lift=p.lift)}_subscribe(p){return this.getSubject().subscribe(p)}getSubject(){const p=this._subject;return(!p||p.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:p}=this;this._subject=this._connection=null,null==p||p.unsubscribe()}connect(){let p=this._connection;if(!p){p=this._connection=new we.w0;const d=this.getSubject();p.add(this.source.subscribe((0,Be.x)(d,void 0,()=>{this._teardown(),d.complete()},_=>{this._teardown(),d.error(_)},()=>this._teardown()))),p.closed&&(this._connection=null,p=we.w0.EMPTY)}return p}refCount(){return Ve()(this)}}var pt=b(7579),_t=b(6895),ne=b(4004),q=b(3900),j=b(5698),$=b(8675),ee=b(9300),ae=b(5577);function Pe(f){return(0,Ie.e)((p,d)=>{let _=!1;p.subscribe((0,Be.x)(d,w=>{_=!0,d.next(w)},()=>{_||d.next(f),d.complete()}))})}function de(f=be){return(0,Ie.e)((p,d)=>{let _=!1;p.subscribe((0,Be.x)(d,w=>{_=!0,d.next(w)},()=>_?d.complete():d.error(f())))})}function be(){return new Q.K}var Fe=b(4671);function ke(f,p){const d=arguments.length>=2;return _=>_.pipe(f?(0,ee.h)((w,N)=>f(w,N,_)):Fe.y,(0,j.q)(1),d?Pe(p):de(()=>new Q.K))}var Xe=b(4351),$e=b(8505),bt=b(8421);function At(f){return(0,Ie.e)((p,d)=>{let N,_=null,w=!1;_=p.subscribe((0,Be.x)(d,void 0,void 0,V=>{N=(0,bt.Xf)(f(V,At(f)(p))),_?(_.unsubscribe(),_=null,N.subscribe(d)):w=!0})),w&&(_.unsubscribe(),_=null,N.subscribe(d))})}function ot(f,p,d,_,w){return(N,V)=>{let Ae=d,We=p,ft=0;N.subscribe((0,Be.x)(V,Ot=>{const Et=ft++;We=Ae?f(We,Ot,Et):(Ae=!0,Ot),_&&V.next(We)},w&&(()=>{Ae&&V.next(We),V.complete()})))}}function st(f,p){return(0,Ie.e)(ot(f,p,arguments.length>=2,!0))}function mt(f){return f<=0?()=>Ee.E:(0,Ie.e)((p,d)=>{let _=[];p.subscribe((0,Be.x)(d,w=>{_.push(w),f<_.length&&_.shift()},()=>{for(const w of _)d.next(w);d.complete()},void 0,()=>{_=null}))})}function ut(f,p){const d=arguments.length>=2;return _=>_.pipe(f?(0,ee.h)((w,N)=>f(w,N,_)):Fe.y,mt(1),d?Pe(p):de(()=>new Q.K))}var lt=b(2529),jt=b(9718);function Lt(f){return(0,Ie.e)((p,d)=>{try{p.subscribe(d)}finally{d.add(f)}})}var yt=b(8189),hn=b(1481);const It="primary",yn=Symbol("RouteTitle");class tn{constructor(p){this.params=p||{}}has(p){return Object.prototype.hasOwnProperty.call(this.params,p)}get(p){if(this.has(p)){const d=this.params[p];return Array.isArray(d)?d[0]:d}return null}getAll(p){if(this.has(p)){const d=this.params[p];return Array.isArray(d)?d:[d]}return[]}get keys(){return Object.keys(this.params)}}function xn(f){return new tn(f)}function Ct(f,p,d){const _=d.path.split("/");if(_.length>f.length||"full"===d.pathMatch&&(p.hasChildren()||_.length_[N]===w)}return f===p}function G(f){return Array.prototype.concat.apply([],f)}function Re(f){return f.length>0?f[f.length-1]:null}function ue(f,p){for(const d in f)f.hasOwnProperty(d)&&p(f[d],d)}function R(f){return(0,c.CqO)(f)?f:(0,c.QGY)(f)?(0,o.D)(Promise.resolve(f)):(0,M.of)(f)}const K=!1,De={exact:function et(f,p,d){if(!Vt(f.segments,p.segments)||!pe(f.segments,p.segments,d)||f.numberOfChildren!==p.numberOfChildren)return!1;for(const _ in p.children)if(!f.children[_]||!et(f.children[_],p.children[_],d))return!1;return!0},subset:Ye},Ce={exact:function it(f,p){return oe(f,p)},subset:function _e(f,p){return Object.keys(p).length<=Object.keys(f).length&&Object.keys(p).every(d=>ve(f[d],p[d]))},ignored:()=>!0};function Ke(f,p,d){return De[d.paths](f.root,p.root,d.matrixParams)&&Ce[d.queryParams](f.queryParams,p.queryParams)&&!("exact"===d.fragment&&f.fragment!==p.fragment)}function Ye(f,p,d){return F(f,p,p.segments,d)}function F(f,p,d,_){if(f.segments.length>d.length){const w=f.segments.slice(0,d.length);return!(!Vt(w,d)||p.hasChildren()||!pe(w,d,_))}if(f.segments.length===d.length){if(!Vt(f.segments,d)||!pe(f.segments,d,_))return!1;for(const w in p.children)if(!f.children[w]||!Ye(f.children[w],p.children[w],_))return!1;return!0}{const w=d.slice(0,f.segments.length),N=d.slice(f.segments.length);return!!(Vt(f.segments,w)&&pe(f.segments,w,_)&&f.children[It])&&F(f.children[It],p,N,_)}}function pe(f,p,d){return p.every((_,w)=>Ce[d](f[w].parameters,_.parameters))}class te{constructor(p=new ge([],{}),d={},_=null){this.root=p,this.queryParams=d,this.fragment=_}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=xn(this.queryParams)),this._queryParamMap}toString(){return Ze.serialize(this)}}class ge{constructor(p,d){this.segments=p,this.children=d,this.parent=null,ue(d,(_,w)=>_.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Me(this)}}class rt{constructor(p,d){this.path=p,this.parameters=d}get parameterMap(){return this._parameterMap||(this._parameterMap=xn(this.parameters)),this._parameterMap}toString(){return Ft(this)}}function Vt(f,p){return f.length===p.length&&f.every((d,_)=>d.path===p[_].path)}let mn=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return new gn},providedIn:"root"}),f})();class gn{parse(p){const d=new Ne(p);return new te(d.parseRootSegment(),d.parseQueryParams(),d.parseFragment())}serialize(p){const d=`/${I(p.root,!0)}`,_=function on(f){const p=Object.keys(f).map(d=>{const _=f[d];return Array.isArray(_)?_.map(w=>`${T(d)}=${T(w)}`).join("&"):`${T(d)}=${T(_)}`}).filter(d=>!!d);return p.length?`?${p.join("&")}`:""}(p.queryParams);return`${d}${_}${"string"==typeof p.fragment?`#${function z(f){return encodeURI(f)}(p.fragment)}`:""}`}}const Ze=new gn;function Me(f){return f.segments.map(p=>Ft(p)).join("/")}function I(f,p){if(!f.hasChildren())return Me(f);if(p){const d=f.children[It]?I(f.children[It],!1):"",_=[];return ue(f.children,(w,N)=>{N!==It&&_.push(`${N}:${I(w,!1)}`)}),_.length>0?`${d}(${_.join("//")})`:d}{const d=function St(f,p){let d=[];return ue(f.children,(_,w)=>{w===It&&(d=d.concat(p(_,w)))}),ue(f.children,(_,w)=>{w!==It&&(d=d.concat(p(_,w)))}),d}(f,(_,w)=>w===It?[I(f.children[It],!1)]:[`${w}:${I(_,!1)}`]);return 1===Object.keys(f.children).length&&null!=f.children[It]?`${Me(f)}/${d[0]}`:`${Me(f)}/(${d.join("//")})`}}function A(f){return encodeURIComponent(f).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function T(f){return A(f).replace(/%3B/gi,";")}function Y(f){return A(f).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function He(f){return decodeURIComponent(f)}function gt(f){return He(f.replace(/\+/g,"%20"))}function Ft(f){return`${Y(f.path)}${function kt(f){return Object.keys(f).map(p=>`;${Y(p)}=${Y(f[p])}`).join("")}(f.parameters)}`}const Jn=/^[^\/()?;=#]+/;function ln(f){const p=f.match(Jn);return p?p[0]:""}const _n=/^[^=?&#]+/,xe=/^[^&#]+/;class Ne{constructor(p){this.url=p,this.remaining=p}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new ge([],{}):new ge([],this.parseChildren())}parseQueryParams(){const p={};if(this.consumeOptional("?"))do{this.parseQueryParam(p)}while(this.consumeOptional("&"));return p}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const p=[];for(this.peekStartsWith("(")||p.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),p.push(this.parseSegment());let d={};this.peekStartsWith("/(")&&(this.capture("/"),d=this.parseParens(!0));let _={};return this.peekStartsWith("(")&&(_=this.parseParens(!1)),(p.length>0||Object.keys(d).length>0)&&(_[It]=new ge(p,d)),_}parseSegment(){const p=ln(this.remaining);if(""===p&&this.peekStartsWith(";"))throw new c.vHH(4009,K);return this.capture(p),new rt(He(p),this.parseMatrixParams())}parseMatrixParams(){const p={};for(;this.consumeOptional(";");)this.parseParam(p);return p}parseParam(p){const d=ln(this.remaining);if(!d)return;this.capture(d);let _="";if(this.consumeOptional("=")){const w=ln(this.remaining);w&&(_=w,this.capture(_))}p[He(d)]=He(_)}parseQueryParam(p){const d=function Oe(f){const p=f.match(_n);return p?p[0]:""}(this.remaining);if(!d)return;this.capture(d);let _="";if(this.consumeOptional("=")){const V=function J(f){const p=f.match(xe);return p?p[0]:""}(this.remaining);V&&(_=V,this.capture(_))}const w=gt(d),N=gt(_);if(p.hasOwnProperty(w)){let V=p[w];Array.isArray(V)||(V=[V],p[w]=V),V.push(N)}else p[w]=N}parseParens(p){const d={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const _=ln(this.remaining),w=this.remaining[_.length];if("/"!==w&&")"!==w&&";"!==w)throw new c.vHH(4010,K);let N;_.indexOf(":")>-1?(N=_.slice(0,_.indexOf(":")),this.capture(N),this.capture(":")):p&&(N=It);const V=this.parseChildren();d[N]=1===Object.keys(V).length?V[It]:new ge([],V),this.consumeOptional("//")}return d}peekStartsWith(p){return this.remaining.startsWith(p)}consumeOptional(p){return!!this.peekStartsWith(p)&&(this.remaining=this.remaining.substring(p.length),!0)}capture(p){if(!this.consumeOptional(p))throw new c.vHH(4011,K)}}function Ge(f){return f.segments.length>0?new ge([],{[It]:f}):f}function Tt(f){const p={};for(const _ of Object.keys(f.children)){const N=Tt(f.children[_]);(N.segments.length>0||N.hasChildren())&&(p[_]=N)}return function Jt(f){if(1===f.numberOfChildren&&f.children[It]){const p=f.children[It];return new ge(f.segments.concat(p.segments),p.children)}return f}(new ge(f.segments,p))}function un(f){return f instanceof te}function Ti(f,p,d,_,w){var N;if(0===d.length)return xi(p.root,p.root,p.root,_,w);const V=function bo(f){if("string"==typeof f[0]&&1===f.length&&"/"===f[0])return new jo(!0,0,f);let p=0,d=!1;const _=f.reduce((w,N,V)=>{if("object"==typeof N&&null!=N){if(N.outlets){const Ae={};return ue(N.outlets,(We,ft)=>{Ae[ft]="string"==typeof We?We.split("/"):We}),[...w,{outlets:Ae}]}if(N.segmentPath)return[...w,N.segmentPath]}return"string"!=typeof N?[...w,N]:0===V?(N.split("/").forEach((Ae,We)=>{0==We&&"."===Ae||(0==We&&""===Ae?d=!0:".."===Ae?p++:""!=Ae&&w.push(Ae))}),w):[...w,N]},[]);return new jo(d,p,_)}(d);return V.toRoot()?xi(p.root,p.root,new ge([],{}),_,w):function Ae(ft){var Ot;const Et=function dn(f,p,d,_){if(f.isAbsolute)return new Bi(p.root,!0,0);if(-1===_)return new Bi(d,d===p.root,0);return function Nn(f,p,d){let _=f,w=p,N=d;for(;N>w;){if(N-=w,_=_.parent,!_)throw new c.vHH(4005,!1);w=_.segments.length}return new Bi(_,!1,w-N)}(d,_+(ao(f.commands[0])?0:1),f.numberOfDoubleDots)}(V,p,null===(Ot=f.snapshot)||void 0===Ot?void 0:Ot._urlSegment,ft),Cn=Et.processChildren?Bn(Et.segmentGroup,Et.index,V.commands):ai(Et.segmentGroup,Et.index,V.commands);return xi(p.root,Et.segmentGroup,Cn,_,w)}(null===(N=f.snapshot)||void 0===N?void 0:N._lastPathIndex)}function ao(f){return"object"==typeof f&&null!=f&&!f.outlets&&!f.segmentPath}function Ni(f){return"object"==typeof f&&null!=f&&f.outlets}function xi(f,p,d,_,w){let V,N={};_&&ue(_,(We,ft)=>{N[ft]=Array.isArray(We)?We.map(Ot=>`${Ot}`):`${We}`}),V=f===p?d:Zi(f,p,d);const Ae=Ge(Tt(V));return new te(Ae,N,w)}function Zi(f,p,d){const _={};return ue(f.children,(w,N)=>{_[N]=w===p?d:Zi(w,p,d)}),new ge(f.segments,_)}class jo{constructor(p,d,_){if(this.isAbsolute=p,this.numberOfDoubleDots=d,this.commands=_,p&&_.length>0&&ao(_[0]))throw new c.vHH(4003,!1);const w=_.find(Ni);if(w&&w!==Re(_))throw new c.vHH(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Bi{constructor(p,d,_){this.segmentGroup=p,this.processChildren=d,this.index=_}}function ai(f,p,d){if(f||(f=new ge([],{})),0===f.segments.length&&f.hasChildren())return Bn(f,p,d);const _=function Vi(f,p,d){let _=0,w=p;const N={match:!1,pathIndex:0,commandIndex:0};for(;w=d.length)return N;const V=f.segments[w],Ae=d[_];if(Ni(Ae))break;const We=`${Ae}`,ft=_0&&void 0===We)break;if(We&&ft&&"object"==typeof ft&&void 0===ft.outlets){if(!Tn(We,ft,V))return N;_+=2}else{if(!Tn(We,{},V))return N;_++}w++}return{match:!0,pathIndex:w,commandIndex:_}}(f,p,d),w=d.slice(_.commandIndex);if(_.match&&_.pathIndex{"string"==typeof N&&(N=[N]),null!==N&&(w[V]=ai(f.children[V],p,N))}),ue(f.children,(N,V)=>{void 0===_[V]&&(w[V]=N)}),new ge(f.segments,w)}}function xt(f,p,d){const _=f.segments.slice(0,p);let w=0;for(;w{"string"==typeof d&&(d=[d]),null!==d&&(p[_]=xt(new ge([],{}),0,d))}),p}function Dn(f){const p={};return ue(f,(d,_)=>p[_]=`${d}`),p}function Tn(f,p,d){return f==d.path&&oe(p,d.parameters)}const Gn="imperative";class vn{constructor(p,d){this.id=p,this.url=d}}class Si extends vn{constructor(p,d,_="imperative",w=null){super(p,d),this.type=0,this.navigationTrigger=_,this.restoredState=w}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class sn extends vn{constructor(p,d,_){super(p,d),this.urlAfterRedirects=_,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Ci extends vn{constructor(p,d,_,w){super(p,d),this.reason=_,this.code=w,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class lo extends vn{constructor(p,d,_,w){super(p,d),this.reason=_,this.code=w,this.type=16}}class Qt extends vn{constructor(p,d,_,w){super(p,d),this.error=_,this.target=w,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class Io extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class zo extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class kr extends vn{constructor(p,d,_,w,N){super(p,d),this.urlAfterRedirects=_,this.state=w,this.shouldActivate=N,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class co extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ei extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ti{constructor(p){this.route=p,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class ko{constructor(p){this.route=p,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Ui{constructor(p){this.snapshot=p,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Po{constructor(p){this.snapshot=p,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class rr{constructor(p){this.snapshot=p,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class En{constructor(p){this.snapshot=p,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Pr{constructor(p,d,_){this.routerEvent=p,this.position=d,this.anchor=_,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}let $o=(()=>{class f{createUrlTree(d,_,w,N,V,Ae){return Ti(d||_.root,w,N,V,Ae)}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac}),f})(),Oi=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(p){return $o.\u0275fac(p)},providedIn:"root"}),f})();class Wn{constructor(p){this._root=p}get root(){return this._root.value}parent(p){const d=this.pathFromRoot(p);return d.length>1?d[d.length-2]:null}children(p){const d=sr(p,this._root);return d?d.children.map(_=>_.value):[]}firstChild(p){const d=sr(p,this._root);return d&&d.children.length>0?d.children[0].value:null}siblings(p){const d=Yn(p,this._root);return d.length<2?[]:d[d.length-2].children.map(w=>w.value).filter(w=>w!==p)}pathFromRoot(p){return Yn(p,this._root).map(d=>d.value)}}function sr(f,p){if(f===p.value)return p;for(const d of p.children){const _=sr(f,d);if(_)return _}return null}function Yn(f,p){if(f===p.value)return[p];for(const d of p.children){const _=Yn(f,d);if(_.length)return _.unshift(p),_}return[]}class Pn{constructor(p,d){this.value=p,this.children=d}toString(){return`TreeNode(${this.value})`}}function mi(f){const p={};return f&&f.children.forEach(d=>p[d.value.outlet]=d),p}class uo extends Wn{constructor(p,d){super(p),this.snapshot=d,Yo(this,p)}toString(){return this.snapshot.toString()}}function Co(f,p){const d=function Di(f,p){const V=new qi([],{},{},"",{},It,p,null,f.root,-1,{});return new Ro("",new Pn(V,[]))}(f,p),_=new re.X([new rt("",{})]),w=new re.X({}),N=new re.X({}),V=new re.X({}),Ae=new re.X(""),We=new Kn(_,w,V,Ae,N,It,p,d.root);return We.snapshot=d.root,new uo(new Pn(We,[]),d)}class Kn{constructor(p,d,_,w,N,V,Ae,We){var ft,Ot;this.url=p,this.params=d,this.queryParams=_,this.fragment=w,this.data=N,this.outlet=V,this.component=Ae,this.title=null!==(ft=null===(Ot=this.data)||void 0===Ot?void 0:Ot.pipe((0,ne.U)(Et=>Et[yn])))&&void 0!==ft?ft:(0,M.of)(void 0),this._futureSnapshot=We}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe((0,ne.U)(p=>xn(p)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe((0,ne.U)(p=>xn(p)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function ar(f,p="emptyOnly"){const d=f.pathFromRoot;let _=0;if("always"!==p)for(_=d.length-1;_>=1;){const w=d[_],N=d[_-1];if(w.routeConfig&&""===w.routeConfig.path)_--;else{if(N.component)break;_--}}return function Wo(f){return f.reduce((p,d)=>{var _;return{params:{...p.params,...d.params},data:{...p.data,...d.data},resolve:{...d.data,...p.resolve,...null===(_=d.routeConfig)||void 0===_?void 0:_.data,...d._resolvedData}}},{params:{},data:{},resolve:{}})}(d.slice(_))}class qi{get title(){var p;return null===(p=this.data)||void 0===p?void 0:p[yn]}constructor(p,d,_,w,N,V,Ae,We,ft,Ot,Et){this.url=p,this.params=d,this.queryParams=_,this.fragment=w,this.data=N,this.outlet=V,this.component=Ae,this.routeConfig=We,this._urlSegment=ft,this._lastPathIndex=Ot,this._resolve=Et}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=xn(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=xn(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(_=>_.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Ro extends Wn{constructor(p,d){super(d),this.url=p,Yo(this,d)}toString(){return Rr(this._root)}}function Yo(f,p){p.value._routerState=f,p.children.forEach(d=>Yo(f,d))}function Rr(f){const p=f.children.length>0?` { ${f.children.map(Rr).join(", ")} } `:"";return`${f.value}${p}`}function Fr(f){if(f.snapshot){const p=f.snapshot,d=f._futureSnapshot;f.snapshot=d,oe(p.queryParams,d.queryParams)||f.queryParams.next(d.queryParams),p.fragment!==d.fragment&&f.fragment.next(d.fragment),oe(p.params,d.params)||f.params.next(d.params),function Ht(f,p){if(f.length!==p.length)return!1;for(let d=0;doe(d.parameters,p[_].parameters))}(f.url,p.url);return d&&!(!f.parent!=!p.parent)&&(!f.parent||Do(f.parent,p.parent))}function Xi(f,p,d){if(d&&f.shouldReuseRoute(p.value,d.value.snapshot)){const _=d.value;_._futureSnapshot=p.value;const w=function Fo(f,p,d){return p.children.map(_=>{for(const w of d.children)if(f.shouldReuseRoute(_.value,w.value.snapshot))return Xi(f,_,w);return Xi(f,_)})}(f,p,d);return new Pn(_,w)}{if(f.shouldAttach(p.value)){const N=f.retrieve(p.value);if(null!==N){const V=N.route;return V.value._futureSnapshot=p.value,V.children=p.children.map(Ae=>Xi(f,Ae)),V}}const _=function Ko(f){return new Kn(new re.X(f.url),new re.X(f.params),new re.X(f.queryParams),new re.X(f.fragment),new re.X(f.data),f.outlet,f.component,f)}(p.value),w=p.children.map(N=>Xi(f,N));return new Pn(_,w)}}const li="ngNavigationCancelingError";function ws(f,p){const{redirectTo:d,navigationBehaviorOptions:_}=un(p)?{redirectTo:p,navigationBehaviorOptions:void 0}:p,w=As(!1,0,p);return w.url=d,w.navigationBehaviorOptions=_,w}function As(f,p,d){const _=new Error("NavigationCancelingError: "+(f||""));return _[li]=!0,_.cancellationCode=p,d&&(_.url=d),_}function cr(f){return Lr(f)&&un(f.url)}function Lr(f){return f&&f[li]}class Ts{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new Eo,this.attachRef=null}}let Eo=(()=>{class f{constructor(){this.contexts=new Map}onChildOutletCreated(d,_){const w=this.getOrCreateContext(d);w.outlet=_,this.contexts.set(d,w)}onChildOutletDestroyed(d){const _=this.getContext(d);_&&(_.outlet=null,_.attachRef=null)}onOutletDeactivated(){const d=this.contexts;return this.contexts=new Map,d}onOutletReAttached(d){this.contexts=d}getOrCreateContext(d){let _=this.getContext(d);return _||(_=new Ts,this.contexts.set(d,_)),_}getContext(d){return this.contexts.get(d)||null}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const Zo=!1;let Ii=(()=>{class f{constructor(){this.activated=null,this._activatedRoute=null,this.name=It,this.activateEvents=new c.vpe,this.deactivateEvents=new c.vpe,this.attachEvents=new c.vpe,this.detachEvents=new c.vpe,this.parentContexts=(0,c.f3M)(Eo),this.location=(0,c.f3M)(c.s_b),this.changeDetector=(0,c.f3M)(c.sBO),this.environmentInjector=(0,c.f3M)(c.lqb)}ngOnChanges(d){if(d.name){const{firstChange:_,previousValue:w}=d.name;if(_)return;this.isTrackedInParentContexts(w)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(w)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(d){var _;return(null===(_=this.parentContexts.getContext(d))||void 0===_?void 0:_.outlet)===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const d=this.parentContexts.getContext(this.name);null!=d&&d.route&&(d.attachRef?this.attach(d.attachRef,d.route):this.activateWith(d.route,d.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new c.vHH(4012,Zo);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new c.vHH(4012,Zo);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new c.vHH(4012,Zo);this.location.detach();const d=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(d.instance),d}attach(d,_){this.activated=d,this._activatedRoute=_,this.location.insert(d.hostView),this.attachEvents.emit(d.instance)}deactivate(){if(this.activated){const d=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(d)}}activateWith(d,_){if(this.isActivated)throw new c.vHH(4013,Zo);this._activatedRoute=d;const w=this.location,V=d.snapshot.component,Ae=this.parentContexts.getOrCreateContext(this.name).children,We=new Nr(d,Ae,w.injector);if(_&&function Hi(f){return!!f.resolveComponentFactory}(_)){const ft=_.resolveComponentFactory(V);this.activated=w.createComponent(ft,w.length,We)}else this.activated=w.createComponent(V,{index:w.length,injector:We,environmentInjector:null!=_?_:this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275dir=c.lG2({type:f,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[c.TTD]}),f})();class Nr{constructor(p,d,_){this.route=p,this.childContexts=d,this.parent=_}get(p,d){return p===Kn?this.route:p===Eo?this.childContexts:this.parent.get(p,d)}}let dr=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275cmp=c.Xpm({type:f,selectors:[["ng-component"]],standalone:!0,features:[c.jDz],decls:1,vars:0,template:function(d,_){1&d&&c._UZ(0,"router-outlet")},dependencies:[Ii],encapsulation:2}),f})();function Mo(f,p){var d;return f.providers&&!f._injector&&(f._injector=(0,c.MMx)(f.providers,p,`Route: ${f.path}`)),null!==(d=f._injector)&&void 0!==d?d:p}function ji(f){const p=f.children&&f.children.map(ji),d=p?{...f,children:p}:{...f};return!d.component&&!d.loadComponent&&(p||d.loadChildren)&&d.outlet&&d.outlet!==It&&(d.component=dr),d}function bn(f){return f.outlet||It}function fr(f,p){const d=f.filter(_=>bn(_)===p);return d.push(...f.filter(_=>bn(_)!==p)),d}function zi(f){var p;if(!f)return null;if(null!==(p=f.routeConfig)&&void 0!==p&&p._injector)return f.routeConfig._injector;for(let d=f.parent;d;d=d.parent){const _=d.routeConfig;if(null!=_&&_._loadedInjector)return _._loadedInjector;if(null!=_&&_._injector)return _._injector}return null}class Ur{constructor(p,d,_,w){this.routeReuseStrategy=p,this.futureState=d,this.currState=_,this.forwardEvent=w}activate(p){const d=this.futureState._root,_=this.currState?this.currState._root:null;this.deactivateChildRoutes(d,_,p),Fr(this.futureState.root),this.activateChildRoutes(d,_,p)}deactivateChildRoutes(p,d,_){const w=mi(d);p.children.forEach(N=>{const V=N.value.outlet;this.deactivateRoutes(N,w[V],_),delete w[V]}),ue(w,(N,V)=>{this.deactivateRouteAndItsChildren(N,_)})}deactivateRoutes(p,d,_){const w=p.value,N=d?d.value:null;if(w===N)if(w.component){const V=_.getContext(w.outlet);V&&this.deactivateChildRoutes(p,d,V.children)}else this.deactivateChildRoutes(p,d,_);else N&&this.deactivateRouteAndItsChildren(d,_)}deactivateRouteAndItsChildren(p,d){p.value.component&&this.routeReuseStrategy.shouldDetach(p.value.snapshot)?this.detachAndStoreRouteSubtree(p,d):this.deactivateRouteAndOutlet(p,d)}detachAndStoreRouteSubtree(p,d){const _=d.getContext(p.value.outlet),w=_&&p.value.component?_.children:d,N=mi(p);for(const V of Object.keys(N))this.deactivateRouteAndItsChildren(N[V],w);if(_&&_.outlet){const V=_.outlet.detach(),Ae=_.children.onOutletDeactivated();this.routeReuseStrategy.store(p.value.snapshot,{componentRef:V,route:p,contexts:Ae})}}deactivateRouteAndOutlet(p,d){const _=d.getContext(p.value.outlet),w=_&&p.value.component?_.children:d,N=mi(p);for(const V of Object.keys(N))this.deactivateRouteAndItsChildren(N[V],w);_&&_.outlet&&(_.outlet.deactivate(),_.children.onOutletDeactivated(),_.attachRef=null,_.resolver=null,_.route=null)}activateChildRoutes(p,d,_){const w=mi(d);p.children.forEach(N=>{this.activateRoutes(N,w[N.value.outlet],_),this.forwardEvent(new En(N.value.snapshot))}),p.children.length&&this.forwardEvent(new Po(p.value.snapshot))}activateRoutes(p,d,_){const w=p.value,N=d?d.value:null;if(Fr(w),w===N)if(w.component){const Ae=_.getOrCreateContext(w.outlet);this.activateChildRoutes(p,d,Ae.children)}else this.activateChildRoutes(p,d,_);else if(w.component){const Ae=_.getOrCreateContext(w.outlet);if(this.routeReuseStrategy.shouldAttach(w.snapshot)){const We=this.routeReuseStrategy.retrieve(w.snapshot);this.routeReuseStrategy.store(w.snapshot,null),Ae.children.onOutletReAttached(We.contexts),Ae.attachRef=We.componentRef,Ae.route=We.route.value,Ae.outlet&&Ae.outlet.attach(We.componentRef,We.route.value),Fr(We.route.value),this.activateChildRoutes(p,null,Ae.children)}else{var V;const We=zi(w.snapshot),ft=null!==(V=null==We?void 0:We.get(c._Vd))&&void 0!==V?V:null;Ae.attachRef=null,Ae.route=w,Ae.resolver=ft,Ae.injector=We,Ae.outlet&&Ae.outlet.activateWith(w,Ae.injector),this.activateChildRoutes(p,null,Ae.children)}}else this.activateChildRoutes(p,null,_)}}class as{constructor(p){this.path=p,this.route=this.path[this.path.length-1]}}class Ji{constructor(p,d){this.component=p,this.route=d}}function gi(f,p,d){const _=f._root;return pr(_,p?p._root:null,d,[_.value])}function $i(f,p){const d=Symbol(),_=p.get(f,d);return _===d?"function"!=typeof f||(0,c.Z0I)(f)?p.get(f):f:_}function pr(f,p,d,_,w={canDeactivateChecks:[],canActivateChecks:[]}){const N=mi(p);return f.children.forEach(V=>{(function ho(f,p,d,_,w={canDeactivateChecks:[],canActivateChecks:[]}){const N=f.value,V=p?p.value:null,Ae=d?d.getContext(f.value.outlet):null;if(V&&N.routeConfig===V.routeConfig){const We=function Os(f,p,d){if("function"==typeof d)return d(f,p);switch(d){case"pathParamsChange":return!Vt(f.url,p.url);case"pathParamsOrQueryParamsChange":return!Vt(f.url,p.url)||!oe(f.queryParams,p.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Do(f,p)||!oe(f.queryParams,p.queryParams);default:return!Do(f,p)}}(V,N,N.routeConfig.runGuardsAndResolvers);We?w.canActivateChecks.push(new as(_)):(N.data=V.data,N._resolvedData=V._resolvedData),pr(f,p,N.component?Ae?Ae.children:null:d,_,w),We&&Ae&&Ae.outlet&&Ae.outlet.isActivated&&w.canDeactivateChecks.push(new Ji(Ae.outlet.component,V))}else V&&wo(p,Ae,w),w.canActivateChecks.push(new as(_)),pr(f,null,N.component?Ae?Ae.children:null:d,_,w)})(V,N[V.value.outlet],d,_.concat([V.value]),w),delete N[V.value.outlet]}),ue(N,(V,Ae)=>wo(V,d.getContext(Ae),w)),w}function wo(f,p,d){const _=mi(f),w=f.value;ue(_,(N,V)=>{wo(N,w.component?p?p.children.getContext(V):null:p,d)}),d.canDeactivateChecks.push(new Ji(w.component&&p&&p.outlet&&p.outlet.isActivated?p.outlet.component:null,w))}function zt(f){return"function"==typeof f}function ce(f){return f instanceof Q.K||"EmptyError"===(null==f?void 0:f.name)}const dt=Symbol("INITIAL_VALUE");function fn(){return(0,q.w)(f=>(0,H.a)(f.map(p=>p.pipe((0,j.q)(1),(0,$.O)(dt)))).pipe((0,ne.U)(p=>{for(const d of p)if(!0!==d){if(d===dt)return dt;if(!1===d||d instanceof te)return d}return!0}),(0,ee.h)(p=>p!==dt),(0,j.q)(1)))}function cs(f){return(0,ie.z)((0,$e.b)(p=>{if(un(p))throw ws(0,p)}),(0,ne.U)(p=>!0===p))}const no={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function ks(f,p,d,_,w){const N=io(f,p,d);return N.matched?function ni(f,p,d,_){const w=p.canMatch;if(!w||0===w.length)return(0,M.of)(!0);const N=w.map(V=>{const Ae=$i(V,f);return R(function E(f){return f&&zt(f.canMatch)}(Ae)?Ae.canMatch(p,d):f.runInContext(()=>Ae(p,d)))});return(0,M.of)(N).pipe(fn(),cs())}(_=Mo(p,_),p,d).pipe((0,ne.U)(V=>!0===V?N:{...no})):(0,M.of)(N)}function io(f,p,d){var _;if(""===p.path)return"full"===p.pathMatch&&(f.hasChildren()||d.length>0)?{...no}:{matched:!0,consumedSegments:[],remainingSegments:d,parameters:{},positionalParamSegments:{}};const N=(p.matcher||Ct)(d,f,p);if(!N)return{...no};const V={};ue(N.posParams,(We,ft)=>{V[ft]=We.path});const Ae=N.consumed.length>0?{...V,...N.consumed[N.consumed.length-1].parameters}:V;return{matched:!0,consumedSegments:N.consumed,remainingSegments:d.slice(N.consumed.length),parameters:Ae,positionalParamSegments:null!==(_=N.posParams)&&void 0!==_?_:{}}}function Vn(f,p,d,_){if(d.length>0&&function Ps(f,p,d){return d.some(_=>Zn(f,p,_)&&bn(_)!==It)}(f,d,_)){const N=new ge(p,function ds(f,p,d,_){const w={};w[It]=_,_._sourceSegment=f,_._segmentIndexShift=p.length;for(const N of d)if(""===N.path&&bn(N)!==It){const V=new ge([],{});V._sourceSegment=f,V._segmentIndexShift=p.length,w[bn(N)]=V}return w}(f,p,_,new ge(d,f.children)));return N._sourceSegment=f,N._segmentIndexShift=p.length,{segmentGroup:N,slicedSegments:[]}}if(0===d.length&&function Rs(f,p,d){return d.some(_=>Zn(f,p,_))}(f,d,_)){const N=new ge(f.segments,function ia(f,p,d,_,w){const N={};for(const V of _)if(Zn(f,d,V)&&!w[bn(V)]){const Ae=new ge([],{});Ae._sourceSegment=f,Ae._segmentIndexShift=p.length,N[bn(V)]=Ae}return{...w,...N}}(f,p,d,_,f.children));return N._sourceSegment=f,N._segmentIndexShift=p.length,{segmentGroup:N,slicedSegments:d}}const w=new ge(f.segments,f.children);return w._sourceSegment=f,w._segmentIndexShift=p.length,{segmentGroup:w,slicedSegments:d}}function Zn(f,p,d){return(!(f.hasChildren()||p.length>0)||"full"!==d.pathMatch)&&""===d.path}function Hr(f,p,d,_){return!!(bn(f)===_||_!==It&&Zn(p,d,f))&&("**"===f.path||io(p,f,d).matched)}function jr(f,p,d){return 0===p.length&&!f.children[d]}const qo=!1;class zr{constructor(p){this.segmentGroup=p||null}}class $r{constructor(p){this.urlTree=p}}function Xo(f){return se(new zr(f))}function Fs(f){return se(new $r(f))}class ra{constructor(p,d,_,w,N){this.injector=p,this.configLoader=d,this.urlSerializer=_,this.urlTree=w,this.config=N,this.allowRedirects=!0}apply(){const p=Vn(this.urlTree.root,[],[],this.config).segmentGroup,d=new ge(p.segments,p.children);return this.expandSegmentGroup(this.injector,this.config,d,It).pipe((0,ne.U)(N=>this.createUrlTree(Tt(N),this.urlTree.queryParams,this.urlTree.fragment))).pipe(At(N=>{if(N instanceof $r)return this.allowRedirects=!1,this.match(N.urlTree);throw N instanceof zr?this.noMatchError(N):N}))}match(p){return this.expandSegmentGroup(this.injector,this.config,p.root,It).pipe((0,ne.U)(w=>this.createUrlTree(Tt(w),p.queryParams,p.fragment))).pipe(At(w=>{throw w instanceof zr?this.noMatchError(w):w}))}noMatchError(p){return new c.vHH(4002,qo)}createUrlTree(p,d,_){const w=Ge(p);return new te(w,d,_)}expandSegmentGroup(p,d,_,w){return 0===_.segments.length&&_.hasChildren()?this.expandChildren(p,d,_).pipe((0,ne.U)(N=>new ge([],N))):this.expandSegment(p,_,d,_.segments,w,!0)}expandChildren(p,d,_){const w=[];for(const N of Object.keys(_.children))"primary"===N?w.unshift(N):w.push(N);return(0,o.D)(w).pipe((0,Xe.b)(N=>{const V=_.children[N],Ae=fr(d,N);return this.expandSegmentGroup(p,Ae,V,N).pipe((0,ne.U)(We=>({segment:We,outlet:N})))}),st((N,V)=>(N[V.outlet]=V.segment,N),{}),ut())}expandSegment(p,d,_,w,N,V){return(0,o.D)(_).pipe((0,Xe.b)(Ae=>this.expandSegmentAgainstRoute(p,d,_,Ae,w,N,V).pipe(At(ft=>{if(ft instanceof zr)return(0,M.of)(null);throw ft}))),ke(Ae=>!!Ae),At((Ae,We)=>{if(ce(Ae))return jr(d,w,N)?(0,M.of)(new ge([],{})):Xo(d);throw Ae}))}expandSegmentAgainstRoute(p,d,_,w,N,V,Ae){return Hr(w,d,N,V)?void 0===w.redirectTo?this.matchSegmentAgainstRoute(p,d,w,N,V):Ae&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V):Xo(d):Xo(d)}expandSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V){return"**"===w.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(p,_,w,V):this.expandRegularSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V)}expandWildCardWithParamsAgainstRouteUsingRedirect(p,d,_,w){const N=this.applyRedirectCommands([],_.redirectTo,{});return _.redirectTo.startsWith("/")?Fs(N):this.lineralizeSegments(_,N).pipe((0,ae.z)(V=>{const Ae=new ge(V,{});return this.expandSegment(p,Ae,d,V,w,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V){const{matched:Ae,consumedSegments:We,remainingSegments:ft,positionalParamSegments:Ot}=io(d,w,N);if(!Ae)return Xo(d);const Et=this.applyRedirectCommands(We,w.redirectTo,Ot);return w.redirectTo.startsWith("/")?Fs(Et):this.lineralizeSegments(w,Et).pipe((0,ae.z)(Cn=>this.expandSegment(p,d,_,Cn.concat(ft),V,!1)))}matchSegmentAgainstRoute(p,d,_,w,N){return"**"===_.path?(p=Mo(_,p),_.loadChildren?(_._loadedRoutes?(0,M.of)({routes:_._loadedRoutes,injector:_._loadedInjector}):this.configLoader.loadChildren(p,_)).pipe((0,ne.U)(Ae=>(_._loadedRoutes=Ae.routes,_._loadedInjector=Ae.injector,new ge(w,{})))):(0,M.of)(new ge(w,{}))):ks(d,_,w,p).pipe((0,q.w)(({matched:V,consumedSegments:Ae,remainingSegments:We})=>{var ft;return V?(p=null!==(ft=_._injector)&&void 0!==ft?ft:p,this.getChildConfig(p,_,w).pipe((0,ae.z)(Et=>{var Cn;const Hn=null!==(Cn=Et.injector)&&void 0!==Cn?Cn:p,vi=Et.routes,{segmentGroup:Uo,slicedSegments:go}=Vn(d,Ae,We,vi),So=new ge(Uo.segments,Uo.children);if(0===go.length&&So.hasChildren())return this.expandChildren(Hn,vi,So).pipe((0,ne.U)(er=>new ge(Ae,er)));if(0===vi.length&&0===go.length)return(0,M.of)(new ge(Ae,{}));const ms=bn(_)===N;return this.expandSegment(Hn,So,vi,go,ms?It:N,!0).pipe((0,ne.U)(Mi=>new ge(Ae.concat(Mi.segments),Mi.children)))}))):Xo(d)}))}getChildConfig(p,d,_){return d.children?(0,M.of)({routes:d.children,injector:p}):d.loadChildren?void 0!==d._loadedRoutes?(0,M.of)({routes:d._loadedRoutes,injector:d._loadedInjector}):function sl(f,p,d,_){const w=p.canLoad;if(void 0===w||0===w.length)return(0,M.of)(!0);const N=w.map(V=>{const Ae=$i(V,f);return R(function ta(f){return f&&zt(f.canLoad)}(Ae)?Ae.canLoad(p,d):f.runInContext(()=>Ae(p,d)))});return(0,M.of)(N).pipe(fn(),cs())}(p,d,_).pipe((0,ae.z)(w=>w?this.configLoader.loadChildren(p,d).pipe((0,$e.b)(N=>{d._loadedRoutes=N.routes,d._loadedInjector=N.injector})):function us(f){return se(As(qo,3))}())):(0,M.of)({routes:[],injector:p})}lineralizeSegments(p,d){let _=[],w=d.root;for(;;){if(_=_.concat(w.segments),0===w.numberOfChildren)return(0,M.of)(_);if(w.numberOfChildren>1||!w.children[It])return se(new c.vHH(4e3,qo));w=w.children[It]}}applyRedirectCommands(p,d,_){return this.applyRedirectCreateUrlTree(d,this.urlSerializer.parse(d),p,_)}applyRedirectCreateUrlTree(p,d,_,w){const N=this.createSegmentGroup(p,d.root,_,w);return new te(N,this.createQueryParams(d.queryParams,this.urlTree.queryParams),d.fragment)}createQueryParams(p,d){const _={};return ue(p,(w,N)=>{if("string"==typeof w&&w.startsWith(":")){const Ae=w.substring(1);_[N]=d[Ae]}else _[N]=w}),_}createSegmentGroup(p,d,_,w){const N=this.createSegments(p,d.segments,_,w);let V={};return ue(d.children,(Ae,We)=>{V[We]=this.createSegmentGroup(p,Ae,_,w)}),new ge(N,V)}createSegments(p,d,_,w){return d.map(N=>N.path.startsWith(":")?this.findPosParam(p,N,w):this.findOrReturn(N,_))}findPosParam(p,d,_){const w=_[d.path.substring(1)];if(!w)throw new c.vHH(4001,qo);return w}findOrReturn(p,d){let _=0;for(const w of d){if(w.path===p.path)return d.splice(_),w;_++}return p}}class ui{}class hs{constructor(p,d,_,w,N,V,Ae){this.injector=p,this.rootComponentType=d,this.config=_,this.urlTree=w,this.url=N,this.paramsInheritanceStrategy=V,this.urlSerializer=Ae}recognize(){const p=Vn(this.urlTree.root,[],[],this.config.filter(d=>void 0===d.redirectTo)).segmentGroup;return this.processSegmentGroup(this.injector,this.config,p,It).pipe((0,ne.U)(d=>{if(null===d)return null;const _=new qi([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},It,this.rootComponentType,null,this.urlTree.root,-1,{}),w=new Pn(_,d),N=new Ro(this.url,w);return this.inheritParamsAndData(N._root),N}))}inheritParamsAndData(p){const d=p.value,_=ar(d,this.paramsInheritanceStrategy);d.params=Object.freeze(_.params),d.data=Object.freeze(_.data),p.children.forEach(w=>this.inheritParamsAndData(w))}processSegmentGroup(p,d,_,w){return 0===_.segments.length&&_.hasChildren()?this.processChildren(p,d,_):this.processSegment(p,d,_,_.segments,w)}processChildren(p,d,_){return(0,o.D)(Object.keys(_.children)).pipe((0,Xe.b)(w=>{const N=_.children[w],V=fr(d,w);return this.processSegmentGroup(p,V,N,w)}),st((w,N)=>w&&N?(w.push(...N),w):null),(0,lt.o)(w=>null!==w),Pe(null),ut(),(0,ne.U)(w=>{if(null===w)return null;const N=L(w);return function v(f){f.sort((p,d)=>p.value.outlet===It?-1:d.value.outlet===It?1:p.value.outlet.localeCompare(d.value.outlet))}(N),N}))}processSegment(p,d,_,w,N){return(0,o.D)(d).pipe((0,Xe.b)(V=>{var Ae;return this.processSegmentAgainstRoute(null!==(Ae=V._injector)&&void 0!==Ae?Ae:p,V,_,w,N)}),ke(V=>!!V),At(V=>{if(ce(V))return jr(_,w,N)?(0,M.of)([]):(0,M.of)(null);throw V}))}processSegmentAgainstRoute(p,d,_,w,N){if(d.redirectTo||!Hr(d,_,w,N))return(0,M.of)(null);let V;if("**"===d.path){var Ae,We;const ft=w.length>0?Re(w).parameters:{},Ot=Qe(_)+w.length,Et=new qi(w,ft,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,nn(d),bn(d),null!==(Ae=null!==(We=d.component)&&void 0!==We?We:d._loadedComponent)&&void 0!==Ae?Ae:null,d,je(_),Ot,Zt(d));V=(0,M.of)({snapshot:Et,consumedSegments:[],remainingSegments:[]})}else V=ks(_,d,w,p).pipe((0,ne.U)(({matched:ft,consumedSegments:Ot,remainingSegments:Et,parameters:Cn})=>{var Hn,vi;if(!ft)return null;const Uo=Qe(_)+Ot.length;return{snapshot:new qi(Ot,Cn,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,nn(d),bn(d),null!==(Hn=null!==(vi=d.component)&&void 0!==vi?vi:d._loadedComponent)&&void 0!==Hn?Hn:null,d,je(_),Uo,Zt(d)),consumedSegments:Ot,remainingSegments:Et}}));return V.pipe((0,q.w)(ft=>{var Ot,Et;if(null===ft)return(0,M.of)(null);const{snapshot:Cn,consumedSegments:Hn,remainingSegments:vi}=ft;p=null!==(Ot=d._injector)&&void 0!==Ot?Ot:p;const Uo=null!==(Et=d._loadedInjector)&&void 0!==Et?Et:p,go=function k(f){return f.children?f.children:f.loadChildren?f._loadedRoutes:[]}(d),{segmentGroup:So,slicedSegments:ms}=Vn(_,Hn,vi,go.filter(Mi=>void 0===Mi.redirectTo));if(0===ms.length&&So.hasChildren())return this.processChildren(Uo,go,So).pipe((0,ne.U)(Mi=>null===Mi?null:[new Pn(Cn,Mi)]));if(0===go.length&&0===ms.length)return(0,M.of)([new Pn(Cn,[])]);const Wi=bn(d)===N;return this.processSegment(Uo,go,So,ms,Wi?It:N).pipe((0,ne.U)(Mi=>null===Mi?null:[new Pn(Cn,Mi)]))}))}}function D(f){const p=f.value.routeConfig;return p&&""===p.path&&void 0===p.redirectTo}function L(f){const p=[],d=new Set;for(const _ of f){if(!D(_)){p.push(_);continue}const w=p.find(N=>_.value.routeConfig===N.value.routeConfig);void 0!==w?(w.children.push(..._.children),d.add(w)):p.push(_)}for(const _ of d){const w=L(_.children);p.push(new Pn(_.value,w))}return p.filter(_=>!d.has(_))}function je(f){let p=f;for(;p._sourceSegment;)p=p._sourceSegment;return p}function Qe(f){var p;let d=f,_=null!==(p=d._segmentIndexShift)&&void 0!==p?p:0;for(;d._sourceSegment;){var w;d=d._sourceSegment,_+=null!==(w=d._segmentIndexShift)&&void 0!==w?w:0}return _-1}function nn(f){return f.data||{}}function Zt(f){return f.resolve||{}}function Gi(f){return"string"==typeof f.title||null===f.title}function ii(f){return(0,q.w)(p=>{const d=f(p);return d?(0,o.D)(d).pipe((0,ne.U)(()=>p)):(0,M.of)(p)})}const oi=new c.OlP("ROUTES");let ki=(()=>{class f{constructor(d,_){this.injector=d,this.compiler=_,this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap}loadComponent(d){if(this.componentLoaders.get(d))return this.componentLoaders.get(d);if(d._loadedComponent)return(0,M.of)(d._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(d);const _=R(d.loadComponent()).pipe((0,ne.U)(sa),(0,$e.b)(N=>{this.onLoadEndListener&&this.onLoadEndListener(d),d._loadedComponent=N}),Lt(()=>{this.componentLoaders.delete(d)})),w=new Je(_,()=>new pt.x).pipe(Ve());return this.componentLoaders.set(d,w),w}loadChildren(d,_){if(this.childrenLoaders.get(_))return this.childrenLoaders.get(_);if(_._loadedRoutes)return(0,M.of)({routes:_._loadedRoutes,injector:_._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(_);const N=this.loadModuleFactoryOrRoutes(_.loadChildren).pipe((0,ne.U)(Ae=>{this.onLoadEndListener&&this.onLoadEndListener(_);let We,ft,Ot=!1;Array.isArray(Ae)?ft=Ae:(We=Ae.create(d).injector,ft=G(We.get(oi,[],c.XFs.Self|c.XFs.Optional)));return{routes:ft.map(ji),injector:We}}),Lt(()=>{this.childrenLoaders.delete(_)})),V=new Je(N,()=>new pt.x).pipe(Ve());return this.childrenLoaders.set(_,V),V}loadModuleFactoryOrRoutes(d){return R(d()).pipe((0,ne.U)(sa),(0,ae.z)(w=>w instanceof c.YKP||Array.isArray(w)?(0,M.of)(w):(0,o.D)(this.compiler.compileModuleAsync(w))))}}return f.\u0275fac=function(d){return new(d||f)(c.LFG(c.zs3),c.LFG(c.Sil))},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function sa(f){return function Gr(f){return f&&"object"==typeof f&&"default"in f}(f)?f.default:f}let Wr=(()=>{class f{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new pt.x,this.configLoader=(0,c.f3M)(ki),this.environmentInjector=(0,c.f3M)(c.lqb),this.urlSerializer=(0,c.f3M)(mn),this.rootContexts=(0,c.f3M)(Eo),this.navigationId=0,this.afterPreactivation=()=>(0,M.of)(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=w=>this.events.next(new ko(w)),this.configLoader.onLoadStartListener=w=>this.events.next(new ti(w))}complete(){var d;null===(d=this.transitions)||void 0===d||d.complete()}handleNavigationRequest(d){var _;const w=++this.navigationId;null===(_=this.transitions)||void 0===_||_.next({...this.transitions.value,...d,id:w})}setupNavigations(d){return this.transitions=new re.X({id:0,targetPageId:0,currentUrlTree:d.currentUrlTree,currentRawUrl:d.currentUrlTree,extractedUrl:d.urlHandlingStrategy.extract(d.currentUrlTree),urlAfterRedirects:d.urlHandlingStrategy.extract(d.currentUrlTree),rawUrl:d.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:Gn,restoredState:null,currentSnapshot:d.routerState.snapshot,targetSnapshot:null,currentRouterState:d.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe((0,ee.h)(_=>0!==_.id),(0,ne.U)(_=>({..._,extractedUrl:d.urlHandlingStrategy.extract(_.rawUrl)})),(0,q.w)(_=>{let w=!1,N=!1;return(0,M.of)(_).pipe((0,$e.b)(V=>{this.currentNavigation={id:V.id,initialUrl:V.rawUrl,extractedUrl:V.extractedUrl,trigger:V.source,extras:V.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),(0,q.w)(V=>{var Ae;const We=d.browserUrlTree.toString(),ft=!d.navigated||V.extractedUrl.toString()!==We||We!==d.currentUrlTree.toString(),Ot=null!==(Ae=V.extras.onSameUrlNavigation)&&void 0!==Ae?Ae:d.onSameUrlNavigation;if(!ft&&"reload"!==Ot){const Et="";return this.events.next(new lo(V.id,d.serializeUrl(_.rawUrl),Et,0)),d.rawUrlTree=V.rawUrl,V.resolve(null),Ee.E}if(d.urlHandlingStrategy.shouldProcessUrl(V.rawUrl))return _r(V.source)&&(d.browserUrlTree=V.extractedUrl),(0,M.of)(V).pipe((0,q.w)(Et=>{var Cn,Hn;const vi=null===(Cn=this.transitions)||void 0===Cn?void 0:Cn.getValue();return this.events.next(new Si(Et.id,this.urlSerializer.serialize(Et.extractedUrl),Et.source,Et.restoredState)),vi!==(null===(Hn=this.transitions)||void 0===Hn?void 0:Hn.getValue())?Ee.E:Promise.resolve(Et)}),function wa(f,p,d,_){return(0,q.w)(w=>function oa(f,p,d,_,w){return new ra(f,p,d,_,w).apply()}(f,p,d,w.extractedUrl,_).pipe((0,ne.U)(N=>({...w,urlAfterRedirects:N}))))}(this.environmentInjector,this.configLoader,this.urlSerializer,d.config),(0,$e.b)(Et=>{this.currentNavigation={...this.currentNavigation,finalUrl:Et.urlAfterRedirects},_.urlAfterRedirects=Et.urlAfterRedirects}),function an(f,p,d,_,w){return(0,ae.z)(N=>function On(f,p,d,_,w,N,V="emptyOnly"){return new hs(f,p,d,_,w,V,N).recognize().pipe((0,q.w)(Ae=>null===Ae?function mr(f){return new Z.y(p=>p.error(f))}(new ui):(0,M.of)(Ae)))}(f,p,d,N.urlAfterRedirects,_.serialize(N.urlAfterRedirects),_,w).pipe((0,ne.U)(V=>({...N,targetSnapshot:V}))))}(this.environmentInjector,this.rootComponentType,d.config,this.urlSerializer,d.paramsInheritanceStrategy),(0,$e.b)(Et=>{if(_.targetSnapshot=Et.targetSnapshot,"eager"===d.urlUpdateStrategy){if(!Et.extras.skipLocationChange){const Hn=d.urlHandlingStrategy.merge(Et.urlAfterRedirects,Et.rawUrl);d.setBrowserUrl(Hn,Et)}d.browserUrlTree=Et.urlAfterRedirects}const Cn=new Io(Et.id,this.urlSerializer.serialize(Et.extractedUrl),this.urlSerializer.serialize(Et.urlAfterRedirects),Et.targetSnapshot);this.events.next(Cn)}));if(ft&&d.urlHandlingStrategy.shouldProcessUrl(d.rawUrlTree)){const{id:Et,extractedUrl:Cn,source:Hn,restoredState:vi,extras:Uo}=V,go=new Si(Et,this.urlSerializer.serialize(Cn),Hn,vi);this.events.next(go);const So=Co(Cn,this.rootComponentType).snapshot;return _={...V,targetSnapshot:So,urlAfterRedirects:Cn,extras:{...Uo,skipLocationChange:!1,replaceUrl:!1}},(0,M.of)(_)}{const Et="";return this.events.next(new lo(V.id,d.serializeUrl(_.extractedUrl),Et,1)),d.rawUrlTree=V.rawUrl,V.resolve(null),Ee.E}}),(0,$e.b)(V=>{const Ae=new zo(V.id,this.urlSerializer.serialize(V.extractedUrl),this.urlSerializer.serialize(V.urlAfterRedirects),V.targetSnapshot);this.events.next(Ae)}),(0,ne.U)(V=>_={...V,guards:gi(V.targetSnapshot,V.currentSnapshot,this.rootContexts)}),function di(f,p){return(0,ae.z)(d=>{const{targetSnapshot:_,currentSnapshot:w,guards:{canActivateChecks:N,canDeactivateChecks:V}}=d;return 0===V.length&&0===N.length?(0,M.of)({...d,guardsResult:!0}):function Sn(f,p,d,_){return(0,o.D)(f).pipe((0,ae.z)(w=>function Ma(f,p,d,_,w){const N=p&&p.routeConfig?p.routeConfig.canDeactivate:null;if(!N||0===N.length)return(0,M.of)(!0);const V=N.map(Ae=>{var We;const ft=null!==(We=zi(p))&&void 0!==We?We:w,Ot=$i(Ae,ft);return R(function S(f){return f&&zt(f.canDeactivate)}(Ot)?Ot.canDeactivate(f,p,d,_):ft.runInContext(()=>Ot(f,p,d,_))).pipe(ke())});return(0,M.of)(V).pipe(fn())}(w.component,w.route,d,p,_)),ke(w=>!0!==w,!0))}(V,_,w,f).pipe((0,ae.z)(Ae=>Ae&&function Is(f){return"boolean"==typeof f}(Ae)?function eo(f,p,d,_){return(0,o.D)(p).pipe((0,Xe.b)(w=>(0,fe.z)(function _i(f,p){return null!==f&&p&&p(new Ui(f)),(0,M.of)(!0)}(w.route.parent,_),function to(f,p){return null!==f&&p&&p(new rr(f)),(0,M.of)(!0)}(w.route,_),function No(f,p,d){const _=p[p.length-1],N=p.slice(0,p.length-1).reverse().map(V=>function ls(f){const p=f.routeConfig?f.routeConfig.canActivateChild:null;return p&&0!==p.length?{node:f,guards:p}:null}(V)).filter(V=>null!==V).map(V=>(0,Se.P)(()=>{const Ae=V.guards.map(We=>{var ft;const Ot=null!==(ft=zi(V.node))&&void 0!==ft?ft:d,Et=$i(We,Ot);return R(function na(f){return f&&zt(f.canActivateChild)}(Et)?Et.canActivateChild(_,f):Ot.runInContext(()=>Et(_,f))).pipe(ke())});return(0,M.of)(Ae).pipe(fn())}));return(0,M.of)(N).pipe(fn())}(f,w.path,d),function Lo(f,p,d){const _=p.routeConfig?p.routeConfig.canActivate:null;if(!_||0===_.length)return(0,M.of)(!0);const w=_.map(N=>(0,Se.P)(()=>{var V;const Ae=null!==(V=zi(p))&&void 0!==V?V:d,We=$i(N,Ae);return R(function Fn(f){return f&&zt(f.canActivate)}(We)?We.canActivate(p,f):Ae.runInContext(()=>We(p,f))).pipe(ke())}));return(0,M.of)(w).pipe(fn())}(f,w.route,d))),ke(w=>!0!==w,!0))}(_,N,f,p):(0,M.of)(Ae)),(0,ne.U)(Ae=>({...d,guardsResult:Ae})))})}(this.environmentInjector,V=>this.events.next(V)),(0,$e.b)(V=>{if(_.guardsResult=V.guardsResult,un(V.guardsResult))throw ws(0,V.guardsResult);const Ae=new kr(V.id,this.urlSerializer.serialize(V.extractedUrl),this.urlSerializer.serialize(V.urlAfterRedirects),V.targetSnapshot,!!V.guardsResult);this.events.next(Ae)}),(0,ee.h)(V=>!!V.guardsResult||(d.restoreHistory(V),this.cancelNavigationTransition(V,"",3,d),!1)),ii(V=>{if(V.guards.canActivateChecks.length)return(0,M.of)(V).pipe((0,$e.b)(Ae=>{const We=new co(Ae.id,this.urlSerializer.serialize(Ae.extractedUrl),this.urlSerializer.serialize(Ae.urlAfterRedirects),Ae.targetSnapshot);this.events.next(We)}),(0,q.w)(Ae=>{let We=!1;return(0,M.of)(Ae).pipe(function Wt(f,p){return(0,ae.z)(d=>{const{targetSnapshot:_,guards:{canActivateChecks:w}}=d;if(!w.length)return(0,M.of)(d);let N=0;return(0,o.D)(w).pipe((0,Xe.b)(V=>function Mn(f,p,d,_){const w=f.routeConfig,N=f._resolve;return void 0!==(null==w?void 0:w.title)&&!Gi(w)&&(N[yn]=w.title),function pn(f,p,d,_){const w=function qn(f){return[...Object.keys(f),...Object.getOwnPropertySymbols(f)]}(f);if(0===w.length)return(0,M.of)({});const N={};return(0,o.D)(w).pipe((0,ae.z)(V=>function fo(f,p,d,_){var w;const N=null!==(w=zi(p))&&void 0!==w?w:_,V=$i(f,N);return R(V.resolve?V.resolve(p,d):N.runInContext(()=>V(p,d)))}(f[V],p,d,_).pipe(ke(),(0,$e.b)(Ae=>{N[V]=Ae}))),mt(1),(0,jt.h)(N),At(V=>ce(V)?Ee.E:se(V)))}(N,f,p,_).pipe((0,ne.U)(V=>(f._resolvedData=V,f.data=ar(f,d).resolve,w&&Gi(w)&&(f.data[yn]=w.title),null)))}(V.route,_,f,p)),(0,$e.b)(()=>N++),mt(1),(0,ae.z)(V=>N===w.length?(0,M.of)(d):Ee.E))})}(d.paramsInheritanceStrategy,this.environmentInjector),(0,$e.b)({next:()=>We=!0,complete:()=>{We||(d.restoreHistory(Ae),this.cancelNavigationTransition(Ae,"",2,d))}}))}),(0,$e.b)(Ae=>{const We=new ei(Ae.id,this.urlSerializer.serialize(Ae.extractedUrl),this.urlSerializer.serialize(Ae.urlAfterRedirects),Ae.targetSnapshot);this.events.next(We)}))}),ii(V=>{const Ae=We=>{var ft;const Ot=[];null!==(ft=We.routeConfig)&&void 0!==ft&&ft.loadComponent&&!We.routeConfig._loadedComponent&&Ot.push(this.configLoader.loadComponent(We.routeConfig).pipe((0,$e.b)(Et=>{We.component=Et}),(0,ne.U)(()=>{})));for(const Et of We.children)Ot.push(...Ae(Et));return Ot};return(0,H.a)(Ae(V.targetSnapshot.root)).pipe(Pe(),(0,j.q)(1))}),ii(()=>this.afterPreactivation()),(0,ne.U)(V=>{const Ae=function lr(f,p,d){const _=Xi(f,p._root,d?d._root:void 0);return new uo(_,p)}(d.routeReuseStrategy,V.targetSnapshot,V.currentRouterState);return _={...V,targetRouterState:Ae}}),(0,$e.b)(V=>{d.currentUrlTree=V.urlAfterRedirects,d.rawUrlTree=d.urlHandlingStrategy.merge(V.urlAfterRedirects,V.rawUrl),d.routerState=V.targetRouterState,"deferred"===d.urlUpdateStrategy&&(V.extras.skipLocationChange||d.setBrowserUrl(d.rawUrlTree,V),d.browserUrlTree=V.urlAfterRedirects)}),((f,p,d)=>(0,ne.U)(_=>(new Ur(p,_.targetRouterState,_.currentRouterState,d).activate(f),_)))(this.rootContexts,d.routeReuseStrategy,V=>this.events.next(V)),(0,$e.b)({next:V=>{var Ae;w=!0,this.lastSuccessfulNavigation=this.currentNavigation,d.navigated=!0,this.events.next(new sn(V.id,this.urlSerializer.serialize(V.extractedUrl),this.urlSerializer.serialize(d.currentUrlTree))),null===(Ae=d.titleStrategy)||void 0===Ae||Ae.updateTitle(V.targetRouterState.snapshot),V.resolve(!0)},complete:()=>{w=!0}}),Lt(()=>{var V;w||N||this.cancelNavigationTransition(_,"",1,d),(null===(V=this.currentNavigation)||void 0===V?void 0:V.id)===_.id&&(this.currentNavigation=null)}),At(V=>{if(N=!0,Lr(V)){cr(V)||(d.navigated=!0,d.restoreHistory(_,!0));const We=new Ci(_.id,this.urlSerializer.serialize(_.extractedUrl),V.message,V.cancellationCode);if(this.events.next(We),cr(V)){const ft=d.urlHandlingStrategy.merge(V.url,d.rawUrlTree),Ot={skipLocationChange:_.extras.skipLocationChange,replaceUrl:"eager"===d.urlUpdateStrategy||_r(_.source)};d.scheduleNavigation(ft,Gn,null,Ot,{resolve:_.resolve,reject:_.reject,promise:_.promise})}else _.resolve(!1)}else{var Ae;d.restoreHistory(_,!0);const We=new Qt(_.id,this.urlSerializer.serialize(_.extractedUrl),V,null!==(Ae=_.targetSnapshot)&&void 0!==Ae?Ae:void 0);this.events.next(We);try{_.resolve(d.errorHandler(V))}catch(ft){_.reject(ft)}}return Ee.E}))}))}cancelNavigationTransition(d,_,w,N){const V=new Ci(d.id,this.urlSerializer.serialize(d.extractedUrl),_,w);this.events.next(V),d.resolve(!1)}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function _r(f){return f!==Gn}let Qo=(()=>{class f{buildTitle(d){let _,w=d.root;for(;void 0!==w;){var N;_=null!==(N=this.getResolvedTitleForRoute(w))&&void 0!==N?N:_,w=w.children.find(V=>V.outlet===It)}return _}getResolvedTitleForRoute(d){return d.data[yn]}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return(0,c.f3M)(al)},providedIn:"root"}),f})(),al=(()=>{class f extends Qo{constructor(d){super(),this.title=d}updateTitle(d){const _=this.buildTitle(d);void 0!==_&&this.title.setTitle(_)}}return f.\u0275fac=function(d){return new(d||f)(c.LFG(hn.Dx))},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Yr=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return(0,c.f3M)(Ns)},providedIn:"root"}),f})();class aa{shouldDetach(p){return!1}store(p,d){}shouldAttach(p){return!1}retrieve(p){return null}shouldReuseRoute(p,d){return p.routeConfig===d.routeConfig}}let Ns=(()=>{class f extends aa{}return f.\u0275fac=function(){let p;return function(_){return(p||(p=c.n5z(f)))(_||f)}}(),f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const hi=new c.OlP("",{providedIn:"root",factory:()=>({})});let la=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return(0,c.f3M)(Bs)},providedIn:"root"}),f})(),Bs=(()=>{class f{shouldProcessUrl(d){return!0}extract(d){return d}merge(d,_){return d}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function ll(f){throw f}function Vs(f,p,d){return p.parse("/")}const ca={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},cl={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let Ei=(()=>{class f{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){var d;return null===(d=this.location.getState())||void 0===d?void 0:d.\u0275routerPageId}get events(){return this.navigationTransitions.events}constructor(){var d;this.disposed=!1,this.currentPageId=0,this.console=(0,c.f3M)(c.c2e),this.isNgZoneEnabled=!1,this.options=(0,c.f3M)(hi,{optional:!0})||{},this.errorHandler=this.options.errorHandler||ll,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||Vs,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=(0,c.f3M)(la),this.routeReuseStrategy=(0,c.f3M)(Yr),this.urlCreationStrategy=(0,c.f3M)(Oi),this.titleStrategy=(0,c.f3M)(Qo),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=G(null!==(d=(0,c.f3M)(oi,{optional:!0}))&&void 0!==d?d:[]),this.navigationTransitions=(0,c.f3M)(Wr),this.urlSerializer=(0,c.f3M)(mn),this.location=(0,c.f3M)(_t.Ye),this.isNgZoneEnabled=(0,c.f3M)(c.R0b)instanceof c.R0b&&c.R0b.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new te,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=Co(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe(_=>{this.lastSuccessfulId=_.id,this.currentPageId=_.targetPageId},_=>{this.console.warn(`Unhandled Navigation Error: ${_}`)})}resetRootComponentType(d){this.routerState.root.component=d,this.navigationTransitions.rootComponentType=d}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const d=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),Gn,d)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(d=>{const _="popstate"===d.type?"popstate":"hashchange";"popstate"===_&&setTimeout(()=>{this.navigateToSyncWithBrowser(d.url,_,d.state)},0)}))}navigateToSyncWithBrowser(d,_,w){const N={replaceUrl:!0},V=null!=w&&w.navigationId?w:null;if(w){const We={...w};delete We.navigationId,delete We.\u0275routerPageId,0!==Object.keys(We).length&&(N.state=We)}const Ae=this.parseUrl(d);this.scheduleNavigation(Ae,_,V,N)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(d){this.config=d.map(ji),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(d,_={}){const{relativeTo:w,queryParams:N,fragment:V,queryParamsHandling:Ae,preserveFragment:We}=_,ft=We?this.currentUrlTree.fragment:V;let Ot=null;switch(Ae){case"merge":Ot={...this.currentUrlTree.queryParams,...N};break;case"preserve":Ot=this.currentUrlTree.queryParams;break;default:Ot=N||null}return null!==Ot&&(Ot=this.removeEmptyProps(Ot)),this.urlCreationStrategy.createUrlTree(w,this.routerState,this.currentUrlTree,d,Ot,null!=ft?ft:null)}navigateByUrl(d,_={skipLocationChange:!1}){const w=un(d)?d:this.parseUrl(d),N=this.urlHandlingStrategy.merge(w,this.rawUrlTree);return this.scheduleNavigation(N,Gn,null,_)}navigate(d,_={skipLocationChange:!1}){return function Kr(f){for(let p=0;p{const N=d[w];return null!=N&&(_[w]=N),_},{})}scheduleNavigation(d,_,w,N,V){if(this.disposed)return Promise.resolve(!1);let Ae,We,ft,Ot;if(V?(Ae=V.resolve,We=V.reject,ft=V.promise):ft=new Promise((Hn,vi)=>{Ae=Hn,We=vi}),"computed"===this.canceledNavigationResolution)if(w&&w.\u0275routerPageId)Ot=w.\u0275routerPageId;else if(N.replaceUrl||N.skipLocationChange){var Et;Ot=null!==(Et=this.browserPageId)&&void 0!==Et?Et:0}else{var Cn;Ot=(null!==(Cn=this.browserPageId)&&void 0!==Cn?Cn:0)+1}else Ot=0;return this.navigationTransitions.handleNavigationRequest({targetPageId:Ot,source:_,restoredState:w,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:d,extras:N,resolve:Ae,reject:We,promise:ft,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),ft.catch(Hn=>Promise.reject(Hn))}setBrowserUrl(d,_){const w=this.urlSerializer.serialize(d),N={..._.extras.state,...this.generateNgRouterState(_.id,_.targetPageId)};this.location.isCurrentPathEqualTo(w)||_.extras.replaceUrl?this.location.replaceState(w,"",N):this.location.go(w,"",N)}restoreHistory(d,_=!1){if("computed"===this.canceledNavigationResolution){var w,N;const V=this.currentPageId-d.targetPageId;"popstate"!==d.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==(null===(w=this.getCurrentNavigation())||void 0===w?void 0:w.finalUrl)||0===V?this.currentUrlTree===(null===(N=this.getCurrentNavigation())||void 0===N?void 0:N.finalUrl)&&0===V&&(this.resetState(d),this.browserUrlTree=d.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(V)}else"replace"===this.canceledNavigationResolution&&(_&&this.resetState(d),this.resetUrlToCurrentUrlTree())}resetState(d){this.routerState=d.currentRouterState,this.currentUrlTree=d.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,d.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(d,_){return"computed"===this.canceledNavigationResolution?{navigationId:d,\u0275routerPageId:_}:{navigationId:d}}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Us=(()=>{class f{constructor(d,_,w,N,V,Ae){this.router=d,this.route=_,this.tabIndexAttribute=w,this.renderer=N,this.el=V,this.locationStrategy=Ae,this._preserveFragment=!1,this._skipLocationChange=!1,this._replaceUrl=!1,this.href=null,this.commands=null,this.onChanges=new pt.x;const We=V.nativeElement.tagName;this.isAnchorElement="A"===We||"AREA"===We,this.isAnchorElement?this.subscription=d.events.subscribe(ft=>{ft instanceof sn&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}set preserveFragment(d){this._preserveFragment=(0,c.D6c)(d)}get preserveFragment(){return this._preserveFragment}set skipLocationChange(d){this._skipLocationChange=(0,c.D6c)(d)}get skipLocationChange(){return this._skipLocationChange}set replaceUrl(d){this._replaceUrl=(0,c.D6c)(d)}get replaceUrl(){return this._replaceUrl}setTabIndexIfNotOnNativeEl(d){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",d)}ngOnChanges(d){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(d){null!=d?(this.commands=Array.isArray(d)?d:[d],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(d,_,w,N,V){return!!(null===this.urlTree||this.isAnchorElement&&(0!==d||_||w||N||V||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(this.urlTree,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state}),!this.isAnchorElement)}ngOnDestroy(){var d;null===(d=this.subscription)||void 0===d||d.unsubscribe()}updateHref(){var d;this.href=null!==this.urlTree&&this.locationStrategy?null===(d=this.locationStrategy)||void 0===d?void 0:d.prepareExternalUrl(this.router.serializeUrl(this.urlTree)):null;const _=null===this.href?null:(0,c.P3R)(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",_)}applyAttributeValue(d,_){const w=this.renderer,N=this.el.nativeElement;null!==_?w.setAttribute(N,d,_):w.removeAttribute(N,d)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}}return f.\u0275fac=function(d){return new(d||f)(c.Y36(Ei),c.Y36(Kn),c.$8M("tabindex"),c.Y36(c.Qsj),c.Y36(c.SBq),c.Y36(_t.S$))},f.\u0275dir=c.lG2({type:f,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(d,_){1&d&&c.NdJ("click",function(N){return _.onClick(N.button,N.ctrlKey,N.shiftKey,N.altKey,N.metaKey)}),2&d&&c.uIk("target",_.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",relativeTo:"relativeTo",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",routerLink:"routerLink"},standalone:!0,features:[c.TTD]}),f})();class Zr{}let fs=(()=>{class f{constructor(d,_,w,N,V){this.router=d,this.injector=w,this.preloadingStrategy=N,this.loader=V}setUpPreloading(){this.subscription=this.router.events.pipe((0,ee.h)(d=>d instanceof sn),(0,Xe.b)(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(d,_){const w=[];for(const We of _){var N,V;We.providers&&!We._injector&&(We._injector=(0,c.MMx)(We.providers,d,`Route: ${We.path}`));const ft=null!==(N=We._injector)&&void 0!==N?N:d,Ot=null!==(V=We._loadedInjector)&&void 0!==V?V:ft;if(We.loadChildren&&!We._loadedRoutes&&void 0===We.canLoad||We.loadComponent&&!We._loadedComponent)w.push(this.preloadConfig(ft,We));else if(We.children||We._loadedRoutes){var Ae;w.push(this.processRoutes(Ot,null!==(Ae=We.children)&&void 0!==Ae?Ae:We._loadedRoutes))}}return(0,o.D)(w).pipe((0,yt.J)())}preloadConfig(d,_){return this.preloadingStrategy.preload(_,()=>{let w;w=_.loadChildren&&void 0===_.canLoad?this.loader.loadChildren(d,_):(0,M.of)(null);const N=w.pipe((0,ae.z)(V=>{var Ae;return null===V?(0,M.of)(void 0):(_._loadedRoutes=V.routes,_._loadedInjector=V.injector,this.processRoutes(null!==(Ae=V.injector)&&void 0!==Ae?Ae:d,V.routes))}));if(_.loadComponent&&!_._loadedComponent){const V=this.loader.loadComponent(_);return(0,o.D)([N,V]).pipe((0,yt.J)())}return N})}}return f.\u0275fac=function(d){return new(d||f)(c.LFG(Ei),c.LFG(c.Sil),c.LFG(c.lqb),c.LFG(Zr),c.LFG(ki))},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const Bo=new c.OlP("");let js=(()=>{class f{constructor(d,_,w,N,V={}){this.urlSerializer=d,this.transitions=_,this.viewportScroller=w,this.zone=N,this.options=V,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},V.scrollPositionRestoration=V.scrollPositionRestoration||"disabled",V.anchorScrolling=V.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(d=>{d instanceof Si?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=d.navigationTrigger,this.restoredId=d.restoredState?d.restoredState.navigationId:0):d instanceof sn&&(this.lastId=d.id,this.scheduleScrollEvent(d,this.urlSerializer.parse(d.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(d=>{d instanceof Pr&&(d.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(d.position):d.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(d.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(d,_){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new Pr(d,"popstate"===this.lastSource?this.store[this.restoredId]:null,_))})},0)})}ngOnDestroy(){var d,_;null===(d=this.routerEventsSubscription)||void 0===d||d.unsubscribe(),null===(_=this.scrollEventsSubscription)||void 0===_||_.unsubscribe()}}return f.\u0275fac=function(d){c.$Z()},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac}),f})();function br(f,p){return{\u0275kind:f,\u0275providers:p}}function qr(){const f=(0,c.f3M)(c.zs3);return p=>{var d,_;const w=f.get(c.z2F);if(p!==w.components[0])return;const N=f.get(Ei),V=f.get(Vo);1===f.get(mo)&&N.initialNavigation(),null===(d=f.get(xr,null,c.XFs.Optional))||void 0===d||d.setUpPreloading(),null===(_=f.get(Bo,null,c.XFs.Optional))||void 0===_||_.init(),N.resetRootComponentType(w.componentTypes[0]),V.closed||(V.next(),V.unsubscribe())}}const Vo=new c.OlP("",{factory:()=>new pt.x}),mo=new c.OlP("",{providedIn:"root",factory:()=>1});const xr=new c.OlP("");function Wl(f){return br(0,[{provide:xr,useExisting:fs},{provide:Zr,useExisting:f}])}const $s=new c.OlP("ROUTER_FORROOT_GUARD"),Yl=[_t.Ye,{provide:mn,useClass:gn},Ei,Eo,{provide:Kn,useFactory:function vr(f){return f.routerState.root},deps:[Ei]},ki,[]];function fl(){return new c.PXZ("Router",Ei)}let Kl=(()=>{class f{constructor(d){}static forRoot(d,_){return{ngModule:f,providers:[Yl,[],{provide:oi,multi:!0,useValue:d},{provide:$s,useFactory:Zl,deps:[[Ei,new c.FiY,new c.tp0]]},{provide:hi,useValue:_||{}},null!=_&&_.useHash?{provide:_t.S$,useClass:_t.Do}:{provide:_t.S$,useClass:_t.b0},{provide:Bo,useFactory:()=>{const f=(0,c.f3M)(_t.EM),p=(0,c.f3M)(c.R0b),d=(0,c.f3M)(hi),_=(0,c.f3M)(Wr),w=(0,c.f3M)(mn);return d.scrollOffset&&f.setOffset(d.scrollOffset),new js(w,_,f,p,d)}},null!=_&&_.preloadingStrategy?Wl(_.preloadingStrategy).\u0275providers:[],{provide:c.PXZ,multi:!0,useFactory:fl},null!=_&&_.initialNavigation?Xn(_):[],[{provide:ps,useFactory:qr},{provide:c.tb,multi:!0,useExisting:ps}]]}}static forChild(d){return{ngModule:f,providers:[{provide:oi,multi:!0,useValue:d}]}}}return f.\u0275fac=function(d){return new(d||f)(c.LFG($s,8))},f.\u0275mod=c.oAB({type:f}),f.\u0275inj=c.cJS({imports:[dr]}),f})();function Zl(f){return"guarded"}function Xn(f){return["disabled"===f.initialNavigation?br(3,[{provide:c.ip1,multi:!0,useFactory:()=>{const p=(0,c.f3M)(Ei);return()=>{p.setUpLocationChangeListener()}}},{provide:mo,useValue:2}]).\u0275providers:[],"enabledBlocking"===f.initialNavigation?br(2,[{provide:mo,useValue:0},{provide:c.ip1,multi:!0,deps:[c.zs3],useFactory:p=>{const d=p.get(_t.V_,Promise.resolve());return()=>d.then(()=>new Promise(w=>{const N=p.get(Ei),V=p.get(Vo);(function _(w){p.get(Ei).events.pipe((0,ee.h)(V=>V instanceof sn||V instanceof Ci||V instanceof Qt),(0,ne.U)(V=>V instanceof sn||V instanceof Ci&&(0===V.code||1===V.code)&&null),(0,ee.h)(V=>null!==V),(0,j.q)(1)).subscribe(()=>{w()})})(()=>{w(!0)}),p.get(Wr).afterPreactivation=()=>(w(!0),V.closed?(0,M.of)(void 0):V),N.initialNavigation()}))}}]).\u0275providers:[]]}const ps=new c.OlP("")},5861:(ze,me,b)=>{function c(M,re,Q,H,fe,Se,ie){try{var Z=M[Se](ie),ye=Z.value}catch(se){return void Q(se)}Z.done?re(ye):Promise.resolve(ye).then(H,fe)}function o(M){return function(){var re=this,Q=arguments;return new Promise(function(H,fe){var Se=M.apply(re,Q);function ie(ye){c(Se,H,fe,ie,Z,"next",ye)}function Z(ye){c(Se,H,fe,ie,Z,"throw",ye)}ie(void 0)})}}b.d(me,{Z:()=>o})}},ze=>{ze(ze.s=284)}]); \ No newline at end of file +"use strict";(self.webpackChunkuds=self.webpackChunkuds||[]).push([[179],{2870:(ze,me,b)=>{b.d(me,{S:()=>M});var c=b(5861),o=b(4215);class M{constructor(Q){this.api=Q,this.delay=Q.config.launcher_wait_time}launchURL(Q){var H=this;return(0,c.Z)(function*(){"udsa://"===Q.substring(0,7)?yield H.processUDSUrl(Q):yield H.processExternalUrl(Q)})()}showAlert(Q,H,fe){var Se=this;return(0,c.Z)(function*(){return Se.api.gui.alert(django.gettext("Launching service"),'

'+Q+'

'+H+"

",fe)})()}launchUDSUrl(Q){this.api.download(Q)}processUDSUrl(Q){var H=this;return(0,c.Z)(function*(){const fe=Q.split("//")[1].split("/");if(2!==fe.length)return void(yield H.notifyError(django.gettext("Invalid UDS URL")));const Se=fe[0],ie=fe[1],Z=yield H.showAlert(django.gettext("Please wait until the service is launched."),django.gettext("Remember that you will need the UDS client on your platform to access the service."),0);let ye=!1;(0,o.Vi)(Z.afterClosed()).then(()=>ye=!0);let se=-1;try{const Ee=yield H.api.enabler(Se,ie);if(Ee.error)throw Ee.error;if(Ee.url.startsWith("/"))return Z.close(),void(yield H.launchURL(Ee.url));for("https:"===window.location.protocol&&(Ee.url=Ee.url.replace("uds://","udss://")),H.launchUDSUrl(Ee.url);!ye;){const we=yield H.api.status(Se,ie);if(se>0&&Date.now()-se>5*H.delay&&(Z.componentInstance.data.title=django.gettext("Service ready")+" - "+django.gettext("UDS Client not launching"),Z.componentInstance.data.body=''+django.gettext("It seems that you don't have UDS Client installed. Please, install it from here:")+' '+django.gettext("UDS Client Download")+""),"ready"===we.status)-1===se&&(se=Date.now(),Z.componentInstance.data.title=django.gettext("Service ready"),Z.componentInstance.data.body=django.gettext("Launching UDS Client, almost done."));else{if("accessed"===we.status){Z.close(),ye=!0;continue}if("running"!==we.status){Z.close(),yield H.notifyError(we.status),ye=!0;continue}}yield H.api.sleep(1e3)}}catch(Ee){Z.close(),yield H.notifyError(Ee)}})()}processExternalUrl(Q){var H=this;return(0,c.Z)(function*(){const fe=yield H.showAlert(django.gettext("Please wait until the service is launched."),django.gettext("Remember that you will need the UDS client on your platform to access the service."),0);let Se=!1;(0,o.Vi)(fe.afterClosed()).then(()=>Se=!0);try{for(;!Se;){const ie=yield H.api.transportUrl(Q);if(ie.url){fe.close();const Z=yield H.processCredentials(ie);null!==Z&&(yield H.api.updateTransportTicket(Z.ticket,Z.scrambler,Z.username,Z.password,Z.domain)),H.openWindow(ie.url),Se=!0}else ie.running||(fe.close(),yield H.notifyError(),Se=!0)}yield H.api.sleep(1e3)}catch(ie){fe.close(),yield H.notifyError(ie)}})()}processCredentials(Q){var H=this;return(0,c.Z)(function*(){const fe=Q.url||"";if(-1!==fe.indexOf("&creds=")){const Se=fe.split("&creds=")[1];let ie="",Z="";Q.url=fe.split("&creds=")[0];const ye=fe.split("data=")[1].split("&")[0].split("."),se=ye[0],Ee=ye[1];-1!==Se.indexOf("@")?(ie=Se.split("@")[0],Z=Se.split("@")[1]):ie=Se;const we=yield H.api.gui.askCredentials(ie,Z);if(!1===we.success)throw new Error("User canceled credentials dialog");return{ticket:se,scrambler:Ee,username:we.username,password:we.password,domain:we.domain}}return null})()}openWindow(Q){let H="__global__";if(-1!==Q.indexOf("o_s_w="))H="__same__",Q=/(.*)&o_s_w=.*/.exec(Q)[1];else if(-1!==Q.indexOf("o_n_w=")){const fe=/(.*)&o_n_w=([a-zA-Z0-9._-]*)/.exec(Q);fe&&(H=fe[2],Q=fe[1])}if("__same__"===H)window.location.href=Q;else{M.transportsWindow[H]&&M.transportsWindow[H].close();const fe=window.open(Q,"uds_trans_"+H);fe&&(M.transportsWindow[H]=fe)}}notifyError(Q){var H=this;return(0,c.Z)(function*(){let fe=django.gettext("Error communicating with your service. Please, retry again.");"string"==typeof Q?fe=Q:Q instanceof Error?fe=Q.message:403===Q.status&&(fe=django.gettext("Your session has expired. Please, login again")),yield H.showAlert(django.gettext("Error"),fe,5e3),403===Q.status&&H.api.logout()})()}}M.transportsWindow={}},6410:(ze,me,b)=>{b.d(me,{z:()=>M});var c=b(1571),o=b(1481);class M{constructor(Q){this.sanitizer=Q}transform(Q,H){return Q=(Q=(Q=Q.replace(/<\s*script\s*/gi,"")).replace(/onclick|onmouseover|onmouseout|onmousemove|onmouseenter|onmouseleave|onmouseup|onmousedown|onkeyup|onkeydown|onkeypress|onkeydown|onkeypress|onkeyup|onchange|onfocus|onblur|onload|onunload|onabort|onerror|onresize|onscroll/gi,"")).replace(/javascript\s*\:/gi,""),this.sanitizer.bypassSecurityTrustHtml(Q)}}M.\u0275fac=function(Q){return new(Q||M)(c.Y36(o.H7,16))},M.\u0275pipe=c.Yjl({name:"safeHtml",type:M,pure:!0})},4215:(ze,me,b)=>{b.d(me,{Vi:()=>q});var c=b(4986),o=b(1165),M=b(4482),re=b(8421),Q=b(3888),H=b(5403),fe=b(9672);const Se=(0,Q.d)($=>function(ae=null){$(this),this.message="Timeout has occurred",this.name="TimeoutError",this.info=ae});function Z($){throw new Se($)}var we,ye=b(6805),se=b(930);function Ee($,ee){const ae="object"==typeof ee;return new Promise((Pe,de)=>{const be=new se.Hp({next:Fe=>{Pe(Fe),be.unsubscribe()},error:de,complete:()=>{ae?Pe(ee.defaultValue):de(new ye.K)}});$.subscribe(be)})}const q=($,ee)=>{let ae;if($ instanceof Promise)ae=$;else if($ instanceof j)ae=$;else{if(ee)return Ee($.pipe(function ie($,ee){const{first:ae,each:Pe,with:de=Z,scheduler:be=(null!=ee?ee:c.z),meta:Fe=null}=(0,o.q)($)?{first:$}:"number"==typeof $?{each:$}:$;if(null==ae&&null==Pe)throw new TypeError("No timeout provided.");return(0,M.e)((ke,Xe)=>{let $e,bt,At=null,ot=0;const st=mt=>{bt=(0,fe.f)(Xe,be,()=>{try{$e.unsubscribe(),(0,re.Xf)(de({meta:Fe,lastValue:At,seen:ot})).subscribe(Xe)}catch(ut){Xe.error(ut)}},mt)};$e=ke.subscribe((0,H.x)(Xe,mt=>{null==bt||bt.unsubscribe(),ot++,Xe.next(At=mt),Pe>0&&st(Pe)},void 0,void 0,()=>{null!=bt&&bt.closed||null==bt||bt.unsubscribe(),At=null})),!ot&&st(null!=ae?"number"==typeof ae?ae:+ae-be.now():Pe)})}(ee)));ae=Ee($)}return ae};class j{constructor(){this[we]="Future",this.resolve=()=>{},this.reject=()=>{},this.promise=new Promise((ee,ae)=>{this.resolve=ee,this.reject=ae})}then(ee,ae){return this.promise.then(ee,ae)}catch(ee){return this.promise.catch(ee)}finally(ee){return this.promise.finally(ee)}}we=Symbol.toStringTag},4029:(ze,me,b)=>{b.d(me,{P:()=>o});var c=b(1571);class o{constructor(re){this.el=re}ngOnInit(){this.el.nativeElement.innerHTML=django.gettext(this.el.nativeElement.innerHTML.trim())}}o.\u0275fac=function(re){return new(re||o)(c.Y36(c.SBq))},o.\u0275dir=c.lG2({type:o,selectors:[["uds-translate"]]})},4902:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{G:()=>LoginComponent});var _angular_core__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(1571),_services_uds_api_service__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(7003),_angular_common__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(6895),_angular_forms__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(433),_angular_material_button__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(4859),_angular_material_form_field__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(9549),_angular_material_input__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(4144),_angular_material_select__WEBPACK_IMPORTED_MODULE_9__=__webpack_require__(4385),_angular_material_core__WEBPACK_IMPORTED_MODULE_10__=__webpack_require__(3238),_helpers_translate_directive__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(4029),_helpers_safe_html_pipe__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(6410);function LoginComponent_div_22_mat_option_6_Template(ze,me){if(1&ze&&(_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(0,"mat-option",19),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()),2&ze){const b=me.$implicit;_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("value",b.id),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.hij(" ",b.name," ")}}function LoginComponent_div_22_Template(ze,me){if(1&ze){const b=_angular_core__WEBPACK_IMPORTED_MODULE_3__.EpF();_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(0,"div",9)(1,"mat-form-field",16)(2,"mat-label")(3,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(4,"Authenticator"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(5,"mat-select",17),_angular_core__WEBPACK_IMPORTED_MODULE_3__.NdJ("selectionChange",function(o){_angular_core__WEBPACK_IMPORTED_MODULE_3__.CHM(b);const M=_angular_core__WEBPACK_IMPORTED_MODULE_3__.oxw();return _angular_core__WEBPACK_IMPORTED_MODULE_3__.KtG(M.changeAuth(o.value))}),_angular_core__WEBPACK_IMPORTED_MODULE_3__.YNc(6,LoginComponent_div_22_mat_option_6_Template,2,2,"mat-option",18),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()()()}if(2&ze){const b=_angular_core__WEBPACK_IMPORTED_MODULE_3__.oxw();_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("value",b.auths[0].id),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("ngForOf",b.auths)}}class LoginComponent{constructor(ze){this.api=ze,this.auth={},this.title="UDS Enterprise",this.title=ze.config.site_name,this.auths=ze.config.authenticators.slice(0),this.auths.sort((me,b)=>me.priority-b.priority)}ngOnInit(){document.getElementById("loginform").action=this.api.config.urls.login;const me=document.getElementById("token");me.name=this.api.csrfField;const b=document.cookie.split(";").find(c=>c.trim().startsWith("csrftoken="))||"=";me.value=b.split("=")[1],this.auth=document.getElementById("authenticator"),this.auths.length>0&&(this.auth.value=this.auths[0].id,this.changeAuth(this.auth.value)),this.api.errors.length>0&&this.api.gui.alert(django.gettext("Errors found"),"
"+this.api.errors.join("
")+"
")}changeAuth(auth){this.auth.value=auth;const doCustomAuth=data=>{eval(data)};for(const ze of this.auths)ze.id===auth&&ze.is_custom&&(document.getElementsByClassName("login-form")[0].setAttribute("style","display: none;"),this.api.getAuthCustomJavascript(ze.id).then(me=>doCustomAuth(me)))}launch(){return document.getElementById("loginform").submit(),!0}}LoginComponent.\u0275fac=function ze(me){return new(me||LoginComponent)(_angular_core__WEBPACK_IMPORTED_MODULE_3__.Y36(_services_uds_api_service__WEBPACK_IMPORTED_MODULE_0__.n))},LoginComponent.\u0275cmp=_angular_core__WEBPACK_IMPORTED_MODULE_3__.Xpm({type:LoginComponent,selectors:[["uds-login"]],decls:29,vars:6,consts:[["id","loginform","method","post",3,"ngSubmit"],["name","","id","token","value","","type","hidden"],["name","logouturl","id","id_logouturl","value","","type","hidden"],["name","authenticator","id","authenticator","value","","type","hidden"],[1,"login-container"],[1,"login-brand"],[3,"src"],[1,"login-info"],[1,"login-form"],[1,"login-field"],["matInput","","id","id_user","name","user","value","","required","","autofocus",""],["matInput","","id","id_password","type","password","name","password","data-eye","",1,"form-control"],["class","login-field",4,"ngIf"],[1,"login-button"],["mat-stroked-button","","color","primary","type","submit"],[1,"site-info",3,"innerHTML"],["appaerance","standard"],[3,"value","selectionChange"],[3,"value",4,"ngFor","ngForOf"],[3,"value"]],template:function ze(me,b){1&me&&(_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(0,"form",0),_angular_core__WEBPACK_IMPORTED_MODULE_3__.NdJ("ngSubmit",function(){return b.launch()}),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(1,"input",1)(2,"input",2)(3,"input",3),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(4,"div",4)(5,"div",5),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(6,"img",6),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(7,"div",7),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(8),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(9,"div",8)(10,"div",9)(11,"mat-form-field")(12,"mat-label")(13,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(14,"Username"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(15,"input",10),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(16,"div",9)(17,"mat-form-field")(18,"mat-label")(19,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(20,"Password"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(21,"input",11),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__.YNc(22,LoginComponent_div_22_Template,7,2,"div",12),_angular_core__WEBPACK_IMPORTED_MODULE_3__.TgZ(23,"div",13)(24,"button",14)(25,"uds-translate"),_angular_core__WEBPACK_IMPORTED_MODULE_3__._uU(26,"Login"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()()()(),_angular_core__WEBPACK_IMPORTED_MODULE_3__._UZ(27,"div",15),_angular_core__WEBPACK_IMPORTED_MODULE_3__.ALo(28,"safeHtml"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.qZA()()),2&me&&(_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(6),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("src",b.api.staticURL("modern/img/login-img.png"),_angular_core__WEBPACK_IMPORTED_MODULE_3__.LSH),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(2),_angular_core__WEBPACK_IMPORTED_MODULE_3__.hij(" ",b.title," "),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(14),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("ngIf",b.auths.length>1),_angular_core__WEBPACK_IMPORTED_MODULE_3__.xp6(5),_angular_core__WEBPACK_IMPORTED_MODULE_3__.Q6J("innerHTML",_angular_core__WEBPACK_IMPORTED_MODULE_3__.lcZ(28,4,b.api.config.site_information),_angular_core__WEBPACK_IMPORTED_MODULE_3__.oJD))},dependencies:[_angular_common__WEBPACK_IMPORTED_MODULE_4__.sg,_angular_common__WEBPACK_IMPORTED_MODULE_4__.O5,_angular_forms__WEBPACK_IMPORTED_MODULE_5__._Y,_angular_forms__WEBPACK_IMPORTED_MODULE_5__.JL,_angular_forms__WEBPACK_IMPORTED_MODULE_5__.F,_angular_material_button__WEBPACK_IMPORTED_MODULE_6__.lW,_angular_material_form_field__WEBPACK_IMPORTED_MODULE_7__.KE,_angular_material_form_field__WEBPACK_IMPORTED_MODULE_7__.hX,_angular_material_input__WEBPACK_IMPORTED_MODULE_8__.Nt,_angular_material_select__WEBPACK_IMPORTED_MODULE_9__.gD,_angular_material_core__WEBPACK_IMPORTED_MODULE_10__.ey,_helpers_translate_directive__WEBPACK_IMPORTED_MODULE_1__.P,_helpers_safe_html_pipe__WEBPACK_IMPORTED_MODULE_2__.z],styles:[".login-container[_ngcontent-%COMP%]{display:flex;flex-flow:column wrap;justify-content:center;align-items:center}.login-brand[_ngcontent-%COMP%]{margin:1rem 0 0}.login-info[_ngcontent-%COMP%]{margin:1rem 0}.login-form[_ngcontent-%COMP%]{margin:0 1rem 2rem 0;min-width:32em;padding:1rem;box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0000001f,0 1px 5px #0003;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 auto;justify-content:center;flex-flow:column wrap;align-items:center;display:flex}.login-field[_ngcontent-%COMP%]{width:80%;margin:.5rem}.login-button[_ngcontent-%COMP%]{margin:2rem}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}@media only screen and (max-width: 744px){.login-form[_ngcontent-%COMP%]{min-width:80%}}"]})},7003:(__unused_webpack_module,__webpack_exports__,__webpack_require__)=>{__webpack_require__.d(__webpack_exports__,{n:()=>UDSApiService});var _home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__=__webpack_require__(5861),_types_config__WEBPACK_IMPORTED_MODULE_4__=__webpack_require__(3513),_helpers_tools__WEBPACK_IMPORTED_MODULE_0__=__webpack_require__(4215),_helpers_plugin__WEBPACK_IMPORTED_MODULE_1__=__webpack_require__(2870),_environments_environment__WEBPACK_IMPORTED_MODULE_2__=__webpack_require__(2340),_angular_core__WEBPACK_IMPORTED_MODULE_6__=__webpack_require__(1571),_angular_common_http__WEBPACK_IMPORTED_MODULE_7__=__webpack_require__(529),_uds_gui_service__WEBPACK_IMPORTED_MODULE_3__=__webpack_require__(4461),_angular_router__WEBPACK_IMPORTED_MODULE_8__=__webpack_require__(8247);const DARK_THEME="dark-theme",LIGHT_THEME="light-theme",TIMEOUT=1e4;class UDSApiService{constructor(ze,me,b){this.http=ze,this.gui=me,this.router=b,this.transportsWindow=null,this.user=new _types_config__WEBPACK_IMPORTED_MODULE_4__.n(udsData.profile),this.plugin=new _helpers_plugin__WEBPACK_IMPORTED_MODULE_1__.S(this)}get config(){return udsData.config}get csrfField(){return csrf.csrfField}get csrfToken(){return csrf.csrfToken}get staffInfo(){return udsData.info}get plugins(){return udsData.plugins}get actors(){return udsData.actors}get errors(){return udsData.errors}enabler(ze,me){var b=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const c=b.config.urls.enabler.replace("param1",ze).replace("param2",me);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(b.http.get(c))})()}status(ze,me){var b=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const c=b.config.urls.status.replace("param1",ze).replace("param2",me);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(b.http.get(c))})()}action(ze,me){var b=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const c=b.config.urls.action.replace("param1",me).replace("param2",ze);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(b.http.get(c))})()}transportUrl(ze){var me=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(me.http.get(ze))})()}updateTransportTicket(ze,me,b,c,o){var M=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){const re=M.config.urls.updateTransportTicket.replace("param1",ze).replace("param2",me);return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(M.http.post(re,{username:b,password:c,domain:o}))})()}galleryImageURL(ze){return this.config.urls.galleryImage.replace("param1",ze)}transportIconURL(ze){return this.config.urls.transportIcon.replace("param1",ze)}staticURL(ze){return _environments_environment__WEBPACK_IMPORTED_MODULE_2__.N.production?this.config.urls.static+ze:"/static/"+ze}getServicesInformation(){var ze=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(ze.http.get(ze.config.urls.services))})()}getErrorInformation(ze){var me=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(me.http.get(me.config.urls.error.replace("9999",ze)))})()}executeCustomJSForServiceLaunch(){void 0!==udsData.customJSForServiceLaunch&&eval(udsData.customJSForServiceLaunch)}gotoAdmin(){window.location.href=this.config.urls.admin}logout(){window.location.href=this.config.urls.logout}download(ze){return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){let me=document.getElementById("download");me||(me=document.createElement("iframe"),me.id="download",me.style.display="none",document.body.appendChild(me)),me.src=ze,me.onload=()=>{alert("Error downloading file. Please try again later.")}})()}sleep(ze){return new Promise(me=>setTimeout(me,ze))}launchURL(ze){this.plugin.launchURL(ze)}getAuthCustomJavascript(ze){var me=this;return(0,_home_dkmaster_projects_uds_4_0_gui_user_node_modules_babel_runtime_helpers_esm_asyncToGenerator_js__WEBPACK_IMPORTED_MODULE_5__.Z)(function*(){return(0,_helpers_tools__WEBPACK_IMPORTED_MODULE_0__.Vi)(me.http.get(me.config.urls.customAuth+ze,{responseType:"text"}))})()}switchTheme(ze){const me=document.getElementsByTagName("html")[0];[DARK_THEME,LIGHT_THEME].forEach(b=>{me.classList.contains(b)&&me.classList.remove(b)}),me.classList.add(ze?DARK_THEME:LIGHT_THEME)}putOnStorage(ze,me){void 0!==typeof Storage&&sessionStorage.setItem(ze,me)}getFromStorage(ze){return void 0!==typeof Storage?sessionStorage.getItem(ze):null}}UDSApiService.\u0275fac=function ze(me){return new(me||UDSApiService)(_angular_core__WEBPACK_IMPORTED_MODULE_6__.LFG(_angular_common_http__WEBPACK_IMPORTED_MODULE_7__.eN),_angular_core__WEBPACK_IMPORTED_MODULE_6__.LFG(_uds_gui_service__WEBPACK_IMPORTED_MODULE_3__.h),_angular_core__WEBPACK_IMPORTED_MODULE_6__.LFG(_angular_router__WEBPACK_IMPORTED_MODULE_8__.F0))},UDSApiService.\u0275prov=_angular_core__WEBPACK_IMPORTED_MODULE_6__.Yz7({token:UDSApiService,factory:UDSApiService.\u0275fac})},4461:(ze,me,b)=>{b.d(me,{h:()=>j});var c=b(5861),o=b(5412),M=b(4986),re=b(2805),H=b(1571),fe=b(6895),Se=b(4859),ie=b(4029),Z=b(6410);function ye($,ee){if(1&$){const ae=H.EpF();H.TgZ(0,"button",3),H.NdJ("click",function(){H.CHM(ae);const de=H.oxw();return H.KtG(de.resolveAndClose(!1))}),H.TgZ(1,"uds-translate"),H._uU(2,"Close"),H.qZA(),H._uU(3),H.qZA()}if(2&$){const ae=H.oxw();H.xp6(3),H.Oqu(ae.extra)}}function se($,ee){if(1&$){const ae=H.EpF();H.TgZ(0,"button",3),H.NdJ("click",function(){H.CHM(ae);const de=H.oxw();return H.KtG(de.resolveAndClose(!0))}),H.TgZ(1,"uds-translate"),H._uU(2,"Yes"),H.qZA()()}}function Ee($,ee){if(1&$){const ae=H.EpF();H.TgZ(0,"button",3),H.NdJ("click",function(){H.CHM(ae);const de=H.oxw();return H.KtG(de.resolveAndClose(!1))}),H.TgZ(1,"uds-translate"),H._uU(2,"No"),H.qZA()()}}var we=(()=>{return($=we||(we={}))[$.alert=0]="alert",$[$.yesno=1]="yesno",$[$.credentials=2]="credentials",we;var $})();class Ie{constructor(ee,ae){this.dialogRef=ee,this.data=ae,this.extra="",this.subscription=null,this.yesno=new Promise(Pe=>this.resolver=Pe),this.resolver=()=>{}}resolveAndClose(ee){this.resolver(ee),this.close()}close(){this.dialogRef.close()}setExtra(ee){this.extra=" ("+Math.floor(ee/1e3)+" "+django.gettext("seconds")+") "}initAlert(){var ee=this;return(0,c.Z)(function*(){const ae=ee.data.autoclose||0;ae>0&&(ee.dialogRef.afterClosed().subscribe(Pe=>{ee.close()}),ee.setExtra(ae),function Q($=0,ee=M.z){return $<0&&($=0),(0,re.H)($,$,ee)}(1e3).subscribe(Pe=>{const de=ae-1e3*(Pe+1);ee.setExtra(de),de<=0&&ee.close()}))})()}ngOnInit(){this.data.type===we.alert&&this.initAlert()}}Ie.\u0275fac=function(ee){return new(ee||Ie)(H.Y36(o.so),H.Y36(o.WI))},Ie.\u0275cmp=H.Xpm({type:Ie,selectors:[["uds-modal"]],decls:8,vars:9,consts:[["mat-dialog-title","",3,"innerHtml"],[3,"innerHTML"],["mat-raised-button","","mat-dialog-close","",3,"click",4,"ngIf"],["mat-raised-button","","mat-dialog-close","",3,"click"]],template:function(ee,ae){1&ee&&(H._UZ(0,"h4",0),H.ALo(1,"safeHtml"),H._UZ(2,"mat-dialog-content",1),H.ALo(3,"safeHtml"),H.TgZ(4,"mat-dialog-actions"),H.YNc(5,ye,4,1,"button",2),H.YNc(6,se,3,0,"button",2),H.YNc(7,Ee,3,0,"button",2),H.qZA()),2&ee&&(H.Q6J("innerHtml",H.lcZ(1,5,ae.data.title),H.oJD),H.xp6(2),H.Q6J("innerHTML",H.lcZ(3,7,ae.data.body),H.oJD),H.xp6(3),H.Q6J("ngIf",0===ae.data.type),H.xp6(1),H.Q6J("ngIf",1===ae.data.type),H.xp6(1),H.Q6J("ngIf",1===ae.data.type))},dependencies:[fe.O5,Se.lW,o.ZT,o.uh,o.xY,o.H8,ie.P,Z.z],styles:[".uds-modal-footer[_ngcontent-%COMP%]{display:flex;justify-content:left}.mat-mdc-dialog-actions[_ngcontent-%COMP%]{justify-content:flex-end}"]});var Be=b(433),Ve=b(9549),Je=b(4144);const pt=function($,ee,ae){return{username:$,domain:ee,password:ae,success:!1}},_t=function($,ee,ae){return{username:$,domain:ee,password:ae,success:!0}};class ne{constructor(ee){this.data=ee,this.labels={username:django.gettext("Username"),password:django.gettext("Password"),domain:django.gettext("Domain")},this.username=ee.username,this.domain=ee.domain,this.password=""}}ne.\u0275fac=function(ee){return new(ee||ne)(H.Y36(o.WI))},ne.\u0275cmp=H.Xpm({type:ne,selectors:[["uds-credentials-modal"]],decls:21,vars:19,consts:[["mat-dialog-title",""],["matInput","",3,"placeholder","ngModel","ngModelChange"],["matInput","","type","password",3,"placeholder","ngModel","ngModelChange"],["mat-button","",3,"mat-dialog-close"]],template:function(ee,ae){1&ee&&(H.TgZ(0,"h2",0)(1,"uds-translate"),H._uU(2,"Please, enter access credentials"),H.qZA()(),H.TgZ(3,"mat-dialog-content")(4,"mat-form-field")(5,"mat-label"),H._uU(6),H.qZA(),H.TgZ(7,"input",1),H.NdJ("ngModelChange",function(de){return ae.username=de}),H.qZA()(),H.TgZ(8,"mat-form-field")(9,"mat-label"),H._uU(10),H.qZA(),H.TgZ(11,"input",2),H.NdJ("ngModelChange",function(de){return ae.password=de}),H.qZA()(),H.TgZ(12,"mat-form-field")(13,"mat-label"),H._uU(14),H.qZA(),H.TgZ(15,"input",1),H.NdJ("ngModelChange",function(de){return ae.domain=de}),H.qZA()()(),H.TgZ(16,"mat-dialog-actions")(17,"button",3),H._uU(18,"Cancel"),H.qZA(),H.TgZ(19,"button",3),H._uU(20,"Accept"),H.qZA()()),2&ee&&(H.xp6(6),H.hij(" ",ae.labels.username," "),H.xp6(1),H.Q6J("placeholder",ae.labels.username)("ngModel",ae.username),H.xp6(3),H.hij(" ",ae.labels.password," "),H.xp6(1),H.Q6J("placeholder",ae.labels.password)("ngModel",ae.password),H.xp6(3),H.hij(" ",ae.labels.domain," "),H.xp6(1),H.Q6J("placeholder",ae.labels.domain)("ngModel",ae.domain),H.xp6(2),H.Q6J("mat-dialog-close",H.kEZ(11,pt,ae.username,ae.domain,ae.password)),H.xp6(2),H.Q6J("mat-dialog-close",H.kEZ(15,_t,ae.username,ae.domain,ae.password)))},dependencies:[Be.Fj,Be.JJ,Be.On,Se.lW,o.ZT,o.uh,o.xY,o.H8,Ve.KE,Ve.hX,Je.Nt,ie.P],styles:[".mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}"]});var q=b(4215);class j{constructor(ee){this.dialog=ee}alert(ee,ae,Pe=0){var de=this;return(0,c.Z)(function*(){const be=window.innerWidth<800?"80%":"40%";return de.dialog.open(Ie,{width:be,data:{title:ee,body:ae,autoclose:Pe,type:we.alert},disableClose:!0})})()}yesno(ee,ae){const Pe=window.innerWidth<800?"80%":"40%";return this.dialog.open(Ie,{width:Pe,data:{title:ee,body:ae,type:we.yesno},disableClose:!0}).componentInstance.yesno}askCredentials(ee,ae){const Pe=this.dialog.open(ne,{data:{username:ee,domain:ae}});return(0,q.Vi)(Pe.afterClosed())}}j.\u0275fac=function(ee){return new(ee||j)(H.LFG(o.uw))},j.\u0275prov=H.Yz7({token:j,factory:j.\u0275fac})},3513:(ze,me,b)=>{b.d(me,{n:()=>c});class c{constructor(M){this.user=M.user,this.role=M.role,this.admin=M.admin}get isStaff(){return"staff"===this.role||"admin"===this.role}get isAdmin(){return"admin"===this.role}get isLogged(){return null!=this.user}get isRestricted(){return"restricted"===this.role}}},2340:(ze,me,b)=>{b.d(me,{N:()=>c});const c={production:!0}},284:(ze,me,b)=>{var c=b(1481),o=b(1571),M=b(2289),re=b(529),Q=b(8247),H=b(7003);class fe{constructor(l){this.api=l}canActivate(l,s){return!!this.api.user.isLogged||(this.api.router.navigate(["login"]),!1)}}fe.\u0275fac=function(l){return new(l||fe)(o.LFG(H.n))},fe.\u0275prov=o.Yz7({token:fe,factory:fe.\u0275fac,providedIn:"root"});var Se=b(4902),ie=b(6895),Z=b(4029);function ye(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div",6),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw();return o.KtG(W.api.download(P.url))}),o.TgZ(1,"div",7),o._UZ(2,"img",8),o.qZA(),o.TgZ(3,"div",9),o._uU(4),o.qZA(),o.TgZ(5,"div",10),o._uU(6),o.qZA()()}if(2&g){const s=l.$implicit,u=o.oxw();o.Tol(u.css(s)),o.xp6(2),o.Q6J("src",u.img(s.name),o.LSH),o.xp6(2),o.lnq(" ",u.legacy(s)," ",s.name," (",s.url.split(".").pop(),") "),o.xp6(2),o.hij(" ",s.description," ")}}class se{constructor(l){this.api=l}ngOnInit(){}img(l){return this.api.staticURL("modern/img/"+l+".png")}css(l){const s=["plugin"];return l.legacy&&s.push("legacy"),s}legacy(l){return l.legacy?"Legacy":""}}se.\u0275fac=function(l){return new(l||se)(o.Y36(H.n))},se.\u0275cmp=o.Xpm({type:se,selectors:[["uds-client-download"]],decls:13,vars:1,consts:[[1,"plugins-container"],[1,"banner"],[1,"banner-text"],[1,"plugins"],[3,"class","click",4,"ngFor","ngForOf"],[1,"info"],[3,"click"],[1,"image"],[3,"src"],[1,"platform"],[1,"description"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1")(4,"uds-translate"),o._uU(5,"UDS Client"),o.qZA()()()(),o.TgZ(6,"div",3),o.YNc(7,ye,7,7,"div",4),o.qZA(),o.TgZ(8,"div",5)(9,"ul")(10,"li")(11,"uds-translate"),o._uU(12,"Download UDS client for your platform"),o.qZA()()()()()),2&l&&(o.xp6(7),o.Q6J("ngForOf",s.api.plugins))},dependencies:[ie.sg,Z.P],styles:[".plugins-container[_ngcontent-%COMP%]{margin:0 2%}.banner[_ngcontent-%COMP%]{display:flex;justify-content:center;margin-bottom:2rem}.banner-text[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:3rem;text-align:center}.banner-text[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{font-size:1rem}.plugins[_ngcontent-%COMP%]{display:flex;flex-flow:row wrap;justify-content:center}.plugin[_ngcontent-%COMP%]{margin:0 1rem 2rem 0;padding:1rem;border-radius:1rem;box-shadow:0 1rem 2rem #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 15%}.plugin.legacy[_ngcontent-%COMP%]{background-color:#d3d3d3;flex:1 0 19%;max-width:20%}.plugin.legacy[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{max-width:5rem}.plugin[_ngcontent-%COMP%]:hover{cursor:pointer;box-shadow:0 .1rem .2rem #00000040,0 10px 10px #00000038;background-color:#0000001a}.image[_ngcontent-%COMP%]{display:flex;justify-content:center}.platform[_ngcontent-%COMP%]{text-align:center;font-size:2rem}.description[_ngcontent-%COMP%]{display:flex;text-align:center;justify-content:center;margin-top:.5rem} .dark-theme uds-client-download{color:#fff!important} .dark-theme .plugin.legacy{background-color:#a9a9a9} .dark-theme .plugin:hover{background-color:#ffffff1a}"]});var Ee=b(6410);function we(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div",6),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw();return o.KtG(W.api.download(P.url))}),o.TgZ(1,"div",7),o._UZ(2,"img",8),o.qZA(),o._UZ(3,"div",9),o.ALo(4,"safeHtml"),o._UZ(5,"div",10),o.ALo(6,"safeHtml"),o.qZA()}if(2&g){const s=l.$implicit,u=o.oxw();o.Tol(u.css(s.name)),o.xp6(2),o.Q6J("src",u.img(s.name),o.LSH),o.xp6(1),o.Q6J("innerHTML",o.lcZ(4,5,s.name),o.oJD),o.xp6(2),o.Q6J("innerHTML",o.lcZ(6,7,s.description),o.oJD)}}class Ie{constructor(l){this.api=l,this.actors=[]}ngOnInit(){this.actors=[];const l=[];for(const s of this.api.actors)s.name.includes("legacy")?l.push(s):this.actors.push(s);for(const s of l)this.actors.push(s)}img(l){const s=(l.split(".").pop()||"").toLowerCase();let u="Linux";return"exe"===s?u="Windows":"pkg"===s&&(u="MacOS"),this.api.staticURL("modern/img/"+u+".png")}css(l){const s=["actor"];return l.toLowerCase().includes("legacy")&&s.push("legacy"),s}}Ie.\u0275fac=function(l){return new(l||Ie)(o.Y36(H.n))},Ie.\u0275cmp=o.Xpm({type:Ie,selectors:[["uds-downloads"]],decls:16,vars:1,consts:[[1,"actors-container"],[1,"banner"],[1,"banner-text"],[1,"actors"],[3,"class","click",4,"ngFor","ngForOf"],[1,"info"],[3,"click"],[1,"image"],[3,"src"],[1,"name",3,"innerHTML"],[1,"description",3,"innerHTML"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1)(2,"div",2)(3,"h1")(4,"uds-translate"),o._uU(5,"Downloads"),o.qZA()()()(),o.TgZ(6,"div",3),o.YNc(7,we,7,9,"div",4),o.qZA(),o.TgZ(8,"div",5)(9,"ul")(10,"li")(11,"uds-translate"),o._uU(12,"Always download the UDS actor matching your platform"),o.qZA()(),o.TgZ(13,"li")(14,"uds-translate"),o._uU(15,"Legacy actors are only provided for old operating system support. Try to avoid them."),o.qZA()()()()()),2&l&&(o.xp6(7),o.Q6J("ngForOf",s.actors))},dependencies:[ie.sg,Z.P,Ee.z],styles:[".actors-container[_ngcontent-%COMP%]{display:flex;flex-flow:column;margin:0 2%}.banner[_ngcontent-%COMP%]{display:flex;justify-content:center}.banner-text[_ngcontent-%COMP%] h1[_ngcontent-%COMP%]{font-size:2em;text-align:center}.actors[_ngcontent-%COMP%]{display:flex;flex-flow:row wrap;justify-content:space-around;align-content:center;margin:auto}.actor[_ngcontent-%COMP%]{border:1px solid;margin-top:1rem;padding:1em;border-radius:1rem;box-shadow:0 1rem 2rem #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 34%;margin-right:1em}.actor.legacy[_ngcontent-%COMP%]{background-color:#d3d3d3;max-width:50%}.actor[_ngcontent-%COMP%]:hover{cursor:pointer;box-shadow:0 .1rem .2rem #00000040,0 10px 10px #00000038;background-color:#0000001a}.image[_ngcontent-%COMP%]{display:block;float:left;padding-right:1rem;height:100%}.image[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:4rem}.name[_ngcontent-%COMP%]{font-size:1.5em;margin-bottom:1em;font-weight:700;overflow:hidden} .dark-theme uds-downloads{color:#fff!important} .dark-theme .actor.legacy{background-color:#464646}"]});var Be=b(5017),Ve=b(1281),Je=b(7579),pt=b(727);let _t=0;const ne=new o.OlP("CdkAccordion");let q=(()=>{class g{constructor(){this._stateChanges=new Je.x,this._openCloseAllActions=new Je.x,this.id="cdk-accordion-"+_t++,this._multi=!1}get multi(){return this._multi}set multi(s){this._multi=(0,Ve.Ig)(s)}openAll(){this._multi&&this._openCloseAllActions.next(!0)}closeAll(){this._openCloseAllActions.next(!1)}ngOnChanges(s){this._stateChanges.next(s)}ngOnDestroy(){this._stateChanges.complete(),this._openCloseAllActions.complete()}}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["cdk-accordion"],["","cdkAccordion",""]],inputs:{multi:"multi"},exportAs:["cdkAccordion"],features:[o._Bn([{provide:ne,useExisting:g}]),o.TTD]}),g})(),j=0,$=(()=>{class g{get expanded(){return this._expanded}set expanded(s){s=(0,Ve.Ig)(s),this._expanded!==s&&(this._expanded=s,this.expandedChange.emit(s),s?(this.opened.emit(),this._expansionDispatcher.notify(this.id,this.accordion?this.accordion.id:this.id)):this.closed.emit(),this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(s){this._disabled=(0,Ve.Ig)(s)}constructor(s,u,y){this.accordion=s,this._changeDetectorRef=u,this._expansionDispatcher=y,this._openCloseAllSubscription=pt.w0.EMPTY,this.closed=new o.vpe,this.opened=new o.vpe,this.destroyed=new o.vpe,this.expandedChange=new o.vpe,this.id="cdk-accordion-child-"+j++,this._expanded=!1,this._disabled=!1,this._removeUniqueSelectionListener=()=>{},this._removeUniqueSelectionListener=y.listen((P,W)=>{this.accordion&&!this.accordion.multi&&this.accordion.id===W&&this.id!==P&&(this.expanded=!1)}),this.accordion&&(this._openCloseAllSubscription=this._subscribeToOpenCloseAllActions())}ngOnDestroy(){this.opened.complete(),this.closed.complete(),this.destroyed.emit(),this.destroyed.complete(),this._removeUniqueSelectionListener(),this._openCloseAllSubscription.unsubscribe()}toggle(){this.disabled||(this.expanded=!this.expanded)}close(){this.disabled||(this.expanded=!1)}open(){this.disabled||(this.expanded=!0)}_subscribeToOpenCloseAllActions(){return this.accordion._openCloseAllActions.subscribe(s=>{this.disabled||(this.expanded=s)})}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(ne,12),o.Y36(o.sBO),o.Y36(Be.A8))},g.\u0275dir=o.lG2({type:g,selectors:[["cdk-accordion-item"],["","cdkAccordionItem",""]],inputs:{expanded:"expanded",disabled:"disabled"},outputs:{closed:"closed",opened:"opened",destroyed:"destroyed",expandedChange:"expandedChange"},exportAs:["cdkAccordionItem"],features:[o._Bn([{provide:ne,useValue:void 0}])]}),g})(),ee=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({}),g})();var ae=b(4080),Pe=b(3238),de=b(2687),be=b(1884),Fe=b(8675),ke=b(9300),Xe=b(5698),$e=b(9521),bt=b(515),At=b(6451),ot=b(7340);const st=["body"];function mt(g,l){}const ut=[[["mat-expansion-panel-header"]],"*",[["mat-action-row"]]],lt=["mat-expansion-panel-header","*","mat-action-row"];function jt(g,l){if(1&g&&o._UZ(0,"span",2),2&g){const s=o.oxw();o.Q6J("@indicatorRotate",s._getExpandedState())}}const Lt=[[["mat-panel-title"]],[["mat-panel-description"]],"*"],yt=["mat-panel-title","mat-panel-description","*"],hn=new o.OlP("MAT_ACCORDION"),It="225ms cubic-bezier(0.4,0.0,0.2,1)",yn={indicatorRotate:(0,ot.X$)("indicatorRotate",[(0,ot.SB)("collapsed, void",(0,ot.oB)({transform:"rotate(0deg)"})),(0,ot.SB)("expanded",(0,ot.oB)({transform:"rotate(180deg)"})),(0,ot.eR)("expanded <=> collapsed, void => collapsed",(0,ot.jt)(It))]),bodyExpansion:(0,ot.X$)("bodyExpansion",[(0,ot.SB)("collapsed, void",(0,ot.oB)({height:"0px",visibility:"hidden"})),(0,ot.SB)("expanded",(0,ot.oB)({height:"*",visibility:"visible"})),(0,ot.eR)("expanded <=> collapsed, void => collapsed",(0,ot.jt)(It))])},tn=new o.OlP("MAT_EXPANSION_PANEL");let xn=(()=>{class g{constructor(s,u){this._template=s,this._expansionPanel=u}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.Rgc),o.Y36(tn,8))},g.\u0275dir=o.lG2({type:g,selectors:[["ng-template","matExpansionPanelContent",""]]}),g})(),Ct=0;const Ht=new o.OlP("MAT_EXPANSION_PANEL_DEFAULT_OPTIONS");let oe=(()=>{class g extends ${get hideToggle(){return this._hideToggle||this.accordion&&this.accordion.hideToggle}set hideToggle(s){this._hideToggle=(0,Ve.Ig)(s)}get togglePosition(){return this._togglePosition||this.accordion&&this.accordion.togglePosition}set togglePosition(s){this._togglePosition=s}constructor(s,u,y,P,W,he,Le){super(s,u,y),this._viewContainerRef=P,this._animationMode=he,this._hideToggle=!1,this.afterExpand=new o.vpe,this.afterCollapse=new o.vpe,this._inputChanges=new Je.x,this._headerId="mat-expansion-panel-header-"+Ct++,this._bodyAnimationDone=new Je.x,this.accordion=s,this._document=W,this._bodyAnimationDone.pipe((0,be.x)((qe,vt)=>qe.fromState===vt.fromState&&qe.toState===vt.toState)).subscribe(qe=>{"void"!==qe.fromState&&("expanded"===qe.toState?this.afterExpand.emit():"collapsed"===qe.toState&&this.afterCollapse.emit())}),Le&&(this.hideToggle=Le.hideToggle)}_hasSpacing(){return!!this.accordion&&this.expanded&&"default"===this.accordion.displayMode}_getExpandedState(){return this.expanded?"expanded":"collapsed"}toggle(){this.expanded=!this.expanded}close(){this.expanded=!1}open(){this.expanded=!0}ngAfterContentInit(){this._lazyContent&&this._lazyContent._expansionPanel===this&&this.opened.pipe((0,Fe.O)(null),(0,ke.h)(()=>this.expanded&&!this._portal),(0,Xe.q)(1)).subscribe(()=>{this._portal=new ae.UE(this._lazyContent._template,this._viewContainerRef)})}ngOnChanges(s){this._inputChanges.next(s)}ngOnDestroy(){super.ngOnDestroy(),this._bodyAnimationDone.complete(),this._inputChanges.complete()}_containsFocus(){if(this._body){const s=this._document.activeElement,u=this._body.nativeElement;return s===u||u.contains(s)}return!1}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(hn,12),o.Y36(o.sBO),o.Y36(Be.A8),o.Y36(o.s_b),o.Y36(ie.K0),o.Y36(o.QbO,8),o.Y36(Ht,8))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-expansion-panel"]],contentQueries:function(s,u,y){if(1&s&&o.Suo(y,xn,5),2&s){let P;o.iGM(P=o.CRH())&&(u._lazyContent=P.first)}},viewQuery:function(s,u){if(1&s&&o.Gf(st,5),2&s){let y;o.iGM(y=o.CRH())&&(u._body=y.first)}},hostAttrs:[1,"mat-expansion-panel"],hostVars:6,hostBindings:function(s,u){2&s&&o.ekj("mat-expanded",u.expanded)("_mat-animation-noopable","NoopAnimations"===u._animationMode)("mat-expansion-panel-spacing",u._hasSpacing())},inputs:{disabled:"disabled",expanded:"expanded",hideToggle:"hideToggle",togglePosition:"togglePosition"},outputs:{opened:"opened",closed:"closed",expandedChange:"expandedChange",afterExpand:"afterExpand",afterCollapse:"afterCollapse"},exportAs:["matExpansionPanel"],features:[o._Bn([{provide:hn,useValue:void 0},{provide:tn,useExisting:g}]),o.qOj,o.TTD],ngContentSelectors:lt,decls:7,vars:4,consts:[["role","region",1,"mat-expansion-panel-content",3,"id"],["body",""],[1,"mat-expansion-panel-body"],[3,"cdkPortalOutlet"]],template:function(s,u){1&s&&(o.F$t(ut),o.Hsn(0),o.TgZ(1,"div",0,1),o.NdJ("@bodyExpansion.done",function(P){return u._bodyAnimationDone.next(P)}),o.TgZ(3,"div",2),o.Hsn(4,1),o.YNc(5,mt,0,0,"ng-template",3),o.qZA(),o.Hsn(6,2),o.qZA()),2&s&&(o.xp6(1),o.Q6J("@bodyExpansion",u._getExpandedState())("id",u.id),o.uIk("aria-labelledby",u._headerId),o.xp6(4),o.Q6J("cdkPortalOutlet",u._portal))},dependencies:[ae.Pl],styles:['.mat-expansion-panel{box-sizing:content-box;display:block;margin:0;border-radius:4px;overflow:hidden;transition:margin 225ms cubic-bezier(0.4, 0, 0.2, 1),box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);position:relative}.mat-accordion .mat-expansion-panel:not(.mat-expanded),.mat-accordion .mat-expansion-panel:not(.mat-expansion-panel-spacing){border-radius:0}.mat-accordion .mat-expansion-panel:first-of-type{border-top-right-radius:4px;border-top-left-radius:4px}.mat-accordion .mat-expansion-panel:last-of-type{border-bottom-right-radius:4px;border-bottom-left-radius:4px}.cdk-high-contrast-active .mat-expansion-panel{outline:solid 1px}.mat-expansion-panel.ng-animate-disabled,.ng-animate-disabled .mat-expansion-panel,.mat-expansion-panel._mat-animation-noopable{transition:none}.mat-expansion-panel-content{display:flex;flex-direction:column;overflow:visible}.mat-expansion-panel-content[style*="visibility: hidden"] *{visibility:hidden !important}.mat-expansion-panel-body{padding:0 24px 16px}.mat-expansion-panel-spacing{margin:16px 0}.mat-accordion>.mat-expansion-panel-spacing:first-child,.mat-accordion>*:first-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-top:0}.mat-accordion>.mat-expansion-panel-spacing:last-child,.mat-accordion>*:last-child:not(.mat-expansion-panel) .mat-expansion-panel-spacing{margin-bottom:0}.mat-action-row{border-top-style:solid;border-top-width:1px;display:flex;flex-direction:row;justify-content:flex-end;padding:16px 8px 16px 24px}.mat-action-row .mat-button-base,.mat-action-row .mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-action-row .mat-button-base,[dir=rtl] .mat-action-row .mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2,data:{animation:[yn.bodyExpansion]},changeDetection:0}),g})();class G{}const Re=(0,Pe.sb)(G);let tt=(()=>{class g extends Re{constructor(s,u,y,P,W,he,Le){super(),this.panel=s,this._element=u,this._focusMonitor=y,this._changeDetectorRef=P,this._animationMode=he,this._parentChangeSubscription=pt.w0.EMPTY;const qe=s.accordion?s.accordion._stateChanges.pipe((0,ke.h)(vt=>!(!vt.hideToggle&&!vt.togglePosition))):bt.E;this.tabIndex=parseInt(Le||"")||0,this._parentChangeSubscription=(0,At.T)(s.opened,s.closed,qe,s._inputChanges.pipe((0,ke.h)(vt=>!!(vt.hideToggle||vt.disabled||vt.togglePosition)))).subscribe(()=>this._changeDetectorRef.markForCheck()),s.closed.pipe((0,ke.h)(()=>s._containsFocus())).subscribe(()=>y.focusVia(u,"program")),W&&(this.expandedHeight=W.expandedHeight,this.collapsedHeight=W.collapsedHeight)}get disabled(){return this.panel.disabled}_toggle(){this.disabled||this.panel.toggle()}_isExpanded(){return this.panel.expanded}_getExpandedState(){return this.panel._getExpandedState()}_getPanelId(){return this.panel.id}_getTogglePosition(){return this.panel.togglePosition}_showToggle(){return!this.panel.hideToggle&&!this.panel.disabled}_getHeaderHeight(){const s=this._isExpanded();return s&&this.expandedHeight?this.expandedHeight:!s&&this.collapsedHeight?this.collapsedHeight:null}_keydown(s){switch(s.keyCode){case $e.L_:case $e.K5:(0,$e.Vb)(s)||(s.preventDefault(),this._toggle());break;default:return void(this.panel.accordion&&this.panel.accordion._handleHeaderKeydown(s))}}focus(s,u){s?this._focusMonitor.focusVia(this._element,s,u):this._element.nativeElement.focus(u)}ngAfterViewInit(){this._focusMonitor.monitor(this._element).subscribe(s=>{s&&this.panel.accordion&&this.panel.accordion._handleHeaderFocus(this)})}ngOnDestroy(){this._parentChangeSubscription.unsubscribe(),this._focusMonitor.stopMonitoring(this._element)}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(oe,1),o.Y36(o.SBq),o.Y36(de.tE),o.Y36(o.sBO),o.Y36(Ht,8),o.Y36(o.QbO,8),o.$8M("tabindex"))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-expansion-panel-header"]],hostAttrs:["role","button",1,"mat-expansion-panel-header","mat-focus-indicator"],hostVars:15,hostBindings:function(s,u){1&s&&o.NdJ("click",function(){return u._toggle()})("keydown",function(P){return u._keydown(P)}),2&s&&(o.uIk("id",u.panel._headerId)("tabindex",u.tabIndex)("aria-controls",u._getPanelId())("aria-expanded",u._isExpanded())("aria-disabled",u.panel.disabled),o.Udp("height",u._getHeaderHeight()),o.ekj("mat-expanded",u._isExpanded())("mat-expansion-toggle-indicator-after","after"===u._getTogglePosition())("mat-expansion-toggle-indicator-before","before"===u._getTogglePosition())("_mat-animation-noopable","NoopAnimations"===u._animationMode))},inputs:{tabIndex:"tabIndex",expandedHeight:"expandedHeight",collapsedHeight:"collapsedHeight"},features:[o.qOj],ngContentSelectors:yt,decls:5,vars:3,consts:[[1,"mat-content"],["class","mat-expansion-indicator",4,"ngIf"],[1,"mat-expansion-indicator"]],template:function(s,u){1&s&&(o.F$t(Lt),o.TgZ(0,"span",0),o.Hsn(1),o.Hsn(2,1),o.Hsn(3,2),o.qZA(),o.YNc(4,jt,1,1,"span",1)),2&s&&(o.ekj("mat-content-hide-toggle",!u._showToggle()),o.xp6(4),o.Q6J("ngIf",u._showToggle()))},dependencies:[ie.O5],styles:['.mat-expansion-panel-header{display:flex;flex-direction:row;align-items:center;padding:0 24px;border-radius:inherit;transition:height 225ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-expansion-panel-header._mat-animation-noopable{transition:none}.mat-expansion-panel-header:focus,.mat-expansion-panel-header:hover{outline:none}.mat-expansion-panel-header.mat-expanded:focus,.mat-expansion-panel-header.mat-expanded:hover{background:inherit}.mat-expansion-panel-header:not([aria-disabled=true]){cursor:pointer}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before{flex-direction:row-reverse}.mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 16px 0 0}[dir=rtl] .mat-expansion-panel-header.mat-expansion-toggle-indicator-before .mat-expansion-indicator{margin:0 0 0 16px}.mat-content{display:flex;flex:1;flex-direction:row;overflow:hidden}.mat-content.mat-content-hide-toggle{margin-right:8px}[dir=rtl] .mat-content.mat-content-hide-toggle{margin-right:0;margin-left:8px}.mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-left:24px;margin-right:0}[dir=rtl] .mat-expansion-toggle-indicator-before .mat-content.mat-content-hide-toggle{margin-right:24px;margin-left:0}.mat-expansion-panel-header-title,.mat-expansion-panel-header-description{display:flex;flex-grow:1;flex-basis:0;margin-right:16px;align-items:center}[dir=rtl] .mat-expansion-panel-header-title,[dir=rtl] .mat-expansion-panel-header-description{margin-right:0;margin-left:16px}.mat-expansion-panel-header-description{flex-grow:2}.mat-expansion-indicator::after{border-style:solid;border-width:0 2px 2px 0;content:"";display:inline-block;padding:3px;transform:rotate(45deg);vertical-align:middle}.cdk-high-contrast-active .mat-expansion-panel-content{border-top:1px solid;border-top-left-radius:0;border-top-right-radius:0}'],encapsulation:2,data:{animation:[yn.indicatorRotate]},changeDetection:0}),g})(),ue=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["mat-panel-description"]],hostAttrs:[1,"mat-expansion-panel-header-description"]}),g})(),R=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["mat-panel-title"]],hostAttrs:[1,"mat-expansion-panel-header-title"]}),g})(),K=(()=>{class g extends q{constructor(){super(...arguments),this._ownHeaders=new o.n_E,this._hideToggle=!1,this.displayMode="default",this.togglePosition="after"}get hideToggle(){return this._hideToggle}set hideToggle(s){this._hideToggle=(0,Ve.Ig)(s)}ngAfterContentInit(){this._headers.changes.pipe((0,Fe.O)(this._headers)).subscribe(s=>{this._ownHeaders.reset(s.filter(u=>u.panel.accordion===this)),this._ownHeaders.notifyOnChanges()}),this._keyManager=new de.Em(this._ownHeaders).withWrap().withHomeAndEnd()}_handleHeaderKeydown(s){this._keyManager.onKeydown(s)}_handleHeaderFocus(s){this._keyManager.updateActiveItem(s)}ngOnDestroy(){var s;super.ngOnDestroy(),null===(s=this._keyManager)||void 0===s||s.destroy(),this._ownHeaders.destroy()}}return g.\u0275fac=function(){let l;return function(u){return(l||(l=o.n5z(g)))(u||g)}}(),g.\u0275dir=o.lG2({type:g,selectors:[["mat-accordion"]],contentQueries:function(s,u,y){if(1&s&&o.Suo(y,tt,5),2&s){let P;o.iGM(P=o.CRH())&&(u._headers=P)}},hostAttrs:[1,"mat-accordion"],hostVars:2,hostBindings:function(s,u){2&s&&o.ekj("mat-accordion-multi",u.multi)},inputs:{multi:"multi",hideToggle:"hideToggle",displayMode:"displayMode",togglePosition:"togglePosition"},exportAs:["matAccordion"],features:[o._Bn([{provide:hn,useExisting:g}]),o.qOj]}),g})(),De=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({imports:[ie.ez,Pe.BQ,ee,ae.eL]}),g})();var Ce=b(4859),Ke=b(9646),it=b(3101),et=b(3900),_e=b(2722),Ye=b(4986),F=b(7272),pe=b(4482),te=b(5403),ge=b(5032),at=b(9718),Vt=b(5577),St=b(8421);function mn(g,l){return l?s=>(0,F.z)(l.pipe((0,Xe.q)(1),function rt(){return(0,pe.e)((g,l)=>{g.subscribe((0,te.x)(l,ge.Z))})}()),s.pipe(mn(g))):(0,Vt.z)((s,u)=>(0,St.Xf)(g(s,u)).pipe((0,Xe.q)(1),(0,at.h)(s)))}var gn=b(2805);function Ze(g,l=Ye.z){const s=(0,gn.H)(g,l);return mn(()=>s)}var Me=b(445),I=b(8184),A=b(3353),T=b(5589);const z=["mat-menu-item",""];function Y(g,l){1&g&&(o.O4$(),o.TgZ(0,"svg",3),o._UZ(1,"polygon",4),o.qZA())}const He=[[["mat-icon"],["","matMenuItemIcon",""]],"*"],gt=["mat-icon, [matMenuItemIcon]","*"];function Ft(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div",0),o.NdJ("keydown",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P._handleKeydown(y))})("click",function(){o.CHM(s);const y=o.oxw();return o.KtG(y.closed.emit("click"))})("@transformMenu.start",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P._onAnimationStart(y))})("@transformMenu.done",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P._onAnimationDone(y))}),o.TgZ(1,"div",1),o.Hsn(2),o.qZA()()}if(2&g){const s=o.oxw();o.Q6J("id",s.panelId)("ngClass",s._classList)("@transformMenu",s._panelAnimationState),o.uIk("aria-label",s.ariaLabel||null)("aria-labelledby",s.ariaLabelledby||null)("aria-describedby",s.ariaDescribedby||null)}}const kt=["*"],on=new o.OlP("MAT_MENU_PANEL"),Jn=(0,Pe.Kr)((0,Pe.Id)(class{}));let ln=(()=>{class g extends Jn{constructor(s,u,y,P,W){var he;super(),this._elementRef=s,this._document=u,this._focusMonitor=y,this._parentMenu=P,this._changeDetectorRef=W,this.role="menuitem",this._hovered=new Je.x,this._focused=new Je.x,this._highlighted=!1,this._triggersSubmenu=!1,null==P||null===(he=P.addItem)||void 0===he||he.call(P,this)}focus(s,u){this._focusMonitor&&s?this._focusMonitor.focusVia(this._getHostElement(),s,u):this._getHostElement().focus(u),this._focused.next(this)}ngAfterViewInit(){this._focusMonitor&&this._focusMonitor.monitor(this._elementRef,!1)}ngOnDestroy(){this._focusMonitor&&this._focusMonitor.stopMonitoring(this._elementRef),this._parentMenu&&this._parentMenu.removeItem&&this._parentMenu.removeItem(this),this._hovered.complete(),this._focused.complete()}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._elementRef.nativeElement}_checkDisabled(s){this.disabled&&(s.preventDefault(),s.stopPropagation())}_handleMouseEnter(){this._hovered.next(this)}getLabel(){var s;const u=this._elementRef.nativeElement.cloneNode(!0),y=u.querySelectorAll("mat-icon, .material-icons");for(let P=0;P enter",(0,ot.jt)("120ms cubic-bezier(0, 0, 0.2, 1)",(0,ot.oB)({opacity:1,transform:"scale(1)"}))),(0,ot.eR)("* => void",(0,ot.jt)("100ms 25ms linear",(0,ot.oB)({opacity:0})))]),fadeInItems:(0,ot.X$)("fadeInItems",[(0,ot.SB)("showing",(0,ot.oB)({opacity:1})),(0,ot.eR)("void => *",[(0,ot.oB)({opacity:0}),(0,ot.jt)("400ms 100ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let An=0;const jn=new o.OlP("mat-menu-default-options",{providedIn:"root",factory:function si(){return{overlapTrigger:!1,xPosition:"after",yPosition:"below",backdropClass:"cdk-overlay-transparent-backdrop"}}});let Li=(()=>{class g{get xPosition(){return this._xPosition}set xPosition(s){this._xPosition=s,this.setPositionClasses()}get yPosition(){return this._yPosition}set yPosition(s){this._yPosition=s,this.setPositionClasses()}get overlapTrigger(){return this._overlapTrigger}set overlapTrigger(s){this._overlapTrigger=(0,Ve.Ig)(s)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(s){this._hasBackdrop=(0,Ve.Ig)(s)}set panelClass(s){const u=this._previousPanelClass;u&&u.length&&u.split(" ").forEach(y=>{this._classList[y]=!1}),this._previousPanelClass=s,s&&s.length&&(s.split(" ").forEach(y=>{this._classList[y]=!0}),this._elementRef.nativeElement.className="")}get classList(){return this.panelClass}set classList(s){this.panelClass=s}constructor(s,u,y,P){this._elementRef=s,this._ngZone=u,this._defaultOptions=y,this._changeDetectorRef=P,this._xPosition=this._defaultOptions.xPosition,this._yPosition=this._defaultOptions.yPosition,this._directDescendantItems=new o.n_E,this._classList={},this._panelAnimationState="void",this._animationDone=new Je.x,this.overlayPanelClass=this._defaultOptions.overlayPanelClass||"",this.backdropClass=this._defaultOptions.backdropClass,this._overlapTrigger=this._defaultOptions.overlapTrigger,this._hasBackdrop=this._defaultOptions.hasBackdrop,this.closed=new o.vpe,this.close=this.closed,this.panelId="mat-menu-panel-"+An++}ngOnInit(){this.setPositionClasses()}ngAfterContentInit(){this._updateDirectDescendants(),this._keyManager=new de.Em(this._directDescendantItems).withWrap().withTypeAhead().withHomeAndEnd(),this._keyManager.tabOut.subscribe(()=>this.closed.emit("tab")),this._directDescendantItems.changes.pipe((0,Fe.O)(this._directDescendantItems),(0,et.w)(s=>(0,At.T)(...s.map(u=>u._focused)))).subscribe(s=>this._keyManager.updateActiveItem(s)),this._directDescendantItems.changes.subscribe(s=>{var u;const y=this._keyManager;if("enter"===this._panelAnimationState&&null!==(u=y.activeItem)&&void 0!==u&&u._hasFocus()){const P=s.toArray(),W=Math.max(0,Math.min(P.length-1,y.activeItemIndex||0));P[W]&&!P[W].disabled?y.setActiveItem(W):y.setNextItemActive()}})}ngOnDestroy(){var s,u;null===(s=this._keyManager)||void 0===s||s.destroy(),this._directDescendantItems.destroy(),this.closed.complete(),null===(u=this._firstItemFocusSubscription)||void 0===u||u.unsubscribe()}_hovered(){return this._directDescendantItems.changes.pipe((0,Fe.O)(this._directDescendantItems),(0,et.w)(u=>(0,At.T)(...u.map(y=>y._hovered))))}addItem(s){}removeItem(s){}_handleKeydown(s){const u=s.keyCode,y=this._keyManager;switch(u){case $e.hY:(0,$e.Vb)(s)||(s.preventDefault(),this.closed.emit("keydown"));break;case $e.oh:this.parentMenu&&"ltr"===this.direction&&this.closed.emit("keydown");break;case $e.SV:this.parentMenu&&"rtl"===this.direction&&this.closed.emit("keydown");break;default:return(u===$e.LH||u===$e.JH)&&y.setFocusOrigin("keyboard"),void y.onKeydown(s)}s.stopPropagation()}focusFirstItem(s="program"){var u;null===(u=this._firstItemFocusSubscription)||void 0===u||u.unsubscribe(),this._firstItemFocusSubscription=this._ngZone.onStable.pipe((0,Xe.q)(1)).subscribe(()=>{let y=null;if(this._directDescendantItems.length&&(y=this._directDescendantItems.first._getHostElement().closest('[role="menu"]')),!y||!y.contains(document.activeElement)){const P=this._keyManager;P.setFocusOrigin(s).setFirstItemActive(),!P.activeItem&&y&&y.focus()}})}resetActiveItem(){this._keyManager.setActiveItem(-1)}setElevation(s){const u=Math.min(this._baseElevation+s,24),y=`${this._elevationPrefix}${u}`,P=Object.keys(this._classList).find(W=>W.startsWith(this._elevationPrefix));(!P||P===this._previousElevation)&&(this._previousElevation&&(this._classList[this._previousElevation]=!1),this._classList[y]=!0,this._previousElevation=y)}setPositionClasses(s=this.xPosition,u=this.yPosition){var y;const P=this._classList;P["mat-menu-before"]="before"===s,P["mat-menu-after"]="after"===s,P["mat-menu-above"]="above"===u,P["mat-menu-below"]="below"===u,null===(y=this._changeDetectorRef)||void 0===y||y.markForCheck()}_startAnimation(){this._panelAnimationState="enter"}_resetAnimation(){this._panelAnimationState="void"}_onAnimationDone(s){this._animationDone.next(s),this._isAnimating=!1}_onAnimationStart(s){this._isAnimating=!0,"enter"===s.toState&&0===this._keyManager.activeItemIndex&&(s.element.scrollTop=0)}_updateDirectDescendants(){this._allItems.changes.pipe((0,Fe.O)(this._allItems)).subscribe(s=>{this._directDescendantItems.reset(s.filter(u=>u._parentMenu===this)),this._directDescendantItems.notifyOnChanges()})}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(o.R0b),o.Y36(jn),o.Y36(o.sBO))},g.\u0275dir=o.lG2({type:g,contentQueries:function(s,u,y){if(1&s&&(o.Suo(y,J,5),o.Suo(y,ln,5),o.Suo(y,ln,4)),2&s){let P;o.iGM(P=o.CRH())&&(u.lazyContent=P.first),o.iGM(P=o.CRH())&&(u._allItems=P),o.iGM(P=o.CRH())&&(u.items=P)}},viewQuery:function(s,u){if(1&s&&o.Gf(o.Rgc,5),2&s){let y;o.iGM(y=o.CRH())&&(u.templateRef=y.first)}},inputs:{backdropClass:"backdropClass",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],xPosition:"xPosition",yPosition:"yPosition",overlapTrigger:"overlapTrigger",hasBackdrop:"hasBackdrop",panelClass:["class","panelClass"],classList:"classList"},outputs:{closed:"closed",close:"close"}}),g})(),Ti=(()=>{class g extends Li{constructor(s,u,y,P){super(s,u,y,P),this._elevationPrefix="mat-elevation-z",this._baseElevation=8}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(o.R0b),o.Y36(jn),o.Y36(o.sBO))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-menu"]],hostVars:3,hostBindings:function(s,u){2&s&&o.uIk("aria-label",null)("aria-labelledby",null)("aria-describedby",null)},exportAs:["matMenu"],features:[o._Bn([{provide:on,useExisting:g}]),o.qOj],ngContentSelectors:kt,decls:1,vars:0,consts:[["tabindex","-1","role","menu",1,"mat-mdc-menu-panel","mdc-menu-surface","mdc-menu-surface--open","mat-mdc-elevation-specific",3,"id","ngClass","keydown","click"],[1,"mat-mdc-menu-content","mdc-list"]],template:function(s,u){1&s&&(o.F$t(),o.YNc(0,Ft,3,6,"ng-template"))},dependencies:[ie.mk],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}mat-menu{display:none}.mat-mdc-menu-content{margin:0;padding:8px 0;list-style-type:none}.mat-mdc-menu-content:focus{outline:none}.mat-mdc-menu-panel.ng-animating{pointer-events:none}.cdk-high-contrast-active .mat-mdc-menu-panel{outline:solid 1px}.mat-mdc-menu-panel.mat-mdc-menu-panel{min-width:112px;max-width:280px;overflow:auto;-webkit-overflow-scrolling:touch;position:relative}.mat-mdc-menu-item{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;outline:none;border:none;-webkit-tap-highlight-color:rgba(0,0,0,0);cursor:pointer;width:100%;text-align:left;box-sizing:border-box;color:inherit;font-size:inherit;background:none;text-decoration:none;margin:0;min-height:48px}.mat-mdc-menu-item:focus{outline:none}[dir=rtl] .mat-mdc-menu-item,.mat-mdc-menu-item[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-menu-item::-moz-focus-inner{border:0}.mat-mdc-menu-item.mdc-list-item{align-items:center}.mat-mdc-menu-item[disabled]{cursor:default;opacity:.38}.mat-mdc-menu-item[disabled]::after{display:block;position:absolute;content:"";top:0;left:0;bottom:0;right:0}.mat-mdc-menu-item .mat-icon{margin-right:16px}[dir=rtl] .mat-mdc-menu-item{text-align:right}[dir=rtl] .mat-mdc-menu-item .mat-icon{margin-right:0;margin-left:16px}.mat-mdc-menu-item .mdc-list-item__primary-text{white-space:normal}.mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:32px}[dir=rtl] .mat-mdc-menu-item.mat-mdc-menu-item-submenu-trigger{padding-right:16px;padding-left:32px}.cdk-high-contrast-active .mat-mdc-menu-item{margin-top:1px}.mat-mdc-menu-submenu-icon{position:absolute;top:50%;right:16px;transform:translateY(-50%);width:5px;height:10px;fill:currentColor}[dir=rtl] .mat-mdc-menu-submenu-icon{right:auto;left:16px;transform:translateY(-50%) scaleX(-1)}.cdk-high-contrast-active .mat-mdc-menu-submenu-icon{fill:CanvasText}.mat-mdc-menu-item .mat-mdc-menu-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}'],encapsulation:2,data:{animation:[Tt.transformMenu,Tt.fadeInItems]},changeDetection:0}),g})();const ao=new o.OlP("mat-menu-scroll-strategy"),xi={provide:ao,deps:[I.aV],useFactory:function Ni(g){return()=>g.scrollStrategies.reposition()}},Zi=(0,A.i$)({passive:!0});let bo=(()=>{class g{get _deprecatedMatMenuTriggerFor(){return this.menu}set _deprecatedMatMenuTriggerFor(s){this.menu=s}get menu(){return this._menu}set menu(s){var u;s!==this._menu&&(this._menu=s,this._menuCloseSubscription.unsubscribe(),s&&(this._menuCloseSubscription=s.close.subscribe(y=>{this._destroyMenu(y),("click"===y||"tab"===y)&&this._parentMaterialMenu&&this._parentMaterialMenu.closed.emit(y)})),null===(u=this._menuItemInstance)||void 0===u||u._setTriggersSubmenu(this.triggersSubmenu()))}constructor(s,u,y,P,W,he,Le,qe,vt){this._overlay=s,this._element=u,this._viewContainerRef=y,this._menuItemInstance=he,this._dir=Le,this._focusMonitor=qe,this._ngZone=vt,this._overlayRef=null,this._menuOpen=!1,this._closingActionsSubscription=pt.w0.EMPTY,this._hoverSubscription=pt.w0.EMPTY,this._menuCloseSubscription=pt.w0.EMPTY,this._changeDetectorRef=(0,o.f3M)(o.sBO),this._handleTouchStart=Dt=>{(0,de.yG)(Dt)||(this._openedBy="touch")},this._openedBy=void 0,this.restoreFocus=!0,this.menuOpened=new o.vpe,this.onMenuOpen=this.menuOpened,this.menuClosed=new o.vpe,this.onMenuClose=this.menuClosed,this._scrollStrategy=P,this._parentMaterialMenu=W instanceof Li?W:void 0,u.nativeElement.addEventListener("touchstart",this._handleTouchStart,Zi)}ngAfterContentInit(){this._handleHover()}ngOnDestroy(){this._overlayRef&&(this._overlayRef.dispose(),this._overlayRef=null),this._element.nativeElement.removeEventListener("touchstart",this._handleTouchStart,Zi),this._menuCloseSubscription.unsubscribe(),this._closingActionsSubscription.unsubscribe(),this._hoverSubscription.unsubscribe()}get menuOpen(){return this._menuOpen}get dir(){return this._dir&&"rtl"===this._dir.value?"rtl":"ltr"}triggersSubmenu(){return!!(this._menuItemInstance&&this._parentMaterialMenu&&this.menu)}toggleMenu(){return this._menuOpen?this.closeMenu():this.openMenu()}openMenu(){const s=this.menu;if(this._menuOpen||!s)return;const u=this._createOverlay(s),y=u.getConfig(),P=y.positionStrategy;this._setPosition(s,P),y.hasBackdrop=null==s.hasBackdrop?!this.triggersSubmenu():s.hasBackdrop,u.attach(this._getPortal(s)),s.lazyContent&&s.lazyContent.attach(this.menuData),this._closingActionsSubscription=this._menuClosingActions().subscribe(()=>this.closeMenu()),this._initMenu(s),s instanceof Li&&(s._startAnimation(),s._directDescendantItems.changes.pipe((0,_e.R)(s.close)).subscribe(()=>{P.withLockedPosition(!1).reapplyLastPosition(),P.withLockedPosition(!0)}))}closeMenu(){var s;null===(s=this.menu)||void 0===s||s.close.emit()}focus(s,u){this._focusMonitor&&s?this._focusMonitor.focusVia(this._element,s,u):this._element.nativeElement.focus(u)}updatePosition(){var s;null===(s=this._overlayRef)||void 0===s||s.updatePosition()}_destroyMenu(s){if(!this._overlayRef||!this.menuOpen)return;const u=this.menu;var y;this._closingActionsSubscription.unsubscribe(),this._overlayRef.detach(),this.restoreFocus&&("keydown"===s||!this._openedBy||!this.triggersSubmenu())&&this.focus(this._openedBy),this._openedBy=void 0,u instanceof Li?(u._resetAnimation(),u.lazyContent?u._animationDone.pipe((0,ke.h)(P=>"void"===P.toState),(0,Xe.q)(1),(0,_e.R)(u.lazyContent._attached)).subscribe({next:()=>u.lazyContent.detach(),complete:()=>this._setIsMenuOpen(!1)}):this._setIsMenuOpen(!1)):(this._setIsMenuOpen(!1),null==u||null===(y=u.lazyContent)||void 0===y||y.detach())}_initMenu(s){s.parentMenu=this.triggersSubmenu()?this._parentMaterialMenu:void 0,s.direction=this.dir,this._setMenuElevation(s),s.focusFirstItem(this._openedBy||"program"),this._setIsMenuOpen(!0)}_setMenuElevation(s){if(s.setElevation){let u=0,y=s.parentMenu;for(;y;)u++,y=y.parentMenu;s.setElevation(u)}}_setIsMenuOpen(s){s!==this._menuOpen&&(this._menuOpen=s,this._menuOpen?this.menuOpened.emit():this.menuClosed.emit(),this.triggersSubmenu()&&this._menuItemInstance._setHighlighted(s),this._changeDetectorRef.markForCheck())}_createOverlay(s){if(!this._overlayRef){const u=this._getOverlayConfig(s);this._subscribeToPositions(s,u.positionStrategy),this._overlayRef=this._overlay.create(u),this._overlayRef.keydownEvents().subscribe()}return this._overlayRef}_getOverlayConfig(s){return new I.X_({positionStrategy:this._overlay.position().flexibleConnectedTo(this._element).withLockedPosition().withGrowAfterOpen().withTransformOriginOn(".mat-menu-panel, .mat-mdc-menu-panel"),backdropClass:s.backdropClass||"cdk-overlay-transparent-backdrop",panelClass:s.overlayPanelClass,scrollStrategy:this._scrollStrategy(),direction:this._dir})}_subscribeToPositions(s,u){s.setPositionClasses&&u.positionChanges.subscribe(y=>{const P="start"===y.connectionPair.overlayX?"after":"before",W="top"===y.connectionPair.overlayY?"below":"above";this._ngZone?this._ngZone.run(()=>s.setPositionClasses(P,W)):s.setPositionClasses(P,W)})}_setPosition(s,u){let[y,P]="before"===s.xPosition?["end","start"]:["start","end"],[W,he]="above"===s.yPosition?["bottom","top"]:["top","bottom"],[Le,qe]=[W,he],[vt,Dt]=[y,P],Bt=0;if(this.triggersSubmenu()){if(Dt=y="before"===s.xPosition?"start":"end",P=vt="end"===y?"start":"end",this._parentMaterialMenu){if(null==this._parentInnerPadding){const qt=this._parentMaterialMenu.items.first;this._parentInnerPadding=qt?qt._getHostElement().offsetTop:0}Bt="bottom"===W?this._parentInnerPadding:-this._parentInnerPadding}}else s.overlapTrigger||(Le="top"===W?"bottom":"top",qe="top"===he?"bottom":"top");u.withPositions([{originX:y,originY:Le,overlayX:vt,overlayY:W,offsetY:Bt},{originX:P,originY:Le,overlayX:Dt,overlayY:W,offsetY:Bt},{originX:y,originY:qe,overlayX:vt,overlayY:he,offsetY:-Bt},{originX:P,originY:qe,overlayX:Dt,overlayY:he,offsetY:-Bt}])}_menuClosingActions(){const s=this._overlayRef.backdropClick(),u=this._overlayRef.detachments(),y=this._parentMaterialMenu?this._parentMaterialMenu.closed:(0,Ke.of)(),P=this._parentMaterialMenu?this._parentMaterialMenu._hovered().pipe((0,ke.h)(W=>W!==this._menuItemInstance),(0,ke.h)(()=>this._menuOpen)):(0,Ke.of)();return(0,At.T)(s,y,P,u)}_handleMousedown(s){(0,de.X6)(s)||(this._openedBy=0===s.button?"mouse":void 0,this.triggersSubmenu()&&s.preventDefault())}_handleKeydown(s){const u=s.keyCode;(u===$e.K5||u===$e.L_)&&(this._openedBy="keyboard"),this.triggersSubmenu()&&(u===$e.SV&&"ltr"===this.dir||u===$e.oh&&"rtl"===this.dir)&&(this._openedBy="keyboard",this.openMenu())}_handleClick(s){this.triggersSubmenu()?(s.stopPropagation(),this.openMenu()):this.toggleMenu()}_handleHover(){!this.triggersSubmenu()||!this._parentMaterialMenu||(this._hoverSubscription=this._parentMaterialMenu._hovered().pipe((0,ke.h)(s=>s===this._menuItemInstance&&!s.disabled),Ze(0,it.E)).subscribe(()=>{this._openedBy="mouse",this.menu instanceof Li&&this.menu._isAnimating?this.menu._animationDone.pipe((0,Xe.q)(1),Ze(0,it.E),(0,_e.R)(this._parentMaterialMenu._hovered())).subscribe(()=>this.openMenu()):this.openMenu()}))}_getPortal(s){return(!this._portal||this._portal.templateRef!==s.templateRef)&&(this._portal=new ae.UE(s.templateRef,this._viewContainerRef)),this._portal}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(I.aV),o.Y36(o.SBq),o.Y36(o.s_b),o.Y36(ao),o.Y36(on,8),o.Y36(ln,10),o.Y36(Me.Is,8),o.Y36(de.tE),o.Y36(o.R0b))},g.\u0275dir=o.lG2({type:g,hostVars:3,hostBindings:function(s,u){1&s&&o.NdJ("click",function(P){return u._handleClick(P)})("mousedown",function(P){return u._handleMousedown(P)})("keydown",function(P){return u._handleKeydown(P)}),2&s&&o.uIk("aria-haspopup",u.menu?"menu":null)("aria-expanded",u.menuOpen)("aria-controls",u.menuOpen?u.menu.panelId:null)},inputs:{_deprecatedMatMenuTriggerFor:["mat-menu-trigger-for","_deprecatedMatMenuTriggerFor"],menu:["matMenuTriggerFor","menu"],menuData:["matMenuTriggerData","menuData"],restoreFocus:["matMenuTriggerRestoreFocus","restoreFocus"]},outputs:{menuOpened:"menuOpened",onMenuOpen:"onMenuOpen",menuClosed:"menuClosed",onMenuClose:"onMenuClose"}}),g})(),Bi=(()=>{class g extends bo{}return g.\u0275fac=function(){let l;return function(u){return(l||(l=o.n5z(g)))(u||g)}}(),g.\u0275dir=o.lG2({type:g,selectors:[["","mat-menu-trigger-for",""],["","matMenuTriggerFor",""]],hostAttrs:[1,"mat-mdc-menu-trigger"],exportAs:["matMenuTrigger"],features:[o.qOj]}),g})(),or=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({providers:[xi],imports:[ie.ez,Pe.si,Pe.BQ,I.U8,T.ZD,Pe.BQ]}),g})();const dn=["tooltip"],ai=new o.OlP("mat-tooltip-scroll-strategy"),Vi={provide:ai,deps:[I.aV],useFactory:function Bn(g){return()=>g.scrollStrategies.reposition({scrollThrottle:20})}},Yt=new o.OlP("mat-tooltip-default-options",{providedIn:"root",factory:function xt(){return{showDelay:0,hideDelay:0,touchendHideDelay:1500}}}),Tn="tooltip-panel",Gn=(0,A.i$)({passive:!0});let Qt=(()=>{class g{get position(){return this._position}set position(s){var u;s!==this._position&&(this._position=s,this._overlayRef)&&(this._updatePosition(this._overlayRef),null===(u=this._tooltipInstance)||void 0===u||u.show(0),this._overlayRef.updatePosition())}get positionAtOrigin(){return this._positionAtOrigin}set positionAtOrigin(s){this._positionAtOrigin=(0,Ve.Ig)(s),this._detach(),this._overlayRef=null}get disabled(){return this._disabled}set disabled(s){this._disabled=(0,Ve.Ig)(s),this._disabled?this.hide(0):this._setupPointerEnterEventsIfNeeded()}get showDelay(){return this._showDelay}set showDelay(s){this._showDelay=(0,Ve.su)(s)}get hideDelay(){return this._hideDelay}set hideDelay(s){this._hideDelay=(0,Ve.su)(s),this._tooltipInstance&&(this._tooltipInstance._mouseLeaveHideDelay=this._hideDelay)}get message(){return this._message}set message(s){this._ariaDescriber.removeDescription(this._elementRef.nativeElement,this._message,"tooltip"),this._message=null!=s?String(s).trim():"",!this._message&&this._isTooltipVisible()?this.hide(0):(this._setupPointerEnterEventsIfNeeded(),this._updateTooltipMessage(),this._ngZone.runOutsideAngular(()=>{Promise.resolve().then(()=>{this._ariaDescriber.describe(this._elementRef.nativeElement,this.message,"tooltip")})}))}get tooltipClass(){return this._tooltipClass}set tooltipClass(s){this._tooltipClass=s,this._tooltipInstance&&this._setTooltipClass(this._tooltipClass)}constructor(s,u,y,P,W,he,Le,qe,vt,Dt,Bt,qt){this._overlay=s,this._elementRef=u,this._scrollDispatcher=y,this._viewContainerRef=P,this._ngZone=W,this._platform=he,this._ariaDescriber=Le,this._focusMonitor=qe,this._dir=Dt,this._defaultOptions=Bt,this._position="below",this._positionAtOrigin=!1,this._disabled=!1,this._viewInitialized=!1,this._pointerExitEventsInitialized=!1,this._viewportMargin=8,this._cssClassPrefix="mat",this._showDelay=this._defaultOptions.showDelay,this._hideDelay=this._defaultOptions.hideDelay,this.touchGestures="auto",this._message="",this._passiveListeners=[],this._destroyed=new Je.x,this._scrollStrategy=vt,this._document=qt,Bt&&(Bt.position&&(this.position=Bt.position),Bt.positionAtOrigin&&(this.positionAtOrigin=Bt.positionAtOrigin),Bt.touchGestures&&(this.touchGestures=Bt.touchGestures)),Dt.change.pipe((0,_e.R)(this._destroyed)).subscribe(()=>{this._overlayRef&&this._updatePosition(this._overlayRef)})}ngAfterViewInit(){this._viewInitialized=!0,this._setupPointerEnterEventsIfNeeded(),this._focusMonitor.monitor(this._elementRef).pipe((0,_e.R)(this._destroyed)).subscribe(s=>{s?"keyboard"===s&&this._ngZone.run(()=>this.show()):this._ngZone.run(()=>this.hide(0))})}ngOnDestroy(){const s=this._elementRef.nativeElement;clearTimeout(this._touchstartTimeout),this._overlayRef&&(this._overlayRef.dispose(),this._tooltipInstance=null),this._passiveListeners.forEach(([u,y])=>{s.removeEventListener(u,y,Gn)}),this._passiveListeners.length=0,this._destroyed.next(),this._destroyed.complete(),this._ariaDescriber.removeDescription(s,this.message,"tooltip"),this._focusMonitor.stopMonitoring(s)}show(s=this.showDelay,u){var y;if(this.disabled||!this.message||this._isTooltipVisible())return void(null===(y=this._tooltipInstance)||void 0===y||y._cancelPendingAnimations());const P=this._createOverlay(u);this._detach(),this._portal=this._portal||new ae.C5(this._tooltipComponent,this._viewContainerRef);const W=this._tooltipInstance=P.attach(this._portal).instance;W._triggerElement=this._elementRef.nativeElement,W._mouseLeaveHideDelay=this._hideDelay,W.afterHidden().pipe((0,_e.R)(this._destroyed)).subscribe(()=>this._detach()),this._setTooltipClass(this._tooltipClass),this._updateTooltipMessage(),W.show(s)}hide(s=this.hideDelay){const u=this._tooltipInstance;u&&(u.isVisible()?u.hide(s):(u._cancelPendingAnimations(),this._detach()))}toggle(s){this._isTooltipVisible()?this.hide():this.show(void 0,s)}_isTooltipVisible(){return!!this._tooltipInstance&&this._tooltipInstance.isVisible()}_createOverlay(s){var u;if(this._overlayRef){const W=this._overlayRef.getConfig().positionStrategy;if((!this.positionAtOrigin||!s)&&W._origin instanceof o.SBq)return this._overlayRef;this._detach()}const y=this._scrollDispatcher.getAncestorScrollContainers(this._elementRef),P=this._overlay.position().flexibleConnectedTo(this.positionAtOrigin&&s||this._elementRef).withTransformOriginOn(`.${this._cssClassPrefix}-tooltip`).withFlexibleDimensions(!1).withViewportMargin(this._viewportMargin).withScrollableContainers(y);return P.positionChanges.pipe((0,_e.R)(this._destroyed)).subscribe(W=>{this._updateCurrentPositionClass(W.connectionPair),this._tooltipInstance&&W.scrollableViewProperties.isOverlayClipped&&this._tooltipInstance.isVisible()&&this._ngZone.run(()=>this.hide(0))}),this._overlayRef=this._overlay.create({direction:this._dir,positionStrategy:P,panelClass:`${this._cssClassPrefix}-${Tn}`,scrollStrategy:this._scrollStrategy()}),this._updatePosition(this._overlayRef),this._overlayRef.detachments().pipe((0,_e.R)(this._destroyed)).subscribe(()=>this._detach()),this._overlayRef.outsidePointerEvents().pipe((0,_e.R)(this._destroyed)).subscribe(()=>{var W;return null===(W=this._tooltipInstance)||void 0===W?void 0:W._handleBodyInteraction()}),this._overlayRef.keydownEvents().pipe((0,_e.R)(this._destroyed)).subscribe(W=>{this._isTooltipVisible()&&W.keyCode===$e.hY&&!(0,$e.Vb)(W)&&(W.preventDefault(),W.stopPropagation(),this._ngZone.run(()=>this.hide(0)))}),null!==(u=this._defaultOptions)&&void 0!==u&&u.disableTooltipInteractivity&&this._overlayRef.addPanelClass(`${this._cssClassPrefix}-tooltip-panel-non-interactive`),this._overlayRef}_detach(){this._overlayRef&&this._overlayRef.hasAttached()&&this._overlayRef.detach(),this._tooltipInstance=null}_updatePosition(s){const u=s.getConfig().positionStrategy,y=this._getOrigin(),P=this._getOverlayPosition();u.withPositions([this._addOffset({...y.main,...P.main}),this._addOffset({...y.fallback,...P.fallback})])}_addOffset(s){return s}_getOrigin(){const s=!this._dir||"ltr"==this._dir.value,u=this.position;let y;"above"==u||"below"==u?y={originX:"center",originY:"above"==u?"top":"bottom"}:"before"==u||"left"==u&&s||"right"==u&&!s?y={originX:"start",originY:"center"}:("after"==u||"right"==u&&s||"left"==u&&!s)&&(y={originX:"end",originY:"center"});const{x:P,y:W}=this._invertPosition(y.originX,y.originY);return{main:y,fallback:{originX:P,originY:W}}}_getOverlayPosition(){const s=!this._dir||"ltr"==this._dir.value,u=this.position;let y;"above"==u?y={overlayX:"center",overlayY:"bottom"}:"below"==u?y={overlayX:"center",overlayY:"top"}:"before"==u||"left"==u&&s||"right"==u&&!s?y={overlayX:"end",overlayY:"center"}:("after"==u||"right"==u&&s||"left"==u&&!s)&&(y={overlayX:"start",overlayY:"center"});const{x:P,y:W}=this._invertPosition(y.overlayX,y.overlayY);return{main:y,fallback:{overlayX:P,overlayY:W}}}_updateTooltipMessage(){this._tooltipInstance&&(this._tooltipInstance.message=this.message,this._tooltipInstance._markForCheck(),this._ngZone.onMicrotaskEmpty.pipe((0,Xe.q)(1),(0,_e.R)(this._destroyed)).subscribe(()=>{this._tooltipInstance&&this._overlayRef.updatePosition()}))}_setTooltipClass(s){this._tooltipInstance&&(this._tooltipInstance.tooltipClass=s,this._tooltipInstance._markForCheck())}_invertPosition(s,u){return"above"===this.position||"below"===this.position?"top"===u?u="bottom":"bottom"===u&&(u="top"):"end"===s?s="start":"start"===s&&(s="end"),{x:s,y:u}}_updateCurrentPositionClass(s){const{overlayY:u,originX:y,originY:P}=s;let W;if(W="center"===u?this._dir&&"rtl"===this._dir.value?"end"===y?"left":"right":"start"===y?"left":"right":"bottom"===u&&"top"===P?"above":"below",W!==this._currentPosition){const he=this._overlayRef;if(he){const Le=`${this._cssClassPrefix}-${Tn}-`;he.removePanelClass(Le+this._currentPosition),he.addPanelClass(Le+W)}this._currentPosition=W}}_setupPointerEnterEventsIfNeeded(){this._disabled||!this.message||!this._viewInitialized||this._passiveListeners.length||(this._platformSupportsMouseEvents()?this._passiveListeners.push(["mouseenter",s=>{let u;this._setupPointerExitEventsIfNeeded(),void 0!==s.x&&void 0!==s.y&&(u=s),this.show(void 0,u)}]):"off"!==this.touchGestures&&(this._disableNativeGesturesIfNecessary(),this._passiveListeners.push(["touchstart",s=>{var u;const y=null===(u=s.targetTouches)||void 0===u?void 0:u[0],P=y?{x:y.clientX,y:y.clientY}:void 0;this._setupPointerExitEventsIfNeeded(),clearTimeout(this._touchstartTimeout),this._touchstartTimeout=setTimeout(()=>this.show(void 0,P),500)}])),this._addListeners(this._passiveListeners))}_setupPointerExitEventsIfNeeded(){if(this._pointerExitEventsInitialized)return;this._pointerExitEventsInitialized=!0;const s=[];if(this._platformSupportsMouseEvents())s.push(["mouseleave",u=>{var y;const P=u.relatedTarget;(!P||null===(y=this._overlayRef)||void 0===y||!y.overlayElement.contains(P))&&this.hide()}],["wheel",u=>this._wheelListener(u)]);else if("off"!==this.touchGestures){this._disableNativeGesturesIfNecessary();const u=()=>{clearTimeout(this._touchstartTimeout),this.hide(this._defaultOptions.touchendHideDelay)};s.push(["touchend",u],["touchcancel",u])}this._addListeners(s),this._passiveListeners.push(...s)}_addListeners(s){s.forEach(([u,y])=>{this._elementRef.nativeElement.addEventListener(u,y,Gn)})}_platformSupportsMouseEvents(){return!this._platform.IOS&&!this._platform.ANDROID}_wheelListener(s){if(this._isTooltipVisible()){const u=this._document.elementFromPoint(s.clientX,s.clientY),y=this._elementRef.nativeElement;u!==y&&!y.contains(u)&&this.hide()}}_disableNativeGesturesIfNecessary(){const s=this.touchGestures;if("off"!==s){const u=this._elementRef.nativeElement,y=u.style;("on"===s||"INPUT"!==u.nodeName&&"TEXTAREA"!==u.nodeName)&&(y.userSelect=y.msUserSelect=y.webkitUserSelect=y.MozUserSelect="none"),("on"===s||!u.draggable)&&(y.webkitUserDrag="none"),y.touchAction="none",y.webkitTapHighlightColor="transparent"}}}return g.\u0275fac=function(s){o.$Z()},g.\u0275dir=o.lG2({type:g,inputs:{position:["matTooltipPosition","position"],positionAtOrigin:["matTooltipPositionAtOrigin","positionAtOrigin"],disabled:["matTooltipDisabled","disabled"],showDelay:["matTooltipShowDelay","showDelay"],hideDelay:["matTooltipHideDelay","hideDelay"],touchGestures:["matTooltipTouchGestures","touchGestures"],message:["matTooltip","message"],tooltipClass:["matTooltipClass","tooltipClass"]}}),g})(),Io=(()=>{class g extends Qt{constructor(s,u,y,P,W,he,Le,qe,vt,Dt,Bt,qt){super(s,u,y,P,W,he,Le,qe,vt,Dt,Bt,qt),this._tooltipComponent=kr,this._cssClassPrefix="mat-mdc",this._viewportMargin=8}_addOffset(s){const y=!this._dir||"ltr"==this._dir.value;return"top"===s.originY?s.offsetY=-8:"bottom"===s.originY?s.offsetY=8:"start"===s.originX?s.offsetX=y?-8:8:"end"===s.originX&&(s.offsetX=y?8:-8),s}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(I.aV),o.Y36(o.SBq),o.Y36(T.mF),o.Y36(o.s_b),o.Y36(o.R0b),o.Y36(A.t4),o.Y36(de.$s),o.Y36(de.tE),o.Y36(ai),o.Y36(Me.Is,8),o.Y36(Yt,8),o.Y36(ie.K0))},g.\u0275dir=o.lG2({type:g,selectors:[["","matTooltip",""]],hostAttrs:[1,"mat-mdc-tooltip-trigger"],exportAs:["matTooltip"],features:[o.qOj]}),g})(),zo=(()=>{class g{constructor(s,u){this._changeDetectorRef=s,this._closeOnInteraction=!1,this._isVisible=!1,this._onHide=new Je.x,this._animationsDisabled="NoopAnimations"===u}show(s){clearTimeout(this._hideTimeoutId),this._showTimeoutId=setTimeout(()=>{this._toggleVisibility(!0),this._showTimeoutId=void 0},s)}hide(s){clearTimeout(this._showTimeoutId),this._hideTimeoutId=setTimeout(()=>{this._toggleVisibility(!1),this._hideTimeoutId=void 0},s)}afterHidden(){return this._onHide}isVisible(){return this._isVisible}ngOnDestroy(){this._cancelPendingAnimations(),this._onHide.complete(),this._triggerElement=null}_handleBodyInteraction(){this._closeOnInteraction&&this.hide(0)}_markForCheck(){this._changeDetectorRef.markForCheck()}_handleMouseLeave({relatedTarget:s}){(!s||!this._triggerElement.contains(s))&&(this.isVisible()?this.hide(this._mouseLeaveHideDelay):this._finalizeAnimation(!1))}_onShow(){}_handleAnimationEnd({animationName:s}){(s===this._showAnimation||s===this._hideAnimation)&&this._finalizeAnimation(s===this._showAnimation)}_cancelPendingAnimations(){clearTimeout(this._showTimeoutId),clearTimeout(this._hideTimeoutId),this._showTimeoutId=this._hideTimeoutId=void 0}_finalizeAnimation(s){s?this._closeOnInteraction=!0:this.isVisible()||this._onHide.next()}_toggleVisibility(s){const u=this._tooltip.nativeElement,y=this._showAnimation,P=this._hideAnimation;if(u.classList.remove(s?P:y),u.classList.add(s?y:P),this._isVisible=s,s&&!this._animationsDisabled&&"function"==typeof getComputedStyle){const W=getComputedStyle(u);("0s"===W.getPropertyValue("animation-duration")||"none"===W.getPropertyValue("animation-name"))&&(this._animationsDisabled=!0)}s&&this._onShow(),this._animationsDisabled&&(u.classList.add("_mat-animation-noopable"),this._finalizeAnimation(s))}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.sBO),o.Y36(o.QbO,8))},g.\u0275dir=o.lG2({type:g}),g})(),kr=(()=>{class g extends zo{constructor(s,u,y){super(s,y),this._elementRef=u,this._isMultiline=!1,this._showAnimation="mat-mdc-tooltip-show",this._hideAnimation="mat-mdc-tooltip-hide"}_onShow(){this._isMultiline=this._isTooltipMultiline(),this._markForCheck()}_isTooltipMultiline(){const s=this._elementRef.nativeElement.getBoundingClientRect();return s.height>24&&s.width>=200}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.sBO),o.Y36(o.SBq),o.Y36(o.QbO,8))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-tooltip-component"]],viewQuery:function(s,u){if(1&s&&o.Gf(dn,7),2&s){let y;o.iGM(y=o.CRH())&&(u._tooltip=y.first)}},hostAttrs:["aria-hidden","true"],hostVars:2,hostBindings:function(s,u){1&s&&o.NdJ("mouseleave",function(P){return u._handleMouseLeave(P)}),2&s&&o.Udp("zoom",u.isVisible()?1:null)},features:[o.qOj],decls:4,vars:4,consts:[[1,"mdc-tooltip","mdc-tooltip--shown","mat-mdc-tooltip",3,"ngClass","animationend"],["tooltip",""],[1,"mdc-tooltip__surface","mdc-tooltip__surface-animation"]],template:function(s,u){1&s&&(o.TgZ(0,"div",0,1),o.NdJ("animationend",function(P){return u._handleAnimationEnd(P)}),o.TgZ(2,"div",2),o._uU(3),o.qZA()()),2&s&&(o.ekj("mdc-tooltip--multiline",u._isMultiline),o.Q6J("ngClass",u.tooltipClass),o.xp6(3),o.Oqu(u.message))},dependencies:[ie.mk],styles:['.mdc-tooltip__surface{word-break:var(--mdc-tooltip-word-break, normal);overflow-wrap:anywhere}.mdc-tooltip{position:fixed;display:none;z-index:9}.mdc-tooltip-wrapper--rich{position:relative}.mdc-tooltip--shown,.mdc-tooltip--showing,.mdc-tooltip--hide{display:inline-flex}.mdc-tooltip--shown.mdc-tooltip--rich,.mdc-tooltip--showing.mdc-tooltip--rich,.mdc-tooltip--hide.mdc-tooltip--rich{display:inline-block;left:-320px;position:absolute}.mdc-tooltip__surface{line-height:16px;padding:4px 8px;min-width:40px;max-width:200px;min-height:24px;max-height:40vh;box-sizing:border-box;overflow:hidden;text-align:center}.mdc-tooltip__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:1px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-tooltip__surface::before{border-color:CanvasText}}.mdc-tooltip--rich .mdc-tooltip__surface{align-items:flex-start;display:flex;flex-direction:column;min-height:24px;min-width:40px;max-width:320px;position:relative}.mdc-tooltip--multiline .mdc-tooltip__surface{text-align:left}[dir=rtl] .mdc-tooltip--multiline .mdc-tooltip__surface,.mdc-tooltip--multiline .mdc-tooltip__surface[dir=rtl]{text-align:right}.mdc-tooltip__surface .mdc-tooltip__title{margin:0 8px}.mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(200px - (2 * 8px));margin:8px;text-align:left}[dir=rtl] .mdc-tooltip__surface .mdc-tooltip__content,.mdc-tooltip__surface .mdc-tooltip__content[dir=rtl]{text-align:right}.mdc-tooltip--rich .mdc-tooltip__surface .mdc-tooltip__content{max-width:calc(320px - (2 * 8px));align-self:stretch}.mdc-tooltip__surface .mdc-tooltip__content-link{text-decoration:none}.mdc-tooltip--rich-actions,.mdc-tooltip__content,.mdc-tooltip__title{z-index:1}.mdc-tooltip__surface-animation{opacity:0;transform:scale(0.8);will-change:transform,opacity}.mdc-tooltip--shown .mdc-tooltip__surface-animation{transform:scale(1);opacity:1}.mdc-tooltip--hide .mdc-tooltip__surface-animation{transform:scale(1)}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{position:absolute;height:24px;width:24px;transform:rotate(35deg) skewY(20deg) scaleX(0.9396926208)}.mdc-tooltip__caret-surface-top .mdc-elevation-overlay,.mdc-tooltip__caret-surface-bottom .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-tooltip__caret-surface-bottom{outline:1px solid rgba(0,0,0,0);z-index:-1}@media screen and (forced-colors: active){.mdc-tooltip__caret-surface-bottom{outline-color:CanvasText}}.mdc-tooltip__surface{background-color:var(--mdc-plain-tooltip-container-color, #fff)}.mdc-tooltip__surface{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__caret-surface-top,.mdc-tooltip__caret-surface-bottom{border-radius:var(--mdc-plain-tooltip-container-shape, var(--mdc-shape-small, 4px))}.mdc-tooltip__surface{color:var(--mdc-plain-tooltip-supporting-text-color, #000)}.mdc-tooltip__surface{font-family:var(--mdc-plain-tooltip-supporting-text-font, inherit);font-size:var(--mdc-plain-tooltip-supporting-text-size, inherit);font-weight:var(--mdc-plain-tooltip-supporting-text-weight, inherit);letter-spacing:var(--mdc-plain-tooltip-supporting-text-tracking, inherit)}.mat-mdc-tooltip{position:relative;transform:scale(0)}.mat-mdc-tooltip::before{content:"";top:-8px;right:-8px;bottom:-8px;left:-8px;z-index:-1;position:absolute}.mat-mdc-tooltip._mat-animation-noopable{animation:none;transform:scale(1)}.mat-mdc-tooltip-panel-non-interactive{pointer-events:none}@keyframes mat-mdc-tooltip-show{0%{opacity:0;transform:scale(0.8)}100%{opacity:1;transform:scale(1)}}@keyframes mat-mdc-tooltip-hide{0%{opacity:1;transform:scale(1)}100%{opacity:0;transform:scale(0.8)}}.mat-mdc-tooltip-show{animation:mat-mdc-tooltip-show 150ms cubic-bezier(0, 0, 0.2, 1) forwards}.mat-mdc-tooltip-hide{animation:mat-mdc-tooltip-hide 75ms cubic-bezier(0.4, 0, 1, 1) forwards}'],encapsulation:2,changeDetection:0}),g})(),ei=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({providers:[Vi],imports:[de.rt,ie.ez,I.U8,Pe.BQ,Pe.BQ,T.ZD]}),g})();function ti(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",14),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw(2);return o.KtG(W.launch(P))}),o.TgZ(1,"div",15),o._UZ(2,"img",9),o._uU(3),o.qZA()()}if(2&g){const s=l.$implicit,u=o.oxw(2);o.xp6(2),o.Q6J("src",u.getTransportIcon(s.id),o.LSH),o.xp6(1),o.hij(" ",s.name," ")}}function ko(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",14),o.NdJ("click",function(){o.CHM(s);const y=o.oxw(2);return o.KtG(y.action("release"))}),o.TgZ(1,"i",16),o._uU(2,"delete"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4," Release service"),o.qZA()()}}function Ui(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",14),o.NdJ("click",function(){o.CHM(s);const y=o.oxw(2);return o.KtG(y.action("reset"))}),o.TgZ(1,"i",16),o._uU(2,"refresh"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4," Reset service"),o.qZA()()}}function Po(g,l){if(1&g&&(o.TgZ(0,"button",17)(1,"uds-translate"),o._uU(2,"Connections"),o.qZA()()),2&g){o.oxw();const s=o.MAs(2);o.Q6J("matMenuTriggerFor",s)}}function rr(g,l){if(1&g&&(o.TgZ(0,"button",17)(1,"uds-translate"),o._uU(2,"Actions"),o.qZA()()),2&g){o.oxw();const s=o.MAs(5);o.Q6J("matMenuTriggerFor",s)}}function En(g,l){if(1&g&&(o.TgZ(0,"button",18)(1,"i",16),o._uU(2,"menu"),o.qZA()()),2&g){o.oxw();const s=o.MAs(9);o.Q6J("matMenuTriggerFor",s)}}function Pr(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"div")(1,"mat-menu",null,1),o.YNc(3,ti,4,2,"button",2),o.qZA(),o.TgZ(4,"mat-menu",null,3),o.YNc(6,ko,5,0,"button",4),o.YNc(7,Ui,5,0,"button",4),o.qZA(),o.TgZ(8,"mat-menu",null,5),o.YNc(10,Po,3,1,"button",6),o.YNc(11,rr,3,1,"button",6),o.qZA(),o.TgZ(12,"div",7)(13,"div",8),o.NdJ("click",function(){o.CHM(s);const y=o.oxw();return o.KtG(y.launch(null))}),o._UZ(14,"img",9),o.qZA(),o.TgZ(15,"div",10)(16,"span",11),o._uU(17),o.qZA()(),o.TgZ(18,"div",12),o.YNc(19,En,3,1,"button",13),o.qZA()()()}if(2&g){const s=o.oxw();o.xp6(3),o.Q6J("ngForOf",s.service.transports),o.xp6(3),o.Q6J("ngIf",s.service.allow_users_remove),o.xp6(1),o.Q6J("ngIf",s.service.allow_users_reset),o.xp6(3),o.Q6J("ngIf",s.showTransportsMenu()),o.xp6(1),o.Q6J("ngIf",s.hasActions()),o.xp6(1),o.Q6J("ngClass",s.serviceClass)("matTooltipDisabled",""===s.serviceTooltip)("matTooltip",s.serviceTooltip),o.xp6(2),o.Q6J("src",s.serviceImage,o.LSH),o.xp6(2),o.Q6J("ngClass",s.serviceNameClass),o.xp6(1),o.Oqu(s.serviceName),o.xp6(2),o.Q6J("ngIf",s.hasMenu())}}class xo{constructor(l){this.api=l,this.service={}}get serviceImage(){return this.api.galleryImageURL(this.service.imageId)}get serviceName(){let l=this.service.visual_name;return l.length>32&&(l=l.substring(0,29)+"..."),l}get serviceTooltip(){return null!==this.service.to_be_replaced?this.service.to_be_replaced_text:this.service.maintenance?django.gettext("Service is in maintenance"):this.service.not_accesible?this.service.custom_calendar_text:this.serviceName!==this.service.name?this.service.name:""}get serviceClass(){const l=["service"];return null!=this.service.to_be_replaced?l.push("tobereplaced"):this.service.maintenance?l.push("maintenance"):this.service.not_accesible?l.push("forbidden"):this.service.in_use&&l.push("inuse"),l.length>1&&l.push("alert"),l}get serviceNameClass(){const l=[],s=Math.min(4*Math.floor((this.service.visual_name.length-1)/4),28);return s>=16&&l.push("small-"+s.toString()),l}ngOnInit(){}getTransportIcon(l){return this.api.transportIconURL(l)}hasActions(){return this.service.allow_users_remove||this.service.allow_users_reset}showTransportsMenu(){return this.service.transports.length>1&&this.service.show_transports}hasMenu(){return!1===this.service.maintenance&&!1===this.service.not_accesible&&(this.hasActions()||this.showTransportsMenu())}notifyNotLaunching(l){this.api.gui.alert('

'+django.gettext("Launcher")+"

",l)}launch(l){if(this.service.maintenance)this.notifyNotLaunching(django.gettext("Service is in maintenance and cannot be launched"));else if(this.service.not_accesible){const s=this.service.custom_calendar_text||this.api.config.messages.calendarDenied;this.notifyNotLaunching('

'+django.gettext("This service is currently not accesible due to schedule restrictions.")+'

'+s+'

')}else(null===l||!1===this.service.show_transports)&&(l=this.service.transports[0]),this.api.executeCustomJSForServiceLaunch(),this.api.launchURL(l.link)}action(l){const s=("release"===l?django.gettext("Release service: "):django.gettext("Reset service: "))+" "+this.serviceName,u="release"===l?django.gettext("Service released"):django.gettext("Service reseted");this.api.gui.yesno(s,django.gettext("Are you sure?")).then(y=>{y&&this.api.action(l,this.service.id).then(P=>{P&&this.api.gui.alert(s,u)})})}}function $o(g,l){1&g&&o._UZ(0,"uds-service",8),2&g&&o.Q6J("service",l.$implicit)}function Go(g,l){if(1&g&&(o.TgZ(0,"mat-expansion-panel",1)(1,"mat-expansion-panel-header",2)(2,"mat-panel-title")(3,"div",3),o._UZ(4,"img",4),o._uU(5),o.qZA()(),o.TgZ(6,"mat-panel-description",5),o._uU(7),o.qZA()(),o.TgZ(8,"div",6),o.YNc(9,$o,1,1,"uds-service",7),o.qZA()()),2&g){const s=o.oxw();o.Q6J("expanded",s.expanded),o.xp6(1),o.Q6J("collapsedHeight","3rem")("expandedHeight","5rem"),o.xp6(3),o.Q6J("src",s.groupImage,o.LSH),o.xp6(1),o.hij(" ",s.group.name,""),o.xp6(2),o.hij(" ",s.group.comments," "),o.xp6(2),o.Q6J("ngForOf",s.sortedServices)}}xo.\u0275fac=function(l){return new(l||xo)(o.Y36(H.n))},xo.\u0275cmp=o.Xpm({type:xo,selectors:[["uds-service"]],inputs:{service:"service"},decls:1,vars:1,consts:[[4,"ngIf"],["transports",""],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["actions",""],["mat-menu-item","",3,"click",4,"ngIf"],["menu",""],["mat-menu-item","",3,"matMenuTriggerFor",4,"ngIf"],["matTooltipShowDelay","1000","matTooltipPosition","above",3,"ngClass","matTooltipDisabled","matTooltip"],[1,"icon",3,"click"],[3,"src"],[1,"name"],[3,"ngClass"],[1,"menu"],["mat-icon-button","","class","service-menu",3,"matMenuTriggerFor",4,"ngIf"],["mat-menu-item","",3,"click"],[1,"transport-item"],[1,"material-icons"],["mat-menu-item","",3,"matMenuTriggerFor"],["mat-icon-button","",1,"service-menu",3,"matMenuTriggerFor"]],template:function(l,s){1&l&&o.YNc(0,Pr,20,12,"div",0),2&l&&o.Q6J("ngIf",s.service.transports.length>0)},dependencies:[ie.mk,ie.sg,ie.O5,Ce.RK,Ti,ln,Bi,Io,Z.P],styles:['.service[_ngcontent-%COMP%]{width:10rem;margin:0 1rem 2rem 0;padding:.5rem 0 1rem;border-radius:1rem;box-shadow:0 12px 18px #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);border:1px;border-style:solid;border-color:#00000038;display:flex;flex:1;align-items:center;justify-content:flex-start;flex-flow:column wrap;position:relative}.service-menu[_ngcontent-%COMP%]{border-radius:.6rem!important}.service[_ngcontent-%COMP%]:hover{box-shadow:0 2px 3px #00000040,0 10px 10px #00000038}.icon[_ngcontent-%COMP%]{cursor:pointer;display:flex;justify-content:center;transition:all .3s cubic-bezier(.25,.8,.25,1);width:6rem;height:6rem;margin:.5rem}.service[_ngcontent-%COMP%]:not(.forbidden):not(.maintenance):hover .icon[_ngcontent-%COMP%]{transition:all .3s cubic-bezier(.25,.8,.25,1);width:7rem;height:7rem;margin:0}.icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:100%;height:100%;overflow:hidden}.forbidden[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%], .maintenance[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{opacity:.5;z-index:10}.tobereplaced[_ngcontent-%COMP%] .icon[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{opacity:.7;z-index:10}.name[_ngcontent-%COMP%]{margin-top:.5em;font-size:1.05rem;width:calc(100% - 1em);display:flex;flex:1 0 auto;flex-flow:row;align-items:center;justify-content:center;padding:0 .5em;overflow:hidden;height:2.4em;text-align:center}.small-16[_ngcontent-%COMP%]{font-size:1.05rem}.small-20[_ngcontent-%COMP%]{font-size:1rem}.small-24[_ngcontent-%COMP%]{font-size:.95rem}.small-28[_ngcontent-%COMP%]{font-size:.9rem}.menu[_ngcontent-%COMP%]{position:absolute;top:2px;right:2px}.menu[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]{cursor:pointer;background-color:#fffc}.menu[_ngcontent-%COMP%] .mat-mdc-icon-button[_ngcontent-%COMP%]:hover{box-shadow:0 2px 3px #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1)}.transport-item[_ngcontent-%COMP%]{display:flex;align-items:center}.transport-item[_ngcontent-%COMP%] img[_ngcontent-%COMP%]{width:2em;margin-right:.4em}.alert[_ngcontent-%COMP%]:before{position:absolute;top:1rem;left:1rem;font-size:8rem;font-weight:500;font-family:Material Icons;font-weight:400;font-style:normal;line-height:1;letter-spacing:normal;text-transform:none;display:inline-block;white-space:nowrap;word-wrap:normal;direction:ltr;font-feature-settings:"liga";text-shadow:0 6px 8px rgba(0,0,0,.25),0 10px 10px rgba(0,0,0,.22);z-index:1}.forbidden[_ngcontent-%COMP%]:before{color:#fc0000;content:"update"}.maintenance[_ngcontent-%COMP%]:before{color:#fcb900;content:"build"}.tobereplaced[_ngcontent-%COMP%]:before{color:#fc0000;content:"delete_forever"} .dark-theme .menu .mat-mdc-icon-button{background-color:#0003!important}']});class Oi{constructor(l){this.api=l,this.services=[],this.group={},this.expanded=!1}get groupImage(){return this.api.galleryImageURL(this.group.imageUuid)}get hasVisibleServices(){return this.services.length>0}get sortedServices(){return this.services.sort((l,s)=>l.name>s.name?1:l.namethis.update(l.nativeElement.value))).subscribe()}update(l){this.updateEvent.emit(l.toLowerCase())}}function Ro(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"uds-filter",3),o.NdJ("updateEvent",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P.update(y))}),o.qZA()}}function Yo(g,l){if(1&g&&o._UZ(0,"uds-services-group",4),2&g){const s=l.$implicit,u=l.index;o.Q6J("services",s.services)("group",s.group)("expanded",0===u)}}function Rr(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"uds-filter",3),o.NdJ("updateEvent",function(y){o.CHM(s);const P=o.oxw();return o.KtG(P.update(y))}),o.qZA()}}qi.\u0275fac=function(l){return new(l||qi)},qi.\u0275cmp=o.Xpm({type:qi,selectors:[["uds-filter"]],viewQuery:function(l,s){if(1&l&&o.Gf(Wo,7),2&l){let u;o.iGM(u=o.CRH())&&(s.input=u.first)}},outputs:{updateEvent:"updateEvent"},decls:9,vars:0,consts:[[1,"filter"],["floatLabel","auto",1,"nav-input-field"],["matInput","","type","text"],["input",""],["matSuffix","",1,"material-icons"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"mat-form-field",1)(2,"mat-label")(3,"uds-translate"),o._uU(4,"Filter"),o.qZA()(),o._UZ(5,"input",2,3),o.TgZ(7,"i",4),o._uU(8,"search"),o.qZA()()())},dependencies:[Kn.KE,Kn.hX,Kn.R9,ar.Nt,Z.P],styles:[".filter[_ngcontent-%COMP%]{margin-top:.5rem;display:flex;justify-content:flex-end;font-size:.8rem}"]});class Fr{constructor(l){this.group=l,this.services=[]}}class Do{constructor(l){this.api=l,this.servicesInformation={autorun:!1,ip:"",nets:"",services:[],transports:""},this.group=[]}update(l){this.updateServices(l)}ngOnInit(){this.api.config.urls.launch?this.api.logout():this.loadServices()}autorun(){if(this.servicesInformation.autorun&&1===this.servicesInformation.services.length){if(!this.servicesInformation.services[0].maintenance)return this.api.executeCustomJSForServiceLaunch(),this.api.launchURL(this.servicesInformation.services[0].transports[0].link),!0;this.api.gui.alert(django.gettext("Warning"),django.gettext("Service is in maintenance and cannot be executed"))}return!1}loadServices(){this.api.user.isRestricted&&this.api.logout(),this.api.getServicesInformation().then(l=>{this.servicesInformation=l,this.autorun(),this.updateServices()})}updateServices(l=""){this.group=[];let s=null;this.servicesInformation.services.filter(u=>!l||u.visual_name.toLowerCase().includes(l)||u.group.name.toLowerCase().includes(l)).sort((u,y)=>u.group.priority!==y.group.priority?u.group.priority-y.group.priority:u.group.id>y.group.id?1:u.group.id{(null===s||u.group.id!==s.group.id)&&(null!==s&&this.group.push(s),s=new Fr(u.group)),s.services.push(u)}),null!==s&&this.group.push(s)}}Do.\u0275fac=function(l){return new(l||Do)(o.Y36(H.n))},Do.\u0275cmp=o.Xpm({type:Do,selectors:[["uds-services-page"]],decls:6,vars:3,consts:[[3,"updateEvent",4,"ngIf"],[1,"services-groups"],[3,"services","group","expanded",4,"ngFor","ngForOf"],[3,"updateEvent"],[3,"services","group","expanded"]],template:function(l,s){1&l&&(o.YNc(0,Ro,1,0,"uds-filter",0),o.TgZ(1,"div",1)(2,"mat-accordion"),o.YNc(3,Yo,1,3,"uds-services-group",2),o.qZA()(),o.YNc(4,Rr,1,0,"uds-filter",0),o._UZ(5,"uds-staff-info")),2&l&&(o.Q6J("ngIf",s.servicesInformation.services.length>=s.api.config.min_for_filter&&s.api.config.site_filter_on_top),o.xp6(3),o.Q6J("ngForOf",s.group),o.xp6(1),o.Q6J("ngIf",s.servicesInformation.services.length>=s.api.config.min_for_filter&&!s.api.config.site_filter_on_top))},dependencies:[ie.sg,ie.O5,K,Oi,mi,qi],styles:[".services-groups[_ngcontent-%COMP%]{padding-top:1rem}"]});var lr=b(5861);class Xi{constructor(l,s){this.api=l,this.route=s,this.error="",this.returnUrl="/"}ngOnInit(){var l=this;return(0,lr.Z)(function*(){yield l.getError()})()}getError(){var l=this;return(0,lr.Z)(function*(){const s=l.route.snapshot.paramMap.get("id")||"-1";"19"===s&&(l.returnUrl="/mfa"),l.error=(yield l.api.getErrorInformation(s)).error})()}}Xi.\u0275fac=function(l){return new(l||Xi)(o.Y36(H.n),o.Y36(Q.gz))},Xi.\u0275cmp=o.Xpm({type:Xi,selectors:[["uds-error"]],decls:14,vars:2,consts:[[1,"error-container"],[1,"graph"],["viewBox","0 0 55 41","xmlns","http://www.w3.org/2000/svg",1,"bird"],["d","M35.5 5L54.7.6H32.3L35.5 5zM12.4 40.8l10.3-10.1-6.2-6.7-4.1 16.8zM33.8 5.3L30.5.8l-5.4 4 8.7.5zM20.8 4.6L8.8 0l1.9 4.1 10.1.5zM0 5l15.2 15.4 7.5-14.2L0 5zM34.2 6.8l-9.9-.5-8 15.2 7.4 8.1 8-7.9 2.5-14.9z"],["xmlns","http://www.w3.org/2000/svg","viewBox","0 0 32 32",1,"gears"],["d","M29.18 19.07c-1.678-2.908-.668-6.634 2.256-8.328L28.29 5.295c-.897.527-1.942.83-3.057.83-3.36 0-6.085-2.743-6.085-6.126h-6.29c.01 1.043-.25 2.102-.81 3.07-1.68 2.907-5.41 3.896-8.34 2.21L.566 10.727c.905.515 1.69 1.268 2.246 2.234 1.677 2.904.673 6.624-2.24 8.32l3.145 5.447c.895-.522 1.935-.82 3.044-.82 3.35 0 6.066 2.725 6.083 6.092h6.29c-.004-1.035.258-2.08.81-3.04 1.676-2.902 5.4-3.893 8.325-2.218l3.145-5.447c-.9-.515-1.678-1.266-2.232-2.226zM16 22.48c-3.578 0-6.48-2.902-6.48-6.48S12.423 9.52 16 9.52c3.578 0 6.48 2.902 6.48 6.48s-2.902 6.48-6.48 6.48z"],[1,"title"],[1,"description"],["mat-raised-button","","color","warn",3,"routerLink"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1),o.O4$(),o.TgZ(2,"svg",2),o._UZ(3,"path",3),o.qZA(),o.TgZ(4,"svg",4),o._UZ(5,"path",5),o.qZA()(),o.kcU(),o.TgZ(6,"h1",6)(7,"uds-translate"),o._uU(8,"An error has occurred"),o.qZA()(),o.TgZ(9,"p",7),o._uU(10),o.qZA(),o.TgZ(11,"a",8)(12,"uds-translate"),o._uU(13,"Return"),o.qZA()()()),2&l&&(o.xp6(10),o.hij(" ",s.error," "),o.xp6(1),o.Q6J("routerLink",s.returnUrl))},dependencies:[Q.rH,Ce.zs,Z.P],styles:[".error-container[_ngcontent-%COMP%]{margin-top:3rem;text-align:center;position:relative}.title[_ngcontent-%COMP%]{display:block;font-size:2rem;font-weight:lighter;text-align:center}.description[_ngcontent-%COMP%]{font-size:1.2rem;font-weight:lighter}.graph[_ngcontent-%COMP%]{position:relative}.gears[_ngcontent-%COMP%]{width:10rem;height:10rem;fill:#6aafe6;transition:easeInOutQuint();animation:_ngcontent-%COMP%_CogAnimation 5s infinite}.bird[_ngcontent-%COMP%]{position:absolute;width:3rem;height:3rem;fill:#30a9de;left:50%;top:50%;transform:translate(-50%,-50%)}@keyframes _ngcontent-%COMP%_CogAnimation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}"]});class Fo{constructor(l){this.api=l,this.year=(new Date).getFullYear()}ngOnInit(){this.year<2021&&(this.year=2021)}}Fo.\u0275fac=function(l){return new(l||Fo)(o.Y36(H.n))},Fo.\u0275cmp=o.Xpm({type:Fo,selectors:[["uds-about"]],decls:46,vars:3,consts:[[1,"about"],["rel","noopener noreferrer","href","http://www.udsenterprise.com","target","_blank"],["rel","noopener noreferrer","href","https://github.com/dkmstr/openuds","target","_blank"],[1,"components"],["rel","noopener noreferrer","href","https://www.python.org/","target","_blank"],["rel","noopener noreferrer","href","https://www.typescriptlang.org/","target","_blank"],["rel","noopener noreferrer","href","https://www.djangoproject.com/","target","_blank"],["rel","noopener noreferrer","href","https://angular.io","target","_blank"],["rel","noopener noreferrer","href","https://guac-dev.org/","target","_blank"],["rel","noopener noreferrer","href","https://weasyprint.org/","target","_blank"],["rel","noopener noreferrer","href","https://kde-look.org/content/show.php/Crystal+Project?content=60475)","target","_blank"],["rel","noopener noreferrer","href","https://github.com/NitruxSA/flattr-icons","target","_blank"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"h1"),o._uU(2),o.qZA(),o.TgZ(3,"h3")(4,"a",1),o._uU(5),o.qZA()(),o.TgZ(6,"h4")(7,"uds-translate"),o._uU(8,"You can access UDS Open Source code at"),o.qZA(),o._uU(9,"\xa0"),o.TgZ(10,"a",2),o._uU(11,"OpenUDS github repository"),o.qZA()(),o.TgZ(12,"div",3)(13,"h2")(14,"uds-translate"),o._uU(15,"UDS has been developed using these components:"),o.qZA()(),o.TgZ(16,"ul")(17,"li")(18,"a",4),o._uU(19,"Python"),o.qZA()(),o.TgZ(20,"li")(21,"a",5),o._uU(22,"TypeScript"),o.qZA()(),o.TgZ(23,"li")(24,"a",6),o._uU(25,"Django"),o.qZA()(),o.TgZ(26,"li")(27,"a",7),o._uU(28,"Angular"),o.qZA()(),o.TgZ(29,"li")(30,"a",8),o._uU(31,"Guacamole"),o.qZA()(),o.TgZ(32,"li")(33,"a",9),o._uU(34,"weasyprint"),o.qZA()(),o.TgZ(35,"li")(36,"a",10),o._uU(37,"Crystal project icons"),o.qZA()(),o.TgZ(38,"li")(39,"a",11),o._uU(40,"Flattr Icons"),o.qZA()()(),o.TgZ(41,"p")(42,"small"),o._uU(43,"* "),o.TgZ(44,"uds-translate"),o._uU(45,"If you find that we missed any component, please let us know"),o.qZA()()()()()),2&l&&(o.xp6(2),o.AsE("Universal Desktop Services ",s.api.config.version," build ",s.api.config.version_stamp,""),o.xp6(3),o.hij(" \xa9 2012-",s.year," Virtual Cable S.L.U."))},dependencies:[Z.P],styles:["[_nghost-%COMP%]{display:flex;flex-flow:column;justify-content:center;align-items:center}.about[_ngcontent-%COMP%] h3[_ngcontent-%COMP%]{text-align:center}.about[_ngcontent-%COMP%] h4[_ngcontent-%COMP%]{text-align:center;font-size:1em;font-weight:400}.about[_ngcontent-%COMP%] h2[_ngcontent-%COMP%]{text-align:center}ul[_ngcontent-%COMP%]{padding:0}ul[_ngcontent-%COMP%]{list-style:none}ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]{display:block;text-decoration:none;color:#000;background-color:#fff;line-height:30px;border-bottom-style:solid;border-bottom-width:1px;border-bottom-color:#ccc;padding-left:10px;cursor:pointer}ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%]:hover{color:#3e6b2d}ul[_ngcontent-%COMP%] li[_ngcontent-%COMP%] a[_ngcontent-%COMP%] strong[_ngcontent-%COMP%]{margin-right:10px} .dark-theme .about{color:#fff!important} .dark-theme ul li a{color:#fff!important;background-color:inherit!important} .dark-theme ul li a:hover{color:#3e6b2d!important}"]});class Ko{constructor(l){this.api=l}ngOnInit(){this.api.config.urls.launch&&this.api.launchURL(this.api.config.urls.launch)}}Ko.\u0275fac=function(l){return new(l||Ko)(o.Y36(H.n))},Ko.\u0275cmp=o.Xpm({type:Ko,selectors:[["uds-launcher"]],decls:24,vars:0,consts:[[1,"launcher"],[1,"launcher-box"],["routerLink","/client-download"]],template:function(l,s){1&l&&(o.TgZ(0,"div",0)(1,"div",1)(2,"h1")(3,"uds-translate"),o._uU(4,"UDS Service launcher"),o.qZA()(),o.TgZ(5,"h4")(6,"uds-translate"),o._uU(7,"The service you have requested is being launched."),o.qZA()(),o.TgZ(8,"h5")(9,"uds-translate"),o._uU(10,"Please, note that reloading this page will not work."),o.qZA()(),o.TgZ(11,"h5")(12,"uds-translate"),o._uU(13,"To relaunch service, you will have to do it from origin."),o.qZA()(),o.TgZ(14,"h6")(15,"uds-translate"),o._uU(16,"If the service does not launchs automatically, probably you dont have the UDS Client installed"),o.qZA()(),o.TgZ(17,"h6")(18,"uds-translate"),o._uU(19,"You can obtain it from the"),o.qZA(),o._uU(20,"\xa0"),o.TgZ(21,"a",2)(22,"uds-translate"),o._uU(23,"UDS Client download page"),o.qZA()()()()())},dependencies:[Q.rH,Z.P],styles:[".launcher[_ngcontent-%COMP%]{justify-content:center;display:flex;margin-top:1rem;font-size:larger}.launcher-box[_ngcontent-%COMP%]{box-shadow:0 12px 18px #00000040,0 10px 10px #00000038;transition:all .3s cubic-bezier(.25,.8,.25,1);border:1px;border-style:solid;border-radius:.5rem;border-color:#00000038;padding:1rem}.launcher-box[_ngcontent-%COMP%] h1[_ngcontent-%COMP%], h4[_ngcontent-%COMP%]{text-align:center}.launcher-box[_ngcontent-%COMP%] h5[_ngcontent-%COMP%], h6[_ngcontent-%COMP%]{margin-top:.6rem;margin-bottom:.6rem;font-weight:400}"]});var li=b(433);const ws=["input"],As=["label"],cr=["*"],Lr=new o.OlP("mat-checkbox-default-options",{providedIn:"root",factory:Ts});function Ts(){return{color:"accent",clickAction:"check-indeterminate"}}const Eo={provide:li.JU,useExisting:(0,o.Gpc)(()=>Mo),multi:!0};class Zo{}let Ii=0;const Nr=Ts(),Hi=(0,Pe.sb)((0,Pe.pj)((0,Pe.Kr)((0,Pe.Id)(class{constructor(g){this._elementRef=g}}))));let dr=(()=>{class g extends Hi{get inputId(){return`${this.id||this._uniqueId}-input`}get required(){return this._required}set required(s){this._required=(0,Ve.Ig)(s)}constructor(s,u,y,P,W,he,Le){super(u),this._changeDetectorRef=y,this._ngZone=P,this._animationMode=he,this._options=Le,this.ariaLabel="",this.ariaLabelledby=null,this.labelPosition="after",this.name=null,this.change=new o.vpe,this.indeterminateChange=new o.vpe,this._onTouched=()=>{},this._currentAnimationClass="",this._currentCheckState=0,this._controlValueAccessorChangeFn=()=>{},this._checked=!1,this._disabled=!1,this._indeterminate=!1,this._options=this._options||Nr,this.color=this.defaultColor=this._options.color||Nr.color,this.tabIndex=parseInt(W)||0,this.id=this._uniqueId=`${s}${++Ii}`}ngAfterViewInit(){this._syncIndeterminate(this._indeterminate)}get checked(){return this._checked}set checked(s){const u=(0,Ve.Ig)(s);u!=this.checked&&(this._checked=u,this._changeDetectorRef.markForCheck())}get disabled(){return this._disabled}set disabled(s){const u=(0,Ve.Ig)(s);u!==this.disabled&&(this._disabled=u,this._changeDetectorRef.markForCheck())}get indeterminate(){return this._indeterminate}set indeterminate(s){const u=s!=this._indeterminate;this._indeterminate=(0,Ve.Ig)(s),u&&(this._transitionCheckState(this._indeterminate?3:this.checked?1:2),this.indeterminateChange.emit(this._indeterminate)),this._syncIndeterminate(this._indeterminate)}_isRippleDisabled(){return this.disableRipple||this.disabled}_onLabelTextChange(){this._changeDetectorRef.detectChanges()}writeValue(s){this.checked=!!s}registerOnChange(s){this._controlValueAccessorChangeFn=s}registerOnTouched(s){this._onTouched=s}setDisabledState(s){this.disabled=s}_getAriaChecked(){return this.checked?"true":this.indeterminate?"mixed":"false"}_transitionCheckState(s){let u=this._currentCheckState,y=this._getAnimationTargetElement();if(u!==s&&y&&(this._currentAnimationClass&&y.classList.remove(this._currentAnimationClass),this._currentAnimationClass=this._getAnimationClassForCheckStateTransition(u,s),this._currentCheckState=s,this._currentAnimationClass.length>0)){y.classList.add(this._currentAnimationClass);const P=this._currentAnimationClass;this._ngZone.runOutsideAngular(()=>{setTimeout(()=>{y.classList.remove(P)},1e3)})}}_emitChangeEvent(){this._controlValueAccessorChangeFn(this.checked),this.change.emit(this._createChangeEvent(this.checked)),this._inputElement&&(this._inputElement.nativeElement.checked=this.checked)}toggle(){this.checked=!this.checked,this._controlValueAccessorChangeFn(this.checked)}_handleInputClick(){var s;const u=null===(s=this._options)||void 0===s?void 0:s.clickAction;this.disabled||"noop"===u?!this.disabled&&"noop"===u&&(this._inputElement.nativeElement.checked=this.checked,this._inputElement.nativeElement.indeterminate=this.indeterminate):(this.indeterminate&&"check"!==u&&Promise.resolve().then(()=>{this._indeterminate=!1,this.indeterminateChange.emit(this._indeterminate)}),this._checked=!this._checked,this._transitionCheckState(this._checked?1:2),this._emitChangeEvent())}_onInteractionEvent(s){s.stopPropagation()}_onBlur(){Promise.resolve().then(()=>{this._onTouched(),this._changeDetectorRef.markForCheck()})}_getAnimationClassForCheckStateTransition(s,u){if("NoopAnimations"===this._animationMode)return"";switch(s){case 0:if(1===u)return this._animationClasses.uncheckedToChecked;if(3==u)return this._checked?this._animationClasses.checkedToIndeterminate:this._animationClasses.uncheckedToIndeterminate;break;case 2:return 1===u?this._animationClasses.uncheckedToChecked:this._animationClasses.uncheckedToIndeterminate;case 1:return 2===u?this._animationClasses.checkedToUnchecked:this._animationClasses.checkedToIndeterminate;case 3:return 1===u?this._animationClasses.indeterminateToChecked:this._animationClasses.indeterminateToUnchecked}return""}_syncIndeterminate(s){const u=this._inputElement;u&&(u.nativeElement.indeterminate=s)}}return g.\u0275fac=function(s){o.$Z()},g.\u0275dir=o.lG2({type:g,viewQuery:function(s,u){if(1&s&&(o.Gf(ws,5),o.Gf(As,5),o.Gf(Pe.wG,5)),2&s){let y;o.iGM(y=o.CRH())&&(u._inputElement=y.first),o.iGM(y=o.CRH())&&(u._labelElement=y.first),o.iGM(y=o.CRH())&&(u.ripple=y.first)}},inputs:{ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],ariaDescribedby:["aria-describedby","ariaDescribedby"],id:"id",required:"required",labelPosition:"labelPosition",name:"name",value:"value",checked:"checked",disabled:"disabled",indeterminate:"indeterminate"},outputs:{change:"change",indeterminateChange:"indeterminateChange"},features:[o.qOj]}),g})(),Mo=(()=>{class g extends dr{constructor(s,u,y,P,W,he){super("mat-mdc-checkbox-",s,u,y,P,W,he),this._animationClasses={uncheckedToChecked:"mdc-checkbox--anim-unchecked-checked",uncheckedToIndeterminate:"mdc-checkbox--anim-unchecked-indeterminate",checkedToUnchecked:"mdc-checkbox--anim-checked-unchecked",checkedToIndeterminate:"mdc-checkbox--anim-checked-indeterminate",indeterminateToChecked:"mdc-checkbox--anim-indeterminate-checked",indeterminateToUnchecked:"mdc-checkbox--anim-indeterminate-unchecked"}}focus(){this._inputElement.nativeElement.focus()}_createChangeEvent(s){const u=new Zo;return u.source=this,u.checked=s,u}_getAnimationTargetElement(){var s;return null===(s=this._inputElement)||void 0===s?void 0:s.nativeElement}_onInputClick(){super._handleInputClick()}_preventBubblingFromLabel(s){s.target&&this._labelElement.nativeElement.contains(s.target)&&s.stopPropagation()}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(o.sBO),o.Y36(o.R0b),o.$8M("tabindex"),o.Y36(o.QbO,8),o.Y36(Lr,8))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-checkbox"]],hostAttrs:[1,"mat-mdc-checkbox"],hostVars:12,hostBindings:function(s,u){2&s&&(o.Ikx("id",u.id),o.uIk("tabindex",null)("aria-label",null)("aria-labelledby",null),o.ekj("_mat-animation-noopable","NoopAnimations"===u._animationMode)("mdc-checkbox--disabled",u.disabled)("mat-mdc-checkbox-disabled",u.disabled)("mat-mdc-checkbox-checked",u.checked))},inputs:{disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matCheckbox"],features:[o._Bn([Eo]),o.qOj],ngContentSelectors:cr,decls:15,vars:19,consts:[[1,"mdc-form-field",3,"click"],[1,"mdc-checkbox"],["checkbox",""],[1,"mat-mdc-checkbox-touch-target",3,"click"],["type","checkbox",1,"mdc-checkbox__native-control",3,"checked","disabled","id","required","tabIndex","blur","click","change"],["input",""],[1,"mdc-checkbox__ripple"],[1,"mdc-checkbox__background"],["focusable","false","viewBox","0 0 24 24","aria-hidden","true",1,"mdc-checkbox__checkmark"],["fill","none","d","M1.73,12.91 8.1,19.28 22.79,4.59",1,"mdc-checkbox__checkmark-path"],[1,"mdc-checkbox__mixedmark"],["mat-ripple","",1,"mat-mdc-checkbox-ripple","mat-mdc-focus-indicator",3,"matRippleTrigger","matRippleDisabled","matRippleCentered"],[3,"for"],["label",""]],template:function(s,u){if(1&s&&(o.F$t(),o.TgZ(0,"div",0),o.NdJ("click",function(P){return u._preventBubblingFromLabel(P)}),o.TgZ(1,"div",1,2)(3,"div",3),o.NdJ("click",function(){return u._onInputClick()}),o.qZA(),o.TgZ(4,"input",4,5),o.NdJ("blur",function(){return u._onBlur()})("click",function(){return u._onInputClick()})("change",function(P){return u._onInteractionEvent(P)}),o.qZA(),o._UZ(6,"div",6),o.TgZ(7,"div",7),o.O4$(),o.TgZ(8,"svg",8),o._UZ(9,"path",9),o.qZA(),o.kcU(),o._UZ(10,"div",10),o.qZA(),o._UZ(11,"div",11),o.qZA(),o.TgZ(12,"label",12,13),o.Hsn(14),o.qZA()()),2&s){const y=o.MAs(2);o.ekj("mdc-form-field--align-end","before"==u.labelPosition),o.xp6(4),o.ekj("mdc-checkbox--selected",u.checked),o.Q6J("checked",u.checked)("disabled",u.disabled)("id",u.inputId)("required",u.required)("tabIndex",u.tabIndex),o.uIk("aria-checked",u._getAriaChecked())("aria-label",u.ariaLabel||null)("aria-labelledby",u.ariaLabelledby)("aria-describedby",u.ariaDescribedby)("name",u.name)("value",u.value),o.xp6(7),o.Q6J("matRippleTrigger",y)("matRippleDisabled",u.disableRipple||u.disabled)("matRippleCentered",!0),o.xp6(1),o.Q6J("for",u.inputId)}},dependencies:[Pe.wG],styles:['.mdc-touch-target-wrapper{display:inline}@keyframes mdc-checkbox-unchecked-checked-checkmark-path{0%,50%{stroke-dashoffset:29.7833385}50%{animation-timing-function:cubic-bezier(0, 0, 0.2, 1)}100%{stroke-dashoffset:0}}@keyframes mdc-checkbox-unchecked-indeterminate-mixedmark{0%,68.2%{transform:scaleX(0)}68.2%{animation-timing-function:cubic-bezier(0, 0, 0, 1)}100%{transform:scaleX(1)}}@keyframes mdc-checkbox-checked-unchecked-checkmark-path{from{animation-timing-function:cubic-bezier(0.4, 0, 1, 1);opacity:1;stroke-dashoffset:0}to{opacity:0;stroke-dashoffset:-29.7833385}}@keyframes mdc-checkbox-checked-indeterminate-checkmark{from{animation-timing-function:cubic-bezier(0, 0, 0.2, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(45deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-checked-checkmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(45deg);opacity:0}to{transform:rotate(360deg);opacity:1}}@keyframes mdc-checkbox-checked-indeterminate-mixedmark{from{animation-timing-function:mdc-animation-deceleration-curve-timing-function;transform:rotate(-45deg);opacity:0}to{transform:rotate(0deg);opacity:1}}@keyframes mdc-checkbox-indeterminate-checked-mixedmark{from{animation-timing-function:cubic-bezier(0.14, 0, 0, 1);transform:rotate(0deg);opacity:1}to{transform:rotate(315deg);opacity:0}}@keyframes mdc-checkbox-indeterminate-unchecked-mixedmark{0%{animation-timing-function:linear;transform:scaleX(1);opacity:1}32.8%,100%{transform:scaleX(0);opacity:0}}.mdc-checkbox{display:inline-block;position:relative;flex:0 0 18px;box-sizing:content-box;width:18px;height:18px;line-height:0;white-space:nowrap;cursor:pointer;vertical-align:bottom}.mdc-checkbox[hidden]{display:none}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring{border-color:CanvasText}}.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__focus-ring::after,.mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__focus-ring::after{border-color:CanvasText}}@media all and (-ms-high-contrast: none){.mdc-checkbox .mdc-checkbox__focus-ring{display:none}}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-checkbox__mixedmark{margin:0 1px}}.mdc-checkbox--disabled{cursor:default;pointer-events:none}.mdc-checkbox__background{display:inline-flex;position:absolute;align-items:center;justify-content:center;box-sizing:border-box;width:18px;height:18px;border:2px solid currentColor;border-radius:2px;background-color:rgba(0,0,0,0);pointer-events:none;will-change:background-color,border-color;transition:background-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),border-color 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__checkmark{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;opacity:0;transition:opacity 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--upgraded .mdc-checkbox__checkmark{opacity:1}.mdc-checkbox__checkmark-path{transition:stroke-dashoffset 180ms 0ms cubic-bezier(0.4, 0, 0.6, 1);stroke:currentColor;stroke-width:3.12px;stroke-dashoffset:29.7833385;stroke-dasharray:29.7833385}.mdc-checkbox__mixedmark{width:100%;height:0;transform:scaleX(0) rotate(0deg);border-width:1px;border-style:solid;opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__background,.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__background,.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__background,.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__background{animation-duration:180ms;animation-timing-function:linear}.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-unchecked-checked-checkmark-path 180ms linear 0s;transition:none}.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-unchecked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__checkmark-path{animation:mdc-checkbox-checked-unchecked-checkmark-path 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__checkmark{animation:mdc-checkbox-checked-indeterminate-checkmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-checked-indeterminate .mdc-checkbox__mixedmark{animation:mdc-checkbox-checked-indeterminate-mixedmark 90ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__checkmark{animation:mdc-checkbox-indeterminate-checked-checkmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-checked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-checked-mixedmark 500ms linear 0s;transition:none}.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__mixedmark{animation:mdc-checkbox-indeterminate-unchecked-mixedmark 300ms linear 0s;transition:none}.mdc-checkbox__native-control:checked~.mdc-checkbox__background,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background{transition:border-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1),background-color 90ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark-path,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark-path{stroke-dashoffset:0}.mdc-checkbox__native-control{position:absolute;margin:0;padding:0;opacity:0;cursor:inherit}.mdc-checkbox__native-control:disabled{cursor:default;pointer-events:none}.mdc-checkbox--touch{margin:calc((var(--mdc-checkbox-state-layer-size, 48px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mdc-checkbox--touch .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 48px)) / 2);width:var(--mdc-checkbox-state-layer-size, 48px);height:var(--mdc-checkbox-state-layer-size, 48px)}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__checkmark{transition:opacity 180ms 0ms cubic-bezier(0, 0, 0.2, 1),transform 180ms 0ms cubic-bezier(0, 0, 0.2, 1);opacity:1}.mdc-checkbox__native-control:checked~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(-45deg)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__checkmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__checkmark{transform:rotate(45deg);opacity:0;transition:opacity 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1),transform 90ms 0ms cubic-bezier(0.4, 0, 0.6, 1)}.mdc-checkbox__native-control:indeterminate~.mdc-checkbox__background .mdc-checkbox__mixedmark,.mdc-checkbox__native-control[data-indeterminate=true]~.mdc-checkbox__background .mdc-checkbox__mixedmark{transform:scaleX(1) rotate(0deg);opacity:1}.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__background,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__checkmark-path,.mdc-checkbox.mdc-checkbox--upgraded .mdc-checkbox__mixedmark{transition:none}.mdc-form-field{display:inline-flex;align-items:center;vertical-align:middle}.mdc-form-field[hidden]{display:none}.mdc-form-field>label{margin-left:0;margin-right:auto;padding-left:4px;padding-right:0;order:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{margin-left:auto;margin-right:0}[dir=rtl] .mdc-form-field>label,.mdc-form-field>label[dir=rtl]{padding-left:0;padding-right:4px}.mdc-form-field--nowrap>label{text-overflow:ellipsis;overflow:hidden;white-space:nowrap}.mdc-form-field--align-end>label{margin-left:auto;margin-right:0;padding-left:0;padding-right:4px;order:-1}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{margin-left:0;margin-right:auto}[dir=rtl] .mdc-form-field--align-end>label,.mdc-form-field--align-end>label[dir=rtl]{padding-left:4px;padding-right:0}.mdc-form-field--space-between{justify-content:space-between}.mdc-form-field--space-between>label{margin:0}[dir=rtl] .mdc-form-field--space-between>label,.mdc-form-field--space-between>label[dir=rtl]{margin:0}.mat-mdc-checkbox{display:inline-block;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-checkbox .mdc-checkbox{padding:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);margin:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-disabled-unselected-icon-color, rgba(0, 0, 0, 0.38));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[disabled]:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true][disabled]~.mdc-checkbox__background{border-color:transparent;background-color:var(--mdc-checkbox-disabled-selected-icon-color, rgba(0, 0, 0, 0.38))}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__checkmark{color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:disabled~.mdc-checkbox__background .mdc-checkbox__mixedmark{border-color:var(--mdc-checkbox-disabled-selected-checkmark-color, #fff)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-hover-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-hover-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:hover.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-focus-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-focus-icon-color, var(--mdc-theme-secondary, #018786));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox.mdc-ripple-upgraded--background-focused.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(.mdc-ripple-upgraded):focus.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-FF018786FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:checked~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control:enabled:indeterminate~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active .mdc-checkbox__native-control[data-indeterminate=true]:enabled~.mdc-checkbox__background{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}@keyframes mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786{0%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}50%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}}@keyframes mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786{0%,80%{border-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786));background-color:var(--mdc-checkbox-selected-pressed-icon-color, var(--mdc-theme-secondary, #018786))}100%{border-color:var(--mdc-checkbox-unselected-pressed-icon-color, rgba(0, 0, 0, 0.54));background-color:transparent}}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-checked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-unchecked-indeterminate .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-in-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-checked-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background,.mat-mdc-checkbox .mdc-checkbox:not(:disabled):active.mdc-checkbox--anim-indeterminate-unchecked .mdc-checkbox__native-control:enabled~.mdc-checkbox__background{animation-name:mdc-checkbox-fade-out-background-8A000000FF01878600000000FF018786}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__background{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - 18px) / 2)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control{top:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);right:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);left:calc((var(--mdc-checkbox-state-layer-size, 40px) - var(--mdc-checkbox-state-layer-size, 40px)) / 2);width:var(--mdc-checkbox-state-layer-size, 40px);height:var(--mdc-checkbox-state-layer-size, 40px)}.mat-mdc-checkbox .mdc-checkbox:hover .mdc-checkbox__native-control:not([disabled])~.mdc-checkbox__ripple{opacity:.04;transform:scale(1);transition:opacity 80ms 0 cubic-bezier(0, 0, 0.2, 1),transform 80ms 0 cubic-bezier(0, 0, 0.2, 1)}.mat-mdc-checkbox .mdc-checkbox .mdc-checkbox__native-control:not([disabled]):focus~.mdc-checkbox__ripple{opacity:.16}.mat-mdc-checkbox .mdc-checkbox__background{-webkit-print-color-adjust:exact;color-adjust:exact}.mat-mdc-checkbox._mat-animation-noopable *,.mat-mdc-checkbox._mat-animation-noopable *::before{transition:none !important;animation:none !important}.mat-mdc-checkbox label{cursor:pointer}.mat-mdc-checkbox.mat-mdc-checkbox-disabled label{cursor:default}.mat-mdc-checkbox label:empty{display:none}.mat-mdc-checkbox .mdc-checkbox__native-control:focus:enabled:not(:checked):not(:indeterminate):not([data-indeterminate=true])~.mdc-checkbox__background{border-color:var(--mdc-checkbox-unselected-focus-icon-color, black)}.cdk-high-contrast-active .mat-mdc-checkbox.mat-mdc-checkbox-disabled{opacity:.5}.cdk-high-contrast-active .mat-mdc-checkbox .mdc-checkbox__checkmark{--mdc-checkbox-selected-checkmark-color: CanvasText;--mdc-checkbox-disabled-selected-checkmark-color: CanvasText}.mat-mdc-checkbox .mdc-checkbox__ripple{opacity:0}.mat-mdc-checkbox-ripple,.mdc-checkbox__ripple{top:0;left:0;right:0;bottom:0;position:absolute;border-radius:50%;pointer-events:none}.mat-mdc-checkbox-ripple:not(:empty),.mdc-checkbox__ripple:not(:empty){transform:translateZ(0)}.mat-mdc-checkbox-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-checkbox-ripple::before{border-radius:50%}.mdc-checkbox__native-control:focus~.mat-mdc-focus-indicator::before{content:""}'],encapsulation:2,changeDetection:0}),g})(),Vr=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({}),g})(),Ss=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({imports:[Pe.BQ,Pe.si,Vr,Pe.BQ,Vr]}),g})();function Qi(g,l){1&g&&(o.TgZ(0,"div",6)(1,"mat-checkbox",14)(2,"uds-translate"),o._uU(3,"Remember Me"),o.qZA()()())}function ur(g,l){1&g&&o._UZ(0,"input",15)}class Rn{constructor(l){this.api=l}ngOnInit(){document.getElementById("mfaform").action=this.api.config.urls.mfa,this.api.user.isLogged&&this.api.router.navigate(["/"]),this.api.errors.length>0&&this.api.gui.alert(django.gettext("Errors found"),"
"+this.api.errors.join("
")+"
")}launch(){return document.getElementById("mfaform").submit(),!0}}Rn.\u0275fac=function(l){return new(l||Rn)(o.Y36(H.n))},Rn.\u0275cmp=o.Xpm({type:Rn,selectors:[["uds-mfa"]],decls:22,vars:7,consts:[["id","mfaform","method","post",3,"ngSubmit"],[1,"mfa-container"],[1,"mfa-brand"],[3,"src"],[1,"mfa-info"],[1,"mfa-form"],[1,"mfa-field"],["matInput","","id","code","name","code","value","","required","","autofocus",""],["class","mfa-field",4,"ngIf"],["type","hidden","name","remember","value","0",4,"ngIf"],[1,"mfa-button"],["mat-stroked-button","","color","primary","type","submit"],[1,"mfa-html-container"],[1,"mfa-html",3,"innerHtml"],["id","remember","name","remember"],["type","hidden","name","remember","value","0"]],template:function(l,s){1&l&&(o.TgZ(0,"form",0),o.NdJ("ngSubmit",function(){return s.launch()}),o.TgZ(1,"div",1)(2,"div",2),o._UZ(3,"img",3),o.qZA(),o.TgZ(4,"div",4)(5,"uds-translate"),o._uU(6,"Login Verification"),o.qZA()(),o.TgZ(7,"div",5)(8,"div",6)(9,"mat-form-field")(10,"mat-label"),o._uU(11),o.qZA(),o._UZ(12,"input",7),o.qZA()(),o.YNc(13,Qi,4,0,"div",8),o.YNc(14,ur,1,0,"input",9),o.TgZ(15,"div",10)(16,"button",11)(17,"uds-translate"),o._uU(18,"Submit"),o.qZA()()()()()(),o.TgZ(19,"div",12),o._UZ(20,"div",13),o.ALo(21,"safeHtml"),o.qZA()),2&l&&(o.xp6(3),o.Q6J("src",s.api.staticURL("modern/img/login-img.png"),o.LSH),o.xp6(8),o.hij(" ",s.api.config.mfa.label," "),o.xp6(2),o.Q6J("ngIf",s.api.config.mfa.remember_device>0),o.xp6(1),o.Q6J("ngIf",s.api.config.mfa.remember_device<=0),o.xp6(6),o.Q6J("innerHtml",o.lcZ(21,5,s.api.config.mfa.html),o.oJD))},dependencies:[ie.O5,li._Y,li.JL,li.F,Ce.lW,Kn.KE,Kn.hX,ar.Nt,Mo,Z.P,Ee.z],styles:[".mfa-container[_ngcontent-%COMP%]{display:flex;flex-flow:column wrap;justify-content:center;align-items:center}.mfa-form[_ngcontent-%COMP%]{margin:0 1rem 2rem 0;min-width:32em;padding:1rem;box-shadow:0 2px 2px #00000024,0 3px 1px -2px #0000001f,0 1px 5px #0003;transition:all .3s cubic-bezier(.25,.8,.25,1);flex:1 0 auto;justify-content:center;flex-flow:column wrap;align-items:center;display:flex}.mfa-field[_ngcontent-%COMP%]{width:80%;margin:.5rem}.mfa-button[_ngcontent-%COMP%]{margin:2rem}.mat-mdc-form-field[_ngcontent-%COMP%]{width:100%}.mfa-info[_ngcontent-%COMP%]{margin:1rem}.mfa-html-container[_ngcontent-%COMP%]{display:flex;flex-flow:column wrap;justify-content:center;align-items:center;margin:1rem}@media only screen and (max-width: 744px){.mfa-form[_ngcontent-%COMP%]{min-width:80%}}"]});const hr=[{path:"",redirectTo:"services",pathMatch:"full"},{path:"services",component:Do,canActivate:[fe]},{path:"login",component:Se.G},{path:"login/:id",component:Se.G},{path:"mfa",component:Rn},{path:"client-download",component:se},{path:"downloads",component:Ie,canActivate:[fe]},{path:"error/:id",component:Xi},{path:"about",component:Fo},{path:"ticket/launcher",component:Ko},{path:"**",redirectTo:"services"}];class ji{}function fr(g){return new o.vHH(3e3,!1)}function ks(){return typeof window<"u"&&typeof window.document<"u"}function io(){return typeof process<"u"&&"[object process]"==={}.toString.call(process)}function Vn(g){switch(g.length){case 0:return new ot.ZN;case 1:return g[0];default:return new ot.ZE(g)}}function ia(g,l,s,u,y=new Map,P=new Map){const W=[],he=[];let Le=-1,qe=null;if(u.forEach(vt=>{const Dt=vt.get("offset"),Bt=Dt==Le,qt=Bt&&qe||new Map;vt.forEach(($t,Xt)=>{let wn=Xt,kn=$t;if("offset"!==Xt)switch(wn=l.normalizePropertyName(wn,W),kn){case ot.k1:kn=y.get(Xt);break;case ot.l3:kn=P.get(Xt);break;default:kn=l.normalizeStyleValue(Xt,wn,kn,W)}qt.set(wn,kn)}),Bt||he.push(qt),qe=qt,Le=Dt}),W.length)throw function fn(g){return new o.vHH(3502,!1)}();return he}function ds(g,l,s,u){switch(l){case"start":g.onStart(()=>u(s&&Ps(s,"start",g)));break;case"done":g.onDone(()=>u(s&&Ps(s,"done",g)));break;case"destroy":g.onDestroy(()=>u(s&&Ps(s,"destroy",g)))}}function Ps(g,l,s){const u=s.totalTime,P=Rs(g.element,g.triggerName,g.fromState,g.toState,l||g.phaseName,null==u?g.totalTime:u,!!s.disabled),W=g._data;return null!=W&&(P._data=W),P}function Rs(g,l,s,u,y="",P=0,W){return{element:g,triggerName:l,fromState:s,toState:u,phaseName:y,totalTime:P,disabled:!!W}}function Zn(g,l,s){let u=g.get(l);return u||g.set(l,u=s),u}function Hr(g){const l=g.indexOf(":");return[g.substring(1,l),g.slice(l+1)]}ji.\u0275fac=function(l){return new(l||ji)},ji.\u0275mod=o.oAB({type:ji}),ji.\u0275inj=o.cJS({imports:[Q.Bz.forRoot(hr,{}),Q.Bz]});let jr=(g,l)=>!1,qo=(g,l,s)=>[],zr=null;function $r(g){const l=g.parentNode||g.host;return l===zr?null:l}(io()||typeof Element<"u")&&(ks()?(zr=(()=>document.documentElement)(),jr=(g,l)=>{for(;l;){if(l===g)return!0;l=$r(l)}return!1}):jr=(g,l)=>g.contains(l),qo=(g,l,s)=>{if(s)return Array.from(g.querySelectorAll(l));const u=g.querySelector(l);return u?[u]:[]});let Ao=null,us=!1;const Ls=jr,ui=qo;let On=(()=>{class g{validateStyleProperty(s){return function oa(g){Ao||(Ao=function wa(){return typeof document<"u"?document.body:null}()||{},us=!!Ao.style&&"WebkitAppearance"in Ao.style);let l=!0;return Ao.style&&!function Fs(g){return"ebkit"==g.substring(1,6)}(g)&&(l=g in Ao.style,!l&&us&&(l="Webkit"+g.charAt(0).toUpperCase()+g.slice(1)in Ao.style)),l}(s)}matchesElement(s,u){return!1}containsElement(s,u){return Ls(s,u)}getParentElement(s){return $r(s)}query(s,u,y){return ui(s,u,y)}computeStyle(s,u,y){return y||""}animate(s,u,y,P,W,he=[],Le){return new ot.ZN(y,P)}}return g.\u0275fac=function(s){return new(s||g)},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})(),hs=(()=>{class g{}return g.NOOP=new On,g})();const L="ng-enter",le="ng-leave",je="ng-trigger",Qe=".ng-trigger",wt="ng-animating",nn=".ng-animating";function Zt(g){if("number"==typeof g)return g;const l=g.match(/^(-?[\.\d]+)(m?s)/);return!l||l.length<2?0:an(parseFloat(l[1]),l[2])}function an(g,l){return"s"===l?1e3*g:g}function Wt(g,l,s){return g.hasOwnProperty("duration")?g:function Mn(g,l,s){let y,P=0,W="";if("string"==typeof g){const he=g.match(/^(-?[\.\d]+)(m?s)(?:\s+(-?[\.\d]+)(m?s))?(?:\s+([-a-z]+(?:\(.+?\))?))?$/i);if(null===he)return l.push(fr()),{duration:0,delay:0,easing:""};y=an(parseFloat(he[1]),he[2]);const Le=he[3];null!=Le&&(P=an(parseFloat(Le),he[4]));const qe=he[5];qe&&(W=qe)}else y=g;if(!s){let he=!1,Le=l.length;y<0&&(l.push(function zi(){return new o.vHH(3100,!1)}()),he=!0),P<0&&(l.push(function ci(){return new o.vHH(3101,!1)}()),he=!0),he&&l.splice(Le,0,fr())}return{duration:y,delay:P,easing:W}}(g,l,s)}function pn(g,l={}){return Object.keys(g).forEach(s=>{l[s]=g[s]}),l}function qn(g){const l=new Map;return Object.keys(g).forEach(s=>{l.set(s,g[s])}),l}function ii(g,l=new Map,s){if(s)for(let[u,y]of s)l.set(u,y);for(let[u,y]of g)l.set(u,y);return l}function po(g,l,s){return s?l+":"+s+";":""}function gr(g){let l="";for(let s=0;s{const P=Yr(y);s&&!s.has(y)&&s.set(y,g.style[P]),g.style[P]=u}),io()&&gr(g))}function ki(g,l){g.style&&(l.forEach((s,u)=>{const y=Yr(u);g.style[y]=""}),io()&&gr(g))}function Gr(g){return Array.isArray(g)?1==g.length?g[0]:(0,ot.vP)(g):g}const To=new RegExp("{{\\s*(.+?)\\s*}}","g");function Wr(g){let l=[];if("string"==typeof g){let s;for(;s=To.exec(g);)l.push(s[1]);To.lastIndex=0}return l}function _r(g,l,s){const u=g.toString(),y=u.replace(To,(P,W)=>{let he=l[W];return null==he&&(s.push(function as(g){return new o.vHH(3003,!1)}()),he=""),he.toString()});return y==u?g:y}function Qo(g){const l=[];let s=g.next();for(;!s.done;)l.push(s.value),s=g.next();return l}const al=/-+([a-z0-9])/g;function Yr(g){return g.replace(al,(...l)=>l[1].toUpperCase())}function aa(g){return g.replace(/([a-z])([A-Z])/g,"$1-$2").toLowerCase()}function hi(g,l,s){switch(l.type){case 7:return g.visitTrigger(l,s);case 0:return g.visitState(l,s);case 1:return g.visitTransition(l,s);case 2:return g.visitSequence(l,s);case 3:return g.visitGroup(l,s);case 4:return g.visitAnimate(l,s);case 5:return g.visitKeyframes(l,s);case 6:return g.visitStyle(l,s);case 8:return g.visitReference(l,s);case 9:return g.visitAnimateChild(l,s);case 10:return g.visitAnimateRef(l,s);case 11:return g.visitQuery(l,s);case 12:return g.visitStagger(l,s);default:throw function Ji(g){return new o.vHH(3004,!1)}()}}function la(g,l){return window.getComputedStyle(g)[l]}function Us(g,l){const s=[];return"string"==typeof g?g.split(/\s*,\s*/).forEach(u=>function Aa(g,l,s){if(":"==g[0]){const Le=function Ta(g,l){switch(g){case":enter":return"void => *";case":leave":return"* => void";case":increment":return(s,u)=>parseFloat(u)>parseFloat(s);case":decrement":return(s,u)=>parseFloat(u) *"}}(g,s);if("function"==typeof Le)return void l.push(Le);g=Le}const u=g.match(/^(\*|[-\w]+)\s*()\s*(\*|[-\w]+)$/);if(null==u||u.length<4)return s.push(function E(g){return new o.vHH(3015,!1)}()),l;const y=u[1],P=u[2],W=u[3];l.push(dl(y,W));"<"==P[0]&&!("*"==y&&"*"==W)&&l.push(dl(W,y))}(u,s,l)):s.push(g),s}const Zr=new Set(["true","1"]),Hs=new Set(["false","0"]);function dl(g,l){const s=Zr.has(g)||Hs.has(g),u=Zr.has(l)||Hs.has(l);return(y,P)=>{let W="*"==g||g==y,he="*"==l||l==P;return!W&&s&&"boolean"==typeof y&&(W=y?Zr.has(g):Hs.has(g)),!he&&u&&"boolean"==typeof P&&(he=P?Zr.has(l):Hs.has(l)),W&&he}}const Bo=new RegExp("s*:selfs*,?","g");function js(g,l,s,u){return new ul(g).build(l,s,u)}class ul{constructor(l){this._driver=l}build(l,s,u){const y=new zs(s);return this._resetContextStyleTimingState(y),hi(this,Gr(l),y)}_resetContextStyleTimingState(l){l.currentQuerySelector="",l.collectedStyles=new Map,l.collectedStyles.set("",new Map),l.currentTime=0}visitTrigger(l,s){let u=s.queryCount=0,y=s.depCount=0;const P=[],W=[];return"@"==l.name.charAt(0)&&s.errors.push(function ls(){return new o.vHH(3006,!1)}()),l.definitions.forEach(he=>{if(this._resetContextStyleTimingState(s),0==he.type){const Le=he,qe=Le.name;qe.toString().split(/\s*,\s*/).forEach(vt=>{Le.name=vt,P.push(this.visitState(Le,s))}),Le.name=qe}else if(1==he.type){const Le=this.visitTransition(he,s);u+=Le.queryCount,y+=Le.depCount,W.push(Le)}else s.errors.push(function $i(){return new o.vHH(3007,!1)}())}),{type:7,name:l.name,states:P,transitions:W,queryCount:u,depCount:y,options:null}}visitState(l,s){const u=this.visitStyle(l.styles,s),y=l.options&&l.options.params||null;if(u.containsDynamicStyles){const P=new Set,W=y||{};u.styles.forEach(he=>{he instanceof Map&&he.forEach(Le=>{Wr(Le).forEach(qe=>{W.hasOwnProperty(qe)||P.add(qe)})})}),P.size&&(Qo(P.values()),s.errors.push(function pr(g,l){return new o.vHH(3008,!1)}()))}return{type:0,name:l.name,style:u,options:y?{params:y}:null}}visitTransition(l,s){s.queryCount=0,s.depCount=0;const u=hi(this,Gr(l.animation),s);return{type:1,matchers:Us(l.expr,s.errors),animation:u,queryCount:s.queryCount,depCount:s.depCount,options:yr(l.options)}}visitSequence(l,s){return{type:2,steps:l.steps.map(u=>hi(this,u,s)),options:yr(l.options)}}visitGroup(l,s){const u=s.currentTime;let y=0;const P=l.steps.map(W=>{s.currentTime=u;const he=hi(this,W,s);return y=Math.max(y,s.currentTime),he});return s.currentTime=y,{type:3,steps:P,options:yr(l.options)}}visitAnimate(l,s){const u=function Gl(g,l){if(g.hasOwnProperty("duration"))return g;if("number"==typeof g)return qr(Wt(g,l).duration,0,"");const s=g;if(s.split(/\s+/).some(P=>"{"==P.charAt(0)&&"{"==P.charAt(1))){const P=qr(0,0,"");return P.dynamic=!0,P.strValue=s,P}const y=Wt(s,l);return qr(y.duration,y.delay,y.easing)}(l.timings,s.errors);s.currentAnimateTimings=u;let y,P=l.styles?l.styles:(0,ot.oB)({});if(5==P.type)y=this.visitKeyframes(P,s);else{let W=l.styles,he=!1;if(!W){he=!0;const qe={};u.easing&&(qe.easing=u.easing),W=(0,ot.oB)(qe)}s.currentTime+=u.duration+u.delay;const Le=this.visitStyle(W,s);Le.isEmptyStep=he,y=Le}return s.currentAnimateTimings=null,{type:4,timings:u,style:y,options:null}}visitStyle(l,s){const u=this._makeStyleAst(l,s);return this._validateStyleAst(u,s),u}_makeStyleAst(l,s){const u=[],y=Array.isArray(l.styles)?l.styles:[l.styles];for(let he of y)"string"==typeof he?he===ot.l3?u.push(he):s.errors.push(new o.vHH(3002,!1)):u.push(qn(he));let P=!1,W=null;return u.forEach(he=>{if(he instanceof Map&&(he.has("easing")&&(W=he.get("easing"),he.delete("easing")),!P))for(let Le of he.values())if(Le.toString().indexOf("{{")>=0){P=!0;break}}),{type:6,styles:u,easing:W,offset:l.offset,containsDynamicStyles:P,options:null}}_validateStyleAst(l,s){const u=s.currentAnimateTimings;let y=s.currentTime,P=s.currentTime;u&&P>0&&(P-=u.duration+u.delay),l.styles.forEach(W=>{"string"!=typeof W&&W.forEach((he,Le)=>{const qe=s.collectedStyles.get(s.currentQuerySelector),vt=qe.get(Le);let Dt=!0;vt&&(P!=y&&P>=vt.startTime&&y<=vt.endTime&&(s.errors.push(function wo(g,l,s,u,y){return new o.vHH(3010,!1)}()),Dt=!1),P=vt.startTime),Dt&&qe.set(Le,{startTime:P,endTime:y}),s.options&&function sa(g,l,s){const u=l.params||{},y=Wr(g);y.length&&y.forEach(P=>{u.hasOwnProperty(P)||s.push(function Ur(g){return new o.vHH(3001,!1)}())})}(he,s.options,s.errors)})})}visitKeyframes(l,s){const u={type:5,styles:[],options:null};if(!s.currentAnimateTimings)return s.errors.push(function zt(){return new o.vHH(3011,!1)}()),u;let P=0;const W=[];let he=!1,Le=!1,qe=0;const vt=l.steps.map(kn=>{const fi=this._makeStyleAst(kn,s);let Yi=null!=fi.offset?fi.offset:function da(g){if("string"==typeof g)return null;let l=null;if(Array.isArray(g))g.forEach(s=>{if(s instanceof Map&&s.has("offset")){const u=s;l=parseFloat(u.get("offset")),u.delete("offset")}});else if(g instanceof Map&&g.has("offset")){const s=g;l=parseFloat(s.get("offset")),s.delete("offset")}return l}(fi.styles),bi=0;return null!=Yi&&(P++,bi=fi.offset=Yi),Le=Le||bi<0||bi>1,he=he||bi0&&P{const Yi=Bt>0?fi==qt?1:Bt*fi:W[fi],bi=Yi*wn;s.currentTime=$t+Xt.delay+bi,Xt.duration=bi,this._validateStyleAst(kn,s),kn.offset=Yi,u.styles.push(kn)}),u}visitReference(l,s){return{type:8,animation:hi(this,Gr(l.animation),s),options:yr(l.options)}}visitAnimateChild(l,s){return s.depCount++,{type:9,options:yr(l.options)}}visitAnimateRef(l,s){return{type:10,animation:this.visitReference(l.animation,s),options:yr(l.options)}}visitQuery(l,s){const u=s.currentQuerySelector,y=l.options||{};s.queryCount++,s.currentQuery=l;const[P,W]=function vr(g){const l=!!g.split(/\s*,\s*/).find(s=>":self"==s);return l&&(g=g.replace(Bo,"")),g=g.replace(/@\*/g,Qe).replace(/@\w+/g,s=>Qe+"-"+s.slice(1)).replace(/:animating/g,nn),[g,l]}(l.selector);s.currentQuerySelector=u.length?u+" "+P:P,Zn(s.collectedStyles,s.currentQuerySelector,new Map);const he=hi(this,Gr(l.animation),s);return s.currentQuery=null,s.currentQuerySelector=u,{type:11,selector:P,limit:y.limit||0,optional:!!y.optional,includeSelf:W,animation:he,originalSelector:l.selector,options:yr(l.options)}}visitStagger(l,s){s.currentQuery||s.errors.push(function na(){return new o.vHH(3013,!1)}());const u="full"===l.timings?{duration:0,delay:0,easing:"full"}:Wt(l.timings,s.errors,!0);return{type:12,animation:hi(this,Gr(l.animation),s),timings:u,options:null}}}class zs{constructor(l){this.errors=l,this.queryCount=0,this.depCount=0,this.currentTransition=null,this.currentQuery=null,this.currentQuerySelector=null,this.currentAnimateTimings=null,this.currentTime=0,this.collectedStyles=new Map,this.options=null,this.unsupportedCSSPropertiesFound=new Set}}function yr(g){return g?(g=pn(g)).params&&(g.params=function br(g){return g?pn(g):null}(g.params)):g={},g}function qr(g,l,s){return{duration:g,delay:l,easing:s}}function Vo(g,l,s,u,y,P,W=null,he=!1){return{type:1,element:g,keyframes:l,preStyleProps:s,postStyleProps:u,duration:y,delay:P,totalTime:y+P,easing:W,subTimeline:he}}class mo{constructor(){this._map=new Map}get(l){return this._map.get(l)||[]}append(l,s){let u=this._map.get(l);u||this._map.set(l,u=[]),u.push(...s)}has(l){return this._map.has(l)}clear(){this._map.clear()}}const ua=new RegExp(":enter","g"),Wl=new RegExp(":leave","g");function Oa(g,l,s,u,y,P=new Map,W=new Map,he,Le,qe=[]){return(new In).buildKeyframes(g,l,s,u,y,P,W,he,Le,qe)}class In{buildKeyframes(l,s,u,y,P,W,he,Le,qe,vt=[]){qe=qe||new mo;const Dt=new hl(l,s,qe,y,P,vt,[]);Dt.options=Le;const Bt=Le.delay?Zt(Le.delay):0;Dt.currentTimeline.delayNextStep(Bt),Dt.currentTimeline.setStyles([W],null,Dt.errors,Le),hi(this,u,Dt);const qt=Dt.timelines.filter($t=>$t.containsAnimation());if(qt.length&&he.size){let $t;for(let Xt=qt.length-1;Xt>=0;Xt--){const wn=qt[Xt];if(wn.element===s){$t=wn;break}}$t&&!$t.allowOnlyTimelineStyles()&&$t.setStyles([he],null,Dt.errors,Le)}return qt.length?qt.map($t=>$t.buildKeyframes()):[Vo(s,[],[],[],0,Bt,"",!1)]}visitTrigger(l,s){}visitState(l,s){}visitTransition(l,s){}visitAnimateChild(l,s){const u=s.subInstructions.get(s.element);if(u){const y=s.createSubContext(l.options),P=s.currentTimeline.currentTime,W=this._visitSubInstructions(u,y,y.options);P!=W&&s.transformIntoNewTimeline(W)}s.previousNode=l}visitAnimateRef(l,s){const u=s.createSubContext(l.options);u.transformIntoNewTimeline(),this._applyAnimationRefDelays([l.options,l.animation.options],s,u),this.visitReference(l.animation,u),s.transformIntoNewTimeline(u.currentTimeline.currentTime),s.previousNode=l}_applyAnimationRefDelays(l,s,u){for(const P of l){const W=null==P?void 0:P.delay;if(W){var y;const he="number"==typeof W?W:Zt(_r(W,null!==(y=null==P?void 0:P.params)&&void 0!==y?y:{},s.errors));u.delayNextStep(he)}}}_visitSubInstructions(l,s,u){let P=s.currentTimeline.currentTime;const W=null!=u.duration?Zt(u.duration):null,he=null!=u.delay?Zt(u.delay):null;return 0!==W&&l.forEach(Le=>{const qe=s.appendInstructionToTimeline(Le,W,he);P=Math.max(P,qe.duration+qe.delay)}),P}visitReference(l,s){s.updateOptions(l.options,!0),hi(this,l.animation,s),s.previousNode=l}visitSequence(l,s){const u=s.subContextCount;let y=s;const P=l.options;if(P&&(P.params||P.delay)&&(y=s.createSubContext(P),y.transformIntoNewTimeline(),null!=P.delay)){6==y.previousNode.type&&(y.currentTimeline.snapshotCurrentStyles(),y.previousNode=Cr);const W=Zt(P.delay);y.delayNextStep(W)}l.steps.length&&(l.steps.forEach(W=>hi(this,W,y)),y.currentTimeline.applyStylesToKeyframe(),y.subContextCount>u&&y.transformIntoNewTimeline()),s.previousNode=l}visitGroup(l,s){const u=[];let y=s.currentTimeline.currentTime;const P=l.options&&l.options.delay?Zt(l.options.delay):0;l.steps.forEach(W=>{const he=s.createSubContext(l.options);P&&he.delayNextStep(P),hi(this,W,he),y=Math.max(y,he.currentTimeline.currentTime),u.push(he.currentTimeline)}),u.forEach(W=>s.currentTimeline.mergeTimelineCollectedStyles(W)),s.transformIntoNewTimeline(y),s.previousNode=l}_visitTiming(l,s){if(l.dynamic){const u=l.strValue;return Wt(s.params?_r(u,s.params,s.errors):u,s.errors)}return{duration:l.duration,delay:l.delay,easing:l.easing}}visitAnimate(l,s){const u=s.currentAnimateTimings=this._visitTiming(l.timings,s),y=s.currentTimeline;u.delay&&(s.incrementTime(u.delay),y.snapshotCurrentStyles());const P=l.style;5==P.type?this.visitKeyframes(P,s):(s.incrementTime(u.duration),this.visitStyle(P,s),y.applyStylesToKeyframe()),s.currentAnimateTimings=null,s.previousNode=l}visitStyle(l,s){const u=s.currentTimeline,y=s.currentAnimateTimings;!y&&u.hasCurrentStyleProperties()&&u.forwardFrame();const P=y&&y.easing||l.easing;l.isEmptyStep?u.applyEmptyStep(P):u.setStyles(l.styles,P,s.errors,s.options),s.previousNode=l}visitKeyframes(l,s){const u=s.currentAnimateTimings,y=s.currentTimeline.duration,P=u.duration,he=s.createSubContext().currentTimeline;he.easing=u.easing,l.styles.forEach(Le=>{he.forwardTime((Le.offset||0)*P),he.setStyles(Le.styles,Le.easing,s.errors,s.options),he.applyStylesToKeyframe()}),s.currentTimeline.mergeTimelineCollectedStyles(he),s.transformIntoNewTimeline(y+P),s.previousNode=l}visitQuery(l,s){const u=s.currentTimeline.currentTime,y=l.options||{},P=y.delay?Zt(y.delay):0;P&&(6===s.previousNode.type||0==u&&s.currentTimeline.hasCurrentStyleProperties())&&(s.currentTimeline.snapshotCurrentStyles(),s.previousNode=Cr);let W=u;const he=s.invokeQuery(l.selector,l.originalSelector,l.limit,l.includeSelf,!!y.optional,s.errors);s.currentQueryTotal=he.length;let Le=null;he.forEach((qe,vt)=>{s.currentQueryIndex=vt;const Dt=s.createSubContext(l.options,qe);P&&Dt.delayNextStep(P),qe===s.element&&(Le=Dt.currentTimeline),hi(this,l.animation,Dt),Dt.currentTimeline.applyStylesToKeyframe(),W=Math.max(W,Dt.currentTimeline.currentTime)}),s.currentQueryIndex=0,s.currentQueryTotal=0,s.transformIntoNewTimeline(W),Le&&(s.currentTimeline.mergeTimelineCollectedStyles(Le),s.currentTimeline.snapshotCurrentStyles()),s.previousNode=l}visitStagger(l,s){const u=s.parentContext,y=s.currentTimeline,P=l.timings,W=Math.abs(P.duration),he=W*(s.currentQueryTotal-1);let Le=W*s.currentQueryIndex;switch(P.duration<0?"reverse":P.easing){case"reverse":Le=he-Le;break;case"full":Le=u.currentStaggerTime}const vt=s.currentTimeline;Le&&vt.delayNextStep(Le);const Dt=vt.currentTime;hi(this,l.animation,s),s.previousNode=l,u.currentStaggerTime=y.currentTime-Dt+(y.startTime-u.currentTimeline.startTime)}}const Cr={};class hl{constructor(l,s,u,y,P,W,he,Le){this._driver=l,this.element=s,this.subInstructions=u,this._enterClassName=y,this._leaveClassName=P,this.errors=W,this.timelines=he,this.parentContext=null,this.currentAnimateTimings=null,this.previousNode=Cr,this.subContextCount=0,this.options={},this.currentQueryIndex=0,this.currentQueryTotal=0,this.currentStaggerTime=0,this.currentTimeline=Le||new $s(this._driver,s,0),he.push(this.currentTimeline)}get params(){return this.options.params}updateOptions(l,s){if(!l)return;const u=l;let y=this.options;null!=u.duration&&(y.duration=Zt(u.duration)),null!=u.delay&&(y.delay=Zt(u.delay));const P=u.params;if(P){let W=y.params;W||(W=this.options.params={}),Object.keys(P).forEach(he=>{(!s||!W.hasOwnProperty(he))&&(W[he]=_r(P[he],W,this.errors))})}}_copyOptions(){const l={};if(this.options){const s=this.options.params;if(s){const u=l.params={};Object.keys(s).forEach(y=>{u[y]=s[y]})}}return l}createSubContext(l=null,s,u){const y=s||this.element,P=new hl(this._driver,y,this.subInstructions,this._enterClassName,this._leaveClassName,this.errors,this.timelines,this.currentTimeline.fork(y,u||0));return P.previousNode=this.previousNode,P.currentAnimateTimings=this.currentAnimateTimings,P.options=this._copyOptions(),P.updateOptions(l),P.currentQueryIndex=this.currentQueryIndex,P.currentQueryTotal=this.currentQueryTotal,P.parentContext=this,this.subContextCount++,P}transformIntoNewTimeline(l){return this.previousNode=Cr,this.currentTimeline=this.currentTimeline.fork(this.element,l),this.timelines.push(this.currentTimeline),this.currentTimeline}appendInstructionToTimeline(l,s,u){const y={duration:null!=s?s:l.duration,delay:this.currentTimeline.currentTime+(null!=u?u:0)+l.delay,easing:""},P=new Yl(this._driver,l.element,l.keyframes,l.preStyleProps,l.postStyleProps,y,l.stretchStartingKeyframe);return this.timelines.push(P),y}incrementTime(l){this.currentTimeline.forwardTime(this.currentTimeline.duration+l)}delayNextStep(l){l>0&&this.currentTimeline.delayNextStep(l)}invokeQuery(l,s,u,y,P,W){let he=[];if(y&&he.push(this.element),l.length>0){l=(l=l.replace(ua,"."+this._enterClassName)).replace(Wl,"."+this._leaveClassName);let qe=this._driver.query(this.element,l,1!=u);0!==u&&(qe=u<0?qe.slice(qe.length+u,qe.length):qe.slice(0,u)),he.push(...qe)}return!P&&0==he.length&&W.push(function S(g){return new o.vHH(3014,!1)}()),he}}class $s{constructor(l,s,u,y){this._driver=l,this.element=s,this.startTime=u,this._elementTimelineStylesLookup=y,this.duration=0,this._previousKeyframe=new Map,this._currentKeyframe=new Map,this._keyframes=new Map,this._styleSummary=new Map,this._localTimelineStyles=new Map,this._pendingStyles=new Map,this._backFill=new Map,this._currentEmptyStepKeyframe=null,this._elementTimelineStylesLookup||(this._elementTimelineStylesLookup=new Map),this._globalTimelineStyles=this._elementTimelineStylesLookup.get(s),this._globalTimelineStyles||(this._globalTimelineStyles=this._localTimelineStyles,this._elementTimelineStylesLookup.set(s,this._localTimelineStyles)),this._loadKeyframe()}containsAnimation(){switch(this._keyframes.size){case 0:return!1;case 1:return this.hasCurrentStyleProperties();default:return!0}}hasCurrentStyleProperties(){return this._currentKeyframe.size>0}get currentTime(){return this.startTime+this.duration}delayNextStep(l){const s=1===this._keyframes.size&&this._pendingStyles.size;this.duration||s?(this.forwardTime(this.currentTime+l),s&&this.snapshotCurrentStyles()):this.startTime+=l}fork(l,s){return this.applyStylesToKeyframe(),new $s(this._driver,l,s||this.currentTime,this._elementTimelineStylesLookup)}_loadKeyframe(){this._currentKeyframe&&(this._previousKeyframe=this._currentKeyframe),this._currentKeyframe=this._keyframes.get(this.duration),this._currentKeyframe||(this._currentKeyframe=new Map,this._keyframes.set(this.duration,this._currentKeyframe))}forwardFrame(){this.duration+=1,this._loadKeyframe()}forwardTime(l){this.applyStylesToKeyframe(),this.duration=l,this._loadKeyframe()}_updateStyle(l,s){this._localTimelineStyles.set(l,s),this._globalTimelineStyles.set(l,s),this._styleSummary.set(l,{time:this.currentTime,value:s})}allowOnlyTimelineStyles(){return this._currentEmptyStepKeyframe!==this._currentKeyframe}applyEmptyStep(l){l&&this._previousKeyframe.set("easing",l);for(let[s,u]of this._globalTimelineStyles)this._backFill.set(s,u||ot.l3),this._currentKeyframe.set(s,ot.l3);this._currentEmptyStepKeyframe=this._currentKeyframe}setStyles(l,s,u,y){s&&this._previousKeyframe.set("easing",s);const P=y&&y.params||{},W=function Kl(g,l){const s=new Map;let u;return g.forEach(y=>{if("*"===y){u=u||l.keys();for(let P of u)s.set(P,ot.l3)}else ii(y,s)}),s}(l,this._globalTimelineStyles);for(let[Le,qe]of W){const vt=_r(qe,P,u);var he;this._pendingStyles.set(Le,vt),this._localTimelineStyles.has(Le)||this._backFill.set(Le,null!==(he=this._globalTimelineStyles.get(Le))&&void 0!==he?he:ot.l3),this._updateStyle(Le,vt)}}applyStylesToKeyframe(){0!=this._pendingStyles.size&&(this._pendingStyles.forEach((l,s)=>{this._currentKeyframe.set(s,l)}),this._pendingStyles.clear(),this._localTimelineStyles.forEach((l,s)=>{this._currentKeyframe.has(s)||this._currentKeyframe.set(s,l)}))}snapshotCurrentStyles(){for(let[l,s]of this._localTimelineStyles)this._pendingStyles.set(l,s),this._updateStyle(l,s)}getFinalKeyframe(){return this._keyframes.get(this.duration)}get properties(){const l=[];for(let s in this._currentKeyframe)l.push(s);return l}mergeTimelineCollectedStyles(l){l._styleSummary.forEach((s,u)=>{const y=this._styleSummary.get(u);(!y||s.time>y.time)&&this._updateStyle(u,s.value)})}buildKeyframes(){this.applyStylesToKeyframe();const l=new Set,s=new Set,u=1===this._keyframes.size&&0===this.duration;let y=[];this._keyframes.forEach((he,Le)=>{const qe=ii(he,new Map,this._backFill);qe.forEach((vt,Dt)=>{vt===ot.k1?l.add(Dt):vt===ot.l3&&s.add(Dt)}),u||qe.set("offset",Le/this.duration),y.push(qe)});const P=l.size?Qo(l.values()):[],W=s.size?Qo(s.values()):[];if(u){const he=y[0],Le=new Map(he);he.set("offset",0),Le.set("offset",1),y=[he,Le]}return Vo(this.element,y,P,W,this.duration,this.startTime,this.easing,!1)}}class Yl extends $s{constructor(l,s,u,y,P,W,he=!1){super(l,s,W.delay),this.keyframes=u,this.preStyleProps=y,this.postStyleProps=P,this._stretchStartingKeyframe=he,this.timings={duration:W.duration,delay:W.delay,easing:W.easing}}containsAnimation(){return this.keyframes.length>1}buildKeyframes(){let l=this.keyframes,{delay:s,duration:u,easing:y}=this.timings;if(this._stretchStartingKeyframe&&s){const P=[],W=u+s,he=s/W,Le=ii(l[0]);Le.set("offset",0),P.push(Le);const qe=ii(l[0]);qe.set("offset",fl(he)),P.push(qe);const vt=l.length-1;for(let Dt=1;Dt<=vt;Dt++){let Bt=ii(l[Dt]);const qt=Bt.get("offset");Bt.set("offset",fl((s+qt*u)/W)),P.push(Bt)}u=W,s=0,y="",l=P}return Vo(this.element,l,this.preStyleProps,this.postStyleProps,u,s,y,!0)}}function fl(g,l=3){const s=Math.pow(10,l-1);return Math.round(g*s)/s}class Dr{}const Zl=new Set(["width","height","minWidth","minHeight","maxWidth","maxHeight","left","top","bottom","right","fontSize","outlineWidth","outlineOffset","paddingTop","paddingLeft","paddingBottom","paddingRight","marginTop","marginLeft","marginBottom","marginRight","borderRadius","borderWidth","borderTopWidth","borderLeftWidth","borderRightWidth","borderBottomWidth","textIndent","perspective"]);class Xn extends Dr{normalizePropertyName(l,s){return Yr(l)}normalizeStyleValue(l,s,u,y){let P="";const W=u.toString().trim();if(Zl.has(s)&&0!==u&&"0"!==u)if("number"==typeof u)P="px";else{const he=u.match(/^[+-]?[\d\.]+([a-z]*)$/);he&&0==he[1].length&&y.push(function gi(g,l){return new o.vHH(3005,!1)}())}return W+P}}function ps(g,l,s,u,y,P,W,he,Le,qe,vt,Dt,Bt){return{type:0,element:g,triggerName:l,isRemovalTransition:y,fromState:s,fromStyles:P,toState:u,toStyles:W,timelines:he,queriedElements:Le,preStyleProps:qe,postStyleProps:vt,totalTime:Dt,errors:Bt}}const Er={};class pl{constructor(l,s,u){this._triggerName=l,this.ast=s,this._stateStyles=u}match(l,s,u,y){return function p(g,l,s,u,y){return g.some(P=>P(l,s,u,y))}(this.ast.matchers,l,s,u,y)}buildStyles(l,s,u){let y=this._stateStyles.get("*");return void 0!==l&&(y=this._stateStyles.get(null==l?void 0:l.toString())||y),y?y.buildStyles(s,u):new Map}build(l,s,u,y,P,W,he,Le,qe,vt){var Dt;const Bt=[],qt=this.ast.options&&this.ast.options.params||Er,Xt=this.buildStyles(u,he&&he.params||Er,Bt),wn=Le&&Le.params||Er,kn=this.buildStyles(y,wn,Bt),fi=new Set,Yi=new Map,bi=new Map,vs="void"===y,Jr={params:d(wn,qt),delay:null===(Dt=this.ast.options)||void 0===Dt?void 0:Dt.delay},ro=vt?[]:Oa(l,s,this.ast.animation,P,W,Xt,kn,Jr,qe,Bt);let Oo=0;if(ro.forEach(_o=>{Oo=Math.max(_o.duration+_o.delay,Oo)}),Bt.length)return ps(s,this._triggerName,u,y,vs,Xt,kn,[],[],Yi,bi,Oo,Bt);ro.forEach(_o=>{const qs=_o.element,bs=Zn(Yi,qs,new Set);_o.preStyleProps.forEach(Xs=>bs.add(Xs));const pa=Zn(bi,qs,new Set);_o.postStyleProps.forEach(Xs=>pa.add(Xs)),qs!==s&&fi.add(qs)});const fa=Qo(fi.values());return ps(s,this._triggerName,u,y,vs,Xt,kn,ro,fa,Yi,bi,Oo)}}function d(g,l){const s=pn(l);for(const u in g)g.hasOwnProperty(u)&&null!=g[u]&&(s[u]=g[u]);return s}class _{constructor(l,s,u){this.styles=l,this.defaultParams=s,this.normalizer=u}buildStyles(l,s){const u=new Map,y=pn(this.defaultParams);return Object.keys(l).forEach(P=>{const W=l[P];null!==W&&(y[P]=W)}),this.styles.styles.forEach(P=>{"string"!=typeof P&&P.forEach((W,he)=>{W&&(W=_r(W,y,s));const Le=this.normalizer.normalizePropertyName(he,s);W=this.normalizer.normalizeStyleValue(he,Le,W,s),u.set(he,W)})}),u}}class N{constructor(l,s,u){this.name=l,this.ast=s,this._normalizer=u,this.transitionFactories=[],this.states=new Map,s.states.forEach(y=>{this.states.set(y.name,new _(y.style,y.options&&y.options.params||{},u))}),Ae(this.states,"true","1"),Ae(this.states,"false","0"),s.transitions.forEach(y=>{this.transitionFactories.push(new pl(l,y,this.states))}),this.fallbackTransition=function V(g,l,s){return new pl(g,{type:1,animation:{type:2,steps:[],options:null},matchers:[(W,he)=>!0],options:null,queryCount:0,depCount:0},l)}(l,this.states)}get containsQueries(){return this.ast.queryCount>0}matchTransition(l,s,u,y){return this.transitionFactories.find(W=>W.match(l,s,u,y))||null}matchStyles(l,s,u){return this.fallbackTransition.buildStyles(l,s,u)}}function Ae(g,l,s){g.has(l)?g.has(s)||g.set(s,g.get(l)):g.has(s)&&g.set(l,g.get(s))}const We=new mo;class ft{constructor(l,s,u){this.bodyNode=l,this._driver=s,this._normalizer=u,this._animations=new Map,this._playersById=new Map,this.players=[]}register(l,s){const u=[],P=js(this._driver,s,u,[]);if(u.length)throw function di(g){return new o.vHH(3503,!1)}();this._animations.set(l,P)}_buildPlayer(l,s,u){const y=l.element,P=ia(0,this._normalizer,0,l.keyframes,s,u);return this._driver.animate(y,P,l.duration,l.delay,l.easing,[],!0)}create(l,s,u={}){const y=[],P=this._animations.get(l);let W;const he=new Map;if(P?(W=Oa(this._driver,s,P,L,le,new Map,new Map,u,We,y),W.forEach(vt=>{const Dt=Zn(he,vt.element,new Map);vt.postStyleProps.forEach(Bt=>Dt.set(Bt,null))})):(y.push(function Sn(){return new o.vHH(3300,!1)}()),W=[]),y.length)throw function eo(g){return new o.vHH(3504,!1)}();he.forEach((vt,Dt)=>{vt.forEach((Bt,qt)=>{vt.set(qt,this._driver.computeStyle(Dt,qt,ot.l3))})});const qe=Vn(W.map(vt=>{const Dt=he.get(vt.element);return this._buildPlayer(vt,new Map,Dt)}));return this._playersById.set(l,qe),qe.onDestroy(()=>this.destroy(l)),this.players.push(qe),qe}destroy(l){const s=this._getPlayer(l);s.destroy(),this._playersById.delete(l);const u=this.players.indexOf(s);u>=0&&this.players.splice(u,1)}_getPlayer(l){const s=this._playersById.get(l);if(!s)throw function to(g){return new o.vHH(3301,!1)}();return s}listen(l,s,u,y){const P=Rs(s,"","","");return ds(this._getPlayer(l),u,P,y),()=>{}}command(l,s,u,y){if("register"==u)return void this.register(l,y[0]);if("create"==u)return void this.create(l,s,y[0]||{});const P=this._getPlayer(l);switch(u){case"play":P.play();break;case"pause":P.pause();break;case"reset":P.reset();break;case"restart":P.restart();break;case"finish":P.finish();break;case"init":P.init();break;case"setPosition":P.setPosition(parseFloat(y[0]));break;case"destroy":this.destroy(l)}}}const Ot="ng-animate-queued",Cn="ng-animate-disabled",go=[],So={namespaceId:"",setForRemoval:!1,setForMove:!1,hasAnimation:!1,removedBeforeQueried:!1},ms={namespaceId:"",setForMove:!1,setForRemoval:!1,hasAnimation:!1,removedBeforeQueried:!0},Wi="__ng_removed";class Mi{get params(){return this.options.params}constructor(l,s=""){this.namespaceId=s;const u=l&&l.hasOwnProperty("value");if(this.value=function Xl(g){return null!=g?g:null}(u?l.value:l),u){const P=pn(l);delete P.value,this.options=P}else this.options={};this.options.params||(this.options.params={})}absorbOptions(l){const s=l.params;if(s){const u=this.options.params;Object.keys(s).forEach(y=>{null==u[y]&&(u[y]=s[y])})}}}const er="void",Gs=new Mi(er);class ha{constructor(l,s,u){this.id=l,this.hostElement=s,this._engine=u,this.players=[],this._triggers=new Map,this._queue=[],this._elementListeners=new Map,this._hostClassName="ng-tns-"+l,wi(s,this._hostClassName)}listen(l,s,u,y){if(!this._triggers.has(s))throw function _i(g,l){return new o.vHH(3302,!1)}();if(null==u||0==u.length)throw function Lo(g){return new o.vHH(3303,!1)}();if(!function Ia(g){return"start"==g||"done"==g}(u))throw function No(g,l){return new o.vHH(3400,!1)}();const P=Zn(this._elementListeners,l,[]),W={name:s,phase:u,callback:y};P.push(W);const he=Zn(this._engine.statesByElement,l,new Map);return he.has(s)||(wi(l,je),wi(l,je+"-"+s),he.set(s,Gs)),()=>{this._engine.afterFlush(()=>{const Le=P.indexOf(W);Le>=0&&P.splice(Le,1),this._triggers.has(s)||he.delete(s)})}}register(l,s){return!this._triggers.has(l)&&(this._triggers.set(l,s),!0)}_getTrigger(l){const s=this._triggers.get(l);if(!s)throw function Ma(g){return new o.vHH(3401,!1)}();return s}trigger(l,s,u,y=!0){const P=this._getTrigger(s),W=new gs(this.id,s,l);let he=this._engine.statesByElement.get(l);he||(wi(l,je),wi(l,je+"-"+s),this._engine.statesByElement.set(l,he=new Map));let Le=he.get(s);const qe=new Mi(u,this.id);if(!(u&&u.hasOwnProperty("value"))&&Le&&qe.absorbOptions(Le.options),he.set(s,qe),Le||(Le=Gs),qe.value!==er&&Le.value===qe.value){if(!function Qc(g,l){const s=Object.keys(g),u=Object.keys(l);if(s.length!=u.length)return!1;for(let y=0;y{ki(l,wn),oi(l,kn)})}return}const Bt=Zn(this._engine.playersByElement,l,[]);Bt.forEach(Xt=>{Xt.namespaceId==this.id&&Xt.triggerName==s&&Xt.queued&&Xt.destroy()});let qt=P.matchTransition(Le.value,qe.value,l,qe.params),$t=!1;if(!qt){if(!y)return;qt=P.fallbackTransition,$t=!0}return this._engine.totalQueuedPlayers++,this._queue.push({element:l,triggerName:s,transition:qt,fromState:Le,toState:qe,player:W,isFallbackTransition:$t}),$t||(wi(l,Ot),W.onStart(()=>{tr(l,Ot)})),W.onDone(()=>{let Xt=this.players.indexOf(W);Xt>=0&&this.players.splice(Xt,1);const wn=this._engine.playersByElement.get(l);if(wn){let kn=wn.indexOf(W);kn>=0&&wn.splice(kn,1)}}),this.players.push(W),Bt.push(W),W}deregister(l){this._triggers.delete(l),this._engine.statesByElement.forEach(s=>s.delete(l)),this._elementListeners.forEach((s,u)=>{this._elementListeners.set(u,s.filter(y=>y.name!=l))})}clearElementCache(l){this._engine.statesByElement.delete(l),this._elementListeners.delete(l);const s=this._engine.playersByElement.get(l);s&&(s.forEach(u=>u.destroy()),this._engine.playersByElement.delete(l))}_signalRemovalForInnerTriggers(l,s){const u=this._engine.driver.query(l,Qe,!0);u.forEach(y=>{if(y[Wi])return;const P=this._engine.fetchNamespacesByElement(y);P.size?P.forEach(W=>W.triggerLeaveAnimation(y,s,!1,!0)):this.clearElementCache(y)}),this._engine.afterFlushAnimationsDone(()=>u.forEach(y=>this.clearElementCache(y)))}triggerLeaveAnimation(l,s,u,y){const P=this._engine.statesByElement.get(l),W=new Map;if(P){const he=[];if(P.forEach((Le,qe)=>{if(W.set(qe,Le.value),this._triggers.has(qe)){const vt=this.trigger(l,qe,er,y);vt&&he.push(vt)}}),he.length)return this._engine.markElementAsRemoved(this.id,l,!0,s,W),u&&Vn(he).onDone(()=>this._engine.processLeaveNode(l)),!0}return!1}prepareLeaveAnimationListeners(l){const s=this._elementListeners.get(l),u=this._engine.statesByElement.get(l);if(s&&u){const y=new Set;s.forEach(P=>{const W=P.name;if(y.has(W))return;y.add(W);const Le=this._triggers.get(W).fallbackTransition,qe=u.get(W)||Gs,vt=new Mi(er),Dt=new gs(this.id,W,l);this._engine.totalQueuedPlayers++,this._queue.push({element:l,triggerName:W,transition:Le,fromState:qe,toState:vt,player:Dt,isFallbackTransition:!0})})}}removeNode(l,s){const u=this._engine;if(l.childElementCount&&this._signalRemovalForInnerTriggers(l,s),this.triggerLeaveAnimation(l,s,!0))return;let y=!1;if(u.totalAnimations){const P=u.players.length?u.playersByQueriedElement.get(l):[];if(P&&P.length)y=!0;else{let W=l;for(;W=W.parentNode;)if(u.statesByElement.get(W)){y=!0;break}}}if(this.prepareLeaveAnimationListeners(l),y)u.markElementAsRemoved(this.id,l,!1,s);else{const P=l[Wi];(!P||P===So)&&(u.afterFlush(()=>this.clearElementCache(l)),u.destroyInnerAnimations(l),u._onRemovalComplete(l,s))}}insertNode(l,s){wi(l,this._hostClassName)}drainQueuedTransitions(l){const s=[];return this._queue.forEach(u=>{const y=u.player;if(y.destroyed)return;const P=u.element,W=this._elementListeners.get(P);W&&W.forEach(he=>{if(he.name==u.triggerName){const Le=Rs(P,u.triggerName,u.fromState.value,u.toState.value);Le._data=l,ds(u.player,he.phase,Le,he.callback)}}),y.markedForDestroy?this._engine.afterFlush(()=>{y.destroy()}):s.push(u)}),this._queue=[],s.sort((u,y)=>{const P=u.transition.ast.depCount,W=y.transition.ast.depCount;return 0==P||0==W?P-W:this._engine.driver.containsElement(u.element,y.element)?1:-1})}destroy(l){this.players.forEach(s=>s.destroy()),this._signalRemovalForInnerTriggers(this.hostElement,l)}elementContainsData(l){let s=!1;return this._elementListeners.has(l)&&(s=!0),s=!!this._queue.find(u=>u.element===l)||s,s}}class ql{_onRemovalComplete(l,s){this.onRemovalComplete(l,s)}constructor(l,s,u){this.bodyNode=l,this.driver=s,this._normalizer=u,this.players=[],this.newHostElements=new Map,this.playersByElement=new Map,this.playersByQueriedElement=new Map,this.statesByElement=new Map,this.disabledNodes=new Set,this.totalAnimations=0,this.totalQueuedPlayers=0,this._namespaceLookup={},this._namespaceList=[],this._flushFns=[],this._whenQuietFns=[],this.namespacesByHostElement=new Map,this.collectedEnterElements=[],this.collectedLeaveElements=[],this.onRemovalComplete=(y,P)=>{}}get queuedPlayers(){const l=[];return this._namespaceList.forEach(s=>{s.players.forEach(u=>{u.queued&&l.push(u)})}),l}createNamespace(l,s){const u=new ha(l,s,this);return this.bodyNode&&this.driver.containsElement(this.bodyNode,s)?this._balanceNamespaceList(u,s):(this.newHostElements.set(s,u),this.collectEnterElement(s)),this._namespaceLookup[l]=u}_balanceNamespaceList(l,s){const u=this._namespaceList,y=this.namespacesByHostElement;if(u.length-1>=0){let W=!1,he=this.driver.getParentElement(s);for(;he;){const Le=y.get(he);if(Le){const qe=u.indexOf(Le);u.splice(qe+1,0,l),W=!0;break}he=this.driver.getParentElement(he)}W||u.unshift(l)}else u.push(l);return y.set(s,l),l}register(l,s){let u=this._namespaceLookup[l];return u||(u=this.createNamespace(l,s)),u}registerTrigger(l,s,u){let y=this._namespaceLookup[l];y&&y.register(s,u)&&this.totalAnimations++}destroy(l,s){if(!l)return;const u=this._fetchNamespace(l);this.afterFlush(()=>{this.namespacesByHostElement.delete(u.hostElement),delete this._namespaceLookup[l];const y=this._namespaceList.indexOf(u);y>=0&&this._namespaceList.splice(y,1)}),this.afterFlushAnimationsDone(()=>u.destroy(s))}_fetchNamespace(l){return this._namespaceLookup[l]}fetchNamespacesByElement(l){const s=new Set,u=this.statesByElement.get(l);if(u)for(let y of u.values())if(y.namespaceId){const P=this._fetchNamespace(y.namespaceId);P&&s.add(P)}return s}trigger(l,s,u,y){if(Qr(s)){const P=this._fetchNamespace(l);if(P)return P.trigger(s,u,y),!0}return!1}insertNode(l,s,u,y){if(!Qr(s))return;const P=s[Wi];if(P&&P.setForRemoval){P.setForRemoval=!1,P.setForMove=!0;const W=this.collectedLeaveElements.indexOf(s);W>=0&&this.collectedLeaveElements.splice(W,1)}if(l){const W=this._fetchNamespace(l);W&&W.insertNode(s,u)}y&&this.collectEnterElement(s)}collectEnterElement(l){this.collectedEnterElements.push(l)}markElementAsDisabled(l,s){s?this.disabledNodes.has(l)||(this.disabledNodes.add(l),wi(l,Cn)):this.disabledNodes.has(l)&&(this.disabledNodes.delete(l),tr(l,Cn))}removeNode(l,s,u,y){if(Qr(s)){const P=l?this._fetchNamespace(l):null;if(P?P.removeNode(s,y):this.markElementAsRemoved(l,s,!1,y),u){const W=this.namespacesByHostElement.get(s);W&&W.id!==l&&W.removeNode(s,y)}}else this._onRemovalComplete(s,y)}markElementAsRemoved(l,s,u,y,P){this.collectedLeaveElements.push(s),s[Wi]={namespaceId:l,setForRemoval:y,hasAnimation:u,removedBeforeQueried:!1,previousTriggersValues:P}}listen(l,s,u,y,P){return Qr(s)?this._fetchNamespace(l).listen(s,u,y,P):()=>{}}_buildInstruction(l,s,u,y,P){return l.transition.build(this.driver,l.element,l.fromState.value,l.toState.value,u,y,l.fromState.options,l.toState.options,s,P)}destroyInnerAnimations(l){let s=this.driver.query(l,Qe,!0);s.forEach(u=>this.destroyActiveAnimationsForElement(u)),0!=this.playersByQueriedElement.size&&(s=this.driver.query(l,nn,!0),s.forEach(u=>this.finishActiveQueriedAnimationOnElement(u)))}destroyActiveAnimationsForElement(l){const s=this.playersByElement.get(l);s&&s.forEach(u=>{u.queued?u.markedForDestroy=!0:u.destroy()})}finishActiveQueriedAnimationOnElement(l){const s=this.playersByQueriedElement.get(l);s&&s.forEach(u=>u.finish())}whenRenderingDone(){return new Promise(l=>{if(this.players.length)return Vn(this.players).onDone(()=>l());l()})}processLeaveNode(l){var s;const u=l[Wi];if(u&&u.setForRemoval){if(l[Wi]=So,u.namespaceId){this.destroyInnerAnimations(l);const y=this._fetchNamespace(u.namespaceId);y&&y.clearElementCache(l)}this._onRemovalComplete(l,u.setForRemoval)}null!==(s=l.classList)&&void 0!==s&&s.contains(Cn)&&this.markElementAsDisabled(l,!1),this.driver.query(l,".ng-animate-disabled",!0).forEach(y=>{this.markElementAsDisabled(y,!1)})}flush(l=-1){let s=[];if(this.newHostElements.size&&(this.newHostElements.forEach((u,y)=>this._balanceNamespaceList(u,y)),this.newHostElements.clear()),this.totalAnimations&&this.collectedEnterElements.length)for(let u=0;uu()),this._flushFns=[],this._whenQuietFns.length){const u=this._whenQuietFns;this._whenQuietFns=[],s.length?Vn(s).onDone(()=>{u.forEach(y=>y())}):u.forEach(y=>y())}}reportError(l){throw function sl(g){return new o.vHH(3402,!1)}()}_flushAnimations(l,s){const u=new mo,y=[],P=new Map,W=[],he=new Map,Le=new Map,qe=new Map,vt=new Set;this.disabledNodes.forEach(Rt=>{vt.add(Rt);const Nt=this.driver.query(Rt,".ng-animate-queued",!0);for(let Gt=0;Gt{const Gt=L+Xt++;$t.set(Nt,Gt),Rt.forEach(cn=>wi(cn,Gt))});const wn=[],kn=new Set,fi=new Set;for(let Rt=0;Rtkn.add(cn)):fi.add(Nt))}const Yi=new Map,bi=Jl(Bt,Array.from(kn));bi.forEach((Rt,Nt)=>{const Gt=le+Xt++;Yi.set(Nt,Gt),Rt.forEach(cn=>wi(cn,Gt))}),l.push(()=>{qt.forEach((Rt,Nt)=>{const Gt=$t.get(Nt);Rt.forEach(cn=>tr(cn,Gt))}),bi.forEach((Rt,Nt)=>{const Gt=Yi.get(Nt);Rt.forEach(cn=>tr(cn,Gt))}),wn.forEach(Rt=>{this.processLeaveNode(Rt)})});const vs=[],Jr=[];for(let Rt=this._namespaceList.length-1;Rt>=0;Rt--)this._namespaceList[Rt].drainQueuedTransitions(s).forEach(Gt=>{const cn=Gt.player,zn=Gt.element;if(vs.push(cn),this.collectedEnterElements.length){const yi=zn[Wi];if(yi&&yi.setForMove){if(yi.previousTriggersValues&&yi.previousTriggersValues.has(Gt.triggerName)){const ts=yi.previousTriggersValues.get(Gt.triggerName),Ki=this.statesByElement.get(Gt.element);if(Ki&&Ki.has(Gt.triggerName)){const ys=Ki.get(Gt.triggerName);ys.value=ts,Ki.set(Gt.triggerName,ys)}}return void cn.destroy()}}const Ar=!Dt||!this.driver.containsElement(Dt,zn),Fi=Yi.get(zn),es=$t.get(zn),Un=this._buildInstruction(Gt,u,es,Fi,Ar);if(Un.errors&&Un.errors.length)return void Jr.push(Un);if(Ar)return cn.onStart(()=>ki(zn,Un.fromStyles)),cn.onDestroy(()=>oi(zn,Un.toStyles)),void y.push(cn);if(Gt.isFallbackTransition)return cn.onStart(()=>ki(zn,Un.fromStyles)),cn.onDestroy(()=>oi(zn,Un.toStyles)),void y.push(cn);const Cl=[];Un.timelines.forEach(yi=>{yi.stretchStartingKeyframe=!0,this.disabledNodes.has(yi.element)||Cl.push(yi)}),Un.timelines=Cl,u.append(zn,Un.timelines),W.push({instruction:Un,player:cn,element:zn}),Un.queriedElements.forEach(yi=>Zn(he,yi,[]).push(cn)),Un.preStyleProps.forEach((yi,ts)=>{if(yi.size){let Ki=Le.get(ts);Ki||Le.set(ts,Ki=new Set),yi.forEach((ys,Na)=>Ki.add(Na))}}),Un.postStyleProps.forEach((yi,ts)=>{let Ki=qe.get(ts);Ki||qe.set(ts,Ki=new Set),yi.forEach((ys,Na)=>Ki.add(Na))})});if(Jr.length){const Rt=[];Jr.forEach(Nt=>{Rt.push(function ni(g,l){return new o.vHH(3505,!1)}())}),vs.forEach(Nt=>Nt.destroy()),this.reportError(Rt)}const ro=new Map,Oo=new Map;W.forEach(Rt=>{const Nt=Rt.element;u.has(Nt)&&(Oo.set(Nt,Nt),this._beforeAnimationBuild(Rt.player.namespaceId,Rt.instruction,ro))}),y.forEach(Rt=>{const Nt=Rt.element;this._getPreviousPlayers(Nt,!1,Rt.namespaceId,Rt.triggerName,null).forEach(cn=>{Zn(ro,Nt,[]).push(cn),cn.destroy()})});const fa=wn.filter(Rt=>Jc(Rt,Le,qe)),_o=new Map;Ql(_o,this.driver,fi,qe,ot.l3).forEach(Rt=>{Jc(Rt,Le,qe)&&fa.push(Rt)});const bs=new Map;qt.forEach((Rt,Nt)=>{Ql(bs,this.driver,new Set(Rt),Le,ot.k1)}),fa.forEach(Rt=>{var Nt,Gt;const cn=_o.get(Rt),zn=bs.get(Rt);_o.set(Rt,new Map([...Array.from(null!==(Nt=null==cn?void 0:cn.entries())&&void 0!==Nt?Nt:[]),...Array.from(null!==(Gt=null==zn?void 0:zn.entries())&&void 0!==Gt?Gt:[])]))});const pa=[],Xs=[],xl={};W.forEach(Rt=>{const{element:Nt,player:Gt,instruction:cn}=Rt;if(u.has(Nt)){if(vt.has(Nt))return Gt.onDestroy(()=>oi(Nt,cn.toStyles)),Gt.disabled=!0,Gt.overrideTotalTime(cn.totalTime),void y.push(Gt);let zn=xl;if(Oo.size>1){let Fi=Nt;const es=[];for(;Fi=Fi.parentNode;){const Un=Oo.get(Fi);if(Un){zn=Un;break}es.push(Fi)}es.forEach(Un=>Oo.set(Un,zn))}const Ar=this._buildAnimation(Gt.namespaceId,cn,ro,P,bs,_o);if(Gt.setRealPlayer(Ar),zn===xl)pa.push(Gt);else{const Fi=this.playersByElement.get(zn);Fi&&Fi.length&&(Gt.parentPlayer=Vn(Fi)),y.push(Gt)}}else ki(Nt,cn.fromStyles),Gt.onDestroy(()=>oi(Nt,cn.toStyles)),Xs.push(Gt),vt.has(Nt)&&y.push(Gt)}),Xs.forEach(Rt=>{const Nt=P.get(Rt.element);if(Nt&&Nt.length){const Gt=Vn(Nt);Rt.setRealPlayer(Gt)}}),y.forEach(Rt=>{Rt.parentPlayer?Rt.syncPlayerEvents(Rt.parentPlayer):Rt.destroy()});for(let Rt=0;Rt!Ar.destroyed);zn.length?Xc(this,Nt,zn):this.processLeaveNode(Nt)}return wn.length=0,pa.forEach(Rt=>{this.players.push(Rt),Rt.onDone(()=>{Rt.destroy();const Nt=this.players.indexOf(Rt);this.players.splice(Nt,1)}),Rt.play()}),pa}elementContainsData(l,s){let u=!1;const y=s[Wi];return y&&y.setForRemoval&&(u=!0),this.playersByElement.has(s)&&(u=!0),this.playersByQueriedElement.has(s)&&(u=!0),this.statesByElement.has(s)&&(u=!0),this._fetchNamespace(l).elementContainsData(s)||u}afterFlush(l){this._flushFns.push(l)}afterFlushAnimationsDone(l){this._whenQuietFns.push(l)}_getPreviousPlayers(l,s,u,y,P){let W=[];if(s){const he=this.playersByQueriedElement.get(l);he&&(W=he)}else{const he=this.playersByElement.get(l);if(he){const Le=!P||P==er;he.forEach(qe=>{qe.queued||!Le&&qe.triggerName!=y||W.push(qe)})}}return(u||y)&&(W=W.filter(he=>!(u&&u!=he.namespaceId||y&&y!=he.triggerName))),W}_beforeAnimationBuild(l,s,u){const P=s.element,W=s.isRemovalTransition?void 0:l,he=s.isRemovalTransition?void 0:s.triggerName;for(const Le of s.timelines){const qe=Le.element,vt=qe!==P,Dt=Zn(u,qe,[]);this._getPreviousPlayers(qe,vt,W,he,s.toState).forEach(qt=>{const $t=qt.getRealPlayer();$t.beforeDestroy&&$t.beforeDestroy(),qt.destroy(),Dt.push(qt)})}ki(P,s.fromStyles)}_buildAnimation(l,s,u,y,P,W){const he=s.triggerName,Le=s.element,qe=[],vt=new Set,Dt=new Set,Bt=s.timelines.map($t=>{const Xt=$t.element;vt.add(Xt);const wn=Xt[Wi];if(wn&&wn.removedBeforeQueried)return new ot.ZN($t.duration,$t.delay);const kn=Xt!==Le,fi=function Qu(g){const l=[];return gl(g,l),l}((u.get(Xt)||go).map(ro=>ro.getRealPlayer())).filter(ro=>!!ro.element&&ro.element===Xt),Yi=P.get(Xt),bi=W.get(Xt),vs=ia(0,this._normalizer,0,$t.keyframes,Yi,bi),Jr=this._buildPlayer($t,vs,fi);if($t.subTimeline&&y&&Dt.add(Xt),kn){const ro=new gs(l,he,Xt);ro.setRealPlayer(Jr),qe.push(ro)}return Jr});qe.forEach($t=>{Zn(this.playersByQueriedElement,$t.element,[]).push($t),$t.onDone(()=>function qc(g,l,s){let u=g.get(l);if(u){if(u.length){const y=u.indexOf(s);u.splice(y,1)}0==u.length&&g.delete(l)}return u}(this.playersByQueriedElement,$t.element,$t))}),vt.forEach($t=>wi($t,wt));const qt=Vn(Bt);return qt.onDestroy(()=>{vt.forEach($t=>tr($t,wt)),oi(Le,s.toStyles)}),Dt.forEach($t=>{Zn(y,$t,[]).push(qt)}),qt}_buildPlayer(l,s,u){return s.length>0?this.driver.animate(l.element,s,l.duration,l.delay,l.easing,u):new ot.ZN(l.duration,l.delay)}}class gs{constructor(l,s,u){this.namespaceId=l,this.triggerName=s,this.element=u,this._player=new ot.ZN,this._containsRealPlayer=!1,this._queuedCallbacks=new Map,this.destroyed=!1,this.markedForDestroy=!1,this.disabled=!1,this.queued=!0,this.totalTime=0}setRealPlayer(l){this._containsRealPlayer||(this._player=l,this._queuedCallbacks.forEach((s,u)=>{s.forEach(y=>ds(l,u,void 0,y))}),this._queuedCallbacks.clear(),this._containsRealPlayer=!0,this.overrideTotalTime(l.totalTime),this.queued=!1)}getRealPlayer(){return this._player}overrideTotalTime(l){this.totalTime=l}syncPlayerEvents(l){const s=this._player;s.triggerCallback&&l.onStart(()=>s.triggerCallback("start")),l.onDone(()=>this.finish()),l.onDestroy(()=>this.destroy())}_queueEvent(l,s){Zn(this._queuedCallbacks,l,[]).push(s)}onDone(l){this.queued&&this._queueEvent("done",l),this._player.onDone(l)}onStart(l){this.queued&&this._queueEvent("start",l),this._player.onStart(l)}onDestroy(l){this.queued&&this._queueEvent("destroy",l),this._player.onDestroy(l)}init(){this._player.init()}hasStarted(){return!this.queued&&this._player.hasStarted()}play(){!this.queued&&this._player.play()}pause(){!this.queued&&this._player.pause()}restart(){!this.queued&&this._player.restart()}finish(){this._player.finish()}destroy(){this.destroyed=!0,this._player.destroy()}reset(){!this.queued&&this._player.reset()}setPosition(l){this.queued||this._player.setPosition(l)}getPosition(){return this.queued?0:this._player.getPosition()}triggerCallback(l){const s=this._player;s.triggerCallback&&s.triggerCallback(l)}}function Qr(g){return g&&1===g.nodeType}function ml(g,l){const s=g.style.display;return g.style.display=null!=l?l:"none",s}function Ql(g,l,s,u,y){const P=[];s.forEach(Le=>P.push(ml(Le)));const W=[];u.forEach((Le,qe)=>{const vt=new Map;Le.forEach(Dt=>{const Bt=l.computeStyle(qe,Dt,y);vt.set(Dt,Bt),(!Bt||0==Bt.length)&&(qe[Wi]=ms,W.push(qe))}),g.set(qe,vt)});let he=0;return s.forEach(Le=>ml(Le,P[he++])),W}function Jl(g,l){const s=new Map;if(g.forEach(he=>s.set(he,[])),0==l.length)return s;const y=new Set(l),P=new Map;function W(he){if(!he)return 1;let Le=P.get(he);if(Le)return Le;const qe=he.parentNode;return Le=s.has(qe)?qe:y.has(qe)?1:W(qe),P.set(he,Le),Le}return l.forEach(he=>{const Le=W(he);1!==Le&&s.get(Le).push(he)}),s}function wi(g,l){var s;null===(s=g.classList)||void 0===s||s.add(l)}function tr(g,l){var s;null===(s=g.classList)||void 0===s||s.remove(l)}function Xc(g,l,s){Vn(s).onDone(()=>g.processLeaveNode(l))}function gl(g,l){for(let s=0;sy.add(P)):l.set(g,u),s.delete(g),!0}class ka{constructor(l,s,u){this.bodyNode=l,this._driver=s,this._normalizer=u,this._triggerCache={},this.onRemovalComplete=(y,P)=>{},this._transitionEngine=new ql(l,s,u),this._timelineEngine=new ft(l,s,u),this._transitionEngine.onRemovalComplete=(y,P)=>this.onRemovalComplete(y,P)}registerTrigger(l,s,u,y,P){const W=l+"-"+y;let he=this._triggerCache[W];if(!he){const Le=[],vt=js(this._driver,P,Le,[]);if(Le.length)throw function dt(g,l){return new o.vHH(3404,!1)}();he=function w(g,l,s){return new N(g,l,s)}(y,vt,this._normalizer),this._triggerCache[W]=he}this._transitionEngine.registerTrigger(s,y,he)}register(l,s){this._transitionEngine.register(l,s)}destroy(l,s){this._transitionEngine.destroy(l,s)}onInsert(l,s,u,y){this._transitionEngine.insertNode(l,s,u,y)}onRemove(l,s,u,y){this._transitionEngine.removeNode(l,s,y||!1,u)}disableAnimations(l,s){this._transitionEngine.markElementAsDisabled(l,s)}process(l,s,u,y){if("@"==u.charAt(0)){const[P,W]=Hr(u);this._timelineEngine.command(P,s,W,y)}else this._transitionEngine.trigger(l,s,u,y)}listen(l,s,u,y,P){if("@"==u.charAt(0)){const[W,he]=Hr(u);return this._timelineEngine.listen(W,s,he,P)}return this._transitionEngine.listen(l,s,u,y,P)}flush(l=-1){this._transitionEngine.flush(l)}get players(){return this._transitionEngine.players.concat(this._timelineEngine.players)}whenRenderingDone(){return this._transitionEngine.whenRenderingDone()}}let td=(()=>{class g{constructor(s,u,y){this._element=s,this._startStyles=u,this._endStyles=y,this._state=0;let P=g.initialStylesByElement.get(s);P||g.initialStylesByElement.set(s,P=new Map),this._initialStyles=P}start(){this._state<1&&(this._startStyles&&oi(this._element,this._startStyles,this._initialStyles),this._state=1)}finish(){this.start(),this._state<2&&(oi(this._element,this._initialStyles),this._endStyles&&(oi(this._element,this._endStyles),this._endStyles=null),this._state=1)}destroy(){this.finish(),this._state<3&&(g.initialStylesByElement.delete(this._element),this._startStyles&&(ki(this._element,this._startStyles),this._endStyles=null),this._endStyles&&(ki(this._element,this._endStyles),this._endStyles=null),oi(this._element,this._initialStyles),this._state=3)}}return g.initialStylesByElement=new WeakMap,g})();function Ws(g){let l=null;return g.forEach((s,u)=>{(function ec(g){return"display"===g||"position"===g})(u)&&(l=l||new Map,l.set(u,s))}),l}class tc{constructor(l,s,u,y){this.element=l,this.keyframes=s,this.options=u,this._specialStyles=y,this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._initialized=!1,this._finished=!1,this._started=!1,this._destroyed=!1,this._originalOnDoneFns=[],this._originalOnStartFns=[],this.time=0,this.parentPlayer=null,this.currentSnapshot=new Map,this._duration=u.duration,this._delay=u.delay||0,this.time=this._duration+this._delay}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(l=>l()),this._onDoneFns=[])}init(){this._buildPlayer(),this._preparePlayerBeforeStart()}_buildPlayer(){if(this._initialized)return;this._initialized=!0;const l=this.keyframes;this.domPlayer=this._triggerWebAnimation(this.element,l,this.options),this._finalKeyframe=l.length?l[l.length-1]:new Map,this.domPlayer.addEventListener("finish",()=>this._onFinish())}_preparePlayerBeforeStart(){this._delay?this._resetDomPlayerState():this.domPlayer.pause()}_convertKeyframesToObject(l){const s=[];return l.forEach(u=>{s.push(Object.fromEntries(u))}),s}_triggerWebAnimation(l,s,u){return l.animate(this._convertKeyframesToObject(s),u)}onStart(l){this._originalOnStartFns.push(l),this._onStartFns.push(l)}onDone(l){this._originalOnDoneFns.push(l),this._onDoneFns.push(l)}onDestroy(l){this._onDestroyFns.push(l)}play(){this._buildPlayer(),this.hasStarted()||(this._onStartFns.forEach(l=>l()),this._onStartFns=[],this._started=!0,this._specialStyles&&this._specialStyles.start()),this.domPlayer.play()}pause(){this.init(),this.domPlayer.pause()}finish(){this.init(),this._specialStyles&&this._specialStyles.finish(),this._onFinish(),this.domPlayer.finish()}reset(){this._resetDomPlayerState(),this._destroyed=!1,this._finished=!1,this._started=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}_resetDomPlayerState(){this.domPlayer&&this.domPlayer.cancel()}restart(){this.reset(),this.play()}hasStarted(){return this._started}destroy(){this._destroyed||(this._destroyed=!0,this._resetDomPlayerState(),this._onFinish(),this._specialStyles&&this._specialStyles.destroy(),this._onDestroyFns.forEach(l=>l()),this._onDestroyFns=[])}setPosition(l){void 0===this.domPlayer&&this.init(),this.domPlayer.currentTime=l*this.time}getPosition(){return this.domPlayer.currentTime/this.time}get totalTime(){return this._delay+this._duration}beforeDestroy(){const l=new Map;this.hasStarted()&&this._finalKeyframe.forEach((u,y)=>{"offset"!==y&&l.set(y,this._finished?u:la(this.element,y))}),this.currentSnapshot=l}triggerCallback(l){const s="start"===l?this._onStartFns:this._onDoneFns;s.forEach(u=>u()),s.length=0}}class nc{validateStyleProperty(l){return!0}validateAnimatableStyleProperty(l){return!0}matchesElement(l,s){return!1}containsElement(l,s){return Ls(l,s)}getParentElement(l){return $r(l)}query(l,s,u){return ui(l,s,u)}computeStyle(l,s,u){return window.getComputedStyle(l)[s]}animate(l,s,u,y,P,W=[]){const Le={duration:u,delay:y,fill:0==y?"both":"forwards"};P&&(Le.easing=P);const qe=new Map,vt=W.filter(qt=>qt instanceof tc);(function Ns(g,l){return 0===g||0===l})(u,y)&&vt.forEach(qt=>{qt.currentSnapshot.forEach(($t,Xt)=>qe.set(Xt,$t))});let Dt=function fo(g){return g.length?g[0]instanceof Map?g:g.map(l=>qn(l)):[]}(s).map(qt=>ii(qt));Dt=function $l(g,l,s){if(s.size&&l.length){let u=l[0],y=[];if(s.forEach((P,W)=>{u.has(W)||y.push(W),u.set(W,P)}),y.length)for(let P=1;PW.set(he,la(g,he)))}}return l}(l,Dt,qe);const Bt=function ed(g,l){let s=null,u=null;return Array.isArray(l)&&l.length?(s=Ws(l[0]),l.length>1&&(u=Ws(l[l.length-1]))):l instanceof Map&&(s=Ws(l)),s||u?new td(g,s,u):null}(l,Dt);return new tc(l,Dt,Le,Bt)}}let Ju=(()=>{class g extends ot._j{constructor(s,u){super(),this._nextAnimationId=0,this._renderer=s.createRenderer(u.body,{id:"0",encapsulation:o.ifc.None,styles:[],data:{animation:[]}})}build(s){const u=this._nextAnimationId.toString();this._nextAnimationId++;const y=Array.isArray(s)?(0,ot.vP)(s):s;return oc(this._renderer,null,u,"register",[y]),new ic(u,this._renderer)}}return g.\u0275fac=function(s){return new(s||g)(o.LFG(o.FYo),o.LFG(ie.K0))},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})();class ic extends ot.LC{constructor(l,s){super(),this._id=l,this._renderer=s}create(l,s){return new eh(this._id,l,s||{},this._renderer)}}class eh{constructor(l,s,u,y){this.id=l,this.element=s,this._renderer=y,this.parentPlayer=null,this._started=!1,this.totalTime=0,this._command("create",u)}_listen(l,s){return this._renderer.listen(this.element,`@@${this.id}:${l}`,s)}_command(l,...s){return oc(this._renderer,this.element,this.id,l,s)}onDone(l){this._listen("done",l)}onStart(l){this._listen("start",l)}onDestroy(l){this._listen("destroy",l)}init(){this._command("init")}hasStarted(){return this._started}play(){this._command("play"),this._started=!0}pause(){this._command("pause")}restart(){this._command("restart")}finish(){this._command("finish")}destroy(){this._command("destroy")}reset(){this._command("reset"),this._started=!1}setPosition(l){this._command("setPosition",l)}getPosition(){var l,s;return null!==(l=null===(s=this._renderer.engine.players[+this.id])||void 0===s?void 0:s.getPosition())&&void 0!==l?l:0}}function oc(g,l,s,u,y){return g.setProperty(l,`@@${s}:${u}`,y)}const Ra="@.disabled";let th=(()=>{class g{constructor(s,u,y){this.delegate=s,this.engine=u,this._zone=y,this._currentId=0,this._microtaskId=1,this._animationCallbacksBuffer=[],this._rendererCache=new Map,this._cdRecurDepth=0,this.promise=Promise.resolve(0),u.onRemovalComplete=(P,W)=>{const he=null==W?void 0:W.parentNode(P);he&&W.removeChild(he,P)}}createRenderer(s,u){const P=this.delegate.createRenderer(s,u);if(!(s&&u&&u.data&&u.data.animation)){let vt=this._rendererCache.get(P);return vt||(vt=new nd("",P,this.engine,()=>this._rendererCache.delete(P)),this._rendererCache.set(P,vt)),vt}const W=u.id,he=u.id+"-"+this._currentId;this._currentId++,this.engine.register(he,s);const Le=vt=>{Array.isArray(vt)?vt.forEach(Le):this.engine.registerTrigger(W,he,s,vt.name,vt)};return u.data.animation.forEach(Le),new _l(this,he,P,this.engine)}begin(){this._cdRecurDepth++,this.delegate.begin&&this.delegate.begin()}_scheduleCountTask(){this.promise.then(()=>{this._microtaskId++})}scheduleListenerCallback(s,u,y){s>=0&&su(y)):(0==this._animationCallbacksBuffer.length&&Promise.resolve(null).then(()=>{this._zone.run(()=>{this._animationCallbacksBuffer.forEach(P=>{const[W,he]=P;W(he)}),this._animationCallbacksBuffer=[]})}),this._animationCallbacksBuffer.push([u,y]))}end(){this._cdRecurDepth--,0==this._cdRecurDepth&&this._zone.runOutsideAngular(()=>{this._scheduleCountTask(),this.engine.flush(this._microtaskId)}),this.delegate.end&&this.delegate.end()}whenRenderingDone(){return this.engine.whenRenderingDone()}}return g.\u0275fac=function(s){return new(s||g)(o.LFG(o.FYo),o.LFG(ka),o.LFG(o.R0b))},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})();class nd{constructor(l,s,u,y){this.namespaceId=l,this.delegate=s,this.engine=u,this._onDestroy=y,this.destroyNode=this.delegate.destroyNode?P=>s.destroyNode(P):null}get data(){return this.delegate.data}destroy(){var l;this.engine.destroy(this.namespaceId,this.delegate),this.delegate.destroy(),null===(l=this._onDestroy)||void 0===l||l.call(this)}createElement(l,s){return this.delegate.createElement(l,s)}createComment(l){return this.delegate.createComment(l)}createText(l){return this.delegate.createText(l)}appendChild(l,s){this.delegate.appendChild(l,s),this.engine.onInsert(this.namespaceId,s,l,!1)}insertBefore(l,s,u,y=!0){this.delegate.insertBefore(l,s,u),this.engine.onInsert(this.namespaceId,s,l,y)}removeChild(l,s,u){this.engine.onRemove(this.namespaceId,s,this.delegate,u)}selectRootElement(l,s){return this.delegate.selectRootElement(l,s)}parentNode(l){return this.delegate.parentNode(l)}nextSibling(l){return this.delegate.nextSibling(l)}setAttribute(l,s,u,y){this.delegate.setAttribute(l,s,u,y)}removeAttribute(l,s,u){this.delegate.removeAttribute(l,s,u)}addClass(l,s){this.delegate.addClass(l,s)}removeClass(l,s){this.delegate.removeClass(l,s)}setStyle(l,s,u,y){this.delegate.setStyle(l,s,u,y)}removeStyle(l,s,u){this.delegate.removeStyle(l,s,u)}setProperty(l,s,u){"@"==s.charAt(0)&&s==Ra?this.disableAnimations(l,!!u):this.delegate.setProperty(l,s,u)}setValue(l,s){this.delegate.setValue(l,s)}listen(l,s,u){return this.delegate.listen(l,s,u)}disableAnimations(l,s){this.engine.disableAnimations(l,s)}}class _l extends nd{constructor(l,s,u,y,P){super(s,u,y,P),this.factory=l,this.namespaceId=s}setProperty(l,s,u){"@"==s.charAt(0)?"."==s.charAt(1)&&s==Ra?this.disableAnimations(l,u=void 0===u||!!u):this.engine.process(this.namespaceId,l,s.slice(1),u):this.delegate.setProperty(l,s,u)}listen(l,s,u){if("@"==s.charAt(0)){const y=function nh(g){switch(g){case"body":return document.body;case"document":return document;case"window":return window;default:return g}}(l);let P=s.slice(1),W="";return"@"!=P.charAt(0)&&([P,W]=function ih(g){const l=g.indexOf(".");return[g.substring(0,l),g.slice(l+1)]}(P)),this.engine.listen(this.namespaceId,y,P,W,he=>{this.factory.scheduleListenerCallback(he._data||-1,u,he)})}return this.delegate.listen(l,s,u)}}const rc=[{provide:ot._j,useClass:Ju},{provide:Dr,useFactory:function rh(){return new Xn}},{provide:ka,useClass:(()=>{class g extends ka{constructor(s,u,y,P){super(s.body,u,y)}ngOnDestroy(){this.flush()}}return g.\u0275fac=function(s){return new(s||g)(o.LFG(ie.K0),o.LFG(hs),o.LFG(Dr),o.LFG(o.z2F))},g.\u0275prov=o.Yz7({token:g,factory:g.\u0275fac}),g})()},{provide:o.FYo,useFactory:function sh(g,l,s){return new th(g,l,s)},deps:[c.se,ka,o.R0b]}],Fa=[{provide:hs,useFactory:()=>new nc},{provide:o.QbO,useValue:"BrowserAnimations"},...rc],La=[{provide:hs,useClass:On},{provide:o.QbO,useValue:"NoopAnimations"},...rc];let sc=(()=>{class g{static withConfig(s){return{ngModule:g,providers:s.disableAnimations?La:Fa}}}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({providers:Fa,imports:[c.b2]}),g})();var rd=b(5412),sd=b(4385);const ad=["*",[["mat-toolbar-row"]]],ac=["*","mat-toolbar-row"],vl=(0,Pe.pj)(class{constructor(g){this._elementRef=g}});let ld=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275dir=o.lG2({type:g,selectors:[["mat-toolbar-row"]],hostAttrs:[1,"mat-toolbar-row"],exportAs:["matToolbarRow"]}),g})(),cd=(()=>{class g extends vl{constructor(s,u,y){super(s),this._platform=u,this._document=y}ngAfterViewInit(){this._platform.isBrowser&&(this._checkToolbarMixedModes(),this._toolbarRows.changes.subscribe(()=>this._checkToolbarMixedModes()))}_checkToolbarMixedModes(){}}return g.\u0275fac=function(s){return new(s||g)(o.Y36(o.SBq),o.Y36(A.t4),o.Y36(ie.K0))},g.\u0275cmp=o.Xpm({type:g,selectors:[["mat-toolbar"]],contentQueries:function(s,u,y){if(1&s&&o.Suo(y,ld,5),2&s){let P;o.iGM(P=o.CRH())&&(u._toolbarRows=P)}},hostAttrs:[1,"mat-toolbar"],hostVars:4,hostBindings:function(s,u){2&s&&o.ekj("mat-toolbar-multiple-rows",u._toolbarRows.length>0)("mat-toolbar-single-row",0===u._toolbarRows.length)},inputs:{color:"color"},exportAs:["matToolbar"],features:[o.qOj],ngContentSelectors:ac,decls:2,vars:0,template:function(s,u){1&s&&(o.F$t(ad),o.Hsn(0),o.Hsn(1,1))},styles:[".cdk-high-contrast-active .mat-toolbar{outline:solid 1px}.mat-toolbar .mat-mdc-button-base.mat-unthemed{--mdc-text-button-label-text-color: inherit;--mdc-outlined-button-label-text-color: inherit}.mat-toolbar-row,.mat-toolbar-single-row{display:flex;box-sizing:border-box;padding:0 16px;width:100%;flex-direction:row;align-items:center;white-space:nowrap}.mat-toolbar-multiple-rows{display:flex;box-sizing:border-box;flex-direction:column;width:100%}"],encapsulation:2,changeDetection:0}),g})(),lc=(()=>{class g{}return g.\u0275fac=function(s){return new(s||g)},g.\u0275mod=o.oAB({type:g}),g.\u0275inj=o.cJS({imports:[Pe.BQ,Pe.BQ]}),g})();class Ys{}function dd(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",9),o.NdJ("click",function(){const P=o.CHM(s).$implicit,W=o.oxw(2);return o.KtG(W.changeLang(P))}),o._uU(1),o.qZA()}if(2&g){const s=l.$implicit;o.xp6(1),o.Oqu(s.name)}}function oo(g,l){if(1&g){const s=o.EpF();o.TgZ(0,"button",9),o.NdJ("click",function(){o.CHM(s);const y=o.oxw(2);return o.KtG(y.admin())}),o.TgZ(1,"i",24),o._uU(2,"dashboard"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4,"Dashboard"),o.qZA()()}}function bl(g,l){1&g&&(o.TgZ(0,"button",29)(1,"i",24),o._uU(2,"file_download"),o.qZA(),o.TgZ(3,"uds-translate"),o._uU(4,"Downloads"),o.qZA()())}function cc(g,l){if(1&g&&(o.TgZ(0,"button",14),o._uU(1),o.qZA()),2&g){o.oxw();const s=o.MAs(8),u=o.oxw();o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.Oqu(u.api.user.user)}}function yl(g,l){if(1&g&&(o.TgZ(0,"button",26),o._uU(1),o.TgZ(2,"i",24),o._uU(3,"arrow_drop_down"),o.qZA()()),2&g){o.oxw();const s=o.MAs(8),u=o.oxw();o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.hij("",u.api.user.user," ")}}function Ri(g,l){if(1&g){const s=o.EpF();o.ynx(0),o.TgZ(1,"form",1),o._UZ(2,"input",2)(3,"input",3),o.qZA(),o.TgZ(4,"mat-menu",null,4),o.YNc(6,dd,2,1,"button",5),o.qZA(),o.TgZ(7,"mat-menu",null,6),o.YNc(9,oo,5,0,"button",7),o.YNc(10,bl,5,0,"button",8),o.TgZ(11,"button",9),o.NdJ("click",function(){o.CHM(s);const y=o.oxw();return o.KtG(y.logout())}),o.TgZ(12,"i",10),o._uU(13,"exit_to_app"),o.qZA(),o.TgZ(14,"uds-translate"),o._uU(15,"Logout"),o.qZA()()(),o.TgZ(16,"mat-menu",11,12),o.YNc(18,cc,2,2,"button",13),o.TgZ(19,"button",14),o._uU(20),o.qZA(),o.TgZ(21,"button",15)(22,"uds-translate"),o._uU(23,"UDS Client"),o.qZA()(),o.TgZ(24,"button",16)(25,"uds-translate"),o._uU(26,"About"),o.qZA()()(),o.TgZ(27,"mat-toolbar",17)(28,"button",18)(29,"div",19),o._UZ(30,"img",20),o._uU(31),o.qZA()(),o._UZ(32,"span",21),o.TgZ(33,"div",22)(34,"button",23)(35,"i",24),o._uU(36,"file_download"),o.qZA(),o.TgZ(37,"uds-translate"),o._uU(38,"UDS Client"),o.qZA()(),o.TgZ(39,"button",25)(40,"i",24),o._uU(41,"info"),o.qZA(),o.TgZ(42,"uds-translate"),o._uU(43,"About"),o.qZA()(),o.TgZ(44,"button",26),o._uU(45),o.TgZ(46,"i",24),o._uU(47,"arrow_drop_down"),o.qZA()(),o.YNc(48,yl,4,2,"button",27),o.qZA(),o.TgZ(49,"div",28)(50,"button",26)(51,"i",24),o._uU(52,"menu"),o.qZA()()()(),o.BQk()}if(2&g){const s=o.MAs(5),u=o.MAs(17),y=o.oxw();o.xp6(1),o.s9C("action",y.api.config.urls.changeLang,o.LSH),o.xp6(1),o.s9C("name",y.api.csrfField),o.s9C("value",y.api.csrfToken),o.xp6(1),o.s9C("value",y.lang.id),o.xp6(3),o.Q6J("ngForOf",y.langs),o.xp6(3),o.Q6J("ngIf",y.api.user.isStaff),o.xp6(1),o.Q6J("ngIf",y.api.user.isStaff),o.xp6(8),o.Q6J("ngIf",y.api.user.isLogged),o.xp6(1),o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.hij("",y.lang.name," "),o.xp6(10),o.Q6J("src",y.api.staticURL("modern/img/udsicon.png"),o.LSH),o.xp6(1),o.hij(" ","UDS"===y.api.config.site_logo_name?"":y.api.config.site_logo_name," "),o.xp6(13),o.Q6J("matMenuTriggerFor",s),o.xp6(1),o.hij("",y.lang.name," "),o.xp6(3),o.Q6J("ngIf",y.api.user.isLogged),o.xp6(2),o.Q6J("matMenuTriggerFor",u)}}Ys.\u0275fac=function(l){return new(l||Ys)},Ys.\u0275mod=o.oAB({type:Ys}),Ys.\u0275inj=o.cJS({providers:[{provide:Kn.o2,useValue:{floatLabel:"always"}}],imports:[li.u5,lc,Ce.ot,or,ei,De,rd.Is,Kn.lN,ar.c,sd.LD,Ss]});class wr{constructor(l){this.api=l,this.lang={},this.langs=[],this.style="";const s=l.config.language;this.langs=[];for(const u of l.config.available_languages)u.id===s?this.lang=u:this.langs.push(u)}ngOnInit(){}changeLang(l){this.lang=l;const s=document.getElementById("id_language");s&&s.setAttribute("value",l.id);const u=document.getElementById("form_language");u&&u.submit()}admin(){this.api.gotoAdmin()}logout(){this.api.logout()}}wr.\u0275fac=function(l){return new(l||wr)(o.Y36(H.n))},wr.\u0275cmp=o.Xpm({type:wr,selectors:[["uds-navbar"]],decls:1,vars:1,consts:[[4,"ngIf"],["id","form_language","method","post",3,"action"],["type","hidden",3,"name","value"],["id","id_language","type","hidden","name","language",3,"value"],["appMenu","matMenu"],["mat-menu-item","",3,"click",4,"ngFor","ngForOf"],["userMenu","matMenu"],["mat-menu-item","",3,"click",4,"ngIf"],["mat-menu-item","","routerLink","/downloads",4,"ngIf"],["mat-menu-item","",3,"click"],[1,"material-icons","highlight"],["x-position","before"],["shrink","matMenu"],["mat-menu-item","",3,"matMenuTriggerFor",4,"ngIf"],["mat-menu-item","",3,"matMenuTriggerFor"],["mat-menu-item","","routerLink","/client-download"],["mat-menu-item","","routerLink","/about"],["color","primary",1,"uds-nav"],["mat-button","","routerLink","/"],[1,"logo"],["alt","Universal Desktop Services",3,"src"],[1,"fill-remaining-space"],[1,"expanded"],["mat-button","","routerLink","/client-download"],[1,"material-icons"],["mat-button","","routerLink","/about"],["mat-button","",3,"matMenuTriggerFor"],["mat-button","",3,"matMenuTriggerFor",4,"ngIf"],[1,"shrinked"],["mat-menu-item","","routerLink","/downloads"]],template:function(l,s){1&l&&o.YNc(0,Ri,53,16,"ng-container",0),2&l&&o.Q6J("ngIf",""===s.api.config.urls.launch)},dependencies:[ie.sg,ie.O5,Q.rH,li._Y,li.JL,li.F,cd,Ce.lW,Ti,ln,Bi,Z.P],styles:[".uds-nav[_ngcontent-%COMP%]{position:fixed;top:0;z-index:1000}.fill-remaining-space[_ngcontent-%COMP%]{flex:1 1 auto}.material-icons[_ngcontent-%COMP%]{margin-right:.3rem}.logo[_ngcontent-%COMP%] > img[_ngcontent-%COMP%]{display:block;width:2rem}@media only screen and (max-width: 744px){.expanded[_ngcontent-%COMP%]{display:none;visibility:hidden}.shrinked[_ngcontent-%COMP%]{visibility:visible}}@media only screen and (min-width: 745px){.expanded[_ngcontent-%COMP%]{visibility:visible}.shrinked[_ngcontent-%COMP%]{display:none;visibility:hidden}}"]});class Ks{constructor(l){this.api=l}ngOnInit(){}}Ks.\u0275fac=function(l){return new(l||Ks)(o.Y36(H.n))},Ks.\u0275cmp=o.Xpm({type:Ks,selectors:[["uds-footer"]],decls:3,vars:2,consts:[[3,"href"]],template:function(l,s){1&l&&(o.TgZ(0,"div")(1,"a",0),o._uU(2),o.qZA()()),2&l&&(o.xp6(1),o.Q6J("href",s.api.config.site_copyright_link,o.LSH),o.xp6(1),o.Oqu(s.api.config.site_copyright_info))}});class Zs{constructor(l){this.api=l,this.title="UDS"}get blackTheme(){return"true"===this.api.getFromStorage("blackTheme")}set blackTheme(l){this.api.putOnStorage("blackTheme",l.toString())}handleKeyboardEvent(l){l.altKey&&l.ctrlKey&&"b"===l.key&&(this.blackTheme=!this.blackTheme,this.api.switchTheme(this.blackTheme))}ngOnInit(){this.api.switchTheme(this.blackTheme),cookieconsent.initialise({palette:{popup:{background:"#343c66",text:"#cfcfe8"},button:{background:"#f71559"}},content:{message:django.gettext("We use cookies to track usage and preferences"),dismiss:django.gettext("I Understand"),link:django.gettext("Learn more")}})}}Zs.\u0275fac=function(l){return new(l||Zs)(o.Y36(H.n))},Zs.\u0275cmp=o.Xpm({type:Zs,selectors:[["uds-root"]],hostBindings:function(l,s){1&l&&o.NdJ("keydown",function(y){return s.handleKeyboardEvent(y)},!1,o.evT)},decls:6,vars:0,consts:[[1,"page"],[1,"content"],[1,"footer"]],template:function(l,s){1&l&&(o._UZ(0,"uds-navbar"),o.TgZ(1,"div",0)(2,"div",1),o._UZ(3,"router-outlet"),o.qZA(),o.TgZ(4,"div",2),o._UZ(5,"uds-footer"),o.qZA()())},dependencies:[Q.lC,wr,Ks],styles:[".page[_ngcontent-%COMP%]{display:flex;flex-direction:column;height:100%}.footer[_ngcontent-%COMP%]{flex-shrink:0;margin:1em;height:1em;display:flex;flex-direction:row;justify-content:flex-end}.content[_ngcontent-%COMP%]{flex:1 0 auto;width:80%;margin:64px auto 0}@media only screen and (max-width: 744px){.content[_ngcontent-%COMP%]{width:100%}}"]});var ud=b(4461);class _s{}_s.\u0275fac=function(l){return new(l||_s)},_s.\u0275mod=o.oAB({type:_s,bootstrap:[Zs]}),_s.\u0275inj=o.cJS({providers:[H.n,ud.h],imports:[c.b2,M.xu,re.JF,ji,sc,Ys]}),b(2340).N.production&&(0,o.G48)(),c.q6().bootstrapModule(_s).catch(g=>console.log(g))},1135:(ze,me,b)=>{b.d(me,{X:()=>o});var c=b(7579);class o extends c.x{constructor(re){super(),this._value=re}get value(){return this.getValue()}_subscribe(re){const Q=super._subscribe(re);return!Q.closed&&re.next(this._value),Q}getValue(){const{hasError:re,thrownError:Q,_value:H}=this;if(re)throw Q;return this._throwIfClosed(),H}next(re){super.next(this._value=re)}}},9751:(ze,me,b)=>{b.d(me,{y:()=>Se});var c=b(930),o=b(727),M=b(8822),re=b(9635),Q=b(2416),H=b(576),fe=b(2806);let Se=(()=>{class se{constructor(we){we&&(this._subscribe=we)}lift(we){const Ie=new se;return Ie.source=this,Ie.operator=we,Ie}subscribe(we,Ie,Be){const Ve=function ye(se){return se&&se instanceof c.Lv||function Z(se){return se&&(0,H.m)(se.next)&&(0,H.m)(se.error)&&(0,H.m)(se.complete)}(se)&&(0,o.Nn)(se)}(we)?we:new c.Hp(we,Ie,Be);return(0,fe.x)(()=>{const{operator:Je,source:pt}=this;Ve.add(Je?Je.call(Ve,pt):pt?this._subscribe(Ve):this._trySubscribe(Ve))}),Ve}_trySubscribe(we){try{return this._subscribe(we)}catch(Ie){we.error(Ie)}}forEach(we,Ie){return new(Ie=ie(Ie))((Be,Ve)=>{const Je=new c.Hp({next:pt=>{try{we(pt)}catch(_t){Ve(_t),Je.unsubscribe()}},error:Ve,complete:Be});this.subscribe(Je)})}_subscribe(we){var Ie;return null===(Ie=this.source)||void 0===Ie?void 0:Ie.subscribe(we)}[M.L](){return this}pipe(...we){return(0,re.U)(we)(this)}toPromise(we){return new(we=ie(we))((Ie,Be)=>{let Ve;this.subscribe(Je=>Ve=Je,Je=>Be(Je),()=>Ie(Ve))})}}return se.create=Ee=>new se(Ee),se})();function ie(se){var Ee;return null!==(Ee=null!=se?se:Q.v.Promise)&&void 0!==Ee?Ee:Promise}},7579:(ze,me,b)=>{b.d(me,{x:()=>fe});var c=b(9751),o=b(727);const re=(0,b(3888).d)(ie=>function(){ie(this),this.name="ObjectUnsubscribedError",this.message="object unsubscribed"});var Q=b(8737),H=b(2806);let fe=(()=>{class ie extends c.y{constructor(){super(),this.closed=!1,this.currentObservers=null,this.observers=[],this.isStopped=!1,this.hasError=!1,this.thrownError=null}lift(ye){const se=new Se(this,this);return se.operator=ye,se}_throwIfClosed(){if(this.closed)throw new re}next(ye){(0,H.x)(()=>{if(this._throwIfClosed(),!this.isStopped){this.currentObservers||(this.currentObservers=Array.from(this.observers));for(const se of this.currentObservers)se.next(ye)}})}error(ye){(0,H.x)(()=>{if(this._throwIfClosed(),!this.isStopped){this.hasError=this.isStopped=!0,this.thrownError=ye;const{observers:se}=this;for(;se.length;)se.shift().error(ye)}})}complete(){(0,H.x)(()=>{if(this._throwIfClosed(),!this.isStopped){this.isStopped=!0;const{observers:ye}=this;for(;ye.length;)ye.shift().complete()}})}unsubscribe(){this.isStopped=this.closed=!0,this.observers=this.currentObservers=null}get observed(){var ye;return(null===(ye=this.observers)||void 0===ye?void 0:ye.length)>0}_trySubscribe(ye){return this._throwIfClosed(),super._trySubscribe(ye)}_subscribe(ye){return this._throwIfClosed(),this._checkFinalizedStatuses(ye),this._innerSubscribe(ye)}_innerSubscribe(ye){const{hasError:se,isStopped:Ee,observers:we}=this;return se||Ee?o.Lc:(this.currentObservers=null,we.push(ye),new o.w0(()=>{this.currentObservers=null,(0,Q.P)(we,ye)}))}_checkFinalizedStatuses(ye){const{hasError:se,thrownError:Ee,isStopped:we}=this;se?ye.error(Ee):we&&ye.complete()}asObservable(){const ye=new c.y;return ye.source=this,ye}}return ie.create=(Z,ye)=>new Se(Z,ye),ie})();class Se extends fe{constructor(Z,ye){super(),this.destination=Z,this.source=ye}next(Z){var ye,se;null===(se=null===(ye=this.destination)||void 0===ye?void 0:ye.next)||void 0===se||se.call(ye,Z)}error(Z){var ye,se;null===(se=null===(ye=this.destination)||void 0===ye?void 0:ye.error)||void 0===se||se.call(ye,Z)}complete(){var Z,ye;null===(ye=null===(Z=this.destination)||void 0===Z?void 0:Z.complete)||void 0===ye||ye.call(Z)}_subscribe(Z){var ye,se;return null!==(se=null===(ye=this.source)||void 0===ye?void 0:ye.subscribe(Z))&&void 0!==se?se:o.Lc}}},930:(ze,me,b)=>{b.d(me,{Hp:()=>Be,Lv:()=>se});var c=b(576),o=b(727),M=b(2416),re=b(7849),Q=b(5032);const H=ie("C",void 0,void 0);function ie(ne,q,j){return{kind:ne,value:q,error:j}}var Z=b(3410),ye=b(2806);class se extends o.w0{constructor(q){super(),this.isStopped=!1,q?(this.destination=q,(0,o.Nn)(q)&&q.add(this)):this.destination=_t}static create(q,j,$){return new Be(q,j,$)}next(q){this.isStopped?pt(function Se(ne){return ie("N",ne,void 0)}(q),this):this._next(q)}error(q){this.isStopped?pt(function fe(ne){return ie("E",void 0,ne)}(q),this):(this.isStopped=!0,this._error(q))}complete(){this.isStopped?pt(H,this):(this.isStopped=!0,this._complete())}unsubscribe(){this.closed||(this.isStopped=!0,super.unsubscribe(),this.destination=null)}_next(q){this.destination.next(q)}_error(q){try{this.destination.error(q)}finally{this.unsubscribe()}}_complete(){try{this.destination.complete()}finally{this.unsubscribe()}}}const Ee=Function.prototype.bind;function we(ne,q){return Ee.call(ne,q)}class Ie{constructor(q){this.partialObserver=q}next(q){const{partialObserver:j}=this;if(j.next)try{j.next(q)}catch($){Ve($)}}error(q){const{partialObserver:j}=this;if(j.error)try{j.error(q)}catch($){Ve($)}else Ve(q)}complete(){const{partialObserver:q}=this;if(q.complete)try{q.complete()}catch(j){Ve(j)}}}class Be extends se{constructor(q,j,$){let ee;if(super(),(0,c.m)(q)||!q)ee={next:null!=q?q:void 0,error:null!=j?j:void 0,complete:null!=$?$:void 0};else{let ae;this&&M.v.useDeprecatedNextContext?(ae=Object.create(q),ae.unsubscribe=()=>this.unsubscribe(),ee={next:q.next&&we(q.next,ae),error:q.error&&we(q.error,ae),complete:q.complete&&we(q.complete,ae)}):ee=q}this.destination=new Ie(ee)}}function Ve(ne){M.v.useDeprecatedSynchronousErrorHandling?(0,ye.O)(ne):(0,re.h)(ne)}function pt(ne,q){const{onStoppedNotification:j}=M.v;j&&Z.z.setTimeout(()=>j(ne,q))}const _t={closed:!0,next:Q.Z,error:function Je(ne){throw ne},complete:Q.Z}},727:(ze,me,b)=>{b.d(me,{Lc:()=>H,w0:()=>Q,Nn:()=>fe});var c=b(576);const M=(0,b(3888).d)(ie=>function(ye){ie(this),this.message=ye?`${ye.length} errors occurred during unsubscription:\n${ye.map((se,Ee)=>`${Ee+1}) ${se.toString()}`).join("\n ")}`:"",this.name="UnsubscriptionError",this.errors=ye});var re=b(8737);class Q{constructor(Z){this.initialTeardown=Z,this.closed=!1,this._parentage=null,this._finalizers=null}unsubscribe(){let Z;if(!this.closed){this.closed=!0;const{_parentage:ye}=this;if(ye)if(this._parentage=null,Array.isArray(ye))for(const we of ye)we.remove(this);else ye.remove(this);const{initialTeardown:se}=this;if((0,c.m)(se))try{se()}catch(we){Z=we instanceof M?we.errors:[we]}const{_finalizers:Ee}=this;if(Ee){this._finalizers=null;for(const we of Ee)try{Se(we)}catch(Ie){Z=null!=Z?Z:[],Ie instanceof M?Z=[...Z,...Ie.errors]:Z.push(Ie)}}if(Z)throw new M(Z)}}add(Z){var ye;if(Z&&Z!==this)if(this.closed)Se(Z);else{if(Z instanceof Q){if(Z.closed||Z._hasParent(this))return;Z._addParent(this)}(this._finalizers=null!==(ye=this._finalizers)&&void 0!==ye?ye:[]).push(Z)}}_hasParent(Z){const{_parentage:ye}=this;return ye===Z||Array.isArray(ye)&&ye.includes(Z)}_addParent(Z){const{_parentage:ye}=this;this._parentage=Array.isArray(ye)?(ye.push(Z),ye):ye?[ye,Z]:Z}_removeParent(Z){const{_parentage:ye}=this;ye===Z?this._parentage=null:Array.isArray(ye)&&(0,re.P)(ye,Z)}remove(Z){const{_finalizers:ye}=this;ye&&(0,re.P)(ye,Z),Z instanceof Q&&Z._removeParent(this)}}Q.EMPTY=(()=>{const ie=new Q;return ie.closed=!0,ie})();const H=Q.EMPTY;function fe(ie){return ie instanceof Q||ie&&"closed"in ie&&(0,c.m)(ie.remove)&&(0,c.m)(ie.add)&&(0,c.m)(ie.unsubscribe)}function Se(ie){(0,c.m)(ie)?ie():ie.unsubscribe()}},2416:(ze,me,b)=>{b.d(me,{v:()=>c});const c={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1}},9841:(ze,me,b)=>{b.d(me,{a:()=>Z});var c=b(9751),o=b(4742),M=b(2076),re=b(4671),Q=b(3268),H=b(3269),fe=b(1810),Se=b(5403),ie=b(9672);function Z(...Ee){const we=(0,H.yG)(Ee),Ie=(0,H.jO)(Ee),{args:Be,keys:Ve}=(0,o.D)(Ee);if(0===Be.length)return(0,M.D)([],we);const Je=new c.y(function ye(Ee,we,Ie=re.y){return Be=>{se(we,()=>{const{length:Ve}=Ee,Je=new Array(Ve);let pt=Ve,_t=Ve;for(let ne=0;ne{const q=(0,M.D)(Ee[ne],we);let j=!1;q.subscribe((0,Se.x)(Be,$=>{Je[ne]=$,j||(j=!0,_t--),_t||Be.next(Ie(Je.slice()))},()=>{--pt||Be.complete()}))},Be)},Be)}}(Be,we,Ve?pt=>(0,fe.n)(Ve,pt):re.y));return Ie?Je.pipe((0,Q.Z)(Ie)):Je}function se(Ee,we,Ie){Ee?(0,ie.f)(Ie,Ee,we):we()}},7272:(ze,me,b)=>{b.d(me,{z:()=>Q});var c=b(8189),M=b(3269),re=b(2076);function Q(...H){return function o(){return(0,c.J)(1)}()((0,re.D)(H,(0,M.yG)(H)))}},9770:(ze,me,b)=>{b.d(me,{P:()=>M});var c=b(9751),o=b(8421);function M(re){return new c.y(Q=>{(0,o.Xf)(re()).subscribe(Q)})}},515:(ze,me,b)=>{b.d(me,{E:()=>o});const o=new(b(9751).y)(Q=>Q.complete())},2076:(ze,me,b)=>{b.d(me,{D:()=>$});var c=b(8421),o=b(9672),M=b(4482),re=b(5403);function Q(ee,ae=0){return(0,M.e)((Pe,de)=>{Pe.subscribe((0,re.x)(de,be=>(0,o.f)(de,ee,()=>de.next(be),ae),()=>(0,o.f)(de,ee,()=>de.complete(),ae),be=>(0,o.f)(de,ee,()=>de.error(be),ae)))})}function H(ee,ae=0){return(0,M.e)((Pe,de)=>{de.add(ee.schedule(()=>Pe.subscribe(de),ae))})}var ie=b(9751),ye=b(2202),se=b(576);function we(ee,ae){if(!ee)throw new Error("Iterable cannot be null");return new ie.y(Pe=>{(0,o.f)(Pe,ae,()=>{const de=ee[Symbol.asyncIterator]();(0,o.f)(Pe,ae,()=>{de.next().then(be=>{be.done?Pe.complete():Pe.next(be.value)})},0,!0)})})}var Ie=b(3670),Be=b(8239),Ve=b(1144),Je=b(6495),pt=b(2206),_t=b(4532),ne=b(3260);function $(ee,ae){return ae?function j(ee,ae){if(null!=ee){if((0,Ie.c)(ee))return function fe(ee,ae){return(0,c.Xf)(ee).pipe(H(ae),Q(ae))}(ee,ae);if((0,Ve.z)(ee))return function Z(ee,ae){return new ie.y(Pe=>{let de=0;return ae.schedule(function(){de===ee.length?Pe.complete():(Pe.next(ee[de++]),Pe.closed||this.schedule())})})}(ee,ae);if((0,Be.t)(ee))return function Se(ee,ae){return(0,c.Xf)(ee).pipe(H(ae),Q(ae))}(ee,ae);if((0,pt.D)(ee))return we(ee,ae);if((0,Je.T)(ee))return function Ee(ee,ae){return new ie.y(Pe=>{let de;return(0,o.f)(Pe,ae,()=>{de=ee[ye.h](),(0,o.f)(Pe,ae,()=>{let be,Fe;try{({value:be,done:Fe}=de.next())}catch(ke){return void Pe.error(ke)}Fe?Pe.complete():Pe.next(be)},0,!0)}),()=>(0,se.m)(null==de?void 0:de.return)&&de.return()})}(ee,ae);if((0,ne.L)(ee))return function q(ee,ae){return we((0,ne.Q)(ee),ae)}(ee,ae)}throw(0,_t.z)(ee)}(ee,ae):(0,c.Xf)(ee)}},4968:(ze,me,b)=>{b.d(me,{R:()=>Z});var c=b(8421),o=b(9751),M=b(5577),re=b(1144),Q=b(576),H=b(3268);const fe=["addListener","removeListener"],Se=["addEventListener","removeEventListener"],ie=["on","off"];function Z(Ie,Be,Ve,Je){if((0,Q.m)(Ve)&&(Je=Ve,Ve=void 0),Je)return Z(Ie,Be,Ve).pipe((0,H.Z)(Je));const[pt,_t]=function we(Ie){return(0,Q.m)(Ie.addEventListener)&&(0,Q.m)(Ie.removeEventListener)}(Ie)?Se.map(ne=>q=>Ie[ne](Be,q,Ve)):function se(Ie){return(0,Q.m)(Ie.addListener)&&(0,Q.m)(Ie.removeListener)}(Ie)?fe.map(ye(Ie,Be)):function Ee(Ie){return(0,Q.m)(Ie.on)&&(0,Q.m)(Ie.off)}(Ie)?ie.map(ye(Ie,Be)):[];if(!pt&&(0,re.z)(Ie))return(0,M.z)(ne=>Z(ne,Be,Ve))((0,c.Xf)(Ie));if(!pt)throw new TypeError("Invalid event target");return new o.y(ne=>{const q=(...j)=>ne.next(1_t(q)})}function ye(Ie,Be){return Ve=>Je=>Ie[Ve](Be,Je)}},8421:(ze,me,b)=>{b.d(me,{Xf:()=>Ee});var c=b(655),o=b(1144),M=b(8239),re=b(9751),Q=b(3670),H=b(2206),fe=b(4532),Se=b(6495),ie=b(3260),Z=b(576),ye=b(7849),se=b(8822);function Ee(ne){if(ne instanceof re.y)return ne;if(null!=ne){if((0,Q.c)(ne))return function we(ne){return new re.y(q=>{const j=ne[se.L]();if((0,Z.m)(j.subscribe))return j.subscribe(q);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}(ne);if((0,o.z)(ne))return function Ie(ne){return new re.y(q=>{for(let j=0;j{ne.then(j=>{q.closed||(q.next(j),q.complete())},j=>q.error(j)).then(null,ye.h)})}(ne);if((0,H.D)(ne))return Je(ne);if((0,Se.T)(ne))return function Ve(ne){return new re.y(q=>{for(const j of ne)if(q.next(j),q.closed)return;q.complete()})}(ne);if((0,ie.L)(ne))return function pt(ne){return Je((0,ie.Q)(ne))}(ne)}throw(0,fe.z)(ne)}function Je(ne){return new re.y(q=>{(function _t(ne,q){var j,$,ee,ae;return(0,c.mG)(this,void 0,void 0,function*(){try{for(j=(0,c.KL)(ne);!($=yield j.next()).done;)if(q.next($.value),q.closed)return}catch(Pe){ee={error:Pe}}finally{try{$&&!$.done&&(ae=j.return)&&(yield ae.call(j))}finally{if(ee)throw ee.error}}q.complete()})})(ne,q).catch(j=>q.error(j))})}},6451:(ze,me,b)=>{b.d(me,{T:()=>H});var c=b(8189),o=b(8421),M=b(515),re=b(3269),Q=b(2076);function H(...fe){const Se=(0,re.yG)(fe),ie=(0,re._6)(fe,1/0),Z=fe;return Z.length?1===Z.length?(0,o.Xf)(Z[0]):(0,c.J)(ie)((0,Q.D)(Z,Se)):M.E}},9646:(ze,me,b)=>{b.d(me,{of:()=>M});var c=b(3269),o=b(2076);function M(...re){const Q=(0,c.yG)(re);return(0,o.D)(re,Q)}},2805:(ze,me,b)=>{b.d(me,{H:()=>Q});var c=b(9751),o=b(4986),M=b(3532),re=b(1165);function Q(H=0,fe,Se=o.P){let ie=-1;return null!=fe&&((0,M.K)(fe)?Se=fe:ie=fe),new c.y(Z=>{let ye=(0,re.q)(H)?+H-Se.now():H;ye<0&&(ye=0);let se=0;return Se.schedule(function(){Z.closed||(Z.next(se++),0<=ie?this.schedule(void 0,ie):Z.complete())},ye)})}},5403:(ze,me,b)=>{b.d(me,{x:()=>o});var c=b(930);function o(re,Q,H,fe,Se){return new M(re,Q,H,fe,Se)}class M extends c.Lv{constructor(Q,H,fe,Se,ie,Z){super(Q),this.onFinalize=ie,this.shouldUnsubscribe=Z,this._next=H?function(ye){try{H(ye)}catch(se){Q.error(se)}}:super._next,this._error=Se?function(ye){try{Se(ye)}catch(se){Q.error(se)}finally{this.unsubscribe()}}:super._error,this._complete=fe?function(){try{fe()}catch(ye){Q.error(ye)}finally{this.unsubscribe()}}:super._complete}unsubscribe(){var Q;if(!this.shouldUnsubscribe||this.shouldUnsubscribe()){const{closed:H}=this;super.unsubscribe(),!H&&(null===(Q=this.onFinalize)||void 0===Q||Q.call(this))}}}},4351:(ze,me,b)=>{b.d(me,{b:()=>M});var c=b(5577),o=b(576);function M(re,Q){return(0,o.m)(Q)?(0,c.z)(re,Q,1):(0,c.z)(re,1)}},8372:(ze,me,b)=>{b.d(me,{b:()=>re});var c=b(4986),o=b(4482),M=b(5403);function re(Q,H=c.z){return(0,o.e)((fe,Se)=>{let ie=null,Z=null,ye=null;const se=()=>{if(ie){ie.unsubscribe(),ie=null;const we=Z;Z=null,Se.next(we)}};function Ee(){const we=ye+Q,Ie=H.now();if(Ie{Z=we,ye=H.now(),ie||(ie=H.schedule(Ee,Q),Se.add(ie))},()=>{se(),Se.complete()},void 0,()=>{Z=ie=null}))})}},1884:(ze,me,b)=>{b.d(me,{x:()=>re});var c=b(4671),o=b(4482),M=b(5403);function re(H,fe=c.y){return H=null!=H?H:Q,(0,o.e)((Se,ie)=>{let Z,ye=!0;Se.subscribe((0,M.x)(ie,se=>{const Ee=fe(se);(ye||!H(Z,Ee))&&(ye=!1,Z=Ee,ie.next(se))}))})}function Q(H,fe){return H===fe}},9300:(ze,me,b)=>{b.d(me,{h:()=>M});var c=b(4482),o=b(5403);function M(re,Q){return(0,c.e)((H,fe)=>{let Se=0;H.subscribe((0,o.x)(fe,ie=>re.call(Q,ie,Se++)&&fe.next(ie)))})}},4004:(ze,me,b)=>{b.d(me,{U:()=>M});var c=b(4482),o=b(5403);function M(re,Q){return(0,c.e)((H,fe)=>{let Se=0;H.subscribe((0,o.x)(fe,ie=>{fe.next(re.call(Q,ie,Se++))}))})}},9718:(ze,me,b)=>{b.d(me,{h:()=>o});var c=b(4004);function o(M){return(0,c.U)(()=>M)}},8189:(ze,me,b)=>{b.d(me,{J:()=>M});var c=b(5577),o=b(4671);function M(re=1/0){return(0,c.z)(o.y,re)}},5577:(ze,me,b)=>{b.d(me,{z:()=>Se});var c=b(4004),o=b(8421),M=b(4482),re=b(9672),Q=b(5403),fe=b(576);function Se(ie,Z,ye=1/0){return(0,fe.m)(Z)?Se((se,Ee)=>(0,c.U)((we,Ie)=>Z(se,we,Ee,Ie))((0,o.Xf)(ie(se,Ee))),ye):("number"==typeof Z&&(ye=Z),(0,M.e)((se,Ee)=>function H(ie,Z,ye,se,Ee,we,Ie,Be){const Ve=[];let Je=0,pt=0,_t=!1;const ne=()=>{_t&&!Ve.length&&!Je&&Z.complete()},q=$=>Je{we&&Z.next($),Je++;let ee=!1;(0,o.Xf)(ye($,pt++)).subscribe((0,Q.x)(Z,ae=>{null==Ee||Ee(ae),we?q(ae):Z.next(ae)},()=>{ee=!0},void 0,()=>{if(ee)try{for(Je--;Ve.length&&Jej(ae)):j(ae)}ne()}catch(ae){Z.error(ae)}}))};return ie.subscribe((0,Q.x)(Z,q,()=>{_t=!0,ne()})),()=>{null==Be||Be()}}(se,Ee,ie,ye)))}},5684:(ze,me,b)=>{b.d(me,{T:()=>o});var c=b(9300);function o(M){return(0,c.h)((re,Q)=>M<=Q)}},8675:(ze,me,b)=>{b.d(me,{O:()=>re});var c=b(7272),o=b(3269),M=b(4482);function re(...Q){const H=(0,o.yG)(Q);return(0,M.e)((fe,Se)=>{(H?(0,c.z)(Q,fe,H):(0,c.z)(Q,fe)).subscribe(Se)})}},3900:(ze,me,b)=>{b.d(me,{w:()=>re});var c=b(8421),o=b(4482),M=b(5403);function re(Q,H){return(0,o.e)((fe,Se)=>{let ie=null,Z=0,ye=!1;const se=()=>ye&&!ie&&Se.complete();fe.subscribe((0,M.x)(Se,Ee=>{null==ie||ie.unsubscribe();let we=0;const Ie=Z++;(0,c.Xf)(Q(Ee,Ie)).subscribe(ie=(0,M.x)(Se,Be=>Se.next(H?H(Ee,Be,Ie,we++):Be),()=>{ie=null,se()}))},()=>{ye=!0,se()}))})}},5698:(ze,me,b)=>{b.d(me,{q:()=>re});var c=b(515),o=b(4482),M=b(5403);function re(Q){return Q<=0?()=>c.E:(0,o.e)((H,fe)=>{let Se=0;H.subscribe((0,M.x)(fe,ie=>{++Se<=Q&&(fe.next(ie),Q<=Se&&fe.complete())}))})}},2722:(ze,me,b)=>{b.d(me,{R:()=>Q});var c=b(4482),o=b(5403),M=b(8421),re=b(5032);function Q(H){return(0,c.e)((fe,Se)=>{(0,M.Xf)(H).subscribe((0,o.x)(Se,()=>Se.complete(),re.Z)),!Se.closed&&fe.subscribe(Se)})}},2529:(ze,me,b)=>{b.d(me,{o:()=>M});var c=b(4482),o=b(5403);function M(re,Q=!1){return(0,c.e)((H,fe)=>{let Se=0;H.subscribe((0,o.x)(fe,ie=>{const Z=re(ie,Se++);(Z||Q)&&fe.next(ie),!Z&&fe.complete()}))})}},8505:(ze,me,b)=>{b.d(me,{b:()=>Q});var c=b(576),o=b(4482),M=b(5403),re=b(4671);function Q(H,fe,Se){const ie=(0,c.m)(H)||fe||Se?{next:H,error:fe,complete:Se}:H;return ie?(0,o.e)((Z,ye)=>{var se;null===(se=ie.subscribe)||void 0===se||se.call(ie);let Ee=!0;Z.subscribe((0,M.x)(ye,we=>{var Ie;null===(Ie=ie.next)||void 0===Ie||Ie.call(ie,we),ye.next(we)},()=>{var we;Ee=!1,null===(we=ie.complete)||void 0===we||we.call(ie),ye.complete()},we=>{var Ie;Ee=!1,null===(Ie=ie.error)||void 0===Ie||Ie.call(ie,we),ye.error(we)},()=>{var we,Ie;Ee&&(null===(we=ie.unsubscribe)||void 0===we||we.call(ie)),null===(Ie=ie.finalize)||void 0===Ie||Ie.call(ie)}))}):re.y}},4408:(ze,me,b)=>{b.d(me,{o:()=>Q});var c=b(727);class o extends c.w0{constructor(fe,Se){super()}schedule(fe,Se=0){return this}}const M={setInterval(H,fe,...Se){const{delegate:ie}=M;return null!=ie&&ie.setInterval?ie.setInterval(H,fe,...Se):setInterval(H,fe,...Se)},clearInterval(H){const{delegate:fe}=M;return((null==fe?void 0:fe.clearInterval)||clearInterval)(H)},delegate:void 0};var re=b(8737);class Q extends o{constructor(fe,Se){super(fe,Se),this.scheduler=fe,this.work=Se,this.pending=!1}schedule(fe,Se=0){var ie;if(this.closed)return this;this.state=fe;const Z=this.id,ye=this.scheduler;return null!=Z&&(this.id=this.recycleAsyncId(ye,Z,Se)),this.pending=!0,this.delay=Se,this.id=null!==(ie=this.id)&&void 0!==ie?ie:this.requestAsyncId(ye,this.id,Se),this}requestAsyncId(fe,Se,ie=0){return M.setInterval(fe.flush.bind(fe,this),ie)}recycleAsyncId(fe,Se,ie=0){if(null!=ie&&this.delay===ie&&!1===this.pending)return Se;null!=Se&&M.clearInterval(Se)}execute(fe,Se){if(this.closed)return new Error("executing a cancelled action");this.pending=!1;const ie=this._execute(fe,Se);if(ie)return ie;!1===this.pending&&null!=this.id&&(this.id=this.recycleAsyncId(this.scheduler,this.id,null))}_execute(fe,Se){let Z,ie=!1;try{this.work(fe)}catch(ye){ie=!0,Z=ye||new Error("Scheduled action threw falsy error")}if(ie)return this.unsubscribe(),Z}unsubscribe(){if(!this.closed){const{id:fe,scheduler:Se}=this,{actions:ie}=Se;this.work=this.state=this.scheduler=null,this.pending=!1,(0,re.P)(ie,this),null!=fe&&(this.id=this.recycleAsyncId(Se,fe,null)),this.delay=null,super.unsubscribe()}}}},640:(ze,me,b)=>{b.d(me,{v:()=>M});const c={now:()=>(c.delegate||Date).now(),delegate:void 0};class o{constructor(Q,H=o.now){this.schedulerActionCtor=Q,this.now=H}schedule(Q,H=0,fe){return new this.schedulerActionCtor(this,Q).schedule(fe,H)}}o.now=c.now;class M extends o{constructor(Q,H=o.now){super(Q,H),this.actions=[],this._active=!1}flush(Q){const{actions:H}=this;if(this._active)return void H.push(Q);let fe;this._active=!0;do{if(fe=Q.execute(Q.state,Q.delay))break}while(Q=H.shift());if(this._active=!1,fe){for(;Q=H.shift();)Q.unsubscribe();throw fe}}}},3101:(ze,me,b)=>{b.d(me,{E:()=>we});var c=b(4408);let M,o=1;const re={};function Q(Be){return Be in re&&(delete re[Be],!0)}const H={setImmediate(Be){const Ve=o++;return re[Ve]=!0,M||(M=Promise.resolve()),M.then(()=>Q(Ve)&&Be()),Ve},clearImmediate(Be){Q(Be)}},{setImmediate:Se,clearImmediate:ie}=H,Z={setImmediate(...Be){const{delegate:Ve}=Z;return((null==Ve?void 0:Ve.setImmediate)||Se)(...Be)},clearImmediate(Be){const{delegate:Ve}=Z;return((null==Ve?void 0:Ve.clearImmediate)||ie)(Be)},delegate:void 0};var se=b(640);const we=new class Ee extends se.v{flush(Ve){this._active=!0;const Je=this._scheduled;this._scheduled=void 0;const{actions:pt}=this;let _t;Ve=Ve||pt.shift();do{if(_t=Ve.execute(Ve.state,Ve.delay))break}while((Ve=pt[0])&&Ve.id===Je&&pt.shift());if(this._active=!1,_t){for(;(Ve=pt[0])&&Ve.id===Je&&pt.shift();)Ve.unsubscribe();throw _t}}}(class ye extends c.o{constructor(Ve,Je){super(Ve,Je),this.scheduler=Ve,this.work=Je}requestAsyncId(Ve,Je,pt=0){return null!==pt&&pt>0?super.requestAsyncId(Ve,Je,pt):(Ve.actions.push(this),Ve._scheduled||(Ve._scheduled=Z.setImmediate(Ve.flush.bind(Ve,void 0))))}recycleAsyncId(Ve,Je,pt=0){var _t;if(null!=pt?pt>0:this.delay>0)return super.recycleAsyncId(Ve,Je,pt);const{actions:ne}=Ve;null!=Je&&(null===(_t=ne[ne.length-1])||void 0===_t?void 0:_t.id)!==Je&&(Z.clearImmediate(Je),Ve._scheduled=void 0)}})},4986:(ze,me,b)=>{b.d(me,{P:()=>re,z:()=>M});var c=b(4408);const M=new(b(640).v)(c.o),re=M},3410:(ze,me,b)=>{b.d(me,{z:()=>c});const c={setTimeout(o,M,...re){const{delegate:Q}=c;return null!=Q&&Q.setTimeout?Q.setTimeout(o,M,...re):setTimeout(o,M,...re)},clearTimeout(o){const{delegate:M}=c;return((null==M?void 0:M.clearTimeout)||clearTimeout)(o)},delegate:void 0}},2202:(ze,me,b)=>{b.d(me,{h:()=>o});const o=function c(){return"function"==typeof Symbol&&Symbol.iterator?Symbol.iterator:"@@iterator"}()},8822:(ze,me,b)=>{b.d(me,{L:()=>c});const c="function"==typeof Symbol&&Symbol.observable||"@@observable"},6805:(ze,me,b)=>{b.d(me,{K:()=>o});const o=(0,b(3888).d)(M=>function(){M(this),this.name="EmptyError",this.message="no elements in sequence"})},3269:(ze,me,b)=>{b.d(me,{_6:()=>H,jO:()=>re,yG:()=>Q});var c=b(576),o=b(3532);function M(fe){return fe[fe.length-1]}function re(fe){return(0,c.m)(M(fe))?fe.pop():void 0}function Q(fe){return(0,o.K)(M(fe))?fe.pop():void 0}function H(fe,Se){return"number"==typeof M(fe)?fe.pop():Se}},4742:(ze,me,b)=>{b.d(me,{D:()=>Q});const{isArray:c}=Array,{getPrototypeOf:o,prototype:M,keys:re}=Object;function Q(fe){if(1===fe.length){const Se=fe[0];if(c(Se))return{args:Se,keys:null};if(function H(fe){return fe&&"object"==typeof fe&&o(fe)===M}(Se)){const ie=re(Se);return{args:ie.map(Z=>Se[Z]),keys:ie}}}return{args:fe,keys:null}}},8737:(ze,me,b)=>{function c(o,M){if(o){const re=o.indexOf(M);0<=re&&o.splice(re,1)}}b.d(me,{P:()=>c})},3888:(ze,me,b)=>{function c(o){const re=o(Q=>{Error.call(Q),Q.stack=(new Error).stack});return re.prototype=Object.create(Error.prototype),re.prototype.constructor=re,re}b.d(me,{d:()=>c})},1810:(ze,me,b)=>{function c(o,M){return o.reduce((re,Q,H)=>(re[Q]=M[H],re),{})}b.d(me,{n:()=>c})},2806:(ze,me,b)=>{b.d(me,{O:()=>re,x:()=>M});var c=b(2416);let o=null;function M(Q){if(c.v.useDeprecatedSynchronousErrorHandling){const H=!o;if(H&&(o={errorThrown:!1,error:null}),Q(),H){const{errorThrown:fe,error:Se}=o;if(o=null,fe)throw Se}}else Q()}function re(Q){c.v.useDeprecatedSynchronousErrorHandling&&o&&(o.errorThrown=!0,o.error=Q)}},9672:(ze,me,b)=>{function c(o,M,re,Q=0,H=!1){const fe=M.schedule(function(){re(),H?o.add(this.schedule(null,Q)):this.unsubscribe()},Q);if(o.add(fe),!H)return fe}b.d(me,{f:()=>c})},4671:(ze,me,b)=>{function c(o){return o}b.d(me,{y:()=>c})},1144:(ze,me,b)=>{b.d(me,{z:()=>c});const c=o=>o&&"number"==typeof o.length&&"function"!=typeof o},2206:(ze,me,b)=>{b.d(me,{D:()=>o});var c=b(576);function o(M){return Symbol.asyncIterator&&(0,c.m)(null==M?void 0:M[Symbol.asyncIterator])}},1165:(ze,me,b)=>{function c(o){return o instanceof Date&&!isNaN(o)}b.d(me,{q:()=>c})},576:(ze,me,b)=>{function c(o){return"function"==typeof o}b.d(me,{m:()=>c})},3670:(ze,me,b)=>{b.d(me,{c:()=>M});var c=b(8822),o=b(576);function M(re){return(0,o.m)(re[c.L])}},6495:(ze,me,b)=>{b.d(me,{T:()=>M});var c=b(2202),o=b(576);function M(re){return(0,o.m)(null==re?void 0:re[c.h])}},8239:(ze,me,b)=>{b.d(me,{t:()=>o});var c=b(576);function o(M){return(0,c.m)(null==M?void 0:M.then)}},3260:(ze,me,b)=>{b.d(me,{L:()=>re,Q:()=>M});var c=b(655),o=b(576);function M(Q){return(0,c.FC)(this,arguments,function*(){const fe=Q.getReader();try{for(;;){const{value:Se,done:ie}=yield(0,c.qq)(fe.read());if(ie)return yield(0,c.qq)(void 0);yield yield(0,c.qq)(Se)}}finally{fe.releaseLock()}})}function re(Q){return(0,o.m)(null==Q?void 0:Q.getReader)}},3532:(ze,me,b)=>{b.d(me,{K:()=>o});var c=b(576);function o(M){return M&&(0,c.m)(M.schedule)}},4482:(ze,me,b)=>{b.d(me,{A:()=>o,e:()=>M});var c=b(576);function o(re){return(0,c.m)(null==re?void 0:re.lift)}function M(re){return Q=>{if(o(Q))return Q.lift(function(H){try{return re(H,this)}catch(fe){this.error(fe)}});throw new TypeError("Unable to lift unknown Observable type")}}},3268:(ze,me,b)=>{b.d(me,{Z:()=>re});var c=b(4004);const{isArray:o}=Array;function re(Q){return(0,c.U)(H=>function M(Q,H){return o(H)?Q(...H):Q(H)}(Q,H))}},5032:(ze,me,b)=>{function c(){}b.d(me,{Z:()=>c})},9635:(ze,me,b)=>{b.d(me,{U:()=>M,z:()=>o});var c=b(4671);function o(...re){return M(re)}function M(re){return 0===re.length?c.y:1===re.length?re[0]:function(H){return re.reduce((fe,Se)=>Se(fe),H)}}},7849:(ze,me,b)=>{b.d(me,{h:()=>M});var c=b(2416),o=b(3410);function M(re){o.z.setTimeout(()=>{const{onUnhandledError:Q}=c.v;if(!Q)throw re;Q(re)})}},4532:(ze,me,b)=>{function c(o){return new TypeError(`You provided ${null!==o&&"object"==typeof o?"an invalid object":`'${o}'`} where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.`)}b.d(me,{z:()=>c})},655:(ze,me,b)=>{function Se(de,be,Fe,ke){return new(Fe||(Fe=Promise))(function($e,bt){function At(mt){try{st(ke.next(mt))}catch(ut){bt(ut)}}function ot(mt){try{st(ke.throw(mt))}catch(ut){bt(ut)}}function st(mt){mt.done?$e(mt.value):function Xe($e){return $e instanceof Fe?$e:new Fe(function(bt){bt($e)})}(mt.value).then(At,ot)}st((ke=ke.apply(de,be||[])).next())})}function Ve(de){return this instanceof Ve?(this.v=de,this):new Ve(de)}function Je(de,be,Fe){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var Xe,ke=Fe.apply(de,be||[]),$e=[];return Xe={},bt("next"),bt("throw"),bt("return"),Xe[Symbol.asyncIterator]=function(){return this},Xe;function bt(lt){ke[lt]&&(Xe[lt]=function(jt){return new Promise(function(Lt,yt){$e.push([lt,jt,Lt,yt])>1||At(lt,jt)})})}function At(lt,jt){try{!function ot(lt){lt.value instanceof Ve?Promise.resolve(lt.value.v).then(st,mt):ut($e[0][2],lt)}(ke[lt](jt))}catch(Lt){ut($e[0][3],Lt)}}function st(lt){At("next",lt)}function mt(lt){At("throw",lt)}function ut(lt,jt){lt(jt),$e.shift(),$e.length&&At($e[0][0],$e[0][1])}}function _t(de){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var Fe,be=de[Symbol.asyncIterator];return be?be.call(de):(de=function se(de){var be="function"==typeof Symbol&&Symbol.iterator,Fe=be&&de[be],ke=0;if(Fe)return Fe.call(de);if(de&&"number"==typeof de.length)return{next:function(){return de&&ke>=de.length&&(de=void 0),{value:de&&de[ke++],done:!de}}};throw new TypeError(be?"Object is not iterable.":"Symbol.iterator is not defined.")}(de),Fe={},ke("next"),ke("throw"),ke("return"),Fe[Symbol.asyncIterator]=function(){return this},Fe);function ke($e){Fe[$e]=de[$e]&&function(bt){return new Promise(function(At,ot){!function Xe($e,bt,At,ot){Promise.resolve(ot).then(function(st){$e({value:st,done:At})},bt)}(At,ot,(bt=de[$e](bt)).done,bt.value)})}}}b.d(me,{FC:()=>Je,KL:()=>_t,mG:()=>Se,qq:()=>Ve})},7340:(ze,me,b)=>{b.d(me,{IO:()=>Ie,LC:()=>o,SB:()=>ie,X$:()=>re,ZE:()=>pt,ZN:()=>Je,_j:()=>c,eR:()=>ye,jt:()=>Q,k1:()=>_t,l3:()=>M,oB:()=>Se,pV:()=>Ee,ru:()=>H,vP:()=>fe});class c{}class o{}const M="*";function re(ne,q){return{type:7,name:ne,definitions:q,options:{}}}function Q(ne,q=null){return{type:4,styles:q,timings:ne}}function H(ne,q=null){return{type:3,steps:ne,options:q}}function fe(ne,q=null){return{type:2,steps:ne,options:q}}function Se(ne){return{type:6,styles:ne,offset:null}}function ie(ne,q,j){return{type:0,name:ne,styles:q,options:j}}function ye(ne,q,j=null){return{type:1,expr:ne,animation:q,options:j}}function Ee(ne=null){return{type:9,options:ne}}function Ie(ne,q,j=null){return{type:11,selector:ne,animation:q,options:j}}function Ve(ne){Promise.resolve().then(ne)}class Je{constructor(q=0,j=0){this._onDoneFns=[],this._onStartFns=[],this._onDestroyFns=[],this._originalOnDoneFns=[],this._originalOnStartFns=[],this._started=!1,this._destroyed=!1,this._finished=!1,this._position=0,this.parentPlayer=null,this.totalTime=q+j}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(q=>q()),this._onDoneFns=[])}onStart(q){this._originalOnStartFns.push(q),this._onStartFns.push(q)}onDone(q){this._originalOnDoneFns.push(q),this._onDoneFns.push(q)}onDestroy(q){this._onDestroyFns.push(q)}hasStarted(){return this._started}init(){}play(){this.hasStarted()||(this._onStart(),this.triggerMicrotask()),this._started=!0}triggerMicrotask(){Ve(()=>this._onFinish())}_onStart(){this._onStartFns.forEach(q=>q()),this._onStartFns=[]}pause(){}restart(){}finish(){this._onFinish()}destroy(){this._destroyed||(this._destroyed=!0,this.hasStarted()||this._onStart(),this.finish(),this._onDestroyFns.forEach(q=>q()),this._onDestroyFns=[])}reset(){this._started=!1,this._finished=!1,this._onStartFns=this._originalOnStartFns,this._onDoneFns=this._originalOnDoneFns}setPosition(q){this._position=this.totalTime?q*this.totalTime:1}getPosition(){return this.totalTime?this._position/this.totalTime:1}triggerCallback(q){const j="start"==q?this._onStartFns:this._onDoneFns;j.forEach($=>$()),j.length=0}}class pt{constructor(q){this._onDoneFns=[],this._onStartFns=[],this._finished=!1,this._started=!1,this._destroyed=!1,this._onDestroyFns=[],this.parentPlayer=null,this.totalTime=0,this.players=q;let j=0,$=0,ee=0;const ae=this.players.length;0==ae?Ve(()=>this._onFinish()):this.players.forEach(Pe=>{Pe.onDone(()=>{++j==ae&&this._onFinish()}),Pe.onDestroy(()=>{++$==ae&&this._onDestroy()}),Pe.onStart(()=>{++ee==ae&&this._onStart()})}),this.totalTime=this.players.reduce((Pe,de)=>Math.max(Pe,de.totalTime),0)}_onFinish(){this._finished||(this._finished=!0,this._onDoneFns.forEach(q=>q()),this._onDoneFns=[])}init(){this.players.forEach(q=>q.init())}onStart(q){this._onStartFns.push(q)}_onStart(){this.hasStarted()||(this._started=!0,this._onStartFns.forEach(q=>q()),this._onStartFns=[])}onDone(q){this._onDoneFns.push(q)}onDestroy(q){this._onDestroyFns.push(q)}hasStarted(){return this._started}play(){this.parentPlayer||this.init(),this._onStart(),this.players.forEach(q=>q.play())}pause(){this.players.forEach(q=>q.pause())}restart(){this.players.forEach(q=>q.restart())}finish(){this._onFinish(),this.players.forEach(q=>q.finish())}destroy(){this._onDestroy()}_onDestroy(){this._destroyed||(this._destroyed=!0,this._onFinish(),this.players.forEach(q=>q.destroy()),this._onDestroyFns.forEach(q=>q()),this._onDestroyFns=[])}reset(){this.players.forEach(q=>q.reset()),this._destroyed=!1,this._finished=!1,this._started=!1}setPosition(q){const j=q*this.totalTime;this.players.forEach($=>{const ee=$.totalTime?Math.min(1,j/$.totalTime):1;$.setPosition(ee)})}getPosition(){const q=this.players.reduce((j,$)=>null===j||$.totalTime>j.totalTime?$:j,null);return null!=q?q.getPosition():0}beforeDestroy(){this.players.forEach(q=>{q.beforeDestroy&&q.beforeDestroy()})}triggerCallback(q){const j="start"==q?this._onStartFns:this._onDoneFns;j.forEach($=>$()),j.length=0}}const _t="!"},2687:(ze,me,b)=>{b.d(me,{$s:()=>de,Em:()=>$e,Kd:()=>pe,X6:()=>ue,ic:()=>At,qV:()=>Ct,qm:()=>Ze,rt:()=>Me,s1:()=>Xe,tE:()=>at,yG:()=>R});var c=b(6895),o=b(1571),M=b(3353),re=b(7579),Q=b(727),H=b(1135),fe=b(9646),Se=b(9521),ie=b(8505),Z=b(8372),ye=b(9300),se=b(4004),Ee=b(5698),we=b(5684),Ie=b(1884),Be=b(2722),Ve=b(1281),Je=b(9643),pt=b(2289);function j(I,A){return(I.getAttribute(A)||"").match(/\S+/g)||[]}const ee="cdk-describedby-message",ae="cdk-describedby-host";let Pe=0,de=(()=>{class I{constructor(T,z){this._platform=z,this._messageRegistry=new Map,this._messagesContainer=null,this._id=""+Pe++,this._document=T,this._id=(0,o.f3M)(o.AFp)+"-"+Pe++}describe(T,z,Y){if(!this._canBeDescribed(T,z))return;const He=be(z,Y);"string"!=typeof z?(Fe(z,this._id),this._messageRegistry.set(He,{messageElement:z,referenceCount:0})):this._messageRegistry.has(He)||this._createMessageElement(z,Y),this._isElementDescribedByMessage(T,He)||this._addMessageReference(T,He)}removeDescription(T,z,Y){var He;if(!z||!this._isElementNode(T))return;const gt=be(z,Y);if(this._isElementDescribedByMessage(T,gt)&&this._removeMessageReference(T,gt),"string"==typeof z){const Ft=this._messageRegistry.get(gt);Ft&&0===Ft.referenceCount&&this._deleteMessageElement(gt)}0===(null===(He=this._messagesContainer)||void 0===He?void 0:He.childNodes.length)&&(this._messagesContainer.remove(),this._messagesContainer=null)}ngOnDestroy(){var T;const z=this._document.querySelectorAll(`[${ae}="${this._id}"]`);for(let Y=0;Y0!=Y.indexOf(ee));T.setAttribute("aria-describedby",z.join(" "))}_addMessageReference(T,z){const Y=this._messageRegistry.get(z);(function ne(I,A,T){const z=j(I,A);z.some(Y=>Y.trim()==T.trim())||(z.push(T.trim()),I.setAttribute(A,z.join(" ")))})(T,"aria-describedby",Y.messageElement.id),T.setAttribute(ae,this._id),Y.referenceCount++}_removeMessageReference(T,z){const Y=this._messageRegistry.get(z);Y.referenceCount--,function q(I,A,T){const Y=j(I,A).filter(He=>He!=T.trim());Y.length?I.setAttribute(A,Y.join(" ")):I.removeAttribute(A)}(T,"aria-describedby",Y.messageElement.id),T.removeAttribute(ae)}_isElementDescribedByMessage(T,z){const Y=j(T,"aria-describedby"),He=this._messageRegistry.get(z),gt=He&&He.messageElement.id;return!!gt&&-1!=Y.indexOf(gt)}_canBeDescribed(T,z){if(!this._isElementNode(T))return!1;if(z&&"object"==typeof z)return!0;const Y=null==z?"":`${z}`.trim(),He=T.getAttribute("aria-label");return!(!Y||He&&He.trim()===Y)}_isElementNode(T){return T.nodeType===this._document.ELEMENT_NODE}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(c.K0),o.LFG(M.t4))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();function be(I,A){return"string"==typeof I?`${A||""}/${I}`:I}function Fe(I,A){I.id||(I.id=`${ee}-${A}-${Pe++}`)}class ke{constructor(A){this._items=A,this._activeItemIndex=-1,this._activeItem=null,this._wrap=!1,this._letterKeyStream=new re.x,this._typeaheadSubscription=Q.w0.EMPTY,this._vertical=!0,this._allowedModifierKeys=[],this._homeAndEnd=!1,this._pageUpAndDown={enabled:!1,delta:10},this._skipPredicateFn=T=>T.disabled,this._pressedLetters=[],this.tabOut=new re.x,this.change=new re.x,A instanceof o.n_E&&(this._itemChangesSubscription=A.changes.subscribe(T=>{if(this._activeItem){const Y=T.toArray().indexOf(this._activeItem);Y>-1&&Y!==this._activeItemIndex&&(this._activeItemIndex=Y)}}))}skipPredicate(A){return this._skipPredicateFn=A,this}withWrap(A=!0){return this._wrap=A,this}withVerticalOrientation(A=!0){return this._vertical=A,this}withHorizontalOrientation(A){return this._horizontal=A,this}withAllowedModifierKeys(A){return this._allowedModifierKeys=A,this}withTypeAhead(A=200){return this._typeaheadSubscription.unsubscribe(),this._typeaheadSubscription=this._letterKeyStream.pipe((0,ie.b)(T=>this._pressedLetters.push(T)),(0,Z.b)(A),(0,ye.h)(()=>this._pressedLetters.length>0),(0,se.U)(()=>this._pressedLetters.join(""))).subscribe(T=>{const z=this._getItemsArray();for(let Y=1;Y!A[He]||this._allowedModifierKeys.indexOf(He)>-1);switch(T){case Se.Mf:return void this.tabOut.next();case Se.JH:if(this._vertical&&Y){this.setNextItemActive();break}return;case Se.LH:if(this._vertical&&Y){this.setPreviousItemActive();break}return;case Se.SV:if(this._horizontal&&Y){"rtl"===this._horizontal?this.setPreviousItemActive():this.setNextItemActive();break}return;case Se.oh:if(this._horizontal&&Y){"rtl"===this._horizontal?this.setNextItemActive():this.setPreviousItemActive();break}return;case Se.Sd:if(this._homeAndEnd&&Y){this.setFirstItemActive();break}return;case Se.uR:if(this._homeAndEnd&&Y){this.setLastItemActive();break}return;case Se.Ku:if(this._pageUpAndDown.enabled&&Y){const He=this._activeItemIndex-this._pageUpAndDown.delta;this._setActiveItemByIndex(He>0?He:0,1);break}return;case Se.VM:if(this._pageUpAndDown.enabled&&Y){const He=this._activeItemIndex+this._pageUpAndDown.delta,gt=this._getItemsArray().length;this._setActiveItemByIndex(He=Se.A&&T<=Se.Z||T>=Se.xE&&T<=Se.aO)&&this._letterKeyStream.next(String.fromCharCode(T))))}this._pressedLetters=[],A.preventDefault()}get activeItemIndex(){return this._activeItemIndex}get activeItem(){return this._activeItem}isTyping(){return this._pressedLetters.length>0}setFirstItemActive(){this._setActiveItemByIndex(0,1)}setLastItemActive(){this._setActiveItemByIndex(this._items.length-1,-1)}setNextItemActive(){this._activeItemIndex<0?this.setFirstItemActive():this._setActiveItemByDelta(1)}setPreviousItemActive(){this._activeItemIndex<0&&this._wrap?this.setLastItemActive():this._setActiveItemByDelta(-1)}updateActiveItem(A){const T=this._getItemsArray(),z="number"==typeof A?A:T.indexOf(A),Y=T[z];this._activeItem=null==Y?null:Y,this._activeItemIndex=z}destroy(){var A;this._typeaheadSubscription.unsubscribe(),null===(A=this._itemChangesSubscription)||void 0===A||A.unsubscribe(),this._letterKeyStream.complete(),this.tabOut.complete(),this.change.complete(),this._pressedLetters=[]}_setActiveItemByDelta(A){this._wrap?this._setActiveInWrapMode(A):this._setActiveInDefaultMode(A)}_setActiveInWrapMode(A){const T=this._getItemsArray();for(let z=1;z<=T.length;z++){const Y=(this._activeItemIndex+A*z+T.length)%T.length;if(!this._skipPredicateFn(T[Y]))return void this.setActiveItem(Y)}}_setActiveInDefaultMode(A){this._setActiveItemByIndex(this._activeItemIndex+A,A)}_setActiveItemByIndex(A,T){const z=this._getItemsArray();if(z[A]){for(;this._skipPredicateFn(z[A]);)if(!z[A+=T])return;this.setActiveItem(A)}}_getItemsArray(){return this._items instanceof o.n_E?this._items.toArray():this._items}}class Xe extends ke{setActiveItem(A){this.activeItem&&this.activeItem.setInactiveStyles(),super.setActiveItem(A),this.activeItem&&this.activeItem.setActiveStyles()}}class $e extends ke{constructor(){super(...arguments),this._origin="program"}setFocusOrigin(A){return this._origin=A,this}setActiveItem(A){super.setActiveItem(A),this.activeItem&&this.activeItem.focus(this._origin)}}let At=(()=>{class I{constructor(T){this._platform=T}isDisabled(T){return T.hasAttribute("disabled")}isVisible(T){return function st(I){return!!(I.offsetWidth||I.offsetHeight||"function"==typeof I.getClientRects&&I.getClientRects().length)}(T)&&"visible"===getComputedStyle(T).visibility}isTabbable(T){if(!this._platform.isBrowser)return!1;const z=function ot(I){try{return I.frameElement}catch{return null}}(function tn(I){return I.ownerDocument&&I.ownerDocument.defaultView||window}(T));if(z&&(-1===hn(z)||!this.isVisible(z)))return!1;let Y=T.nodeName.toLowerCase(),He=hn(T);return T.hasAttribute("contenteditable")?-1!==He:!("iframe"===Y||"object"===Y||this._platform.WEBKIT&&this._platform.IOS&&!function It(I){let A=I.nodeName.toLowerCase(),T="input"===A&&I.type;return"text"===T||"password"===T||"select"===A||"textarea"===A}(T))&&("audio"===Y?!!T.hasAttribute("controls")&&-1!==He:"video"===Y?-1!==He&&(null!==He||this._platform.FIREFOX||T.hasAttribute("controls")):T.tabIndex>=0)}isFocusable(T,z){return function yn(I){return!function ut(I){return function jt(I){return"input"==I.nodeName.toLowerCase()}(I)&&"hidden"==I.type}(I)&&(function mt(I){let A=I.nodeName.toLowerCase();return"input"===A||"select"===A||"button"===A||"textarea"===A}(I)||function lt(I){return function Lt(I){return"a"==I.nodeName.toLowerCase()}(I)&&I.hasAttribute("href")}(I)||I.hasAttribute("contenteditable")||yt(I))}(T)&&!this.isDisabled(T)&&((null==z?void 0:z.ignoreVisibility)||this.isVisible(T))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(M.t4))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();function yt(I){if(!I.hasAttribute("tabindex")||void 0===I.tabIndex)return!1;let A=I.getAttribute("tabindex");return!(!A||isNaN(parseInt(A,10)))}function hn(I){if(!yt(I))return null;const A=parseInt(I.getAttribute("tabindex")||"",10);return isNaN(A)?-1:A}class xn{get enabled(){return this._enabled}set enabled(A){this._enabled=A,this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(A,this._startAnchor),this._toggleAnchorTabIndex(A,this._endAnchor))}constructor(A,T,z,Y,He=!1){this._element=A,this._checker=T,this._ngZone=z,this._document=Y,this._hasAttached=!1,this.startAnchorListener=()=>this.focusLastTabbableElement(),this.endAnchorListener=()=>this.focusFirstTabbableElement(),this._enabled=!0,He||this.attachAnchors()}destroy(){const A=this._startAnchor,T=this._endAnchor;A&&(A.removeEventListener("focus",this.startAnchorListener),A.remove()),T&&(T.removeEventListener("focus",this.endAnchorListener),T.remove()),this._startAnchor=this._endAnchor=null,this._hasAttached=!1}attachAnchors(){return!!this._hasAttached||(this._ngZone.runOutsideAngular(()=>{this._startAnchor||(this._startAnchor=this._createAnchor(),this._startAnchor.addEventListener("focus",this.startAnchorListener)),this._endAnchor||(this._endAnchor=this._createAnchor(),this._endAnchor.addEventListener("focus",this.endAnchorListener))}),this._element.parentNode&&(this._element.parentNode.insertBefore(this._startAnchor,this._element),this._element.parentNode.insertBefore(this._endAnchor,this._element.nextSibling),this._hasAttached=!0),this._hasAttached)}focusInitialElementWhenReady(A){return new Promise(T=>{this._executeOnStable(()=>T(this.focusInitialElement(A)))})}focusFirstTabbableElementWhenReady(A){return new Promise(T=>{this._executeOnStable(()=>T(this.focusFirstTabbableElement(A)))})}focusLastTabbableElementWhenReady(A){return new Promise(T=>{this._executeOnStable(()=>T(this.focusLastTabbableElement(A)))})}_getRegionBoundary(A){const T=this._element.querySelectorAll(`[cdk-focus-region-${A}], [cdkFocusRegion${A}], [cdk-focus-${A}]`);return"start"==A?T.length?T[0]:this._getFirstTabbableElement(this._element):T.length?T[T.length-1]:this._getLastTabbableElement(this._element)}focusInitialElement(A){const T=this._element.querySelector("[cdk-focus-initial], [cdkFocusInitial]");if(T){if(!this._checker.isFocusable(T)){const z=this._getFirstTabbableElement(T);return null==z||z.focus(A),!!z}return T.focus(A),!0}return this.focusFirstTabbableElement(A)}focusFirstTabbableElement(A){const T=this._getRegionBoundary("start");return T&&T.focus(A),!!T}focusLastTabbableElement(A){const T=this._getRegionBoundary("end");return T&&T.focus(A),!!T}hasAttached(){return this._hasAttached}_getFirstTabbableElement(A){if(this._checker.isFocusable(A)&&this._checker.isTabbable(A))return A;const T=A.children;for(let z=0;z=0;z--){const Y=T[z].nodeType===this._document.ELEMENT_NODE?this._getLastTabbableElement(T[z]):null;if(Y)return Y}return null}_createAnchor(){const A=this._document.createElement("div");return this._toggleAnchorTabIndex(this._enabled,A),A.classList.add("cdk-visually-hidden"),A.classList.add("cdk-focus-trap-anchor"),A.setAttribute("aria-hidden","true"),A}_toggleAnchorTabIndex(A,T){A?T.setAttribute("tabindex","0"):T.removeAttribute("tabindex")}toggleAnchors(A){this._startAnchor&&this._endAnchor&&(this._toggleAnchorTabIndex(A,this._startAnchor),this._toggleAnchorTabIndex(A,this._endAnchor))}_executeOnStable(A){this._ngZone.isStable?A():this._ngZone.onStable.pipe((0,Ee.q)(1)).subscribe(A)}}let Ct=(()=>{class I{constructor(T,z,Y){this._checker=T,this._ngZone=z,this._document=Y}create(T,z=!1){return new xn(T,this._checker,this._ngZone,this._document,z)}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(At),o.LFG(o.R0b),o.LFG(c.K0))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();function ue(I){return 0===I.buttons||0===I.offsetX&&0===I.offsetY}function R(I){const A=I.touches&&I.touches[0]||I.changedTouches&&I.changedTouches[0];return!(!A||-1!==A.identifier||null!=A.radiusX&&1!==A.radiusX||null!=A.radiusY&&1!==A.radiusY)}const K=new o.OlP("cdk-input-modality-detector-options"),De={ignoreKeys:[Se.zL,Se.jx,Se.b2,Se.MW,Se.JU]},Ke=(0,M.i$)({passive:!0,capture:!0});let it=(()=>{class I{get mostRecentModality(){return this._modality.value}constructor(T,z,Y,He){this._platform=T,this._mostRecentTarget=null,this._modality=new H.X(null),this._lastTouchMs=0,this._onKeydown=gt=>{var Ft,kt;null!==(Ft=this._options)&&void 0!==Ft&&null!==(kt=Ft.ignoreKeys)&&void 0!==kt&&kt.some(on=>on===gt.keyCode)||(this._modality.next("keyboard"),this._mostRecentTarget=(0,M.sA)(gt))},this._onMousedown=gt=>{Date.now()-this._lastTouchMs<650||(this._modality.next(ue(gt)?"keyboard":"mouse"),this._mostRecentTarget=(0,M.sA)(gt))},this._onTouchstart=gt=>{R(gt)?this._modality.next("keyboard"):(this._lastTouchMs=Date.now(),this._modality.next("touch"),this._mostRecentTarget=(0,M.sA)(gt))},this._options={...De,...He},this.modalityDetected=this._modality.pipe((0,we.T)(1)),this.modalityChanged=this.modalityDetected.pipe((0,Ie.x)()),T.isBrowser&&z.runOutsideAngular(()=>{Y.addEventListener("keydown",this._onKeydown,Ke),Y.addEventListener("mousedown",this._onMousedown,Ke),Y.addEventListener("touchstart",this._onTouchstart,Ke)})}ngOnDestroy(){this._modality.complete(),this._platform.isBrowser&&(document.removeEventListener("keydown",this._onKeydown,Ke),document.removeEventListener("mousedown",this._onMousedown,Ke),document.removeEventListener("touchstart",this._onTouchstart,Ke))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(M.t4),o.LFG(o.R0b),o.LFG(c.K0),o.LFG(K,8))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})();const et=new o.OlP("liveAnnouncerElement",{providedIn:"root",factory:function _e(){return null}}),Ye=new o.OlP("LIVE_ANNOUNCER_DEFAULT_OPTIONS");let F=0,pe=(()=>{class I{constructor(T,z,Y,He){this._ngZone=z,this._defaultOptions=He,this._document=Y,this._liveElement=T||this._createLiveElement()}announce(T,...z){const Y=this._defaultOptions;let He,gt;return 1===z.length&&"number"==typeof z[0]?gt=z[0]:[He,gt]=z,this.clear(),clearTimeout(this._previousTimeout),He||(He=Y&&Y.politeness?Y.politeness:"polite"),null==gt&&Y&&(gt=Y.duration),this._liveElement.setAttribute("aria-live",He),this._liveElement.id&&this._exposeAnnouncerToModals(this._liveElement.id),this._ngZone.runOutsideAngular(()=>(this._currentPromise||(this._currentPromise=new Promise(Ft=>this._currentResolve=Ft)),clearTimeout(this._previousTimeout),this._previousTimeout=setTimeout(()=>{this._liveElement.textContent=T,"number"==typeof gt&&(this._previousTimeout=setTimeout(()=>this.clear(),gt)),this._currentResolve(),this._currentPromise=this._currentResolve=void 0},100),this._currentPromise))}clear(){this._liveElement&&(this._liveElement.textContent="")}ngOnDestroy(){var T,z;clearTimeout(this._previousTimeout),null===(T=this._liveElement)||void 0===T||T.remove(),this._liveElement=null,null===(z=this._currentResolve)||void 0===z||z.call(this),this._currentPromise=this._currentResolve=void 0}_createLiveElement(){const T="cdk-live-announcer-element",z=this._document.getElementsByClassName(T),Y=this._document.createElement("div");for(let He=0;He .cdk-overlay-container [aria-modal="true"]');for(let Y=0;Y{class I{constructor(T,z,Y,He,gt){this._ngZone=T,this._platform=z,this._inputModalityDetector=Y,this._origin=null,this._windowFocused=!1,this._originFromTouchInteraction=!1,this._elementInfo=new Map,this._monitoredElementCount=0,this._rootNodeFocusListenerCount=new Map,this._windowFocusListener=()=>{this._windowFocused=!0,this._windowFocusTimeoutId=window.setTimeout(()=>this._windowFocused=!1)},this._stopInputModalityDetector=new re.x,this._rootNodeFocusAndBlurListener=Ft=>{for(let on=(0,M.sA)(Ft);on;on=on.parentElement)"focus"===Ft.type?this._onFocus(Ft,on):this._onBlur(Ft,on)},this._document=He,this._detectionMode=(null==gt?void 0:gt.detectionMode)||0}monitor(T,z=!1){const Y=(0,Ve.fI)(T);if(!this._platform.isBrowser||1!==Y.nodeType)return(0,fe.of)(null);const He=(0,M.kV)(Y)||this._getDocument(),gt=this._elementInfo.get(Y);if(gt)return z&&(gt.checkChildren=!0),gt.subject;const Ft={checkChildren:z,subject:new re.x,rootNode:He};return this._elementInfo.set(Y,Ft),this._registerGlobalListeners(Ft),Ft.subject}stopMonitoring(T){const z=(0,Ve.fI)(T),Y=this._elementInfo.get(z);Y&&(Y.subject.complete(),this._setClasses(z),this._elementInfo.delete(z),this._removeGlobalListeners(Y))}focusVia(T,z,Y){const He=(0,Ve.fI)(T);He===this._getDocument().activeElement?this._getClosestElementsInfo(He).forEach(([Ft,kt])=>this._originChanged(Ft,z,kt)):(this._setOrigin(z),"function"==typeof He.focus&&He.focus(Y))}ngOnDestroy(){this._elementInfo.forEach((T,z)=>this.stopMonitoring(z))}_getDocument(){return this._document||document}_getWindow(){return this._getDocument().defaultView||window}_getFocusOrigin(T){return this._origin?this._originFromTouchInteraction?this._shouldBeAttributedToTouch(T)?"touch":"program":this._origin:this._windowFocused&&this._lastFocusOrigin?this._lastFocusOrigin:T&&this._isLastInteractionFromInputLabel(T)?"mouse":"program"}_shouldBeAttributedToTouch(T){return 1===this._detectionMode||!(null==T||!T.contains(this._inputModalityDetector._mostRecentTarget))}_setClasses(T,z){T.classList.toggle("cdk-focused",!!z),T.classList.toggle("cdk-touch-focused","touch"===z),T.classList.toggle("cdk-keyboard-focused","keyboard"===z),T.classList.toggle("cdk-mouse-focused","mouse"===z),T.classList.toggle("cdk-program-focused","program"===z)}_setOrigin(T,z=!1){this._ngZone.runOutsideAngular(()=>{this._origin=T,this._originFromTouchInteraction="touch"===T&&z,0===this._detectionMode&&(clearTimeout(this._originTimeoutId),this._originTimeoutId=setTimeout(()=>this._origin=null,this._originFromTouchInteraction?650:1))})}_onFocus(T,z){const Y=this._elementInfo.get(z),He=(0,M.sA)(T);!Y||!Y.checkChildren&&z!==He||this._originChanged(z,this._getFocusOrigin(He),Y)}_onBlur(T,z){const Y=this._elementInfo.get(z);!Y||Y.checkChildren&&T.relatedTarget instanceof Node&&z.contains(T.relatedTarget)||(this._setClasses(z),this._emitOrigin(Y,null))}_emitOrigin(T,z){T.subject.observers.length&&this._ngZone.run(()=>T.subject.next(z))}_registerGlobalListeners(T){if(!this._platform.isBrowser)return;const z=T.rootNode,Y=this._rootNodeFocusListenerCount.get(z)||0;Y||this._ngZone.runOutsideAngular(()=>{z.addEventListener("focus",this._rootNodeFocusAndBlurListener,rt),z.addEventListener("blur",this._rootNodeFocusAndBlurListener,rt)}),this._rootNodeFocusListenerCount.set(z,Y+1),1==++this._monitoredElementCount&&(this._ngZone.runOutsideAngular(()=>{this._getWindow().addEventListener("focus",this._windowFocusListener)}),this._inputModalityDetector.modalityDetected.pipe((0,Be.R)(this._stopInputModalityDetector)).subscribe(He=>{this._setOrigin(He,!0)}))}_removeGlobalListeners(T){const z=T.rootNode;if(this._rootNodeFocusListenerCount.has(z)){const Y=this._rootNodeFocusListenerCount.get(z);Y>1?this._rootNodeFocusListenerCount.set(z,Y-1):(z.removeEventListener("focus",this._rootNodeFocusAndBlurListener,rt),z.removeEventListener("blur",this._rootNodeFocusAndBlurListener,rt),this._rootNodeFocusListenerCount.delete(z))}--this._monitoredElementCount||(this._getWindow().removeEventListener("focus",this._windowFocusListener),this._stopInputModalityDetector.next(),clearTimeout(this._windowFocusTimeoutId),clearTimeout(this._originTimeoutId))}_originChanged(T,z,Y){this._setClasses(T,z),this._emitOrigin(Y,z),this._lastFocusOrigin=z}_getClosestElementsInfo(T){const z=[];return this._elementInfo.forEach((Y,He)=>{(He===T||Y.checkChildren&&He.contains(T))&&z.push([He,Y])}),z}_isLastInteractionFromInputLabel(T){const{_mostRecentTarget:z,mostRecentModality:Y}=this._inputModalityDetector;if("mouse"!==Y||!z||z===T||"INPUT"!==T.nodeName&&"TEXTAREA"!==T.nodeName||T.disabled)return!1;const He=T.labels;if(He)for(let gt=0;gt{class I{constructor(T,z){this._platform=T,this._document=z,this._breakpointSubscription=(0,o.f3M)(pt.Yg).observe("(forced-colors: active)").subscribe(()=>{this._hasCheckedHighContrastMode&&(this._hasCheckedHighContrastMode=!1,this._applyBodyHighContrastModeCssClasses())})}getHighContrastMode(){if(!this._platform.isBrowser)return 0;const T=this._document.createElement("div");T.style.backgroundColor="rgb(1,2,3)",T.style.position="absolute",this._document.body.appendChild(T);const z=this._document.defaultView||window,Y=z&&z.getComputedStyle?z.getComputedStyle(T):null,He=(Y&&Y.backgroundColor||"").replace(/ /g,"");switch(T.remove(),He){case"rgb(0,0,0)":case"rgb(45,50,54)":case"rgb(32,32,32)":return 2;case"rgb(255,255,255)":case"rgb(255,250,239)":return 1}return 0}ngOnDestroy(){this._breakpointSubscription.unsubscribe()}_applyBodyHighContrastModeCssClasses(){if(!this._hasCheckedHighContrastMode&&this._platform.isBrowser&&this._document.body){const T=this._document.body.classList;T.remove(gn,St,mn),this._hasCheckedHighContrastMode=!0;const z=this.getHighContrastMode();1===z?T.add(gn,St):2===z&&T.add(gn,mn)}}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(M.t4),o.LFG(c.K0))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac,providedIn:"root"}),I})(),Me=(()=>{class I{constructor(T){T._applyBodyHighContrastModeCssClasses()}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(Ze))},I.\u0275mod=o.oAB({type:I}),I.\u0275inj=o.cJS({imports:[Je.Q8]}),I})()},445:(ze,me,b)=>{b.d(me,{Is:()=>fe,vT:()=>ie});var c=b(1571),o=b(6895);const M=new c.OlP("cdk-dir-doc",{providedIn:"root",factory:function re(){return(0,c.f3M)(o.K0)}}),Q=/^(ar|ckb|dv|he|iw|fa|nqo|ps|sd|ug|ur|yi|.*[-_](Adlm|Arab|Hebr|Nkoo|Rohg|Thaa))(?!.*[-_](Latn|Cyrl)($|-|_))($|-|_)/i;let fe=(()=>{class Z{constructor(se){this.value="ltr",this.change=new c.vpe,se&&(this.value=function H(Z){var ye;const se=(null==Z?void 0:Z.toLowerCase())||"";return"auto"===se&&typeof navigator<"u"&&null!==(ye=navigator)&&void 0!==ye&&ye.language?Q.test(navigator.language)?"rtl":"ltr":"rtl"===se?"rtl":"ltr"}((se.body?se.body.dir:null)||(se.documentElement?se.documentElement.dir:null)||"ltr"))}ngOnDestroy(){this.change.complete()}}return Z.\u0275fac=function(se){return new(se||Z)(c.LFG(M,8))},Z.\u0275prov=c.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z})(),ie=(()=>{class Z{}return Z.\u0275fac=function(se){return new(se||Z)},Z.\u0275mod=c.oAB({type:Z}),Z.\u0275inj=c.cJS({}),Z})()},1281:(ze,me,b)=>{b.d(me,{Eq:()=>Q,HM:()=>H,Ig:()=>o,fI:()=>fe,su:()=>M});var c=b(1571);function o(ie){return null!=ie&&"false"!=`${ie}`}function M(ie,Z=0){return function re(ie){return!isNaN(parseFloat(ie))&&!isNaN(Number(ie))}(ie)?Number(ie):Z}function Q(ie){return Array.isArray(ie)?ie:[ie]}function H(ie){return null==ie?"":"string"==typeof ie?ie:`${ie}px`}function fe(ie){return ie instanceof c.SBq?ie.nativeElement:ie}},5017:(ze,me,b)=>{b.d(me,{A8:()=>Z,Ov:()=>Se});var c=b(7579),o=b(1571);class Se{get selected(){return this._selected||(this._selected=Array.from(this._selection.values())),this._selected}constructor(Ee=!1,we,Ie=!0,Be){this._multiple=Ee,this._emitChanges=Ie,this.compareWith=Be,this._selection=new Set,this._deselectedToEmit=[],this._selectedToEmit=[],this.changed=new c.x,we&&we.length&&(Ee?we.forEach(Ve=>this._markSelected(Ve)):this._markSelected(we[0]),this._selectedToEmit.length=0)}select(...Ee){this._verifyValueAssignment(Ee),Ee.forEach(Ie=>this._markSelected(Ie));const we=this._hasQueuedChanges();return this._emitChangeEvent(),we}deselect(...Ee){this._verifyValueAssignment(Ee),Ee.forEach(Ie=>this._unmarkSelected(Ie));const we=this._hasQueuedChanges();return this._emitChangeEvent(),we}setSelection(...Ee){this._verifyValueAssignment(Ee);const we=this.selected,Ie=new Set(Ee);Ee.forEach(Ve=>this._markSelected(Ve)),we.filter(Ve=>!Ie.has(Ve)).forEach(Ve=>this._unmarkSelected(Ve));const Be=this._hasQueuedChanges();return this._emitChangeEvent(),Be}toggle(Ee){return this.isSelected(Ee)?this.deselect(Ee):this.select(Ee)}clear(Ee=!0){this._unmarkAll();const we=this._hasQueuedChanges();return Ee&&this._emitChangeEvent(),we}isSelected(Ee){if(this.compareWith){for(const we of this._selection)if(this.compareWith(we,Ee))return!0;return!1}return this._selection.has(Ee)}isEmpty(){return 0===this._selection.size}hasValue(){return!this.isEmpty()}sort(Ee){this._multiple&&this.selected&&this._selected.sort(Ee)}isMultipleSelection(){return this._multiple}_emitChangeEvent(){this._selected=null,(this._selectedToEmit.length||this._deselectedToEmit.length)&&(this.changed.next({source:this,added:this._selectedToEmit,removed:this._deselectedToEmit}),this._deselectedToEmit=[],this._selectedToEmit=[])}_markSelected(Ee){this.isSelected(Ee)||(this._multiple||this._unmarkAll(),this.isSelected(Ee)||this._selection.add(Ee),this._emitChanges&&this._selectedToEmit.push(Ee))}_unmarkSelected(Ee){this.isSelected(Ee)&&(this._selection.delete(Ee),this._emitChanges&&this._deselectedToEmit.push(Ee))}_unmarkAll(){this.isEmpty()||this._selection.forEach(Ee=>this._unmarkSelected(Ee))}_verifyValueAssignment(Ee){}_hasQueuedChanges(){return!(!this._deselectedToEmit.length&&!this._selectedToEmit.length)}}let Z=(()=>{class se{constructor(){this._listeners=[]}notify(we,Ie){for(let Be of this._listeners)Be(we,Ie)}listen(we){return this._listeners.push(we),()=>{this._listeners=this._listeners.filter(Ie=>we!==Ie)}}ngOnDestroy(){this._listeners=[]}}return se.\u0275fac=function(we){return new(we||se)},se.\u0275prov=o.Yz7({token:se,factory:se.\u0275fac,providedIn:"root"}),se})()},9521:(ze,me,b)=>{b.d(me,{A:()=>ut,JH:()=>_t,JU:()=>H,K5:()=>Q,Ku:()=>Ee,LH:()=>Je,L_:()=>se,MW:()=>Ye,Mf:()=>M,SV:()=>pt,Sd:()=>Be,VM:()=>we,Vb:()=>Dn,Z:()=>_e,aO:()=>bt,b2:()=>Yt,hY:()=>ye,jx:()=>fe,oh:()=>Ve,uR:()=>Ie,xE:()=>ee,zL:()=>Se});const M=9,Q=13,H=16,fe=17,Se=18,ye=27,se=32,Ee=33,we=34,Ie=35,Be=36,Ve=37,Je=38,pt=39,_t=40,ee=48,bt=57,ut=65,_e=90,Ye=91,Yt=224;function Dn(Tn,...Gn){return Gn.length?Gn.some(vn=>Tn[vn]):Tn.altKey||Tn.shiftKey||Tn.ctrlKey||Tn.metaKey}},2289:(ze,me,b)=>{b.d(me,{Yg:()=>_t,xu:()=>we});var c=b(1571),o=b(1281),M=b(7579),re=b(9841),Q=b(7272),H=b(9751),fe=b(5698),Se=b(5684),ie=b(8372),Z=b(4004),ye=b(8675),se=b(2722),Ee=b(3353);let we=(()=>{class j{}return j.\u0275fac=function(ee){return new(ee||j)},j.\u0275mod=c.oAB({type:j}),j.\u0275inj=c.cJS({}),j})();const Ie=new Set;let Be,Ve=(()=>{class j{constructor(ee){this._platform=ee,this._matchMedia=this._platform.isBrowser&&window.matchMedia?window.matchMedia.bind(window):pt}matchMedia(ee){return(this._platform.WEBKIT||this._platform.BLINK)&&function Je(j){if(!Ie.has(j))try{Be||(Be=document.createElement("style"),Be.setAttribute("type","text/css"),document.head.appendChild(Be)),Be.sheet&&(Be.sheet.insertRule(`@media ${j} {body{ }}`,0),Ie.add(j))}catch($){console.error($)}}(ee),this._matchMedia(ee)}}return j.\u0275fac=function(ee){return new(ee||j)(c.LFG(Ee.t4))},j.\u0275prov=c.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})();function pt(j){return{matches:"all"===j||""===j,media:j,addListener:()=>{},removeListener:()=>{}}}let _t=(()=>{class j{constructor(ee,ae){this._mediaMatcher=ee,this._zone=ae,this._queries=new Map,this._destroySubject=new M.x}ngOnDestroy(){this._destroySubject.next(),this._destroySubject.complete()}isMatched(ee){return ne((0,o.Eq)(ee)).some(Pe=>this._registerQuery(Pe).mql.matches)}observe(ee){const Pe=ne((0,o.Eq)(ee)).map(be=>this._registerQuery(be).observable);let de=(0,re.a)(Pe);return de=(0,Q.z)(de.pipe((0,fe.q)(1)),de.pipe((0,Se.T)(1),(0,ie.b)(0))),de.pipe((0,Z.U)(be=>{const Fe={matches:!1,breakpoints:{}};return be.forEach(({matches:ke,query:Xe})=>{Fe.matches=Fe.matches||ke,Fe.breakpoints[Xe]=ke}),Fe}))}_registerQuery(ee){if(this._queries.has(ee))return this._queries.get(ee);const ae=this._mediaMatcher.matchMedia(ee),de={observable:new H.y(be=>{const Fe=ke=>this._zone.run(()=>be.next(ke));return ae.addListener(Fe),()=>{ae.removeListener(Fe)}}).pipe((0,ye.O)(ae),(0,Z.U)(({matches:be})=>({query:ee,matches:be})),(0,se.R)(this._destroySubject)),mql:ae};return this._queries.set(ee,de),de}}return j.\u0275fac=function(ee){return new(ee||j)(c.LFG(Ve),c.LFG(c.R0b))},j.\u0275prov=c.Yz7({token:j,factory:j.\u0275fac,providedIn:"root"}),j})();function ne(j){return j.map($=>$.split(",")).reduce(($,ee)=>$.concat(ee)).map($=>$.trim())}},9643:(ze,me,b)=>{b.d(me,{Q8:()=>ie,wD:()=>Se});var c=b(1281),o=b(1571),M=b(9751),re=b(7579),Q=b(8372);let H=(()=>{class Z{create(se){return typeof MutationObserver>"u"?null:new MutationObserver(se)}}return Z.\u0275fac=function(se){return new(se||Z)},Z.\u0275prov=o.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z})(),fe=(()=>{class Z{constructor(se){this._mutationObserverFactory=se,this._observedElements=new Map}ngOnDestroy(){this._observedElements.forEach((se,Ee)=>this._cleanupObserver(Ee))}observe(se){const Ee=(0,c.fI)(se);return new M.y(we=>{const Be=this._observeElement(Ee).subscribe(we);return()=>{Be.unsubscribe(),this._unobserveElement(Ee)}})}_observeElement(se){if(this._observedElements.has(se))this._observedElements.get(se).count++;else{const Ee=new re.x,we=this._mutationObserverFactory.create(Ie=>Ee.next(Ie));we&&we.observe(se,{characterData:!0,childList:!0,subtree:!0}),this._observedElements.set(se,{observer:we,stream:Ee,count:1})}return this._observedElements.get(se).stream}_unobserveElement(se){this._observedElements.has(se)&&(this._observedElements.get(se).count--,this._observedElements.get(se).count||this._cleanupObserver(se))}_cleanupObserver(se){if(this._observedElements.has(se)){const{observer:Ee,stream:we}=this._observedElements.get(se);Ee&&Ee.disconnect(),we.complete(),this._observedElements.delete(se)}}}return Z.\u0275fac=function(se){return new(se||Z)(o.LFG(H))},Z.\u0275prov=o.Yz7({token:Z,factory:Z.\u0275fac,providedIn:"root"}),Z})(),Se=(()=>{class Z{get disabled(){return this._disabled}set disabled(se){this._disabled=(0,c.Ig)(se),this._disabled?this._unsubscribe():this._subscribe()}get debounce(){return this._debounce}set debounce(se){this._debounce=(0,c.su)(se),this._subscribe()}constructor(se,Ee,we){this._contentObserver=se,this._elementRef=Ee,this._ngZone=we,this.event=new o.vpe,this._disabled=!1,this._currentSubscription=null}ngAfterContentInit(){!this._currentSubscription&&!this.disabled&&this._subscribe()}ngOnDestroy(){this._unsubscribe()}_subscribe(){this._unsubscribe();const se=this._contentObserver.observe(this._elementRef);this._ngZone.runOutsideAngular(()=>{this._currentSubscription=(this.debounce?se.pipe((0,Q.b)(this.debounce)):se).subscribe(this.event)})}_unsubscribe(){var se;null===(se=this._currentSubscription)||void 0===se||se.unsubscribe()}}return Z.\u0275fac=function(se){return new(se||Z)(o.Y36(fe),o.Y36(o.SBq),o.Y36(o.R0b))},Z.\u0275dir=o.lG2({type:Z,selectors:[["","cdkObserveContent",""]],inputs:{disabled:["cdkObserveContentDisabled","disabled"],debounce:"debounce"},outputs:{event:"cdkObserveContent"},exportAs:["cdkObserveContent"]}),Z})(),ie=(()=>{class Z{}return Z.\u0275fac=function(se){return new(se||Z)},Z.\u0275mod=o.oAB({type:Z}),Z.\u0275inj=o.cJS({providers:[H]}),Z})()},8184:(ze,me,b)=>{b.d(me,{Iu:()=>bt,U8:()=>Re,X_:()=>$,Xj:()=>$e,aV:()=>tn,pI:()=>oe,xu:()=>Ht});var c=b(5589),o=b(6895),M=b(1571),re=b(1281),Q=b(3353),H=b(445),fe=b(4080),Se=b(7579),ie=b(727),Z=b(6451),ye=b(5698),se=b(2722),Ee=b(2529),we=b(9521);const Ie=(0,Q.Mq)();class Be{constructor(R,K){this._viewportRuler=R,this._previousHTMLStyles={top:"",left:""},this._isEnabled=!1,this._document=K}attach(){}enable(){if(this._canBeEnabled()){const R=this._document.documentElement;this._previousScrollPosition=this._viewportRuler.getViewportScrollPosition(),this._previousHTMLStyles.left=R.style.left||"",this._previousHTMLStyles.top=R.style.top||"",R.style.left=(0,re.HM)(-this._previousScrollPosition.left),R.style.top=(0,re.HM)(-this._previousScrollPosition.top),R.classList.add("cdk-global-scrollblock"),this._isEnabled=!0}}disable(){if(this._isEnabled){const R=this._document.documentElement,De=R.style,Ce=this._document.body.style,Ke=De.scrollBehavior||"",it=Ce.scrollBehavior||"";this._isEnabled=!1,De.left=this._previousHTMLStyles.left,De.top=this._previousHTMLStyles.top,R.classList.remove("cdk-global-scrollblock"),Ie&&(De.scrollBehavior=Ce.scrollBehavior="auto"),window.scroll(this._previousScrollPosition.left,this._previousScrollPosition.top),Ie&&(De.scrollBehavior=Ke,Ce.scrollBehavior=it)}}_canBeEnabled(){if(this._document.documentElement.classList.contains("cdk-global-scrollblock")||this._isEnabled)return!1;const K=this._document.body,De=this._viewportRuler.getViewportSize();return K.scrollHeight>De.height||K.scrollWidth>De.width}}class Je{constructor(R,K,De,Ce){this._scrollDispatcher=R,this._ngZone=K,this._viewportRuler=De,this._config=Ce,this._scrollSubscription=null,this._detach=()=>{this.disable(),this._overlayRef.hasAttached()&&this._ngZone.run(()=>this._overlayRef.detach())}}attach(R){this._overlayRef=R}enable(){if(this._scrollSubscription)return;const R=this._scrollDispatcher.scrolled(0);this._config&&this._config.threshold&&this._config.threshold>1?(this._initialScrollPosition=this._viewportRuler.getViewportScrollPosition().top,this._scrollSubscription=R.subscribe(()=>{const K=this._viewportRuler.getViewportScrollPosition().top;Math.abs(K-this._initialScrollPosition)>this._config.threshold?this._detach():this._overlayRef.updatePosition()})):this._scrollSubscription=R.subscribe(this._detach)}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}class pt{enable(){}disable(){}attach(){}}function _t(ue,R){return R.some(K=>ue.bottomK.bottom||ue.rightK.right)}function ne(ue,R){return R.some(K=>ue.topK.bottom||ue.leftK.right)}class q{constructor(R,K,De,Ce){this._scrollDispatcher=R,this._viewportRuler=K,this._ngZone=De,this._config=Ce,this._scrollSubscription=null}attach(R){this._overlayRef=R}enable(){this._scrollSubscription||(this._scrollSubscription=this._scrollDispatcher.scrolled(this._config?this._config.scrollThrottle:0).subscribe(()=>{if(this._overlayRef.updatePosition(),this._config&&this._config.autoClose){const K=this._overlayRef.overlayElement.getBoundingClientRect(),{width:De,height:Ce}=this._viewportRuler.getViewportSize();_t(K,[{width:De,height:Ce,bottom:Ce,right:De,top:0,left:0}])&&(this.disable(),this._ngZone.run(()=>this._overlayRef.detach()))}}))}disable(){this._scrollSubscription&&(this._scrollSubscription.unsubscribe(),this._scrollSubscription=null)}detach(){this.disable(),this._overlayRef=null}}let j=(()=>{class ue{constructor(K,De,Ce,Ke){this._scrollDispatcher=K,this._viewportRuler=De,this._ngZone=Ce,this.noop=()=>new pt,this.close=it=>new Je(this._scrollDispatcher,this._ngZone,this._viewportRuler,it),this.block=()=>new Be(this._viewportRuler,this._document),this.reposition=it=>new q(this._scrollDispatcher,this._viewportRuler,this._ngZone,it),this._document=Ke}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(c.mF),M.LFG(c.rL),M.LFG(M.R0b),M.LFG(o.K0))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})();class ${constructor(R){if(this.scrollStrategy=new pt,this.panelClass="",this.hasBackdrop=!1,this.backdropClass="cdk-overlay-dark-backdrop",this.disposeOnNavigation=!1,R){const K=Object.keys(R);for(const De of K)void 0!==R[De]&&(this[De]=R[De])}}}class Pe{constructor(R,K){this.connectionPair=R,this.scrollableViewProperties=K}}let Fe=(()=>{class ue{constructor(K){this._attachedOverlays=[],this._document=K}ngOnDestroy(){this.detach()}add(K){this.remove(K),this._attachedOverlays.push(K)}remove(K){const De=this._attachedOverlays.indexOf(K);De>-1&&this._attachedOverlays.splice(De,1),0===this._attachedOverlays.length&&this.detach()}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(o.K0))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),ke=(()=>{class ue extends Fe{constructor(K,De){super(K),this._ngZone=De,this._keydownListener=Ce=>{const Ke=this._attachedOverlays;for(let it=Ke.length-1;it>-1;it--)if(Ke[it]._keydownEvents.observers.length>0){const et=Ke[it]._keydownEvents;this._ngZone?this._ngZone.run(()=>et.next(Ce)):et.next(Ce);break}}}add(K){super.add(K),this._isAttached||(this._ngZone?this._ngZone.runOutsideAngular(()=>this._document.body.addEventListener("keydown",this._keydownListener)):this._document.body.addEventListener("keydown",this._keydownListener),this._isAttached=!0)}detach(){this._isAttached&&(this._document.body.removeEventListener("keydown",this._keydownListener),this._isAttached=!1)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(o.K0),M.LFG(M.R0b,8))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),Xe=(()=>{class ue extends Fe{constructor(K,De,Ce){super(K),this._platform=De,this._ngZone=Ce,this._cursorStyleIsSet=!1,this._pointerDownListener=Ke=>{this._pointerDownEventTarget=(0,Q.sA)(Ke)},this._clickListener=Ke=>{const it=(0,Q.sA)(Ke),et="click"===Ke.type&&this._pointerDownEventTarget?this._pointerDownEventTarget:it;this._pointerDownEventTarget=null;const _e=this._attachedOverlays.slice();for(let Ye=_e.length-1;Ye>-1;Ye--){const F=_e[Ye];if(F._outsidePointerEvents.observers.length<1||!F.hasAttached())continue;if(F.overlayElement.contains(it)||F.overlayElement.contains(et))break;const pe=F._outsidePointerEvents;this._ngZone?this._ngZone.run(()=>pe.next(Ke)):pe.next(Ke)}}}add(K){if(super.add(K),!this._isAttached){const De=this._document.body;this._ngZone?this._ngZone.runOutsideAngular(()=>this._addEventListeners(De)):this._addEventListeners(De),this._platform.IOS&&!this._cursorStyleIsSet&&(this._cursorOriginalValue=De.style.cursor,De.style.cursor="pointer",this._cursorStyleIsSet=!0),this._isAttached=!0}}detach(){if(this._isAttached){const K=this._document.body;K.removeEventListener("pointerdown",this._pointerDownListener,!0),K.removeEventListener("click",this._clickListener,!0),K.removeEventListener("auxclick",this._clickListener,!0),K.removeEventListener("contextmenu",this._clickListener,!0),this._platform.IOS&&this._cursorStyleIsSet&&(K.style.cursor=this._cursorOriginalValue,this._cursorStyleIsSet=!1),this._isAttached=!1}}_addEventListeners(K){K.addEventListener("pointerdown",this._pointerDownListener,!0),K.addEventListener("click",this._clickListener,!0),K.addEventListener("auxclick",this._clickListener,!0),K.addEventListener("contextmenu",this._clickListener,!0)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(o.K0),M.LFG(Q.t4),M.LFG(M.R0b,8))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),$e=(()=>{class ue{constructor(K,De){this._platform=De,this._document=K}ngOnDestroy(){var K;null===(K=this._containerElement)||void 0===K||K.remove()}getContainerElement(){return this._containerElement||this._createContainer(),this._containerElement}_createContainer(){const K="cdk-overlay-container";if(this._platform.isBrowser||(0,Q.Oy)()){const Ce=this._document.querySelectorAll(`.${K}[platform="server"], .${K}[platform="test"]`);for(let Ke=0;Kethis._backdropClick.next(pe),this._backdropTransitionendHandler=pe=>{this._disposeBackdrop(pe.target)},this._keydownEvents=new Se.x,this._outsidePointerEvents=new Se.x,Ce.scrollStrategy&&(this._scrollStrategy=Ce.scrollStrategy,this._scrollStrategy.attach(this)),this._positionStrategy=Ce.positionStrategy}get overlayElement(){return this._pane}get backdropElement(){return this._backdropElement}get hostElement(){return this._host}attach(R){!this._host.parentElement&&this._previousHostParent&&this._previousHostParent.appendChild(this._host);const K=this._portalOutlet.attach(R);return this._positionStrategy&&this._positionStrategy.attach(this),this._updateStackingOrder(),this._updateElementSize(),this._updateElementDirection(),this._scrollStrategy&&this._scrollStrategy.enable(),this._ngZone.onStable.pipe((0,ye.q)(1)).subscribe(()=>{this.hasAttached()&&this.updatePosition()}),this._togglePointerEvents(!0),this._config.hasBackdrop&&this._attachBackdrop(),this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!0),this._attachments.next(),this._keyboardDispatcher.add(this),this._config.disposeOnNavigation&&(this._locationChanges=this._location.subscribe(()=>this.dispose())),this._outsideClickDispatcher.add(this),"function"==typeof(null==K?void 0:K.onDestroy)&&K.onDestroy(()=>{this.hasAttached()&&this._ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>this.detach()))}),K}detach(){if(!this.hasAttached())return;this.detachBackdrop(),this._togglePointerEvents(!1),this._positionStrategy&&this._positionStrategy.detach&&this._positionStrategy.detach(),this._scrollStrategy&&this._scrollStrategy.disable();const R=this._portalOutlet.detach();return this._detachments.next(),this._keyboardDispatcher.remove(this),this._detachContentWhenStable(),this._locationChanges.unsubscribe(),this._outsideClickDispatcher.remove(this),R}dispose(){var R;const K=this.hasAttached();this._positionStrategy&&this._positionStrategy.dispose(),this._disposeScrollStrategy(),this._disposeBackdrop(this._backdropElement),this._locationChanges.unsubscribe(),this._keyboardDispatcher.remove(this),this._portalOutlet.dispose(),this._attachments.complete(),this._backdropClick.complete(),this._keydownEvents.complete(),this._outsidePointerEvents.complete(),this._outsideClickDispatcher.remove(this),null===(R=this._host)||void 0===R||R.remove(),this._previousHostParent=this._pane=this._host=null,K&&this._detachments.next(),this._detachments.complete()}hasAttached(){return this._portalOutlet.hasAttached()}backdropClick(){return this._backdropClick}attachments(){return this._attachments}detachments(){return this._detachments}keydownEvents(){return this._keydownEvents}outsidePointerEvents(){return this._outsidePointerEvents}getConfig(){return this._config}updatePosition(){this._positionStrategy&&this._positionStrategy.apply()}updatePositionStrategy(R){R!==this._positionStrategy&&(this._positionStrategy&&this._positionStrategy.dispose(),this._positionStrategy=R,this.hasAttached()&&(R.attach(this),this.updatePosition()))}updateSize(R){this._config={...this._config,...R},this._updateElementSize()}setDirection(R){this._config={...this._config,direction:R},this._updateElementDirection()}addPanelClass(R){this._pane&&this._toggleClasses(this._pane,R,!0)}removePanelClass(R){this._pane&&this._toggleClasses(this._pane,R,!1)}getDirection(){const R=this._config.direction;return R?"string"==typeof R?R:R.value:"ltr"}updateScrollStrategy(R){R!==this._scrollStrategy&&(this._disposeScrollStrategy(),this._scrollStrategy=R,this.hasAttached()&&(R.attach(this),R.enable()))}_updateElementDirection(){this._host.setAttribute("dir",this.getDirection())}_updateElementSize(){if(!this._pane)return;const R=this._pane.style;R.width=(0,re.HM)(this._config.width),R.height=(0,re.HM)(this._config.height),R.minWidth=(0,re.HM)(this._config.minWidth),R.minHeight=(0,re.HM)(this._config.minHeight),R.maxWidth=(0,re.HM)(this._config.maxWidth),R.maxHeight=(0,re.HM)(this._config.maxHeight)}_togglePointerEvents(R){this._pane.style.pointerEvents=R?"":"none"}_attachBackdrop(){const R="cdk-overlay-backdrop-showing";this._backdropElement=this._document.createElement("div"),this._backdropElement.classList.add("cdk-overlay-backdrop"),this._animationsDisabled&&this._backdropElement.classList.add("cdk-overlay-backdrop-noop-animation"),this._config.backdropClass&&this._toggleClasses(this._backdropElement,this._config.backdropClass,!0),this._host.parentElement.insertBefore(this._backdropElement,this._host),this._backdropElement.addEventListener("click",this._backdropClickHandler),!this._animationsDisabled&&typeof requestAnimationFrame<"u"?this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>{this._backdropElement&&this._backdropElement.classList.add(R)})}):this._backdropElement.classList.add(R)}_updateStackingOrder(){this._host.nextSibling&&this._host.parentNode.appendChild(this._host)}detachBackdrop(){const R=this._backdropElement;if(R){if(this._animationsDisabled)return void this._disposeBackdrop(R);R.classList.remove("cdk-overlay-backdrop-showing"),this._ngZone.runOutsideAngular(()=>{R.addEventListener("transitionend",this._backdropTransitionendHandler)}),R.style.pointerEvents="none",this._backdropTimeout=this._ngZone.runOutsideAngular(()=>setTimeout(()=>{this._disposeBackdrop(R)},500))}}_toggleClasses(R,K,De){const Ce=(0,re.Eq)(K||[]).filter(Ke=>!!Ke);Ce.length&&(De?R.classList.add(...Ce):R.classList.remove(...Ce))}_detachContentWhenStable(){this._ngZone.runOutsideAngular(()=>{const R=this._ngZone.onStable.pipe((0,se.R)((0,Z.T)(this._attachments,this._detachments))).subscribe(()=>{(!this._pane||!this._host||0===this._pane.children.length)&&(this._pane&&this._config.panelClass&&this._toggleClasses(this._pane,this._config.panelClass,!1),this._host&&this._host.parentElement&&(this._previousHostParent=this._host.parentElement,this._host.remove()),R.unsubscribe())})})}_disposeScrollStrategy(){const R=this._scrollStrategy;R&&(R.disable(),R.detach&&R.detach())}_disposeBackdrop(R){R&&(R.removeEventListener("click",this._backdropClickHandler),R.removeEventListener("transitionend",this._backdropTransitionendHandler),R.remove(),this._backdropElement===R&&(this._backdropElement=null)),this._backdropTimeout&&(clearTimeout(this._backdropTimeout),this._backdropTimeout=void 0)}}const At="cdk-overlay-connected-position-bounding-box",ot=/([A-Za-z%]+)$/;class st{get positions(){return this._preferredPositions}constructor(R,K,De,Ce,Ke){this._viewportRuler=K,this._document=De,this._platform=Ce,this._overlayContainer=Ke,this._lastBoundingBoxSize={width:0,height:0},this._isPushed=!1,this._canPush=!0,this._growAfterOpen=!1,this._hasFlexibleDimensions=!0,this._positionLocked=!1,this._viewportMargin=0,this._scrollables=[],this._preferredPositions=[],this._positionChanges=new Se.x,this._resizeSubscription=ie.w0.EMPTY,this._offsetX=0,this._offsetY=0,this._appliedPanelClasses=[],this.positionChanges=this._positionChanges,this.setOrigin(R)}attach(R){this._validatePositions(),R.hostElement.classList.add(At),this._overlayRef=R,this._boundingBox=R.hostElement,this._pane=R.overlayElement,this._isDisposed=!1,this._isInitialRender=!0,this._lastPosition=null,this._resizeSubscription.unsubscribe(),this._resizeSubscription=this._viewportRuler.change().subscribe(()=>{this._isInitialRender=!0,this.apply()})}apply(){if(this._isDisposed||!this._platform.isBrowser)return;if(!this._isInitialRender&&this._positionLocked&&this._lastPosition)return void this.reapplyLastPosition();this._clearPanelClasses(),this._resetOverlayElementStyles(),this._resetBoundingBoxStyles(),this._viewportRect=this._getNarrowedViewportRect(),this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const R=this._originRect,K=this._overlayRect,De=this._viewportRect,Ce=this._containerRect,Ke=[];let it;for(let et of this._preferredPositions){let _e=this._getOriginPoint(R,Ce,et),Ye=this._getOverlayPoint(_e,K,et),F=this._getOverlayFit(Ye,K,De,et);if(F.isCompletelyWithinViewport)return this._isPushed=!1,void this._applyPosition(et,_e);this._canFitWithFlexibleDimensions(F,Ye,De)?Ke.push({position:et,origin:_e,overlayRect:K,boundingBoxRect:this._calculateBoundingBoxRect(_e,et)}):(!it||it.overlayFit.visibleArea_e&&(_e=F,et=Ye)}return this._isPushed=!1,void this._applyPosition(et.position,et.origin)}if(this._canPush)return this._isPushed=!0,void this._applyPosition(it.position,it.originPoint);this._applyPosition(it.position,it.originPoint)}detach(){this._clearPanelClasses(),this._lastPosition=null,this._previousPushAmount=null,this._resizeSubscription.unsubscribe()}dispose(){this._isDisposed||(this._boundingBox&&mt(this._boundingBox.style,{top:"",left:"",right:"",bottom:"",height:"",width:"",alignItems:"",justifyContent:""}),this._pane&&this._resetOverlayElementStyles(),this._overlayRef&&this._overlayRef.hostElement.classList.remove(At),this.detach(),this._positionChanges.complete(),this._overlayRef=this._boundingBox=null,this._isDisposed=!0)}reapplyLastPosition(){if(this._isDisposed||!this._platform.isBrowser)return;const R=this._lastPosition;if(R){this._originRect=this._getOriginRect(),this._overlayRect=this._pane.getBoundingClientRect(),this._viewportRect=this._getNarrowedViewportRect(),this._containerRect=this._overlayContainer.getContainerElement().getBoundingClientRect();const K=this._getOriginPoint(this._originRect,this._containerRect,R);this._applyPosition(R,K)}else this.apply()}withScrollableContainers(R){return this._scrollables=R,this}withPositions(R){return this._preferredPositions=R,-1===R.indexOf(this._lastPosition)&&(this._lastPosition=null),this._validatePositions(),this}withViewportMargin(R){return this._viewportMargin=R,this}withFlexibleDimensions(R=!0){return this._hasFlexibleDimensions=R,this}withGrowAfterOpen(R=!0){return this._growAfterOpen=R,this}withPush(R=!0){return this._canPush=R,this}withLockedPosition(R=!0){return this._positionLocked=R,this}setOrigin(R){return this._origin=R,this}withDefaultOffsetX(R){return this._offsetX=R,this}withDefaultOffsetY(R){return this._offsetY=R,this}withTransformOriginOn(R){return this._transformOriginSelector=R,this}_getOriginPoint(R,K,De){let Ce,Ke;if("center"==De.originX)Ce=R.left+R.width/2;else{const it=this._isRtl()?R.right:R.left,et=this._isRtl()?R.left:R.right;Ce="start"==De.originX?it:et}return K.left<0&&(Ce-=K.left),Ke="center"==De.originY?R.top+R.height/2:"top"==De.originY?R.top:R.bottom,K.top<0&&(Ke-=K.top),{x:Ce,y:Ke}}_getOverlayPoint(R,K,De){let Ce,Ke;return Ce="center"==De.overlayX?-K.width/2:"start"===De.overlayX?this._isRtl()?-K.width:0:this._isRtl()?0:-K.width,Ke="center"==De.overlayY?-K.height/2:"top"==De.overlayY?0:-K.height,{x:R.x+Ce,y:R.y+Ke}}_getOverlayFit(R,K,De,Ce){const Ke=lt(K);let{x:it,y:et}=R,_e=this._getOffset(Ce,"x"),Ye=this._getOffset(Ce,"y");_e&&(it+=_e),Ye&&(et+=Ye);let te=0-et,ge=et+Ke.height-De.height,rt=this._subtractOverflows(Ke.width,0-it,it+Ke.width-De.width),at=this._subtractOverflows(Ke.height,te,ge),Vt=rt*at;return{visibleArea:Vt,isCompletelyWithinViewport:Ke.width*Ke.height===Vt,fitsInViewportVertically:at===Ke.height,fitsInViewportHorizontally:rt==Ke.width}}_canFitWithFlexibleDimensions(R,K,De){if(this._hasFlexibleDimensions){const Ce=De.bottom-K.y,Ke=De.right-K.x,it=ut(this._overlayRef.getConfig().minHeight),et=ut(this._overlayRef.getConfig().minWidth);return(R.fitsInViewportVertically||null!=it&&it<=Ce)&&(R.fitsInViewportHorizontally||null!=et&&et<=Ke)}return!1}_pushOverlayOnScreen(R,K,De){if(this._previousPushAmount&&this._positionLocked)return{x:R.x+this._previousPushAmount.x,y:R.y+this._previousPushAmount.y};const Ce=lt(K),Ke=this._viewportRect,it=Math.max(R.x+Ce.width-Ke.width,0),et=Math.max(R.y+Ce.height-Ke.height,0),_e=Math.max(Ke.top-De.top-R.y,0),Ye=Math.max(Ke.left-De.left-R.x,0);let F=0,pe=0;return F=Ce.width<=Ke.width?Ye||-it:R.xrt&&!this._isInitialRender&&!this._growAfterOpen&&(it=R.y-rt/2)}if("end"===K.overlayX&&!Ce||"start"===K.overlayX&&Ce)te=De.width-R.x+this._viewportMargin,F=R.x-this._viewportMargin;else if("start"===K.overlayX&&!Ce||"end"===K.overlayX&&Ce)pe=R.x,F=De.right-R.x;else{const ge=Math.min(De.right-R.x+De.left,R.x),rt=this._lastBoundingBoxSize.width;F=2*ge,pe=R.x-ge,F>rt&&!this._isInitialRender&&!this._growAfterOpen&&(pe=R.x-rt/2)}return{top:it,left:pe,bottom:et,right:te,width:F,height:Ke}}_setBoundingBoxStyles(R,K){const De=this._calculateBoundingBoxRect(R,K);!this._isInitialRender&&!this._growAfterOpen&&(De.height=Math.min(De.height,this._lastBoundingBoxSize.height),De.width=Math.min(De.width,this._lastBoundingBoxSize.width));const Ce={};if(this._hasExactPosition())Ce.top=Ce.left="0",Ce.bottom=Ce.right=Ce.maxHeight=Ce.maxWidth="",Ce.width=Ce.height="100%";else{const Ke=this._overlayRef.getConfig().maxHeight,it=this._overlayRef.getConfig().maxWidth;Ce.height=(0,re.HM)(De.height),Ce.top=(0,re.HM)(De.top),Ce.bottom=(0,re.HM)(De.bottom),Ce.width=(0,re.HM)(De.width),Ce.left=(0,re.HM)(De.left),Ce.right=(0,re.HM)(De.right),Ce.alignItems="center"===K.overlayX?"center":"end"===K.overlayX?"flex-end":"flex-start",Ce.justifyContent="center"===K.overlayY?"center":"bottom"===K.overlayY?"flex-end":"flex-start",Ke&&(Ce.maxHeight=(0,re.HM)(Ke)),it&&(Ce.maxWidth=(0,re.HM)(it))}this._lastBoundingBoxSize=De,mt(this._boundingBox.style,Ce)}_resetBoundingBoxStyles(){mt(this._boundingBox.style,{top:"0",left:"0",right:"0",bottom:"0",height:"",width:"",alignItems:"",justifyContent:""})}_resetOverlayElementStyles(){mt(this._pane.style,{top:"",left:"",bottom:"",right:"",position:"",transform:""})}_setOverlayElementStyles(R,K){const De={},Ce=this._hasExactPosition(),Ke=this._hasFlexibleDimensions,it=this._overlayRef.getConfig();if(Ce){const F=this._viewportRuler.getViewportScrollPosition();mt(De,this._getExactOverlayY(K,R,F)),mt(De,this._getExactOverlayX(K,R,F))}else De.position="static";let et="",_e=this._getOffset(K,"x"),Ye=this._getOffset(K,"y");_e&&(et+=`translateX(${_e}px) `),Ye&&(et+=`translateY(${Ye}px)`),De.transform=et.trim(),it.maxHeight&&(Ce?De.maxHeight=(0,re.HM)(it.maxHeight):Ke&&(De.maxHeight="")),it.maxWidth&&(Ce?De.maxWidth=(0,re.HM)(it.maxWidth):Ke&&(De.maxWidth="")),mt(this._pane.style,De)}_getExactOverlayY(R,K,De){let Ce={top:"",bottom:""},Ke=this._getOverlayPoint(K,this._overlayRect,R);return this._isPushed&&(Ke=this._pushOverlayOnScreen(Ke,this._overlayRect,De)),"bottom"===R.overlayY?Ce.bottom=this._document.documentElement.clientHeight-(Ke.y+this._overlayRect.height)+"px":Ce.top=(0,re.HM)(Ke.y),Ce}_getExactOverlayX(R,K,De){let it,Ce={left:"",right:""},Ke=this._getOverlayPoint(K,this._overlayRect,R);return this._isPushed&&(Ke=this._pushOverlayOnScreen(Ke,this._overlayRect,De)),it=this._isRtl()?"end"===R.overlayX?"left":"right":"end"===R.overlayX?"right":"left","right"===it?Ce.right=this._document.documentElement.clientWidth-(Ke.x+this._overlayRect.width)+"px":Ce.left=(0,re.HM)(Ke.x),Ce}_getScrollVisibility(){const R=this._getOriginRect(),K=this._pane.getBoundingClientRect(),De=this._scrollables.map(Ce=>Ce.getElementRef().nativeElement.getBoundingClientRect());return{isOriginClipped:ne(R,De),isOriginOutsideView:_t(R,De),isOverlayClipped:ne(K,De),isOverlayOutsideView:_t(K,De)}}_subtractOverflows(R,...K){return K.reduce((De,Ce)=>De-Math.max(Ce,0),R)}_getNarrowedViewportRect(){const R=this._document.documentElement.clientWidth,K=this._document.documentElement.clientHeight,De=this._viewportRuler.getViewportScrollPosition();return{top:De.top+this._viewportMargin,left:De.left+this._viewportMargin,right:De.left+R-this._viewportMargin,bottom:De.top+K-this._viewportMargin,width:R-2*this._viewportMargin,height:K-2*this._viewportMargin}}_isRtl(){return"rtl"===this._overlayRef.getDirection()}_hasExactPosition(){return!this._hasFlexibleDimensions||this._isPushed}_getOffset(R,K){return"x"===K?null==R.offsetX?this._offsetX:R.offsetX:null==R.offsetY?this._offsetY:R.offsetY}_validatePositions(){}_addPanelClasses(R){this._pane&&(0,re.Eq)(R).forEach(K=>{""!==K&&-1===this._appliedPanelClasses.indexOf(K)&&(this._appliedPanelClasses.push(K),this._pane.classList.add(K))})}_clearPanelClasses(){this._pane&&(this._appliedPanelClasses.forEach(R=>{this._pane.classList.remove(R)}),this._appliedPanelClasses=[])}_getOriginRect(){const R=this._origin;if(R instanceof M.SBq)return R.nativeElement.getBoundingClientRect();if(R instanceof Element)return R.getBoundingClientRect();const K=R.width||0,De=R.height||0;return{top:R.y,bottom:R.y+De,left:R.x,right:R.x+K,height:De,width:K}}}function mt(ue,R){for(let K in R)R.hasOwnProperty(K)&&(ue[K]=R[K]);return ue}function ut(ue){if("number"!=typeof ue&&null!=ue){const[R,K]=ue.split(ot);return K&&"px"!==K?null:parseFloat(R)}return ue||null}function lt(ue){return{top:Math.floor(ue.top),right:Math.floor(ue.right),bottom:Math.floor(ue.bottom),left:Math.floor(ue.left),width:Math.floor(ue.width),height:Math.floor(ue.height)}}const yt="cdk-global-overlay-wrapper";class hn{constructor(){this._cssPosition="static",this._topOffset="",this._bottomOffset="",this._alignItems="",this._xPosition="",this._xOffset="",this._width="",this._height="",this._isDisposed=!1}attach(R){const K=R.getConfig();this._overlayRef=R,this._width&&!K.width&&R.updateSize({width:this._width}),this._height&&!K.height&&R.updateSize({height:this._height}),R.hostElement.classList.add(yt),this._isDisposed=!1}top(R=""){return this._bottomOffset="",this._topOffset=R,this._alignItems="flex-start",this}left(R=""){return this._xOffset=R,this._xPosition="left",this}bottom(R=""){return this._topOffset="",this._bottomOffset=R,this._alignItems="flex-end",this}right(R=""){return this._xOffset=R,this._xPosition="right",this}start(R=""){return this._xOffset=R,this._xPosition="start",this}end(R=""){return this._xOffset=R,this._xPosition="end",this}width(R=""){return this._overlayRef?this._overlayRef.updateSize({width:R}):this._width=R,this}height(R=""){return this._overlayRef?this._overlayRef.updateSize({height:R}):this._height=R,this}centerHorizontally(R=""){return this.left(R),this._xPosition="center",this}centerVertically(R=""){return this.top(R),this._alignItems="center",this}apply(){if(!this._overlayRef||!this._overlayRef.hasAttached())return;const R=this._overlayRef.overlayElement.style,K=this._overlayRef.hostElement.style,De=this._overlayRef.getConfig(),{width:Ce,height:Ke,maxWidth:it,maxHeight:et}=De,_e=!("100%"!==Ce&&"100vw"!==Ce||it&&"100%"!==it&&"100vw"!==it),Ye=!("100%"!==Ke&&"100vh"!==Ke||et&&"100%"!==et&&"100vh"!==et),F=this._xPosition,pe=this._xOffset,te="rtl"===this._overlayRef.getConfig().direction;let ge="",rt="",at="";_e?at="flex-start":"center"===F?(at="center",te?rt=pe:ge=pe):te?"left"===F||"end"===F?(at="flex-end",ge=pe):("right"===F||"start"===F)&&(at="flex-start",rt=pe):"left"===F||"start"===F?(at="flex-start",ge=pe):("right"===F||"end"===F)&&(at="flex-end",rt=pe),R.position=this._cssPosition,R.marginLeft=_e?"0":ge,R.marginTop=Ye?"0":this._topOffset,R.marginBottom=this._bottomOffset,R.marginRight=_e?"0":rt,K.justifyContent=at,K.alignItems=Ye?"flex-start":this._alignItems}dispose(){if(this._isDisposed||!this._overlayRef)return;const R=this._overlayRef.overlayElement.style,K=this._overlayRef.hostElement,De=K.style;K.classList.remove(yt),De.justifyContent=De.alignItems=R.marginTop=R.marginBottom=R.marginLeft=R.marginRight=R.position="",this._overlayRef=null,this._isDisposed=!0}}let It=(()=>{class ue{constructor(K,De,Ce,Ke){this._viewportRuler=K,this._document=De,this._platform=Ce,this._overlayContainer=Ke}global(){return new hn}flexibleConnectedTo(K){return new st(K,this._viewportRuler,this._document,this._platform,this._overlayContainer)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(c.rL),M.LFG(o.K0),M.LFG(Q.t4),M.LFG($e))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})(),yn=0,tn=(()=>{class ue{constructor(K,De,Ce,Ke,it,et,_e,Ye,F,pe,te,ge){this.scrollStrategies=K,this._overlayContainer=De,this._componentFactoryResolver=Ce,this._positionBuilder=Ke,this._keyboardDispatcher=it,this._injector=et,this._ngZone=_e,this._document=Ye,this._directionality=F,this._location=pe,this._outsideClickDispatcher=te,this._animationsModuleType=ge}create(K){const De=this._createHostElement(),Ce=this._createPaneElement(De),Ke=this._createPortalOutlet(Ce),it=new $(K);return it.direction=it.direction||this._directionality.value,new bt(Ke,De,Ce,it,this._ngZone,this._keyboardDispatcher,this._document,this._location,this._outsideClickDispatcher,"NoopAnimations"===this._animationsModuleType)}position(){return this._positionBuilder}_createPaneElement(K){const De=this._document.createElement("div");return De.id="cdk-overlay-"+yn++,De.classList.add("cdk-overlay-pane"),K.appendChild(De),De}_createHostElement(){const K=this._document.createElement("div");return this._overlayContainer.getContainerElement().appendChild(K),K}_createPortalOutlet(K){return this._appRef||(this._appRef=this._injector.get(M.z2F)),new fe.u0(K,this._componentFactoryResolver,this._appRef,this._injector,this._document)}}return ue.\u0275fac=function(K){return new(K||ue)(M.LFG(j),M.LFG($e),M.LFG(M._Vd),M.LFG(It),M.LFG(ke),M.LFG(M.zs3),M.LFG(M.R0b),M.LFG(o.K0),M.LFG(H.Is),M.LFG(o.Ye),M.LFG(Xe),M.LFG(M.QbO,8))},ue.\u0275prov=M.Yz7({token:ue,factory:ue.\u0275fac,providedIn:"root"}),ue})();const xn=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom"},{originX:"end",originY:"top",overlayX:"end",overlayY:"bottom"},{originX:"end",originY:"bottom",overlayX:"end",overlayY:"top"}],Ct=new M.OlP("cdk-connected-overlay-scroll-strategy");let Ht=(()=>{class ue{constructor(K){this.elementRef=K}}return ue.\u0275fac=function(K){return new(K||ue)(M.Y36(M.SBq))},ue.\u0275dir=M.lG2({type:ue,selectors:[["","cdk-overlay-origin",""],["","overlay-origin",""],["","cdkOverlayOrigin",""]],exportAs:["cdkOverlayOrigin"],standalone:!0}),ue})(),oe=(()=>{class ue{get offsetX(){return this._offsetX}set offsetX(K){this._offsetX=K,this._position&&this._updatePositionStrategy(this._position)}get offsetY(){return this._offsetY}set offsetY(K){this._offsetY=K,this._position&&this._updatePositionStrategy(this._position)}get hasBackdrop(){return this._hasBackdrop}set hasBackdrop(K){this._hasBackdrop=(0,re.Ig)(K)}get lockPosition(){return this._lockPosition}set lockPosition(K){this._lockPosition=(0,re.Ig)(K)}get flexibleDimensions(){return this._flexibleDimensions}set flexibleDimensions(K){this._flexibleDimensions=(0,re.Ig)(K)}get growAfterOpen(){return this._growAfterOpen}set growAfterOpen(K){this._growAfterOpen=(0,re.Ig)(K)}get push(){return this._push}set push(K){this._push=(0,re.Ig)(K)}constructor(K,De,Ce,Ke,it){this._overlay=K,this._dir=it,this._hasBackdrop=!1,this._lockPosition=!1,this._growAfterOpen=!1,this._flexibleDimensions=!1,this._push=!1,this._backdropSubscription=ie.w0.EMPTY,this._attachSubscription=ie.w0.EMPTY,this._detachSubscription=ie.w0.EMPTY,this._positionSubscription=ie.w0.EMPTY,this.viewportMargin=0,this.open=!1,this.disableClose=!1,this.backdropClick=new M.vpe,this.positionChange=new M.vpe,this.attach=new M.vpe,this.detach=new M.vpe,this.overlayKeydown=new M.vpe,this.overlayOutsideClick=new M.vpe,this._templatePortal=new fe.UE(De,Ce),this._scrollStrategyFactory=Ke,this.scrollStrategy=this._scrollStrategyFactory()}get overlayRef(){return this._overlayRef}get dir(){return this._dir?this._dir.value:"ltr"}ngOnDestroy(){this._attachSubscription.unsubscribe(),this._detachSubscription.unsubscribe(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this._overlayRef&&this._overlayRef.dispose()}ngOnChanges(K){this._position&&(this._updatePositionStrategy(this._position),this._overlayRef.updateSize({width:this.width,minWidth:this.minWidth,height:this.height,minHeight:this.minHeight}),K.origin&&this.open&&this._position.apply()),K.open&&(this.open?this._attachOverlay():this._detachOverlay())}_createOverlay(){(!this.positions||!this.positions.length)&&(this.positions=xn);const K=this._overlayRef=this._overlay.create(this._buildConfig());this._attachSubscription=K.attachments().subscribe(()=>this.attach.emit()),this._detachSubscription=K.detachments().subscribe(()=>this.detach.emit()),K.keydownEvents().subscribe(De=>{this.overlayKeydown.next(De),De.keyCode===we.hY&&!this.disableClose&&!(0,we.Vb)(De)&&(De.preventDefault(),this._detachOverlay())}),this._overlayRef.outsidePointerEvents().subscribe(De=>{this.overlayOutsideClick.next(De)})}_buildConfig(){const K=this._position=this.positionStrategy||this._createPositionStrategy(),De=new $({direction:this._dir,positionStrategy:K,scrollStrategy:this.scrollStrategy,hasBackdrop:this.hasBackdrop});return(this.width||0===this.width)&&(De.width=this.width),(this.height||0===this.height)&&(De.height=this.height),(this.minWidth||0===this.minWidth)&&(De.minWidth=this.minWidth),(this.minHeight||0===this.minHeight)&&(De.minHeight=this.minHeight),this.backdropClass&&(De.backdropClass=this.backdropClass),this.panelClass&&(De.panelClass=this.panelClass),De}_updatePositionStrategy(K){const De=this.positions.map(Ce=>({originX:Ce.originX,originY:Ce.originY,overlayX:Ce.overlayX,overlayY:Ce.overlayY,offsetX:Ce.offsetX||this.offsetX,offsetY:Ce.offsetY||this.offsetY,panelClass:Ce.panelClass||void 0}));return K.setOrigin(this._getFlexibleConnectedPositionStrategyOrigin()).withPositions(De).withFlexibleDimensions(this.flexibleDimensions).withPush(this.push).withGrowAfterOpen(this.growAfterOpen).withViewportMargin(this.viewportMargin).withLockedPosition(this.lockPosition).withTransformOriginOn(this.transformOriginSelector)}_createPositionStrategy(){const K=this._overlay.position().flexibleConnectedTo(this._getFlexibleConnectedPositionStrategyOrigin());return this._updatePositionStrategy(K),K}_getFlexibleConnectedPositionStrategyOrigin(){return this.origin instanceof Ht?this.origin.elementRef:this.origin}_attachOverlay(){this._overlayRef?this._overlayRef.getConfig().hasBackdrop=this.hasBackdrop:this._createOverlay(),this._overlayRef.hasAttached()||this._overlayRef.attach(this._templatePortal),this.hasBackdrop?this._backdropSubscription=this._overlayRef.backdropClick().subscribe(K=>{this.backdropClick.emit(K)}):this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe(),this.positionChange.observers.length>0&&(this._positionSubscription=this._position.positionChanges.pipe((0,Ee.o)(()=>this.positionChange.observers.length>0)).subscribe(K=>{this.positionChange.emit(K),0===this.positionChange.observers.length&&this._positionSubscription.unsubscribe()}))}_detachOverlay(){this._overlayRef&&this._overlayRef.detach(),this._backdropSubscription.unsubscribe(),this._positionSubscription.unsubscribe()}}return ue.\u0275fac=function(K){return new(K||ue)(M.Y36(tn),M.Y36(M.Rgc),M.Y36(M.s_b),M.Y36(Ct),M.Y36(H.Is,8))},ue.\u0275dir=M.lG2({type:ue,selectors:[["","cdk-connected-overlay",""],["","connected-overlay",""],["","cdkConnectedOverlay",""]],inputs:{origin:["cdkConnectedOverlayOrigin","origin"],positions:["cdkConnectedOverlayPositions","positions"],positionStrategy:["cdkConnectedOverlayPositionStrategy","positionStrategy"],offsetX:["cdkConnectedOverlayOffsetX","offsetX"],offsetY:["cdkConnectedOverlayOffsetY","offsetY"],width:["cdkConnectedOverlayWidth","width"],height:["cdkConnectedOverlayHeight","height"],minWidth:["cdkConnectedOverlayMinWidth","minWidth"],minHeight:["cdkConnectedOverlayMinHeight","minHeight"],backdropClass:["cdkConnectedOverlayBackdropClass","backdropClass"],panelClass:["cdkConnectedOverlayPanelClass","panelClass"],viewportMargin:["cdkConnectedOverlayViewportMargin","viewportMargin"],scrollStrategy:["cdkConnectedOverlayScrollStrategy","scrollStrategy"],open:["cdkConnectedOverlayOpen","open"],disableClose:["cdkConnectedOverlayDisableClose","disableClose"],transformOriginSelector:["cdkConnectedOverlayTransformOriginOn","transformOriginSelector"],hasBackdrop:["cdkConnectedOverlayHasBackdrop","hasBackdrop"],lockPosition:["cdkConnectedOverlayLockPosition","lockPosition"],flexibleDimensions:["cdkConnectedOverlayFlexibleDimensions","flexibleDimensions"],growAfterOpen:["cdkConnectedOverlayGrowAfterOpen","growAfterOpen"],push:["cdkConnectedOverlayPush","push"]},outputs:{backdropClick:"backdropClick",positionChange:"positionChange",attach:"attach",detach:"detach",overlayKeydown:"overlayKeydown",overlayOutsideClick:"overlayOutsideClick"},exportAs:["cdkConnectedOverlay"],standalone:!0,features:[M.TTD]}),ue})();const G={provide:Ct,deps:[tn],useFactory:function ve(ue){return()=>ue.scrollStrategies.reposition()}};let Re=(()=>{class ue{}return ue.\u0275fac=function(K){return new(K||ue)},ue.\u0275mod=M.oAB({type:ue}),ue.\u0275inj=M.cJS({providers:[tn,G],imports:[H.vT,fe.eL,c.Cl,c.Cl]}),ue})()},3353:(ze,me,b)=>{b.d(me,{Mq:()=>we,Oy:()=>ne,_i:()=>Ie,ht:()=>pt,i$:()=>ye,kV:()=>Je,qK:()=>Se,sA:()=>_t,t4:()=>re});var c=b(1571),o=b(6895);let M;try{M=typeof Intl<"u"&&Intl.v8BreakIterator}catch{M=!1}let H,re=(()=>{class q{constructor($){this._platformId=$,this.isBrowser=this._platformId?(0,o.NF)(this._platformId):"object"==typeof document&&!!document,this.EDGE=this.isBrowser&&/(edge)/i.test(navigator.userAgent),this.TRIDENT=this.isBrowser&&/(msie|trident)/i.test(navigator.userAgent),this.BLINK=this.isBrowser&&!(!window.chrome&&!M)&&typeof CSS<"u"&&!this.EDGE&&!this.TRIDENT,this.WEBKIT=this.isBrowser&&/AppleWebKit/i.test(navigator.userAgent)&&!this.BLINK&&!this.EDGE&&!this.TRIDENT,this.IOS=this.isBrowser&&/iPad|iPhone|iPod/.test(navigator.userAgent)&&!("MSStream"in window),this.FIREFOX=this.isBrowser&&/(firefox|minefield)/i.test(navigator.userAgent),this.ANDROID=this.isBrowser&&/android/i.test(navigator.userAgent)&&!this.TRIDENT,this.SAFARI=this.isBrowser&&/safari/i.test(navigator.userAgent)&&this.WEBKIT}}return q.\u0275fac=function($){return new($||q)(c.LFG(c.Lbi))},q.\u0275prov=c.Yz7({token:q,factory:q.\u0275fac,providedIn:"root"}),q})();const fe=["color","button","checkbox","date","datetime-local","email","file","hidden","image","month","number","password","radio","range","reset","search","submit","tel","text","time","url","week"];function Se(){if(H)return H;if("object"!=typeof document||!document)return H=new Set(fe),H;let q=document.createElement("input");return H=new Set(fe.filter(j=>(q.setAttribute("type",j),q.type===j))),H}let ie,se,Ee,Be;function ye(q){return function Z(){if(null==ie&&typeof window<"u")try{window.addEventListener("test",null,Object.defineProperty({},"passive",{get:()=>ie=!0}))}finally{ie=ie||!1}return ie}()?q:!!q.capture}function we(){if(null==Ee){if("object"!=typeof document||!document||"function"!=typeof Element||!Element)return Ee=!1,Ee;if("scrollBehavior"in document.documentElement.style)Ee=!0;else{const q=Element.prototype.scrollTo;Ee=!!q&&!/\{\s*\[native code\]\s*\}/.test(q.toString())}}return Ee}function Ie(){if("object"!=typeof document||!document)return 0;if(null==se){const q=document.createElement("div"),j=q.style;q.dir="rtl",j.width="1px",j.overflow="auto",j.visibility="hidden",j.pointerEvents="none",j.position="absolute";const $=document.createElement("div"),ee=$.style;ee.width="2px",ee.height="1px",q.appendChild($),document.body.appendChild(q),se=0,0===q.scrollLeft&&(q.scrollLeft=1,se=0===q.scrollLeft?1:2),q.remove()}return se}function Je(q){if(function Ve(){if(null==Be){const q=typeof document<"u"?document.head:null;Be=!(!q||!q.createShadowRoot&&!q.attachShadow)}return Be}()){const j=q.getRootNode?q.getRootNode():null;if(typeof ShadowRoot<"u"&&ShadowRoot&&j instanceof ShadowRoot)return j}return null}function pt(){let q=typeof document<"u"&&document?document.activeElement:null;for(;q&&q.shadowRoot;){const j=q.shadowRoot.activeElement;if(j===q)break;q=j}return q}function _t(q){return q.composedPath?q.composedPath()[0]:q.target}function ne(){return typeof __karma__<"u"&&!!__karma__||typeof jasmine<"u"&&!!jasmine||typeof jest<"u"&&!!jest||typeof Mocha<"u"&&!!Mocha}},4080:(ze,me,b)=>{b.d(me,{C5:()=>Z,Pl:()=>pt,UE:()=>ye,eL:()=>ne,en:()=>Ee,u0:()=>Ie});var c=b(1571),o=b(6895);class ie{attach($){return this._attachedHost=$,$.attach(this)}detach(){let $=this._attachedHost;null!=$&&(this._attachedHost=null,$.detach())}get isAttached(){return null!=this._attachedHost}setAttachedHost($){this._attachedHost=$}}class Z extends ie{constructor($,ee,ae,Pe,de){super(),this.component=$,this.viewContainerRef=ee,this.injector=ae,this.componentFactoryResolver=Pe,this.projectableNodes=de}}class ye extends ie{constructor($,ee,ae,Pe){super(),this.templateRef=$,this.viewContainerRef=ee,this.context=ae,this.injector=Pe}get origin(){return this.templateRef.elementRef}attach($,ee=this.context){return this.context=ee,super.attach($)}detach(){return this.context=void 0,super.detach()}}class se extends ie{constructor($){super(),this.element=$ instanceof c.SBq?$.nativeElement:$}}class Ee{constructor(){this._isDisposed=!1,this.attachDomPortal=null}hasAttached(){return!!this._attachedPortal}attach($){return $ instanceof Z?(this._attachedPortal=$,this.attachComponentPortal($)):$ instanceof ye?(this._attachedPortal=$,this.attachTemplatePortal($)):this.attachDomPortal&&$ instanceof se?(this._attachedPortal=$,this.attachDomPortal($)):void 0}detach(){this._attachedPortal&&(this._attachedPortal.setAttachedHost(null),this._attachedPortal=null),this._invokeDisposeFn()}dispose(){this.hasAttached()&&this.detach(),this._invokeDisposeFn(),this._isDisposed=!0}setDisposeFn($){this._disposeFn=$}_invokeDisposeFn(){this._disposeFn&&(this._disposeFn(),this._disposeFn=null)}}class Ie extends Ee{constructor($,ee,ae,Pe,de){super(),this.outletElement=$,this._componentFactoryResolver=ee,this._appRef=ae,this._defaultInjector=Pe,this.attachDomPortal=be=>{const Fe=be.element,ke=this._document.createComment("dom-portal");Fe.parentNode.insertBefore(ke,Fe),this.outletElement.appendChild(Fe),this._attachedPortal=be,super.setDisposeFn(()=>{ke.parentNode&&ke.parentNode.replaceChild(Fe,ke)})},this._document=de}attachComponentPortal($){const ae=($.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory($.component);let Pe;return $.viewContainerRef?(Pe=$.viewContainerRef.createComponent(ae,$.viewContainerRef.length,$.injector||$.viewContainerRef.injector,$.projectableNodes||void 0),this.setDisposeFn(()=>Pe.destroy())):(Pe=ae.create($.injector||this._defaultInjector||c.zs3.NULL),this._appRef.attachView(Pe.hostView),this.setDisposeFn(()=>{this._appRef.viewCount>0&&this._appRef.detachView(Pe.hostView),Pe.destroy()})),this.outletElement.appendChild(this._getComponentRootNode(Pe)),this._attachedPortal=$,Pe}attachTemplatePortal($){let ee=$.viewContainerRef,ae=ee.createEmbeddedView($.templateRef,$.context,{injector:$.injector});return ae.rootNodes.forEach(Pe=>this.outletElement.appendChild(Pe)),ae.detectChanges(),this.setDisposeFn(()=>{let Pe=ee.indexOf(ae);-1!==Pe&&ee.remove(Pe)}),this._attachedPortal=$,ae}dispose(){super.dispose(),this.outletElement.remove()}_getComponentRootNode($){return $.hostView.rootNodes[0]}}let pt=(()=>{class j extends Ee{constructor(ee,ae,Pe){super(),this._componentFactoryResolver=ee,this._viewContainerRef=ae,this._isInitialized=!1,this.attached=new c.vpe,this.attachDomPortal=de=>{const be=de.element,Fe=this._document.createComment("dom-portal");de.setAttachedHost(this),be.parentNode.insertBefore(Fe,be),this._getRootNode().appendChild(be),this._attachedPortal=de,super.setDisposeFn(()=>{Fe.parentNode&&Fe.parentNode.replaceChild(be,Fe)})},this._document=Pe}get portal(){return this._attachedPortal}set portal(ee){this.hasAttached()&&!ee&&!this._isInitialized||(this.hasAttached()&&super.detach(),ee&&super.attach(ee),this._attachedPortal=ee||null)}get attachedRef(){return this._attachedRef}ngOnInit(){this._isInitialized=!0}ngOnDestroy(){super.dispose(),this._attachedRef=this._attachedPortal=null}attachComponentPortal(ee){ee.setAttachedHost(this);const ae=null!=ee.viewContainerRef?ee.viewContainerRef:this._viewContainerRef,de=(ee.componentFactoryResolver||this._componentFactoryResolver).resolveComponentFactory(ee.component),be=ae.createComponent(de,ae.length,ee.injector||ae.injector,ee.projectableNodes||void 0);return ae!==this._viewContainerRef&&this._getRootNode().appendChild(be.hostView.rootNodes[0]),super.setDisposeFn(()=>be.destroy()),this._attachedPortal=ee,this._attachedRef=be,this.attached.emit(be),be}attachTemplatePortal(ee){ee.setAttachedHost(this);const ae=this._viewContainerRef.createEmbeddedView(ee.templateRef,ee.context,{injector:ee.injector});return super.setDisposeFn(()=>this._viewContainerRef.clear()),this._attachedPortal=ee,this._attachedRef=ae,this.attached.emit(ae),ae}_getRootNode(){const ee=this._viewContainerRef.element.nativeElement;return ee.nodeType===ee.ELEMENT_NODE?ee:ee.parentNode}}return j.\u0275fac=function(ee){return new(ee||j)(c.Y36(c._Vd),c.Y36(c.s_b),c.Y36(o.K0))},j.\u0275dir=c.lG2({type:j,selectors:[["","cdkPortalOutlet",""]],inputs:{portal:["cdkPortalOutlet","portal"]},outputs:{attached:"attached"},exportAs:["cdkPortalOutlet"],features:[c.qOj]}),j})(),ne=(()=>{class j{}return j.\u0275fac=function(ee){return new(ee||j)},j.\u0275mod=c.oAB({type:j}),j.\u0275inj=c.cJS({}),j})()},5589:(ze,me,b)=>{b.d(me,{ZD:()=>Ct,mF:()=>ot,Cl:()=>Ht,rL:()=>ut});var c=b(1281),o=b(1571),M=b(7579),re=b(9646),Q=b(9751),H=b(4968),fe=b(4408),Se=b(727);const ie={schedule(oe){let ve=requestAnimationFrame,G=cancelAnimationFrame;const{delegate:Re}=ie;Re&&(ve=Re.requestAnimationFrame,G=Re.cancelAnimationFrame);const tt=ve(ue=>{G=void 0,oe(ue)});return new Se.w0(()=>null==G?void 0:G(tt))},requestAnimationFrame(...oe){const{delegate:ve}=ie;return((null==ve?void 0:ve.requestAnimationFrame)||requestAnimationFrame)(...oe)},cancelAnimationFrame(...oe){const{delegate:ve}=ie;return((null==ve?void 0:ve.cancelAnimationFrame)||cancelAnimationFrame)(...oe)},delegate:void 0};var ye=b(640);const Ee=new class se extends ye.v{flush(ve){this._active=!0;const G=this._scheduled;this._scheduled=void 0;const{actions:Re}=this;let tt;ve=ve||Re.shift();do{if(tt=ve.execute(ve.state,ve.delay))break}while((ve=Re[0])&&ve.id===G&&Re.shift());if(this._active=!1,tt){for(;(ve=Re[0])&&ve.id===G&&Re.shift();)ve.unsubscribe();throw tt}}}(class Z extends fe.o{constructor(ve,G){super(ve,G),this.scheduler=ve,this.work=G}requestAsyncId(ve,G,Re=0){return null!==Re&&Re>0?super.requestAsyncId(ve,G,Re):(ve.actions.push(this),ve._scheduled||(ve._scheduled=ie.requestAnimationFrame(()=>ve.flush(void 0))))}recycleAsyncId(ve,G,Re=0){var tt;if(null!=Re?Re>0:this.delay>0)return super.recycleAsyncId(ve,G,Re);const{actions:ue}=ve;null!=G&&(null===(tt=ue[ue.length-1])||void 0===tt?void 0:tt.id)!==G&&(ie.cancelAnimationFrame(G),ve._scheduled=void 0)}});var Ie=b(3101),Be=b(4986),Ve=b(4482),Je=b(8421),pt=b(5403),ne=b(2805);function q(oe,ve=Be.z){return function _t(oe){return(0,Ve.e)((ve,G)=>{let Re=!1,tt=null,ue=null,R=!1;const K=()=>{if(null==ue||ue.unsubscribe(),ue=null,Re){Re=!1;const Ce=tt;tt=null,G.next(Ce)}R&&G.complete()},De=()=>{ue=null,R&&G.complete()};ve.subscribe((0,pt.x)(G,Ce=>{Re=!0,tt=Ce,ue||(0,Je.Xf)(oe(Ce)).subscribe(ue=(0,pt.x)(G,K,De))},()=>{R=!0,(!Re||!ue||ue.closed)&&G.complete()}))})}(()=>(0,ne.H)(oe,ve))}var j=b(9300),$=b(2722),ee=b(8675),ae=b(3353),Pe=b(6895),de=b(445);const be=["contentWrapper"],Fe=["*"],ke=new o.OlP("VIRTUAL_SCROLL_STRATEGY");let ot=(()=>{class oe{constructor(G,Re,tt){this._ngZone=G,this._platform=Re,this._scrolled=new M.x,this._globalSubscription=null,this._scrolledCount=0,this.scrollContainers=new Map,this._document=tt}register(G){this.scrollContainers.has(G)||this.scrollContainers.set(G,G.elementScrolled().subscribe(()=>this._scrolled.next(G)))}deregister(G){const Re=this.scrollContainers.get(G);Re&&(Re.unsubscribe(),this.scrollContainers.delete(G))}scrolled(G=20){return this._platform.isBrowser?new Q.y(Re=>{this._globalSubscription||this._addGlobalListener();const tt=G>0?this._scrolled.pipe(q(G)).subscribe(Re):this._scrolled.subscribe(Re);return this._scrolledCount++,()=>{tt.unsubscribe(),this._scrolledCount--,this._scrolledCount||this._removeGlobalListener()}}):(0,re.of)()}ngOnDestroy(){this._removeGlobalListener(),this.scrollContainers.forEach((G,Re)=>this.deregister(Re)),this._scrolled.complete()}ancestorScrolled(G,Re){const tt=this.getAncestorScrollContainers(G);return this.scrolled(Re).pipe((0,j.h)(ue=>!ue||tt.indexOf(ue)>-1))}getAncestorScrollContainers(G){const Re=[];return this.scrollContainers.forEach((tt,ue)=>{this._scrollableContainsElement(ue,G)&&Re.push(ue)}),Re}_getWindow(){return this._document.defaultView||window}_scrollableContainsElement(G,Re){let tt=(0,c.fI)(Re),ue=G.getElementRef().nativeElement;do{if(tt==ue)return!0}while(tt=tt.parentElement);return!1}_addGlobalListener(){this._globalSubscription=this._ngZone.runOutsideAngular(()=>{const G=this._getWindow();return(0,H.R)(G.document,"scroll").subscribe(()=>this._scrolled.next())})}_removeGlobalListener(){this._globalSubscription&&(this._globalSubscription.unsubscribe(),this._globalSubscription=null)}}return oe.\u0275fac=function(G){return new(G||oe)(o.LFG(o.R0b),o.LFG(ae.t4),o.LFG(Pe.K0,8))},oe.\u0275prov=o.Yz7({token:oe,factory:oe.\u0275fac,providedIn:"root"}),oe})(),st=(()=>{class oe{constructor(G,Re,tt,ue){this.elementRef=G,this.scrollDispatcher=Re,this.ngZone=tt,this.dir=ue,this._destroyed=new M.x,this._elementScrolled=new Q.y(R=>this.ngZone.runOutsideAngular(()=>(0,H.R)(this.elementRef.nativeElement,"scroll").pipe((0,$.R)(this._destroyed)).subscribe(R)))}ngOnInit(){this.scrollDispatcher.register(this)}ngOnDestroy(){this.scrollDispatcher.deregister(this),this._destroyed.next(),this._destroyed.complete()}elementScrolled(){return this._elementScrolled}getElementRef(){return this.elementRef}scrollTo(G){const Re=this.elementRef.nativeElement,tt=this.dir&&"rtl"==this.dir.value;null==G.left&&(G.left=tt?G.end:G.start),null==G.right&&(G.right=tt?G.start:G.end),null!=G.bottom&&(G.top=Re.scrollHeight-Re.clientHeight-G.bottom),tt&&0!=(0,ae._i)()?(null!=G.left&&(G.right=Re.scrollWidth-Re.clientWidth-G.left),2==(0,ae._i)()?G.left=G.right:1==(0,ae._i)()&&(G.left=G.right?-G.right:G.right)):null!=G.right&&(G.left=Re.scrollWidth-Re.clientWidth-G.right),this._applyScrollToOptions(G)}_applyScrollToOptions(G){const Re=this.elementRef.nativeElement;(0,ae.Mq)()?Re.scrollTo(G):(null!=G.top&&(Re.scrollTop=G.top),null!=G.left&&(Re.scrollLeft=G.left))}measureScrollOffset(G){const Re="left",ue=this.elementRef.nativeElement;if("top"==G)return ue.scrollTop;if("bottom"==G)return ue.scrollHeight-ue.clientHeight-ue.scrollTop;const R=this.dir&&"rtl"==this.dir.value;return"start"==G?G=R?"right":Re:"end"==G&&(G=R?Re:"right"),R&&2==(0,ae._i)()?G==Re?ue.scrollWidth-ue.clientWidth-ue.scrollLeft:ue.scrollLeft:R&&1==(0,ae._i)()?G==Re?ue.scrollLeft+ue.scrollWidth-ue.clientWidth:-ue.scrollLeft:G==Re?ue.scrollLeft:ue.scrollWidth-ue.clientWidth-ue.scrollLeft}}return oe.\u0275fac=function(G){return new(G||oe)(o.Y36(o.SBq),o.Y36(ot),o.Y36(o.R0b),o.Y36(de.Is,8))},oe.\u0275dir=o.lG2({type:oe,selectors:[["","cdk-scrollable",""],["","cdkScrollable",""]],standalone:!0}),oe})(),ut=(()=>{class oe{constructor(G,Re,tt){this._platform=G,this._change=new M.x,this._changeListener=ue=>{this._change.next(ue)},this._document=tt,Re.runOutsideAngular(()=>{if(G.isBrowser){const ue=this._getWindow();ue.addEventListener("resize",this._changeListener),ue.addEventListener("orientationchange",this._changeListener)}this.change().subscribe(()=>this._viewportSize=null)})}ngOnDestroy(){if(this._platform.isBrowser){const G=this._getWindow();G.removeEventListener("resize",this._changeListener),G.removeEventListener("orientationchange",this._changeListener)}this._change.complete()}getViewportSize(){this._viewportSize||this._updateViewportSize();const G={width:this._viewportSize.width,height:this._viewportSize.height};return this._platform.isBrowser||(this._viewportSize=null),G}getViewportRect(){const G=this.getViewportScrollPosition(),{width:Re,height:tt}=this.getViewportSize();return{top:G.top,left:G.left,bottom:G.top+tt,right:G.left+Re,height:tt,width:Re}}getViewportScrollPosition(){if(!this._platform.isBrowser)return{top:0,left:0};const G=this._document,Re=this._getWindow(),tt=G.documentElement,ue=tt.getBoundingClientRect();return{top:-ue.top||G.body.scrollTop||Re.scrollY||tt.scrollTop||0,left:-ue.left||G.body.scrollLeft||Re.scrollX||tt.scrollLeft||0}}change(G=20){return G>0?this._change.pipe(q(G)):this._change}_getWindow(){return this._document.defaultView||window}_updateViewportSize(){const G=this._getWindow();this._viewportSize=this._platform.isBrowser?{width:G.innerWidth,height:G.innerHeight}:{width:0,height:0}}}return oe.\u0275fac=function(G){return new(G||oe)(o.LFG(ae.t4),o.LFG(o.R0b),o.LFG(Pe.K0,8))},oe.\u0275prov=o.Yz7({token:oe,factory:oe.\u0275fac,providedIn:"root"}),oe})();const lt=new o.OlP("VIRTUAL_SCROLLABLE");let jt=(()=>{class oe extends st{constructor(G,Re,tt,ue){super(G,Re,tt,ue)}measureViewportSize(G){const Re=this.elementRef.nativeElement;return"horizontal"===G?Re.clientWidth:Re.clientHeight}}return oe.\u0275fac=function(G){return new(G||oe)(o.Y36(o.SBq),o.Y36(ot),o.Y36(o.R0b),o.Y36(de.Is,8))},oe.\u0275dir=o.lG2({type:oe,features:[o.qOj]}),oe})();const yt=typeof requestAnimationFrame<"u"?Ee:Ie.E;let hn=(()=>{class oe extends jt{get orientation(){return this._orientation}set orientation(G){this._orientation!==G&&(this._orientation=G,this._calculateSpacerSize())}get appendOnly(){return this._appendOnly}set appendOnly(G){this._appendOnly=(0,c.Ig)(G)}constructor(G,Re,tt,ue,R,K,De,Ce){super(G,K,tt,R),this.elementRef=G,this._changeDetectorRef=Re,this._scrollStrategy=ue,this.scrollable=Ce,this._platform=(0,o.f3M)(ae.t4),this._detachedSubject=new M.x,this._renderedRangeSubject=new M.x,this._orientation="vertical",this._appendOnly=!1,this.scrolledIndexChange=new Q.y(Ke=>this._scrollStrategy.scrolledIndexChange.subscribe(it=>Promise.resolve().then(()=>this.ngZone.run(()=>Ke.next(it))))),this.renderedRangeStream=this._renderedRangeSubject,this._totalContentSize=0,this._totalContentWidth="",this._totalContentHeight="",this._renderedRange={start:0,end:0},this._dataLength=0,this._viewportSize=0,this._renderedContentOffset=0,this._renderedContentOffsetNeedsRewrite=!1,this._isChangeDetectionPending=!1,this._runAfterChangeDetection=[],this._viewportChanges=Se.w0.EMPTY,this._viewportChanges=De.change().subscribe(()=>{this.checkViewportSize()}),this.scrollable||(this.elementRef.nativeElement.classList.add("cdk-virtual-scrollable"),this.scrollable=this)}ngOnInit(){this._platform.isBrowser&&(this.scrollable===this&&super.ngOnInit(),this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._measureViewportSize(),this._scrollStrategy.attach(this),this.scrollable.elementScrolled().pipe((0,ee.O)(null),q(0,yt)).subscribe(()=>this._scrollStrategy.onContentScrolled()),this._markChangeDetectionNeeded()})))}ngOnDestroy(){this.detach(),this._scrollStrategy.detach(),this._renderedRangeSubject.complete(),this._detachedSubject.complete(),this._viewportChanges.unsubscribe(),super.ngOnDestroy()}attach(G){this.ngZone.runOutsideAngular(()=>{this._forOf=G,this._forOf.dataStream.pipe((0,$.R)(this._detachedSubject)).subscribe(Re=>{const tt=Re.length;tt!==this._dataLength&&(this._dataLength=tt,this._scrollStrategy.onDataLengthChanged()),this._doChangeDetection()})})}detach(){this._forOf=null,this._detachedSubject.next()}getDataLength(){return this._dataLength}getViewportSize(){return this._viewportSize}getRenderedRange(){return this._renderedRange}measureBoundingClientRectWithScrollOffset(G){return this.getElementRef().nativeElement.getBoundingClientRect()[G]}setTotalContentSize(G){this._totalContentSize!==G&&(this._totalContentSize=G,this._calculateSpacerSize(),this._markChangeDetectionNeeded())}setRenderedRange(G){(function Lt(oe,ve){return oe.start==ve.start&&oe.end==ve.end})(this._renderedRange,G)||(this.appendOnly&&(G={start:0,end:Math.max(this._renderedRange.end,G.end)}),this._renderedRangeSubject.next(this._renderedRange=G),this._markChangeDetectionNeeded(()=>this._scrollStrategy.onContentRendered()))}getOffsetToRenderedContentStart(){return this._renderedContentOffsetNeedsRewrite?null:this._renderedContentOffset}setRenderedContentOffset(G,Re="to-start"){G=this.appendOnly&&"to-start"===Re?0:G;const ue="horizontal"==this.orientation,R=ue?"X":"Y";let De=`translate${R}(${Number((ue&&this.dir&&"rtl"==this.dir.value?-1:1)*G)}px)`;this._renderedContentOffset=G,"to-end"===Re&&(De+=` translate${R}(-100%)`,this._renderedContentOffsetNeedsRewrite=!0),this._renderedContentTransform!=De&&(this._renderedContentTransform=De,this._markChangeDetectionNeeded(()=>{this._renderedContentOffsetNeedsRewrite?(this._renderedContentOffset-=this.measureRenderedContentSize(),this._renderedContentOffsetNeedsRewrite=!1,this.setRenderedContentOffset(this._renderedContentOffset)):this._scrollStrategy.onRenderedOffsetChanged()}))}scrollToOffset(G,Re="auto"){const tt={behavior:Re};"horizontal"===this.orientation?tt.start=G:tt.top=G,this.scrollable.scrollTo(tt)}scrollToIndex(G,Re="auto"){this._scrollStrategy.scrollToIndex(G,Re)}measureScrollOffset(G){let Re;return Re=this.scrollable==this?tt=>super.measureScrollOffset(tt):tt=>this.scrollable.measureScrollOffset(tt),Math.max(0,Re(null!=G?G:"horizontal"===this.orientation?"start":"top")-this.measureViewportOffset())}measureViewportOffset(G){var Re;let tt;const R="right",K="rtl"==(null===(Re=this.dir)||void 0===Re?void 0:Re.value);tt="start"==G?K?R:"left":"end"==G?K?"left":R:G||("horizontal"===this.orientation?"left":"top");const De=this.scrollable.measureBoundingClientRectWithScrollOffset(tt);return this.elementRef.nativeElement.getBoundingClientRect()[tt]-De}measureRenderedContentSize(){const G=this._contentWrapper.nativeElement;return"horizontal"===this.orientation?G.offsetWidth:G.offsetHeight}measureRangeSize(G){return this._forOf?this._forOf.measureRangeSize(G,this.orientation):0}checkViewportSize(){this._measureViewportSize(),this._scrollStrategy.onDataLengthChanged()}_measureViewportSize(){this._viewportSize=this.scrollable.measureViewportSize(this.orientation)}_markChangeDetectionNeeded(G){G&&this._runAfterChangeDetection.push(G),this._isChangeDetectionPending||(this._isChangeDetectionPending=!0,this.ngZone.runOutsideAngular(()=>Promise.resolve().then(()=>{this._doChangeDetection()})))}_doChangeDetection(){this._isChangeDetectionPending=!1,this._contentWrapper.nativeElement.style.transform=this._renderedContentTransform,this.ngZone.run(()=>this._changeDetectorRef.markForCheck());const G=this._runAfterChangeDetection;this._runAfterChangeDetection=[];for(const Re of G)Re()}_calculateSpacerSize(){this._totalContentHeight="horizontal"===this.orientation?"":`${this._totalContentSize}px`,this._totalContentWidth="horizontal"===this.orientation?`${this._totalContentSize}px`:""}}return oe.\u0275fac=function(G){return new(G||oe)(o.Y36(o.SBq),o.Y36(o.sBO),o.Y36(o.R0b),o.Y36(ke,8),o.Y36(de.Is,8),o.Y36(ot),o.Y36(ut),o.Y36(lt,8))},oe.\u0275cmp=o.Xpm({type:oe,selectors:[["cdk-virtual-scroll-viewport"]],viewQuery:function(G,Re){if(1&G&&o.Gf(be,7),2&G){let tt;o.iGM(tt=o.CRH())&&(Re._contentWrapper=tt.first)}},hostAttrs:[1,"cdk-virtual-scroll-viewport"],hostVars:4,hostBindings:function(G,Re){2&G&&o.ekj("cdk-virtual-scroll-orientation-horizontal","horizontal"===Re.orientation)("cdk-virtual-scroll-orientation-vertical","horizontal"!==Re.orientation)},inputs:{orientation:"orientation",appendOnly:"appendOnly"},outputs:{scrolledIndexChange:"scrolledIndexChange"},standalone:!0,features:[o._Bn([{provide:st,useFactory:(ve,G)=>ve||G,deps:[[new o.FiY,new o.tBr(lt)],oe]}]),o.qOj,o.jDz],ngContentSelectors:Fe,decls:4,vars:4,consts:[[1,"cdk-virtual-scroll-content-wrapper"],["contentWrapper",""],[1,"cdk-virtual-scroll-spacer"]],template:function(G,Re){1&G&&(o.F$t(),o.TgZ(0,"div",0,1),o.Hsn(2),o.qZA(),o._UZ(3,"div",2)),2&G&&(o.xp6(3),o.Udp("width",Re._totalContentWidth)("height",Re._totalContentHeight))},styles:["cdk-virtual-scroll-viewport{display:block;position:relative;transform:translateZ(0)}.cdk-virtual-scrollable{overflow:auto;will-change:scroll-position;contain:strict;-webkit-overflow-scrolling:touch}.cdk-virtual-scroll-content-wrapper{position:absolute;top:0;left:0;contain:content}[dir=rtl] .cdk-virtual-scroll-content-wrapper{right:0;left:auto}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper{min-height:100%}.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-horizontal .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-left:0;padding-right:0;margin-left:0;margin-right:0;border-left-width:0;border-right-width:0;outline:none}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper{min-width:100%}.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>dl:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ol:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>table:not([cdkVirtualFor]),.cdk-virtual-scroll-orientation-vertical .cdk-virtual-scroll-content-wrapper>ul:not([cdkVirtualFor]){padding-top:0;padding-bottom:0;margin-top:0;margin-bottom:0;border-top-width:0;border-bottom-width:0;outline:none}.cdk-virtual-scroll-spacer{height:1px;transform-origin:0 0;flex:0 0 auto}[dir=rtl] .cdk-virtual-scroll-spacer{transform-origin:100% 0}"],encapsulation:2,changeDetection:0}),oe})(),Ct=(()=>{class oe{}return oe.\u0275fac=function(G){return new(G||oe)},oe.\u0275mod=o.oAB({type:oe}),oe.\u0275inj=o.cJS({}),oe})(),Ht=(()=>{class oe{}return oe.\u0275fac=function(G){return new(G||oe)},oe.\u0275mod=o.oAB({type:oe}),oe.\u0275inj=o.cJS({imports:[de.vT,Ct,hn,de.vT,Ct]}),oe})()},6895:(ze,me,b)=>{b.d(me,{Do:()=>pt,ED:()=>lo,EM:()=>Ts,HT:()=>re,JF:()=>Hi,K0:()=>H,Mx:()=>dn,NF:()=>li,O5:()=>Tn,RF:()=>sn,S$:()=>Be,V_:()=>ie,Ye:()=>_t,b0:()=>Je,bD:()=>lr,ez:()=>Do,mk:()=>Nn,n9:()=>Ci,q:()=>M,sg:()=>xt,tP:()=>co,w_:()=>Q});var c=b(1571);let o=null;function M(){return o}function re(v){o||(o=v)}class Q{}const H=new c.OlP("DocumentToken");let fe=(()=>{class v{historyGo(D){throw new Error("Not implemented")}}return v.\u0275fac=function(D){return new(D||v)},v.\u0275prov=c.Yz7({token:v,factory:function(){return function Se(){return(0,c.LFG)(Z)}()},providedIn:"platform"}),v})();const ie=new c.OlP("Location Initialized");let Z=(()=>{class v extends fe{constructor(D){super(),this._doc=D,this._location=window.location,this._history=window.history}getBaseHrefFromDOM(){return M().getBaseHref(this._doc)}onPopState(D){const L=M().getGlobalEventTarget(this._doc,"window");return L.addEventListener("popstate",D,!1),()=>L.removeEventListener("popstate",D)}onHashChange(D){const L=M().getGlobalEventTarget(this._doc,"window");return L.addEventListener("hashchange",D,!1),()=>L.removeEventListener("hashchange",D)}get href(){return this._location.href}get protocol(){return this._location.protocol}get hostname(){return this._location.hostname}get port(){return this._location.port}get pathname(){return this._location.pathname}get search(){return this._location.search}get hash(){return this._location.hash}set pathname(D){this._location.pathname=D}pushState(D,L,le){ye()?this._history.pushState(D,L,le):this._location.hash=le}replaceState(D,L,le){ye()?this._history.replaceState(D,L,le):this._location.hash=le}forward(){this._history.forward()}back(){this._history.back()}historyGo(D=0){this._history.go(D)}getState(){return this._history.state}}return v.\u0275fac=function(D){return new(D||v)(c.LFG(H))},v.\u0275prov=c.Yz7({token:v,factory:function(){return function se(){return new Z((0,c.LFG)(H))}()},providedIn:"platform"}),v})();function ye(){return!!window.history.pushState}function Ee(v,k){if(0==v.length)return k;if(0==k.length)return v;let D=0;return v.endsWith("/")&&D++,k.startsWith("/")&&D++,2==D?v+k.substring(1):1==D?v+k:v+"/"+k}function we(v){const k=v.match(/#|\?|$/),D=k&&k.index||v.length;return v.slice(0,D-("/"===v[D-1]?1:0))+v.slice(D)}function Ie(v){return v&&"?"!==v[0]?"?"+v:v}let Be=(()=>{class v{historyGo(D){throw new Error("Not implemented")}}return v.\u0275fac=function(D){return new(D||v)},v.\u0275prov=c.Yz7({token:v,factory:function(){return(0,c.f3M)(Je)},providedIn:"root"}),v})();const Ve=new c.OlP("appBaseHref");let Je=(()=>{class v extends Be{constructor(D,L){var le,je,Qe;super(),this._platformLocation=D,this._removeListenerFns=[],this._baseHref=null!==(le=null!==(je=null!=L?L:this._platformLocation.getBaseHrefFromDOM())&&void 0!==je?je:null===(Qe=(0,c.f3M)(H).location)||void 0===Qe?void 0:Qe.origin)&&void 0!==le?le:""}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(D){this._removeListenerFns.push(this._platformLocation.onPopState(D),this._platformLocation.onHashChange(D))}getBaseHref(){return this._baseHref}prepareExternalUrl(D){return Ee(this._baseHref,D)}path(D=!1){const L=this._platformLocation.pathname+Ie(this._platformLocation.search),le=this._platformLocation.hash;return le&&D?`${L}${le}`:L}pushState(D,L,le,je){const Qe=this.prepareExternalUrl(le+Ie(je));this._platformLocation.pushState(D,L,Qe)}replaceState(D,L,le,je){const Qe=this.prepareExternalUrl(le+Ie(je));this._platformLocation.replaceState(D,L,Qe)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(D=0){var L,le;null===(L=(le=this._platformLocation).historyGo)||void 0===L||L.call(le,D)}}return v.\u0275fac=function(D){return new(D||v)(c.LFG(fe),c.LFG(Ve,8))},v.\u0275prov=c.Yz7({token:v,factory:v.\u0275fac,providedIn:"root"}),v})(),pt=(()=>{class v extends Be{constructor(D,L){super(),this._platformLocation=D,this._baseHref="",this._removeListenerFns=[],null!=L&&(this._baseHref=L)}ngOnDestroy(){for(;this._removeListenerFns.length;)this._removeListenerFns.pop()()}onPopState(D){this._removeListenerFns.push(this._platformLocation.onPopState(D),this._platformLocation.onHashChange(D))}getBaseHref(){return this._baseHref}path(D=!1){let L=this._platformLocation.hash;return null==L&&(L="#"),L.length>0?L.substring(1):L}prepareExternalUrl(D){const L=Ee(this._baseHref,D);return L.length>0?"#"+L:L}pushState(D,L,le,je){let Qe=this.prepareExternalUrl(le+Ie(je));0==Qe.length&&(Qe=this._platformLocation.pathname),this._platformLocation.pushState(D,L,Qe)}replaceState(D,L,le,je){let Qe=this.prepareExternalUrl(le+Ie(je));0==Qe.length&&(Qe=this._platformLocation.pathname),this._platformLocation.replaceState(D,L,Qe)}forward(){this._platformLocation.forward()}back(){this._platformLocation.back()}getState(){return this._platformLocation.getState()}historyGo(D=0){var L,le;null===(L=(le=this._platformLocation).historyGo)||void 0===L||L.call(le,D)}}return v.\u0275fac=function(D){return new(D||v)(c.LFG(fe),c.LFG(Ve,8))},v.\u0275prov=c.Yz7({token:v,factory:v.\u0275fac}),v})(),_t=(()=>{class v{constructor(D){this._subject=new c.vpe,this._urlChangeListeners=[],this._urlChangeSubscription=null,this._locationStrategy=D;const L=this._locationStrategy.getBaseHref();this._basePath=function $(v){if(new RegExp("^(https?:)?//").test(v)){const[,D]=v.split(/\/\/[^\/]+/);return D}return v}(we(j(L))),this._locationStrategy.onPopState(le=>{this._subject.emit({url:this.path(!0),pop:!0,state:le.state,type:le.type})})}ngOnDestroy(){var D;null===(D=this._urlChangeSubscription)||void 0===D||D.unsubscribe(),this._urlChangeListeners=[]}path(D=!1){return this.normalize(this._locationStrategy.path(D))}getState(){return this._locationStrategy.getState()}isCurrentPathEqualTo(D,L=""){return this.path()==this.normalize(D+Ie(L))}normalize(D){return v.stripTrailingSlash(function q(v,k){return v&&k.startsWith(v)?k.substring(v.length):k}(this._basePath,j(D)))}prepareExternalUrl(D){return D&&"/"!==D[0]&&(D="/"+D),this._locationStrategy.prepareExternalUrl(D)}go(D,L="",le=null){this._locationStrategy.pushState(le,"",D,L),this._notifyUrlChangeListeners(this.prepareExternalUrl(D+Ie(L)),le)}replaceState(D,L="",le=null){this._locationStrategy.replaceState(le,"",D,L),this._notifyUrlChangeListeners(this.prepareExternalUrl(D+Ie(L)),le)}forward(){this._locationStrategy.forward()}back(){this._locationStrategy.back()}historyGo(D=0){var L,le;null===(L=(le=this._locationStrategy).historyGo)||void 0===L||L.call(le,D)}onUrlChange(D){return this._urlChangeListeners.push(D),this._urlChangeSubscription||(this._urlChangeSubscription=this.subscribe(L=>{this._notifyUrlChangeListeners(L.url,L.state)})),()=>{const L=this._urlChangeListeners.indexOf(D);var le;this._urlChangeListeners.splice(L,1),0===this._urlChangeListeners.length&&(null===(le=this._urlChangeSubscription)||void 0===le||le.unsubscribe(),this._urlChangeSubscription=null)}}_notifyUrlChangeListeners(D="",L){this._urlChangeListeners.forEach(le=>le(D,L))}subscribe(D,L,le){return this._subject.subscribe({next:D,error:L,complete:le})}}return v.normalizeQueryParams=Ie,v.joinWithSlash=Ee,v.stripTrailingSlash=we,v.\u0275fac=function(D){return new(D||v)(c.LFG(Be))},v.\u0275prov=c.Yz7({token:v,factory:function(){return function ne(){return new _t((0,c.LFG)(Be))}()},providedIn:"root"}),v})();function j(v){return v.replace(/\/index.html$/,"")}function dn(v,k){k=encodeURIComponent(k);for(const D of v.split(";")){const L=D.indexOf("="),[le,je]=-1==L?[D,""]:[D.slice(0,L),D.slice(L+1)];if(le.trim()===k)return decodeURIComponent(je)}return null}let Nn=(()=>{class v{constructor(D,L,le,je){this._iterableDiffers=D,this._keyValueDiffers=L,this._ngEl=le,this._renderer=je,this._iterableDiffer=null,this._keyValueDiffer=null,this._initialClasses=[],this._rawClass=null}set klass(D){this._removeClasses(this._initialClasses),this._initialClasses="string"==typeof D?D.split(/\s+/):[],this._applyClasses(this._initialClasses),this._applyClasses(this._rawClass)}set ngClass(D){this._removeClasses(this._rawClass),this._applyClasses(this._initialClasses),this._iterableDiffer=null,this._keyValueDiffer=null,this._rawClass="string"==typeof D?D.split(/\s+/):D,this._rawClass&&((0,c.sIi)(this._rawClass)?this._iterableDiffer=this._iterableDiffers.find(this._rawClass).create():this._keyValueDiffer=this._keyValueDiffers.find(this._rawClass).create())}ngDoCheck(){if(this._iterableDiffer){const D=this._iterableDiffer.diff(this._rawClass);D&&this._applyIterableChanges(D)}else if(this._keyValueDiffer){const D=this._keyValueDiffer.diff(this._rawClass);D&&this._applyKeyValueChanges(D)}}_applyKeyValueChanges(D){D.forEachAddedItem(L=>this._toggleClass(L.key,L.currentValue)),D.forEachChangedItem(L=>this._toggleClass(L.key,L.currentValue)),D.forEachRemovedItem(L=>{L.previousValue&&this._toggleClass(L.key,!1)})}_applyIterableChanges(D){D.forEachAddedItem(L=>{if("string"!=typeof L.item)throw new Error(`NgClass can only toggle CSS classes expressed as strings, got ${(0,c.AaK)(L.item)}`);this._toggleClass(L.item,!0)}),D.forEachRemovedItem(L=>this._toggleClass(L.item,!1))}_applyClasses(D){D&&(Array.isArray(D)||D instanceof Set?D.forEach(L=>this._toggleClass(L,!0)):Object.keys(D).forEach(L=>this._toggleClass(L,!!D[L])))}_removeClasses(D){D&&(Array.isArray(D)||D instanceof Set?D.forEach(L=>this._toggleClass(L,!1)):Object.keys(D).forEach(L=>this._toggleClass(L,!1)))}_toggleClass(D,L){(D=D.trim())&&D.split(/\s+/g).forEach(le=>{L?this._renderer.addClass(this._ngEl.nativeElement,le):this._renderer.removeClass(this._ngEl.nativeElement,le)})}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.ZZ4),c.Y36(c.aQg),c.Y36(c.SBq),c.Y36(c.Qsj))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngClass",""]],inputs:{klass:["class","klass"],ngClass:"ngClass"},standalone:!0}),v})();class Vi{constructor(k,D,L,le){this.$implicit=k,this.ngForOf=D,this.index=L,this.count=le}get first(){return 0===this.index}get last(){return this.index===this.count-1}get even(){return this.index%2==0}get odd(){return!this.even}}let xt=(()=>{class v{set ngForOf(D){this._ngForOf=D,this._ngForOfDirty=!0}set ngForTrackBy(D){this._trackByFn=D}get ngForTrackBy(){return this._trackByFn}constructor(D,L,le){this._viewContainer=D,this._template=L,this._differs=le,this._ngForOf=null,this._ngForOfDirty=!0,this._differ=null}set ngForTemplate(D){D&&(this._template=D)}ngDoCheck(){if(this._ngForOfDirty){this._ngForOfDirty=!1;const D=this._ngForOf;!this._differ&&D&&(this._differ=this._differs.find(D).create(this.ngForTrackBy))}if(this._differ){const D=this._differ.diff(this._ngForOf);D&&this._applyChanges(D)}}_applyChanges(D){const L=this._viewContainer;D.forEachOperation((le,je,Qe)=>{if(null==le.previousIndex)L.createEmbeddedView(this._template,new Vi(le.item,this._ngForOf,-1,-1),null===Qe?void 0:Qe);else if(null==Qe)L.remove(null===je?void 0:je);else if(null!==je){const wt=L.get(je);L.move(wt,Qe),Yt(wt,le)}});for(let le=0,je=L.length;le{Yt(L.get(le.currentIndex),le)})}static ngTemplateContextGuard(D,L){return!0}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc),c.Y36(c.ZZ4))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngFor","","ngForOf",""]],inputs:{ngForOf:"ngForOf",ngForTrackBy:"ngForTrackBy",ngForTemplate:"ngForTemplate"},standalone:!0}),v})();function Yt(v,k){v.context.$implicit=k.item}let Tn=(()=>{class v{constructor(D,L){this._viewContainer=D,this._context=new Gn,this._thenTemplateRef=null,this._elseTemplateRef=null,this._thenViewRef=null,this._elseViewRef=null,this._thenTemplateRef=L}set ngIf(D){this._context.$implicit=this._context.ngIf=D,this._updateView()}set ngIfThen(D){vn("ngIfThen",D),this._thenTemplateRef=D,this._thenViewRef=null,this._updateView()}set ngIfElse(D){vn("ngIfElse",D),this._elseTemplateRef=D,this._elseViewRef=null,this._updateView()}_updateView(){this._context.$implicit?this._thenViewRef||(this._viewContainer.clear(),this._elseViewRef=null,this._thenTemplateRef&&(this._thenViewRef=this._viewContainer.createEmbeddedView(this._thenTemplateRef,this._context))):this._elseViewRef||(this._viewContainer.clear(),this._thenViewRef=null,this._elseTemplateRef&&(this._elseViewRef=this._viewContainer.createEmbeddedView(this._elseTemplateRef,this._context)))}static ngTemplateContextGuard(D,L){return!0}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngIf",""]],inputs:{ngIf:"ngIf",ngIfThen:"ngIfThen",ngIfElse:"ngIfElse"},standalone:!0}),v})();class Gn{constructor(){this.$implicit=null,this.ngIf=null}}function vn(v,k){if(k&&!k.createEmbeddedView)throw new Error(`${v} must be a TemplateRef, but received '${(0,c.AaK)(k)}'.`)}class Si{constructor(k,D){this._viewContainerRef=k,this._templateRef=D,this._created=!1}create(){this._created=!0,this._viewContainerRef.createEmbeddedView(this._templateRef)}destroy(){this._created=!1,this._viewContainerRef.clear()}enforceState(k){k&&!this._created?this.create():!k&&this._created&&this.destroy()}}let sn=(()=>{class v{constructor(){this._defaultViews=[],this._defaultUsed=!1,this._caseCount=0,this._lastCaseCheckIndex=0,this._lastCasesMatched=!1}set ngSwitch(D){this._ngSwitch=D,0===this._caseCount&&this._updateDefaultCases(!0)}_addCase(){return this._caseCount++}_addDefault(D){this._defaultViews.push(D)}_matchCase(D){const L=D==this._ngSwitch;return this._lastCasesMatched=this._lastCasesMatched||L,this._lastCaseCheckIndex++,this._lastCaseCheckIndex===this._caseCount&&(this._updateDefaultCases(!this._lastCasesMatched),this._lastCaseCheckIndex=0,this._lastCasesMatched=!1),L}_updateDefaultCases(D){if(this._defaultViews.length>0&&D!==this._defaultUsed){this._defaultUsed=D;for(const L of this._defaultViews)L.enforceState(D)}}}return v.\u0275fac=function(D){return new(D||v)},v.\u0275dir=c.lG2({type:v,selectors:[["","ngSwitch",""]],inputs:{ngSwitch:"ngSwitch"},standalone:!0}),v})(),Ci=(()=>{class v{constructor(D,L,le){this.ngSwitch=le,le._addCase(),this._view=new Si(D,L)}ngDoCheck(){this._view.enforceState(this.ngSwitch._matchCase(this.ngSwitchCase))}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc),c.Y36(sn,9))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngSwitchCase",""]],inputs:{ngSwitchCase:"ngSwitchCase"},standalone:!0}),v})(),lo=(()=>{class v{constructor(D,L,le){le._addDefault(new Si(D,L))}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b),c.Y36(c.Rgc),c.Y36(sn,9))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngSwitchDefault",""]],standalone:!0}),v})(),co=(()=>{class v{constructor(D){this._viewContainerRef=D,this._viewRef=null,this.ngTemplateOutletContext=null,this.ngTemplateOutlet=null,this.ngTemplateOutletInjector=null}ngOnChanges(D){if(D.ngTemplateOutlet||D.ngTemplateOutletInjector){const L=this._viewContainerRef;if(this._viewRef&&L.remove(L.indexOf(this._viewRef)),this.ngTemplateOutlet){const{ngTemplateOutlet:le,ngTemplateOutletContext:je,ngTemplateOutletInjector:Qe}=this;this._viewRef=L.createEmbeddedView(le,je,Qe?{injector:Qe}:void 0)}else this._viewRef=null}else this._viewRef&&D.ngTemplateOutletContext&&this.ngTemplateOutletContext&&(this._viewRef.context=this.ngTemplateOutletContext)}}return v.\u0275fac=function(D){return new(D||v)(c.Y36(c.s_b))},v.\u0275dir=c.lG2({type:v,selectors:[["","ngTemplateOutlet",""]],inputs:{ngTemplateOutletContext:"ngTemplateOutletContext",ngTemplateOutlet:"ngTemplateOutlet",ngTemplateOutletInjector:"ngTemplateOutletInjector"},standalone:!0,features:[c.TTD]}),v})(),Do=(()=>{class v{}return v.\u0275fac=function(D){return new(D||v)},v.\u0275mod=c.oAB({type:v}),v.\u0275inj=c.cJS({}),v})();const lr="browser";function li(v){return v===lr}let Ts=(()=>{class v{}return v.\u0275prov=(0,c.Yz7)({token:v,providedIn:"root",factory:()=>new Eo((0,c.LFG)(H),window)}),v})();class Eo{constructor(k,D){this.document=k,this.window=D,this.offset=()=>[0,0]}setOffset(k){this.offset=Array.isArray(k)?()=>k:k}getScrollPosition(){return this.supportsScrolling()?[this.window.pageXOffset,this.window.pageYOffset]:[0,0]}scrollToPosition(k){this.supportsScrolling()&&this.window.scrollTo(k[0],k[1])}scrollToAnchor(k){if(!this.supportsScrolling())return;const D=function Ii(v,k){const D=v.getElementById(k)||v.getElementsByName(k)[0];if(D)return D;if("function"==typeof v.createTreeWalker&&v.body&&(v.body.createShadowRoot||v.body.attachShadow)){const L=v.createTreeWalker(v.body,NodeFilter.SHOW_ELEMENT);let le=L.currentNode;for(;le;){const je=le.shadowRoot;if(je){const Qe=je.getElementById(k)||je.querySelector(`[name="${k}"]`);if(Qe)return Qe}le=L.nextNode()}}return null}(this.document,k);D&&(this.scrollToElement(D),D.focus())}setHistoryScrollRestoration(k){if(this.supportScrollRestoration()){const D=this.window.history;D&&D.scrollRestoration&&(D.scrollRestoration=k)}}scrollToElement(k){const D=k.getBoundingClientRect(),L=D.left+this.window.pageXOffset,le=D.top+this.window.pageYOffset,je=this.offset();this.window.scrollTo(L-je[0],le-je[1])}supportScrollRestoration(){try{if(!this.supportsScrolling())return!1;const k=Zo(this.window.history)||Zo(Object.getPrototypeOf(this.window.history));return!(!k||!k.writable&&!k.set)}catch{return!1}}supportsScrolling(){try{return!!this.window&&!!this.window.scrollTo&&"pageXOffset"in this.window}catch{return!1}}}function Zo(v){return Object.getOwnPropertyDescriptor(v,"scrollRestoration")}class Hi{}},529:(ze,me,b)=>{b.d(me,{JF:()=>gn,eN:()=>$e});var c=b(6895),o=b(1571),M=b(9646),re=b(9751),Q=b(4351),H=b(9300),fe=b(4004);class Se{}class ie{}class Z{constructor(A){this.normalizedNames=new Map,this.lazyUpdate=null,A?this.lazyInit="string"==typeof A?()=>{this.headers=new Map,A.split("\n").forEach(T=>{const z=T.indexOf(":");if(z>0){const Y=T.slice(0,z),He=Y.toLowerCase(),gt=T.slice(z+1).trim();this.maybeSetNormalizedName(Y,He),this.headers.has(He)?this.headers.get(He).push(gt):this.headers.set(He,[gt])}})}:()=>{this.headers=new Map,Object.keys(A).forEach(T=>{let z=A[T];const Y=T.toLowerCase();"string"==typeof z&&(z=[z]),z.length>0&&(this.headers.set(Y,z),this.maybeSetNormalizedName(T,Y))})}:this.headers=new Map}has(A){return this.init(),this.headers.has(A.toLowerCase())}get(A){this.init();const T=this.headers.get(A.toLowerCase());return T&&T.length>0?T[0]:null}keys(){return this.init(),Array.from(this.normalizedNames.values())}getAll(A){return this.init(),this.headers.get(A.toLowerCase())||null}append(A,T){return this.clone({name:A,value:T,op:"a"})}set(A,T){return this.clone({name:A,value:T,op:"s"})}delete(A,T){return this.clone({name:A,value:T,op:"d"})}maybeSetNormalizedName(A,T){this.normalizedNames.has(T)||this.normalizedNames.set(T,A)}init(){this.lazyInit&&(this.lazyInit instanceof Z?this.copyFrom(this.lazyInit):this.lazyInit(),this.lazyInit=null,this.lazyUpdate&&(this.lazyUpdate.forEach(A=>this.applyUpdate(A)),this.lazyUpdate=null))}copyFrom(A){A.init(),Array.from(A.headers.keys()).forEach(T=>{this.headers.set(T,A.headers.get(T)),this.normalizedNames.set(T,A.normalizedNames.get(T))})}clone(A){const T=new Z;return T.lazyInit=this.lazyInit&&this.lazyInit instanceof Z?this.lazyInit:this,T.lazyUpdate=(this.lazyUpdate||[]).concat([A]),T}applyUpdate(A){const T=A.name.toLowerCase();switch(A.op){case"a":case"s":let z=A.value;if("string"==typeof z&&(z=[z]),0===z.length)return;this.maybeSetNormalizedName(A.name,T);const Y=("a"===A.op?this.headers.get(T):void 0)||[];Y.push(...z),this.headers.set(T,Y);break;case"d":const He=A.value;if(He){let gt=this.headers.get(T);if(!gt)return;gt=gt.filter(Ft=>-1===He.indexOf(Ft)),0===gt.length?(this.headers.delete(T),this.normalizedNames.delete(T)):this.headers.set(T,gt)}else this.headers.delete(T),this.normalizedNames.delete(T)}}forEach(A){this.init(),Array.from(this.normalizedNames.keys()).forEach(T=>A(this.normalizedNames.get(T),this.headers.get(T)))}}class se{encodeKey(A){return Be(A)}encodeValue(A){return Be(A)}decodeKey(A){return decodeURIComponent(A)}decodeValue(A){return decodeURIComponent(A)}}const we=/%(\d[a-f0-9])/gi,Ie={40:"@","3A":":",24:"$","2C":",","3B":";","3D":"=","3F":"?","2F":"/"};function Be(I){return encodeURIComponent(I).replace(we,(A,T)=>{var z;return null!==(z=Ie[T])&&void 0!==z?z:A})}function Ve(I){return`${I}`}class Je{constructor(A={}){if(this.updates=null,this.cloneFrom=null,this.encoder=A.encoder||new se,A.fromString){if(A.fromObject)throw new Error("Cannot specify both fromString and fromObject.");this.map=function Ee(I,A){const T=new Map;return I.length>0&&I.replace(/^\?/,"").split("&").forEach(Y=>{const He=Y.indexOf("="),[gt,Ft]=-1==He?[A.decodeKey(Y),""]:[A.decodeKey(Y.slice(0,He)),A.decodeValue(Y.slice(He+1))],kt=T.get(gt)||[];kt.push(Ft),T.set(gt,kt)}),T}(A.fromString,this.encoder)}else A.fromObject?(this.map=new Map,Object.keys(A.fromObject).forEach(T=>{const z=A.fromObject[T],Y=Array.isArray(z)?z.map(Ve):[Ve(z)];this.map.set(T,Y)})):this.map=null}has(A){return this.init(),this.map.has(A)}get(A){this.init();const T=this.map.get(A);return T?T[0]:null}getAll(A){return this.init(),this.map.get(A)||null}keys(){return this.init(),Array.from(this.map.keys())}append(A,T){return this.clone({param:A,value:T,op:"a"})}appendAll(A){const T=[];return Object.keys(A).forEach(z=>{const Y=A[z];Array.isArray(Y)?Y.forEach(He=>{T.push({param:z,value:He,op:"a"})}):T.push({param:z,value:Y,op:"a"})}),this.clone(T)}set(A,T){return this.clone({param:A,value:T,op:"s"})}delete(A,T){return this.clone({param:A,value:T,op:"d"})}toString(){return this.init(),this.keys().map(A=>{const T=this.encoder.encodeKey(A);return this.map.get(A).map(z=>T+"="+this.encoder.encodeValue(z)).join("&")}).filter(A=>""!==A).join("&")}clone(A){const T=new Je({encoder:this.encoder});return T.cloneFrom=this.cloneFrom||this,T.updates=(this.updates||[]).concat(A),T}init(){null===this.map&&(this.map=new Map),null!==this.cloneFrom&&(this.cloneFrom.init(),this.cloneFrom.keys().forEach(A=>this.map.set(A,this.cloneFrom.map.get(A))),this.updates.forEach(A=>{switch(A.op){case"a":case"s":const T=("a"===A.op?this.map.get(A.param):void 0)||[];T.push(Ve(A.value)),this.map.set(A.param,T);break;case"d":if(void 0===A.value){this.map.delete(A.param);break}{let z=this.map.get(A.param)||[];const Y=z.indexOf(Ve(A.value));-1!==Y&&z.splice(Y,1),z.length>0?this.map.set(A.param,z):this.map.delete(A.param)}}}),this.cloneFrom=this.updates=null)}}class _t{constructor(){this.map=new Map}set(A,T){return this.map.set(A,T),this}get(A){return this.map.has(A)||this.map.set(A,A.defaultValue()),this.map.get(A)}delete(A){return this.map.delete(A),this}has(A){return this.map.has(A)}keys(){return this.map.keys()}}function q(I){return typeof ArrayBuffer<"u"&&I instanceof ArrayBuffer}function j(I){return typeof Blob<"u"&&I instanceof Blob}function $(I){return typeof FormData<"u"&&I instanceof FormData}class ae{constructor(A,T,z,Y){let He;if(this.url=T,this.body=null,this.reportProgress=!1,this.withCredentials=!1,this.responseType="json",this.method=A.toUpperCase(),function ne(I){switch(I){case"DELETE":case"GET":case"HEAD":case"OPTIONS":case"JSONP":return!1;default:return!0}}(this.method)||Y?(this.body=void 0!==z?z:null,He=Y):He=z,He&&(this.reportProgress=!!He.reportProgress,this.withCredentials=!!He.withCredentials,He.responseType&&(this.responseType=He.responseType),He.headers&&(this.headers=He.headers),He.context&&(this.context=He.context),He.params&&(this.params=He.params)),this.headers||(this.headers=new Z),this.context||(this.context=new _t),this.params){const gt=this.params.toString();if(0===gt.length)this.urlWithParams=T;else{const Ft=T.indexOf("?");this.urlWithParams=T+(-1===Ft?"?":Ft_n.set(Oe,A.setHeaders[Oe]),on)),A.setParams&&(Jn=Object.keys(A.setParams).reduce((_n,Oe)=>_n.set(Oe,A.setParams[Oe]),Jn)),new ae(z,Y,gt,{params:Jn,headers:on,context:ln,reportProgress:kt,responseType:He,withCredentials:Ft})}}var Pe=(()=>((Pe=Pe||{})[Pe.Sent=0]="Sent",Pe[Pe.UploadProgress=1]="UploadProgress",Pe[Pe.ResponseHeader=2]="ResponseHeader",Pe[Pe.DownloadProgress=3]="DownloadProgress",Pe[Pe.Response=4]="Response",Pe[Pe.User=5]="User",Pe))();class de{constructor(A,T=200,z="OK"){this.headers=A.headers||new Z,this.status=void 0!==A.status?A.status:T,this.statusText=A.statusText||z,this.url=A.url||null,this.ok=this.status>=200&&this.status<300}}class be extends de{constructor(A={}){super(A),this.type=Pe.ResponseHeader}clone(A={}){return new be({headers:A.headers||this.headers,status:void 0!==A.status?A.status:this.status,statusText:A.statusText||this.statusText,url:A.url||this.url||void 0})}}class Fe extends de{constructor(A={}){super(A),this.type=Pe.Response,this.body=void 0!==A.body?A.body:null}clone(A={}){return new Fe({body:void 0!==A.body?A.body:this.body,headers:A.headers||this.headers,status:void 0!==A.status?A.status:this.status,statusText:A.statusText||this.statusText,url:A.url||this.url||void 0})}}class ke extends de{constructor(A){super(A,0,"Unknown Error"),this.name="HttpErrorResponse",this.ok=!1,this.message=this.status>=200&&this.status<300?`Http failure during parsing for ${A.url||"(unknown url)"}`:`Http failure response for ${A.url||"(unknown url)"}: ${A.status} ${A.statusText}`,this.error=A.error||null}}function Xe(I,A){return{body:A,headers:I.headers,context:I.context,observe:I.observe,params:I.params,reportProgress:I.reportProgress,responseType:I.responseType,withCredentials:I.withCredentials}}let $e=(()=>{class I{constructor(T){this.handler=T}request(T,z,Y={}){let He;if(T instanceof ae)He=T;else{let kt,on;kt=Y.headers instanceof Z?Y.headers:new Z(Y.headers),Y.params&&(on=Y.params instanceof Je?Y.params:new Je({fromObject:Y.params})),He=new ae(T,z,void 0!==Y.body?Y.body:null,{headers:kt,context:Y.context,params:on,reportProgress:Y.reportProgress,responseType:Y.responseType||"json",withCredentials:Y.withCredentials})}const gt=(0,M.of)(He).pipe((0,Q.b)(kt=>this.handler.handle(kt)));if(T instanceof ae||"events"===Y.observe)return gt;const Ft=gt.pipe((0,H.h)(kt=>kt instanceof Fe));switch(Y.observe||"body"){case"body":switch(He.responseType){case"arraybuffer":return Ft.pipe((0,fe.U)(kt=>{if(null!==kt.body&&!(kt.body instanceof ArrayBuffer))throw new Error("Response is not an ArrayBuffer.");return kt.body}));case"blob":return Ft.pipe((0,fe.U)(kt=>{if(null!==kt.body&&!(kt.body instanceof Blob))throw new Error("Response is not a Blob.");return kt.body}));case"text":return Ft.pipe((0,fe.U)(kt=>{if(null!==kt.body&&"string"!=typeof kt.body)throw new Error("Response is not a string.");return kt.body}));default:return Ft.pipe((0,fe.U)(kt=>kt.body))}case"response":return Ft;default:throw new Error(`Unreachable: unhandled observe type ${Y.observe}}`)}}delete(T,z={}){return this.request("DELETE",T,z)}get(T,z={}){return this.request("GET",T,z)}head(T,z={}){return this.request("HEAD",T,z)}jsonp(T,z){return this.request("JSONP",T,{params:(new Je).append(z,"JSONP_CALLBACK"),observe:"body",responseType:"json"})}options(T,z={}){return this.request("OPTIONS",T,z)}patch(T,z,Y={}){return this.request("PATCH",T,Xe(Y,z))}post(T,z,Y={}){return this.request("POST",T,Xe(Y,z))}put(T,z,Y={}){return this.request("PUT",T,Xe(Y,z))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(Se))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();function bt(I,A){return A(I)}function At(I,A){return(T,z)=>A.intercept(T,{handle:Y=>I(Y,z)})}const st=new o.OlP("HTTP_INTERCEPTORS"),mt=new o.OlP("HTTP_INTERCEPTOR_FNS");function ut(){let I=null;return(A,T)=>{var z;return null===I&&(I=(null!==(z=(0,o.f3M)(st,{optional:!0}))&&void 0!==z?z:[]).reduceRight(At,bt)),I(A,T)}}let lt=(()=>{class I extends Se{constructor(T,z){super(),this.backend=T,this.injector=z,this.chain=null}handle(T){if(null===this.chain){const z=Array.from(new Set(this.injector.get(mt)));this.chain=z.reduceRight((Y,He)=>function ot(I,A,T){return(z,Y)=>T.runInContext(()=>A(z,He=>I(He,Y)))}(Y,He,this.injector),bt)}return this.chain(T,z=>this.backend.handle(z))}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(ie),o.LFG(o.lqb))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();const ve=/^\)\]\}',?\n/;let Re=(()=>{class I{constructor(T){this.xhrFactory=T}handle(T){if("JSONP"===T.method)throw new Error("Attempted to construct Jsonp request without HttpClientJsonpModule installed.");return new re.y(z=>{const Y=this.xhrFactory.build();if(Y.open(T.method,T.urlWithParams),T.withCredentials&&(Y.withCredentials=!0),T.headers.forEach((Oe,xe)=>Y.setRequestHeader(Oe,xe.join(","))),T.headers.has("Accept")||Y.setRequestHeader("Accept","application/json, text/plain, */*"),!T.headers.has("Content-Type")){const Oe=T.detectContentTypeHeader();null!==Oe&&Y.setRequestHeader("Content-Type",Oe)}if(T.responseType){const Oe=T.responseType.toLowerCase();Y.responseType="json"!==Oe?Oe:"text"}const He=T.serializeBody();let gt=null;const Ft=()=>{if(null!==gt)return gt;const Oe=Y.statusText||"OK",xe=new Z(Y.getAllResponseHeaders()),J=function G(I){return"responseURL"in I&&I.responseURL?I.responseURL:/^X-Request-URL:/m.test(I.getAllResponseHeaders())?I.getResponseHeader("X-Request-URL"):null}(Y)||T.url;return gt=new be({headers:xe,status:Y.status,statusText:Oe,url:J}),gt},kt=()=>{let{headers:Oe,status:xe,statusText:J,url:Ne}=Ft(),Ge=null;204!==xe&&(Ge=typeof Y.response>"u"?Y.responseText:Y.response),0===xe&&(xe=Ge?200:0);let Tt=xe>=200&&xe<300;if("json"===T.responseType&&"string"==typeof Ge){const Jt=Ge;Ge=Ge.replace(ve,"");try{Ge=""!==Ge?JSON.parse(Ge):null}catch(un){Ge=Jt,Tt&&(Tt=!1,Ge={error:un,text:Ge})}}Tt?(z.next(new Fe({body:Ge,headers:Oe,status:xe,statusText:J,url:Ne||void 0})),z.complete()):z.error(new ke({error:Ge,headers:Oe,status:xe,statusText:J,url:Ne||void 0}))},on=Oe=>{const{url:xe}=Ft(),J=new ke({error:Oe,status:Y.status||0,statusText:Y.statusText||"Unknown Error",url:xe||void 0});z.error(J)};let Jn=!1;const ln=Oe=>{Jn||(z.next(Ft()),Jn=!0);let xe={type:Pe.DownloadProgress,loaded:Oe.loaded};Oe.lengthComputable&&(xe.total=Oe.total),"text"===T.responseType&&Y.responseText&&(xe.partialText=Y.responseText),z.next(xe)},_n=Oe=>{let xe={type:Pe.UploadProgress,loaded:Oe.loaded};Oe.lengthComputable&&(xe.total=Oe.total),z.next(xe)};return Y.addEventListener("load",kt),Y.addEventListener("error",on),Y.addEventListener("timeout",on),Y.addEventListener("abort",on),T.reportProgress&&(Y.addEventListener("progress",ln),null!==He&&Y.upload&&Y.upload.addEventListener("progress",_n)),Y.send(He),z.next({type:Pe.Sent}),()=>{Y.removeEventListener("error",on),Y.removeEventListener("abort",on),Y.removeEventListener("load",kt),Y.removeEventListener("timeout",on),T.reportProgress&&(Y.removeEventListener("progress",ln),null!==He&&Y.upload&&Y.upload.removeEventListener("progress",_n)),Y.readyState!==Y.DONE&&Y.abort()}})}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(c.JF))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();const tt=new o.OlP("XSRF_ENABLED"),ue="XSRF-TOKEN",R=new o.OlP("XSRF_COOKIE_NAME",{providedIn:"root",factory:()=>ue}),K="X-XSRF-TOKEN",De=new o.OlP("XSRF_HEADER_NAME",{providedIn:"root",factory:()=>K});class Ce{}let Ke=(()=>{class I{constructor(T,z,Y){this.doc=T,this.platform=z,this.cookieName=Y,this.lastCookieString="",this.lastToken=null,this.parseCount=0}getToken(){if("server"===this.platform)return null;const T=this.doc.cookie||"";return T!==this.lastCookieString&&(this.parseCount++,this.lastToken=(0,c.Mx)(T,this.cookieName),this.lastCookieString=T),this.lastToken}}return I.\u0275fac=function(T){return new(T||I)(o.LFG(c.K0),o.LFG(o.Lbi),o.LFG(R))},I.\u0275prov=o.Yz7({token:I,factory:I.\u0275fac}),I})();function it(I,A){const T=I.url.toLowerCase();if(!(0,o.f3M)(tt)||"GET"===I.method||"HEAD"===I.method||T.startsWith("http://")||T.startsWith("https://"))return A(I);const z=(0,o.f3M)(Ce).getToken(),Y=(0,o.f3M)(De);return null!=z&&!I.headers.has(Y)&&(I=I.clone({headers:I.headers.set(Y,z)})),A(I)}var _e=(()=>((_e=_e||{})[_e.Interceptors=0]="Interceptors",_e[_e.LegacyInterceptors=1]="LegacyInterceptors",_e[_e.CustomXsrfConfiguration=2]="CustomXsrfConfiguration",_e[_e.NoXsrfProtection=3]="NoXsrfProtection",_e[_e.JsonpSupport=4]="JsonpSupport",_e[_e.RequestsMadeViaParent=5]="RequestsMadeViaParent",_e))();function Ye(I,A){return{\u0275kind:I,\u0275providers:A}}function F(...I){const A=[$e,Re,lt,{provide:Se,useExisting:lt},{provide:ie,useExisting:Re},{provide:mt,useValue:it,multi:!0},{provide:tt,useValue:!0},{provide:Ce,useClass:Ke}];for(const T of I)A.push(...T.\u0275providers);return(0,o.MR2)(A)}const te=new o.OlP("LEGACY_INTERCEPTOR_FN");function rt({cookieName:I,headerName:A}){const T=[];return void 0!==I&&T.push({provide:R,useValue:I}),void 0!==A&&T.push({provide:De,useValue:A}),Ye(_e.CustomXsrfConfiguration,T)}let gn=(()=>{class I{}return I.\u0275fac=function(T){return new(T||I)},I.\u0275mod=o.oAB({type:I}),I.\u0275inj=o.cJS({providers:[F(Ye(_e.LegacyInterceptors,[{provide:te,useFactory:ut},{provide:mt,useExisting:te,multi:!0}]),rt({cookieName:ue,headerName:K}))]}),I})()},1571:(ze,me,b)=>{b.d(me,{QbO:()=>ax,tb:()=>lg,AFp:()=>rg,ip1:()=>og,CZH:()=>jc,hGG:()=>Yx,z2F:()=>$c,sBO:()=>Ix,Sil:()=>hx,_Vd:()=>wl,EJc:()=>dx,Xts:()=>Dd,SBq:()=>Al,lqb:()=>va,qLn:()=>Tl,vpe:()=>ss,tBr:()=>Gs,XFs:()=>Ce,OlP:()=>In,zs3:()=>ba,ZZ4:()=>qu,aQg:()=>Xu,soG:()=>zc,YKP:()=>dm,h0i:()=>il,PXZ:()=>Mx,R0b:()=>ir,FiY:()=>ha,Lbi:()=>sx,g9A:()=>ag,n_E:()=>Nc,Qsj:()=>S_,FYo:()=>Lh,JOm:()=>Mr,q3G:()=>pi,tp0:()=>gs,Rgc:()=>jl,dDg:()=>xx,eoX:()=>mg,GfV:()=>Nh,s_b:()=>Vc,ifc:()=>J,MMx:()=>wu,Lck:()=>n0,eFA:()=>vg,G48:()=>Ox,Gpc:()=>Ie,f3M:()=>Y,$WT:()=>ai,MR2:()=>p_,_c5:()=>Wx,c2e:()=>lx,zSh:()=>Ad,wAp:()=>Kt,vHH:()=>ne,lri:()=>fg,rWj:()=>pg,JZr:()=>_t,EiD:()=>xh,mCW:()=>fc,qzn:()=>Ba,JVY:()=>Zg,pB0:()=>Jg,eBb:()=>Xg,L6k:()=>qg,LAX:()=>Qg,D6c:()=>Kx,cg1:()=>vu,kL8:()=>Fp,dqk:()=>F,Z0I:()=>oe,sIi:()=>kl,CqO:()=>Hf,QGY:()=>ou,F4k:()=>Uf,RDi:()=>jg,AaK:()=>se,z3N:()=>xs,qOj:()=>Xd,TTD:()=>Hi,_Bn:()=>cm,jDz:()=>hm,xp6:()=>Gh,uIk:()=>eu,Tol:()=>dp,Gre:()=>Ep,ekj:()=>hu,Suo:()=>Rm,Xpm:()=>Ti,lG2:()=>Bi,Yz7:()=>tn,cJS:()=>Ct,oAB:()=>Zi,Yjl:()=>or,Y36:()=>za,_UZ:()=>iu,BQk:()=>Sc,ynx:()=>Tc,qZA:()=>Ac,TgZ:()=>wc,EpF:()=>Vf,n5z:()=>zs,Ikx:()=>_u,LFG:()=>T,$8M:()=>qr,$Z:()=>sf,NdJ:()=>ru,CRH:()=>Fm,kcU:()=>k,O4$:()=>hs,oxw:()=>Wf,ALo:()=>Mm,lcZ:()=>wm,Hsn:()=>Kf,F$t:()=>Yf,Q6J:()=>tu,s9C:()=>su,kEZ:()=>bm,iGM:()=>km,MAs:()=>Nf,KtG:()=>di,evT:()=>Bh,CHM:()=>fn,oJD:()=>Ch,LSH:()=>Cd,P3R:()=>Eh,Udp:()=>uu,YNc:()=>Lf,W1O:()=>Vm,_uU:()=>_p,Oqu:()=>pu,hij:()=>kc,AsE:()=>mu,lnq:()=>gu,Gf:()=>Pm});var c=b(7579),o=b(727),M=b(9751),re=b(6451),Q=b(8421),H=b(930),fe=b(4482);function ie(e,t,...n){if(!0===t)return void e();if(!1===t)return;const i=new H.Hp({next:()=>{i.unsubscribe(),e()}});return(0,Q.Xf)(t(...n)).subscribe(i)}function Z(e){for(let t in e)if(e[t]===Z)return t;throw Error("Could not find renamed property on target object.")}function ye(e,t){for(const n in t)t.hasOwnProperty(n)&&!e.hasOwnProperty(n)&&(e[n]=t[n])}function se(e){if("string"==typeof e)return e;if(Array.isArray(e))return"["+e.map(se).join(", ")+"]";if(null==e)return""+e;if(e.overriddenName)return`${e.overriddenName}`;if(e.name)return`${e.name}`;const t=e.toString();if(null==t)return""+t;const n=t.indexOf("\n");return-1===n?t:t.substring(0,n)}function Ee(e,t){return null==e||""===e?null===t?"":t:null==t||""===t?e:e+" "+t}const we=Z({__forward_ref__:Z});function Ie(e){return e.__forward_ref__=Ie,e.toString=function(){return se(this())},e}function Be(e){return Ve(e)?e():e}function Ve(e){return"function"==typeof e&&e.hasOwnProperty(we)&&e.__forward_ref__===Ie}function Je(e){return e&&!!e.\u0275providers}const _t="https://g.co/ng/security#xss";class ne extends Error{constructor(t,n){super(function q(e,t){return`NG0${Math.abs(e)}${t?": "+t.trim():""}`}(t,n)),this.code=t}}function j(e){return"string"==typeof e?e:null==e?"":String(e)}function de(e,t){throw new ne(-201,!1)}function Lt(e,t){null==e&&function yt(e,t,n,i){throw new Error(`ASSERTION ERROR: ${e}`+(null==i?"":` [Expected=> ${n} ${i} ${t} <=Actual]`))}(t,e,null,"!=")}function tn(e){return{token:e.token,providedIn:e.providedIn||null,factory:e.factory,value:void 0}}function Ct(e){return{providers:e.providers||[],imports:e.imports||[]}}function Ht(e){return ve(e,ue)||ve(e,K)}function oe(e){return null!==Ht(e)}function ve(e,t){return e.hasOwnProperty(t)?e[t]:null}function tt(e){return e&&(e.hasOwnProperty(R)||e.hasOwnProperty(De))?e[R]:null}const ue=Z({\u0275prov:Z}),R=Z({\u0275inj:Z}),K=Z({ngInjectableDef:Z}),De=Z({ngInjectorDef:Z});var Ce=(()=>((Ce=Ce||{})[Ce.Default=0]="Default",Ce[Ce.Host=1]="Host",Ce[Ce.Self=2]="Self",Ce[Ce.SkipSelf=4]="SkipSelf",Ce[Ce.Optional=8]="Optional",Ce))();let Ke;function et(e){const t=Ke;return Ke=e,t}function _e(e,t,n){const i=Ht(e);return i&&"root"==i.providedIn?void 0===i.value?i.value=i.factory():i.value:n&Ce.Optional?null:void 0!==t?t:void de(se(e))}const F=(()=>typeof globalThis<"u"&&globalThis||typeof global<"u"&&global||typeof window<"u"&&window||typeof self<"u"&&typeof WorkerGlobalScope<"u"&&self instanceof WorkerGlobalScope&&self)(),rt={},at="__NG_DI_FLAG__",Vt="ngTempTokenPath",mn=/\n/gm,Ze="__source";let Me;function I(e){const t=Me;return Me=e,t}function A(e,t=Ce.Default){if(void 0===Me)throw new ne(-203,!1);return null===Me?_e(e,void 0,t):Me.get(e,t&Ce.Optional?null:void 0,t)}function T(e,t=Ce.Default){return(function it(){return Ke}()||A)(Be(e),t)}function Y(e,t=Ce.Default){return T(e,He(t))}function He(e){return typeof e>"u"||"number"==typeof e?e:0|(e.optional&&8)|(e.host&&1)|(e.self&&2)|(e.skipSelf&&4)}function gt(e){const t=[];for(let n=0;n((_n=_n||{})[_n.OnPush=0]="OnPush",_n[_n.Default=1]="Default",_n))(),J=(()=>{return(e=J||(J={}))[e.Emulated=0]="Emulated",e[e.None=2]="None",e[e.ShadowDom=3]="ShadowDom",J;var e})();const Ne={},Ge=[],Tt=Z({\u0275cmp:Z}),Jt=Z({\u0275dir:Z}),un=Z({\u0275pipe:Z}),An=Z({\u0275mod:Z}),jn=Z({\u0275fac:Z}),si=Z({__NG_ELEMENT_ID__:Z});let Li=0;function Ti(e){return ln(()=>{const n=!0===e.standalone,i={},r={type:e.type,providersResolver:null,decls:e.decls,vars:e.vars,factory:null,template:e.template||null,consts:e.consts||null,ngContentSelectors:e.ngContentSelectors,hostBindings:e.hostBindings||null,hostVars:e.hostVars||0,hostAttrs:e.hostAttrs||null,contentQueries:e.contentQueries||null,declaredInputs:i,inputs:null,outputs:null,exportAs:e.exportAs||null,onPush:e.changeDetection===_n.OnPush,directiveDefs:null,pipeDefs:null,standalone:n,dependencies:n&&e.dependencies||null,getStandaloneInjector:null,selectors:e.selectors||Ge,viewQuery:e.viewQuery||null,features:e.features||null,data:e.data||{},encapsulation:e.encapsulation||J.Emulated,id:"c"+Li++,styles:e.styles||Ge,_:null,setInput:null,schemas:e.schemas||null,tView:null,findHostDirectiveDefs:null,hostDirectives:null},a=e.dependencies,h=e.features;return r.inputs=bo(e.inputs,i),r.outputs=bo(e.outputs),h&&h.forEach(m=>m(r)),r.directiveDefs=a?()=>("function"==typeof a?a():a).map(Ni).filter(xi):null,r.pipeDefs=a?()=>("function"==typeof a?a():a).map($n).filter(xi):null,r})}function Ni(e){return dn(e)||Nn(e)}function xi(e){return null!==e}function Zi(e){return ln(()=>({type:e.type,bootstrap:e.bootstrap||Ge,declarations:e.declarations||Ge,imports:e.imports||Ge,exports:e.exports||Ge,transitiveCompileScopes:null,schemas:e.schemas||null,id:e.id||null}))}function bo(e,t){if(null==e)return Ne;const n={};for(const i in e)if(e.hasOwnProperty(i)){let r=e[i],a=r;Array.isArray(r)&&(a=r[1],r=r[0]),n[r]=i,t&&(t[r]=a)}return n}const Bi=Ti;function or(e){return{type:e.type,name:e.name,factory:null,pure:!1!==e.pure,standalone:!0===e.standalone,onDestroy:e.type.prototype.ngOnDestroy||null}}function dn(e){return e[Tt]||null}function Nn(e){return e[Jt]||null}function $n(e){return e[un]||null}function ai(e){const t=dn(e)||Nn(e)||$n(e);return null!==t&&t.standalone}function Bn(e,t){const n=e[An]||null;if(!n&&!0===t)throw new Error(`Type ${se(e)} does not have '\u0275mod' property.`);return n}function Yn(e){return Array.isArray(e)&&"object"==typeof e[1]}function Pn(e){return Array.isArray(e)&&!0===e[1]}function mi(e){return 0!=(4&e.flags)}function uo(e){return e.componentOffset>-1}function Co(e){return 1==(1&e.flags)}function Di(e){return null!==e.template}function Kn(e){return 0!=(256&e[2])}function Ii(e,t){return e.hasOwnProperty(jn)?e[jn]:null}class Nr{constructor(t,n,i){this.previousValue=t,this.currentValue=n,this.firstChange=i}isFirstChange(){return this.firstChange}}function Hi(){return dr}function dr(e){return e.type.prototype.ngOnChanges&&(e.setInput=ea),Mo}function Mo(){const e=Vr(this),t=null==e?void 0:e.current;if(t){const n=e.previous;if(n===Ne)e.previous=t;else for(let i in t)n[i]=t[i];e.current=null,this.ngOnChanges(t)}}function ea(e,t,n,i){const r=this.declaredInputs[n],a=Vr(e)||function Ss(e,t){return e[Br]=t}(e,{previous:Ne,current:null}),h=a.current||(a.current={}),m=a.previous,x=m[r];h[r]=new Nr(x&&x.currentValue,t,m===Ne),e[i]=t}Hi.ngInherit=!0;const Br="__ngSimpleChanges__";function Vr(e){return e[Br]||null}function bn(e){for(;Array.isArray(e);)e=e[0];return e}function zi(e,t){return bn(t[e])}function ci(e,t){return bn(t[e.index])}function as(e,t){return e.data[t]}function Ji(e,t){return e[t]}function gi(e,t){const n=t[e];return Yn(n)?n:n[0]}function $i(e){return 64==(64&e[2])}function ho(e,t){return null==t?null:e[t]}function Os(e){e[18]=0}function wo(e,t){e[5]+=t;let n=e,i=e[3];for(;null!==i&&(1===t&&1===n[5]||-1===t&&0===n[5]);)i[5]+=t,n=i,i=i[3]}const zt={lFrame:Ao(null),bindingsEnabled:!0};function E(){return zt.bindingsEnabled}function ce(){return zt.lFrame.lView}function dt(){return zt.lFrame.tView}function fn(e){return zt.lFrame.contextLView=e,e[8]}function di(e){return zt.lFrame.contextLView=null,e}function Sn(){let e=eo();for(;null!==e&&64===e.type;)e=e.parent;return e}function eo(){return zt.lFrame.currentTNode}function _i(e,t){const n=zt.lFrame;n.currentTNode=e,n.isParent=t}function Lo(){return zt.lFrame.isParent}function No(){zt.lFrame.isParent=!1}function ni(){const e=zt.lFrame;let t=e.bindingRootIndex;return-1===t&&(t=e.bindingRootIndex=e.tView.bindingStartIndex),t}function no(){return zt.lFrame.bindingIndex}function io(){return zt.lFrame.bindingIndex++}function Vn(e){const t=zt.lFrame,n=t.bindingIndex;return t.bindingIndex=t.bindingIndex+e,n}function Ps(e,t){const n=zt.lFrame;n.bindingIndex=n.bindingRootIndex=e,Zn(t)}function Zn(e){zt.lFrame.currentDirectiveIndex=e}function jr(){return zt.lFrame.currentQueryIndex}function qo(e){zt.lFrame.currentQueryIndex=e}function zr(e){const t=e[1];return 2===t.type?t.declTNode:1===t.type?e[6]:null}function $r(e,t,n){if(n&Ce.SkipSelf){let r=t,a=e;for(;!(r=r.parent,null!==r||n&Ce.Host||(r=zr(a),null===r||(a=a[15],10&r.type))););if(null===r)return!1;t=r,e=a}const i=zt.lFrame=Fs();return i.currentTNode=t,i.lView=e,!0}function Xo(e){const t=Fs(),n=e[1];zt.lFrame=t,t.currentTNode=n.firstChild,t.lView=e,t.tView=n,t.contextLView=e,t.bindingIndex=n.bindingStartIndex,t.inI18n=!1}function Fs(){const e=zt.lFrame,t=null===e?null:e.child;return null===t?Ao(e):t}function Ao(e){const t={currentTNode:null,isParent:!0,lView:null,tView:null,selectedIndex:-1,contextLView:null,elementDepthCount:0,currentNamespace:null,currentDirectiveIndex:-1,bindingRootIndex:-1,bindingIndex:-1,currentQueryIndex:0,parent:e,child:null,inI18n:!1};return null!==e&&(e.child=t),t}function us(){const e=zt.lFrame;return zt.lFrame=e.parent,e.currentTNode=null,e.lView=null,e}const oa=us;function ra(){const e=us();e.isParent=!0,e.tView=null,e.selectedIndex=-1,e.contextLView=null,e.elementDepthCount=0,e.currentDirectiveIndex=-1,e.currentNamespace=null,e.bindingRootIndex=-1,e.bindingIndex=-1,e.currentQueryIndex=0}function ui(){return zt.lFrame.selectedIndex}function mr(e){zt.lFrame.selectedIndex=e}function On(){const e=zt.lFrame;return as(e.tView,e.selectedIndex)}function hs(){zt.lFrame.currentNamespace="svg"}function k(){!function D(){zt.lFrame.currentNamespace=null}()}function je(e,t){for(let n=t.directiveStart,i=t.directiveEnd;n=i)break}else t[x]<0&&(e[18]+=65536),(m>11>16&&(3&e[2])===t){e[2]+=2048;try{a.call(m)}finally{}}}else try{a.call(m)}finally{}}class Mn{constructor(t,n,i){this.factory=t,this.resolving=!1,this.canSeeViewProviders=n,this.injectImpl=i}}function ki(e,t,n){let i=0;for(;it){h=a-1;break}}}for(;a>16}(e),i=t;for(;n>0;)i=i[15],n--;return i}let aa=!0;function Ns(e){const t=aa;return aa=e,t}let Bs=0;const Pi={};function Vs(e,t){const n=cl(e,t);if(-1!==n)return n;const i=t[1];i.firstCreatePass&&(e.injectorIndex=t.length,ca(i.data,e),ca(t,null),ca(i.blueprint,null));const r=Ei(e,t),a=e.injectorIndex;if(_r(r)){const h=Qo(r),m=Yr(r,t),x=m[1].data;for(let O=0;O<8;O++)t[a+O]=m[h+O]|x[h+O]}return t[a+8]=r,a}function ca(e,t){e.push(0,0,0,0,0,0,0,0,t)}function cl(e,t){return-1===e.injectorIndex||e.parent&&e.parent.injectorIndex===e.injectorIndex||null===t[e.injectorIndex+8]?-1:e.injectorIndex}function Ei(e,t){if(e.parent&&-1!==e.parent.injectorIndex)return e.parent.injectorIndex;let n=0,i=null,r=t;for(;null!==r;){if(i=yr(r),null===i)return-1;if(n++,r=r[15],-1!==i.injectorIndex)return i.injectorIndex|n<<16}return-1}function Kr(e,t,n){!function ll(e,t,n){let i;"string"==typeof n?i=n.charCodeAt(0)||0:n.hasOwnProperty(si)&&(i=n[si]),null==i&&(i=n[si]=Bs++);const r=255&i;t.data[e+(r>>5)]|=1<=0?255&t:br:t}(n);if("function"==typeof a){if(!$r(t,e,i))return i&Ce.Host?Aa(r,0,i):Ta(t,n,i,r);try{const h=a(i);if(null!=h||i&Ce.Optional)return h;de()}finally{oa()}}else if("number"==typeof a){let h=null,m=cl(e,t),x=-1,O=i&Ce.Host?t[16][6]:null;for((-1===m||i&Ce.SkipSelf)&&(x=-1===m?Ei(e,t):t[m+8],-1!==x&&ul(i,!1)?(h=t[1],m=Qo(x),t=Yr(x,t)):m=-1);-1!==m;){const B=t[1];if(Jo(a,m,B.data)){const X=dl(m,t,n,h,i,O);if(X!==Pi)return X}x=t[m+8],-1!==x&&ul(i,t[1].data[m+8]===O)&&Jo(a,m,t)?(h=B,m=Qo(x),t=Yr(x,t)):m=-1}}return r}function dl(e,t,n,i,r,a){const h=t[1],m=h.data[e+8],B=fs(m,h,n,null==i?uo(m)&&aa:i!=h&&0!=(3&m.type),r&Ce.Host&&a===m);return null!==B?Bo(t,h,B,m):Pi}function fs(e,t,n,i,r){const a=e.providerIndexes,h=t.data,m=1048575&a,x=e.directiveStart,B=a>>20,Te=r?m+B:e.directiveEnd;for(let Ue=i?m:m+B;Ue=x&&nt.type===n)return Ue}if(r){const Ue=h[x];if(Ue&&Di(Ue)&&Ue.type===n)return x}return null}function Bo(e,t,n,i){let r=e[n];const a=t.data;if(function pn(e){return e instanceof Mn}(r)){const h=r;h.resolving&&function ee(e,t){const n=t?`. Dependency path: ${t.join(" > ")} > ${e}`:"";throw new ne(-200,`Circular dependency in DI detected for ${e}${n}`)}(function $(e){return"function"==typeof e?e.name||e.toString():"object"==typeof e&&null!=e&&"function"==typeof e.type?e.type.name||e.type.toString():j(e)}(a[n]));const m=Ns(h.canSeeViewProviders);h.resolving=!0;const x=h.injectImpl?et(h.injectImpl):null;$r(e,i,Ce.Default);try{r=e[n]=h.factory(void 0,a,e,i),t.firstCreatePass&&n>=i.directiveStart&&function le(e,t,n){const{ngOnChanges:i,ngOnInit:r,ngDoCheck:a}=t.type.prototype;if(i){const h=dr(t);(n.preOrderHooks||(n.preOrderHooks=[])).push(e,h),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(e,h)}r&&(n.preOrderHooks||(n.preOrderHooks=[])).push(0-e,r),a&&((n.preOrderHooks||(n.preOrderHooks=[])).push(e,a),(n.preOrderCheckHooks||(n.preOrderCheckHooks=[])).push(e,a))}(n,a[n],t)}finally{null!==x&&et(x),Ns(m),h.resolving=!1,oa()}}return r}function Jo(e,t,n){return!!(n[t+(e>>5)]&1<{const t=e.prototype.constructor,n=t[jn]||da(t),i=Object.prototype;let r=Object.getPrototypeOf(e.prototype).constructor;for(;r&&r!==i;){const a=r[jn]||da(r);if(a&&a!==n)return a;r=Object.getPrototypeOf(r)}return a=>new a})}function da(e){return Ve(e)?()=>{const t=da(Be(e));return t&&t()}:Ii(e)}function yr(e){const t=e[1],n=t.type;return 2===n?t.declTNode:1===n?e[6]:null}function qr(e){return function Us(e,t){if("class"===t)return e.classes;if("style"===t)return e.styles;const n=e.attrs;if(n){const i=n.length;let r=0;for(;r{const i=function ua(e){return function(...n){if(e){const i=e(...n);for(const r in i)this[r]=i[r]}}}(t);function r(...a){if(this instanceof r)return i.apply(this,a),this;const h=new r(...a);return m.annotation=h,m;function m(x,O,B){const X=x.hasOwnProperty(mo)?x[mo]:Object.defineProperty(x,mo,{value:[]})[mo];for(;X.length<=B;)X.push(null);return(X[B]=X[B]||[]).push(h),x}}return n&&(r.prototype=Object.create(n.prototype)),r.prototype.ngMetadataName=e,r.annotationCls=r,r})}class In{constructor(t,n){this._desc=t,this.ngMetadataName="InjectionToken",this.\u0275prov=void 0,"number"==typeof n?this.__NG_ELEMENT_ID__=n:void 0!==n&&(this.\u0275prov=tn({token:this,providedIn:n.providedIn||"root",factory:n.factory}))}get multi(){return this}toString(){return`InjectionToken ${this._desc}`}}function p(e,t){e.forEach(n=>Array.isArray(n)?p(n,t):t(n))}function d(e,t,n){t>=e.length?e.push(n):e.splice(t,0,n)}function _(e,t){return t>=e.length-1?e.pop():e.splice(t,1)[0]}function w(e,t){const n=[];for(let i=0;i=0?e[1|i]=n:(i=~i,function Ae(e,t,n,i){let r=e.length;if(r==t)e.push(n,i);else if(1===r)e.push(i,e[0]),e[0]=n;else{for(r--,e.push(e[r-1],e[r]);r>t;)e[r]=e[r-2],r--;e[t]=n,e[t+1]=i}}(e,i,t,n)),i}function Ot(e,t){const n=Et(e,t);if(n>=0)return e[1|n]}function Et(e,t){return function Hn(e,t,n){let i=0,r=e.length>>n;for(;r!==i;){const a=i+(r-i>>1),h=e[a<t?r=a:i=a+1}return~(r<({token:e})),-1),ha=Ft(xr("Optional"),8),gs=Ft(xr("SkipSelf"),4);var Mr=(()=>((Mr=Mr||{})[Mr.Important=1]="Important",Mr[Mr.DashCase=2]="DashCase",Mr))();const vl=new Map;let ld=0;const yl="__ngContext__";function Ri(e,t){Yn(t)?(e[yl]=t[20],function ah(e){vl.set(e[20],e)}(t)):e[yl]=t}function W(e,t){return undefined(e,t)}function Le(e){const t=e[3];return Pn(t)?t[3]:t}function Dt(e){return qt(e[13])}function Bt(e){return qt(e[4])}function qt(e){for(;null!==e&&!Pn(e);)e=e[4];return e}function $t(e,t,n,i,r){if(null!=i){let a,h=!1;Pn(i)?a=i:Yn(i)&&(h=!0,i=i[0]);const m=bn(i);0===e&&null!==n?null==r?Gt(t,n,m):Nt(t,n,m,r||null,!0):1===e&&null!==n?Nt(t,n,m,r||null,!0):2===e?function pd(e,t,n){const i=Fi(e,t);i&&function zn(e,t,n,i){e.removeChild(t,n,i)}(e,i,t,n)}(t,m,h):3===e&&t.destroyNode(m),null!=a&&function Lg(e,t,n,i,r){const a=n[7];a!==bn(n)&&$t(t,e,i,a,r);for(let m=10;m0&&(e[n-1][4]=i[4]);const a=_(e,10+t);!function Yi(e,t){Dl(e,t,t[11],2,null,null),t[0]=null,t[6]=null}(i[1],i);const h=a[19];null!==h&&h.detachView(a[1]),i[3]=null,i[4]=null,i[2]&=-65}return i}function qs(e,t){if(!(128&t[2])){const n=t[11];n.destroyNode&&Dl(e,t,n,3,null,null),function Jr(e){let t=e[13];if(!t)return bs(e[1],e);for(;t;){let n=null;if(Yn(t))n=t[13];else{const i=t[10];i&&(n=i)}if(!n){for(;t&&!t[4]&&t!==e;)Yn(t)&&bs(t[1],t),t=t[3];null===t&&(t=e),Yn(t)&&bs(t[1],t),n=t&&t[4]}t=n}}(t)}}function bs(e,t){if(!(128&t[2])){t[2]&=-65,t[2]|=128,function Xs(e,t){let n;if(null!=e&&null!=(n=e.destroyHooks))for(let i=0;i=0?i[r=h]():i[r=-h].unsubscribe(),a+=2}else{const h=i[r=n[a+1]];n[a].call(h)}if(null!==i){for(let a=r+1;a-1){const{encapsulation:a}=e.data[i.directiveStart+r];if(a===J.None||a===J.Emulated)return null}return ci(i,n)}}(e,t.parent,n)}function Nt(e,t,n,i,r){e.insertBefore(t,n,i,r)}function Gt(e,t,n){e.appendChild(t,n)}function cn(e,t,n,i,r){null!==i?Nt(e,t,n,i,r):Gt(e,t,n)}function Fi(e,t){return e.parentNode(t)}function Un(e,t,n){return dc(e,t,n)}let uc,_d,hc,dc=function Cl(e,t,n){return 40&e.type?ci(e,n):null};function Ki(e,t,n,i){const r=xl(e,i,t),a=t[11],m=Un(i.parent||t[6],i,t);if(null!=r)if(Array.isArray(n))for(let x=0;xe,createScript:e=>e,createScriptURL:e=>e})}catch{}return uc}())||void 0===t?void 0:t.createHTML(e))||e}function jg(e){_d=e}function vd(){if(void 0===hc&&(hc=null,F.trustedTypes))try{hc=F.trustedTypes.createPolicy("angular#unsafe-bypass",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e})}catch{}return hc}function hh(e){var t;return(null===(t=vd())||void 0===t?void 0:t.createHTML(e))||e}function ph(e){var t;return(null===(t=vd())||void 0===t?void 0:t.createScriptURL(e))||e}class ga{constructor(t){this.changingThisBreaksApplicationSecurity=t}toString(){return`SafeValue must use [property]=binding: ${this.changingThisBreaksApplicationSecurity} (see ${_t})`}}class zg extends ga{getTypeName(){return"HTML"}}class $g extends ga{getTypeName(){return"Style"}}class Gg extends ga{getTypeName(){return"Script"}}class Wg extends ga{getTypeName(){return"URL"}}class Yg extends ga{getTypeName(){return"ResourceURL"}}function xs(e){return e instanceof ga?e.changingThisBreaksApplicationSecurity:e}function Ba(e,t){const n=function Kg(e){return e instanceof ga&&e.getTypeName()||null}(e);if(null!=n&&n!==t){if("ResourceURL"===n&&"URL"===t)return!0;throw new Error(`Required a safe ${t}, got a ${n} (see ${_t})`)}return n===t}function Zg(e){return new zg(e)}function qg(e){return new $g(e)}function Xg(e){return new Gg(e)}function Qg(e){return new Wg(e)}function Jg(e){return new Yg(e)}class e_{constructor(t){this.inertDocumentHelper=t}getInertBodyElement(t){t=""+t;try{const n=(new window.DOMParser).parseFromString(ma(t),"text/html").body;return null===n?this.inertDocumentHelper.getInertBodyElement(t):(n.removeChild(n.firstChild),n)}catch{return null}}}class t_{constructor(t){if(this.defaultDoc=t,this.inertDocument=this.defaultDoc.implementation.createHTMLDocument("sanitization-inert"),null==this.inertDocument.body){const n=this.inertDocument.createElement("html");this.inertDocument.appendChild(n);const i=this.inertDocument.createElement("body");n.appendChild(i)}}getInertBodyElement(t){const n=this.inertDocument.createElement("template");if("content"in n)return n.innerHTML=ma(t),n;const i=this.inertDocument.createElement("body");return i.innerHTML=ma(t),this.defaultDoc.documentMode&&this.stripCustomNsAttrs(i),i}stripCustomNsAttrs(t){const n=t.attributes;for(let r=n.length-1;0"),!0}endElement(t){const n=t.nodeName.toLowerCase();bd.hasOwnProperty(n)&&!gh.hasOwnProperty(n)&&(this.buf.push(""))}chars(t){this.buf.push(yh(t))}checkClobberedElement(t,n){if(n&&(t.compareDocumentPosition(n)&Node.DOCUMENT_POSITION_CONTAINED_BY)===Node.DOCUMENT_POSITION_CONTAINED_BY)throw new Error(`Failed to sanitize html because the element is clobbered: ${t.outerHTML}`);return n}}const s_=/[\uD800-\uDBFF][\uDC00-\uDFFF]/g,a_=/([^\#-~ |!])/g;function yh(e){return e.replace(/&/g,"&").replace(s_,function(t){return"&#"+(1024*(t.charCodeAt(0)-55296)+(t.charCodeAt(1)-56320)+65536)+";"}).replace(a_,function(t){return"&#"+t.charCodeAt(0)+";"}).replace(//g,">")}let pc;function xh(e,t){let n=null;try{pc=pc||function mh(e){const t=new t_(e);return function n_(){try{return!!(new window.DOMParser).parseFromString(ma(""),"text/html")}catch{return!1}}()?new e_(t):t}(e);let i=t?String(t):"";n=pc.getInertBodyElement(i);let r=5,a=i;do{if(0===r)throw new Error("Failed to sanitize html because the input is unstable");r--,i=a,a=n.innerHTML,n=pc.getInertBodyElement(i)}while(i!==a);return ma((new r_).sanitizeChildren(xd(n)||n))}finally{if(n){const i=xd(n)||n;for(;i.firstChild;)i.removeChild(i.firstChild)}}}function xd(e){return"content"in e&&function l_(e){return e.nodeType===Node.ELEMENT_NODE&&"TEMPLATE"===e.nodeName}(e)?e.content:null}var pi=(()=>((pi=pi||{})[pi.NONE=0]="NONE",pi[pi.HTML=1]="HTML",pi[pi.STYLE=2]="STYLE",pi[pi.SCRIPT=3]="SCRIPT",pi[pi.URL=4]="URL",pi[pi.RESOURCE_URL=5]="RESOURCE_URL",pi))();function Ch(e){const t=Ml();return t?hh(t.sanitize(pi.HTML,e)||""):Ba(e,"HTML")?hh(xs(e)):xh(function uh(){return void 0!==_d?_d:typeof document<"u"?document:void 0}(),j(e))}function Cd(e){const t=Ml();return t?t.sanitize(pi.URL,e)||"":Ba(e,"URL")?xs(e):fc(j(e))}function Dh(e){const t=Ml();if(t)return ph(t.sanitize(pi.RESOURCE_URL,e)||"");if(Ba(e,"ResourceURL"))return ph(xs(e));throw new ne(904,!1)}function Eh(e,t,n){return function f_(e,t){return"src"===t&&("embed"===e||"frame"===e||"iframe"===e||"media"===e||"script"===e)||"href"===t&&("base"===e||"link"===e)?Dh:Cd}(t,n)(e)}function Ml(){const e=ce();return e&&e[12]}const Dd=new In("ENVIRONMENT_INITIALIZER"),Mh=new In("INJECTOR",-1),wh=new In("INJECTOR_DEF_TYPES");class Ah{get(t,n=rt){if(n===rt){const i=new Error(`NullInjectorError: No provider for ${se(t)}!`);throw i.name="NullInjectorError",i}return n}}function p_(e){return{\u0275providers:e}}function m_(...e){return{\u0275providers:Th(0,e),\u0275fromNgModule:!0}}function Th(e,...t){const n=[],i=new Set;let r;return p(t,a=>{const h=a;Ed(h,n,[],i)&&(r||(r=[]),r.push(h))}),void 0!==r&&Sh(r,n),n}function Sh(e,t){for(let n=0;n{t.push(a)})}}function Ed(e,t,n,i){if(!(e=Be(e)))return!1;let r=null,a=tt(e);const h=!a&&dn(e);if(a||h){if(h&&!h.standalone)return!1;r=e}else{const x=e.ngModule;if(a=tt(x),!a)return!1;r=x}const m=i.has(r);if(h){if(m)return!1;if(i.add(r),h.dependencies){const x="function"==typeof h.dependencies?h.dependencies():h.dependencies;for(const O of x)Ed(O,t,n,i)}}else{if(!a)return!1;{if(null!=a.imports&&!m){let O;i.add(r);try{p(a.imports,B=>{Ed(B,t,n,i)&&(O||(O=[]),O.push(B))})}finally{}void 0!==O&&Sh(O,t)}if(!m){const O=Ii(r)||(()=>new r);t.push({provide:r,useFactory:O,deps:Ge},{provide:wh,useValue:r,multi:!0},{provide:Dd,useValue:()=>T(r),multi:!0})}const x=a.providers;null==x||m||Md(x,B=>{t.push(B)})}}return r!==e&&void 0!==e.providers}function Md(e,t){for(let n of e)Je(n)&&(n=n.\u0275providers),Array.isArray(n)?Md(n,t):t(n)}const g_=Z({provide:String,useValue:Z});function wd(e){return null!==e&&"object"==typeof e&&g_ in e}function _a(e){return"function"==typeof e}const Ad=new In("Set Injector scope."),mc={},v_={};let Td;function gc(){return void 0===Td&&(Td=new Ah),Td}class va{}class kh extends va{get destroyed(){return this._destroyed}constructor(t,n,i,r){super(),this.parent=n,this.source=i,this.scopes=r,this.records=new Map,this._ngOnDestroyHooks=new Set,this._onDestroyHooks=[],this._destroyed=!1,Od(t,h=>this.processProvider(h)),this.records.set(Mh,Va(void 0,this)),r.has("environment")&&this.records.set(va,Va(void 0,this));const a=this.records.get(Ad);null!=a&&"string"==typeof a.value&&this.scopes.add(a.value),this.injectorDefTypes=new Set(this.get(wh.multi,Ge,Ce.Self))}destroy(){this.assertNotDestroyed(),this._destroyed=!0;try{for(const t of this._ngOnDestroyHooks)t.ngOnDestroy();for(const t of this._onDestroyHooks)t()}finally{this.records.clear(),this._ngOnDestroyHooks.clear(),this.injectorDefTypes.clear(),this._onDestroyHooks.length=0}}onDestroy(t){this._onDestroyHooks.push(t)}runInContext(t){this.assertNotDestroyed();const n=I(this),i=et(void 0);try{return t()}finally{I(n),et(i)}}get(t,n=rt,i=Ce.Default){this.assertNotDestroyed(),i=He(i);const r=I(this),a=et(void 0);try{if(!(i&Ce.SkipSelf)){let m=this.records.get(t);if(void 0===m){const x=function D_(e){return"function"==typeof e||"object"==typeof e&&e instanceof In}(t)&&Ht(t);m=x&&this.injectableDefInScope(x)?Va(Sd(t),mc):null,this.records.set(t,m)}if(null!=m)return this.hydrate(t,m)}return(i&Ce.Self?gc():this.parent).get(t,n=i&Ce.Optional&&n===rt?null:n)}catch(h){if("NullInjectorError"===h.name){if((h[Vt]=h[Vt]||[]).unshift(se(t)),r)throw h;return function on(e,t,n,i){const r=e[Vt];throw t[Ze]&&r.unshift(t[Ze]),e.message=function Jn(e,t,n,i=null){e=e&&"\n"===e.charAt(0)&&"\u0275"==e.charAt(1)?e.slice(2):e;let r=se(t);if(Array.isArray(t))r=t.map(se).join(" -> ");else if("object"==typeof t){let a=[];for(let h in t)if(t.hasOwnProperty(h)){let m=t[h];a.push(h+":"+("string"==typeof m?JSON.stringify(m):se(m)))}r=`{${a.join(", ")}}`}return`${n}${i?"("+i+")":""}[${r}]: ${e.replace(mn,"\n ")}`}("\n"+e.message,r,n,i),e.ngTokenPath=r,e[Vt]=null,e}(h,t,"R3InjectorError",this.source)}throw h}finally{et(a),I(r)}}resolveInjectorInitializers(){const t=I(this),n=et(void 0);try{const i=this.get(Dd.multi,Ge,Ce.Self);for(const r of i)r()}finally{I(t),et(n)}}toString(){const t=[],n=this.records;for(const i of n.keys())t.push(se(i));return`R3Injector[${t.join(", ")}]`}assertNotDestroyed(){if(this._destroyed)throw new ne(205,!1)}processProvider(t){let n=_a(t=Be(t))?t:Be(t&&t.provide);const i=function y_(e){return wd(e)?Va(void 0,e.useValue):Va(Ph(e),mc)}(t);if(_a(t)||!0!==t.multi)this.records.get(n);else{let r=this.records.get(n);r||(r=Va(void 0,mc,!0),r.factory=()=>gt(r.multi),this.records.set(n,r)),n=t,r.multi.push(t)}this.records.set(n,i)}hydrate(t,n){return n.value===mc&&(n.value=v_,n.value=n.factory()),"object"==typeof n.value&&n.value&&function C_(e){return null!==e&&"object"==typeof e&&"function"==typeof e.ngOnDestroy}(n.value)&&this._ngOnDestroyHooks.add(n.value),n.value}injectableDefInScope(t){if(!t.providedIn)return!1;const n=Be(t.providedIn);return"string"==typeof n?"any"===n||this.scopes.has(n):this.injectorDefTypes.has(n)}}function Sd(e){const t=Ht(e),n=null!==t?t.factory:Ii(e);if(null!==n)return n;if(e instanceof In)throw new ne(204,!1);if(e instanceof Function)return function b_(e){const t=e.length;if(t>0)throw w(t,"?"),new ne(204,!1);const n=function G(e){const t=e&&(e[ue]||e[K]);if(t){const n=function Re(e){if(e.hasOwnProperty("name"))return e.name;const t=(""+e).match(/^function\s*([^\s(]+)/);return null===t?"":t[1]}(e);return console.warn(`DEPRECATED: DI is instantiating a token "${n}" that inherits its @Injectable decorator but does not provide one itself.\nThis will become an error in a future version of Angular. Please add @Injectable() to the "${n}" class.`),t}return null}(e);return null!==n?()=>n.factory(e):()=>new e}(e);throw new ne(204,!1)}function Ph(e,t,n){let i;if(_a(e)){const r=Be(e);return Ii(r)||Sd(r)}if(wd(e))i=()=>Be(e.useValue);else if(function Ih(e){return!(!e||!e.useFactory)}(e))i=()=>e.useFactory(...gt(e.deps||[]));else if(function Oh(e){return!(!e||!e.useExisting)}(e))i=()=>T(Be(e.useExisting));else{const r=Be(e&&(e.useClass||e.provide));if(!function x_(e){return!!e.deps}(e))return Ii(r)||Sd(r);i=()=>new r(...gt(e.deps))}return i}function Va(e,t,n=!1){return{factory:e,value:t,multi:n?[]:void 0}}function Od(e,t){for(const n of e)Array.isArray(n)?Od(n,t):n&&Je(n)?Od(n.\u0275providers,t):t(n)}class E_{}class Rh{}class w_{resolveComponentFactory(t){throw function M_(e){const t=Error(`No component factory found for ${se(e)}. Did you add it to @NgModule.entryComponents?`);return t.ngComponent=e,t}(t)}}let wl=(()=>{class e{}return e.NULL=new w_,e})();function A_(){return Ua(Sn(),ce())}function Ua(e,t){return new Al(ci(e,t))}let Al=(()=>{class e{constructor(n){this.nativeElement=n}}return e.__NG_ELEMENT_ID__=A_,e})();function T_(e){return e instanceof Al?e.nativeElement:e}class Lh{}let S_=(()=>{class e{}return e.__NG_ELEMENT_ID__=()=>function O_(){const e=ce(),n=gi(Sn().index,e);return(Yn(n)?n:e)[11]}(),e})(),I_=(()=>{class e{}return e.\u0275prov=tn({token:e,providedIn:"root",factory:()=>null}),e})();class Nh{constructor(t){this.full=t,this.major=t.split(".")[0],this.minor=t.split(".")[1],this.patch=t.split(".").slice(2).join(".")}}const k_=new Nh("15.1.0"),Id={};function Pd(e){return e.ngOriginalError}class Tl{constructor(){this._console=console}handleError(t){const n=this._findOriginalError(t);this._console.error("ERROR",t),n&&this._console.error("ORIGINAL ERROR",n)}_findOriginalError(t){let n=t&&Pd(t);for(;n&&Pd(n);)n=Pd(n);return n||null}}function Bh(e){return e.ownerDocument}function Ds(e){return e instanceof Function?e():e}function Uh(e,t,n){let i=e.length;for(;;){const r=e.indexOf(t,n);if(-1===r)return r;if(0===r||e.charCodeAt(r-1)<=32){const a=t.length;if(r+a===i||e.charCodeAt(r+a)<=32)return r}n=r+1}}const Hh="ng-template";function j_(e,t,n){let i=0;for(;ia?"":r[X+1].toLowerCase();const Ue=8&i?Te:null;if(Ue&&-1!==Uh(Ue,O,0)||2&i&&O!==Te){if(Tr(i))return!1;h=!0}}}}else{if(!h&&!Tr(i)&&!Tr(x))return!1;if(h&&Tr(x))continue;h=!1,i=x|1&i}}return Tr(i)||h}function Tr(e){return 0==(1&e)}function G_(e,t,n,i){if(null===t)return-1;let r=0;if(i||!n){let a=!1;for(;r-1)for(n++;n0?'="'+m+'"':"")+"]"}else 8&i?r+="."+h:4&i&&(r+=" "+h);else""!==r&&!Tr(h)&&(t+=$h(a,r),r=""),i=h,a=a||!Tr(i);n++}return""!==r&&(t+=$h(a,r)),t}const rn={};function Gh(e){Wh(dt(),ce(),ui()+e,!1)}function Wh(e,t,n,i){if(!i)if(3==(3&t[2])){const a=e.preOrderCheckHooks;null!==a&&Qe(t,a,n)}else{const a=e.preOrderHooks;null!==a&&wt(t,a,0,n)}mr(n)}function qh(e,t=null,n=null,i){const r=Xh(e,t,n,i);return r.resolveInjectorInitializers(),r}function Xh(e,t=null,n=null,i,r=new Set){const a=[n||Ge,m_(e)];return i=i||("object"==typeof e?void 0:se(e)),new kh(a,t||gc(),i||null,r)}let ba=(()=>{class e{static create(n,i){if(Array.isArray(n))return qh({name:""},i,n,"");{var r;const a=null!==(r=n.name)&&void 0!==r?r:"";return qh({name:a},n.parent,n.providers,a)}}}return e.THROW_IF_NOT_FOUND=rt,e.NULL=new Ah,e.\u0275prov=tn({token:e,providedIn:"any",factory:()=>T(Mh)}),e.__NG_ELEMENT_ID__=-1,e})();function za(e,t=Ce.Default){const n=ce();return null===n?T(e,t):Zr(Sn(),n,Be(e),t)}function sf(){throw new Error("invalid")}function af(e,t){const n=e.contentQueries;if(null!==n)for(let i=0;i22&&Wh(e,t,22,!1),n(i,r)}finally{mr(a)}}function Ud(e,t,n){if(mi(t)){const r=t.directiveEnd;for(let a=t.directiveStart;a0;){const n=e[--t];if("number"==typeof n&&n<0)return n}return 0})(h)!=m&&h.push(m),h.push(n,i,a)}}(e,t,i,Sl(e,n,r.hostVars,rn),r)}function ns(e,t,n,i,r,a){const h=ci(e,t);!function Wd(e,t,n,i,r,a,h){if(null==a)e.removeAttribute(t,r,n);else{const m=null==h?j(a):h(a,i||"",r);e.setAttribute(t,r,m,n)}}(t[11],h,a,e.value,n,i,r)}function Lv(e,t,n,i,r,a){const h=a[t];if(null!==h){const m=i.setInput;for(let x=0;x0&&Yd(n)}}function Yd(e){for(let i=Dt(e);null!==i;i=Bt(i))for(let r=10;r0&&Yd(a)}const n=e[1].components;if(null!==n)for(let i=0;i0&&Yd(r)}}function Hv(e,t){const n=gi(t,e),i=n[1];(function jv(e,t){for(let n=t.length;n-1&&(_o(t,i),_(n,i))}this._attachedToViewContainer=!1}qs(this._lView[1],this._lView)}onDestroy(t){df(this._lView[1],this._lView,null,t)}markForCheck(){Kd(this._cdRefInjectingView||this._lView)}detach(){this._lView[2]&=-65}reattach(){this._lView[2]|=64}detectChanges(){xc(this._lView[1],this._lView,this.context)}checkNoChanges(){}attachToViewContainerRef(){if(this._appRef)throw new ne(902,!1);this._attachedToViewContainer=!0}detachFromAppRef(){this._appRef=null,function vs(e,t){Dl(e,t,t[11],2,null,null)}(this._lView[1],this._lView)}attachToAppRef(t){if(this._attachedToViewContainer)throw new ne(902,!1);this._appRef=t}}class zv extends Ol{constructor(t){super(t),this._view=t}detectChanges(){const t=this._view;xc(t[1],t,t[8],!1)}checkNoChanges(){}get context(){return null}}class xf extends wl{constructor(t){super(),this.ngModule=t}resolveComponentFactory(t){const n=dn(t);return new Il(n,this.ngModule)}}function Cf(e){const t=[];for(let n in e)e.hasOwnProperty(n)&&t.push({propName:e[n],templateName:n});return t}class Gv{constructor(t,n){this.injector=t,this.parentInjector=n}get(t,n,i){i=He(i);const r=this.injector.get(t,Id,i);return r!==Id||n===Id?r:this.parentInjector.get(t,n,i)}}class Il extends Rh{get inputs(){return Cf(this.componentDef.inputs)}get outputs(){return Cf(this.componentDef.outputs)}constructor(t,n){super(),this.componentDef=t,this.ngModule=n,this.componentType=t.type,this.selector=function X_(e){return e.map(q_).join(",")}(t.selectors),this.ngContentSelectors=t.ngContentSelectors?t.ngContentSelectors:[],this.isBoundToModule=!!n}create(t,n,i,r){var a;let h=(r=r||this.ngModule)instanceof va?r:null===(a=r)||void 0===a?void 0:a.injector;h&&null!==this.componentDef.getStandaloneInjector&&(h=this.componentDef.getStandaloneInjector(h)||h);const m=h?new Gv(t,h):t,x=m.get(Lh,null);if(null===x)throw new ne(407,!1);const O=m.get(I_,null),B=x.createRenderer(null,this.componentDef),X=this.componentDef.selectors[0][0]||"div",Te=i?function xv(e,t,n){return e.selectRootElement(t,n===J.ShadowDom)}(B,i,this.componentDef.encapsulation):fi(B,X,function $v(e){const t=e.toLowerCase();return"svg"===t?"svg":"math"===t?"math":null}(X)),Ue=this.componentDef.onPush?288:272,nt=zd(0,null,null,1,0,null,null,null,null,null),ht=vc(null,nt,null,Ue,null,null,x,B,O,m,null);let Mt,Pt;Xo(ht);try{const Ut=this.componentDef;let ct,en=null;Ut.findHostDirectiveDefs?(ct=[],en=new Map,Ut.findHostDirectiveDefs(Ut,ct,en),ct.push(Ut)):ct=[Ut];const Ln=function Yv(e,t){const n=e[1];return e[22]=t,$a(n,22,2,"#host",null)}(ht,Te),Qn=function Kv(e,t,n,i,r,a,h,m){const x=r[1];!function Zv(e,t,n,i){for(const r of e)t.mergedAttrs=To(t.mergedAttrs,r.hostAttrs);null!==t.mergedAttrs&&(Cc(t,t.mergedAttrs,!0),null!==n&&dh(i,n,t))}(i,e,t,h);const O=a.createRenderer(t,n),B=vc(r,cf(n),null,n.onPush?32:16,r[e.index],e,a,O,m||null,null,null);return x.firstCreatePass&&Gd(x,e,i.length-1),yc(r,B),r[e.index]=B}(Ln,Te,Ut,ct,ht,x,B);Pt=as(nt,22),Te&&function Xv(e,t,n,i){if(i)ki(e,n,["ng-version",k_.full]);else{const{attrs:r,classes:a}=function Q_(e){const t=[],n=[];let i=1,r=2;for(;i0&&ch(e,n,a.join(" "))}}(B,Ut,Te,i),void 0!==n&&function Qv(e,t,n){const i=e.projection=[];for(let r=0;r=0;i--){const r=e[i];r.hostVars=t+=r.hostVars,r.hostAttrs=To(r.hostAttrs,n=To(n,r.hostAttrs))}}(i)}function Qd(e){return e===Ne?{}:e===Ge?[]:e}function tb(e,t){const n=e.viewQuery;e.viewQuery=n?(i,r)=>{t(i,r),n(i,r)}:t}function nb(e,t){const n=e.contentQueries;e.contentQueries=n?(i,r,a)=>{t(i,r,a),n(i,r,a)}:t}function ib(e,t){const n=e.hostBindings;e.hostBindings=n?(i,r)=>{t(i,r),n(i,r)}:t}let Ec=null;function ya(){if(!Ec){const e=F.Symbol;if(e&&e.iterator)Ec=e.iterator;else{const t=Object.getOwnPropertyNames(Map.prototype);for(let n=0;nh(bn(en[i.index])):i.index;let ct=null;if(!h&&m&&(ct=function _b(e,t,n,i){const r=e.cleanup;if(null!=r)for(let a=0;ax?m[x]:null}"string"==typeof h&&(a+=2)}return null}(e,t,r,i.index)),null!==ct)(ct.__ngLastListenerFn__||ct).__ngNextListenerFn__=a,ct.__ngLastListenerFn__=a,Te=!1;else{a=Gf(i,t,B,a,!1);const en=n.listen(Mt,r,a);X.push(a,en),O&&O.push(r,Ut,Pt,Pt+1)}}else a=Gf(i,t,B,a,!1);const Ue=i.outputs;let nt;if(Te&&null!==Ue&&(nt=Ue[r])){const ht=nt.length;if(ht)for(let Mt=0;Mt-1?gi(e.index,t):t);let x=$f(t,0,i,h),O=a.__ngNextListenerFn__;for(;O;)x=$f(t,0,O,h)&&x,O=O.__ngNextListenerFn__;return r&&!1===x&&(h.preventDefault(),h.returnValue=!1),x}}function Wf(e=1){return function wa(e){return(zt.lFrame.contextLView=function Ls(e,t){for(;e>0;)t=t[15],e--;return t}(e,zt.lFrame.contextLView))[8]}(e)}function vb(e,t){let n=null;const i=function W_(e){const t=e.attrs;if(null!=t){const n=t.indexOf(5);if(!(1&n))return t[n+1]}return null}(e);for(let r=0;r>17&32767}function lu(e){return 2|e}function Ca(e){return(131068&e)>>2}function cu(e,t){return-131069&e|t<<2}function du(e){return 1|e}function ip(e,t,n,i,r){const a=e[n+1],h=null===t;let m=i?Qs(a):Ca(a),x=!1;for(;0!==m&&(!1===x||h);){const B=e[m+1];Eb(e[m],t)&&(x=!0,e[m+1]=i?du(B):lu(B)),m=i?Qs(B):Ca(B)}x&&(e[n+1]=i?lu(a):du(a))}function Eb(e,t){return null===e||null==t||(Array.isArray(e)?e[1]:e)===t||!(!Array.isArray(e)||"string"!=typeof t)&&Et(e,t)>=0}const Ai={textEnd:0,key:0,keyEnd:0,value:0,valueEnd:0};function op(e){return e.substring(Ai.key,Ai.keyEnd)}function rp(e,t){const n=Ai.textEnd;return n===t?-1:(t=Ai.keyEnd=function Tb(e,t,n){for(;t32;)t++;return t}(e,Ai.key=t,n),el(e,t,n))}function el(e,t,n){for(;t=0;n=rp(t,n))ft(e,op(t),!0)}function Sr(e,t,n,i){const r=ce(),a=dt(),h=Vn(2);a.firstUpdatePass&&hp(a,e,h,i),t!==rn&&so(r,h,t)&&pp(a,a.data[ui()],r,r[11],e,r[h+1]=function Bb(e,t){return null==e||("string"==typeof t?e+=t:"object"==typeof e&&(e=se(xs(e)))),e}(t,n),i,h)}function Or(e,t,n,i){const r=dt(),a=Vn(2);r.firstUpdatePass&&hp(r,null,a,i);const h=ce();if(n!==rn&&so(h,a,n)){const m=r.data[ui()];if(gp(m,i)&&!up(r,a)){let x=i?m.classesWithoutHost:m.stylesWithoutHost;null!==x&&(n=Ee(x,n||"")),nu(r,m,h,n,i)}else!function Nb(e,t,n,i,r,a,h,m){r===rn&&(r=Ge);let x=0,O=0,B=0=e.expandoStartIndex}function hp(e,t,n,i){const r=e.data;if(null===r[n+1]){const a=r[ui()],h=up(e,n);gp(a,i)&&null===t&&!h&&(t=!1),t=function kb(e,t,n,i){const r=function Hr(e){const t=zt.lFrame.currentDirectiveIndex;return-1===t?null:e[t]}(e);let a=i?t.residualClasses:t.residualStyles;if(null===r)0===(i?t.classBindings:t.styleBindings)&&(n=Rl(n=fu(null,e,t,n,i),t.attrs,i),a=null);else{const h=t.directiveStylingLast;if(-1===h||e[h]!==r)if(n=fu(r,e,t,n,i),null===a){let x=function Pb(e,t,n){const i=n?t.classBindings:t.styleBindings;if(0!==Ca(i))return e[Qs(i)]}(e,t,i);void 0!==x&&Array.isArray(x)&&(x=fu(null,e,t,x[1],i),x=Rl(x,t.attrs,i),function Rb(e,t,n,i){e[Qs(n?t.classBindings:t.styleBindings)]=i}(e,t,i,x))}else a=function Fb(e,t,n){let i;const r=t.directiveEnd;for(let a=1+t.directiveStylingLast;a0)&&(O=!0)):B=n,r)if(0!==x){const Te=Qs(e[m+1]);e[i+1]=Oc(Te,m),0!==Te&&(e[Te+1]=cu(e[Te+1],i)),e[m+1]=function yb(e,t){return 131071&e|t<<17}(e[m+1],i)}else e[i+1]=Oc(m,0),0!==m&&(e[m+1]=cu(e[m+1],i)),m=i;else e[i+1]=Oc(x,0),0===m?m=i:e[x+1]=cu(e[x+1],i),x=i;O&&(e[i+1]=lu(e[i+1])),ip(e,B,i,!0),ip(e,B,i,!1),function Db(e,t,n,i,r){const a=r?e.residualClasses:e.residualStyles;null!=a&&"string"==typeof t&&Et(a,t)>=0&&(n[i+1]=du(n[i+1]))}(t,B,e,i,a),h=Oc(m,x),a?t.classBindings=h:t.styleBindings=h}(r,a,t,n,h,i)}}function fu(e,t,n,i,r){let a=null;const h=n.directiveEnd;let m=n.directiveStylingLast;for(-1===m?m=n.directiveStart:m++;m0;){const x=e[r],O=Array.isArray(x),B=O?x[1]:x,X=null===B;let Te=n[r+1];Te===rn&&(Te=X?Ge:void 0);let Ue=X?Ot(Te,i):B===i?Te:void 0;if(O&&!Ic(Ue)&&(Ue=Ot(x,i)),Ic(Ue)&&(m=Ue,h))return m;const nt=e[r+1];r=h?Qs(nt):Ca(nt)}if(null!==t){let x=a?t.residualClasses:t.residualStyles;null!=x&&(m=Ot(x,i))}return m}function Ic(e){return void 0!==e}function gp(e,t){return 0!=(e.flags&(t?8:16))}function _p(e,t=""){const n=ce(),i=dt(),r=e+22,a=i.firstCreatePass?$a(i,r,1,t,null):i.data[r],h=n[r]=function Xt(e,t){return e.createText(t)}(n[11],t);Ki(i,n,h,a),_i(a,!1)}function pu(e){return kc("",e,""),pu}function kc(e,t,n){const i=ce(),r=Wa(i,e,t,n);return r!==rn&&Es(i,ui(),r),kc}function mu(e,t,n,i,r){const a=ce(),h=function Ya(e,t,n,i,r,a){const m=xa(e,no(),n,r);return Vn(2),m?t+j(n)+i+j(r)+a:rn}(a,e,t,n,i,r);return h!==rn&&Es(a,ui(),h),mu}function gu(e,t,n,i,r,a,h){const m=ce(),x=function Ka(e,t,n,i,r,a,h,m){const O=Mc(e,no(),n,r,h);return Vn(3),O?t+j(n)+i+j(r)+a+j(h)+m:rn}(m,e,t,n,i,r,a,h);return x!==rn&&Es(m,ui(),x),gu}function Ep(e,t,n){Or(ft,rs,Wa(ce(),e,t,n),!0)}function _u(e,t,n){const i=ce();return so(i,io(),t)&&Ho(dt(),On(),i,e,t,i[11],n,!0),_u}const Da=void 0;var iy=["en",[["a","p"],["AM","PM"],Da],[["AM","PM"],Da,Da],[["S","M","T","W","T","F","S"],["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],["Su","Mo","Tu","We","Th","Fr","Sa"]],Da,[["J","F","M","A","M","J","J","A","S","O","N","D"],["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],["January","February","March","April","May","June","July","August","September","October","November","December"]],Da,[["B","A"],["BC","AD"],["Before Christ","Anno Domini"]],0,[6,0],["M/d/yy","MMM d, y","MMMM d, y","EEEE, MMMM d, y"],["h:mm a","h:mm:ss a","h:mm:ss a z","h:mm:ss a zzzz"],["{1}, {0}",Da,"{1} 'at' {0}",Da],[".",",",";","%","+","-","E","\xd7","\u2030","\u221e","NaN",":"],["#,##0.###","#,##0%","\xa4#,##0.00","#E0"],"USD","$","US Dollar",{},"ltr",function ny(e){const n=Math.floor(Math.abs(e)),i=e.toString().replace(/^[^.]*\.?/,"").length;return 1===n&&0===i?1:5}];let tl={};function vu(e){const t=function oy(e){return e.toLowerCase().replace(/_/g,"-")}(e);let n=Lp(t);if(n)return n;const i=t.split("-")[0];if(n=Lp(i),n)return n;if("en"===i)return iy;throw new ne(701,!1)}function Fp(e){return vu(e)[Kt.PluralCase]}function Lp(e){return e in tl||(tl[e]=F.ng&&F.ng.common&&F.ng.common.locales&&F.ng.common.locales[e]),tl[e]}var Kt=(()=>((Kt=Kt||{})[Kt.LocaleId=0]="LocaleId",Kt[Kt.DayPeriodsFormat=1]="DayPeriodsFormat",Kt[Kt.DayPeriodsStandalone=2]="DayPeriodsStandalone",Kt[Kt.DaysFormat=3]="DaysFormat",Kt[Kt.DaysStandalone=4]="DaysStandalone",Kt[Kt.MonthsFormat=5]="MonthsFormat",Kt[Kt.MonthsStandalone=6]="MonthsStandalone",Kt[Kt.Eras=7]="Eras",Kt[Kt.FirstDayOfWeek=8]="FirstDayOfWeek",Kt[Kt.WeekendRange=9]="WeekendRange",Kt[Kt.DateFormat=10]="DateFormat",Kt[Kt.TimeFormat=11]="TimeFormat",Kt[Kt.DateTimeFormat=12]="DateTimeFormat",Kt[Kt.NumberSymbols=13]="NumberSymbols",Kt[Kt.NumberFormats=14]="NumberFormats",Kt[Kt.CurrencyCode=15]="CurrencyCode",Kt[Kt.CurrencySymbol=16]="CurrencySymbol",Kt[Kt.CurrencyName=17]="CurrencyName",Kt[Kt.Currencies=18]="Currencies",Kt[Kt.Directionality=19]="Directionality",Kt[Kt.PluralCase=20]="PluralCase",Kt[Kt.ExtraData=21]="ExtraData",Kt))();const nl="en-US";let Np=nl;function xu(e,t,n,i,r){if(e=Be(e),Array.isArray(e))for(let a=0;a>20;if(_a(e)||!e.multi){const Ue=new Mn(x,r,za),nt=Du(m,t,r?B:B+Te,X);-1===nt?(Kr(Vs(O,h),a,m),Cu(a,e,t.length),t.push(m),O.directiveStart++,O.directiveEnd++,r&&(O.providerIndexes+=1048576),n.push(Ue),h.push(Ue)):(n[nt]=Ue,h[nt]=Ue)}else{const Ue=Du(m,t,B+Te,X),nt=Du(m,t,B,B+Te),Mt=nt>=0&&n[nt];if(r&&!Mt||!r&&!(Ue>=0&&n[Ue])){Kr(Vs(O,h),a,m);const Pt=function t0(e,t,n,i,r){const a=new Mn(e,n,za);return a.multi=[],a.index=t,a.componentProviders=0,lm(a,r,i&&!n),a}(r?e0:Jy,n.length,r,i,x);!r&&Mt&&(n[nt].providerFactory=Pt),Cu(a,e,t.length,0),t.push(m),O.directiveStart++,O.directiveEnd++,r&&(O.providerIndexes+=1048576),n.push(Pt),h.push(Pt)}else Cu(a,e,Ue>-1?Ue:nt,lm(n[r?nt:Ue],x,!r&&i));!r&&i&&Mt&&n[nt].componentProviders++}}}function Cu(e,t,n,i){const r=_a(t),a=function __(e){return!!e.useClass}(t);if(r||a){const x=(a?Be(t.useClass):t).prototype.ngOnDestroy;if(x){const O=e.destroyHooks||(e.destroyHooks=[]);if(!r&&t.multi){const B=O.indexOf(n);-1===B?O.push(n,[i,x]):O[B+1].push(i,x)}else O.push(n,x)}}}function lm(e,t,n){return n&&e.componentProviders++,e.multi.push(t)-1}function Du(e,t,n,i){for(let r=n;r{n.providersResolver=(i,r)=>function Qy(e,t,n){const i=dt();if(i.firstCreatePass){const r=Di(e);xu(n,i.data,i.blueprint,r,!0),xu(t,i.data,i.blueprint,r,!1)}}(i,r?r(e):e,t)}}class il{}class dm{}function n0(e,t){return new um(e,null!=t?t:null)}class um extends il{constructor(t,n){super(),this._parent=n,this._bootstrapComponents=[],this.destroyCbs=[],this.componentFactoryResolver=new xf(this);const i=Bn(t);this._bootstrapComponents=Ds(i.bootstrap),this._r3Injector=Xh(t,n,[{provide:il,useValue:this},{provide:wl,useValue:this.componentFactoryResolver}],se(t),new Set(["environment"])),this._r3Injector.resolveInjectorInitializers(),this.instance=this._r3Injector.get(t)}get injector(){return this._r3Injector}destroy(){const t=this._r3Injector;!t.destroyed&&t.destroy(),this.destroyCbs.forEach(n=>n()),this.destroyCbs=null}onDestroy(t){this.destroyCbs.push(t)}}class Mu extends dm{constructor(t){super(),this.moduleType=t}create(t){return new um(this.moduleType,t)}}class o0 extends il{constructor(t,n,i){super(),this.componentFactoryResolver=new xf(this),this.instance=null;const r=new kh([...t,{provide:il,useValue:this},{provide:wl,useValue:this.componentFactoryResolver}],n||gc(),i,new Set(["environment"]));this.injector=r,r.resolveInjectorInitializers()}destroy(){this.injector.destroy()}onDestroy(t){this.injector.onDestroy(t)}}function wu(e,t,n=null){return new o0(e,t,n).injector}let r0=(()=>{class e{constructor(n){this._injector=n,this.cachedInjectors=new Map}getOrCreateStandaloneInjector(n){if(!n.standalone)return null;if(!this.cachedInjectors.has(n.id)){const i=Th(0,n.type),r=i.length>0?wu([i],this._injector,`Standalone[${n.type.name}]`):null;this.cachedInjectors.set(n.id,r)}return this.cachedInjectors.get(n.id)}ngOnDestroy(){try{for(const n of this.cachedInjectors.values())null!==n&&n.destroy()}finally{this.cachedInjectors.clear()}}}return e.\u0275prov=tn({token:e,providedIn:"environment",factory:()=>new e(T(va))}),e})();function hm(e){e.getStandaloneInjector=t=>t.get(r0).getOrCreateStandaloneInjector(e)}function bm(e,t,n,i,r,a){return function Cm(e,t,n,i,r,a,h,m){const x=t+n;return Mc(e,x,r,a,h)?is(e,x+3,m?i.call(m,r,a,h):i(r,a,h)):Ul(e,x+3)}(ce(),ni(),e,t,n,i,r,a)}function Ul(e,t){const n=e[t];return n===rn?void 0:n}function Mm(e,t){const n=dt();let i;const r=e+22;n.firstCreatePass?(i=function D0(e,t){if(t)for(let n=t.length-1;n>=0;n--){const i=t[n];if(e===i.name)return i}}(t,n.pipeRegistry),n.data[r]=i,i.onDestroy&&(n.destroyHooks||(n.destroyHooks=[])).push(r,i.onDestroy)):i=n.data[r];const a=i.factory||(i.factory=Ii(i.type)),h=et(za);try{const m=Ns(!1),x=a();return Ns(m),function pb(e,t,n,i){n>=e.data.length&&(e.data[n]=null,e.blueprint[n]=null),t[n]=i}(n,ce(),r,x),x}finally{et(h)}}function wm(e,t,n){const i=e+22,r=ce(),a=Ji(r,i);return function Hl(e,t){return e[1].data[t].pure}(r,i)?function ym(e,t,n,i,r,a){const h=t+n;return so(e,h,r)?is(e,h+1,a?i.call(a,r):i(r)):Ul(e,h+1)}(r,ni(),t,a.transform,n,a):a.transform(n)}function Tu(e){return t=>{setTimeout(e,void 0,t)}}const ss=class T0 extends c.x{constructor(t=!1){super(),this.__isAsync=t}emit(t){super.next(t)}subscribe(t,n,i){let r=t,a=n||(()=>null),h=i;if(t&&"object"==typeof t){var m,x,O;const X=t;r=null===(m=X.next)||void 0===m?void 0:m.bind(X),a=null===(x=X.error)||void 0===x?void 0:x.bind(X),h=null===(O=X.complete)||void 0===O?void 0:O.bind(X)}this.__isAsync&&(a=Tu(a),r&&(r=Tu(r)),h&&(h=Tu(h)));const B=super.subscribe({next:r,error:a,complete:h});return t instanceof o.w0&&t.add(B),B}};function S0(){return this._results[ya()]()}class Nc{get changes(){return this._changes||(this._changes=new ss)}constructor(t=!1){this._emitDistinctChangesOnly=t,this.dirty=!0,this._results=[],this._changesDetected=!1,this._changes=null,this.length=0,this.first=void 0,this.last=void 0;const n=ya(),i=Nc.prototype;i[n]||(i[n]=S0)}get(t){return this._results[t]}map(t){return this._results.map(t)}filter(t){return this._results.filter(t)}find(t){return this._results.find(t)}reduce(t,n){return this._results.reduce(t,n)}forEach(t){this._results.forEach(t)}some(t){return this._results.some(t)}toArray(){return this._results.slice()}toString(){return this._results.toString()}reset(t,n){const i=this;i.dirty=!1;const r=function f(e){return e.flat(Number.POSITIVE_INFINITY)}(t);(this._changesDetected=!function pl(e,t,n){if(e.length!==t.length)return!1;for(let i=0;i{class e{}return e.__NG_ELEMENT_ID__=k0,e})();const O0=jl,I0=class extends O0{constructor(t,n,i){super(),this._declarationLView=t,this._declarationTContainer=n,this.elementRef=i}createEmbeddedView(t,n){const i=this._declarationTContainer.tViews,r=vc(this._declarationLView,i,t,16,null,i.declTNode,null,null,null,null,n||null);r[17]=this._declarationLView[this._declarationTContainer.index];const h=this._declarationLView[19];return null!==h&&(r[19]=h.createEmbeddedView(i)),Vd(i,r,t),new Ol(r)}};function k0(){return Bc(Sn(),ce())}function Bc(e,t){return 4&e.type?new I0(t,e,Ua(e,t)):null}let Vc=(()=>{class e{}return e.__NG_ELEMENT_ID__=P0,e})();function P0(){return Sm(Sn(),ce())}const R0=Vc,Am=class extends R0{constructor(t,n,i){super(),this._lContainer=t,this._hostTNode=n,this._hostLView=i}get element(){return Ua(this._hostTNode,this._hostLView)}get injector(){return new vr(this._hostTNode,this._hostLView)}get parentInjector(){const t=Ei(this._hostTNode,this._hostLView);if(_r(t)){const n=Yr(t,this._hostLView),i=Qo(t);return new vr(n[1].data[i+8],n)}return new vr(null,this._hostLView)}clear(){for(;this.length>0;)this.remove(this.length-1)}get(t){const n=Tm(this._lContainer);return null!==n&&n[t]||null}get length(){return this._lContainer.length-10}createEmbeddedView(t,n,i){let r,a;"number"==typeof i?r=i:null!=i&&(r=i.index,a=i.injector);const h=t.createEmbeddedView(n||{},a);return this.insert(h,r),h}createComponent(t,n,i,r,a){const h=t&&!function Er(e){return"function"==typeof e}(t);let m;if(h)m=n;else{const X=n||{};m=X.index,i=X.injector,r=X.projectableNodes,a=X.environmentInjector||X.ngModuleRef}const x=h?t:new Il(dn(t)),O=i||this.parentInjector;if(!a&&null==x.ngModule){const Te=(h?O:this.parentInjector).get(va,null);Te&&(a=Te)}const B=x.create(O,r,void 0,a);return this.insert(B.hostView,m),B}insert(t,n){const i=t._lView,r=i[1];if(function pr(e){return Pn(e[3])}(i)){const B=this.indexOf(t);if(-1!==B)this.detach(B);else{const X=i[3],Te=new Am(X,X[6],X[3]);Te.detach(Te.indexOf(t))}}const a=this._adjustIndex(n),h=this._lContainer;!function ro(e,t,n,i){const r=10+i,a=n.length;i>0&&(n[r-1][4]=t),i0)i.push(h[m/2]);else{const O=a[m+1],B=t[-x];for(let X=10;X{class e{constructor(n){this.appInits=n,this.resolve=Hc,this.reject=Hc,this.initialized=!1,this.done=!1,this.donePromise=new Promise((i,r)=>{this.resolve=i,this.reject=r})}runInitializers(){if(this.initialized)return;const n=[],i=()=>{this.done=!0,this.resolve()};if(this.appInits)for(let r=0;r{a.subscribe({complete:m,error:x})});n.push(h)}}Promise.all(n).then(()=>{i()}).catch(r=>{this.reject(r)}),0===n.length&&i(),this.initialized=!0}}return e.\u0275fac=function(n){return new(n||e)(T(og,8))},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const rg=new In("AppId",{providedIn:"root",factory:function sg(){return`${Vu()}${Vu()}${Vu()}`}});function Vu(){return String.fromCharCode(97+Math.floor(25*Math.random()))}const ag=new In("Platform Initializer"),sx=new In("Platform ID",{providedIn:"platform",factory:()=>"unknown"}),lg=new In("appBootstrapListener"),ax=new In("AnimationModuleType");let lx=(()=>{class e{log(n){console.log(n)}warn(n){console.warn(n)}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();const zc=new In("LocaleId",{providedIn:"root",factory:()=>Y(zc,Ce.Optional|Ce.SkipSelf)||function cx(){return typeof $localize<"u"&&$localize.locale||nl}()}),dx=new In("DefaultCurrencyCode",{providedIn:"root",factory:()=>"USD"});class ux{constructor(t,n){this.ngModuleFactory=t,this.componentFactories=n}}let hx=(()=>{class e{compileModuleSync(n){return new Mu(n)}compileModuleAsync(n){return Promise.resolve(this.compileModuleSync(n))}compileModuleAndAllComponentsSync(n){const i=this.compileModuleSync(n),a=Ds(Bn(n).declarations).reduce((h,m)=>{const x=dn(m);return x&&h.push(new Il(x)),h},[]);return new ux(i,a)}compileModuleAndAllComponentsAsync(n){return Promise.resolve(this.compileModuleAndAllComponentsSync(n))}clearCache(){}clearCacheFor(n){}getModuleId(n){}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();const mx=(()=>Promise.resolve(0))();function Uu(e){typeof Zone>"u"?mx.then(()=>{e&&e.apply(null,null)}):Zone.current.scheduleMicroTask("scheduleMicrotask",e)}class ir{constructor({enableLongStackTrace:t=!1,shouldCoalesceEventChangeDetection:n=!1,shouldCoalesceRunChangeDetection:i=!1}){if(this.hasPendingMacrotasks=!1,this.hasPendingMicrotasks=!1,this.isStable=!0,this.onUnstable=new ss(!1),this.onMicrotaskEmpty=new ss(!1),this.onStable=new ss(!1),this.onError=new ss(!1),typeof Zone>"u")throw new ne(908,!1);Zone.assertZonePatched();const r=this;r._nesting=0,r._outer=r._inner=Zone.current,Zone.TaskTrackingZoneSpec&&(r._inner=r._inner.fork(new Zone.TaskTrackingZoneSpec)),t&&Zone.longStackTraceZoneSpec&&(r._inner=r._inner.fork(Zone.longStackTraceZoneSpec)),r.shouldCoalesceEventChangeDetection=!i&&n,r.shouldCoalesceRunChangeDetection=i,r.lastRequestAnimationFrameId=-1,r.nativeRequestAnimationFrame=function gx(){let e=F.requestAnimationFrame,t=F.cancelAnimationFrame;if(typeof Zone<"u"&&e&&t){const n=e[Zone.__symbol__("OriginalDelegate")];n&&(e=n);const i=t[Zone.__symbol__("OriginalDelegate")];i&&(t=i)}return{nativeRequestAnimationFrame:e,nativeCancelAnimationFrame:t}}().nativeRequestAnimationFrame,function bx(e){const t=()=>{!function vx(e){e.isCheckStableRunning||-1!==e.lastRequestAnimationFrameId||(e.lastRequestAnimationFrameId=e.nativeRequestAnimationFrame.call(F,()=>{e.fakeTopEventTask||(e.fakeTopEventTask=Zone.root.scheduleEventTask("fakeTopEventTask",()=>{e.lastRequestAnimationFrameId=-1,ju(e),e.isCheckStableRunning=!0,Hu(e),e.isCheckStableRunning=!1},void 0,()=>{},()=>{})),e.fakeTopEventTask.invoke()}),ju(e))}(e)};e._inner=e._inner.fork({name:"angular",properties:{isAngularZone:!0},onInvokeTask:(n,i,r,a,h,m)=>{try{return ug(e),n.invokeTask(r,a,h,m)}finally{(e.shouldCoalesceEventChangeDetection&&"eventTask"===a.type||e.shouldCoalesceRunChangeDetection)&&t(),hg(e)}},onInvoke:(n,i,r,a,h,m,x)=>{try{return ug(e),n.invoke(r,a,h,m,x)}finally{e.shouldCoalesceRunChangeDetection&&t(),hg(e)}},onHasTask:(n,i,r,a)=>{n.hasTask(r,a),i===r&&("microTask"==a.change?(e._hasPendingMicrotasks=a.microTask,ju(e),Hu(e)):"macroTask"==a.change&&(e.hasPendingMacrotasks=a.macroTask))},onHandleError:(n,i,r,a)=>(n.handleError(r,a),e.runOutsideAngular(()=>e.onError.emit(a)),!1)})}(r)}static isInAngularZone(){return typeof Zone<"u"&&!0===Zone.current.get("isAngularZone")}static assertInAngularZone(){if(!ir.isInAngularZone())throw new ne(909,!1)}static assertNotInAngularZone(){if(ir.isInAngularZone())throw new ne(909,!1)}run(t,n,i){return this._inner.run(t,n,i)}runTask(t,n,i,r){const a=this._inner,h=a.scheduleEventTask("NgZoneEvent: "+r,t,_x,Hc,Hc);try{return a.runTask(h,n,i)}finally{a.cancelTask(h)}}runGuarded(t,n,i){return this._inner.runGuarded(t,n,i)}runOutsideAngular(t){return this._outer.run(t)}}const _x={};function Hu(e){if(0==e._nesting&&!e.hasPendingMicrotasks&&!e.isStable)try{e._nesting++,e.onMicrotaskEmpty.emit(null)}finally{if(e._nesting--,!e.hasPendingMicrotasks)try{e.runOutsideAngular(()=>e.onStable.emit(null))}finally{e.isStable=!0}}}function ju(e){e.hasPendingMicrotasks=!!(e._hasPendingMicrotasks||(e.shouldCoalesceEventChangeDetection||e.shouldCoalesceRunChangeDetection)&&-1!==e.lastRequestAnimationFrameId)}function ug(e){e._nesting++,e.isStable&&(e.isStable=!1,e.onUnstable.emit(null))}function hg(e){e._nesting--,Hu(e)}class yx{constructor(){this.hasPendingMicrotasks=!1,this.hasPendingMacrotasks=!1,this.isStable=!0,this.onUnstable=new ss,this.onMicrotaskEmpty=new ss,this.onStable=new ss,this.onError=new ss}run(t,n,i){return t.apply(n,i)}runGuarded(t,n,i){return t.apply(n,i)}runOutsideAngular(t){return t()}runTask(t,n,i,r){return t.apply(n,i)}}const fg=new In(""),pg=new In("");let zu,xx=(()=>{class e{constructor(n,i,r){this._ngZone=n,this.registry=i,this._pendingCount=0,this._isZoneStable=!0,this._didWork=!1,this._callbacks=[],this.taskTrackingZone=null,zu||(function Cx(e){zu=e}(r),r.addToWindow(i)),this._watchAngularEvents(),n.run(()=>{this.taskTrackingZone=typeof Zone>"u"?null:Zone.current.get("TaskTrackingZone")})}_watchAngularEvents(){this._ngZone.onUnstable.subscribe({next:()=>{this._didWork=!0,this._isZoneStable=!1}}),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.subscribe({next:()=>{ir.assertNotInAngularZone(),Uu(()=>{this._isZoneStable=!0,this._runCallbacksIfReady()})}})})}increasePendingRequestCount(){return this._pendingCount+=1,this._didWork=!0,this._pendingCount}decreasePendingRequestCount(){if(this._pendingCount-=1,this._pendingCount<0)throw new Error("pending async requests below zero");return this._runCallbacksIfReady(),this._pendingCount}isStable(){return this._isZoneStable&&0===this._pendingCount&&!this._ngZone.hasPendingMacrotasks}_runCallbacksIfReady(){if(this.isStable())Uu(()=>{for(;0!==this._callbacks.length;){let n=this._callbacks.pop();clearTimeout(n.timeoutId),n.doneCb(this._didWork)}this._didWork=!1});else{let n=this.getPendingTasks();this._callbacks=this._callbacks.filter(i=>!i.updateCb||!i.updateCb(n)||(clearTimeout(i.timeoutId),!1)),this._didWork=!0}}getPendingTasks(){return this.taskTrackingZone?this.taskTrackingZone.macroTasks.map(n=>({source:n.source,creationLocation:n.creationLocation,data:n.data})):[]}addCallback(n,i,r){let a=-1;i&&i>0&&(a=setTimeout(()=>{this._callbacks=this._callbacks.filter(h=>h.timeoutId!==a),n(this._didWork,this.getPendingTasks())},i)),this._callbacks.push({doneCb:n,timeoutId:a,updateCb:r})}whenStable(n,i,r){if(r&&!this.taskTrackingZone)throw new Error('Task tracking zone is required when passing an update callback to whenStable(). Is "zone.js/plugins/task-tracking" loaded?');this.addCallback(n,i,r),this._runCallbacksIfReady()}getPendingRequestCount(){return this._pendingCount}registerApplication(n){this.registry.registerApplication(n,this)}unregisterApplication(n){this.registry.unregisterApplication(n)}findProviders(n,i,r){return[]}}return e.\u0275fac=function(n){return new(n||e)(T(ir),T(mg),T(pg))},e.\u0275prov=tn({token:e,factory:e.\u0275fac}),e})(),mg=(()=>{class e{constructor(){this._applications=new Map}registerApplication(n,i){this._applications.set(n,i)}unregisterApplication(n){this._applications.delete(n)}unregisterAllApplications(){this._applications.clear()}getTestability(n){return this._applications.get(n)||null}getAllTestabilities(){return Array.from(this._applications.values())}getAllRootElements(){return Array.from(this._applications.keys())}findTestabilityInTree(n,i=!0){var r,a;return null!==(r=null===(a=zu)||void 0===a?void 0:a.findTestabilityInTree(this,n,i))&&void 0!==r?r:null}}return e.\u0275fac=function(n){return new(n||e)},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})(),Js=null;const gg=new In("AllowMultipleToken"),$u=new In("PlatformDestroyListeners");class Mx{constructor(t,n){this.name=t,this.token=n}}function vg(e,t,n=[]){const i=`Platform: ${t}`,r=new In(i);return(a=[])=>{let h=Gu();if(!h||h.injector.get(gg,!1)){const m=[...n,...a,{provide:r,useValue:!0}];e?e(m):function wx(e){if(Js&&!Js.get(gg,!1))throw new ne(400,!1);Js=e;const t=e.get(yg);(function _g(e){const t=e.get(ag,null);t&&t.forEach(n=>n())})(e)}(function bg(e=[],t){return ba.create({name:t,providers:[{provide:Ad,useValue:"platform"},{provide:$u,useValue:new Set([()=>Js=null])},...e]})}(m,i))}return function Tx(e){const t=Gu();if(!t)throw new ne(401,!1);return t}()}}function Gu(){var e,t;return null!==(e=null===(t=Js)||void 0===t?void 0:t.get(yg))&&void 0!==e?e:null}let yg=(()=>{class e{constructor(n){this._injector=n,this._modules=[],this._destroyListeners=[],this._destroyed=!1}bootstrapModuleFactory(n,i){const r=function Cg(e,t){let n;return n="noop"===e?new yx:("zone.js"===e?void 0:e)||new ir(t),n}(null==i?void 0:i.ngZone,function xg(e){return{enableLongStackTrace:!1,shouldCoalesceEventChangeDetection:!(!e||!e.ngZoneEventCoalescing)||!1,shouldCoalesceRunChangeDetection:!(!e||!e.ngZoneRunCoalescing)||!1}}(i)),a=[{provide:ir,useValue:r}];return r.run(()=>{const h=ba.create({providers:a,parent:this.injector,name:n.moduleType.name}),m=n.create(h),x=m.injector.get(Tl,null);if(!x)throw new ne(402,!1);return r.runOutsideAngular(()=>{const O=r.onError.subscribe({next:B=>{x.handleError(B)}});m.onDestroy(()=>{Gc(this._modules,m),O.unsubscribe()})}),function Dg(e,t,n){try{const i=n();return ou(i)?i.catch(r=>{throw t.runOutsideAngular(()=>e.handleError(r)),r}):i}catch(i){throw t.runOutsideAngular(()=>e.handleError(i)),i}}(x,r,()=>{const O=m.injector.get(jc);return O.runInitializers(),O.donePromise.then(()=>(function Bp(e){Lt(e,"Expected localeId to be defined"),"string"==typeof e&&(Np=e.toLowerCase().replace(/_/g,"-"))}(m.injector.get(zc,nl)||nl),this._moduleDoBootstrap(m),m))})})}bootstrapModule(n,i=[]){const r=Eg({},i);return function Dx(e,t,n){const i=new Mu(n);return Promise.resolve(i)}(0,0,n).then(a=>this.bootstrapModuleFactory(a,r))}_moduleDoBootstrap(n){const i=n.injector.get($c);if(n._bootstrapComponents.length>0)n._bootstrapComponents.forEach(r=>i.bootstrap(r));else{if(!n.instance.ngDoBootstrap)throw new ne(-403,!1);n.instance.ngDoBootstrap(i)}this._modules.push(n)}onDestroy(n){this._destroyListeners.push(n)}get injector(){return this._injector}destroy(){if(this._destroyed)throw new ne(404,!1);this._modules.slice().forEach(i=>i.destroy()),this._destroyListeners.forEach(i=>i());const n=this._injector.get($u,null);n&&(n.forEach(i=>i()),n.clear()),this._destroyed=!0}get destroyed(){return this._destroyed}}return e.\u0275fac=function(n){return new(n||e)(T(ba))},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"platform"}),e})();function Eg(e,t){return Array.isArray(t)?t.reduce(Eg,e):{...e,...t}}let $c=(()=>{class e{get destroyed(){return this._destroyed}get injector(){return this._injector}constructor(n,i,r){this._zone=n,this._injector=i,this._exceptionHandler=r,this._bootstrapListeners=[],this._views=[],this._runningTick=!1,this._stable=!0,this._destroyed=!1,this._destroyListeners=[],this.componentTypes=[],this.components=[],this._onMicrotaskEmptySubscription=this._zone.onMicrotaskEmpty.subscribe({next:()=>{this._zone.run(()=>{this.tick()})}});const a=new M.y(m=>{this._stable=this._zone.isStable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks,this._zone.runOutsideAngular(()=>{m.next(this._stable),m.complete()})}),h=new M.y(m=>{let x;this._zone.runOutsideAngular(()=>{x=this._zone.onStable.subscribe(()=>{ir.assertNotInAngularZone(),Uu(()=>{!this._stable&&!this._zone.hasPendingMacrotasks&&!this._zone.hasPendingMicrotasks&&(this._stable=!0,m.next(!0))})})});const O=this._zone.onUnstable.subscribe(()=>{ir.assertInAngularZone(),this._stable&&(this._stable=!1,this._zone.runOutsideAngular(()=>{m.next(!1)}))});return()=>{x.unsubscribe(),O.unsubscribe()}});this.isStable=(0,re.T)(a,h.pipe(function Se(e={}){const{connector:t=(()=>new c.x),resetOnError:n=!0,resetOnComplete:i=!0,resetOnRefCountZero:r=!0}=e;return a=>{let h,m,x,O=0,B=!1,X=!1;const Te=()=>{null==m||m.unsubscribe(),m=void 0},Ue=()=>{Te(),h=x=void 0,B=X=!1},nt=()=>{const ht=h;Ue(),null==ht||ht.unsubscribe()};return(0,fe.e)((ht,Mt)=>{O++,!X&&!B&&Te();const Pt=x=null!=x?x:t();Mt.add(()=>{O--,0===O&&!X&&!B&&(m=ie(nt,r))}),Pt.subscribe(Mt),!h&&O>0&&(h=new H.Hp({next:Ut=>Pt.next(Ut),error:Ut=>{X=!0,Te(),m=ie(Ue,n,Ut),Pt.error(Ut)},complete:()=>{B=!0,Te(),m=ie(Ue,i),Pt.complete()}}),(0,Q.Xf)(ht).subscribe(h))})(a)}}()))}bootstrap(n,i){const r=n instanceof Rh;if(!this._injector.get(jc).done)throw!r&&ai(n),new ne(405,false);let h;h=r?n:this._injector.get(wl).resolveComponentFactory(n),this.componentTypes.push(h.componentType);const m=function Ex(e){return e.isBoundToModule}(h)?void 0:this._injector.get(il),O=h.create(ba.NULL,[],i||h.selector,m),B=O.location.nativeElement,X=O.injector.get(fg,null);return null==X||X.registerApplication(B),O.onDestroy(()=>{this.detachView(O.hostView),Gc(this.components,O),null==X||X.unregisterApplication(B)}),this._loadComponent(O),O}tick(){if(this._runningTick)throw new ne(101,!1);try{this._runningTick=!0;for(let n of this._views)n.detectChanges()}catch(n){this._zone.runOutsideAngular(()=>this._exceptionHandler.handleError(n))}finally{this._runningTick=!1}}attachView(n){const i=n;this._views.push(i),i.attachToAppRef(this)}detachView(n){const i=n;Gc(this._views,i),i.detachFromAppRef()}_loadComponent(n){this.attachView(n.hostView),this.tick(),this.components.push(n);const i=this._injector.get(lg,[]);i.push(...this._bootstrapListeners),i.forEach(r=>r(n))}ngOnDestroy(){if(!this._destroyed)try{this._destroyListeners.forEach(n=>n()),this._views.slice().forEach(n=>n.destroy()),this._onMicrotaskEmptySubscription.unsubscribe()}finally{this._destroyed=!0,this._views=[],this._bootstrapListeners=[],this._destroyListeners=[]}}onDestroy(n){return this._destroyListeners.push(n),()=>Gc(this._destroyListeners,n)}destroy(){if(this._destroyed)throw new ne(406,!1);const n=this._injector;n.destroy&&!n.destroyed&&n.destroy()}get viewCount(){return this._views.length}warnIfDestroyed(){}}return e.\u0275fac=function(n){return new(n||e)(T(ir),T(va),T(Tl))},e.\u0275prov=tn({token:e,factory:e.\u0275fac,providedIn:"root"}),e})();function Gc(e,t){const n=e.indexOf(t);n>-1&&e.splice(n,1)}function Ox(){}let Ix=(()=>{class e{}return e.__NG_ELEMENT_ID__=kx,e})();function kx(e){return function Px(e,t,n){if(uo(e)&&!n){const i=gi(e.index,t);return new Ol(i,i)}return 47&e.type?new Ol(t[16],t):null}(Sn(),ce(),16==(16&e))}class Sg{constructor(){}supports(t){return kl(t)}create(t){return new Vx(t)}}const Bx=(e,t)=>t;class Vx{constructor(t){this.length=0,this._linkedRecords=null,this._unlinkedRecords=null,this._previousItHead=null,this._itHead=null,this._itTail=null,this._additionsHead=null,this._additionsTail=null,this._movesHead=null,this._movesTail=null,this._removalsHead=null,this._removalsTail=null,this._identityChangesHead=null,this._identityChangesTail=null,this._trackByFn=t||Bx}forEachItem(t){let n;for(n=this._itHead;null!==n;n=n._next)t(n)}forEachOperation(t){let n=this._itHead,i=this._removalsHead,r=0,a=null;for(;n||i;){const h=!i||n&&n.currentIndex{h=this._trackByFn(r,m),null!==n&&Object.is(n.trackById,h)?(i&&(n=this._verifyReinsertion(n,m,h,r)),Object.is(n.item,m)||this._addIdentityChange(n,m)):(n=this._mismatch(n,m,h,r),i=!0),n=n._next,r++}),this.length=r;return this._truncate(n),this.collection=t,this.isDirty}get isDirty(){return null!==this._additionsHead||null!==this._movesHead||null!==this._removalsHead||null!==this._identityChangesHead}_reset(){if(this.isDirty){let t;for(t=this._previousItHead=this._itHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._additionsHead;null!==t;t=t._nextAdded)t.previousIndex=t.currentIndex;for(this._additionsHead=this._additionsTail=null,t=this._movesHead;null!==t;t=t._nextMoved)t.previousIndex=t.currentIndex;this._movesHead=this._movesTail=null,this._removalsHead=this._removalsTail=null,this._identityChangesHead=this._identityChangesTail=null}}_mismatch(t,n,i,r){let a;return null===t?a=this._itTail:(a=t._prev,this._remove(t)),null!==(t=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._reinsertAfter(t,a,r)):null!==(t=null===this._linkedRecords?null:this._linkedRecords.get(i,r))?(Object.is(t.item,n)||this._addIdentityChange(t,n),this._moveAfter(t,a,r)):t=this._addAfter(new Ux(n,i),a,r),t}_verifyReinsertion(t,n,i,r){let a=null===this._unlinkedRecords?null:this._unlinkedRecords.get(i,null);return null!==a?t=this._reinsertAfter(a,t._prev,r):t.currentIndex!=r&&(t.currentIndex=r,this._addToMoves(t,r)),t}_truncate(t){for(;null!==t;){const n=t._next;this._addToRemovals(this._unlink(t)),t=n}null!==this._unlinkedRecords&&this._unlinkedRecords.clear(),null!==this._additionsTail&&(this._additionsTail._nextAdded=null),null!==this._movesTail&&(this._movesTail._nextMoved=null),null!==this._itTail&&(this._itTail._next=null),null!==this._removalsTail&&(this._removalsTail._nextRemoved=null),null!==this._identityChangesTail&&(this._identityChangesTail._nextIdentityChange=null)}_reinsertAfter(t,n,i){null!==this._unlinkedRecords&&this._unlinkedRecords.remove(t);const r=t._prevRemoved,a=t._nextRemoved;return null===r?this._removalsHead=a:r._nextRemoved=a,null===a?this._removalsTail=r:a._prevRemoved=r,this._insertAfter(t,n,i),this._addToMoves(t,i),t}_moveAfter(t,n,i){return this._unlink(t),this._insertAfter(t,n,i),this._addToMoves(t,i),t}_addAfter(t,n,i){return this._insertAfter(t,n,i),this._additionsTail=null===this._additionsTail?this._additionsHead=t:this._additionsTail._nextAdded=t,t}_insertAfter(t,n,i){const r=null===n?this._itHead:n._next;return t._next=r,t._prev=n,null===r?this._itTail=t:r._prev=t,null===n?this._itHead=t:n._next=t,null===this._linkedRecords&&(this._linkedRecords=new Og),this._linkedRecords.put(t),t.currentIndex=i,t}_remove(t){return this._addToRemovals(this._unlink(t))}_unlink(t){null!==this._linkedRecords&&this._linkedRecords.remove(t);const n=t._prev,i=t._next;return null===n?this._itHead=i:n._next=i,null===i?this._itTail=n:i._prev=n,t}_addToMoves(t,n){return t.previousIndex===n||(this._movesTail=null===this._movesTail?this._movesHead=t:this._movesTail._nextMoved=t),t}_addToRemovals(t){return null===this._unlinkedRecords&&(this._unlinkedRecords=new Og),this._unlinkedRecords.put(t),t.currentIndex=null,t._nextRemoved=null,null===this._removalsTail?(this._removalsTail=this._removalsHead=t,t._prevRemoved=null):(t._prevRemoved=this._removalsTail,this._removalsTail=this._removalsTail._nextRemoved=t),t}_addIdentityChange(t,n){return t.item=n,this._identityChangesTail=null===this._identityChangesTail?this._identityChangesHead=t:this._identityChangesTail._nextIdentityChange=t,t}}class Ux{constructor(t,n){this.item=t,this.trackById=n,this.currentIndex=null,this.previousIndex=null,this._nextPrevious=null,this._prev=null,this._next=null,this._prevDup=null,this._nextDup=null,this._prevRemoved=null,this._nextRemoved=null,this._nextAdded=null,this._nextMoved=null,this._nextIdentityChange=null}}class Hx{constructor(){this._head=null,this._tail=null}add(t){null===this._head?(this._head=this._tail=t,t._nextDup=null,t._prevDup=null):(this._tail._nextDup=t,t._prevDup=this._tail,t._nextDup=null,this._tail=t)}get(t,n){let i;for(i=this._head;null!==i;i=i._nextDup)if((null===n||n<=i.currentIndex)&&Object.is(i.trackById,t))return i;return null}remove(t){const n=t._prevDup,i=t._nextDup;return null===n?this._head=i:n._nextDup=i,null===i?this._tail=n:i._prevDup=n,null===this._head}}class Og{constructor(){this.map=new Map}put(t){const n=t.trackById;let i=this.map.get(n);i||(i=new Hx,this.map.set(n,i)),i.add(t)}get(t,n){const r=this.map.get(t);return r?r.get(t,n):null}remove(t){const n=t.trackById;return this.map.get(n).remove(t)&&this.map.delete(n),t}get isEmpty(){return 0===this.map.size}clear(){this.map.clear()}}function Ig(e,t,n){const i=e.previousIndex;if(null===i)return i;let r=0;return n&&i{if(n&&n.key===r)this._maybeAddToChanges(n,i),this._appendAfter=n,n=n._next;else{const a=this._getOrCreateRecordForKey(r,i);n=this._insertBeforeOrAppend(n,a)}}),n){n._prev&&(n._prev._next=null),this._removalsHead=n;for(let i=n;null!==i;i=i._nextRemoved)i===this._mapHead&&(this._mapHead=null),this._records.delete(i.key),i._nextRemoved=i._next,i.previousValue=i.currentValue,i.currentValue=null,i._prev=null,i._next=null}return this._changesTail&&(this._changesTail._nextChanged=null),this._additionsTail&&(this._additionsTail._nextAdded=null),this.isDirty}_insertBeforeOrAppend(t,n){if(t){const i=t._prev;return n._next=t,n._prev=i,t._prev=n,i&&(i._next=n),t===this._mapHead&&(this._mapHead=n),this._appendAfter=t,t}return this._appendAfter?(this._appendAfter._next=n,n._prev=this._appendAfter):this._mapHead=n,this._appendAfter=n,null}_getOrCreateRecordForKey(t,n){if(this._records.has(t)){const r=this._records.get(t);this._maybeAddToChanges(r,n);const a=r._prev,h=r._next;return a&&(a._next=h),h&&(h._prev=a),r._next=null,r._prev=null,r}const i=new zx(t);return this._records.set(t,i),i.currentValue=n,this._addToAdditions(i),i}_reset(){if(this.isDirty){let t;for(this._previousMapHead=this._mapHead,t=this._previousMapHead;null!==t;t=t._next)t._nextPrevious=t._next;for(t=this._changesHead;null!==t;t=t._nextChanged)t.previousValue=t.currentValue;for(t=this._additionsHead;null!=t;t=t._nextAdded)t.previousValue=t.currentValue;this._changesHead=this._changesTail=null,this._additionsHead=this._additionsTail=null,this._removalsHead=null}}_maybeAddToChanges(t,n){Object.is(n,t.currentValue)||(t.previousValue=t.currentValue,t.currentValue=n,this._addToChanges(t))}_addToAdditions(t){null===this._additionsHead?this._additionsHead=this._additionsTail=t:(this._additionsTail._nextAdded=t,this._additionsTail=t)}_addToChanges(t){null===this._changesHead?this._changesHead=this._changesTail=t:(this._changesTail._nextChanged=t,this._changesTail=t)}_forEach(t,n){t instanceof Map?t.forEach(n):Object.keys(t).forEach(i=>n(t[i],i))}}class zx{constructor(t){this.key=t,this.previousValue=null,this.currentValue=null,this._nextPrevious=null,this._next=null,this._prev=null,this._nextAdded=null,this._nextRemoved=null,this._nextChanged=null}}function Pg(){return new qu([new Sg])}let qu=(()=>{class e{constructor(n){this.factories=n}static create(n,i){if(null!=i){const r=i.factories.slice();n=n.concat(r)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||Pg()),deps:[[e,new gs,new ha]]}}find(n){const i=this.factories.find(r=>r.supports(n));if(null!=i)return i;throw new ne(901,!1)}}return e.\u0275prov=tn({token:e,providedIn:"root",factory:Pg}),e})();function Rg(){return new Xu([new kg])}let Xu=(()=>{class e{constructor(n){this.factories=n}static create(n,i){if(i){const r=i.factories.slice();n=n.concat(r)}return new e(n)}static extend(n){return{provide:e,useFactory:i=>e.create(n,i||Rg()),deps:[[e,new gs,new ha]]}}find(n){const i=this.factories.find(r=>r.supports(n));if(i)return i;throw new ne(901,!1)}}return e.\u0275prov=tn({token:e,providedIn:"root",factory:Rg}),e})();const Wx=vg(null,"core",[]);let Yx=(()=>{class e{constructor(n){}}return e.\u0275fac=function(n){return new(n||e)(T($c))},e.\u0275mod=Zi({type:e}),e.\u0275inj=Ct({}),e})();function Kx(e){return"boolean"==typeof e?e:null!=e&&"false"!==e}},433:(ze,me,b)=>{b.d(me,{Zs:()=>ur,Fj:()=>ne,sg:()=>Wo,u5:()=>Fn,Cf:()=>ee,JU:()=>Ie,a5:()=>R,JJ:()=>Ke,JL:()=>it,F:()=>Ci,On:()=>yo,kI:()=>de,_Y:()=>xo});var c=b(1571),o=b(6895),M=b(2076),re=b(9751),Q=b(4742),H=b(8421),fe=b(3269),Se=b(5403),ie=b(3268),Z=b(1810),se=b(4004);let Ee=(()=>{class S{constructor(C,U){this._renderer=C,this._elementRef=U,this.onChange=ce=>{},this.onTouched=()=>{}}setProperty(C,U){this._renderer.setProperty(this._elementRef.nativeElement,C,U)}registerOnTouched(C){this.onTouched=C}registerOnChange(C){this.onChange=C}setDisabledState(C){this.setProperty("disabled",C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(c.Qsj),c.Y36(c.SBq))},S.\u0275dir=c.lG2({type:S}),S})(),we=(()=>{class S extends Ee{}return S.\u0275fac=function(){let E;return function(U){return(E||(E=c.n5z(S)))(U||S)}}(),S.\u0275dir=c.lG2({type:S,features:[c.qOj]}),S})();const Ie=new c.OlP("NgValueAccessor"),Je={provide:Ie,useExisting:(0,c.Gpc)(()=>ne),multi:!0},_t=new c.OlP("CompositionEventMode");let ne=(()=>{class S extends Ee{constructor(C,U,ce){super(C,U),this._compositionMode=ce,this._composing=!1,null==this._compositionMode&&(this._compositionMode=!function pt(){const S=(0,o.q)()?(0,o.q)().getUserAgent():"";return/android (\d+)/.test(S.toLowerCase())}())}writeValue(C){this.setProperty("value",null==C?"":C)}_handleInput(C){(!this._compositionMode||this._compositionMode&&!this._composing)&&this.onChange(C)}_compositionStart(){this._composing=!0}_compositionEnd(C){this._composing=!1,this._compositionMode&&this.onChange(C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(c.Qsj),c.Y36(c.SBq),c.Y36(_t,8))},S.\u0275dir=c.lG2({type:S,selectors:[["input","formControlName","",3,"type","checkbox"],["textarea","formControlName",""],["input","formControl","",3,"type","checkbox"],["textarea","formControl",""],["input","ngModel","",3,"type","checkbox"],["textarea","ngModel",""],["","ngDefaultControl",""]],hostBindings:function(C,U){1&C&&c.NdJ("input",function(dt){return U._handleInput(dt.target.value)})("blur",function(){return U.onTouched()})("compositionstart",function(){return U._compositionStart()})("compositionend",function(dt){return U._compositionEnd(dt.target.value)})},features:[c._Bn([Je]),c.qOj]}),S})();function j(S){return null==S||("string"==typeof S||Array.isArray(S))&&0===S.length}function $(S){return null!=S&&"number"==typeof S.length}const ee=new c.OlP("NgValidators"),ae=new c.OlP("NgAsyncValidators"),Pe=/^(?=.{1,254}$)(?=.{1,64}@)[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-zA-Z0-9!#$%&'*+/=?^_`{|}~-]+)*@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;class de{static min(E){return function be(S){return E=>{if(j(E.value)||j(S))return null;const C=parseFloat(E.value);return!isNaN(C)&&C{if(j(E.value)||j(S))return null;const C=parseFloat(E.value);return!isNaN(C)&&C>S?{max:{max:S,actual:E.value}}:null}}(E)}static required(E){return ke(E)}static requiredTrue(E){return Xe(E)}static email(E){return function $e(S){return j(S.value)||Pe.test(S.value)?null:{email:!0}}(E)}static minLength(E){return function bt(S){return E=>j(E.value)||!$(E.value)?null:E.value.length$(E.value)&&E.value.length>S?{maxlength:{requiredLength:S,actualLength:E.value.length}}:null}(E)}static pattern(E){return function ot(S){if(!S)return st;let E,C;return"string"==typeof S?(C="","^"!==S.charAt(0)&&(C+="^"),C+=S,"$"!==S.charAt(S.length-1)&&(C+="$"),E=new RegExp(C)):(C=S.toString(),E=S),U=>{if(j(U.value))return null;const ce=U.value;return E.test(ce)?null:{pattern:{requiredPattern:C,actualValue:ce}}}}(E)}static nullValidator(E){return null}static compose(E){return hn(E)}static composeAsync(E){return yn(E)}}function ke(S){return j(S.value)?{required:!0}:null}function Xe(S){return!0===S.value?null:{required:!0}}function st(S){return null}function mt(S){return null!=S}function ut(S){return(0,c.QGY)(S)?(0,M.D)(S):S}function lt(S){let E={};return S.forEach(C=>{E=null!=C?{...E,...C}:E}),0===Object.keys(E).length?null:E}function jt(S,E){return E.map(C=>C(S))}function yt(S){return S.map(E=>function Lt(S){return!S.validate}(E)?E:C=>E.validate(C))}function hn(S){if(!S)return null;const E=S.filter(mt);return 0==E.length?null:function(C){return lt(jt(C,E))}}function It(S){return null!=S?hn(yt(S)):null}function yn(S){if(!S)return null;const E=S.filter(mt);return 0==E.length?null:function(C){return function ye(...S){const E=(0,fe.jO)(S),{args:C,keys:U}=(0,Q.D)(S),ce=new re.y(dt=>{const{length:fn}=C;if(!fn)return void dt.complete();const di=new Array(fn);let Sn=fn,eo=fn;for(let to=0;to{_i||(_i=!0,eo--),di[to]=Lo},()=>Sn--,void 0,()=>{(!Sn||!_i)&&(eo||dt.next(U?(0,Z.n)(U,di):di),dt.complete())}))}});return E?ce.pipe((0,ie.Z)(E)):ce}(jt(C,E).map(ut)).pipe((0,se.U)(lt))}}function tn(S){return null!=S?yn(yt(S)):null}function xn(S,E){return null===S?[E]:Array.isArray(S)?[...S,E]:[S,E]}function Ct(S){return S._rawValidators}function Ht(S){return S._rawAsyncValidators}function oe(S){return S?Array.isArray(S)?S:[S]:[]}function ve(S,E){return Array.isArray(S)?S.includes(E):S===E}function G(S,E){const C=oe(E);return oe(S).forEach(ce=>{ve(C,ce)||C.push(ce)}),C}function Re(S,E){return oe(E).filter(C=>!ve(S,C))}class tt{constructor(){this._rawValidators=[],this._rawAsyncValidators=[],this._onDestroyCallbacks=[]}get value(){return this.control?this.control.value:null}get valid(){return this.control?this.control.valid:null}get invalid(){return this.control?this.control.invalid:null}get pending(){return this.control?this.control.pending:null}get disabled(){return this.control?this.control.disabled:null}get enabled(){return this.control?this.control.enabled:null}get errors(){return this.control?this.control.errors:null}get pristine(){return this.control?this.control.pristine:null}get dirty(){return this.control?this.control.dirty:null}get touched(){return this.control?this.control.touched:null}get status(){return this.control?this.control.status:null}get untouched(){return this.control?this.control.untouched:null}get statusChanges(){return this.control?this.control.statusChanges:null}get valueChanges(){return this.control?this.control.valueChanges:null}get path(){return null}_setValidators(E){this._rawValidators=E||[],this._composedValidatorFn=It(this._rawValidators)}_setAsyncValidators(E){this._rawAsyncValidators=E||[],this._composedAsyncValidatorFn=tn(this._rawAsyncValidators)}get validator(){return this._composedValidatorFn||null}get asyncValidator(){return this._composedAsyncValidatorFn||null}_registerOnDestroy(E){this._onDestroyCallbacks.push(E)}_invokeOnDestroyCallbacks(){this._onDestroyCallbacks.forEach(E=>E()),this._onDestroyCallbacks=[]}reset(E){this.control&&this.control.reset(E)}hasError(E,C){return!!this.control&&this.control.hasError(E,C)}getError(E,C){return this.control?this.control.getError(E,C):null}}class ue extends tt{get formDirective(){return null}get path(){return null}}class R extends tt{constructor(){super(...arguments),this._parent=null,this.name=null,this.valueAccessor=null}}class K{constructor(E){this._cd=E}get isTouched(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.touched)}get isUntouched(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.untouched)}get isPristine(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.pristine)}get isDirty(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.dirty)}get isValid(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.valid)}get isInvalid(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.invalid)}get isPending(){var E,C;return!(null===(E=this._cd)||void 0===E||null===(C=E.control)||void 0===C||!C.pending)}get isSubmitted(){var E;return!(null===(E=this._cd)||void 0===E||!E.submitted)}}let Ke=(()=>{class S extends K{constructor(C){super(C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(R,2))},S.\u0275dir=c.lG2({type:S,selectors:[["","formControlName",""],["","ngModel",""],["","formControl",""]],hostVars:14,hostBindings:function(C,U){2&C&&c.ekj("ng-untouched",U.isUntouched)("ng-touched",U.isTouched)("ng-pristine",U.isPristine)("ng-dirty",U.isDirty)("ng-valid",U.isValid)("ng-invalid",U.isInvalid)("ng-pending",U.isPending)},features:[c.qOj]}),S})(),it=(()=>{class S extends K{constructor(C){super(C)}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ue,10))},S.\u0275dir=c.lG2({type:S,selectors:[["","formGroupName",""],["","formArrayName",""],["","ngModelGroup",""],["","formGroup",""],["form",3,"ngNoForm",""],["","ngForm",""]],hostVars:16,hostBindings:function(C,U){2&C&&c.ekj("ng-untouched",U.isUntouched)("ng-touched",U.isTouched)("ng-pristine",U.isPristine)("ng-dirty",U.isDirty)("ng-valid",U.isValid)("ng-invalid",U.isInvalid)("ng-pending",U.isPending)("ng-submitted",U.isSubmitted)},features:[c.qOj]}),S})();const z="VALID",Y="INVALID",He="PENDING",gt="DISABLED";function Ft(S){return(ln(S)?S.validators:S)||null}function on(S,E){return(ln(E)?E.asyncValidators:S)||null}function ln(S){return null!=S&&!Array.isArray(S)&&"object"==typeof S}class xe{constructor(E,C){this._pendingDirty=!1,this._hasOwnPendingAsyncValidator=!1,this._pendingTouched=!1,this._onCollectionChange=()=>{},this._parent=null,this.pristine=!0,this.touched=!1,this._onDisabledChange=[],this._assignValidators(E),this._assignAsyncValidators(C)}get validator(){return this._composedValidatorFn}set validator(E){this._rawValidators=this._composedValidatorFn=E}get asyncValidator(){return this._composedAsyncValidatorFn}set asyncValidator(E){this._rawAsyncValidators=this._composedAsyncValidatorFn=E}get parent(){return this._parent}get valid(){return this.status===z}get invalid(){return this.status===Y}get pending(){return this.status==He}get disabled(){return this.status===gt}get enabled(){return this.status!==gt}get dirty(){return!this.pristine}get untouched(){return!this.touched}get updateOn(){return this._updateOn?this._updateOn:this.parent?this.parent.updateOn:"change"}setValidators(E){this._assignValidators(E)}setAsyncValidators(E){this._assignAsyncValidators(E)}addValidators(E){this.setValidators(G(E,this._rawValidators))}addAsyncValidators(E){this.setAsyncValidators(G(E,this._rawAsyncValidators))}removeValidators(E){this.setValidators(Re(E,this._rawValidators))}removeAsyncValidators(E){this.setAsyncValidators(Re(E,this._rawAsyncValidators))}hasValidator(E){return ve(this._rawValidators,E)}hasAsyncValidator(E){return ve(this._rawAsyncValidators,E)}clearValidators(){this.validator=null}clearAsyncValidators(){this.asyncValidator=null}markAsTouched(E={}){this.touched=!0,this._parent&&!E.onlySelf&&this._parent.markAsTouched(E)}markAllAsTouched(){this.markAsTouched({onlySelf:!0}),this._forEachChild(E=>E.markAllAsTouched())}markAsUntouched(E={}){this.touched=!1,this._pendingTouched=!1,this._forEachChild(C=>{C.markAsUntouched({onlySelf:!0})}),this._parent&&!E.onlySelf&&this._parent._updateTouched(E)}markAsDirty(E={}){this.pristine=!1,this._parent&&!E.onlySelf&&this._parent.markAsDirty(E)}markAsPristine(E={}){this.pristine=!0,this._pendingDirty=!1,this._forEachChild(C=>{C.markAsPristine({onlySelf:!0})}),this._parent&&!E.onlySelf&&this._parent._updatePristine(E)}markAsPending(E={}){this.status=He,!1!==E.emitEvent&&this.statusChanges.emit(this.status),this._parent&&!E.onlySelf&&this._parent.markAsPending(E)}disable(E={}){const C=this._parentMarkedDirty(E.onlySelf);this.status=gt,this.errors=null,this._forEachChild(U=>{U.disable({...E,onlySelf:!0})}),this._updateValue(),!1!==E.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._updateAncestors({...E,skipPristineCheck:C}),this._onDisabledChange.forEach(U=>U(!0))}enable(E={}){const C=this._parentMarkedDirty(E.onlySelf);this.status=z,this._forEachChild(U=>{U.enable({...E,onlySelf:!0})}),this.updateValueAndValidity({onlySelf:!0,emitEvent:E.emitEvent}),this._updateAncestors({...E,skipPristineCheck:C}),this._onDisabledChange.forEach(U=>U(!1))}_updateAncestors(E){this._parent&&!E.onlySelf&&(this._parent.updateValueAndValidity(E),E.skipPristineCheck||this._parent._updatePristine(),this._parent._updateTouched())}setParent(E){this._parent=E}getRawValue(){return this.value}updateValueAndValidity(E={}){this._setInitialStatus(),this._updateValue(),this.enabled&&(this._cancelExistingSubscription(),this.errors=this._runValidator(),this.status=this._calculateStatus(),(this.status===z||this.status===He)&&this._runAsyncValidator(E.emitEvent)),!1!==E.emitEvent&&(this.valueChanges.emit(this.value),this.statusChanges.emit(this.status)),this._parent&&!E.onlySelf&&this._parent.updateValueAndValidity(E)}_updateTreeValidity(E={emitEvent:!0}){this._forEachChild(C=>C._updateTreeValidity(E)),this.updateValueAndValidity({onlySelf:!0,emitEvent:E.emitEvent})}_setInitialStatus(){this.status=this._allControlsDisabled()?gt:z}_runValidator(){return this.validator?this.validator(this):null}_runAsyncValidator(E){if(this.asyncValidator){this.status=He,this._hasOwnPendingAsyncValidator=!0;const C=ut(this.asyncValidator(this));this._asyncValidationSubscription=C.subscribe(U=>{this._hasOwnPendingAsyncValidator=!1,this.setErrors(U,{emitEvent:E})})}}_cancelExistingSubscription(){this._asyncValidationSubscription&&(this._asyncValidationSubscription.unsubscribe(),this._hasOwnPendingAsyncValidator=!1)}setErrors(E,C={}){this.errors=E,this._updateControlsErrors(!1!==C.emitEvent)}get(E){let C=E;return null==C||(Array.isArray(C)||(C=C.split(".")),0===C.length)?null:C.reduce((U,ce)=>U&&U._find(ce),this)}getError(E,C){const U=C?this.get(C):this;return U&&U.errors?U.errors[E]:null}hasError(E,C){return!!this.getError(E,C)}get root(){let E=this;for(;E._parent;)E=E._parent;return E}_updateControlsErrors(E){this.status=this._calculateStatus(),E&&this.statusChanges.emit(this.status),this._parent&&this._parent._updateControlsErrors(E)}_initObservables(){this.valueChanges=new c.vpe,this.statusChanges=new c.vpe}_calculateStatus(){return this._allControlsDisabled()?gt:this.errors?Y:this._hasOwnPendingAsyncValidator||this._anyControlsHaveStatus(He)?He:this._anyControlsHaveStatus(Y)?Y:z}_anyControlsHaveStatus(E){return this._anyControls(C=>C.status===E)}_anyControlsDirty(){return this._anyControls(E=>E.dirty)}_anyControlsTouched(){return this._anyControls(E=>E.touched)}_updatePristine(E={}){this.pristine=!this._anyControlsDirty(),this._parent&&!E.onlySelf&&this._parent._updatePristine(E)}_updateTouched(E={}){this.touched=this._anyControlsTouched(),this._parent&&!E.onlySelf&&this._parent._updateTouched(E)}_registerOnCollectionChange(E){this._onCollectionChange=E}_setUpdateStrategy(E){ln(E)&&null!=E.updateOn&&(this._updateOn=E.updateOn)}_parentMarkedDirty(E){return!E&&!(!this._parent||!this._parent.dirty)&&!this._parent._anyControlsDirty()}_find(E){return null}_assignValidators(E){this._rawValidators=Array.isArray(E)?E.slice():E,this._composedValidatorFn=function kt(S){return Array.isArray(S)?It(S):S||null}(this._rawValidators)}_assignAsyncValidators(E){this._rawAsyncValidators=Array.isArray(E)?E.slice():E,this._composedAsyncValidatorFn=function Jn(S){return Array.isArray(S)?tn(S):S||null}(this._rawAsyncValidators)}}class J extends xe{constructor(E,C,U){super(Ft(C),on(U,C)),this.controls=E,this._initObservables(),this._setUpdateStrategy(C),this._setUpControls(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator})}registerControl(E,C){return this.controls[E]?this.controls[E]:(this.controls[E]=C,C.setParent(this),C._registerOnCollectionChange(this._onCollectionChange),C)}addControl(E,C,U={}){this.registerControl(E,C),this.updateValueAndValidity({emitEvent:U.emitEvent}),this._onCollectionChange()}removeControl(E,C={}){this.controls[E]&&this.controls[E]._registerOnCollectionChange(()=>{}),delete this.controls[E],this.updateValueAndValidity({emitEvent:C.emitEvent}),this._onCollectionChange()}setControl(E,C,U={}){this.controls[E]&&this.controls[E]._registerOnCollectionChange(()=>{}),delete this.controls[E],C&&this.registerControl(E,C),this.updateValueAndValidity({emitEvent:U.emitEvent}),this._onCollectionChange()}contains(E){return this.controls.hasOwnProperty(E)&&this.controls[E].enabled}setValue(E,C={}){(function Oe(S,E,C){S._forEachChild((U,ce)=>{if(void 0===C[ce])throw new c.vHH(1002,"")})})(this,0,E),Object.keys(E).forEach(U=>{(function _n(S,E,C){const U=S.controls;if(!(E?Object.keys(U):U).length)throw new c.vHH(1e3,"");if(!U[C])throw new c.vHH(1001,"")})(this,!0,U),this.controls[U].setValue(E[U],{onlySelf:!0,emitEvent:C.emitEvent})}),this.updateValueAndValidity(C)}patchValue(E,C={}){null!=E&&(Object.keys(E).forEach(U=>{const ce=this.controls[U];ce&&ce.patchValue(E[U],{onlySelf:!0,emitEvent:C.emitEvent})}),this.updateValueAndValidity(C))}reset(E={},C={}){this._forEachChild((U,ce)=>{U.reset(E[ce],{onlySelf:!0,emitEvent:C.emitEvent})}),this._updatePristine(C),this._updateTouched(C),this.updateValueAndValidity(C)}getRawValue(){return this._reduceChildren({},(E,C,U)=>(E[U]=C.getRawValue(),E))}_syncPendingControls(){let E=this._reduceChildren(!1,(C,U)=>!!U._syncPendingControls()||C);return E&&this.updateValueAndValidity({onlySelf:!0}),E}_forEachChild(E){Object.keys(this.controls).forEach(C=>{const U=this.controls[C];U&&E(U,C)})}_setUpControls(){this._forEachChild(E=>{E.setParent(this),E._registerOnCollectionChange(this._onCollectionChange)})}_updateValue(){this.value=this._reduceValue()}_anyControls(E){for(const[C,U]of Object.entries(this.controls))if(this.contains(C)&&E(U))return!0;return!1}_reduceValue(){return this._reduceChildren({},(C,U,ce)=>((U.enabled||this.disabled)&&(C[ce]=U.value),C))}_reduceChildren(E,C){let U=E;return this._forEachChild((ce,dt)=>{U=C(U,ce,dt)}),U}_allControlsDisabled(){for(const E of Object.keys(this.controls))if(this.controls[E].enabled)return!1;return Object.keys(this.controls).length>0||this.disabled}_find(E){return this.controls.hasOwnProperty(E)?this.controls[E]:null}}const un=new c.OlP("CallSetDisabledState",{providedIn:"root",factory:()=>An}),An="always";function si(S,E,C=An){var U,ce;Ni(S,E),E.valueAccessor.writeValue(S.value),(S.disabled||"always"===C)&&(null===(U=(ce=E.valueAccessor).setDisabledState)||void 0===U||U.call(ce,S.disabled)),function Zi(S,E){E.valueAccessor.registerOnChange(C=>{S._pendingValue=C,S._pendingChange=!0,S._pendingDirty=!0,"change"===S.updateOn&&bo(S,E)})}(S,E),function Bi(S,E){const C=(U,ce)=>{E.valueAccessor.writeValue(U),ce&&E.viewToModelUpdate(U)};S.registerOnChange(C),E._registerOnDestroy(()=>{S._unregisterOnChange(C)})}(S,E),function jo(S,E){E.valueAccessor.registerOnTouched(()=>{S._pendingTouched=!0,"blur"===S.updateOn&&S._pendingChange&&bo(S,E),"submit"!==S.updateOn&&S.markAsTouched()})}(S,E),function ao(S,E){if(E.valueAccessor.setDisabledState){const C=U=>{E.valueAccessor.setDisabledState(U)};S.registerOnDisabledChange(C),E._registerOnDestroy(()=>{S._unregisterOnDisabledChange(C)})}}(S,E)}function Li(S,E,C=!0){const U=()=>{};E.valueAccessor&&(E.valueAccessor.registerOnChange(U),E.valueAccessor.registerOnTouched(U)),xi(S,E),S&&(E._invokeOnDestroyCallbacks(),S._registerOnCollectionChange(()=>{}))}function Ti(S,E){S.forEach(C=>{C.registerOnValidatorChange&&C.registerOnValidatorChange(E)})}function Ni(S,E){const C=Ct(S);null!==E.validator?S.setValidators(xn(C,E.validator)):"function"==typeof C&&S.setValidators([C]);const U=Ht(S);null!==E.asyncValidator?S.setAsyncValidators(xn(U,E.asyncValidator)):"function"==typeof U&&S.setAsyncValidators([U]);const ce=()=>S.updateValueAndValidity();Ti(E._rawValidators,ce),Ti(E._rawAsyncValidators,ce)}function xi(S,E){let C=!1;if(null!==S){if(null!==E.validator){const ce=Ct(S);if(Array.isArray(ce)&&ce.length>0){const dt=ce.filter(fn=>fn!==E.validator);dt.length!==ce.length&&(C=!0,S.setValidators(dt))}}if(null!==E.asyncValidator){const ce=Ht(S);if(Array.isArray(ce)&&ce.length>0){const dt=ce.filter(fn=>fn!==E.asyncValidator);dt.length!==ce.length&&(C=!0,S.setAsyncValidators(dt))}}}const U=()=>{};return Ti(E._rawValidators,U),Ti(E._rawAsyncValidators,U),C}function bo(S,E){S._pendingDirty&&S.markAsDirty(),S.setValue(S._pendingValue,{emitModelToViewChange:!1}),E.viewToModelUpdate(S._pendingValue),S._pendingChange=!1}function or(S,E){Ni(S,E)}function Dn(S,E){S._syncPendingControls(),E.forEach(C=>{const U=C.control;"submit"===U.updateOn&&U._pendingChange&&(C.viewToModelUpdate(U._pendingValue),U._pendingChange=!1)})}const Si={provide:ue,useExisting:(0,c.Gpc)(()=>Ci)},sn=(()=>Promise.resolve())();let Ci=(()=>{class S extends ue{constructor(C,U,ce){super(),this.callSetDisabledState=ce,this.submitted=!1,this._directives=new Set,this.ngSubmit=new c.vpe,this.form=new J({},It(C),tn(U))}ngAfterViewInit(){this._setUpdateStrategy()}get formDirective(){return this}get control(){return this.form}get path(){return[]}get controls(){return this.form.controls}addControl(C){sn.then(()=>{const U=this._findContainer(C.path);C.control=U.registerControl(C.name,C.control),si(C.control,C,this.callSetDisabledState),C.control.updateValueAndValidity({emitEvent:!1}),this._directives.add(C)})}getControl(C){return this.form.get(C.path)}removeControl(C){sn.then(()=>{const U=this._findContainer(C.path);U&&U.removeControl(C.name),this._directives.delete(C)})}addFormGroup(C){sn.then(()=>{const U=this._findContainer(C.path),ce=new J({});or(ce,C),U.registerControl(C.name,ce),ce.updateValueAndValidity({emitEvent:!1})})}removeFormGroup(C){sn.then(()=>{const U=this._findContainer(C.path);U&&U.removeControl(C.name)})}getFormGroup(C){return this.form.get(C.path)}updateModel(C,U){sn.then(()=>{this.form.get(C.path).setValue(U)})}setValue(C){this.control.setValue(C)}onSubmit(C){var U;return this.submitted=!0,Dn(this.form,this._directives),this.ngSubmit.emit(C),"dialog"===(null==C||null===(U=C.target)||void 0===U?void 0:U.method)}onReset(){this.resetForm()}resetForm(C){this.form.reset(C),this.submitted=!1}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.form._updateOn=this.options.updateOn)}_findContainer(C){return C.pop(),C.length?this.form.get(C):this.form}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ee,10),c.Y36(ae,10),c.Y36(un,8))},S.\u0275dir=c.lG2({type:S,selectors:[["form",3,"ngNoForm","",3,"formGroup",""],["ng-form"],["","ngForm",""]],hostBindings:function(C,U){1&C&&c.NdJ("submit",function(dt){return U.onSubmit(dt)})("reset",function(){return U.onReset()})},inputs:{options:["ngFormOptions","options"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[c._Bn([Si]),c.qOj]}),S})();function lo(S,E){const C=S.indexOf(E);C>-1&&S.splice(C,1)}function Qt(S){return"object"==typeof S&&null!==S&&2===Object.keys(S).length&&"value"in S&&"disabled"in S}const Io=class extends xe{constructor(E=null,C,U){super(Ft(C),on(U,C)),this.defaultValue=null,this._onChange=[],this._pendingChange=!1,this._applyFormState(E),this._setUpdateStrategy(C),this._initObservables(),this.updateValueAndValidity({onlySelf:!0,emitEvent:!!this.asyncValidator}),ln(C)&&(C.nonNullable||C.initialValueIsDefault)&&(this.defaultValue=Qt(E)?E.value:E)}setValue(E,C={}){this.value=this._pendingValue=E,this._onChange.length&&!1!==C.emitModelToViewChange&&this._onChange.forEach(U=>U(this.value,!1!==C.emitViewToModelChange)),this.updateValueAndValidity(C)}patchValue(E,C={}){this.setValue(E,C)}reset(E=this.defaultValue,C={}){this._applyFormState(E),this.markAsPristine(C),this.markAsUntouched(C),this.setValue(this.value,C),this._pendingChange=!1}_updateValue(){}_anyControls(E){return!1}_allControlsDisabled(){return this.disabled}registerOnChange(E){this._onChange.push(E)}_unregisterOnChange(E){lo(this._onChange,E)}registerOnDisabledChange(E){this._onDisabledChange.push(E)}_unregisterOnDisabledChange(E){lo(this._onDisabledChange,E)}_forEachChild(E){}_syncPendingControls(){return!("submit"!==this.updateOn||(this._pendingDirty&&this.markAsDirty(),this._pendingTouched&&this.markAsTouched(),!this._pendingChange)||(this.setValue(this._pendingValue,{onlySelf:!0,emitModelToViewChange:!1}),0))}_applyFormState(E){Qt(E)?(this.value=this._pendingValue=E.value,E.disabled?this.disable({onlySelf:!0,emitEvent:!1}):this.enable({onlySelf:!0,emitEvent:!1})):this.value=this._pendingValue=E}},En={provide:R,useExisting:(0,c.Gpc)(()=>yo)},Pr=(()=>Promise.resolve())();let yo=(()=>{class S extends R{constructor(C,U,ce,dt,fn,di){super(),this._changeDetectorRef=fn,this.callSetDisabledState=di,this.control=new Io,this._registered=!1,this.update=new c.vpe,this._parent=C,this._setValidators(U),this._setAsyncValidators(ce),this.valueAccessor=function Tn(S,E){if(!E)return null;let C,U,ce;return Array.isArray(E),E.forEach(dt=>{dt.constructor===ne?C=dt:function Yt(S){return Object.getPrototypeOf(S.constructor)===we}(dt)?U=dt:ce=dt}),ce||U||C||null}(0,dt)}ngOnChanges(C){if(this._checkForErrors(),!this._registered||"name"in C){if(this._registered&&(this._checkName(),this.formDirective)){const U=C.name.previousValue;this.formDirective.removeControl({name:U,path:this._getPath(U)})}this._setUpControl()}"isDisabled"in C&&this._updateDisabled(C),function xt(S,E){if(!S.hasOwnProperty("model"))return!1;const C=S.model;return!!C.isFirstChange()||!Object.is(E,C.currentValue)}(C,this.viewModel)&&(this._updateValue(this.model),this.viewModel=this.model)}ngOnDestroy(){this.formDirective&&this.formDirective.removeControl(this)}get path(){return this._getPath(this.name)}get formDirective(){return this._parent?this._parent.formDirective:null}viewToModelUpdate(C){this.viewModel=C,this.update.emit(C)}_setUpControl(){this._setUpdateStrategy(),this._isStandalone()?this._setUpStandalone():this.formDirective.addControl(this),this._registered=!0}_setUpdateStrategy(){this.options&&null!=this.options.updateOn&&(this.control._updateOn=this.options.updateOn)}_isStandalone(){return!this._parent||!(!this.options||!this.options.standalone)}_setUpStandalone(){si(this.control,this,this.callSetDisabledState),this.control.updateValueAndValidity({emitEvent:!1})}_checkForErrors(){this._isStandalone()||this._checkParentType(),this._checkName()}_checkParentType(){}_checkName(){this.options&&this.options.name&&(this.name=this.options.name),this._isStandalone()}_updateValue(C){Pr.then(()=>{var U;this.control.setValue(C,{emitViewToModelChange:!1}),null===(U=this._changeDetectorRef)||void 0===U||U.markForCheck()})}_updateDisabled(C){const U=C.isDisabled.currentValue,ce=0!==U&&(0,c.D6c)(U);Pr.then(()=>{var dt;ce&&!this.control.disabled?this.control.disable():!ce&&this.control.disabled&&this.control.enable(),null===(dt=this._changeDetectorRef)||void 0===dt||dt.markForCheck()})}_getPath(C){return this._parent?function jn(S,E){return[...E.path,S]}(C,this._parent):[C]}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ue,9),c.Y36(ee,10),c.Y36(ae,10),c.Y36(Ie,10),c.Y36(c.sBO,8),c.Y36(un,8))},S.\u0275dir=c.lG2({type:S,selectors:[["","ngModel","",3,"formControlName","",3,"formControl",""]],inputs:{name:"name",isDisabled:["disabled","isDisabled"],model:["ngModel","model"],options:["ngModelOptions","options"]},outputs:{update:"ngModelChange"},exportAs:["ngModel"],features:[c._Bn([En]),c.qOj,c.TTD]}),S})(),xo=(()=>{class S{}return S.\u0275fac=function(C){return new(C||S)},S.\u0275dir=c.lG2({type:S,selectors:[["form",3,"ngNoForm","",3,"ngNativeValidate",""]],hostAttrs:["novalidate",""]}),S})(),sr=(()=>{class S{}return S.\u0275fac=function(C){return new(C||S)},S.\u0275mod=c.oAB({type:S}),S.\u0275inj=c.cJS({}),S})();const ar={provide:ue,useExisting:(0,c.Gpc)(()=>Wo)};let Wo=(()=>{class S extends ue{constructor(C,U,ce){super(),this.callSetDisabledState=ce,this.submitted=!1,this._onCollectionChange=()=>this._updateDomValue(),this.directives=[],this.form=null,this.ngSubmit=new c.vpe,this._setValidators(C),this._setAsyncValidators(U)}ngOnChanges(C){this._checkFormPresent(),C.hasOwnProperty("form")&&(this._updateValidators(),this._updateDomValue(),this._updateRegistrations(),this._oldForm=this.form)}ngOnDestroy(){this.form&&(xi(this.form,this),this.form._onCollectionChange===this._onCollectionChange&&this.form._registerOnCollectionChange(()=>{}))}get formDirective(){return this}get control(){return this.form}get path(){return[]}addControl(C){const U=this.form.get(C.path);return si(U,C,this.callSetDisabledState),U.updateValueAndValidity({emitEvent:!1}),this.directives.push(C),U}getControl(C){return this.form.get(C.path)}removeControl(C){Li(C.control||null,C,!1),function Gn(S,E){const C=S.indexOf(E);C>-1&&S.splice(C,1)}(this.directives,C)}addFormGroup(C){this._setUpFormContainer(C)}removeFormGroup(C){this._cleanUpFormContainer(C)}getFormGroup(C){return this.form.get(C.path)}addFormArray(C){this._setUpFormContainer(C)}removeFormArray(C){this._cleanUpFormContainer(C)}getFormArray(C){return this.form.get(C.path)}updateModel(C,U){this.form.get(C.path).setValue(U)}onSubmit(C){var U;return this.submitted=!0,Dn(this.form,this.directives),this.ngSubmit.emit(C),"dialog"===(null==C||null===(U=C.target)||void 0===U?void 0:U.method)}onReset(){this.resetForm()}resetForm(C){this.form.reset(C),this.submitted=!1}_updateDomValue(){this.directives.forEach(C=>{const U=C.control,ce=this.form.get(C.path);U!==ce&&(Li(U||null,C),(S=>S instanceof Io)(ce)&&(si(ce,C,this.callSetDisabledState),C.control=ce))}),this.form._updateTreeValidity({emitEvent:!1})}_setUpFormContainer(C){const U=this.form.get(C.path);or(U,C),U.updateValueAndValidity({emitEvent:!1})}_cleanUpFormContainer(C){if(this.form){const U=this.form.get(C.path);U&&function dn(S,E){return xi(S,E)}(U,C)&&U.updateValueAndValidity({emitEvent:!1})}}_updateRegistrations(){this.form._registerOnCollectionChange(this._onCollectionChange),this._oldForm&&this._oldForm._registerOnCollectionChange(()=>{})}_updateValidators(){Ni(this.form,this),this._oldForm&&xi(this._oldForm,this)}_checkFormPresent(){}}return S.\u0275fac=function(C){return new(C||S)(c.Y36(ee,10),c.Y36(ae,10),c.Y36(un,8))},S.\u0275dir=c.lG2({type:S,selectors:[["","formGroup",""]],hostBindings:function(C,U){1&C&&c.NdJ("submit",function(dt){return U.onSubmit(dt)})("reset",function(){return U.onReset()})},inputs:{form:["formGroup","form"]},outputs:{ngSubmit:"ngSubmit"},exportAs:["ngForm"],features:[c._Bn([ar]),c.qOj,c.TTD]}),S})(),Hi=(()=>{class S{constructor(){this._validator=st}ngOnChanges(C){if(this.inputName in C){const U=this.normalizeInput(C[this.inputName].currentValue);this._enabled=this.enabled(U),this._validator=this._enabled?this.createValidator(U):st,this._onChange&&this._onChange()}}validate(C){return this._validator(C)}registerOnValidatorChange(C){this._onChange=C}enabled(C){return null!=C}}return S.\u0275fac=function(C){return new(C||S)},S.\u0275dir=c.lG2({type:S,features:[c.TTD]}),S})();const Vr={provide:ee,useExisting:(0,c.Gpc)(()=>Qi),multi:!0},Ss={provide:ee,useExisting:(0,c.Gpc)(()=>ur),multi:!0};let Qi=(()=>{class S extends Hi{constructor(){super(...arguments),this.inputName="required",this.normalizeInput=c.D6c,this.createValidator=C=>ke}enabled(C){return C}}return S.\u0275fac=function(){let E;return function(U){return(E||(E=c.n5z(S)))(U||S)}}(),S.\u0275dir=c.lG2({type:S,selectors:[["","required","","formControlName","",3,"type","checkbox"],["","required","","formControl","",3,"type","checkbox"],["","required","","ngModel","",3,"type","checkbox"]],hostVars:1,hostBindings:function(C,U){2&C&&c.uIk("required",U._enabled?"":null)},inputs:{required:"required"},features:[c._Bn([Vr]),c.qOj]}),S})(),ur=(()=>{class S extends Qi{constructor(){super(...arguments),this.createValidator=C=>Xe}}return S.\u0275fac=function(){let E;return function(U){return(E||(E=c.n5z(S)))(U||S)}}(),S.\u0275dir=c.lG2({type:S,selectors:[["input","type","checkbox","required","","formControlName",""],["input","type","checkbox","required","","formControl",""],["input","type","checkbox","required","","ngModel",""]],hostVars:1,hostBindings:function(C,U){2&C&&c.uIk("required",U._enabled?"":null)},features:[c._Bn([Ss]),c.qOj]}),S})(),ls=(()=>{class S{}return S.\u0275fac=function(C){return new(C||S)},S.\u0275mod=c.oAB({type:S}),S.\u0275inj=c.cJS({imports:[sr]}),S})(),Fn=(()=>{class S{static withConfig(C){var U;return{ngModule:S,providers:[{provide:un,useValue:null!==(U=C.callSetDisabledState)&&void 0!==U?U:An}]}}}return S.\u0275fac=function(C){return new(C||S)},S.\u0275mod=c.oAB({type:S}),S.\u0275inj=c.cJS({imports:[ls]}),S})()},4859:(ze,me,b)=>{b.d(me,{RK:()=>bt,lW:()=>$,ot:()=>ot,zs:()=>ee});var c=b(3353),o=b(1571),M=b(2687),re=b(3238);const Q=["mat-button",""],H=[[["",8,"material-icons",3,"iconPositionEnd",""],["mat-icon",3,"iconPositionEnd",""],["","matButtonIcon","",3,"iconPositionEnd",""]],"*",[["","iconPositionEnd","",8,"material-icons"],["mat-icon","iconPositionEnd",""],["","matButtonIcon","","iconPositionEnd",""]]],fe=[".material-icons:not([iconPositionEnd]), mat-icon:not([iconPositionEnd]), [matButtonIcon]:not([iconPositionEnd])","*",".material-icons[iconPositionEnd], mat-icon[iconPositionEnd], [matButtonIcon][iconPositionEnd]"],ie=".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}",Ee=["mat-icon-button",""],we=["*"],Je=[{selector:"mat-button",mdcClasses:["mdc-button","mat-mdc-button"]},{selector:"mat-flat-button",mdcClasses:["mdc-button","mdc-button--unelevated","mat-mdc-unelevated-button"]},{selector:"mat-raised-button",mdcClasses:["mdc-button","mdc-button--raised","mat-mdc-raised-button"]},{selector:"mat-stroked-button",mdcClasses:["mdc-button","mdc-button--outlined","mat-mdc-outlined-button"]},{selector:"mat-fab",mdcClasses:["mdc-fab","mat-mdc-fab"]},{selector:"mat-mini-fab",mdcClasses:["mdc-fab","mdc-fab--mini","mat-mdc-mini-fab"]},{selector:"mat-icon-button",mdcClasses:["mdc-icon-button","mat-mdc-icon-button"]}],pt=(0,re.pj)((0,re.Id)((0,re.Kr)(class{constructor(st){this._elementRef=st}})));let _t=(()=>{class st extends pt{constructor(ut,lt,jt,Lt){super(ut),this._platform=lt,this._ngZone=jt,this._animationMode=Lt,this._focusMonitor=(0,o.f3M)(M.tE),this._isFab=!1;const yt=ut.nativeElement.classList;for(const hn of Je)this._hasHostAttributes(hn.selector)&&hn.mdcClasses.forEach(It=>{yt.add(It)})}ngAfterViewInit(){this._focusMonitor.monitor(this._elementRef,!0)}ngOnDestroy(){this._focusMonitor.stopMonitoring(this._elementRef)}focus(ut="program",lt){ut?this._focusMonitor.focusVia(this._elementRef.nativeElement,ut,lt):this._elementRef.nativeElement.focus(lt)}_hasHostAttributes(...ut){return ut.some(lt=>this._elementRef.nativeElement.hasAttribute(lt))}_isRippleDisabled(){return this.disableRipple||this.disabled}}return st.\u0275fac=function(ut){o.$Z()},st.\u0275dir=o.lG2({type:st,viewQuery:function(ut,lt){if(1&ut&&o.Gf(re.wG,5),2&ut){let jt;o.iGM(jt=o.CRH())&&(lt.ripple=jt.first)}},features:[o.qOj]}),st})(),j=(()=>{class st extends _t{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt),this._haltDisabledEvents=yt=>{this.disabled&&(yt.preventDefault(),yt.stopImmediatePropagation())}}ngOnInit(){this._ngZone.runOutsideAngular(()=>{this._elementRef.nativeElement.addEventListener("click",this._haltDisabledEvents)})}ngOnDestroy(){super.ngOnDestroy(),this._elementRef.nativeElement.removeEventListener("click",this._haltDisabledEvents)}}return st.\u0275fac=function(ut){o.$Z()},st.\u0275dir=o.lG2({type:st,features:[o.qOj]}),st})(),$=(()=>{class st extends _t{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt)}}return st.\u0275fac=function(ut){return new(ut||st)(o.Y36(o.SBq),o.Y36(c.t4),o.Y36(o.R0b),o.Y36(o.QbO,8))},st.\u0275cmp=o.Xpm({type:st,selectors:[["button","mat-button",""],["button","mat-raised-button",""],["button","mat-flat-button",""],["button","mat-stroked-button",""]],hostVars:7,hostBindings:function(ut,lt){2&ut&&(o.uIk("disabled",lt.disabled||null),o.ekj("_mat-animation-noopable","NoopAnimations"===lt._animationMode)("mat-unthemed",!lt.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[o.qOj],attrs:Q,ngContentSelectors:fe,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(ut,lt){1&ut&&(o.F$t(H),o._UZ(0,"span",0),o.Hsn(1),o.TgZ(2,"span",1),o.Hsn(3,1),o.qZA(),o.Hsn(4,2),o._UZ(5,"span",2)(6,"span",3)(7,"span",4)),2&ut&&(o.ekj("mdc-button__ripple",!lt._isFab)("mdc-fab__ripple",lt._isFab),o.xp6(6),o.Q6J("matRippleDisabled",lt._isRippleDisabled())("matRippleTrigger",lt._elementRef.nativeElement))},dependencies:[re.wG],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',".cdk-high-contrast-active .mat-mdc-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-unelevated-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-raised-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-outlined-button:not(.mdc-button--outlined),.cdk-high-contrast-active .mat-mdc-icon-button{outline:solid 1px}"],encapsulation:2,changeDetection:0}),st})(),ee=(()=>{class st extends j{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt)}}return st.\u0275fac=function(ut){return new(ut||st)(o.Y36(o.SBq),o.Y36(c.t4),o.Y36(o.R0b),o.Y36(o.QbO,8))},st.\u0275cmp=o.Xpm({type:st,selectors:[["a","mat-button",""],["a","mat-raised-button",""],["a","mat-flat-button",""],["a","mat-stroked-button",""]],hostVars:9,hostBindings:function(ut,lt){2&ut&&(o.uIk("disabled",lt.disabled||null)("tabindex",lt.disabled?-1:lt.tabIndex)("aria-disabled",lt.disabled.toString()),o.ekj("_mat-animation-noopable","NoopAnimations"===lt._animationMode)("mat-unthemed",!lt.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color",tabIndex:"tabIndex"},exportAs:["matButton","matAnchor"],features:[o.qOj],attrs:Q,ngContentSelectors:fe,decls:8,vars:6,consts:[[1,"mat-mdc-button-persistent-ripple"],[1,"mdc-button__label"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(ut,lt){1&ut&&(o.F$t(H),o._UZ(0,"span",0),o.Hsn(1),o.TgZ(2,"span",1),o.Hsn(3,1),o.qZA(),o.Hsn(4,2),o._UZ(5,"span",2)(6,"span",3)(7,"span",4)),2&ut&&(o.ekj("mdc-button__ripple",!lt._isFab)("mdc-fab__ripple",lt._isFab),o.xp6(6),o.Q6J("matRippleDisabled",lt._isRippleDisabled())("matRippleTrigger",lt._elementRef.nativeElement))},dependencies:[re.wG],styles:['.mdc-touch-target-wrapper{display:inline}.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button{position:relative;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:64px;border:none;outline:none;line-height:inherit;user-select:none;-webkit-appearance:none;overflow:visible;vertical-align:middle;background:rgba(0,0,0,0)}.mdc-button .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}.mdc-button::-moz-focus-inner{padding:0;border:0}.mdc-button:active{outline:none}.mdc-button:hover{cursor:pointer}.mdc-button:disabled{cursor:default;pointer-events:none}.mdc-button[hidden]{display:none}.mdc-button .mdc-button__icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top}[dir=rtl] .mdc-button .mdc-button__icon,.mdc-button .mdc-button__icon[dir=rtl]{margin-left:8px;margin-right:0}.mdc-button .mdc-button__progress-indicator{font-size:0;position:absolute;transform:translate(-50%, -50%);top:50%;left:50%;line-height:initial}.mdc-button .mdc-button__label{position:relative}.mdc-button .mdc-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(\n 100% + 4px\n );width:calc(\n 100% + 4px\n );display:none}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring{border-color:CanvasText}}.mdc-button .mdc-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-button .mdc-button__focus-ring::after{border-color:CanvasText}}@media screen and (forced-colors: active){.mdc-button.mdc-ripple-upgraded--background-focused .mdc-button__focus-ring,.mdc-button:not(.mdc-ripple-upgraded):focus .mdc-button__focus-ring{display:block}}.mdc-button .mdc-button__touch{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mdc-button__label+.mdc-button__icon{margin-left:8px;margin-right:0}[dir=rtl] .mdc-button__label+.mdc-button__icon,.mdc-button__label+.mdc-button__icon[dir=rtl]{margin-left:0;margin-right:8px}svg.mdc-button__icon{fill:currentColor}.mdc-button--touch{margin-top:6px;margin-bottom:6px}.mdc-button{padding:0 8px 0 8px}.mdc-button--unelevated{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--unelevated.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--unelevated.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--raised{transition:box-shadow 280ms cubic-bezier(0.4, 0, 0.2, 1);padding:0 16px 0 16px}.mdc-button--raised.mdc-button--icon-trailing{padding:0 12px 0 16px}.mdc-button--raised.mdc-button--icon-leading{padding:0 16px 0 12px}.mdc-button--outlined{border-style:solid;transition:border 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-button--outlined .mdc-button__ripple{border-style:solid;border-color:rgba(0,0,0,0)}.mat-mdc-button{height:var(--mdc-text-button-container-height, 36px);border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-button:not(:disabled){color:var(--mdc-text-button-label-text-color, inherit)}.mat-mdc-button:disabled{color:var(--mdc-text-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-button .mdc-button__ripple{border-radius:var(--mdc-text-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button{height:var(--mdc-filled-button-container-height, 36px);border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-unelevated-button:not(:disabled){background-color:var(--mdc-filled-button-container-color, transparent)}.mat-mdc-unelevated-button:disabled{background-color:var(--mdc-filled-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-unelevated-button:not(:disabled){color:var(--mdc-filled-button-label-text-color, inherit)}.mat-mdc-unelevated-button:disabled{color:var(--mdc-filled-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-unelevated-button .mdc-button__ripple{border-radius:var(--mdc-filled-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button{height:var(--mdc-protected-button-container-height, 36px);border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px));box-shadow:var(--mdc-protected-button-container-elevation, 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-mdc-raised-button:not(:disabled){background-color:var(--mdc-protected-button-container-color, transparent)}.mat-mdc-raised-button:disabled{background-color:var(--mdc-protected-button-disabled-container-color, rgba(0, 0, 0, 0.12))}.mat-mdc-raised-button:not(:disabled){color:var(--mdc-protected-button-label-text-color, inherit)}.mat-mdc-raised-button:disabled{color:var(--mdc-protected-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-raised-button .mdc-button__ripple{border-radius:var(--mdc-protected-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-raised-button.mdc-ripple-upgraded--background-focused,.mat-mdc-raised-button:not(.mdc-ripple-upgraded):focus{box-shadow:var(--mdc-protected-button-focus-container-elevation, 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-mdc-raised-button:hover{box-shadow:var(--mdc-protected-button-hover-container-elevation, 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-mdc-raised-button:not(:disabled):active{box-shadow:var(--mdc-protected-button-pressed-container-elevation, 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-mdc-raised-button:disabled{box-shadow:var(--mdc-protected-button-disabled-container-elevation, 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-mdc-outlined-button{height:var(--mdc-outlined-button-container-height, 36px);border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px));padding:0 15px 0 15px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button:not(:disabled){color:var(--mdc-outlined-button-label-text-color, inherit)}.mat-mdc-outlined-button:disabled{color:var(--mdc-outlined-button-disabled-label-text-color, rgba(0, 0, 0, 0.38))}.mat-mdc-outlined-button .mdc-button__ripple{border-radius:var(--mdc-outlined-button-container-shape, var(--mdc-shape-small, 4px))}.mat-mdc-outlined-button:not(:disabled){border-color:var(--mdc-outlined-button-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button:disabled{border-color:var(--mdc-outlined-button-disabled-outline-color, rgba(0, 0, 0, 0.12))}.mat-mdc-outlined-button.mdc-button--icon-trailing{padding:0 11px 0 15px}.mat-mdc-outlined-button.mdc-button--icon-leading{padding:0 15px 0 11px}.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:var(--mdc-outlined-button-outline-width, 1px)}.mat-mdc-outlined-button .mdc-button__touch{left:calc(-1 * var(--mdc-outlined-button-outline-width, 1px));width:calc(100% + 2 * var(--mdc-outlined-button-outline-width, 1px))}.mat-mdc-button,.mat-mdc-unelevated-button,.mat-mdc-raised-button,.mat-mdc-outlined-button{-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-button .mat-mdc-button-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple,.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-unelevated-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-raised-button .mat-mdc-button-persistent-ripple::before,.mat-mdc-outlined-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-button .mat-ripple-element,.mat-mdc-unelevated-button .mat-ripple-element,.mat-mdc-raised-button .mat-ripple-element,.mat-mdc-outlined-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-button .mdc-button__label,.mat-mdc-unelevated-button .mdc-button__label,.mat-mdc-raised-button .mdc-button__label,.mat-mdc-outlined-button .mdc-button__label{z-index:1}.mat-mdc-button .mat-mdc-focus-indicator,.mat-mdc-unelevated-button .mat-mdc-focus-indicator,.mat-mdc-raised-button .mat-mdc-focus-indicator,.mat-mdc-outlined-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-unelevated-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-raised-button:focus .mat-mdc-focus-indicator::before,.mat-mdc-outlined-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-button[disabled],.mat-mdc-unelevated-button[disabled],.mat-mdc-raised-button[disabled],.mat-mdc-outlined-button[disabled]{cursor:default;pointer-events:none}.mat-mdc-button .mat-mdc-button-touch-target,.mat-mdc-unelevated-button .mat-mdc-button-touch-target,.mat-mdc-raised-button .mat-mdc-button-touch-target,.mat-mdc-outlined-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:0;right:0;transform:translateY(-50%)}.mat-mdc-button._mat-animation-noopable,.mat-mdc-unelevated-button._mat-animation-noopable,.mat-mdc-raised-button._mat-animation-noopable,.mat-mdc-outlined-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem}[dir=rtl] .mat-mdc-button>.mat-icon,.mat-mdc-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}.mat-mdc-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-button .mdc-button__label+.mat-icon,.mat-mdc-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:0;margin-right:8px}.mat-mdc-unelevated-button>.mat-icon,.mat-mdc-raised-button>.mat-icon,.mat-mdc-outlined-button>.mat-icon{margin-left:0;margin-right:8px;display:inline-block;position:relative;vertical-align:top;font-size:1.125rem;height:1.125rem;width:1.125rem;margin-left:-4px;margin-right:8px}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:0}[dir=rtl] .mat-mdc-unelevated-button>.mat-icon,[dir=rtl] .mat-mdc-raised-button>.mat-icon,[dir=rtl] .mat-mdc-outlined-button>.mat-icon,.mat-mdc-unelevated-button>.mat-icon[dir=rtl],.mat-mdc-raised-button>.mat-icon[dir=rtl],.mat-mdc-outlined-button>.mat-icon[dir=rtl]{margin-left:8px;margin-right:-4px}.mat-mdc-unelevated-button .mdc-button__label+.mat-icon,.mat-mdc-raised-button .mdc-button__label+.mat-icon,.mat-mdc-outlined-button .mdc-button__label+.mat-icon{margin-left:8px;margin-right:-4px}[dir=rtl] .mat-mdc-unelevated-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-raised-button .mdc-button__label+.mat-icon,[dir=rtl] .mat-mdc-outlined-button .mdc-button__label+.mat-icon,.mat-mdc-unelevated-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-raised-button .mdc-button__label+.mat-icon[dir=rtl],.mat-mdc-outlined-button .mdc-button__label+.mat-icon[dir=rtl]{margin-left:-4px;margin-right:8px}.mat-mdc-outlined-button .mat-mdc-button-ripple,.mat-mdc-outlined-button .mdc-button__ripple{top:-1px;left:-1px;bottom:-1px;right:-1px;border-width:-1px}.mat-mdc-unelevated-button .mat-mdc-focus-indicator::before,.mat-mdc-raised-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 2px) * -1)}.mat-mdc-outlined-button .mat-mdc-focus-indicator::before{margin:calc(calc(var(--mat-mdc-focus-indicator-border-width, 3px) + 3px) * -1)}',ie],encapsulation:2,changeDetection:0}),st})(),bt=(()=>{class st extends _t{constructor(ut,lt,jt,Lt){super(ut,lt,jt,Lt)}}return st.\u0275fac=function(ut){return new(ut||st)(o.Y36(o.SBq),o.Y36(c.t4),o.Y36(o.R0b),o.Y36(o.QbO,8))},st.\u0275cmp=o.Xpm({type:st,selectors:[["button","mat-icon-button",""]],hostVars:7,hostBindings:function(ut,lt){2&ut&&(o.uIk("disabled",lt.disabled||null),o.ekj("_mat-animation-noopable","NoopAnimations"===lt._animationMode)("mat-unthemed",!lt.color)("mat-mdc-button-base",!0))},inputs:{disabled:"disabled",disableRipple:"disableRipple",color:"color"},exportAs:["matButton"],features:[o.qOj],attrs:Ee,ngContentSelectors:we,decls:5,vars:3,consts:[[1,"mat-mdc-button-persistent-ripple","mdc-icon-button__ripple"],[1,"mat-mdc-focus-indicator"],["matRipple","",1,"mat-mdc-button-ripple",3,"matRippleDisabled","matRippleCentered","matRippleTrigger"],[1,"mat-mdc-button-touch-target"]],template:function(ut,lt){1&ut&&(o.F$t(),o._UZ(0,"span",0),o.Hsn(1),o._UZ(2,"span",1)(3,"span",2)(4,"span",3)),2&ut&&(o.xp6(3),o.Q6J("matRippleDisabled",lt._isRippleDisabled())("matRippleCentered",!0)("matRippleTrigger",lt._elementRef.nativeElement))},dependencies:[re.wG],styles:['.mdc-icon-button{font-size:24px;width:48px;height:48px;padding:12px}.mdc-icon-button .mdc-icon-button__focus-ring{max-height:48px;max-width:48px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__ripple{width:40px;height:40px;margin-top:4px;margin-bottom:4px;margin-right:4px;margin-left:4px}.mdc-icon-button.mdc-icon-button--reduced-size .mdc-icon-button__focus-ring{max-height:40px;max-width:40px}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mdc-icon-button svg,.mdc-icon-button img{width:24px;height:24px}.mdc-icon-button{display:inline-block;position:relative;box-sizing:border-box;border:none;outline:none;background-color:rgba(0,0,0,0);fill:currentColor;color:inherit;text-decoration:none;cursor:pointer;user-select:none;z-index:0;overflow:visible}.mdc-icon-button .mdc-icon-button__touch{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}@media screen and (forced-colors: active){.mdc-icon-button.mdc-ripple-upgraded--background-focused .mdc-icon-button__focus-ring,.mdc-icon-button:not(.mdc-ripple-upgraded):focus .mdc-icon-button__focus-ring{display:block}}.mdc-icon-button:disabled{cursor:default;pointer-events:none}.mdc-icon-button[hidden]{display:none}.mdc-icon-button--display-flex{align-items:center;display:inline-flex;justify-content:center}.mdc-icon-button__focus-ring{pointer-events:none;border:2px solid rgba(0,0,0,0);border-radius:6px;box-sizing:content-box;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:100%;width:100%;display:none}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring{border-color:CanvasText}}.mdc-icon-button__focus-ring::after{content:"";border:2px solid rgba(0,0,0,0);border-radius:8px;display:block;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%);height:calc(100% + 4px);width:calc(100% + 4px)}@media screen and (forced-colors: active){.mdc-icon-button__focus-ring::after{border-color:CanvasText}}.mdc-icon-button__icon{display:inline-block}.mdc-icon-button__icon.mdc-icon-button__icon--on{display:none}.mdc-icon-button--on .mdc-icon-button__icon{display:none}.mdc-icon-button--on .mdc-icon-button__icon.mdc-icon-button__icon--on{display:inline-block}.mdc-icon-button__link{height:100%;left:0;outline:none;position:absolute;top:0;width:100%}.mat-mdc-icon-button{height:var(--mdc-icon-button-state-layer-size, 48px);width:var(--mdc-icon-button-state-layer-size, 48px);color:var(--mdc-icon-button-icon-color, inherit);border-radius:50%;flex-shrink:0;text-align:center;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mat-mdc-icon-button .mdc-button__icon{font-size:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button svg,.mat-mdc-icon-button img{width:var(--mdc-icon-button-icon-size, 24px);height:var(--mdc-icon-button-icon-size, 24px)}.mat-mdc-icon-button:disabled{opacity:var(--mdc-icon-button-disabled-icon-opacity, 0.38)}.mat-mdc-icon-button:disabled{color:var(--mdc-icon-button-disabled-icon-color, #000)}.mat-mdc-icon-button svg{vertical-align:baseline}.mat-mdc-icon-button[disabled]{cursor:default;pointer-events:none;opacity:1}.mat-mdc-icon-button .mat-mdc-button-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple,.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none;border-radius:inherit}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple::before{content:"";opacity:0;background-color:var(--mat-mdc-button-persistent-ripple-color)}.mat-mdc-icon-button .mat-ripple-element{background-color:var(--mat-mdc-button-ripple-color)}.mat-mdc-icon-button .mdc-button__label{z-index:1}.mat-mdc-icon-button .mat-mdc-focus-indicator{top:0;left:0;right:0;bottom:0;position:absolute}.mat-mdc-icon-button:focus .mat-mdc-focus-indicator::before{content:""}.mat-mdc-icon-button .mat-mdc-button-touch-target{position:absolute;top:50%;height:48px;left:50%;width:48px;transform:translate(-50%, -50%)}.mat-mdc-icon-button._mat-animation-noopable{transition:none !important;animation:none !important}.mat-mdc-icon-button .mat-mdc-button-persistent-ripple{border-radius:50%}.mat-mdc-icon-button.mat-unthemed:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-primary:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-accent:not(.mdc-ripple-upgraded):focus::before,.mat-mdc-icon-button.mat-warn:not(.mdc-ripple-upgraded):focus::before{background:rgba(0,0,0,0);opacity:1}',ie],encapsulation:2,changeDetection:0}),st})(),ot=(()=>{class st{}return st.\u0275fac=function(ut){return new(ut||st)},st.\u0275mod=o.oAB({type:st}),st.\u0275inj=o.cJS({imports:[re.BQ,re.si,re.BQ]}),st})()},3238:(ze,me,b)=>{b.d(me,{rD:()=>yt,K7:()=>pe,HF:()=>et,BQ:()=>q,ey:()=>Vt,Ng:()=>gn,wG:()=>De,si:()=>Ce,CB:()=>St,jH:()=>mn,pj:()=>Pe,Kr:()=>de,Id:()=>ae,FD:()=>Fe,sb:()=>be});var c=b(1571),o=b(2687),M=b(445),Q=b(6895),H=b(3353),fe=b(1281),Se=b(7579),ie=b(9521);const se=["text"];function Ee(Ze,Me){if(1&Ze&&c._UZ(0,"mat-pseudo-checkbox",5),2&Ze){const I=c.oxw();c.Q6J("state",I.selected?"checked":"unchecked")("disabled",I.disabled)}}function we(Ze,Me){if(1&Ze&&(c.TgZ(0,"span",6),c._uU(1),c.qZA()),2&Ze){const I=c.oxw();c.xp6(1),c.hij("(",I.group.label,")")}}const Ie=[[["mat-icon"]],"*"],Be=["mat-icon","*"],ne=new c.OlP("mat-sanity-checks",{providedIn:"root",factory:function _t(){return!0}});let q=(()=>{class Ze{constructor(I,A,T){this._sanityChecks=A,this._document=T,this._hasDoneGlobalChecks=!1,I._applyBodyHighContrastModeCssClasses(),this._hasDoneGlobalChecks||(this._hasDoneGlobalChecks=!0)}_checkIsEnabled(I){return!(0,H.Oy)()&&("boolean"==typeof this._sanityChecks?this._sanityChecks:!!this._sanityChecks[I])}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.LFG(o.qm),c.LFG(ne,8),c.LFG(Q.K0))},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[M.vT,M.vT]}),Ze})();function ae(Ze){return class extends Ze{get disabled(){return this._disabled}set disabled(Me){this._disabled=(0,fe.Ig)(Me)}constructor(...Me){super(...Me),this._disabled=!1}}}function Pe(Ze,Me){return class extends Ze{get color(){return this._color}set color(I){const A=I||this.defaultColor;A!==this._color&&(this._color&&this._elementRef.nativeElement.classList.remove(`mat-${this._color}`),A&&this._elementRef.nativeElement.classList.add(`mat-${A}`),this._color=A)}constructor(...I){super(...I),this.defaultColor=Me,this.color=Me}}}function de(Ze){return class extends Ze{get disableRipple(){return this._disableRipple}set disableRipple(Me){this._disableRipple=(0,fe.Ig)(Me)}constructor(...Me){super(...Me),this._disableRipple=!1}}}function be(Ze,Me=0){return class extends Ze{get tabIndex(){return this.disabled?-1:this._tabIndex}set tabIndex(I){this._tabIndex=null!=I?(0,fe.su)(I):this.defaultTabIndex}constructor(...I){super(...I),this._tabIndex=Me,this.defaultTabIndex=Me}}}function Fe(Ze){return class extends Ze{updateErrorState(){const Me=this.errorState,z=(this.errorStateMatcher||this._defaultErrorStateMatcher).isErrorState(this.ngControl?this.ngControl.control:null,this._parentFormGroup||this._parentForm);z!==Me&&(this.errorState=z,this.stateChanges.next())}constructor(...Me){super(...Me),this.errorState=!1}}}let yt=(()=>{class Ze{isErrorState(I,A){return!!(I&&I.invalid&&(I.touched||A&&A.submitted))}}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275prov=c.Yz7({token:Ze,factory:Ze.\u0275fac,providedIn:"root"}),Ze})();class xn{constructor(Me,I,A,T=!1){this._renderer=Me,this.element=I,this.config=A,this._animationForciblyDisabledThroughCss=T,this.state=3}fadeOut(){this._renderer.fadeOutRipple(this)}}const Ct=(0,H.i$)({passive:!0,capture:!0});class Ht{constructor(){this._events=new Map,this._delegateEventHandler=Me=>{const I=(0,H.sA)(Me);var A;I&&(null===(A=this._events.get(Me.type))||void 0===A||A.forEach((T,z)=>{(z===I||z.contains(I))&&T.forEach(Y=>Y.handleEvent(Me))}))}}addHandler(Me,I,A,T){const z=this._events.get(I);if(z){const Y=z.get(A);Y?Y.add(T):z.set(A,new Set([T]))}else this._events.set(I,new Map([[A,new Set([T])]])),Me.runOutsideAngular(()=>{document.addEventListener(I,this._delegateEventHandler,Ct)})}removeHandler(Me,I,A){const T=this._events.get(Me);if(!T)return;const z=T.get(I);z&&(z.delete(A),0===z.size&&T.delete(I),0===T.size&&(this._events.delete(Me),document.removeEventListener(Me,this._delegateEventHandler,Ct)))}}const oe={enterDuration:225,exitDuration:150},G=(0,H.i$)({passive:!0,capture:!0}),Re=["mousedown","touchstart"],tt=["mouseup","mouseleave","touchend","touchcancel"];class ue{constructor(Me,I,A,T){this._target=Me,this._ngZone=I,this._platform=T,this._isPointerDown=!1,this._activeRipples=new Map,this._pointerUpEventsRegistered=!1,T.isBrowser&&(this._containerElement=(0,fe.fI)(A))}fadeInRipple(Me,I,A={}){const T=this._containerRect=this._containerRect||this._containerElement.getBoundingClientRect(),z={...oe,...A.animation};A.centered&&(Me=T.left+T.width/2,I=T.top+T.height/2);const Y=A.radius||function R(Ze,Me,I){const A=Math.max(Math.abs(Ze-I.left),Math.abs(Ze-I.right)),T=Math.max(Math.abs(Me-I.top),Math.abs(Me-I.bottom));return Math.sqrt(A*A+T*T)}(Me,I,T),He=Me-T.left,gt=I-T.top,Ft=z.enterDuration,kt=document.createElement("div");kt.classList.add("mat-ripple-element"),kt.style.left=He-Y+"px",kt.style.top=gt-Y+"px",kt.style.height=2*Y+"px",kt.style.width=2*Y+"px",null!=A.color&&(kt.style.backgroundColor=A.color),kt.style.transitionDuration=`${Ft}ms`,this._containerElement.appendChild(kt);const on=window.getComputedStyle(kt),ln=on.transitionDuration,_n="none"===on.transitionProperty||"0s"===ln||"0s, 0s"===ln||0===T.width&&0===T.height,Oe=new xn(this,kt,A,_n);kt.style.transform="scale3d(1, 1, 1)",Oe.state=0,A.persistent||(this._mostRecentTransientRipple=Oe);let xe=null;return!_n&&(Ft||z.exitDuration)&&this._ngZone.runOutsideAngular(()=>{const J=()=>this._finishRippleTransition(Oe),Ne=()=>this._destroyRipple(Oe);kt.addEventListener("transitionend",J),kt.addEventListener("transitioncancel",Ne),xe={onTransitionEnd:J,onTransitionCancel:Ne}}),this._activeRipples.set(Oe,xe),(_n||!Ft)&&this._finishRippleTransition(Oe),Oe}fadeOutRipple(Me){if(2===Me.state||3===Me.state)return;const I=Me.element,A={...oe,...Me.config.animation};I.style.transitionDuration=`${A.exitDuration}ms`,I.style.opacity="0",Me.state=2,(Me._animationForciblyDisabledThroughCss||!A.exitDuration)&&this._finishRippleTransition(Me)}fadeOutAll(){this._getActiveRipples().forEach(Me=>Me.fadeOut())}fadeOutAllNonPersistent(){this._getActiveRipples().forEach(Me=>{Me.config.persistent||Me.fadeOut()})}setupTriggerEvents(Me){const I=(0,fe.fI)(Me);!this._platform.isBrowser||!I||I===this._triggerElement||(this._removeTriggerEvents(),this._triggerElement=I,Re.forEach(A=>{ue._eventManager.addHandler(this._ngZone,A,I,this)}))}handleEvent(Me){"mousedown"===Me.type?this._onMousedown(Me):"touchstart"===Me.type?this._onTouchStart(Me):this._onPointerUp(),this._pointerUpEventsRegistered||(this._ngZone.runOutsideAngular(()=>{tt.forEach(I=>{this._triggerElement.addEventListener(I,this,G)})}),this._pointerUpEventsRegistered=!0)}_finishRippleTransition(Me){0===Me.state?this._startFadeOutTransition(Me):2===Me.state&&this._destroyRipple(Me)}_startFadeOutTransition(Me){const I=Me===this._mostRecentTransientRipple,{persistent:A}=Me.config;Me.state=1,!A&&(!I||!this._isPointerDown)&&Me.fadeOut()}_destroyRipple(Me){var I;const A=null!==(I=this._activeRipples.get(Me))&&void 0!==I?I:null;this._activeRipples.delete(Me),this._activeRipples.size||(this._containerRect=null),Me===this._mostRecentTransientRipple&&(this._mostRecentTransientRipple=null),Me.state=3,null!==A&&(Me.element.removeEventListener("transitionend",A.onTransitionEnd),Me.element.removeEventListener("transitioncancel",A.onTransitionCancel)),Me.element.remove()}_onMousedown(Me){const I=(0,o.X6)(Me),A=this._lastTouchStartEvent&&Date.now(){!Me.config.persistent&&(1===Me.state||Me.config.terminateOnPointerUp&&0===Me.state)&&Me.fadeOut()}))}_getActiveRipples(){return Array.from(this._activeRipples.keys())}_removeTriggerEvents(){const Me=this._triggerElement;Me&&(Re.forEach(I=>ue._eventManager.removeHandler(I,Me,this)),this._pointerUpEventsRegistered&&tt.forEach(I=>Me.removeEventListener(I,this,G)))}}ue._eventManager=new Ht;const K=new c.OlP("mat-ripple-global-options");let De=(()=>{class Ze{get disabled(){return this._disabled}set disabled(I){I&&this.fadeOutAllNonPersistent(),this._disabled=I,this._setupTriggerEventsIfEnabled()}get trigger(){return this._trigger||this._elementRef.nativeElement}set trigger(I){this._trigger=I,this._setupTriggerEventsIfEnabled()}constructor(I,A,T,z,Y){this._elementRef=I,this._animationMode=Y,this.radius=0,this._disabled=!1,this._isInitialized=!1,this._globalOptions=z||{},this._rippleRenderer=new ue(this,A,I,T)}ngOnInit(){this._isInitialized=!0,this._setupTriggerEventsIfEnabled()}ngOnDestroy(){this._rippleRenderer._removeTriggerEvents()}fadeOutAll(){this._rippleRenderer.fadeOutAll()}fadeOutAllNonPersistent(){this._rippleRenderer.fadeOutAllNonPersistent()}get rippleConfig(){return{centered:this.centered,radius:this.radius,color:this.color,animation:{...this._globalOptions.animation,..."NoopAnimations"===this._animationMode?{enterDuration:0,exitDuration:0}:{},...this.animation},terminateOnPointerUp:this._globalOptions.terminateOnPointerUp}}get rippleDisabled(){return this.disabled||!!this._globalOptions.disabled}_setupTriggerEventsIfEnabled(){!this.disabled&&this._isInitialized&&this._rippleRenderer.setupTriggerEvents(this.trigger)}launch(I,A=0,T){return"number"==typeof I?this._rippleRenderer.fadeInRipple(I,A,{...this.rippleConfig,...T}):this._rippleRenderer.fadeInRipple(0,0,{...this.rippleConfig,...I})}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.Y36(c.SBq),c.Y36(c.R0b),c.Y36(H.t4),c.Y36(K,8),c.Y36(c.QbO,8))},Ze.\u0275dir=c.lG2({type:Ze,selectors:[["","mat-ripple",""],["","matRipple",""]],hostAttrs:[1,"mat-ripple"],hostVars:2,hostBindings:function(I,A){2&I&&c.ekj("mat-ripple-unbounded",A.unbounded)},inputs:{color:["matRippleColor","color"],unbounded:["matRippleUnbounded","unbounded"],centered:["matRippleCentered","centered"],radius:["matRippleRadius","radius"],animation:["matRippleAnimation","animation"],disabled:["matRippleDisabled","disabled"],trigger:["matRippleTrigger","trigger"]},exportAs:["matRipple"]}),Ze})(),Ce=(()=>{class Ze{}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[q,q]}),Ze})(),Ke=(()=>{class Ze{constructor(I){this._animationMode=I,this.state="unchecked",this.disabled=!1}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.Y36(c.QbO,8))},Ze.\u0275cmp=c.Xpm({type:Ze,selectors:[["mat-pseudo-checkbox"]],hostAttrs:[1,"mat-pseudo-checkbox"],hostVars:8,hostBindings:function(I,A){2&I&&c.ekj("mat-pseudo-checkbox-indeterminate","indeterminate"===A.state)("mat-pseudo-checkbox-checked","checked"===A.state)("mat-pseudo-checkbox-disabled",A.disabled)("_mat-animation-noopable","NoopAnimations"===A._animationMode)},inputs:{state:"state",disabled:"disabled"},decls:0,vars:0,template:function(I,A){},styles:['.mat-pseudo-checkbox{border:2px solid;border-radius:2px;cursor:pointer;display:inline-block;vertical-align:middle;box-sizing:border-box;position:relative;flex-shrink:0;transition:border-color 90ms cubic-bezier(0, 0, 0.2, 0.1),background-color 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox::after{position:absolute;opacity:0;content:"";border-bottom:2px solid currentColor;transition:opacity 90ms cubic-bezier(0, 0, 0.2, 0.1)}.mat-pseudo-checkbox.mat-pseudo-checkbox-checked,.mat-pseudo-checkbox.mat-pseudo-checkbox-indeterminate{border-color:rgba(0,0,0,0)}.mat-pseudo-checkbox._mat-animation-noopable{transition:none !important;animation:none !important}.mat-pseudo-checkbox._mat-animation-noopable::after{transition:none}.mat-pseudo-checkbox-disabled{cursor:default}.mat-pseudo-checkbox-indeterminate::after{left:1px;opacity:1;border-radius:2px}.mat-pseudo-checkbox-checked::after{left:1px;border-left:2px solid currentColor;transform:rotate(-45deg);opacity:1;box-sizing:content-box}.mat-pseudo-checkbox{width:18px;height:18px}.mat-pseudo-checkbox-indeterminate::after{top:6px;width:12px}.mat-pseudo-checkbox-checked::after{top:2.7px;width:10px;height:4px}'],encapsulation:2,changeDetection:0}),Ze})(),it=(()=>{class Ze{}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[q]}),Ze})();const et=new c.OlP("MAT_OPTION_PARENT_COMPONENT"),pe=new c.OlP("MatOptgroup");let ge=0;class rt{constructor(Me,I=!1){this.source=Me,this.isUserInput=I}}let at=(()=>{class Ze{get multiple(){return this._parent&&this._parent.multiple}get selected(){return this._selected}get disabled(){return this.group&&this.group.disabled||this._disabled}set disabled(I){this._disabled=(0,fe.Ig)(I)}get disableRipple(){return!(!this._parent||!this._parent.disableRipple)}constructor(I,A,T,z){this._element=I,this._changeDetectorRef=A,this._parent=T,this.group=z,this._selected=!1,this._active=!1,this._disabled=!1,this._mostRecentViewValue="",this.id="mat-option-"+ge++,this.onSelectionChange=new c.vpe,this._stateChanges=new Se.x}get active(){return this._active}get viewValue(){var I;return((null===(I=this._text)||void 0===I?void 0:I.nativeElement.textContent)||"").trim()}select(){this._selected||(this._selected=!0,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}deselect(){this._selected&&(this._selected=!1,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent())}focus(I,A){const T=this._getHostElement();"function"==typeof T.focus&&T.focus(A)}setActiveStyles(){this._active||(this._active=!0,this._changeDetectorRef.markForCheck())}setInactiveStyles(){this._active&&(this._active=!1,this._changeDetectorRef.markForCheck())}getLabel(){return this.viewValue}_handleKeydown(I){(I.keyCode===ie.K5||I.keyCode===ie.L_)&&!(0,ie.Vb)(I)&&(this._selectViaInteraction(),I.preventDefault())}_selectViaInteraction(){this.disabled||(this._selected=!this.multiple||!this._selected,this._changeDetectorRef.markForCheck(),this._emitSelectionChangeEvent(!0))}_getAriaSelected(){return this.selected||!this.multiple&&null}_getTabIndex(){return this.disabled?"-1":"0"}_getHostElement(){return this._element.nativeElement}ngAfterViewChecked(){if(this._selected){const I=this.viewValue;I!==this._mostRecentViewValue&&(this._mostRecentViewValue&&this._stateChanges.next(),this._mostRecentViewValue=I)}}ngOnDestroy(){this._stateChanges.complete()}_emitSelectionChangeEvent(I=!1){this.onSelectionChange.emit(new rt(this,I))}}return Ze.\u0275fac=function(I){c.$Z()},Ze.\u0275dir=c.lG2({type:Ze,viewQuery:function(I,A){if(1&I&&c.Gf(se,7),2&I){let T;c.iGM(T=c.CRH())&&(A._text=T.first)}},inputs:{value:"value",id:"id",disabled:"disabled"},outputs:{onSelectionChange:"onSelectionChange"}}),Ze})(),Vt=(()=>{class Ze extends at{constructor(I,A,T,z){super(I,A,T,z)}}return Ze.\u0275fac=function(I){return new(I||Ze)(c.Y36(c.SBq),c.Y36(c.sBO),c.Y36(et,8),c.Y36(pe,8))},Ze.\u0275cmp=c.Xpm({type:Ze,selectors:[["mat-option"]],hostAttrs:["role","option",1,"mat-mdc-option","mat-mdc-focus-indicator","mdc-list-item"],hostVars:12,hostBindings:function(I,A){1&I&&c.NdJ("click",function(){return A._selectViaInteraction()})("keydown",function(z){return A._handleKeydown(z)}),2&I&&(c.Ikx("id",A.id),c.uIk("tabindex",A._getTabIndex())("aria-selected",A._getAriaSelected())("aria-disabled",A.disabled.toString()),c.ekj("mdc-list-item--selected",A.selected)("mat-mdc-option-multiple",A.multiple)("mat-mdc-option-active",A.active)("mdc-list-item--disabled",A.disabled))},exportAs:["matOption"],features:[c.qOj],ngContentSelectors:Be,decls:7,vars:4,consts:[["class","mat-mdc-option-pseudo-checkbox",3,"state","disabled",4,"ngIf"],[1,"mdc-list-item__primary-text"],["text",""],["class","cdk-visually-hidden",4,"ngIf"],["mat-ripple","",1,"mat-mdc-option-ripple",3,"matRippleTrigger","matRippleDisabled"],[1,"mat-mdc-option-pseudo-checkbox",3,"state","disabled"],[1,"cdk-visually-hidden"]],template:function(I,A){1&I&&(c.F$t(Ie),c.YNc(0,Ee,1,2,"mat-pseudo-checkbox",0),c.Hsn(1),c.TgZ(2,"span",1,2),c.Hsn(4,1),c.qZA(),c.YNc(5,we,2,1,"span",3),c._UZ(6,"div",4)),2&I&&(c.Q6J("ngIf",A.multiple),c.xp6(5),c.Q6J("ngIf",A.group&&A.group._inert),c.xp6(1),c.Q6J("matRippleTrigger",A._getHostElement())("matRippleDisabled",A.disabled||A.disableRipple))},dependencies:[De,Q.O5,Ke],styles:['.mat-mdc-option{display:flex;position:relative;align-items:center;justify-content:flex-start;overflow:hidden;padding:0;padding-left:16px;padding-right:16px;-webkit-user-select:none;user-select:none;cursor:pointer;-webkit-tap-highlight-color:rgba(0,0,0,0);min-height:48px}.mat-mdc-option:focus{outline:none}[dir=rtl] .mat-mdc-option,.mat-mdc-option[dir=rtl]{padding-left:16px;padding-right:16px}.mat-mdc-option.mdc-list-item{align-items:center}.mat-mdc-option.mdc-list-item--disabled{opacity:.38;cursor:default}.mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:32px}[dir=rtl] .mat-mdc-optgroup .mat-mdc-option:not(.mat-mdc-option-multiple){padding-left:16px;padding-right:32px}.mat-mdc-option .mat-icon,.mat-mdc-option .mat-pseudo-checkbox{margin-right:16px;flex-shrink:0}[dir=rtl] .mat-mdc-option .mat-icon,[dir=rtl] .mat-mdc-option .mat-pseudo-checkbox{margin-right:0;margin-left:16px}.mat-mdc-option .mat-mdc-option-ripple{top:0;left:0;right:0;bottom:0;position:absolute;pointer-events:none}.mat-mdc-option .mdc-list-item__primary-text{white-space:normal;font-size:inherit;font-weight:inherit;letter-spacing:inherit;line-height:inherit;font-family:inherit;text-decoration:inherit;text-transform:inherit}.cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{content:"";position:absolute;top:50%;right:16px;transform:translateY(-50%);width:10px;height:0;border-bottom:solid 10px;border-radius:10px}[dir=rtl] .cdk-high-contrast-active .mat-mdc-option.mdc-list-item--selected:not(.mat-mdc-option-multiple)::after{right:auto;left:16px}.mat-mdc-option-active::before{content:""}'],encapsulation:2,changeDetection:0}),Ze})();function St(Ze,Me,I){if(I.length){let A=Me.toArray(),T=I.toArray(),z=0;for(let Y=0;YI+A?Math.max(0,Ze-A+Me):I}let gn=(()=>{class Ze{}return Ze.\u0275fac=function(I){return new(I||Ze)},Ze.\u0275mod=c.oAB({type:Ze}),Ze.\u0275inj=c.cJS({imports:[Ce,Q.ez,q,it]}),Ze})()},5412:(ze,me,b)=>{b.d(me,{WI:()=>yn,uw:()=>Re,H8:()=>De,ZT:()=>ue,xY:()=>K,Is:()=>Ke,so:()=>hn,uh:()=>R});var c=b(8184),o=b(6895),M=b(1571),re=b(2687),Q=b(3353),H=b(4080),fe=b(9521),Se=b(7579),ie=b(9770),Z=b(9646),ye=b(445),se=b(8675);function Ee(_e,Ye){}class we{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.closeOnNavigation=!0,this.closeOnDestroy=!0}}let Be=(()=>{class _e extends H.en{constructor(F,pe,te,ge,rt,at,Vt,St){super(),this._elementRef=F,this._focusTrapFactory=pe,this._config=ge,this._interactivityChecker=rt,this._ngZone=at,this._overlayRef=Vt,this._focusMonitor=St,this._elementFocusedBeforeDialogWasOpened=null,this._closeInteractionType=null,this.attachDomPortal=mn=>{this._portalOutlet.hasAttached();const gn=this._portalOutlet.attachDomPortal(mn);return this._contentAttached(),gn},this._ariaLabelledBy=this._config.ariaLabelledBy||null,this._document=te}_contentAttached(){this._initializeFocusTrap(),this._handleBackdropClicks(),this._captureInitialFocus()}_captureInitialFocus(){this._trapFocus()}ngOnDestroy(){this._restoreFocus()}attachComponentPortal(F){this._portalOutlet.hasAttached();const pe=this._portalOutlet.attachComponentPortal(F);return this._contentAttached(),pe}attachTemplatePortal(F){this._portalOutlet.hasAttached();const pe=this._portalOutlet.attachTemplatePortal(F);return this._contentAttached(),pe}_recaptureFocus(){this._containsFocus()||this._trapFocus()}_forceFocus(F,pe){this._interactivityChecker.isFocusable(F)||(F.tabIndex=-1,this._ngZone.runOutsideAngular(()=>{const te=()=>{F.removeEventListener("blur",te),F.removeEventListener("mousedown",te),F.removeAttribute("tabindex")};F.addEventListener("blur",te),F.addEventListener("mousedown",te)})),F.focus(pe)}_focusByCssSelector(F,pe){let te=this._elementRef.nativeElement.querySelector(F);te&&this._forceFocus(te,pe)}_trapFocus(){const F=this._elementRef.nativeElement;switch(this._config.autoFocus){case!1:case"dialog":this._containsFocus()||F.focus();break;case!0:case"first-tabbable":this._focusTrap.focusInitialElementWhenReady().then(pe=>{pe||this._focusDialogContainer()});break;case"first-heading":this._focusByCssSelector('h1, h2, h3, h4, h5, h6, [role="heading"]');break;default:this._focusByCssSelector(this._config.autoFocus)}}_restoreFocus(){const F=this._config.restoreFocus;let pe=null;if("string"==typeof F?pe=this._document.querySelector(F):"boolean"==typeof F?pe=F?this._elementFocusedBeforeDialogWasOpened:null:F&&(pe=F),this._config.restoreFocus&&pe&&"function"==typeof pe.focus){const te=(0,Q.ht)(),ge=this._elementRef.nativeElement;(!te||te===this._document.body||te===ge||ge.contains(te))&&(this._focusMonitor?(this._focusMonitor.focusVia(pe,this._closeInteractionType),this._closeInteractionType=null):pe.focus())}this._focusTrap&&this._focusTrap.destroy()}_focusDialogContainer(){this._elementRef.nativeElement.focus&&this._elementRef.nativeElement.focus()}_containsFocus(){const F=this._elementRef.nativeElement,pe=(0,Q.ht)();return F===pe||F.contains(pe)}_initializeFocusTrap(){this._focusTrap=this._focusTrapFactory.create(this._elementRef.nativeElement),this._document&&(this._elementFocusedBeforeDialogWasOpened=(0,Q.ht)())}_handleBackdropClicks(){this._overlayRef.backdropClick().subscribe(()=>{this._config.disableClose&&this._recaptureFocus()})}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(M.SBq),M.Y36(re.qV),M.Y36(o.K0,8),M.Y36(we),M.Y36(re.ic),M.Y36(M.R0b),M.Y36(c.Iu),M.Y36(re.tE))},_e.\u0275cmp=M.Xpm({type:_e,selectors:[["cdk-dialog-container"]],viewQuery:function(F,pe){if(1&F&&M.Gf(H.Pl,7),2&F){let te;M.iGM(te=M.CRH())&&(pe._portalOutlet=te.first)}},hostAttrs:["tabindex","-1",1,"cdk-dialog-container"],hostVars:6,hostBindings:function(F,pe){2&F&&M.uIk("id",pe._config.id||null)("role",pe._config.role)("aria-modal",pe._config.ariaModal)("aria-labelledby",pe._config.ariaLabel?null:pe._ariaLabelledBy)("aria-label",pe._config.ariaLabel)("aria-describedby",pe._config.ariaDescribedBy||null)},features:[M.qOj],decls:1,vars:0,consts:[["cdkPortalOutlet",""]],template:function(F,pe){1&F&&M.YNc(0,Ee,0,0,"ng-template",0)},dependencies:[H.Pl],styles:[".cdk-dialog-container{display:block;width:100%;height:100%;min-height:inherit;max-height:inherit}"],encapsulation:2}),_e})();class Ve{constructor(Ye,F){this.overlayRef=Ye,this.config=F,this.closed=new Se.x,this.disableClose=F.disableClose,this.backdropClick=Ye.backdropClick(),this.keydownEvents=Ye.keydownEvents(),this.outsidePointerEvents=Ye.outsidePointerEvents(),this.id=F.id,this.keydownEvents.subscribe(pe=>{pe.keyCode===fe.hY&&!this.disableClose&&!(0,fe.Vb)(pe)&&(pe.preventDefault(),this.close(void 0,{focusOrigin:"keyboard"}))}),this.backdropClick.subscribe(()=>{this.disableClose||this.close(void 0,{focusOrigin:"mouse"})})}close(Ye,F){if(this.containerInstance){const pe=this.closed;this.containerInstance._closeInteractionType=(null==F?void 0:F.focusOrigin)||"program",this.overlayRef.dispose(),pe.next(Ye),pe.complete(),this.componentInstance=this.containerInstance=null}}updatePosition(){return this.overlayRef.updatePosition(),this}updateSize(Ye="",F=""){return this.overlayRef.updateSize({width:Ye,height:F}),this}addPanelClass(Ye){return this.overlayRef.addPanelClass(Ye),this}removePanelClass(Ye){return this.overlayRef.removePanelClass(Ye),this}}const Je=new M.OlP("DialogScrollStrategy"),pt=new M.OlP("DialogData"),_t=new M.OlP("DefaultDialogConfig"),q={provide:Je,deps:[c.aV],useFactory:function ne(_e){return()=>_e.scrollStrategies.block()}};let j=0,$=(()=>{class _e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}constructor(F,pe,te,ge,rt,at){this._overlay=F,this._injector=pe,this._defaultOptions=te,this._parentDialog=ge,this._overlayContainer=rt,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new Se.x,this._afterOpenedAtThisLevel=new Se.x,this._ariaHiddenElements=new Map,this.afterAllClosed=(0,ie.P)(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe((0,se.O)(void 0))),this._scrollStrategy=at}open(F,pe){(pe={...this._defaultOptions||new we,...pe}).id=pe.id||"cdk-dialog-"+j++,pe.id&&this.getDialogById(pe.id);const ge=this._getOverlayConfig(pe),rt=this._overlay.create(ge),at=new Ve(rt,pe),Vt=this._attachContainer(rt,at,pe);return at.containerInstance=Vt,this._attachDialogContent(F,at,Vt,pe),this.openDialogs.length||this._hideNonDialogContentFromAssistiveTechnology(),this.openDialogs.push(at),at.closed.subscribe(()=>this._removeOpenDialog(at,!0)),this.afterOpened.next(at),at}closeAll(){ee(this.openDialogs,F=>F.close())}getDialogById(F){return this.openDialogs.find(pe=>pe.id===F)}ngOnDestroy(){ee(this._openDialogsAtThisLevel,F=>{!1===F.config.closeOnDestroy&&this._removeOpenDialog(F,!1)}),ee(this._openDialogsAtThisLevel,F=>F.close()),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete(),this._openDialogsAtThisLevel=[]}_getOverlayConfig(F){const pe=new c.X_({positionStrategy:F.positionStrategy||this._overlay.position().global().centerHorizontally().centerVertically(),scrollStrategy:F.scrollStrategy||this._scrollStrategy(),panelClass:F.panelClass,hasBackdrop:F.hasBackdrop,direction:F.direction,minWidth:F.minWidth,minHeight:F.minHeight,maxWidth:F.maxWidth,maxHeight:F.maxHeight,width:F.width,height:F.height,disposeOnNavigation:F.closeOnNavigation});return F.backdropClass&&(pe.backdropClass=F.backdropClass),pe}_attachContainer(F,pe,te){var ge;const rt=te.injector||(null===(ge=te.viewContainerRef)||void 0===ge?void 0:ge.injector),at=[{provide:we,useValue:te},{provide:Ve,useValue:pe},{provide:c.Iu,useValue:F}];let Vt;te.container?"function"==typeof te.container?Vt=te.container:(Vt=te.container.type,at.push(...te.container.providers(te))):Vt=Be;const St=new H.C5(Vt,te.viewContainerRef,M.zs3.create({parent:rt||this._injector,providers:at}),te.componentFactoryResolver);return F.attach(St).instance}_attachDialogContent(F,pe,te,ge){if(F instanceof M.Rgc){const rt=this._createInjector(ge,pe,te,void 0);let at={$implicit:ge.data,dialogRef:pe};ge.templateContext&&(at={...at,..."function"==typeof ge.templateContext?ge.templateContext():ge.templateContext}),te.attachTemplatePortal(new H.UE(F,null,at,rt))}else{const rt=this._createInjector(ge,pe,te,this._injector),at=te.attachComponentPortal(new H.C5(F,ge.viewContainerRef,rt,ge.componentFactoryResolver));pe.componentInstance=at.instance}}_createInjector(F,pe,te,ge){var rt;const at=F.injector||(null===(rt=F.viewContainerRef)||void 0===rt?void 0:rt.injector),Vt=[{provide:pt,useValue:F.data},{provide:Ve,useValue:pe}];return F.providers&&("function"==typeof F.providers?Vt.push(...F.providers(pe,F,te)):Vt.push(...F.providers)),F.direction&&(!at||!at.get(ye.Is,null,{optional:!0}))&&Vt.push({provide:ye.Is,useValue:{value:F.direction,change:(0,Z.of)()}}),M.zs3.create({parent:at||ge,providers:Vt})}_removeOpenDialog(F,pe){const te=this.openDialogs.indexOf(F);te>-1&&(this.openDialogs.splice(te,1),this.openDialogs.length||(this._ariaHiddenElements.forEach((ge,rt)=>{ge?rt.setAttribute("aria-hidden",ge):rt.removeAttribute("aria-hidden")}),this._ariaHiddenElements.clear(),pe&&this._getAfterAllClosed().next()))}_hideNonDialogContentFromAssistiveTechnology(){const F=this._overlayContainer.getContainerElement();if(F.parentElement){const pe=F.parentElement.children;for(let te=pe.length-1;te>-1;te--){const ge=pe[te];ge!==F&&"SCRIPT"!==ge.nodeName&&"STYLE"!==ge.nodeName&&!ge.hasAttribute("aria-live")&&(this._ariaHiddenElements.set(ge,ge.getAttribute("aria-hidden")),ge.setAttribute("aria-hidden","true"))}}}_getAfterAllClosed(){const F=this._parentDialog;return F?F._getAfterAllClosed():this._afterAllClosedAtThisLevel}}return _e.\u0275fac=function(F){return new(F||_e)(M.LFG(c.aV),M.LFG(M.zs3),M.LFG(_t,8),M.LFG(_e,12),M.LFG(c.Xj),M.LFG(Je))},_e.\u0275prov=M.Yz7({token:_e,factory:_e.\u0275fac}),_e})();function ee(_e,Ye){let F=_e.length;for(;F--;)Ye(_e[F])}let ae=(()=>{class _e{}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275mod=M.oAB({type:_e}),_e.\u0275inj=M.cJS({providers:[$,q],imports:[c.U8,H.eL,re.rt,H.eL]}),_e})();var Pe=b(1281),de=b(6451),be=b(9300),Fe=b(5698),ke=b(3238);function $e(_e,Ye){}b(7340);class bt{constructor(){this.role="dialog",this.panelClass="",this.hasBackdrop=!0,this.backdropClass="",this.disableClose=!1,this.width="",this.height="",this.maxWidth="80vw",this.data=null,this.ariaDescribedBy=null,this.ariaLabelledBy=null,this.ariaLabel=null,this.ariaModal=!0,this.autoFocus="first-tabbable",this.restoreFocus=!0,this.delayFocusTrap=!0,this.closeOnNavigation=!0}}const At="mdc-dialog--open",ot="mdc-dialog--opening",st="mdc-dialog--closing";let lt=(()=>{class _e extends Be{constructor(F,pe,te,ge,rt,at,Vt,St){super(F,pe,te,ge,rt,at,Vt,St),this._animationStateChanged=new M.vpe}_captureInitialFocus(){this._config.delayFocusTrap||this._trapFocus()}_openAnimationDone(F){this._config.delayFocusTrap&&this._trapFocus(),this._animationStateChanged.next({state:"opened",totalTime:F})}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(M.SBq),M.Y36(re.qV),M.Y36(o.K0,8),M.Y36(bt),M.Y36(re.ic),M.Y36(M.R0b),M.Y36(c.Iu),M.Y36(re.tE))},_e.\u0275cmp=M.Xpm({type:_e,selectors:[["ng-component"]],features:[M.qOj],decls:0,vars:0,template:function(F,pe){},encapsulation:2}),_e})();const jt="--mat-dialog-transition-duration";function Lt(_e){return null==_e?null:"number"==typeof _e?_e:_e.endsWith("ms")?(0,Pe.su)(_e.substring(0,_e.length-2)):_e.endsWith("s")?1e3*(0,Pe.su)(_e.substring(0,_e.length-1)):"0"===_e?0:null}let yt=(()=>{class _e extends lt{constructor(F,pe,te,ge,rt,at,Vt,St,mn){var gn,Ze;super(F,pe,te,ge,rt,at,Vt,mn),this._animationMode=St,this._animationsEnabled="NoopAnimations"!==this._animationMode,this._hostElement=this._elementRef.nativeElement,this._openAnimationDuration=this._animationsEnabled?null!==(gn=Lt(this._config.enterAnimationDuration))&&void 0!==gn?gn:150:0,this._closeAnimationDuration=this._animationsEnabled?null!==(Ze=Lt(this._config.exitAnimationDuration))&&void 0!==Ze?Ze:75:0,this._animationTimer=null,this._finishDialogOpen=()=>{this._clearAnimationClasses(),this._openAnimationDone(this._openAnimationDuration)},this._finishDialogClose=()=>{this._clearAnimationClasses(),this._animationStateChanged.emit({state:"closed",totalTime:this._closeAnimationDuration})}}_contentAttached(){super._contentAttached(),this._startOpenAnimation()}ngOnDestroy(){super.ngOnDestroy(),null!==this._animationTimer&&clearTimeout(this._animationTimer)}_startOpenAnimation(){this._animationStateChanged.emit({state:"opening",totalTime:this._openAnimationDuration}),this._animationsEnabled?(this._hostElement.style.setProperty(jt,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(ot),this._hostElement.classList.add(At),this._waitForAnimationToComplete(this._openAnimationDuration,this._finishDialogOpen)):(this._hostElement.classList.add(At),Promise.resolve().then(()=>this._finishDialogOpen()))}_startExitAnimation(){this._animationStateChanged.emit({state:"closing",totalTime:this._closeAnimationDuration}),this._hostElement.classList.remove(At),this._animationsEnabled?(this._hostElement.style.setProperty(jt,`${this._openAnimationDuration}ms`),this._hostElement.classList.add(st),this._waitForAnimationToComplete(this._closeAnimationDuration,this._finishDialogClose)):Promise.resolve().then(()=>this._finishDialogClose())}_clearAnimationClasses(){this._hostElement.classList.remove(ot),this._hostElement.classList.remove(st)}_waitForAnimationToComplete(F,pe){null!==this._animationTimer&&clearTimeout(this._animationTimer),this._animationTimer=setTimeout(pe,F)}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(M.SBq),M.Y36(re.qV),M.Y36(o.K0,8),M.Y36(bt),M.Y36(re.ic),M.Y36(M.R0b),M.Y36(c.Iu),M.Y36(M.QbO,8),M.Y36(re.tE))},_e.\u0275cmp=M.Xpm({type:_e,selectors:[["mat-dialog-container"]],hostAttrs:["tabindex","-1",1,"mat-mdc-dialog-container","mdc-dialog"],hostVars:8,hostBindings:function(F,pe){2&F&&(M.Ikx("id",pe._config.id),M.uIk("aria-modal",pe._config.ariaModal)("role",pe._config.role)("aria-labelledby",pe._config.ariaLabel?null:pe._ariaLabelledBy)("aria-label",pe._config.ariaLabel)("aria-describedby",pe._config.ariaDescribedBy||null),M.ekj("_mat-animation-noopable",!pe._animationsEnabled))},features:[M.qOj],decls:3,vars:0,consts:[[1,"mdc-dialog__container"],[1,"mat-mdc-dialog-surface","mdc-dialog__surface"],["cdkPortalOutlet",""]],template:function(F,pe){1&F&&(M.TgZ(0,"div",0)(1,"div",1),M.YNc(2,$e,0,0,"ng-template",2),M.qZA()())},dependencies:[H.Pl],styles:['.mdc-elevation-overlay{position:absolute;border-radius:inherit;pointer-events:none;opacity:var(--mdc-elevation-overlay-opacity, 0);transition:opacity 280ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-dialog,.mdc-dialog__scrim{position:fixed;top:0;left:0;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%}.mdc-dialog{display:none;z-index:var(--mdc-dialog-z-index, 7)}.mdc-dialog .mdc-dialog__content{padding:20px 24px 20px 24px}.mdc-dialog .mdc-dialog__surface{min-width:280px}@media(max-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:calc(100vw - 32px)}}@media(min-width: 592px){.mdc-dialog .mdc-dialog__surface{max-width:560px}}.mdc-dialog .mdc-dialog__surface{max-height:calc(100% - 32px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-width:none}@media(max-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px;width:560px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 112px)}}@media(max-width: 720px)and (min-width: 672px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:560px}}@media(max-width: 720px)and (max-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:calc(100vh - 160px)}}@media(max-width: 720px)and (min-height: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{max-height:560px}}@media(max-width: 720px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}@media(max-width: 720px)and (max-height: 400px),(max-width: 600px),(min-width: 720px)and (max-height: 400px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{height:100%;max-height:100vh;max-width:100vw;width:100vw;border-radius:0}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{order:-1;left:-12px}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__header{padding:0 16px 9px;justify-content:flex-start}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__title{margin-left:calc(16px - 2 * 12px)}}@media(min-width: 960px){.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface{width:calc(100vw - 400px)}.mdc-dialog.mdc-dialog--fullscreen .mdc-dialog__surface .mdc-dialog__close{right:-12px}}.mdc-dialog.mdc-dialog__scrim--hidden .mdc-dialog__scrim{opacity:0}.mdc-dialog__scrim{opacity:0;z-index:-1}.mdc-dialog__container{display:flex;flex-direction:row;align-items:center;justify-content:space-around;box-sizing:border-box;height:100%;transform:scale(0.8);opacity:0;pointer-events:none}.mdc-dialog__surface{position:relative;display:flex;flex-direction:column;flex-grow:0;flex-shrink:0;box-sizing:border-box;max-width:100%;max-height:100%;pointer-events:auto;overflow-y:auto}.mdc-dialog__surface .mdc-elevation-overlay{width:100%;height:100%;top:0;left:0}[dir=rtl] .mdc-dialog__surface,.mdc-dialog__surface[dir=rtl]{text-align:right}@media screen and (forced-colors: active),(-ms-high-contrast: active){.mdc-dialog__surface{outline:2px solid windowText}}.mdc-dialog__surface::before{position:absolute;box-sizing:border-box;width:100%;height:100%;top:0;left:0;border:2px solid rgba(0,0,0,0);border-radius:inherit;content:"";pointer-events:none}@media screen and (forced-colors: active){.mdc-dialog__surface::before{border-color:CanvasText}}@media screen and (-ms-high-contrast: active),screen and (-ms-high-contrast: none){.mdc-dialog__surface::before{content:none}}.mdc-dialog__title{display:block;margin-top:0;position:relative;flex-shrink:0;box-sizing:border-box;margin:0 0 1px;padding:0 24px 9px}.mdc-dialog__title::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}[dir=rtl] .mdc-dialog__title,.mdc-dialog__title[dir=rtl]{text-align:right}.mdc-dialog--scrollable .mdc-dialog__title{margin-bottom:1px;padding-bottom:15px}.mdc-dialog--fullscreen .mdc-dialog__header{align-items:baseline;border-bottom:1px solid rgba(0,0,0,0);display:inline-flex;justify-content:space-between;padding:0 24px 9px;z-index:1}@media screen and (forced-colors: active){.mdc-dialog--fullscreen .mdc-dialog__header{border-bottom-color:CanvasText}}.mdc-dialog--fullscreen .mdc-dialog__header .mdc-dialog__close{right:-12px}.mdc-dialog--fullscreen .mdc-dialog__title{margin-bottom:0;padding:0;border-bottom:0}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__title{border-bottom:0;margin-bottom:0}.mdc-dialog--fullscreen .mdc-dialog__close{top:5px}.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog--fullscreen.mdc-dialog--scrollable .mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--fullscreen--titleless .mdc-dialog__close{margin-top:4px}.mdc-dialog--fullscreen--titleless.mdc-dialog--scrollable .mdc-dialog__close{margin-top:0}.mdc-dialog__content{flex-grow:1;box-sizing:border-box;margin:0;overflow:auto}.mdc-dialog__content>:first-child{margin-top:0}.mdc-dialog__content>:last-child{margin-bottom:0}.mdc-dialog__title+.mdc-dialog__content,.mdc-dialog__header+.mdc-dialog__content{padding-top:0}.mdc-dialog--scrollable .mdc-dialog__title+.mdc-dialog__content{padding-top:8px;padding-bottom:8px}.mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:6px 0 0}.mdc-dialog--scrollable .mdc-dialog__content .mdc-deprecated-list:first-child:last-child{padding:0}.mdc-dialog__actions{display:flex;position:relative;flex-shrink:0;flex-wrap:wrap;align-items:center;justify-content:flex-end;box-sizing:border-box;min-height:52px;margin:0;padding:8px;border-top:1px solid rgba(0,0,0,0)}@media screen and (forced-colors: active){.mdc-dialog__actions{border-top-color:CanvasText}}.mdc-dialog--stacked .mdc-dialog__actions{flex-direction:column;align-items:flex-end}.mdc-dialog__button{margin-left:8px;margin-right:0;max-width:100%;text-align:right}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{margin-left:0;margin-right:8px}.mdc-dialog__button:first-child{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button:first-child,.mdc-dialog__button:first-child[dir=rtl]{margin-left:0;margin-right:0}[dir=rtl] .mdc-dialog__button,.mdc-dialog__button[dir=rtl]{text-align:left}.mdc-dialog--stacked .mdc-dialog__button:not(:first-child){margin-top:12px}.mdc-dialog--open,.mdc-dialog--opening,.mdc-dialog--closing{display:flex}.mdc-dialog--opening .mdc-dialog__scrim{transition:opacity 150ms linear}.mdc-dialog--opening .mdc-dialog__container{transition:opacity 75ms linear,transform 150ms 0ms cubic-bezier(0, 0, 0.2, 1)}.mdc-dialog--closing .mdc-dialog__scrim,.mdc-dialog--closing .mdc-dialog__container{transition:opacity 75ms linear}.mdc-dialog--closing .mdc-dialog__container{transform:none}.mdc-dialog--open .mdc-dialog__scrim{opacity:1}.mdc-dialog--open .mdc-dialog__container{transform:none;opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim{opacity:1}.mdc-dialog--open.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{transition:opacity 75ms linear}.mdc-dialog--open.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim{transition:opacity 150ms linear}.mdc-dialog__surface-scrim{display:none;opacity:0;position:absolute;width:100%;height:100%;z-index:1}.mdc-dialog__surface-scrim--shown .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--showing .mdc-dialog__surface-scrim,.mdc-dialog__surface-scrim--hiding .mdc-dialog__surface-scrim{display:block}.mdc-dialog-scroll-lock{overflow:hidden}.mdc-dialog--no-content-padding .mdc-dialog__content{padding:0}.mdc-dialog--sheet .mdc-dialog__close{right:12px;top:9px;position:absolute;z-index:1}.mdc-dialog__scrim--removed{pointer-events:none}.mdc-dialog__scrim--removed .mdc-dialog__scrim,.mdc-dialog__scrim--removed .mdc-dialog__surface-scrim{display:none}.mat-mdc-dialog-content{max-height:65vh}.mat-mdc-dialog-container{position:static;display:block}.mat-mdc-dialog-container,.mat-mdc-dialog-container .mdc-dialog__container,.mat-mdc-dialog-container .mdc-dialog__surface{max-height:inherit;min-height:inherit;min-width:inherit;max-width:inherit}.mat-mdc-dialog-container .mdc-dialog__surface{display:block;width:100%;height:100%}.mat-mdc-dialog-container{outline:0}.mat-mdc-dialog-container .mdc-dialog__surface{background-color:var(--mdc-dialog-container-color, white)}.mat-mdc-dialog-container .mdc-dialog__surface{box-shadow:var(--mdc-dialog-container-elevation, 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-mdc-dialog-container .mdc-dialog__surface{border-radius:var(--mdc-dialog-container-shape, var(--mdc-shape-medium, 4px))}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title,.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__actions,.mat-mdc-dialog-container.mdc-dialog--scrollable.mdc-dialog-scroll-divider-footer .mdc-dialog__actions{border-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container.mdc-dialog--scrollable .mdc-dialog__title{border-bottom-color:var(--mdc-dialog-with-divider-divider-color, black)}.mat-mdc-dialog-container .mdc-dialog__title{font-family:var(--mdc-dialog-subhead-font, "Arial");line-height:var(--mdc-dialog-subhead-line-height, 14px);font-size:var(--mdc-dialog-subhead-size, 14px);font-weight:var(--mdc-dialog-subhead-weight, 500);letter-spacing:var(--mdc-dialog-subhead-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__title{color:var(--mdc-dialog-subhead-color, black)}.mat-mdc-dialog-container .mdc-dialog__content{font-family:var(--mdc-dialog-supporting-text-font, "Arial");line-height:var(--mdc-dialog-supporting-text-line-height, 14px);font-size:var(--mdc-dialog-supporting-text-size, 14px);font-weight:var(--mdc-dialog-supporting-text-weight, 500);letter-spacing:var(--mdc-dialog-supporting-text-tracking, 1px)}.mat-mdc-dialog-container .mdc-dialog__content{color:var(--mdc-dialog-supporting-text-color, black)}.mat-mdc-dialog-container .mdc-dialog__container{transition-duration:var(--mat-dialog-transition-duration, 0ms)}.mat-mdc-dialog-container._mat-animation-noopable .mdc-dialog__container{transition:none}.mat-mdc-dialog-content{display:block}.mat-mdc-dialog-actions{justify-content:start}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-center,.mat-mdc-dialog-actions[align=center]{justify-content:center}.mat-mdc-dialog-actions.mat-mdc-dialog-actions-align-end,.mat-mdc-dialog-actions[align=end]{justify-content:flex-end}.mat-mdc-dialog-actions .mat-button-base+.mat-button-base,.mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:8px}[dir=rtl] .mat-mdc-dialog-actions .mat-button-base+.mat-button-base,[dir=rtl] .mat-mdc-dialog-actions .mat-mdc-button-base+.mat-mdc-button-base{margin-left:0;margin-right:8px}'],encapsulation:2}),_e})();class hn{constructor(Ye,F,pe){this._ref=Ye,this._containerInstance=pe,this._afterOpened=new Se.x,this._beforeClosed=new Se.x,this._state=0,this.disableClose=F.disableClose,this.id=Ye.id,pe._animationStateChanged.pipe((0,be.h)(te=>"opened"===te.state),(0,Fe.q)(1)).subscribe(()=>{this._afterOpened.next(),this._afterOpened.complete()}),pe._animationStateChanged.pipe((0,be.h)(te=>"closed"===te.state),(0,Fe.q)(1)).subscribe(()=>{clearTimeout(this._closeFallbackTimeout),this._finishDialogClose()}),Ye.overlayRef.detachments().subscribe(()=>{this._beforeClosed.next(this._result),this._beforeClosed.complete(),this._finishDialogClose()}),(0,de.T)(this.backdropClick(),this.keydownEvents().pipe((0,be.h)(te=>te.keyCode===fe.hY&&!this.disableClose&&!(0,fe.Vb)(te)))).subscribe(te=>{this.disableClose||(te.preventDefault(),It(this,"keydown"===te.type?"keyboard":"mouse"))})}close(Ye){this._result=Ye,this._containerInstance._animationStateChanged.pipe((0,be.h)(F=>"closing"===F.state),(0,Fe.q)(1)).subscribe(F=>{this._beforeClosed.next(Ye),this._beforeClosed.complete(),this._ref.overlayRef.detachBackdrop(),this._closeFallbackTimeout=setTimeout(()=>this._finishDialogClose(),F.totalTime+100)}),this._state=1,this._containerInstance._startExitAnimation()}afterOpened(){return this._afterOpened}afterClosed(){return this._ref.closed}beforeClosed(){return this._beforeClosed}backdropClick(){return this._ref.backdropClick}keydownEvents(){return this._ref.keydownEvents}updatePosition(Ye){let F=this._ref.config.positionStrategy;return Ye&&(Ye.left||Ye.right)?Ye.left?F.left(Ye.left):F.right(Ye.right):F.centerHorizontally(),Ye&&(Ye.top||Ye.bottom)?Ye.top?F.top(Ye.top):F.bottom(Ye.bottom):F.centerVertically(),this._ref.updatePosition(),this}updateSize(Ye="",F=""){return this._ref.updateSize(Ye,F),this}addPanelClass(Ye){return this._ref.addPanelClass(Ye),this}removePanelClass(Ye){return this._ref.removePanelClass(Ye),this}getState(){return this._state}_finishDialogClose(){this._state=2,this._ref.close(this._result,{focusOrigin:this._closeInteractionType}),this.componentInstance=null}}function It(_e,Ye,F){return _e._closeInteractionType=Ye,_e.close(F)}const yn=new M.OlP("MatMdcDialogData"),tn=new M.OlP("mat-mdc-dialog-default-options"),xn=new M.OlP("mat-mdc-dialog-scroll-strategy"),Ht={provide:xn,deps:[c.aV],useFactory:function Ct(_e){return()=>_e.scrollStrategies.block()}};let ve=0,G=(()=>{class _e{get openDialogs(){return this._parentDialog?this._parentDialog.openDialogs:this._openDialogsAtThisLevel}get afterOpened(){return this._parentDialog?this._parentDialog.afterOpened:this._afterOpenedAtThisLevel}_getAfterAllClosed(){const F=this._parentDialog;return F?F._getAfterAllClosed():this._afterAllClosedAtThisLevel}constructor(F,pe,te,ge,rt,at,Vt,St,mn,gn){this._overlay=F,this._defaultOptions=te,this._parentDialog=ge,this._dialogRefConstructor=Vt,this._dialogContainerType=St,this._dialogDataToken=mn,this._openDialogsAtThisLevel=[],this._afterAllClosedAtThisLevel=new Se.x,this._afterOpenedAtThisLevel=new Se.x,this._idPrefix="mat-dialog-",this.dialogConfigClass=bt,this.afterAllClosed=(0,ie.P)(()=>this.openDialogs.length?this._getAfterAllClosed():this._getAfterAllClosed().pipe((0,se.O)(void 0))),this._scrollStrategy=at,this._dialog=pe.get($)}open(F,pe){let te;(pe={...this._defaultOptions||new bt,...pe}).id=pe.id||`${this._idPrefix}${ve++}`,pe.scrollStrategy=pe.scrollStrategy||this._scrollStrategy();const ge=this._dialog.open(F,{...pe,positionStrategy:this._overlay.position().global().centerHorizontally().centerVertically(),disableClose:!0,closeOnDestroy:!1,container:{type:this._dialogContainerType,providers:()=>[{provide:this.dialogConfigClass,useValue:pe},{provide:we,useValue:pe}]},templateContext:()=>({dialogRef:te}),providers:(rt,at,Vt)=>{var St;return te=new this._dialogRefConstructor(rt,pe,Vt),te.updatePosition(null===(St=pe)||void 0===St?void 0:St.position),[{provide:this._dialogContainerType,useValue:Vt},{provide:this._dialogDataToken,useValue:at.data},{provide:this._dialogRefConstructor,useValue:te}]}});return te.componentInstance=ge.componentInstance,this.openDialogs.push(te),this.afterOpened.next(te),te.afterClosed().subscribe(()=>{const rt=this.openDialogs.indexOf(te);rt>-1&&(this.openDialogs.splice(rt,1),this.openDialogs.length||this._getAfterAllClosed().next())}),te}closeAll(){this._closeDialogs(this.openDialogs)}getDialogById(F){return this.openDialogs.find(pe=>pe.id===F)}ngOnDestroy(){this._closeDialogs(this._openDialogsAtThisLevel),this._afterAllClosedAtThisLevel.complete(),this._afterOpenedAtThisLevel.complete()}_closeDialogs(F){let pe=F.length;for(;pe--;)F[pe].close()}}return _e.\u0275fac=function(F){M.$Z()},_e.\u0275prov=M.Yz7({token:_e,factory:_e.\u0275fac}),_e})(),Re=(()=>{class _e extends G{constructor(F,pe,te,ge,rt,at,Vt,St){super(F,pe,ge,at,Vt,rt,hn,yt,yn,St),this._idPrefix="mat-mdc-dialog-"}}return _e.\u0275fac=function(F){return new(F||_e)(M.LFG(c.aV),M.LFG(M.zs3),M.LFG(o.Ye,8),M.LFG(tn,8),M.LFG(xn),M.LFG(_e,12),M.LFG(c.Xj),M.LFG(M.QbO,8))},_e.\u0275prov=M.Yz7({token:_e,factory:_e.\u0275fac}),_e})(),tt=0,ue=(()=>{class _e{constructor(F,pe,te){this.dialogRef=F,this._elementRef=pe,this._dialog=te,this.type="button"}ngOnInit(){this.dialogRef||(this.dialogRef=Ce(this._elementRef,this._dialog.openDialogs))}ngOnChanges(F){const pe=F._matDialogClose||F._matDialogCloseResult;pe&&(this.dialogResult=pe.currentValue)}_onButtonClick(F){It(this.dialogRef,0===F.screenX&&0===F.screenY?"keyboard":"mouse",this.dialogResult)}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(hn,8),M.Y36(M.SBq),M.Y36(Re))},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-close",""],["","matDialogClose",""]],hostVars:2,hostBindings:function(F,pe){1&F&&M.NdJ("click",function(ge){return pe._onButtonClick(ge)}),2&F&&M.uIk("aria-label",pe.ariaLabel||null)("type",pe.type)},inputs:{ariaLabel:["aria-label","ariaLabel"],type:"type",dialogResult:["mat-dialog-close","dialogResult"],_matDialogClose:["matDialogClose","_matDialogClose"]},exportAs:["matDialogClose"],features:[M.TTD]}),_e})(),R=(()=>{class _e{constructor(F,pe,te){this._dialogRef=F,this._elementRef=pe,this._dialog=te,this.id="mat-mdc-dialog-title-"+tt++}ngOnInit(){this._dialogRef||(this._dialogRef=Ce(this._elementRef,this._dialog.openDialogs)),this._dialogRef&&Promise.resolve().then(()=>{const F=this._dialogRef._containerInstance;F&&!F._ariaLabelledBy&&(F._ariaLabelledBy=this.id)})}}return _e.\u0275fac=function(F){return new(F||_e)(M.Y36(hn,8),M.Y36(M.SBq),M.Y36(Re))},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-title",""],["","matDialogTitle",""]],hostAttrs:[1,"mat-mdc-dialog-title","mdc-dialog__title"],hostVars:1,hostBindings:function(F,pe){2&F&&M.Ikx("id",pe.id)},inputs:{id:"id"},exportAs:["matDialogTitle"]}),_e})(),K=(()=>{class _e{}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-content",""],["mat-dialog-content"],["","matDialogContent",""]],hostAttrs:[1,"mat-mdc-dialog-content","mdc-dialog__content"]}),_e})(),De=(()=>{class _e{constructor(){this.align="start"}}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275dir=M.lG2({type:_e,selectors:[["","mat-dialog-actions",""],["mat-dialog-actions"],["","matDialogActions",""]],hostAttrs:[1,"mat-mdc-dialog-actions","mdc-dialog__actions"],hostVars:4,hostBindings:function(F,pe){2&F&&M.ekj("mat-mdc-dialog-actions-align-center","center"===pe.align)("mat-mdc-dialog-actions-align-end","end"===pe.align)},inputs:{align:"align"}}),_e})();function Ce(_e,Ye){let F=_e.nativeElement.parentElement;for(;F&&!F.classList.contains("mat-mdc-dialog-container");)F=F.parentElement;return F?Ye.find(pe=>pe.id===F.id):null}let Ke=(()=>{class _e{}return _e.\u0275fac=function(F){return new(F||_e)},_e.\u0275mod=M.oAB({type:_e}),_e.\u0275inj=M.cJS({providers:[Re,Ht],imports:[ae,c.U8,H.eL,ke.BQ,ke.BQ]}),_e})()},9549:(ze,me,b)=>{b.d(me,{Eo:()=>G,G_:()=>R,KE:()=>_e,R9:()=>It,hX:()=>ot,lN:()=>Ye,o2:()=>K});var c=b(1571),o=b(445),M=b(3353),re=b(7579),Q=b(6451),H=b(2722),fe=b(6895),Se=b(1281),ie=b(7340),Z=b(9643),ye=b(3238);const se=["matFormFieldNotchedOutline",""],Ee=["*"],we=["textField"],Ie=["iconPrefixContainer"],Be=["textPrefixContainer"];function Ve(F,pe){1&F&&c._UZ(0,"span",19)}function Je(F,pe){if(1&F){const te=c.EpF();c.TgZ(0,"label",17),c.NdJ("cdkObserveContent",function(){c.CHM(te);const rt=c.oxw(2);return c.KtG(rt._refreshOutlineNotchWidth())}),c.Hsn(1,1),c.YNc(2,Ve,1,0,"span",18),c.qZA()}if(2&F){const te=c.oxw(2);c.Q6J("floating",te._shouldLabelFloat())("cdkObserveContentDisabled",!te._hasOutline())("id",te._labelId),c.uIk("for",te._control.id)("aria-owns",te._control.id),c.xp6(2),c.Q6J("ngIf",!te.hideRequiredMarker&&te._control.required)}}function pt(F,pe){if(1&F&&c.YNc(0,Je,3,6,"label",16),2&F){const te=c.oxw();c.Q6J("ngIf",te._hasFloatingLabel())}}function _t(F,pe){1&F&&c._UZ(0,"div",20)}function ne(F,pe){}function q(F,pe){if(1&F&&c.YNc(0,ne,0,0,"ng-template",22),2&F){c.oxw(2);const te=c.MAs(1);c.Q6J("ngTemplateOutlet",te)}}function j(F,pe){if(1&F&&(c.TgZ(0,"div",21),c.YNc(1,q,1,1,"ng-template",9),c.qZA()),2&F){const te=c.oxw();c.Q6J("matFormFieldNotchedOutlineOpen",te._shouldLabelFloat())("matFormFieldNotchedOutlineLabelWidth",te._labelWidth),c.xp6(1),c.Q6J("ngIf",!te._forceDisplayInfixLabel())}}function $(F,pe){1&F&&(c.TgZ(0,"div",23,24),c.Hsn(2,2),c.qZA())}function ee(F,pe){1&F&&(c.TgZ(0,"div",25,26),c.Hsn(2,3),c.qZA())}function ae(F,pe){}function Pe(F,pe){if(1&F&&c.YNc(0,ae,0,0,"ng-template",22),2&F){c.oxw();const te=c.MAs(1);c.Q6J("ngTemplateOutlet",te)}}function de(F,pe){1&F&&(c.TgZ(0,"div",27),c.Hsn(1,4),c.qZA())}function be(F,pe){1&F&&(c.TgZ(0,"div",28),c.Hsn(1,5),c.qZA())}function Fe(F,pe){1&F&&c._UZ(0,"div",29)}function ke(F,pe){if(1&F&&(c.TgZ(0,"div",30),c.Hsn(1,6),c.qZA()),2&F){const te=c.oxw();c.Q6J("@transitionMessages",te._subscriptAnimationState)}}function Xe(F,pe){if(1&F&&(c.TgZ(0,"mat-hint",34),c._uU(1),c.qZA()),2&F){const te=c.oxw(2);c.Q6J("id",te._hintLabelId),c.xp6(1),c.Oqu(te.hintLabel)}}function $e(F,pe){if(1&F&&(c.TgZ(0,"div",31),c.YNc(1,Xe,2,2,"mat-hint",32),c.Hsn(2,7),c._UZ(3,"div",33),c.Hsn(4,8),c.qZA()),2&F){const te=c.oxw();c.Q6J("@transitionMessages",te._subscriptAnimationState),c.xp6(1),c.Q6J("ngIf",te.hintLabel)}}const bt=["*",[["mat-label"]],[["","matPrefix",""],["","matIconPrefix",""]],[["","matTextPrefix",""]],[["","matTextSuffix",""]],[["","matSuffix",""],["","matIconSuffix",""]],[["mat-error"],["","matError",""]],[["mat-hint",3,"align","end"]],[["mat-hint","align","end"]]],At=["*","mat-label","[matPrefix], [matIconPrefix]","[matTextPrefix]","[matTextSuffix]","[matSuffix], [matIconSuffix]","mat-error, [matError]","mat-hint:not([align='end'])","mat-hint[align='end']"];let ot=(()=>{class F{}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F,selectors:[["mat-label"]]}),F})();const mt=new c.OlP("MatError");let lt=0,jt=(()=>{class F{constructor(){this.align="start",this.id="mat-mdc-hint-"+lt++}}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F,selectors:[["mat-hint"]],hostAttrs:[1,"mat-mdc-form-field-hint","mat-mdc-form-field-bottom-align"],hostVars:4,hostBindings:function(te,ge){2&te&&(c.Ikx("id",ge.id),c.uIk("align",null),c.ekj("mat-mdc-form-field-hint-end","end"===ge.align))},inputs:{align:"align",id:"id"}}),F})();const Lt=new c.OlP("MatPrefix"),hn=new c.OlP("MatSuffix");let It=(()=>{class F{constructor(){this._isText=!1}set _isTextSelector(te){this._isText=!0}}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F,selectors:[["","matSuffix",""],["","matIconSuffix",""],["","matTextSuffix",""]],inputs:{_isTextSelector:["matTextSuffix","_isTextSelector"]},features:[c._Bn([{provide:hn,useExisting:F}])]}),F})(),yn=(()=>{class F{constructor(te){this._elementRef=te,this.floating=!1}getWidth(){return function tn(F){if(null!==F.offsetParent)return F.scrollWidth;const te=F.cloneNode(!0);te.style.setProperty("position","absolute"),te.style.setProperty("transform","translate(-9999px, -9999px)"),document.documentElement.appendChild(te);const ge=te.scrollWidth;return te.remove(),ge}(this._elementRef.nativeElement)}get element(){return this._elementRef.nativeElement}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq))},F.\u0275dir=c.lG2({type:F,selectors:[["label","matFormFieldFloatingLabel",""]],hostAttrs:[1,"mdc-floating-label","mat-mdc-floating-label"],hostVars:2,hostBindings:function(te,ge){2&te&&c.ekj("mdc-floating-label--float-above",ge.floating)},inputs:{floating:"floating"}}),F})();const xn="mdc-line-ripple--active",Ct="mdc-line-ripple--deactivating";let Ht=(()=>{class F{constructor(te,ge){this._elementRef=te,this._handleTransitionEnd=rt=>{const at=this._elementRef.nativeElement.classList,Vt=at.contains(Ct);"opacity"===rt.propertyName&&Vt&&at.remove(xn,Ct)},ge.runOutsideAngular(()=>{te.nativeElement.addEventListener("transitionend",this._handleTransitionEnd)})}activate(){const te=this._elementRef.nativeElement.classList;te.remove(Ct),te.add(xn)}deactivate(){this._elementRef.nativeElement.classList.add(Ct)}ngOnDestroy(){this._elementRef.nativeElement.removeEventListener("transitionend",this._handleTransitionEnd)}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq),c.Y36(c.R0b))},F.\u0275dir=c.lG2({type:F,selectors:[["div","matFormFieldLineRipple",""]],hostAttrs:[1,"mdc-line-ripple"]}),F})(),oe=(()=>{class F{constructor(te,ge){this._elementRef=te,this._ngZone=ge,this.labelWidth=0,this.open=!1}ngAfterViewInit(){const te=this._elementRef.nativeElement.querySelector(".mdc-floating-label");te?(this._elementRef.nativeElement.classList.add("mdc-notched-outline--upgraded"),"function"==typeof requestAnimationFrame&&(te.style.transitionDuration="0s",this._ngZone.runOutsideAngular(()=>{requestAnimationFrame(()=>te.style.transitionDuration="")}))):this._elementRef.nativeElement.classList.add("mdc-notched-outline--no-label")}_getNotchWidth(){return this.open?this.labelWidth>0?`calc(${this.labelWidth}px * var(--mat-mdc-form-field-floating-label-scale, 0.75) + 9px)`:"0px":null}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq),c.Y36(c.R0b))},F.\u0275cmp=c.Xpm({type:F,selectors:[["div","matFormFieldNotchedOutline",""]],hostAttrs:[1,"mdc-notched-outline"],hostVars:2,hostBindings:function(te,ge){2&te&&c.ekj("mdc-notched-outline--notched",ge.open)},inputs:{labelWidth:["matFormFieldNotchedOutlineLabelWidth","labelWidth"],open:["matFormFieldNotchedOutlineOpen","open"]},attrs:se,ngContentSelectors:Ee,decls:4,vars:2,consts:[[1,"mdc-notched-outline__leading"],[1,"mdc-notched-outline__notch"],[1,"mdc-notched-outline__trailing"]],template:function(te,ge){1&te&&(c.F$t(),c._UZ(0,"div",0),c.TgZ(1,"div",1),c.Hsn(2),c.qZA(),c._UZ(3,"div",2)),2&te&&(c.xp6(1),c.Udp("width",ge._getNotchWidth()))},encapsulation:2,changeDetection:0}),F})();const ve={transitionMessages:(0,ie.X$)("transitionMessages",[(0,ie.SB)("enter",(0,ie.oB)({opacity:1,transform:"translateY(0%)"})),(0,ie.eR)("void => enter",[(0,ie.oB)({opacity:0,transform:"translateY(-5px)"}),(0,ie.jt)("300ms cubic-bezier(0.55, 0, 0.55, 0.2)")])])};let G=(()=>{class F{}return F.\u0275fac=function(te){return new(te||F)},F.\u0275dir=c.lG2({type:F}),F})();const R=new c.OlP("MatFormField"),K=new c.OlP("MAT_FORM_FIELD_DEFAULT_OPTIONS");let De=0,_e=(()=>{class F{get hideRequiredMarker(){return this._hideRequiredMarker}set hideRequiredMarker(te){this._hideRequiredMarker=(0,Se.Ig)(te)}get floatLabel(){var te;return this._floatLabel||(null===(te=this._defaults)||void 0===te?void 0:te.floatLabel)||"auto"}set floatLabel(te){te!==this._floatLabel&&(this._floatLabel=te,this._changeDetectorRef.markForCheck())}get appearance(){return this._appearance}set appearance(te){var ge;const rt=this._appearance,at=te||(null===(ge=this._defaults)||void 0===ge?void 0:ge.appearance)||"fill";this._appearance=at,"outline"===this._appearance&&this._appearance!==rt&&(this._refreshOutlineNotchWidth(),this._needsOutlineLabelOffsetUpdateOnStable=!0)}get subscriptSizing(){var te;return this._subscriptSizing||(null===(te=this._defaults)||void 0===te?void 0:te.subscriptSizing)||"fixed"}set subscriptSizing(te){var ge;this._subscriptSizing=te||(null===(ge=this._defaults)||void 0===ge?void 0:ge.subscriptSizing)||"fixed"}get hintLabel(){return this._hintLabel}set hintLabel(te){this._hintLabel=te,this._processHints()}get _control(){return this._explicitFormFieldControl||this._formFieldControl}set _control(te){this._explicitFormFieldControl=te}constructor(te,ge,rt,at,Vt,St,mn,gn){this._elementRef=te,this._changeDetectorRef=ge,this._ngZone=rt,this._dir=at,this._platform=Vt,this._defaults=St,this._animationMode=mn,this._document=gn,this._hideRequiredMarker=!1,this.color="primary",this._appearance="fill",this._subscriptSizing=null,this._hintLabel="",this._hasIconPrefix=!1,this._hasTextPrefix=!1,this._hasIconSuffix=!1,this._hasTextSuffix=!1,this._labelId="mat-mdc-form-field-label-"+De++,this._hintLabelId="mat-mdc-hint-"+De++,this._subscriptAnimationState="",this._labelWidth=0,this._destroyed=new re.x,this._isFocused=null,this._needsOutlineLabelOffsetUpdateOnStable=!1,St&&(St.appearance&&(this.appearance=St.appearance),this._hideRequiredMarker=Boolean(null==St?void 0:St.hideRequiredMarker),St.color&&(this.color=St.color))}ngAfterViewInit(){var te,ge;this._updateFocusState(),this._refreshOutlineNotchWidth(),null!==(te=this._document)&&void 0!==te&&null!==(ge=te.fonts)&&void 0!==ge&&ge.ready?this._document.fonts.ready.then(()=>{this._refreshOutlineNotchWidth(),this._changeDetectorRef.markForCheck()}):setTimeout(()=>this._refreshOutlineNotchWidth(),100),this._subscriptAnimationState="enter",this._changeDetectorRef.detectChanges()}ngAfterContentInit(){this._assertFormFieldControl(),this._initializeControl(),this._initializeSubscript(),this._initializePrefixAndSuffix(),this._initializeOutlineLabelOffsetSubscriptions()}ngAfterContentChecked(){this._assertFormFieldControl()}ngOnDestroy(){this._destroyed.next(),this._destroyed.complete()}getLabelId(){return this._hasFloatingLabel()?this._labelId:null}getConnectedOverlayOrigin(){return this._textField||this._elementRef}_animateAndLockLabel(){this._hasFloatingLabel()&&(this.floatLabel="always")}_initializeControl(){const te=this._control;te.controlType&&this._elementRef.nativeElement.classList.add(`mat-mdc-form-field-type-${te.controlType}`),te.stateChanges.subscribe(()=>{this._updateFocusState(),this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),te.ngControl&&te.ngControl.valueChanges&&te.ngControl.valueChanges.pipe((0,H.R)(this._destroyed)).subscribe(()=>this._changeDetectorRef.markForCheck())}_checkPrefixAndSuffixTypes(){this._hasIconPrefix=!!this._prefixChildren.find(te=>!te._isText),this._hasTextPrefix=!!this._prefixChildren.find(te=>te._isText),this._hasIconSuffix=!!this._suffixChildren.find(te=>!te._isText),this._hasTextSuffix=!!this._suffixChildren.find(te=>te._isText)}_initializePrefixAndSuffix(){this._checkPrefixAndSuffixTypes(),(0,Q.T)(this._prefixChildren.changes,this._suffixChildren.changes).subscribe(()=>{this._checkPrefixAndSuffixTypes(),this._changeDetectorRef.markForCheck()})}_initializeSubscript(){this._hintChildren.changes.subscribe(()=>{this._processHints(),this._changeDetectorRef.markForCheck()}),this._errorChildren.changes.subscribe(()=>{this._syncDescribedByIds(),this._changeDetectorRef.markForCheck()}),this._validateHints(),this._syncDescribedByIds()}_assertFormFieldControl(){}_updateFocusState(){var te,ge;if(this._control.focused&&!this._isFocused)this._isFocused=!0,null===(ge=this._lineRipple)||void 0===ge||ge.activate();else if(!this._control.focused&&(this._isFocused||null===this._isFocused)){var rt;this._isFocused=!1,null===(rt=this._lineRipple)||void 0===rt||rt.deactivate()}null===(te=this._textField)||void 0===te||te.nativeElement.classList.toggle("mdc-text-field--focused",this._control.focused)}_initializeOutlineLabelOffsetSubscriptions(){this._prefixChildren.changes.subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0),this._ngZone.runOutsideAngular(()=>{this._ngZone.onStable.pipe((0,H.R)(this._destroyed)).subscribe(()=>{this._needsOutlineLabelOffsetUpdateOnStable&&(this._needsOutlineLabelOffsetUpdateOnStable=!1,this._updateOutlineLabelOffset())})}),this._dir.change.pipe((0,H.R)(this._destroyed)).subscribe(()=>this._needsOutlineLabelOffsetUpdateOnStable=!0)}_shouldAlwaysFloat(){return"always"===this.floatLabel}_hasOutline(){return"outline"===this.appearance}_forceDisplayInfixLabel(){return!this._platform.isBrowser&&this._prefixChildren.length&&!this._shouldLabelFloat()}_hasFloatingLabel(){return!!this._labelChildNonStatic||!!this._labelChildStatic}_shouldLabelFloat(){return this._control.shouldLabelFloat||this._shouldAlwaysFloat()}_shouldForward(te){const ge=this._control?this._control.ngControl:null;return ge&&ge[te]}_getDisplayedMessages(){return this._errorChildren&&this._errorChildren.length>0&&this._control.errorState?"error":"hint"}_refreshOutlineNotchWidth(){!this._hasOutline()||!this._floatingLabel||(this._labelWidth=this._floatingLabel.getWidth())}_processHints(){this._validateHints(),this._syncDescribedByIds()}_validateHints(){}_syncDescribedByIds(){if(this._control){let te=[];if(this._control.userAriaDescribedBy&&"string"==typeof this._control.userAriaDescribedBy&&te.push(...this._control.userAriaDescribedBy.split(" ")),"hint"===this._getDisplayedMessages()){const ge=this._hintChildren?this._hintChildren.find(at=>"start"===at.align):null,rt=this._hintChildren?this._hintChildren.find(at=>"end"===at.align):null;ge?te.push(ge.id):this._hintLabel&&te.push(this._hintLabelId),rt&&te.push(rt.id)}else this._errorChildren&&te.push(...this._errorChildren.map(ge=>ge.id));this._control.setDescribedByIds(te)}}_updateOutlineLabelOffset(){var te,ge,rt,at;if(!this._platform.isBrowser||!this._hasOutline()||!this._floatingLabel)return;const Vt=this._floatingLabel.element;if(!this._iconPrefixContainer&&!this._textPrefixContainer)return void(Vt.style.transform="");if(!this._isAttachedToDom())return void(this._needsOutlineLabelOffsetUpdateOnStable=!0);const St=null===(te=this._iconPrefixContainer)||void 0===te?void 0:te.nativeElement,mn=null===(ge=this._textPrefixContainer)||void 0===ge?void 0:ge.nativeElement,gn=null!==(rt=null==St?void 0:St.getBoundingClientRect().width)&&void 0!==rt?rt:0,Ze=null!==(at=null==mn?void 0:mn.getBoundingClientRect().width)&&void 0!==at?at:0;Vt.style.transform=`var(\n --mat-mdc-form-field-label-transform,\n translateY(-50%) translateX(calc(${"rtl"===this._dir.value?"-1":"1"} * (${gn+Ze}px + var(--mat-mdc-form-field-label-offset-x, 0px))))\n )`}_isAttachedToDom(){const te=this._elementRef.nativeElement;if(te.getRootNode){const ge=te.getRootNode();return ge&&ge!==te}return document.documentElement.contains(te)}}return F.\u0275fac=function(te){return new(te||F)(c.Y36(c.SBq),c.Y36(c.sBO),c.Y36(c.R0b),c.Y36(o.Is),c.Y36(M.t4),c.Y36(K,8),c.Y36(c.QbO,8),c.Y36(fe.K0))},F.\u0275cmp=c.Xpm({type:F,selectors:[["mat-form-field"]],contentQueries:function(te,ge,rt){if(1&te&&(c.Suo(rt,ot,5),c.Suo(rt,ot,7),c.Suo(rt,G,5),c.Suo(rt,Lt,5),c.Suo(rt,hn,5),c.Suo(rt,mt,5),c.Suo(rt,jt,5)),2&te){let at;c.iGM(at=c.CRH())&&(ge._labelChildNonStatic=at.first),c.iGM(at=c.CRH())&&(ge._labelChildStatic=at.first),c.iGM(at=c.CRH())&&(ge._formFieldControl=at.first),c.iGM(at=c.CRH())&&(ge._prefixChildren=at),c.iGM(at=c.CRH())&&(ge._suffixChildren=at),c.iGM(at=c.CRH())&&(ge._errorChildren=at),c.iGM(at=c.CRH())&&(ge._hintChildren=at)}},viewQuery:function(te,ge){if(1&te&&(c.Gf(we,5),c.Gf(Ie,5),c.Gf(Be,5),c.Gf(yn,5),c.Gf(oe,5),c.Gf(Ht,5)),2&te){let rt;c.iGM(rt=c.CRH())&&(ge._textField=rt.first),c.iGM(rt=c.CRH())&&(ge._iconPrefixContainer=rt.first),c.iGM(rt=c.CRH())&&(ge._textPrefixContainer=rt.first),c.iGM(rt=c.CRH())&&(ge._floatingLabel=rt.first),c.iGM(rt=c.CRH())&&(ge._notchedOutline=rt.first),c.iGM(rt=c.CRH())&&(ge._lineRipple=rt.first)}},hostAttrs:[1,"mat-mdc-form-field"],hostVars:42,hostBindings:function(te,ge){2&te&&c.ekj("mat-mdc-form-field-label-always-float",ge._shouldAlwaysFloat())("mat-mdc-form-field-has-icon-prefix",ge._hasIconPrefix)("mat-mdc-form-field-has-icon-suffix",ge._hasIconSuffix)("mat-form-field-invalid",ge._control.errorState)("mat-form-field-disabled",ge._control.disabled)("mat-form-field-autofilled",ge._control.autofilled)("mat-form-field-no-animations","NoopAnimations"===ge._animationMode)("mat-form-field-appearance-fill","fill"==ge.appearance)("mat-form-field-appearance-outline","outline"==ge.appearance)("mat-form-field-hide-placeholder",ge._hasFloatingLabel()&&!ge._shouldLabelFloat())("mat-focused",ge._control.focused)("mat-primary","accent"!==ge.color&&"warn"!==ge.color)("mat-accent","accent"===ge.color)("mat-warn","warn"===ge.color)("ng-untouched",ge._shouldForward("untouched"))("ng-touched",ge._shouldForward("touched"))("ng-pristine",ge._shouldForward("pristine"))("ng-dirty",ge._shouldForward("dirty"))("ng-valid",ge._shouldForward("valid"))("ng-invalid",ge._shouldForward("invalid"))("ng-pending",ge._shouldForward("pending"))},inputs:{hideRequiredMarker:"hideRequiredMarker",color:"color",floatLabel:"floatLabel",appearance:"appearance",subscriptSizing:"subscriptSizing",hintLabel:"hintLabel"},exportAs:["matFormField"],features:[c._Bn([{provide:R,useExisting:F}])],ngContentSelectors:At,decls:18,vars:23,consts:[["labelTemplate",""],[1,"mat-mdc-text-field-wrapper","mdc-text-field",3,"click"],["textField",""],["class","mat-mdc-form-field-focus-overlay",4,"ngIf"],[1,"mat-mdc-form-field-flex"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth",4,"ngIf"],["class","mat-mdc-form-field-icon-prefix",4,"ngIf"],["class","mat-mdc-form-field-text-prefix",4,"ngIf"],[1,"mat-mdc-form-field-infix"],[3,"ngIf"],["class","mat-mdc-form-field-text-suffix",4,"ngIf"],["class","mat-mdc-form-field-icon-suffix",4,"ngIf"],["matFormFieldLineRipple","",4,"ngIf"],[1,"mat-mdc-form-field-subscript-wrapper","mat-mdc-form-field-bottom-align",3,"ngSwitch"],["class","mat-mdc-form-field-error-wrapper",4,"ngSwitchCase"],["class","mat-mdc-form-field-hint-wrapper",4,"ngSwitchCase"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent",4,"ngIf"],["matFormFieldFloatingLabel","",3,"floating","cdkObserveContentDisabled","id","cdkObserveContent"],["aria-hidden","true","class","mat-mdc-form-field-required-marker mdc-floating-label--required",4,"ngIf"],["aria-hidden","true",1,"mat-mdc-form-field-required-marker","mdc-floating-label--required"],[1,"mat-mdc-form-field-focus-overlay"],["matFormFieldNotchedOutline","",3,"matFormFieldNotchedOutlineOpen","matFormFieldNotchedOutlineLabelWidth"],[3,"ngTemplateOutlet"],[1,"mat-mdc-form-field-icon-prefix"],["iconPrefixContainer",""],[1,"mat-mdc-form-field-text-prefix"],["textPrefixContainer",""],[1,"mat-mdc-form-field-text-suffix"],[1,"mat-mdc-form-field-icon-suffix"],["matFormFieldLineRipple",""],[1,"mat-mdc-form-field-error-wrapper"],[1,"mat-mdc-form-field-hint-wrapper"],[3,"id",4,"ngIf"],[1,"mat-mdc-form-field-hint-spacer"],[3,"id"]],template:function(te,ge){1&te&&(c.F$t(bt),c.YNc(0,pt,1,1,"ng-template",null,0,c.W1O),c.TgZ(2,"div",1,2),c.NdJ("click",function(at){return ge._control.onContainerClick&&ge._control.onContainerClick(at)}),c.YNc(4,_t,1,0,"div",3),c.TgZ(5,"div",4),c.YNc(6,j,2,3,"div",5),c.YNc(7,$,3,0,"div",6),c.YNc(8,ee,3,0,"div",7),c.TgZ(9,"div",8),c.YNc(10,Pe,1,1,"ng-template",9),c.Hsn(11),c.qZA(),c.YNc(12,de,2,0,"div",10),c.YNc(13,be,2,0,"div",11),c.qZA(),c.YNc(14,Fe,1,0,"div",12),c.qZA(),c.TgZ(15,"div",13),c.YNc(16,ke,2,1,"div",14),c.YNc(17,$e,5,2,"div",15),c.qZA()),2&te&&(c.xp6(2),c.ekj("mdc-text-field--filled",!ge._hasOutline())("mdc-text-field--outlined",ge._hasOutline())("mdc-text-field--no-label",!ge._hasFloatingLabel())("mdc-text-field--disabled",ge._control.disabled)("mdc-text-field--invalid",ge._control.errorState),c.xp6(2),c.Q6J("ngIf",!ge._hasOutline()&&!ge._control.disabled),c.xp6(2),c.Q6J("ngIf",ge._hasOutline()),c.xp6(1),c.Q6J("ngIf",ge._hasIconPrefix),c.xp6(1),c.Q6J("ngIf",ge._hasTextPrefix),c.xp6(2),c.Q6J("ngIf",!ge._hasOutline()||ge._forceDisplayInfixLabel()),c.xp6(2),c.Q6J("ngIf",ge._hasTextSuffix),c.xp6(1),c.Q6J("ngIf",ge._hasIconSuffix),c.xp6(1),c.Q6J("ngIf",!ge._hasOutline()),c.xp6(1),c.ekj("mat-mdc-form-field-subscript-dynamic-size","dynamic"===ge.subscriptSizing),c.Q6J("ngSwitch",ge._getDisplayedMessages()),c.xp6(1),c.Q6J("ngSwitchCase","error"),c.xp6(1),c.Q6J("ngSwitchCase","hint"))},dependencies:[fe.O5,fe.tP,fe.RF,fe.n9,Z.wD,jt,yn,oe,Ht],styles:['.mdc-text-field{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:0;border-bottom-left-radius:0;display:inline-flex;align-items:baseline;padding:0 16px;position:relative;box-sizing:border-box;overflow:hidden;will-change:opacity,transform,color}.mdc-text-field .mdc-floating-label{top:50%;transform:translateY(-50%);pointer-events:none}.mdc-text-field__input{height:28px;width:100%;min-width:0;border:none;border-radius:0;background:none;appearance:none;padding:0}.mdc-text-field__input::-ms-clear{display:none}.mdc-text-field__input::-webkit-calendar-picker-indicator{display:none}.mdc-text-field__input:focus{outline:none}.mdc-text-field__input:invalid{box-shadow:none}@media all{.mdc-text-field__input::placeholder{opacity:0}}@media all{.mdc-text-field__input:-ms-input-placeholder{opacity:0}}@media all{.mdc-text-field--no-label .mdc-text-field__input::placeholder,.mdc-text-field--focused .mdc-text-field__input::placeholder{opacity:1}}@media all{.mdc-text-field--no-label .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mdc-text-field__input:-ms-input-placeholder{opacity:1}}.mdc-text-field__affix{height:28px;opacity:0;white-space:nowrap}.mdc-text-field--label-floating .mdc-text-field__affix,.mdc-text-field--no-label .mdc-text-field__affix{opacity:1}@supports(-webkit-hyphens: none){.mdc-text-field--outlined .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field__affix--prefix,.mdc-text-field__affix--prefix[dir=rtl]{padding-left:2px;padding-right:0}.mdc-text-field--end-aligned .mdc-text-field__affix--prefix{padding-left:0;padding-right:12px}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--end-aligned .mdc-text-field__affix--prefix[dir=rtl]{padding-left:12px;padding-right:0}.mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field__affix--suffix,.mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:12px}.mdc-text-field--end-aligned .mdc-text-field__affix--suffix{padding-left:2px;padding-right:0}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--end-aligned .mdc-text-field__affix--suffix[dir=rtl]{padding-left:0;padding-right:2px}.mdc-text-field--filled{height:56px}.mdc-text-field--filled::before{display:inline-block;width:0;height:40px;content:"";vertical-align:0}.mdc-text-field--filled .mdc-floating-label{left:16px;right:initial}[dir=rtl] .mdc-text-field--filled .mdc-floating-label,.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:16px}.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{height:100%}.mdc-text-field--filled.mdc-text-field--no-label .mdc-floating-label{display:none}.mdc-text-field--filled.mdc-text-field--no-label::before{display:none}@supports(-webkit-hyphens: none){.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__affix{align-items:center;align-self:center;display:inline-flex;height:100%}}.mdc-text-field--outlined{height:56px;overflow:visible}.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) scale(1)}.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) scale(0.75)}.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--outlined .mdc-text-field__input{height:100%}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading[dir=rtl]{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__leading{width:max(12px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__notch{max-width:calc(100% - max(12px, var(--mdc-shape-small, 4px))*2)}}.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing{border-top-left-radius:0;border-top-right-radius:var(--mdc-shape-small, 4px);border-bottom-right-radius:var(--mdc-shape-small, 4px);border-bottom-left-radius:0}[dir=rtl] .mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing,.mdc-text-field--outlined .mdc-notched-outline .mdc-notched-outline__trailing[dir=rtl]{border-top-left-radius:var(--mdc-shape-small, 4px);border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:var(--mdc-shape-small, 4px)}@supports(top: max(0%)){.mdc-text-field--outlined{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined{padding-right:max(16px, var(--mdc-shape-small, 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}@supports(top: max(0%)){.mdc-text-field--outlined+.mdc-text-field-helper-line{padding-right:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-left:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-leading-icon{padding-right:max(16px, var(--mdc-shape-small, 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-right:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-leading-icon,.mdc-text-field--outlined.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:max(16px, var(--mdc-shape-small, 4px))}}.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-right:0}@supports(top: max(0%)){.mdc-text-field--outlined.mdc-text-field--with-trailing-icon{padding-left:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0}@supports(top: max(0%)){[dir=rtl] .mdc-text-field--outlined.mdc-text-field--with-trailing-icon,.mdc-text-field--outlined.mdc-text-field--with-trailing-icon[dir=rtl]{padding-right:max(16px, calc(var(--mdc-shape-small, 4px) + 4px))}}.mdc-text-field--outlined.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:1px}.mdc-text-field--outlined .mdc-floating-label{left:4px;right:initial}[dir=rtl] .mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:4px}.mdc-text-field--outlined .mdc-text-field__input{display:flex;border:none !important;background-color:rgba(0,0,0,0)}.mdc-text-field--outlined .mdc-notched-outline{z-index:1}.mdc-text-field--textarea{flex-direction:column;align-items:center;width:auto;height:auto;padding:0}.mdc-text-field--textarea .mdc-floating-label{top:19px}.mdc-text-field--textarea .mdc-floating-label:not(.mdc-floating-label--float-above){transform:none}.mdc-text-field--textarea .mdc-text-field__input{flex-grow:1;height:auto;min-height:1.5rem;overflow-x:hidden;overflow-y:auto;box-sizing:border-box;resize:none;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--filled::before{display:none}.mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--float-above{transform:translateY(-10.25px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--filled .mdc-text-field__input{margin-top:23px;margin-bottom:9px}.mdc-text-field--textarea.mdc-text-field--filled.mdc-text-field--no-label .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-27.25px) scale(1)}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-24.75px) scale(0.75)}.mdc-text-field--textarea.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--textarea.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-text-field__input{margin-top:16px;margin-bottom:16px}.mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label{top:18px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field__input{margin-bottom:2px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter{align-self:flex-end;padding:0 16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::after{display:inline-block;width:0;height:16px;content:"";vertical-align:-16px}.mdc-text-field--textarea.mdc-text-field--with-internal-counter .mdc-text-field-character-counter::before{display:none}.mdc-text-field__resizer{align-self:stretch;display:inline-flex;flex-direction:column;flex-grow:1;max-height:100%;max-width:100%;min-height:56px;min-width:fit-content;min-width:-moz-available;min-width:-webkit-fill-available;overflow:hidden;resize:both}.mdc-text-field--filled .mdc-text-field__resizer{transform:translateY(-1px)}.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--filled .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateY(1px)}.mdc-text-field--outlined .mdc-text-field__resizer{transform:translateX(-1px) translateY(-1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer,.mdc-text-field--outlined .mdc-text-field__resizer[dir=rtl]{transform:translateX(1px) translateY(-1px)}.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter{transform:translateX(1px) translateY(1px)}[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input,[dir=rtl] .mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter,.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field__input[dir=rtl],.mdc-text-field--outlined .mdc-text-field__resizer .mdc-text-field-character-counter[dir=rtl]{transform:translateX(-1px) translateY(1px)}.mdc-text-field--with-leading-icon{padding-left:0;padding-right:16px}[dir=rtl] .mdc-text-field--with-leading-icon,.mdc-text-field--with-leading-icon[dir=rtl]{padding-left:16px;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 48px);left:48px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label[dir=rtl]{left:initial;right:48px}.mdc-text-field--with-leading-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label{left:36px;right:initial}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label[dir=rtl]{left:initial;right:36px}.mdc-text-field--with-leading-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{transform:translateY(-37.25px) translateX(-32px) scale(1)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-37.25px) translateX(32px) scale(1)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--float-above{font-size:.75rem}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{transform:translateY(-34.75px) translateX(-32px) scale(0.75)}[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,[dir=rtl] .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl],.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above[dir=rtl]{transform:translateY(-34.75px) translateX(32px) scale(0.75)}.mdc-text-field--with-leading-icon.mdc-text-field--outlined.mdc-notched-outline--upgraded .mdc-floating-label--float-above,.mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-notched-outline--upgraded .mdc-floating-label--float-above{font-size:1rem}.mdc-text-field--with-trailing-icon{padding-left:16px;padding-right:0}[dir=rtl] .mdc-text-field--with-trailing-icon,.mdc-text-field--with-trailing-icon[dir=rtl]{padding-left:0;padding-right:16px}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 64px)}.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 64px / 0.75)}.mdc-text-field--with-trailing-icon.mdc-text-field--outlined :not(.mdc-notched-outline--notched) .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon{padding-left:0;padding-right:0}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label{max-width:calc(100% - 96px)}.mdc-text-field--with-leading-icon.mdc-text-field--with-trailing-icon.mdc-text-field--filled .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 96px / 0.75)}.mdc-text-field-helper-line{display:flex;justify-content:space-between;box-sizing:border-box}.mdc-text-field+.mdc-text-field-helper-line{padding-right:16px;padding-left:16px}.mdc-form-field>.mdc-text-field+label{align-self:flex-start}.mdc-text-field--focused .mdc-notched-outline__leading,.mdc-text-field--focused .mdc-notched-outline__notch,.mdc-text-field--focused .mdc-notched-outline__trailing{border-width:2px}.mdc-text-field--focused+.mdc-text-field-helper-line .mdc-text-field-helper-text:not(.mdc-text-field-helper-text--validation-msg){opacity:1}.mdc-text-field--focused.mdc-text-field--outlined .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:2px}.mdc-text-field--focused.mdc-text-field--outlined.mdc-text-field--textarea .mdc-notched-outline--notched .mdc-notched-outline__notch{padding-top:0}.mdc-text-field--invalid+.mdc-text-field-helper-line .mdc-text-field-helper-text--validation-msg{opacity:1}.mdc-text-field--disabled{pointer-events:none}@media screen and (forced-colors: active){.mdc-text-field--disabled .mdc-text-field__input{background-color:Window}.mdc-text-field--disabled .mdc-floating-label{z-index:1}}.mdc-text-field--disabled .mdc-floating-label{cursor:default}.mdc-text-field--disabled.mdc-text-field--filled .mdc-text-field__ripple{display:none}.mdc-text-field--disabled .mdc-text-field__input{pointer-events:auto}.mdc-text-field--end-aligned .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--end-aligned .mdc-text-field__input[dir=rtl]{text-align:left}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix{direction:ltr}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{padding-left:0;padding-right:2px}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{padding-left:12px;padding-right:0}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--leading,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--leading{order:1}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--suffix{order:2}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__input,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__input{order:3}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__affix--prefix{order:4}[dir=rtl] .mdc-text-field--ltr-text .mdc-text-field__icon--trailing,.mdc-text-field--ltr-text[dir=rtl] .mdc-text-field__icon--trailing{order:5}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__input,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__input{text-align:right}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--prefix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--prefix{padding-right:12px}[dir=rtl] .mdc-text-field--ltr-text.mdc-text-field--end-aligned .mdc-text-field__affix--suffix,.mdc-text-field--ltr-text.mdc-text-field--end-aligned[dir=rtl] .mdc-text-field__affix--suffix{padding-left:2px}.mdc-floating-label{position:absolute;left:0;-webkit-transform-origin:left top;transform-origin:left top;line-height:1.15rem;text-align:left;text-overflow:ellipsis;white-space:nowrap;cursor:text;overflow:hidden;will-change:transform}[dir=rtl] .mdc-floating-label,.mdc-floating-label[dir=rtl]{right:0;left:auto;-webkit-transform-origin:right top;transform-origin:right top;text-align:right}.mdc-floating-label--float-above{cursor:auto}.mdc-floating-label--required::after{margin-left:1px;margin-right:0px;content:"*"}[dir=rtl] .mdc-floating-label--required::after,.mdc-floating-label--required[dir=rtl]::after{margin-left:0;margin-right:1px}.mdc-floating-label--float-above{transform:translateY(-106%) scale(0.75)}.mdc-notched-outline{display:flex;position:absolute;top:0;right:0;left:0;box-sizing:border-box;width:100%;max-width:100%;height:100%;text-align:left;pointer-events:none}[dir=rtl] .mdc-notched-outline,.mdc-notched-outline[dir=rtl]{text-align:right}.mdc-notched-outline__leading,.mdc-notched-outline__notch,.mdc-notched-outline__trailing{box-sizing:border-box;height:100%;border-top:1px solid;border-bottom:1px solid;pointer-events:none}.mdc-notched-outline__leading{border-left:1px solid;border-right:none;width:12px}[dir=rtl] .mdc-notched-outline__leading,.mdc-notched-outline__leading[dir=rtl]{border-left:none;border-right:1px solid}.mdc-notched-outline__trailing{border-left:none;border-right:1px solid;flex-grow:1}[dir=rtl] .mdc-notched-outline__trailing,.mdc-notched-outline__trailing[dir=rtl]{border-left:1px solid;border-right:none}.mdc-notched-outline__notch{flex:0 0 auto;width:auto;max-width:calc(100% - 12px * 2)}.mdc-notched-outline .mdc-floating-label{display:inline-block;position:relative;max-width:100%}.mdc-notched-outline .mdc-floating-label--float-above{text-overflow:clip}.mdc-notched-outline--upgraded .mdc-floating-label--float-above{max-width:133.3333333333%}.mdc-notched-outline--notched .mdc-notched-outline__notch{padding-left:0;padding-right:8px;border-top:none}[dir=rtl] .mdc-notched-outline--notched .mdc-notched-outline__notch,.mdc-notched-outline--notched .mdc-notched-outline__notch[dir=rtl]{padding-left:8px;padding-right:0}.mdc-notched-outline--no-label .mdc-notched-outline__notch{display:none}.mdc-line-ripple::before,.mdc-line-ripple::after{position:absolute;bottom:0;left:0;width:100%;border-bottom-style:solid;content:""}.mdc-line-ripple::before{border-bottom-width:1px}.mdc-line-ripple::after{border-bottom-width:2px}.mdc-line-ripple::before{z-index:1}.mdc-line-ripple::after{transform:scaleX(0);opacity:0;z-index:2}.mdc-line-ripple--active::after{transform:scaleX(1);opacity:1}.mdc-line-ripple--deactivating::after{opacity:0}.mat-mdc-form-field-textarea-control{vertical-align:middle;resize:vertical;box-sizing:border-box;height:auto;margin:0;padding:0;border:none;overflow:auto}.mat-mdc-form-field-input-control.mat-mdc-form-field-input-control{font:inherit;letter-spacing:inherit;text-decoration:inherit;text-transform:inherit;border:none}.mat-mdc-form-field .mat-mdc-floating-label.mdc-floating-label{line-height:normal;pointer-events:all}.mdc-text-field--no-label:not(.mdc-text-field--textarea) .mat-mdc-form-field-input-control.mdc-text-field__input,.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control{height:auto}.mat-mdc-text-field-wrapper .mat-mdc-form-field-input-control.mdc-text-field__input[type=color]{height:23px}.mat-mdc-text-field-wrapper{height:auto;flex:auto}.mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-left:0;--mat-mdc-form-field-label-offset-x: -16px}.mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-right:0}[dir=rtl] .mat-mdc-text-field-wrapper{padding-left:16px;padding-right:16px}[dir=rtl] .mat-mdc-form-field-has-icon-suffix .mat-mdc-text-field-wrapper{padding-left:0}[dir=rtl] .mat-mdc-form-field-has-icon-prefix .mat-mdc-text-field-wrapper{padding-right:0}.mat-mdc-form-field-label-always-float .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms;opacity:1}.mat-mdc-text-field-wrapper .mat-mdc-form-field-infix .mat-mdc-floating-label{left:auto;right:auto}.mat-mdc-text-field-wrapper.mdc-text-field--outlined .mdc-text-field__input{display:inline-block}.mat-mdc-form-field .mat-mdc-text-field-wrapper.mdc-text-field .mdc-notched-outline__notch{padding-top:0}.mat-mdc-text-field-wrapper::before{content:none}.mat-mdc-form-field-subscript-wrapper{box-sizing:border-box;width:100%;position:relative}.mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-error-wrapper{position:absolute;top:0;left:0;right:0;padding:0 16px}.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-hint-wrapper,.mat-mdc-form-field-subscript-dynamic-size .mat-mdc-form-field-error-wrapper{position:static}.mat-mdc-form-field-bottom-align::before{content:"";display:inline-block;height:16px}.mat-mdc-form-field-bottom-align.mat-mdc-form-field-subscript-dynamic-size::before{content:unset}.mat-mdc-form-field-hint-end{order:1}.mat-mdc-form-field-hint-wrapper{display:flex}.mat-mdc-form-field-hint-spacer{flex:1 0 1em}.mat-mdc-form-field-error{display:block}.mat-mdc-form-field-focus-overlay{top:0;left:0;right:0;bottom:0;position:absolute;opacity:0;pointer-events:none}select.mat-mdc-form-field-input-control{-moz-appearance:none;-webkit-appearance:none;background-color:rgba(0,0,0,0);display:inline-flex;box-sizing:border-box}select.mat-mdc-form-field-input-control:not(:disabled){cursor:pointer}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{content:"";width:0;height:0;border-left:5px solid rgba(0,0,0,0);border-right:5px solid rgba(0,0,0,0);border-top:5px solid;position:absolute;right:0;top:50%;margin-top:-2.5px;pointer-events:none}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-infix::after{right:auto;left:0}.mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:15px}[dir=rtl] .mat-mdc-form-field-type-mat-native-select .mat-mdc-form-field-input-control{padding-right:0;padding-left:15px}.cdk-high-contrast-active .mat-form-field-appearance-fill .mat-mdc-text-field-wrapper{outline:solid 1px}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-form-field-disabled .mat-mdc-text-field-wrapper{outline-color:GrayText}.cdk-high-contrast-active .mat-form-field-appearance-fill.mat-focused .mat-mdc-text-field-wrapper{outline:dashed 3px}.cdk-high-contrast-active .mat-mdc-form-field.mat-focused .mdc-notched-outline{border:dashed 3px}.mat-mdc-form-field{--mat-mdc-form-field-floating-label-scale: 0.75;display:inline-flex;flex-direction:column;min-width:0;text-align:left}[dir=rtl] .mat-mdc-form-field{text-align:right}.mat-mdc-form-field-flex{display:inline-flex;align-items:baseline;box-sizing:border-box;width:100%}.mat-mdc-text-field-wrapper{width:100%}.mat-mdc-form-field-icon-prefix,.mat-mdc-form-field-icon-suffix{align-self:center;line-height:0;pointer-events:auto}.mat-mdc-form-field-icon-prefix,[dir=rtl] .mat-mdc-form-field-icon-suffix{padding:0 4px 0 0}.mat-mdc-form-field-icon-suffix,[dir=rtl] .mat-mdc-form-field-icon-prefix{padding:0 0 0 4px}.mat-mdc-form-field-icon-prefix>.mat-icon,.mat-mdc-form-field-icon-suffix>.mat-icon{padding:12px;box-sizing:content-box}.mat-mdc-form-field-subscript-wrapper .mat-icon,.mat-mdc-form-field label .mat-icon{width:1em;height:1em;font-size:inherit}.mat-mdc-form-field-infix{flex:auto;min-width:0;width:180px;position:relative;box-sizing:border-box}.mat-mdc-form-field .mdc-notched-outline__notch{margin-left:-1px;-webkit-clip-path:inset(-9em -999em -9em 1px);clip-path:inset(-9em -999em -9em 1px)}[dir=rtl] .mat-mdc-form-field .mdc-notched-outline__notch{margin-left:0;margin-right:-1px;-webkit-clip-path:inset(-9em 1px -9em -999em);clip-path:inset(-9em 1px -9em -999em)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition:opacity 67ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input::placeholder{transition-delay:40ms;transition-duration:110ms}}@media all{.mdc-text-field--no-label .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder,.mdc-text-field--focused .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__input:-ms-input-placeholder{transition-delay:40ms;transition-duration:110ms}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field__affix{transition:opacity 150ms 0ms cubic-bezier(0.4, 0, 0.2, 1)}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled.mdc-ripple-upgraded--background-focused .mdc-text-field__ripple::before,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--filled:not(.mdc-ripple-upgraded):focus .mdc-text-field__ripple::before{transition-duration:75ms}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea{transition:none}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--filled .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-filled 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-filled{0%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-10.25px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-10.25px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-10.25px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--textarea.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-textarea-outlined 250ms 1}@keyframes mdc-floating-label-shake-float-above-textarea-outlined{0%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-24.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-24.75px) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-24.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon{0%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - 32px)) translateY(-34.75px) scale(0.75)}}[dir=rtl] .mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined .mdc-floating-label--shake,.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-text-field--with-leading-icon.mdc-text-field--outlined[dir=rtl] .mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-text-field-outlined-leading-icon 250ms 1}@keyframes mdc-floating-label-shake-float-above-text-field-outlined-leading-icon-rtl{0%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - -32px)) translateY(-34.75px) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - -32px)) translateY(-34.75px) scale(0.75)}100%{transform:translateX(calc(0 - -32px)) translateY(-34.75px) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-floating-label{transition:transform 150ms cubic-bezier(0.4, 0, 0.2, 1),color 150ms cubic-bezier(0.4, 0, 0.2, 1)}.mdc-floating-label--shake{animation:mdc-floating-label-shake-float-above-standard 250ms 1}@keyframes mdc-floating-label-shake-float-above-standard{0%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}33%{animation-timing-function:cubic-bezier(0.5, 0, 0.701732, 0.495819);transform:translateX(calc(4% - 0%)) translateY(-106%) scale(0.75)}66%{animation-timing-function:cubic-bezier(0.302435, 0.381352, 0.55, 0.956352);transform:translateX(calc(-4% - 0%)) translateY(-106%) scale(0.75)}100%{transform:translateX(calc(0 - 0%)) translateY(-106%) scale(0.75)}}.mat-mdc-form-field:not(.mat-form-field-no-animations) .mdc-line-ripple::after{transition:transform 180ms cubic-bezier(0.4, 0, 0.2, 1),opacity 180ms cubic-bezier(0.4, 0, 0.2, 1)}'],encapsulation:2,data:{animation:[ve.transitionMessages]},changeDetection:0}),F})(),Ye=(()=>{class F{}return F.\u0275fac=function(te){return new(te||F)},F.\u0275mod=c.oAB({type:F}),F.\u0275inj=c.cJS({imports:[ye.BQ,fe.ez,Z.Q8,ye.BQ]}),F})()},4144:(ze,me,b)=>{b.d(me,{Nt:()=>pt,c:()=>_t});var c=b(1281),o=b(3353),M=b(1571),re=b(515),Q=b(7579);const H=(0,o.i$)({passive:!0});let fe=(()=>{class ne{constructor(j,$){this._platform=j,this._ngZone=$,this._monitoredElements=new Map}monitor(j){if(!this._platform.isBrowser)return re.E;const $=(0,c.fI)(j),ee=this._monitoredElements.get($);if(ee)return ee.subject;const ae=new Q.x,Pe="cdk-text-field-autofilled",de=be=>{"cdk-text-field-autofill-start"!==be.animationName||$.classList.contains(Pe)?"cdk-text-field-autofill-end"===be.animationName&&$.classList.contains(Pe)&&($.classList.remove(Pe),this._ngZone.run(()=>ae.next({target:be.target,isAutofilled:!1}))):($.classList.add(Pe),this._ngZone.run(()=>ae.next({target:be.target,isAutofilled:!0})))};return this._ngZone.runOutsideAngular(()=>{$.addEventListener("animationstart",de,H),$.classList.add("cdk-text-field-autofill-monitored")}),this._monitoredElements.set($,{subject:ae,unlisten:()=>{$.removeEventListener("animationstart",de,H)}}),ae}stopMonitoring(j){const $=(0,c.fI)(j),ee=this._monitoredElements.get($);ee&&(ee.unlisten(),ee.subject.complete(),$.classList.remove("cdk-text-field-autofill-monitored"),$.classList.remove("cdk-text-field-autofilled"),this._monitoredElements.delete($))}ngOnDestroy(){this._monitoredElements.forEach((j,$)=>this.stopMonitoring($))}}return ne.\u0275fac=function(j){return new(j||ne)(M.LFG(o.t4),M.LFG(M.R0b))},ne.\u0275prov=M.Yz7({token:ne,factory:ne.\u0275fac,providedIn:"root"}),ne})(),Z=(()=>{class ne{}return ne.\u0275fac=function(j){return new(j||ne)},ne.\u0275mod=M.oAB({type:ne}),ne.\u0275inj=M.cJS({}),ne})();var ye=b(433),se=b(3238),Ee=b(9549);const Ie=new M.OlP("MAT_INPUT_VALUE_ACCESSOR"),Be=["button","checkbox","file","hidden","image","radio","range","reset","submit"];let Ve=0;const Je=(0,se.FD)(class{constructor(ne,q,j,$){this._defaultErrorStateMatcher=ne,this._parentForm=q,this._parentFormGroup=j,this.ngControl=$,this.stateChanges=new Q.x}});let pt=(()=>{class ne extends Je{get disabled(){return this._disabled}set disabled(j){this._disabled=(0,c.Ig)(j),this.focused&&(this.focused=!1,this.stateChanges.next())}get id(){return this._id}set id(j){this._id=j||this._uid}get required(){var j,$,ee,ae;return null!==(j=null!==($=this._required)&&void 0!==$?$:null===(ee=this.ngControl)||void 0===ee||null===(ae=ee.control)||void 0===ae?void 0:ae.hasValidator(ye.kI.required))&&void 0!==j&&j}set required(j){this._required=(0,c.Ig)(j)}get type(){return this._type}set type(j){this._type=j||"text",this._validateType(),!this._isTextarea&&(0,o.qK)().has(this._type)&&(this._elementRef.nativeElement.type=this._type)}get value(){return this._inputValueAccessor.value}set value(j){j!==this.value&&(this._inputValueAccessor.value=j,this.stateChanges.next())}get readonly(){return this._readonly}set readonly(j){this._readonly=(0,c.Ig)(j)}constructor(j,$,ee,ae,Pe,de,be,Fe,ke,Xe){super(de,ae,Pe,ee),this._elementRef=j,this._platform=$,this._autofillMonitor=Fe,this._formField=Xe,this._uid="mat-input-"+Ve++,this.focused=!1,this.stateChanges=new Q.x,this.controlType="mat-input",this.autofilled=!1,this._disabled=!1,this._type="text",this._readonly=!1,this._neverEmptyInputTypes=["date","datetime","datetime-local","month","time","week"].filter(At=>(0,o.qK)().has(At)),this._iOSKeyupListener=At=>{const ot=At.target;!ot.value&&0===ot.selectionStart&&0===ot.selectionEnd&&(ot.setSelectionRange(1,1),ot.setSelectionRange(0,0))};const $e=this._elementRef.nativeElement,bt=$e.nodeName.toLowerCase();this._inputValueAccessor=be||$e,this._previousNativeValue=this.value,this.id=this.id,$.IOS&&ke.runOutsideAngular(()=>{j.nativeElement.addEventListener("keyup",this._iOSKeyupListener)}),this._isServer=!this._platform.isBrowser,this._isNativeSelect="select"===bt,this._isTextarea="textarea"===bt,this._isInFormField=!!Xe,this._isNativeSelect&&(this.controlType=$e.multiple?"mat-native-select-multiple":"mat-native-select")}ngAfterViewInit(){this._platform.isBrowser&&this._autofillMonitor.monitor(this._elementRef.nativeElement).subscribe(j=>{this.autofilled=j.isAutofilled,this.stateChanges.next()})}ngOnChanges(){this.stateChanges.next()}ngOnDestroy(){this.stateChanges.complete(),this._platform.isBrowser&&this._autofillMonitor.stopMonitoring(this._elementRef.nativeElement),this._platform.IOS&&this._elementRef.nativeElement.removeEventListener("keyup",this._iOSKeyupListener)}ngDoCheck(){this.ngControl&&(this.updateErrorState(),null!==this.ngControl.disabled&&this.ngControl.disabled!==this.disabled&&(this.disabled=this.ngControl.disabled,this.stateChanges.next())),this._dirtyCheckNativeValue(),this._dirtyCheckPlaceholder()}focus(j){this._elementRef.nativeElement.focus(j)}_focusChanged(j){j!==this.focused&&(this.focused=j,this.stateChanges.next())}_onInput(){}_dirtyCheckNativeValue(){const j=this._elementRef.nativeElement.value;this._previousNativeValue!==j&&(this._previousNativeValue=j,this.stateChanges.next())}_dirtyCheckPlaceholder(){const j=this._getPlaceholder();if(j!==this._previousPlaceholder){const $=this._elementRef.nativeElement;this._previousPlaceholder=j,j?$.setAttribute("placeholder",j):$.removeAttribute("placeholder")}}_getPlaceholder(){return this.placeholder||null}_validateType(){Be.indexOf(this._type)}_isNeverEmpty(){return this._neverEmptyInputTypes.indexOf(this._type)>-1}_isBadInput(){let j=this._elementRef.nativeElement.validity;return j&&j.badInput}get empty(){return!(this._isNeverEmpty()||this._elementRef.nativeElement.value||this._isBadInput()||this.autofilled)}get shouldLabelFloat(){if(this._isNativeSelect){const j=this._elementRef.nativeElement,$=j.options[0];return this.focused||j.multiple||!this.empty||!!(j.selectedIndex>-1&&$&&$.label)}return this.focused||!this.empty}setDescribedByIds(j){j.length?this._elementRef.nativeElement.setAttribute("aria-describedby",j.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focused||this.focus()}_isInlineSelect(){const j=this._elementRef.nativeElement;return this._isNativeSelect&&(j.multiple||j.size>1)}}return ne.\u0275fac=function(j){return new(j||ne)(M.Y36(M.SBq),M.Y36(o.t4),M.Y36(ye.a5,10),M.Y36(ye.F,8),M.Y36(ye.sg,8),M.Y36(se.rD),M.Y36(Ie,10),M.Y36(fe),M.Y36(M.R0b),M.Y36(Ee.G_,8))},ne.\u0275dir=M.lG2({type:ne,selectors:[["input","matInput",""],["textarea","matInput",""],["select","matNativeControl",""],["input","matNativeControl",""],["textarea","matNativeControl",""]],hostAttrs:[1,"mat-mdc-input-element"],hostVars:18,hostBindings:function(j,$){1&j&&M.NdJ("focus",function(){return $._focusChanged(!0)})("blur",function(){return $._focusChanged(!1)})("input",function(){return $._onInput()}),2&j&&(M.Ikx("id",$.id)("disabled",$.disabled)("required",$.required),M.uIk("name",$.name||null)("readonly",$.readonly&&!$._isNativeSelect||null)("aria-invalid",$.empty&&$.required?null:$.errorState)("aria-required",$.required)("id",$.id),M.ekj("mat-input-server",$._isServer)("mat-mdc-form-field-textarea-control",$._isInFormField&&$._isTextarea)("mat-mdc-form-field-input-control",$._isInFormField)("mdc-text-field__input",$._isInFormField)("mat-mdc-native-select-inline",$._isInlineSelect()))},inputs:{disabled:"disabled",id:"id",placeholder:"placeholder",name:"name",required:"required",type:"type",errorStateMatcher:"errorStateMatcher",userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],value:"value",readonly:"readonly"},exportAs:["matInput"],features:[M._Bn([{provide:Ee.Eo,useExisting:ne}]),M.qOj,M.TTD]}),ne})(),_t=(()=>{class ne{}return ne.\u0275fac=function(j){return new(j||ne)},ne.\u0275mod=M.oAB({type:ne}),ne.\u0275inj=M.cJS({imports:[se.BQ,Ee.lN,Ee.lN,Z,se.BQ]}),ne})()},4385:(ze,me,b)=>{b.d(me,{LD:()=>xn,gD:()=>tn});var c=b(8184),o=b(6895),M=b(1571),re=b(3238),Q=b(9549),H=b(5589),fe=b(2687),Se=b(445),ie=b(1281),Z=b(5017),ye=b(9521),se=b(433),Ee=b(7579),we=b(9770),Ie=b(6451),Be=b(8675),Ve=b(3900),Je=b(5698),pt=b(9300),_t=b(4004),ne=b(1884),q=b(2722),j=b(7340);const $=["trigger"],ee=["panel"];function ae(Ct,Ht){if(1&Ct&&(M.TgZ(0,"span",10),M._uU(1),M.qZA()),2&Ct){const oe=M.oxw();M.xp6(1),M.Oqu(oe.placeholder)}}function Pe(Ct,Ht){if(1&Ct&&(M.TgZ(0,"span",14),M._uU(1),M.qZA()),2&Ct){const oe=M.oxw(2);M.xp6(1),M.Oqu(oe.triggerValue)}}function de(Ct,Ht){1&Ct&&M.Hsn(0,0,["*ngSwitchCase","true"])}function be(Ct,Ht){if(1&Ct&&(M.TgZ(0,"span",11),M.YNc(1,Pe,2,1,"span",12),M.YNc(2,de,1,0,"ng-content",13),M.qZA()),2&Ct){const oe=M.oxw();M.Q6J("ngSwitch",!!oe.customTrigger),M.xp6(2),M.Q6J("ngSwitchCase",!0)}}function Fe(Ct,Ht){if(1&Ct){const oe=M.EpF();M.O4$(),M.kcU(),M.TgZ(0,"div",15,16),M.NdJ("@transformPanel.done",function(G){M.CHM(oe);const Re=M.oxw();return M.KtG(Re._panelDoneAnimatingStream.next(G.toState))})("keydown",function(G){M.CHM(oe);const Re=M.oxw();return M.KtG(Re._handleKeydown(G))}),M.Hsn(2,1),M.qZA()}if(2&Ct){const oe=M.oxw();M.Gre("mat-mdc-select-panel mdc-menu-surface mdc-menu-surface--open ",oe._getPanelTheme(),""),M.Q6J("ngClass",oe.panelClass)("@transformPanel","showing"),M.uIk("id",oe.id+"-panel")("aria-multiselectable",oe.multiple)("aria-label",oe.ariaLabel||null)("aria-labelledby",oe._getPanelAriaLabelledby())}}const ke=[[["mat-select-trigger"]],"*"],Xe=["mat-select-trigger","*"],$e={transformPanelWrap:(0,j.X$)("transformPanelWrap",[(0,j.eR)("* => void",(0,j.IO)("@transformPanel",[(0,j.pV)()],{optional:!0}))]),transformPanel:(0,j.X$)("transformPanel",[(0,j.SB)("void",(0,j.oB)({opacity:0,transform:"scale(1, 0.8)"})),(0,j.eR)("void => showing",(0,j.jt)("120ms cubic-bezier(0, 0, 0.2, 1)",(0,j.oB)({opacity:1,transform:"scale(1, 1)"}))),(0,j.eR)("* => void",(0,j.jt)("100ms linear",(0,j.oB)({opacity:0})))])};let st=0;const mt=new M.OlP("mat-select-scroll-strategy"),lt=new M.OlP("MAT_SELECT_CONFIG"),jt={provide:mt,deps:[c.aV],useFactory:function ut(Ct){return()=>Ct.scrollStrategies.reposition()}},Lt=new M.OlP("MatSelectTrigger");class yt{constructor(Ht,oe){this.source=Ht,this.value=oe}}const hn=(0,re.Kr)((0,re.sb)((0,re.Id)((0,re.FD)(class{constructor(Ct,Ht,oe,ve,G){this._elementRef=Ct,this._defaultErrorStateMatcher=Ht,this._parentForm=oe,this._parentFormGroup=ve,this.ngControl=G,this.stateChanges=new Ee.x}}))));let It=(()=>{class Ct extends hn{get focused(){return this._focused||this._panelOpen}get placeholder(){return this._placeholder}set placeholder(oe){this._placeholder=oe,this.stateChanges.next()}get required(){var oe,ve,G,Re;return null!==(oe=null!==(ve=this._required)&&void 0!==ve?ve:null===(G=this.ngControl)||void 0===G||null===(Re=G.control)||void 0===Re?void 0:Re.hasValidator(se.kI.required))&&void 0!==oe&&oe}set required(oe){this._required=(0,ie.Ig)(oe),this.stateChanges.next()}get multiple(){return this._multiple}set multiple(oe){this._multiple=(0,ie.Ig)(oe)}get disableOptionCentering(){return this._disableOptionCentering}set disableOptionCentering(oe){this._disableOptionCentering=(0,ie.Ig)(oe)}get compareWith(){return this._compareWith}set compareWith(oe){this._compareWith=oe,this._selectionModel&&this._initializeSelection()}get value(){return this._value}set value(oe){this._assignValue(oe)&&this._onChange(oe)}get typeaheadDebounceInterval(){return this._typeaheadDebounceInterval}set typeaheadDebounceInterval(oe){this._typeaheadDebounceInterval=(0,ie.su)(oe)}get id(){return this._id}set id(oe){this._id=oe||this._uid,this.stateChanges.next()}constructor(oe,ve,G,Re,tt,ue,R,K,De,Ce,Ke,it,et,_e){var Ye,F,pe;super(tt,Re,R,K,Ce),this._viewportRuler=oe,this._changeDetectorRef=ve,this._ngZone=G,this._dir=ue,this._parentFormField=De,this._liveAnnouncer=et,this._defaultOptions=_e,this._panelOpen=!1,this._compareWith=(te,ge)=>te===ge,this._uid="mat-select-"+st++,this._triggerAriaLabelledBy=null,this._destroy=new Ee.x,this._onChange=()=>{},this._onTouched=()=>{},this._valueId="mat-select-value-"+st++,this._panelDoneAnimatingStream=new Ee.x,this._overlayPanelClass=(null===(Ye=this._defaultOptions)||void 0===Ye?void 0:Ye.overlayPanelClass)||"",this._focused=!1,this.controlType="mat-select",this._multiple=!1,this._disableOptionCentering=null!==(F=null===(pe=this._defaultOptions)||void 0===pe?void 0:pe.disableOptionCentering)&&void 0!==F&&F,this.ariaLabel="",this.optionSelectionChanges=(0,we.P)(()=>{const te=this.options;return te?te.changes.pipe((0,Be.O)(te),(0,Ve.w)(()=>(0,Ie.T)(...te.map(ge=>ge.onSelectionChange)))):this._ngZone.onStable.pipe((0,Je.q)(1),(0,Ve.w)(()=>this.optionSelectionChanges))}),this.openedChange=new M.vpe,this._openedStream=this.openedChange.pipe((0,pt.h)(te=>te),(0,_t.U)(()=>{})),this._closedStream=this.openedChange.pipe((0,pt.h)(te=>!te),(0,_t.U)(()=>{})),this.selectionChange=new M.vpe,this.valueChange=new M.vpe,this.ngControl&&(this.ngControl.valueAccessor=this),null!=(null==_e?void 0:_e.typeaheadDebounceInterval)&&(this._typeaheadDebounceInterval=_e.typeaheadDebounceInterval),this._scrollStrategyFactory=it,this._scrollStrategy=this._scrollStrategyFactory(),this.tabIndex=parseInt(Ke)||0,this.id=this.id}ngOnInit(){this._selectionModel=new Z.Ov(this.multiple),this.stateChanges.next(),this._panelDoneAnimatingStream.pipe((0,ne.x)(),(0,q.R)(this._destroy)).subscribe(()=>this._panelDoneAnimating(this.panelOpen))}ngAfterContentInit(){this._initKeyManager(),this._selectionModel.changed.pipe((0,q.R)(this._destroy)).subscribe(oe=>{oe.added.forEach(ve=>ve.select()),oe.removed.forEach(ve=>ve.deselect())}),this.options.changes.pipe((0,Be.O)(null),(0,q.R)(this._destroy)).subscribe(()=>{this._resetOptions(),this._initializeSelection()})}ngDoCheck(){const oe=this._getTriggerAriaLabelledby(),ve=this.ngControl;if(oe!==this._triggerAriaLabelledBy){const G=this._elementRef.nativeElement;this._triggerAriaLabelledBy=oe,oe?G.setAttribute("aria-labelledby",oe):G.removeAttribute("aria-labelledby")}ve&&(this._previousControl!==ve.control&&(void 0!==this._previousControl&&null!==ve.disabled&&ve.disabled!==this.disabled&&(this.disabled=ve.disabled),this._previousControl=ve.control),this.updateErrorState())}ngOnChanges(oe){(oe.disabled||oe.userAriaDescribedBy)&&this.stateChanges.next(),oe.typeaheadDebounceInterval&&this._keyManager&&this._keyManager.withTypeAhead(this._typeaheadDebounceInterval)}ngOnDestroy(){var oe;null===(oe=this._keyManager)||void 0===oe||oe.destroy(),this._destroy.next(),this._destroy.complete(),this.stateChanges.complete()}toggle(){this.panelOpen?this.close():this.open()}open(){this._canOpen()&&(this._panelOpen=!0,this._keyManager.withHorizontalOrientation(null),this._highlightCorrectOption(),this._changeDetectorRef.markForCheck())}close(){this._panelOpen&&(this._panelOpen=!1,this._keyManager.withHorizontalOrientation(this._isRtl()?"rtl":"ltr"),this._changeDetectorRef.markForCheck(),this._onTouched())}writeValue(oe){this._assignValue(oe)}registerOnChange(oe){this._onChange=oe}registerOnTouched(oe){this._onTouched=oe}setDisabledState(oe){this.disabled=oe,this._changeDetectorRef.markForCheck(),this.stateChanges.next()}get panelOpen(){return this._panelOpen}get selected(){var oe,ve;return this.multiple?(null===(oe=this._selectionModel)||void 0===oe?void 0:oe.selected)||[]:null===(ve=this._selectionModel)||void 0===ve?void 0:ve.selected[0]}get triggerValue(){if(this.empty)return"";if(this._multiple){const oe=this._selectionModel.selected.map(ve=>ve.viewValue);return this._isRtl()&&oe.reverse(),oe.join(", ")}return this._selectionModel.selected[0].viewValue}_isRtl(){return!!this._dir&&"rtl"===this._dir.value}_handleKeydown(oe){this.disabled||(this.panelOpen?this._handleOpenKeydown(oe):this._handleClosedKeydown(oe))}_handleClosedKeydown(oe){const ve=oe.keyCode,G=ve===ye.JH||ve===ye.LH||ve===ye.oh||ve===ye.SV,Re=ve===ye.K5||ve===ye.L_,tt=this._keyManager;if(!tt.isTyping()&&Re&&!(0,ye.Vb)(oe)||(this.multiple||oe.altKey)&&G)oe.preventDefault(),this.open();else if(!this.multiple){const ue=this.selected;tt.onKeydown(oe);const R=this.selected;R&&ue!==R&&this._liveAnnouncer.announce(R.viewValue,1e4)}}_handleOpenKeydown(oe){const ve=this._keyManager,G=oe.keyCode,Re=G===ye.JH||G===ye.LH,tt=ve.isTyping();if(Re&&oe.altKey)oe.preventDefault(),this.close();else if(tt||G!==ye.K5&&G!==ye.L_||!ve.activeItem||(0,ye.Vb)(oe))if(!tt&&this._multiple&&G===ye.A&&oe.ctrlKey){oe.preventDefault();const ue=this.options.some(R=>!R.disabled&&!R.selected);this.options.forEach(R=>{R.disabled||(ue?R.select():R.deselect())})}else{const ue=ve.activeItemIndex;ve.onKeydown(oe),this._multiple&&Re&&oe.shiftKey&&ve.activeItem&&ve.activeItemIndex!==ue&&ve.activeItem._selectViaInteraction()}else oe.preventDefault(),ve.activeItem._selectViaInteraction()}_onFocus(){this.disabled||(this._focused=!0,this.stateChanges.next())}_onBlur(){var oe;this._focused=!1,null===(oe=this._keyManager)||void 0===oe||oe.cancelTypeahead(),!this.disabled&&!this.panelOpen&&(this._onTouched(),this._changeDetectorRef.markForCheck(),this.stateChanges.next())}_onAttached(){this._overlayDir.positionChange.pipe((0,Je.q)(1)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this._positioningSettled()})}_getPanelTheme(){return this._parentFormField?`mat-${this._parentFormField.color}`:""}get empty(){return!this._selectionModel||this._selectionModel.isEmpty()}_initializeSelection(){Promise.resolve().then(()=>{this.ngControl&&(this._value=this.ngControl.value),this._setSelectionByValue(this._value),this.stateChanges.next()})}_setSelectionByValue(oe){if(this._selectionModel.selected.forEach(ve=>ve.setInactiveStyles()),this._selectionModel.clear(),this.multiple&&oe)Array.isArray(oe),oe.forEach(ve=>this._selectOptionByValue(ve)),this._sortValues();else{const ve=this._selectOptionByValue(oe);ve?this._keyManager.updateActiveItem(ve):this.panelOpen||this._keyManager.updateActiveItem(-1)}this._changeDetectorRef.markForCheck()}_selectOptionByValue(oe){const ve=this.options.find(G=>{if(this._selectionModel.isSelected(G))return!1;try{return null!=G.value&&this._compareWith(G.value,oe)}catch{return!1}});return ve&&this._selectionModel.select(ve),ve}_assignValue(oe){return!!(oe!==this._value||this._multiple&&Array.isArray(oe))&&(this.options&&this._setSelectionByValue(oe),this._value=oe,!0)}_initKeyManager(){this._keyManager=new fe.s1(this.options).withTypeAhead(this._typeaheadDebounceInterval).withVerticalOrientation().withHorizontalOrientation(this._isRtl()?"rtl":"ltr").withHomeAndEnd().withPageUpDown().withAllowedModifierKeys(["shiftKey"]),this._keyManager.tabOut.subscribe(()=>{this.panelOpen&&(!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction(),this.focus(),this.close())}),this._keyManager.change.subscribe(()=>{this._panelOpen&&this.panel?this._scrollOptionIntoView(this._keyManager.activeItemIndex||0):!this._panelOpen&&!this.multiple&&this._keyManager.activeItem&&this._keyManager.activeItem._selectViaInteraction()})}_resetOptions(){const oe=(0,Ie.T)(this.options.changes,this._destroy);this.optionSelectionChanges.pipe((0,q.R)(oe)).subscribe(ve=>{this._onSelect(ve.source,ve.isUserInput),ve.isUserInput&&!this.multiple&&this._panelOpen&&(this.close(),this.focus())}),(0,Ie.T)(...this.options.map(ve=>ve._stateChanges)).pipe((0,q.R)(oe)).subscribe(()=>{this._changeDetectorRef.detectChanges(),this.stateChanges.next()})}_onSelect(oe,ve){const G=this._selectionModel.isSelected(oe);null!=oe.value||this._multiple?(G!==oe.selected&&(oe.selected?this._selectionModel.select(oe):this._selectionModel.deselect(oe)),ve&&this._keyManager.setActiveItem(oe),this.multiple&&(this._sortValues(),ve&&this.focus())):(oe.deselect(),this._selectionModel.clear(),null!=this.value&&this._propagateChanges(oe.value)),G!==this._selectionModel.isSelected(oe)&&this._propagateChanges(),this.stateChanges.next()}_sortValues(){if(this.multiple){const oe=this.options.toArray();this._selectionModel.sort((ve,G)=>this.sortComparator?this.sortComparator(ve,G,oe):oe.indexOf(ve)-oe.indexOf(G)),this.stateChanges.next()}}_propagateChanges(oe){let ve=null;ve=this.multiple?this.selected.map(G=>G.value):this.selected?this.selected.value:oe,this._value=ve,this.valueChange.emit(ve),this._onChange(ve),this.selectionChange.emit(this._getChangeEvent(ve)),this._changeDetectorRef.markForCheck()}_highlightCorrectOption(){this._keyManager&&(this.empty?this._keyManager.setFirstItemActive():this._keyManager.setActiveItem(this._selectionModel.selected[0]))}_canOpen(){var oe;return!this._panelOpen&&!this.disabled&&(null===(oe=this.options)||void 0===oe?void 0:oe.length)>0}focus(oe){this._elementRef.nativeElement.focus(oe)}_getPanelAriaLabelledby(){var oe;if(this.ariaLabel)return null;const ve=null===(oe=this._parentFormField)||void 0===oe?void 0:oe.getLabelId();return this.ariaLabelledby?(ve?ve+" ":"")+this.ariaLabelledby:ve}_getAriaActiveDescendant(){return this.panelOpen&&this._keyManager&&this._keyManager.activeItem?this._keyManager.activeItem.id:null}_getTriggerAriaLabelledby(){var oe;if(this.ariaLabel)return null;const ve=null===(oe=this._parentFormField)||void 0===oe?void 0:oe.getLabelId();let G=(ve?ve+" ":"")+this._valueId;return this.ariaLabelledby&&(G+=" "+this.ariaLabelledby),G}_panelDoneAnimating(oe){this.openedChange.emit(oe)}setDescribedByIds(oe){oe.length?this._elementRef.nativeElement.setAttribute("aria-describedby",oe.join(" ")):this._elementRef.nativeElement.removeAttribute("aria-describedby")}onContainerClick(){this.focus(),this.open()}get shouldLabelFloat(){return this._panelOpen||!this.empty||this._focused&&!!this._placeholder}}return Ct.\u0275fac=function(oe){return new(oe||Ct)(M.Y36(H.rL),M.Y36(M.sBO),M.Y36(M.R0b),M.Y36(re.rD),M.Y36(M.SBq),M.Y36(Se.Is,8),M.Y36(se.F,8),M.Y36(se.sg,8),M.Y36(Q.G_,8),M.Y36(se.a5,10),M.$8M("tabindex"),M.Y36(mt),M.Y36(fe.Kd),M.Y36(lt,8))},Ct.\u0275dir=M.lG2({type:Ct,viewQuery:function(oe,ve){if(1&oe&&(M.Gf($,5),M.Gf(ee,5),M.Gf(c.pI,5)),2&oe){let G;M.iGM(G=M.CRH())&&(ve.trigger=G.first),M.iGM(G=M.CRH())&&(ve.panel=G.first),M.iGM(G=M.CRH())&&(ve._overlayDir=G.first)}},inputs:{userAriaDescribedBy:["aria-describedby","userAriaDescribedBy"],panelClass:"panelClass",placeholder:"placeholder",required:"required",multiple:"multiple",disableOptionCentering:"disableOptionCentering",compareWith:"compareWith",value:"value",ariaLabel:["aria-label","ariaLabel"],ariaLabelledby:["aria-labelledby","ariaLabelledby"],errorStateMatcher:"errorStateMatcher",typeaheadDebounceInterval:"typeaheadDebounceInterval",sortComparator:"sortComparator",id:"id"},outputs:{openedChange:"openedChange",_openedStream:"opened",_closedStream:"closed",selectionChange:"selectionChange",valueChange:"valueChange"},features:[M.qOj,M.TTD]}),Ct})(),tn=(()=>{class Ct extends It{constructor(){super(...arguments),this._positions=[{originX:"start",originY:"bottom",overlayX:"start",overlayY:"top"},{originX:"start",originY:"top",overlayX:"start",overlayY:"bottom",panelClass:"mat-mdc-select-panel-above"}]}get shouldLabelFloat(){return this.panelOpen||!this.empty||this.focused&&!!this.placeholder}ngOnInit(){super.ngOnInit(),this._viewportRuler.change().pipe((0,q.R)(this._destroy)).subscribe(()=>{this.panelOpen&&(this._overlayWidth=this._getOverlayWidth(),this._changeDetectorRef.detectChanges())})}ngAfterViewInit(){this._parentFormField&&(this._preferredOverlayOrigin=this._parentFormField.getConnectedOverlayOrigin())}open(){this._overlayWidth=this._getOverlayWidth(),super.open(),this.stateChanges.next()}close(){super.close(),this.stateChanges.next()}_scrollOptionIntoView(oe){const ve=this.options.toArray()[oe];if(ve){const G=this.panel.nativeElement,Re=(0,re.CB)(oe,this.options,this.optionGroups),tt=ve._getHostElement();G.scrollTop=0===oe&&1===Re?0:(0,re.jH)(tt.offsetTop,tt.offsetHeight,G.scrollTop,G.offsetHeight)}}_positioningSettled(){this._scrollOptionIntoView(this._keyManager.activeItemIndex||0)}_getChangeEvent(oe){return new yt(this,oe)}_getOverlayWidth(){return(this._preferredOverlayOrigin instanceof c.xu?this._preferredOverlayOrigin.elementRef:this._preferredOverlayOrigin||this._elementRef).nativeElement.getBoundingClientRect().width}}return Ct.\u0275fac=function(){let Ht;return function(ve){return(Ht||(Ht=M.n5z(Ct)))(ve||Ct)}}(),Ct.\u0275cmp=M.Xpm({type:Ct,selectors:[["mat-select"]],contentQueries:function(oe,ve,G){if(1&oe&&(M.Suo(G,Lt,5),M.Suo(G,re.ey,5),M.Suo(G,re.K7,5)),2&oe){let Re;M.iGM(Re=M.CRH())&&(ve.customTrigger=Re.first),M.iGM(Re=M.CRH())&&(ve.options=Re),M.iGM(Re=M.CRH())&&(ve.optionGroups=Re)}},hostAttrs:["role","combobox","aria-autocomplete","none","aria-haspopup","listbox",1,"mat-mdc-select"],hostVars:19,hostBindings:function(oe,ve){1&oe&&M.NdJ("keydown",function(Re){return ve._handleKeydown(Re)})("focus",function(){return ve._onFocus()})("blur",function(){return ve._onBlur()}),2&oe&&(M.uIk("id",ve.id)("tabindex",ve.tabIndex)("aria-controls",ve.panelOpen?ve.id+"-panel":null)("aria-expanded",ve.panelOpen)("aria-label",ve.ariaLabel||null)("aria-required",ve.required.toString())("aria-disabled",ve.disabled.toString())("aria-invalid",ve.errorState)("aria-activedescendant",ve._getAriaActiveDescendant()),M.ekj("mat-mdc-select-disabled",ve.disabled)("mat-mdc-select-invalid",ve.errorState)("mat-mdc-select-required",ve.required)("mat-mdc-select-empty",ve.empty)("mat-mdc-select-multiple",ve.multiple))},inputs:{disabled:"disabled",disableRipple:"disableRipple",tabIndex:"tabIndex"},exportAs:["matSelect"],features:[M._Bn([{provide:Q.Eo,useExisting:Ct},{provide:re.HF,useExisting:Ct}]),M.qOj],ngContentSelectors:Xe,decls:11,vars:11,consts:[["cdk-overlay-origin","",1,"mat-mdc-select-trigger",3,"click"],["fallbackOverlayOrigin","cdkOverlayOrigin","trigger",""],[1,"mat-mdc-select-value",3,"ngSwitch"],["class","mat-mdc-select-placeholder mat-mdc-select-min-line",4,"ngSwitchCase"],["class","mat-mdc-select-value-text",3,"ngSwitch",4,"ngSwitchCase"],[1,"mat-mdc-select-arrow-wrapper"],[1,"mat-mdc-select-arrow"],["viewBox","0 0 24 24","width","24px","height","24px","focusable","false"],["d","M7 10l5 5 5-5z"],["cdk-connected-overlay","","cdkConnectedOverlayLockPosition","","cdkConnectedOverlayHasBackdrop","","cdkConnectedOverlayBackdropClass","cdk-overlay-transparent-backdrop",3,"cdkConnectedOverlayPanelClass","cdkConnectedOverlayScrollStrategy","cdkConnectedOverlayOrigin","cdkConnectedOverlayOpen","cdkConnectedOverlayPositions","cdkConnectedOverlayWidth","backdropClick","attach","detach"],[1,"mat-mdc-select-placeholder","mat-mdc-select-min-line"],[1,"mat-mdc-select-value-text",3,"ngSwitch"],["class","mat-mdc-select-min-line",4,"ngSwitchDefault"],[4,"ngSwitchCase"],[1,"mat-mdc-select-min-line"],["role","listbox","tabindex","-1",3,"ngClass","keydown"],["panel",""]],template:function(oe,ve){if(1&oe&&(M.F$t(ke),M.TgZ(0,"div",0,1),M.NdJ("click",function(){return ve.toggle()}),M.TgZ(3,"div",2),M.YNc(4,ae,2,1,"span",3),M.YNc(5,be,3,2,"span",4),M.qZA(),M.TgZ(6,"div",5)(7,"div",6),M.O4$(),M.TgZ(8,"svg",7),M._UZ(9,"path",8),M.qZA()()()(),M.YNc(10,Fe,3,9,"ng-template",9),M.NdJ("backdropClick",function(){return ve.close()})("attach",function(){return ve._onAttached()})("detach",function(){return ve.close()})),2&oe){const G=M.MAs(1);M.uIk("aria-owns",ve.panelOpen?ve.id+"-panel":null),M.xp6(3),M.Q6J("ngSwitch",ve.empty),M.uIk("id",ve._valueId),M.xp6(1),M.Q6J("ngSwitchCase",!0),M.xp6(1),M.Q6J("ngSwitchCase",!1),M.xp6(5),M.Q6J("cdkConnectedOverlayPanelClass",ve._overlayPanelClass)("cdkConnectedOverlayScrollStrategy",ve._scrollStrategy)("cdkConnectedOverlayOrigin",ve._preferredOverlayOrigin||G)("cdkConnectedOverlayOpen",ve.panelOpen)("cdkConnectedOverlayPositions",ve._positions)("cdkConnectedOverlayWidth",ve._overlayWidth)}},dependencies:[o.mk,o.RF,o.n9,o.ED,c.pI,c.xu],styles:['.mdc-menu-surface{display:none;position:absolute;box-sizing:border-box;max-width:calc(100vw - 32px);max-width:var(--mdc-menu-max-width, calc(100vw - 32px));max-height:calc(100vh - 32px);max-height:var(--mdc-menu-max-height, calc(100vh - 32px));margin:0;padding:0;transform:scale(1);transform-origin:top left;opacity:0;overflow:auto;will-change:transform,opacity;z-index:8;border-radius:4px;border-radius:var(--mdc-shape-medium, 4px);transform-origin-left:top left;transform-origin-right:top right}.mdc-menu-surface:focus{outline:none}.mdc-menu-surface--animating-open{display:inline-block;transform:scale(0.8);opacity:0}.mdc-menu-surface--open{display:inline-block;transform:scale(1);opacity:1}.mdc-menu-surface--animating-closed{display:inline-block;opacity:0}[dir=rtl] .mdc-menu-surface,.mdc-menu-surface[dir=rtl]{transform-origin-left:top right;transform-origin-right:top left}.mdc-menu-surface--anchor{position:relative;overflow:visible}.mdc-menu-surface--fixed{position:fixed}.mdc-menu-surface--fullwidth{width:100%}.mat-mdc-select{display:inline-block;width:100%;outline:none}.mat-mdc-select-trigger{display:inline-flex;align-items:center;cursor:pointer;position:relative;box-sizing:border-box;width:100%}.mat-mdc-select-disabled .mat-mdc-select-trigger{-webkit-user-select:none;user-select:none;cursor:default}.mat-mdc-select-value{width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.mat-mdc-select-value-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mat-mdc-select-arrow-wrapper{height:24px;flex-shrink:0;display:inline-flex;align-items:center}.mat-form-field-appearance-fill .mat-mdc-select-arrow-wrapper{transform:translateY(-8px)}.mat-form-field-appearance-fill .mdc-text-field--no-label .mat-mdc-select-arrow-wrapper{transform:none}.mat-mdc-select-arrow{width:10px;height:5px;position:relative}.mat-mdc-select-arrow svg{fill:currentColor;position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:CanvasText}.mat-mdc-select-disabled .cdk-high-contrast-active .mat-mdc-select-arrow svg{fill:GrayText}.mdc-menu-surface.mat-mdc-select-panel{width:100%;max-height:275px;position:static;outline:0;margin:0;padding:8px 0;list-style-type:none}.mdc-menu-surface.mat-mdc-select-panel:focus{outline:none}.cdk-high-contrast-active .mdc-menu-surface.mat-mdc-select-panel{outline:solid 1px}.cdk-overlay-pane:not(.mat-mdc-select-panel-above) .mdc-menu-surface.mat-mdc-select-panel{border-top-left-radius:0;border-top-right-radius:0;transform-origin:top center}.mat-mdc-select-panel-above .mdc-menu-surface.mat-mdc-select-panel{border-bottom-left-radius:0;border-bottom-right-radius:0;transform-origin:bottom center}.mat-mdc-select-placeholder{transition:color 400ms 133.3333333333ms cubic-bezier(0.25, 0.8, 0.25, 1)}._mat-animation-noopable .mat-mdc-select-placeholder{transition:none}.mat-form-field-hide-placeholder .mat-mdc-select-placeholder{color:rgba(0,0,0,0);-webkit-text-fill-color:rgba(0,0,0,0);transition:none;display:block}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mat-mdc-floating-label{max-width:calc(100% - 18px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-fill .mdc-floating-label--float-above{max-width:calc(100% / 0.75 - 24px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-notched-outline__notch{max-width:calc(100% - 60px)}.mat-mdc-form-field-type-mat-select.mat-form-field-appearance-outline .mdc-text-field--label-floating .mdc-notched-outline__notch{max-width:calc(100% - 24px)}.mat-mdc-select-min-line:empty::before{content:" ";white-space:pre;width:1px;display:inline-block;visibility:hidden}'],encapsulation:2,data:{animation:[$e.transformPanel]},changeDetection:0}),Ct})(),xn=(()=>{class Ct{}return Ct.\u0275fac=function(oe){return new(oe||Ct)},Ct.\u0275mod=M.oAB({type:Ct}),Ct.\u0275inj=M.cJS({providers:[jt],imports:[o.ez,c.U8,re.Ng,re.BQ,H.ZD,Q.lN,re.Ng,re.BQ]}),Ct})()},1481:(ze,me,b)=>{b.d(me,{Dx:()=>Ce,H7:()=>on,b2:()=>tt,q6:()=>oe,se:()=>Fe});var c=b(6895),o=b(1571);class M extends c.w_{constructor(){super(...arguments),this.supportsDOMEvents=!0}}class re extends M{static makeCurrent(){(0,c.HT)(new re)}onAndCancel(xe,J,Ne){return xe.addEventListener(J,Ne,!1),()=>{xe.removeEventListener(J,Ne,!1)}}dispatchEvent(xe,J){xe.dispatchEvent(J)}remove(xe){xe.parentNode&&xe.parentNode.removeChild(xe)}createElement(xe,J){return(J=J||this.getDefaultDocument()).createElement(xe)}createHtmlDocument(){return document.implementation.createHTMLDocument("fakeTitle")}getDefaultDocument(){return document}isElementNode(xe){return xe.nodeType===Node.ELEMENT_NODE}isShadowRoot(xe){return xe instanceof DocumentFragment}getGlobalEventTarget(xe,J){return"window"===J?window:"document"===J?xe:"body"===J?xe.body:null}getBaseHref(xe){const J=function H(){return Q=Q||document.querySelector("base"),Q?Q.getAttribute("href"):null}();return null==J?null:function Se(Oe){fe=fe||document.createElement("a"),fe.setAttribute("href",Oe);const xe=fe.pathname;return"/"===xe.charAt(0)?xe:`/${xe}`}(J)}resetBaseElement(){Q=null}getUserAgent(){return window.navigator.userAgent}getCookie(xe){return(0,c.Mx)(document.cookie,xe)}}let fe,Q=null;const ie=new o.OlP("TRANSITION_ID"),ye=[{provide:o.ip1,useFactory:function Z(Oe,xe,J){return()=>{J.get(o.CZH).donePromise.then(()=>{const Ne=(0,c.q)(),Ge=xe.querySelectorAll(`style[ng-transition="${Oe}"]`);for(let Tt=0;Tt{class Oe{build(){return new XMLHttpRequest}}return Oe.\u0275fac=function(J){return new(J||Oe)},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();const we=new o.OlP("EventManagerPlugins");let Ie=(()=>{class Oe{constructor(J,Ne){this._zone=Ne,this._eventNameToPlugin=new Map,J.forEach(Ge=>Ge.manager=this),this._plugins=J.slice().reverse()}addEventListener(J,Ne,Ge){return this._findPluginFor(Ne).addEventListener(J,Ne,Ge)}addGlobalEventListener(J,Ne,Ge){return this._findPluginFor(Ne).addGlobalEventListener(J,Ne,Ge)}getZone(){return this._zone}_findPluginFor(J){const Ne=this._eventNameToPlugin.get(J);if(Ne)return Ne;const Ge=this._plugins;for(let Tt=0;Tt{class Oe{constructor(){this._stylesSet=new Set}addStyles(J){const Ne=new Set;J.forEach(Ge=>{this._stylesSet.has(Ge)||(this._stylesSet.add(Ge),Ne.add(Ge))}),this.onStylesAdded(Ne)}onStylesAdded(J){}getAllStyles(){return Array.from(this._stylesSet)}}return Oe.\u0275fac=function(J){return new(J||Oe)},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})(),Je=(()=>{class Oe extends Ve{constructor(J){super(),this._doc=J,this._hostNodes=new Map,this._hostNodes.set(J.head,[])}_addStylesToHost(J,Ne,Ge){J.forEach(Tt=>{const Jt=this._doc.createElement("style");Jt.textContent=Tt,Ge.push(Ne.appendChild(Jt))})}addHost(J){const Ne=[];this._addStylesToHost(this._stylesSet,J,Ne),this._hostNodes.set(J,Ne)}removeHost(J){const Ne=this._hostNodes.get(J);Ne&&Ne.forEach(pt),this._hostNodes.delete(J)}onStylesAdded(J){this._hostNodes.forEach((Ne,Ge)=>{this._addStylesToHost(J,Ge,Ne)})}ngOnDestroy(){this._hostNodes.forEach(J=>J.forEach(pt))}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();function pt(Oe){(0,c.q)().remove(Oe)}const _t={svg:"http://www.w3.org/2000/svg",xhtml:"http://www.w3.org/1999/xhtml",xlink:"http://www.w3.org/1999/xlink",xml:"http://www.w3.org/XML/1998/namespace",xmlns:"http://www.w3.org/2000/xmlns/",math:"http://www.w3.org/1998/MathML/"},ne=/%COMP%/g,j="%COMP%",$=`_nghost-${j}`,ee=`_ngcontent-${j}`;function de(Oe,xe){return xe.flat(100).map(J=>J.replace(ne,Oe))}function be(Oe){return xe=>{if("__ngUnwrap__"===xe)return Oe;!1===Oe(xe)&&(xe.preventDefault(),xe.returnValue=!1)}}let Fe=(()=>{class Oe{constructor(J,Ne,Ge){this.eventManager=J,this.sharedStylesHost=Ne,this.appId=Ge,this.rendererByCompId=new Map,this.defaultRenderer=new ke(J)}createRenderer(J,Ne){if(!J||!Ne)return this.defaultRenderer;switch(Ne.encapsulation){case o.ifc.Emulated:{let Ge=this.rendererByCompId.get(Ne.id);return Ge||(Ge=new At(this.eventManager,this.sharedStylesHost,Ne,this.appId),this.rendererByCompId.set(Ne.id,Ge)),Ge.applyToHost(J),Ge}case o.ifc.ShadowDom:return new ot(this.eventManager,this.sharedStylesHost,J,Ne);default:if(!this.rendererByCompId.has(Ne.id)){const Ge=de(Ne.id,Ne.styles);this.sharedStylesHost.addStyles(Ge),this.rendererByCompId.set(Ne.id,this.defaultRenderer)}return this.defaultRenderer}}begin(){}end(){}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(Ie),o.LFG(Je),o.LFG(o.AFp))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();class ke{constructor(xe){this.eventManager=xe,this.data=Object.create(null),this.destroyNode=null}destroy(){}createElement(xe,J){return J?document.createElementNS(_t[J]||J,xe):document.createElement(xe)}createComment(xe){return document.createComment(xe)}createText(xe){return document.createTextNode(xe)}appendChild(xe,J){(bt(xe)?xe.content:xe).appendChild(J)}insertBefore(xe,J,Ne){xe&&(bt(xe)?xe.content:xe).insertBefore(J,Ne)}removeChild(xe,J){xe&&xe.removeChild(J)}selectRootElement(xe,J){let Ne="string"==typeof xe?document.querySelector(xe):xe;if(!Ne)throw new Error(`The selector "${xe}" did not match any elements`);return J||(Ne.textContent=""),Ne}parentNode(xe){return xe.parentNode}nextSibling(xe){return xe.nextSibling}setAttribute(xe,J,Ne,Ge){if(Ge){J=Ge+":"+J;const Tt=_t[Ge];Tt?xe.setAttributeNS(Tt,J,Ne):xe.setAttribute(J,Ne)}else xe.setAttribute(J,Ne)}removeAttribute(xe,J,Ne){if(Ne){const Ge=_t[Ne];Ge?xe.removeAttributeNS(Ge,J):xe.removeAttribute(`${Ne}:${J}`)}else xe.removeAttribute(J)}addClass(xe,J){xe.classList.add(J)}removeClass(xe,J){xe.classList.remove(J)}setStyle(xe,J,Ne,Ge){Ge&(o.JOm.DashCase|o.JOm.Important)?xe.style.setProperty(J,Ne,Ge&o.JOm.Important?"important":""):xe.style[J]=Ne}removeStyle(xe,J,Ne){Ne&o.JOm.DashCase?xe.style.removeProperty(J):xe.style[J]=""}setProperty(xe,J,Ne){xe[J]=Ne}setValue(xe,J){xe.nodeValue=J}listen(xe,J,Ne){return"string"==typeof xe?this.eventManager.addGlobalEventListener(xe,J,be(Ne)):this.eventManager.addEventListener(xe,J,be(Ne))}}function bt(Oe){return"TEMPLATE"===Oe.tagName&&void 0!==Oe.content}class At extends ke{constructor(xe,J,Ne,Ge){super(xe),this.component=Ne;const Tt=de(Ge+"-"+Ne.id,Ne.styles);J.addStyles(Tt),this.contentAttr=function ae(Oe){return ee.replace(ne,Oe)}(Ge+"-"+Ne.id),this.hostAttr=function Pe(Oe){return $.replace(ne,Oe)}(Ge+"-"+Ne.id)}applyToHost(xe){super.setAttribute(xe,this.hostAttr,"")}createElement(xe,J){const Ne=super.createElement(xe,J);return super.setAttribute(Ne,this.contentAttr,""),Ne}}class ot extends ke{constructor(xe,J,Ne,Ge){super(xe),this.sharedStylesHost=J,this.hostEl=Ne,this.shadowRoot=Ne.attachShadow({mode:"open"}),this.sharedStylesHost.addHost(this.shadowRoot);const Tt=de(Ge.id,Ge.styles);for(let Jt=0;Jt{class Oe extends Be{constructor(J){super(J)}supports(J){return!0}addEventListener(J,Ne,Ge){return J.addEventListener(Ne,Ge,!1),()=>this.removeEventListener(J,Ne,Ge)}removeEventListener(J,Ne,Ge){return J.removeEventListener(Ne,Ge)}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();const mt=["alt","control","meta","shift"],ut={"\b":"Backspace","\t":"Tab","\x7f":"Delete","\x1b":"Escape",Del:"Delete",Esc:"Escape",Left:"ArrowLeft",Right:"ArrowRight",Up:"ArrowUp",Down:"ArrowDown",Menu:"ContextMenu",Scroll:"ScrollLock",Win:"OS"},lt={alt:Oe=>Oe.altKey,control:Oe=>Oe.ctrlKey,meta:Oe=>Oe.metaKey,shift:Oe=>Oe.shiftKey};let jt=(()=>{class Oe extends Be{constructor(J){super(J)}supports(J){return null!=Oe.parseEventName(J)}addEventListener(J,Ne,Ge){const Tt=Oe.parseEventName(Ne),Jt=Oe.eventCallback(Tt.fullKey,Ge,this.manager.getZone());return this.manager.getZone().runOutsideAngular(()=>(0,c.q)().onAndCancel(J,Tt.domEventName,Jt))}static parseEventName(J){const Ne=J.toLowerCase().split("."),Ge=Ne.shift();if(0===Ne.length||"keydown"!==Ge&&"keyup"!==Ge)return null;const Tt=Oe._normalizeKey(Ne.pop());let Jt="",un=Ne.indexOf("code");if(un>-1&&(Ne.splice(un,1),Jt="code."),mt.forEach(jn=>{const si=Ne.indexOf(jn);si>-1&&(Ne.splice(si,1),Jt+=jn+".")}),Jt+=Tt,0!=Ne.length||0===Tt.length)return null;const An={};return An.domEventName=Ge,An.fullKey=Jt,An}static matchEventFullKeyCode(J,Ne){let Ge=ut[J.key]||J.key,Tt="";return Ne.indexOf("code.")>-1&&(Ge=J.code,Tt="code."),!(null==Ge||!Ge)&&(Ge=Ge.toLowerCase()," "===Ge?Ge="space":"."===Ge&&(Ge="dot"),mt.forEach(Jt=>{Jt!==Ge&&(0,lt[Jt])(J)&&(Tt+=Jt+".")}),Tt+=Ge,Tt===Ne)}static eventCallback(J,Ne,Ge){return Tt=>{Oe.matchEventFullKeyCode(Tt,J)&&Ge.runGuarded(()=>Ne(Tt))}}static _normalizeKey(J){return"esc"===J?"escape":J}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:Oe.\u0275fac}),Oe})();const oe=(0,o.eFA)(o._c5,"browser",[{provide:o.Lbi,useValue:c.bD},{provide:o.g9A,useValue:function tn(){re.makeCurrent()},multi:!0},{provide:c.K0,useFactory:function Ct(){return(0,o.RDi)(document),document},deps:[]}]),ve=new o.OlP(""),G=[{provide:o.rWj,useClass:class se{addToWindow(xe){o.dqk.getAngularTestability=(Ne,Ge=!0)=>{const Tt=xe.findTestabilityInTree(Ne,Ge);if(null==Tt)throw new Error("Could not find testability for element.");return Tt},o.dqk.getAllAngularTestabilities=()=>xe.getAllTestabilities(),o.dqk.getAllAngularRootElements=()=>xe.getAllRootElements(),o.dqk.frameworkStabilizers||(o.dqk.frameworkStabilizers=[]),o.dqk.frameworkStabilizers.push(Ne=>{const Ge=o.dqk.getAllAngularTestabilities();let Tt=Ge.length,Jt=!1;const un=function(An){Jt=Jt||An,Tt--,0==Tt&&Ne(Jt)};Ge.forEach(function(An){An.whenStable(un)})})}findTestabilityInTree(xe,J,Ne){if(null==J)return null;const Ge=xe.getTestability(J);return null!=Ge?Ge:Ne?(0,c.q)().isShadowRoot(J)?this.findTestabilityInTree(xe,J.host,!0):this.findTestabilityInTree(xe,J.parentElement,!0):null}},deps:[]},{provide:o.lri,useClass:o.dDg,deps:[o.R0b,o.eoX,o.rWj]},{provide:o.dDg,useClass:o.dDg,deps:[o.R0b,o.eoX,o.rWj]}],Re=[{provide:o.zSh,useValue:"root"},{provide:o.qLn,useFactory:function xn(){return new o.qLn},deps:[]},{provide:we,useClass:st,multi:!0,deps:[c.K0,o.R0b,o.Lbi]},{provide:we,useClass:jt,multi:!0,deps:[c.K0]},{provide:Fe,useClass:Fe,deps:[Ie,Je,o.AFp]},{provide:o.FYo,useExisting:Fe},{provide:Ve,useExisting:Je},{provide:Je,useClass:Je,deps:[c.K0]},{provide:Ie,useClass:Ie,deps:[we,o.R0b]},{provide:c.JF,useClass:Ee,deps:[]},[]];let tt=(()=>{class Oe{constructor(J){}static withServerTransition(J){return{ngModule:Oe,providers:[{provide:o.AFp,useValue:J.appId},{provide:ie,useExisting:o.AFp},ye]}}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(ve,12))},Oe.\u0275mod=o.oAB({type:Oe}),Oe.\u0275inj=o.cJS({providers:[...Re,...G],imports:[c.ez,o.hGG]}),Oe})(),Ce=(()=>{class Oe{constructor(J){this._doc=J}getTitle(){return this._doc.title}setTitle(J){this._doc.title=J||""}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:function(J){let Ne=null;return Ne=J?new J:function De(){return new Ce((0,o.LFG)(c.K0))}(),Ne},providedIn:"root"}),Oe})();typeof window<"u"&&window;let on=(()=>{class Oe{}return Oe.\u0275fac=function(J){return new(J||Oe)},Oe.\u0275prov=o.Yz7({token:Oe,factory:function(J){let Ne=null;return Ne=J?new(J||Oe):o.LFG(ln),Ne},providedIn:"root"}),Oe})(),ln=(()=>{class Oe extends on{constructor(J){super(),this._doc=J}sanitize(J,Ne){if(null==Ne)return null;switch(J){case o.q3G.NONE:return Ne;case o.q3G.HTML:return(0,o.qzn)(Ne,"HTML")?(0,o.z3N)(Ne):(0,o.EiD)(this._doc,String(Ne)).toString();case o.q3G.STYLE:return(0,o.qzn)(Ne,"Style")?(0,o.z3N)(Ne):Ne;case o.q3G.SCRIPT:if((0,o.qzn)(Ne,"Script"))return(0,o.z3N)(Ne);throw new Error("unsafe value used in a script context");case o.q3G.URL:return(0,o.qzn)(Ne,"URL")?(0,o.z3N)(Ne):(0,o.mCW)(String(Ne));case o.q3G.RESOURCE_URL:if((0,o.qzn)(Ne,"ResourceURL"))return(0,o.z3N)(Ne);throw new Error(`unsafe value used in a resource URL context (see ${o.JZr})`);default:throw new Error(`Unexpected SecurityContext ${J} (see ${o.JZr})`)}}bypassSecurityTrustHtml(J){return(0,o.JVY)(J)}bypassSecurityTrustStyle(J){return(0,o.L6k)(J)}bypassSecurityTrustScript(J){return(0,o.eBb)(J)}bypassSecurityTrustUrl(J){return(0,o.LAX)(J)}bypassSecurityTrustResourceUrl(J){return(0,o.pB0)(J)}}return Oe.\u0275fac=function(J){return new(J||Oe)(o.LFG(c.K0))},Oe.\u0275prov=o.Yz7({token:Oe,factory:function(J){let Ne=null;return Ne=J?new J:function Jn(Oe){return new ln(Oe.get(c.K0))}(o.LFG(o.zs3)),Ne},providedIn:"root"}),Oe})()},8247:(ze,me,b)=>{b.d(me,{gz:()=>Kn,F0:()=>Ei,rH:()=>Us,Bz:()=>Kl,lC:()=>Ii});var c=b(1571),o=b(2076),M=b(9646),re=b(1135),Q=b(6805),H=b(9841),fe=b(7272),Se=b(9770),ie=b(9635),Z=b(9751),ye=b(576);function se(f,p){const d=(0,ye.m)(f)?f:()=>f,_=w=>w.error(d());return new Z.y(p?w=>p.schedule(_,0,w):_)}var Ee=b(515),we=b(727),Ie=b(4482),Be=b(5403);function Ve(){return(0,Ie.e)((f,p)=>{let d=null;f._refCount++;const _=(0,Be.x)(p,void 0,void 0,void 0,()=>{if(!f||f._refCount<=0||0<--f._refCount)return void(d=null);const w=f._connection,N=d;d=null,w&&(!N||w===N)&&w.unsubscribe(),p.unsubscribe()});f.subscribe(_),_.closed||(d=f.connect())})}class Je extends Z.y{constructor(p,d){super(),this.source=p,this.subjectFactory=d,this._subject=null,this._refCount=0,this._connection=null,(0,Ie.A)(p)&&(this.lift=p.lift)}_subscribe(p){return this.getSubject().subscribe(p)}getSubject(){const p=this._subject;return(!p||p.isStopped)&&(this._subject=this.subjectFactory()),this._subject}_teardown(){this._refCount=0;const{_connection:p}=this;this._subject=this._connection=null,null==p||p.unsubscribe()}connect(){let p=this._connection;if(!p){p=this._connection=new we.w0;const d=this.getSubject();p.add(this.source.subscribe((0,Be.x)(d,void 0,()=>{this._teardown(),d.complete()},_=>{this._teardown(),d.error(_)},()=>this._teardown()))),p.closed&&(this._connection=null,p=we.w0.EMPTY)}return p}refCount(){return Ve()(this)}}var pt=b(7579),_t=b(6895),ne=b(4004),q=b(3900),j=b(5698),$=b(8675),ee=b(9300),ae=b(5577);function Pe(f){return(0,Ie.e)((p,d)=>{let _=!1;p.subscribe((0,Be.x)(d,w=>{_=!0,d.next(w)},()=>{_||d.next(f),d.complete()}))})}function de(f=be){return(0,Ie.e)((p,d)=>{let _=!1;p.subscribe((0,Be.x)(d,w=>{_=!0,d.next(w)},()=>_?d.complete():d.error(f())))})}function be(){return new Q.K}var Fe=b(4671);function ke(f,p){const d=arguments.length>=2;return _=>_.pipe(f?(0,ee.h)((w,N)=>f(w,N,_)):Fe.y,(0,j.q)(1),d?Pe(p):de(()=>new Q.K))}var Xe=b(4351),$e=b(8505),bt=b(8421);function At(f){return(0,Ie.e)((p,d)=>{let N,_=null,w=!1;_=p.subscribe((0,Be.x)(d,void 0,void 0,V=>{N=(0,bt.Xf)(f(V,At(f)(p))),_?(_.unsubscribe(),_=null,N.subscribe(d)):w=!0})),w&&(_.unsubscribe(),_=null,N.subscribe(d))})}function ot(f,p,d,_,w){return(N,V)=>{let Ae=d,We=p,ft=0;N.subscribe((0,Be.x)(V,Ot=>{const Et=ft++;We=Ae?f(We,Ot,Et):(Ae=!0,Ot),_&&V.next(We)},w&&(()=>{Ae&&V.next(We),V.complete()})))}}function st(f,p){return(0,Ie.e)(ot(f,p,arguments.length>=2,!0))}function mt(f){return f<=0?()=>Ee.E:(0,Ie.e)((p,d)=>{let _=[];p.subscribe((0,Be.x)(d,w=>{_.push(w),f<_.length&&_.shift()},()=>{for(const w of _)d.next(w);d.complete()},void 0,()=>{_=null}))})}function ut(f,p){const d=arguments.length>=2;return _=>_.pipe(f?(0,ee.h)((w,N)=>f(w,N,_)):Fe.y,mt(1),d?Pe(p):de(()=>new Q.K))}var lt=b(2529),jt=b(9718);function Lt(f){return(0,Ie.e)((p,d)=>{try{p.subscribe(d)}finally{d.add(f)}})}var yt=b(8189),hn=b(1481);const It="primary",yn=Symbol("RouteTitle");class tn{constructor(p){this.params=p||{}}has(p){return Object.prototype.hasOwnProperty.call(this.params,p)}get(p){if(this.has(p)){const d=this.params[p];return Array.isArray(d)?d[0]:d}return null}getAll(p){if(this.has(p)){const d=this.params[p];return Array.isArray(d)?d:[d]}return[]}get keys(){return Object.keys(this.params)}}function xn(f){return new tn(f)}function Ct(f,p,d){const _=d.path.split("/");if(_.length>f.length||"full"===d.pathMatch&&(p.hasChildren()||_.length_[N]===w)}return f===p}function G(f){return Array.prototype.concat.apply([],f)}function Re(f){return f.length>0?f[f.length-1]:null}function ue(f,p){for(const d in f)f.hasOwnProperty(d)&&p(f[d],d)}function R(f){return(0,c.CqO)(f)?f:(0,c.QGY)(f)?(0,o.D)(Promise.resolve(f)):(0,M.of)(f)}const K=!1,De={exact:function et(f,p,d){if(!Vt(f.segments,p.segments)||!pe(f.segments,p.segments,d)||f.numberOfChildren!==p.numberOfChildren)return!1;for(const _ in p.children)if(!f.children[_]||!et(f.children[_],p.children[_],d))return!1;return!0},subset:Ye},Ce={exact:function it(f,p){return oe(f,p)},subset:function _e(f,p){return Object.keys(p).length<=Object.keys(f).length&&Object.keys(p).every(d=>ve(f[d],p[d]))},ignored:()=>!0};function Ke(f,p,d){return De[d.paths](f.root,p.root,d.matrixParams)&&Ce[d.queryParams](f.queryParams,p.queryParams)&&!("exact"===d.fragment&&f.fragment!==p.fragment)}function Ye(f,p,d){return F(f,p,p.segments,d)}function F(f,p,d,_){if(f.segments.length>d.length){const w=f.segments.slice(0,d.length);return!(!Vt(w,d)||p.hasChildren()||!pe(w,d,_))}if(f.segments.length===d.length){if(!Vt(f.segments,d)||!pe(f.segments,d,_))return!1;for(const w in p.children)if(!f.children[w]||!Ye(f.children[w],p.children[w],_))return!1;return!0}{const w=d.slice(0,f.segments.length),N=d.slice(f.segments.length);return!!(Vt(f.segments,w)&&pe(f.segments,w,_)&&f.children[It])&&F(f.children[It],p,N,_)}}function pe(f,p,d){return p.every((_,w)=>Ce[d](f[w].parameters,_.parameters))}class te{constructor(p=new ge([],{}),d={},_=null){this.root=p,this.queryParams=d,this.fragment=_}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=xn(this.queryParams)),this._queryParamMap}toString(){return Ze.serialize(this)}}class ge{constructor(p,d){this.segments=p,this.children=d,this.parent=null,ue(d,(_,w)=>_.parent=this)}hasChildren(){return this.numberOfChildren>0}get numberOfChildren(){return Object.keys(this.children).length}toString(){return Me(this)}}class rt{constructor(p,d){this.path=p,this.parameters=d}get parameterMap(){return this._parameterMap||(this._parameterMap=xn(this.parameters)),this._parameterMap}toString(){return Ft(this)}}function Vt(f,p){return f.length===p.length&&f.every((d,_)=>d.path===p[_].path)}let mn=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return new gn},providedIn:"root"}),f})();class gn{parse(p){const d=new Ne(p);return new te(d.parseRootSegment(),d.parseQueryParams(),d.parseFragment())}serialize(p){const d=`/${I(p.root,!0)}`,_=function on(f){const p=Object.keys(f).map(d=>{const _=f[d];return Array.isArray(_)?_.map(w=>`${T(d)}=${T(w)}`).join("&"):`${T(d)}=${T(_)}`}).filter(d=>!!d);return p.length?`?${p.join("&")}`:""}(p.queryParams);return`${d}${_}${"string"==typeof p.fragment?`#${function z(f){return encodeURI(f)}(p.fragment)}`:""}`}}const Ze=new gn;function Me(f){return f.segments.map(p=>Ft(p)).join("/")}function I(f,p){if(!f.hasChildren())return Me(f);if(p){const d=f.children[It]?I(f.children[It],!1):"",_=[];return ue(f.children,(w,N)=>{N!==It&&_.push(`${N}:${I(w,!1)}`)}),_.length>0?`${d}(${_.join("//")})`:d}{const d=function St(f,p){let d=[];return ue(f.children,(_,w)=>{w===It&&(d=d.concat(p(_,w)))}),ue(f.children,(_,w)=>{w!==It&&(d=d.concat(p(_,w)))}),d}(f,(_,w)=>w===It?[I(f.children[It],!1)]:[`${w}:${I(_,!1)}`]);return 1===Object.keys(f.children).length&&null!=f.children[It]?`${Me(f)}/${d[0]}`:`${Me(f)}/(${d.join("//")})`}}function A(f){return encodeURIComponent(f).replace(/%40/g,"@").replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",")}function T(f){return A(f).replace(/%3B/gi,";")}function Y(f){return A(f).replace(/\(/g,"%28").replace(/\)/g,"%29").replace(/%26/gi,"&")}function He(f){return decodeURIComponent(f)}function gt(f){return He(f.replace(/\+/g,"%20"))}function Ft(f){return`${Y(f.path)}${function kt(f){return Object.keys(f).map(p=>`;${Y(p)}=${Y(f[p])}`).join("")}(f.parameters)}`}const Jn=/^[^\/()?;=#]+/;function ln(f){const p=f.match(Jn);return p?p[0]:""}const _n=/^[^=?&#]+/,xe=/^[^&#]+/;class Ne{constructor(p){this.url=p,this.remaining=p}parseRootSegment(){return this.consumeOptional("/"),""===this.remaining||this.peekStartsWith("?")||this.peekStartsWith("#")?new ge([],{}):new ge([],this.parseChildren())}parseQueryParams(){const p={};if(this.consumeOptional("?"))do{this.parseQueryParam(p)}while(this.consumeOptional("&"));return p}parseFragment(){return this.consumeOptional("#")?decodeURIComponent(this.remaining):null}parseChildren(){if(""===this.remaining)return{};this.consumeOptional("/");const p=[];for(this.peekStartsWith("(")||p.push(this.parseSegment());this.peekStartsWith("/")&&!this.peekStartsWith("//")&&!this.peekStartsWith("/(");)this.capture("/"),p.push(this.parseSegment());let d={};this.peekStartsWith("/(")&&(this.capture("/"),d=this.parseParens(!0));let _={};return this.peekStartsWith("(")&&(_=this.parseParens(!1)),(p.length>0||Object.keys(d).length>0)&&(_[It]=new ge(p,d)),_}parseSegment(){const p=ln(this.remaining);if(""===p&&this.peekStartsWith(";"))throw new c.vHH(4009,K);return this.capture(p),new rt(He(p),this.parseMatrixParams())}parseMatrixParams(){const p={};for(;this.consumeOptional(";");)this.parseParam(p);return p}parseParam(p){const d=ln(this.remaining);if(!d)return;this.capture(d);let _="";if(this.consumeOptional("=")){const w=ln(this.remaining);w&&(_=w,this.capture(_))}p[He(d)]=He(_)}parseQueryParam(p){const d=function Oe(f){const p=f.match(_n);return p?p[0]:""}(this.remaining);if(!d)return;this.capture(d);let _="";if(this.consumeOptional("=")){const V=function J(f){const p=f.match(xe);return p?p[0]:""}(this.remaining);V&&(_=V,this.capture(_))}const w=gt(d),N=gt(_);if(p.hasOwnProperty(w)){let V=p[w];Array.isArray(V)||(V=[V],p[w]=V),V.push(N)}else p[w]=N}parseParens(p){const d={};for(this.capture("(");!this.consumeOptional(")")&&this.remaining.length>0;){const _=ln(this.remaining),w=this.remaining[_.length];if("/"!==w&&")"!==w&&";"!==w)throw new c.vHH(4010,K);let N;_.indexOf(":")>-1?(N=_.slice(0,_.indexOf(":")),this.capture(N),this.capture(":")):p&&(N=It);const V=this.parseChildren();d[N]=1===Object.keys(V).length?V[It]:new ge([],V),this.consumeOptional("//")}return d}peekStartsWith(p){return this.remaining.startsWith(p)}consumeOptional(p){return!!this.peekStartsWith(p)&&(this.remaining=this.remaining.substring(p.length),!0)}capture(p){if(!this.consumeOptional(p))throw new c.vHH(4011,K)}}function Ge(f){return f.segments.length>0?new ge([],{[It]:f}):f}function Tt(f){const p={};for(const _ of Object.keys(f.children)){const N=Tt(f.children[_]);(N.segments.length>0||N.hasChildren())&&(p[_]=N)}return function Jt(f){if(1===f.numberOfChildren&&f.children[It]){const p=f.children[It];return new ge(f.segments.concat(p.segments),p.children)}return f}(new ge(f.segments,p))}function un(f){return f instanceof te}function Ti(f,p,d,_,w){var N;if(0===d.length)return xi(p.root,p.root,p.root,_,w);const V=function bo(f){if("string"==typeof f[0]&&1===f.length&&"/"===f[0])return new jo(!0,0,f);let p=0,d=!1;const _=f.reduce((w,N,V)=>{if("object"==typeof N&&null!=N){if(N.outlets){const Ae={};return ue(N.outlets,(We,ft)=>{Ae[ft]="string"==typeof We?We.split("/"):We}),[...w,{outlets:Ae}]}if(N.segmentPath)return[...w,N.segmentPath]}return"string"!=typeof N?[...w,N]:0===V?(N.split("/").forEach((Ae,We)=>{0==We&&"."===Ae||(0==We&&""===Ae?d=!0:".."===Ae?p++:""!=Ae&&w.push(Ae))}),w):[...w,N]},[]);return new jo(d,p,_)}(d);return V.toRoot()?xi(p.root,p.root,new ge([],{}),_,w):function Ae(ft){var Ot;const Et=function dn(f,p,d,_){if(f.isAbsolute)return new Bi(p.root,!0,0);if(-1===_)return new Bi(d,d===p.root,0);return function Nn(f,p,d){let _=f,w=p,N=d;for(;N>w;){if(N-=w,_=_.parent,!_)throw new c.vHH(4005,!1);w=_.segments.length}return new Bi(_,!1,w-N)}(d,_+(ao(f.commands[0])?0:1),f.numberOfDoubleDots)}(V,p,null===(Ot=f.snapshot)||void 0===Ot?void 0:Ot._urlSegment,ft),Cn=Et.processChildren?Bn(Et.segmentGroup,Et.index,V.commands):ai(Et.segmentGroup,Et.index,V.commands);return xi(p.root,Et.segmentGroup,Cn,_,w)}(null===(N=f.snapshot)||void 0===N?void 0:N._lastPathIndex)}function ao(f){return"object"==typeof f&&null!=f&&!f.outlets&&!f.segmentPath}function Ni(f){return"object"==typeof f&&null!=f&&f.outlets}function xi(f,p,d,_,w){let V,N={};_&&ue(_,(We,ft)=>{N[ft]=Array.isArray(We)?We.map(Ot=>`${Ot}`):`${We}`}),V=f===p?d:Zi(f,p,d);const Ae=Ge(Tt(V));return new te(Ae,N,w)}function Zi(f,p,d){const _={};return ue(f.children,(w,N)=>{_[N]=w===p?d:Zi(w,p,d)}),new ge(f.segments,_)}class jo{constructor(p,d,_){if(this.isAbsolute=p,this.numberOfDoubleDots=d,this.commands=_,p&&_.length>0&&ao(_[0]))throw new c.vHH(4003,!1);const w=_.find(Ni);if(w&&w!==Re(_))throw new c.vHH(4004,!1)}toRoot(){return this.isAbsolute&&1===this.commands.length&&"/"==this.commands[0]}}class Bi{constructor(p,d,_){this.segmentGroup=p,this.processChildren=d,this.index=_}}function ai(f,p,d){if(f||(f=new ge([],{})),0===f.segments.length&&f.hasChildren())return Bn(f,p,d);const _=function Vi(f,p,d){let _=0,w=p;const N={match:!1,pathIndex:0,commandIndex:0};for(;w=d.length)return N;const V=f.segments[w],Ae=d[_];if(Ni(Ae))break;const We=`${Ae}`,ft=_0&&void 0===We)break;if(We&&ft&&"object"==typeof ft&&void 0===ft.outlets){if(!Tn(We,ft,V))return N;_+=2}else{if(!Tn(We,{},V))return N;_++}w++}return{match:!0,pathIndex:w,commandIndex:_}}(f,p,d),w=d.slice(_.commandIndex);if(_.match&&_.pathIndex{"string"==typeof N&&(N=[N]),null!==N&&(w[V]=ai(f.children[V],p,N))}),ue(f.children,(N,V)=>{void 0===_[V]&&(w[V]=N)}),new ge(f.segments,w)}}function xt(f,p,d){const _=f.segments.slice(0,p);let w=0;for(;w{"string"==typeof d&&(d=[d]),null!==d&&(p[_]=xt(new ge([],{}),0,d))}),p}function Dn(f){const p={};return ue(f,(d,_)=>p[_]=`${d}`),p}function Tn(f,p,d){return f==d.path&&oe(p,d.parameters)}const Gn="imperative";class vn{constructor(p,d){this.id=p,this.url=d}}class Si extends vn{constructor(p,d,_="imperative",w=null){super(p,d),this.type=0,this.navigationTrigger=_,this.restoredState=w}toString(){return`NavigationStart(id: ${this.id}, url: '${this.url}')`}}class sn extends vn{constructor(p,d,_){super(p,d),this.urlAfterRedirects=_,this.type=1}toString(){return`NavigationEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}')`}}class Ci extends vn{constructor(p,d,_,w){super(p,d),this.reason=_,this.code=w,this.type=2}toString(){return`NavigationCancel(id: ${this.id}, url: '${this.url}')`}}class lo extends vn{constructor(p,d,_,w){super(p,d),this.reason=_,this.code=w,this.type=16}}class Qt extends vn{constructor(p,d,_,w){super(p,d),this.error=_,this.target=w,this.type=3}toString(){return`NavigationError(id: ${this.id}, url: '${this.url}', error: ${this.error})`}}class Io extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=4}toString(){return`RoutesRecognized(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class zo extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=7}toString(){return`GuardsCheckStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class kr extends vn{constructor(p,d,_,w,N){super(p,d),this.urlAfterRedirects=_,this.state=w,this.shouldActivate=N,this.type=8}toString(){return`GuardsCheckEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state}, shouldActivate: ${this.shouldActivate})`}}class co extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=5}toString(){return`ResolveStart(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ei extends vn{constructor(p,d,_,w){super(p,d),this.urlAfterRedirects=_,this.state=w,this.type=6}toString(){return`ResolveEnd(id: ${this.id}, url: '${this.url}', urlAfterRedirects: '${this.urlAfterRedirects}', state: ${this.state})`}}class ti{constructor(p){this.route=p,this.type=9}toString(){return`RouteConfigLoadStart(path: ${this.route.path})`}}class ko{constructor(p){this.route=p,this.type=10}toString(){return`RouteConfigLoadEnd(path: ${this.route.path})`}}class Ui{constructor(p){this.snapshot=p,this.type=11}toString(){return`ChildActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Po{constructor(p){this.snapshot=p,this.type=12}toString(){return`ChildActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class rr{constructor(p){this.snapshot=p,this.type=13}toString(){return`ActivationStart(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class En{constructor(p){this.snapshot=p,this.type=14}toString(){return`ActivationEnd(path: '${this.snapshot.routeConfig&&this.snapshot.routeConfig.path||""}')`}}class Pr{constructor(p,d,_){this.routerEvent=p,this.position=d,this.anchor=_,this.type=15}toString(){return`Scroll(anchor: '${this.anchor}', position: '${this.position?`${this.position[0]}, ${this.position[1]}`:null}')`}}let $o=(()=>{class f{createUrlTree(d,_,w,N,V,Ae){return Ti(d||_.root,w,N,V,Ae)}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac}),f})(),Oi=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(p){return $o.\u0275fac(p)},providedIn:"root"}),f})();class Wn{constructor(p){this._root=p}get root(){return this._root.value}parent(p){const d=this.pathFromRoot(p);return d.length>1?d[d.length-2]:null}children(p){const d=sr(p,this._root);return d?d.children.map(_=>_.value):[]}firstChild(p){const d=sr(p,this._root);return d&&d.children.length>0?d.children[0].value:null}siblings(p){const d=Yn(p,this._root);return d.length<2?[]:d[d.length-2].children.map(w=>w.value).filter(w=>w!==p)}pathFromRoot(p){return Yn(p,this._root).map(d=>d.value)}}function sr(f,p){if(f===p.value)return p;for(const d of p.children){const _=sr(f,d);if(_)return _}return null}function Yn(f,p){if(f===p.value)return[p];for(const d of p.children){const _=Yn(f,d);if(_.length)return _.unshift(p),_}return[]}class Pn{constructor(p,d){this.value=p,this.children=d}toString(){return`TreeNode(${this.value})`}}function mi(f){const p={};return f&&f.children.forEach(d=>p[d.value.outlet]=d),p}class uo extends Wn{constructor(p,d){super(p),this.snapshot=d,Yo(this,p)}toString(){return this.snapshot.toString()}}function Co(f,p){const d=function Di(f,p){const V=new qi([],{},{},"",{},It,p,null,f.root,-1,{});return new Ro("",new Pn(V,[]))}(f,p),_=new re.X([new rt("",{})]),w=new re.X({}),N=new re.X({}),V=new re.X({}),Ae=new re.X(""),We=new Kn(_,w,V,Ae,N,It,p,d.root);return We.snapshot=d.root,new uo(new Pn(We,[]),d)}class Kn{constructor(p,d,_,w,N,V,Ae,We){var ft,Ot;this.url=p,this.params=d,this.queryParams=_,this.fragment=w,this.data=N,this.outlet=V,this.component=Ae,this.title=null!==(ft=null===(Ot=this.data)||void 0===Ot?void 0:Ot.pipe((0,ne.U)(Et=>Et[yn])))&&void 0!==ft?ft:(0,M.of)(void 0),this._futureSnapshot=We}get routeConfig(){return this._futureSnapshot.routeConfig}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=this.params.pipe((0,ne.U)(p=>xn(p)))),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=this.queryParams.pipe((0,ne.U)(p=>xn(p)))),this._queryParamMap}toString(){return this.snapshot?this.snapshot.toString():`Future(${this._futureSnapshot})`}}function ar(f,p="emptyOnly"){const d=f.pathFromRoot;let _=0;if("always"!==p)for(_=d.length-1;_>=1;){const w=d[_],N=d[_-1];if(w.routeConfig&&""===w.routeConfig.path)_--;else{if(N.component)break;_--}}return function Wo(f){return f.reduce((p,d)=>{var _;return{params:{...p.params,...d.params},data:{...p.data,...d.data},resolve:{...d.data,...p.resolve,...null===(_=d.routeConfig)||void 0===_?void 0:_.data,...d._resolvedData}}},{params:{},data:{},resolve:{}})}(d.slice(_))}class qi{get title(){var p;return null===(p=this.data)||void 0===p?void 0:p[yn]}constructor(p,d,_,w,N,V,Ae,We,ft,Ot,Et){this.url=p,this.params=d,this.queryParams=_,this.fragment=w,this.data=N,this.outlet=V,this.component=Ae,this.routeConfig=We,this._urlSegment=ft,this._lastPathIndex=Ot,this._resolve=Et}get root(){return this._routerState.root}get parent(){return this._routerState.parent(this)}get firstChild(){return this._routerState.firstChild(this)}get children(){return this._routerState.children(this)}get pathFromRoot(){return this._routerState.pathFromRoot(this)}get paramMap(){return this._paramMap||(this._paramMap=xn(this.params)),this._paramMap}get queryParamMap(){return this._queryParamMap||(this._queryParamMap=xn(this.queryParams)),this._queryParamMap}toString(){return`Route(url:'${this.url.map(_=>_.toString()).join("/")}', path:'${this.routeConfig?this.routeConfig.path:""}')`}}class Ro extends Wn{constructor(p,d){super(d),this.url=p,Yo(this,d)}toString(){return Rr(this._root)}}function Yo(f,p){p.value._routerState=f,p.children.forEach(d=>Yo(f,d))}function Rr(f){const p=f.children.length>0?` { ${f.children.map(Rr).join(", ")} } `:"";return`${f.value}${p}`}function Fr(f){if(f.snapshot){const p=f.snapshot,d=f._futureSnapshot;f.snapshot=d,oe(p.queryParams,d.queryParams)||f.queryParams.next(d.queryParams),p.fragment!==d.fragment&&f.fragment.next(d.fragment),oe(p.params,d.params)||f.params.next(d.params),function Ht(f,p){if(f.length!==p.length)return!1;for(let d=0;doe(d.parameters,p[_].parameters))}(f.url,p.url);return d&&!(!f.parent!=!p.parent)&&(!f.parent||Do(f.parent,p.parent))}function Xi(f,p,d){if(d&&f.shouldReuseRoute(p.value,d.value.snapshot)){const _=d.value;_._futureSnapshot=p.value;const w=function Fo(f,p,d){return p.children.map(_=>{for(const w of d.children)if(f.shouldReuseRoute(_.value,w.value.snapshot))return Xi(f,_,w);return Xi(f,_)})}(f,p,d);return new Pn(_,w)}{if(f.shouldAttach(p.value)){const N=f.retrieve(p.value);if(null!==N){const V=N.route;return V.value._futureSnapshot=p.value,V.children=p.children.map(Ae=>Xi(f,Ae)),V}}const _=function Ko(f){return new Kn(new re.X(f.url),new re.X(f.params),new re.X(f.queryParams),new re.X(f.fragment),new re.X(f.data),f.outlet,f.component,f)}(p.value),w=p.children.map(N=>Xi(f,N));return new Pn(_,w)}}const li="ngNavigationCancelingError";function ws(f,p){const{redirectTo:d,navigationBehaviorOptions:_}=un(p)?{redirectTo:p,navigationBehaviorOptions:void 0}:p,w=As(!1,0,p);return w.url=d,w.navigationBehaviorOptions=_,w}function As(f,p,d){const _=new Error("NavigationCancelingError: "+(f||""));return _[li]=!0,_.cancellationCode=p,d&&(_.url=d),_}function cr(f){return Lr(f)&&un(f.url)}function Lr(f){return f&&f[li]}class Ts{constructor(){this.outlet=null,this.route=null,this.resolver=null,this.injector=null,this.children=new Eo,this.attachRef=null}}let Eo=(()=>{class f{constructor(){this.contexts=new Map}onChildOutletCreated(d,_){const w=this.getOrCreateContext(d);w.outlet=_,this.contexts.set(d,w)}onChildOutletDestroyed(d){const _=this.getContext(d);_&&(_.outlet=null,_.attachRef=null)}onOutletDeactivated(){const d=this.contexts;return this.contexts=new Map,d}onOutletReAttached(d){this.contexts=d}getOrCreateContext(d){let _=this.getContext(d);return _||(_=new Ts,this.contexts.set(d,_)),_}getContext(d){return this.contexts.get(d)||null}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const Zo=!1;let Ii=(()=>{class f{constructor(){this.activated=null,this._activatedRoute=null,this.name=It,this.activateEvents=new c.vpe,this.deactivateEvents=new c.vpe,this.attachEvents=new c.vpe,this.detachEvents=new c.vpe,this.parentContexts=(0,c.f3M)(Eo),this.location=(0,c.f3M)(c.s_b),this.changeDetector=(0,c.f3M)(c.sBO),this.environmentInjector=(0,c.f3M)(c.lqb)}ngOnChanges(d){if(d.name){const{firstChange:_,previousValue:w}=d.name;if(_)return;this.isTrackedInParentContexts(w)&&(this.deactivate(),this.parentContexts.onChildOutletDestroyed(w)),this.initializeOutletWithName()}}ngOnDestroy(){this.isTrackedInParentContexts(this.name)&&this.parentContexts.onChildOutletDestroyed(this.name)}isTrackedInParentContexts(d){var _;return(null===(_=this.parentContexts.getContext(d))||void 0===_?void 0:_.outlet)===this}ngOnInit(){this.initializeOutletWithName()}initializeOutletWithName(){if(this.parentContexts.onChildOutletCreated(this.name,this),this.activated)return;const d=this.parentContexts.getContext(this.name);null!=d&&d.route&&(d.attachRef?this.attach(d.attachRef,d.route):this.activateWith(d.route,d.injector))}get isActivated(){return!!this.activated}get component(){if(!this.activated)throw new c.vHH(4012,Zo);return this.activated.instance}get activatedRoute(){if(!this.activated)throw new c.vHH(4012,Zo);return this._activatedRoute}get activatedRouteData(){return this._activatedRoute?this._activatedRoute.snapshot.data:{}}detach(){if(!this.activated)throw new c.vHH(4012,Zo);this.location.detach();const d=this.activated;return this.activated=null,this._activatedRoute=null,this.detachEvents.emit(d.instance),d}attach(d,_){this.activated=d,this._activatedRoute=_,this.location.insert(d.hostView),this.attachEvents.emit(d.instance)}deactivate(){if(this.activated){const d=this.component;this.activated.destroy(),this.activated=null,this._activatedRoute=null,this.deactivateEvents.emit(d)}}activateWith(d,_){if(this.isActivated)throw new c.vHH(4013,Zo);this._activatedRoute=d;const w=this.location,V=d.snapshot.component,Ae=this.parentContexts.getOrCreateContext(this.name).children,We=new Nr(d,Ae,w.injector);if(_&&function Hi(f){return!!f.resolveComponentFactory}(_)){const ft=_.resolveComponentFactory(V);this.activated=w.createComponent(ft,w.length,We)}else this.activated=w.createComponent(V,{index:w.length,injector:We,environmentInjector:null!=_?_:this.environmentInjector});this.changeDetector.markForCheck(),this.activateEvents.emit(this.activated.instance)}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275dir=c.lG2({type:f,selectors:[["router-outlet"]],inputs:{name:"name"},outputs:{activateEvents:"activate",deactivateEvents:"deactivate",attachEvents:"attach",detachEvents:"detach"},exportAs:["outlet"],standalone:!0,features:[c.TTD]}),f})();class Nr{constructor(p,d,_){this.route=p,this.childContexts=d,this.parent=_}get(p,d){return p===Kn?this.route:p===Eo?this.childContexts:this.parent.get(p,d)}}let dr=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275cmp=c.Xpm({type:f,selectors:[["ng-component"]],standalone:!0,features:[c.jDz],decls:1,vars:0,template:function(d,_){1&d&&c._UZ(0,"router-outlet")},dependencies:[Ii],encapsulation:2}),f})();function Mo(f,p){var d;return f.providers&&!f._injector&&(f._injector=(0,c.MMx)(f.providers,p,`Route: ${f.path}`)),null!==(d=f._injector)&&void 0!==d?d:p}function ji(f){const p=f.children&&f.children.map(ji),d=p?{...f,children:p}:{...f};return!d.component&&!d.loadComponent&&(p||d.loadChildren)&&d.outlet&&d.outlet!==It&&(d.component=dr),d}function bn(f){return f.outlet||It}function fr(f,p){const d=f.filter(_=>bn(_)===p);return d.push(...f.filter(_=>bn(_)!==p)),d}function zi(f){var p;if(!f)return null;if(null!==(p=f.routeConfig)&&void 0!==p&&p._injector)return f.routeConfig._injector;for(let d=f.parent;d;d=d.parent){const _=d.routeConfig;if(null!=_&&_._loadedInjector)return _._loadedInjector;if(null!=_&&_._injector)return _._injector}return null}class Ur{constructor(p,d,_,w){this.routeReuseStrategy=p,this.futureState=d,this.currState=_,this.forwardEvent=w}activate(p){const d=this.futureState._root,_=this.currState?this.currState._root:null;this.deactivateChildRoutes(d,_,p),Fr(this.futureState.root),this.activateChildRoutes(d,_,p)}deactivateChildRoutes(p,d,_){const w=mi(d);p.children.forEach(N=>{const V=N.value.outlet;this.deactivateRoutes(N,w[V],_),delete w[V]}),ue(w,(N,V)=>{this.deactivateRouteAndItsChildren(N,_)})}deactivateRoutes(p,d,_){const w=p.value,N=d?d.value:null;if(w===N)if(w.component){const V=_.getContext(w.outlet);V&&this.deactivateChildRoutes(p,d,V.children)}else this.deactivateChildRoutes(p,d,_);else N&&this.deactivateRouteAndItsChildren(d,_)}deactivateRouteAndItsChildren(p,d){p.value.component&&this.routeReuseStrategy.shouldDetach(p.value.snapshot)?this.detachAndStoreRouteSubtree(p,d):this.deactivateRouteAndOutlet(p,d)}detachAndStoreRouteSubtree(p,d){const _=d.getContext(p.value.outlet),w=_&&p.value.component?_.children:d,N=mi(p);for(const V of Object.keys(N))this.deactivateRouteAndItsChildren(N[V],w);if(_&&_.outlet){const V=_.outlet.detach(),Ae=_.children.onOutletDeactivated();this.routeReuseStrategy.store(p.value.snapshot,{componentRef:V,route:p,contexts:Ae})}}deactivateRouteAndOutlet(p,d){const _=d.getContext(p.value.outlet),w=_&&p.value.component?_.children:d,N=mi(p);for(const V of Object.keys(N))this.deactivateRouteAndItsChildren(N[V],w);_&&_.outlet&&(_.outlet.deactivate(),_.children.onOutletDeactivated(),_.attachRef=null,_.resolver=null,_.route=null)}activateChildRoutes(p,d,_){const w=mi(d);p.children.forEach(N=>{this.activateRoutes(N,w[N.value.outlet],_),this.forwardEvent(new En(N.value.snapshot))}),p.children.length&&this.forwardEvent(new Po(p.value.snapshot))}activateRoutes(p,d,_){const w=p.value,N=d?d.value:null;if(Fr(w),w===N)if(w.component){const Ae=_.getOrCreateContext(w.outlet);this.activateChildRoutes(p,d,Ae.children)}else this.activateChildRoutes(p,d,_);else if(w.component){const Ae=_.getOrCreateContext(w.outlet);if(this.routeReuseStrategy.shouldAttach(w.snapshot)){const We=this.routeReuseStrategy.retrieve(w.snapshot);this.routeReuseStrategy.store(w.snapshot,null),Ae.children.onOutletReAttached(We.contexts),Ae.attachRef=We.componentRef,Ae.route=We.route.value,Ae.outlet&&Ae.outlet.attach(We.componentRef,We.route.value),Fr(We.route.value),this.activateChildRoutes(p,null,Ae.children)}else{var V;const We=zi(w.snapshot),ft=null!==(V=null==We?void 0:We.get(c._Vd))&&void 0!==V?V:null;Ae.attachRef=null,Ae.route=w,Ae.resolver=ft,Ae.injector=We,Ae.outlet&&Ae.outlet.activateWith(w,Ae.injector),this.activateChildRoutes(p,null,Ae.children)}}else this.activateChildRoutes(p,null,_)}}class as{constructor(p){this.path=p,this.route=this.path[this.path.length-1]}}class Ji{constructor(p,d){this.component=p,this.route=d}}function gi(f,p,d){const _=f._root;return pr(_,p?p._root:null,d,[_.value])}function $i(f,p){const d=Symbol(),_=p.get(f,d);return _===d?"function"!=typeof f||(0,c.Z0I)(f)?p.get(f):f:_}function pr(f,p,d,_,w={canDeactivateChecks:[],canActivateChecks:[]}){const N=mi(p);return f.children.forEach(V=>{(function ho(f,p,d,_,w={canDeactivateChecks:[],canActivateChecks:[]}){const N=f.value,V=p?p.value:null,Ae=d?d.getContext(f.value.outlet):null;if(V&&N.routeConfig===V.routeConfig){const We=function Os(f,p,d){if("function"==typeof d)return d(f,p);switch(d){case"pathParamsChange":return!Vt(f.url,p.url);case"pathParamsOrQueryParamsChange":return!Vt(f.url,p.url)||!oe(f.queryParams,p.queryParams);case"always":return!0;case"paramsOrQueryParamsChange":return!Do(f,p)||!oe(f.queryParams,p.queryParams);default:return!Do(f,p)}}(V,N,N.routeConfig.runGuardsAndResolvers);We?w.canActivateChecks.push(new as(_)):(N.data=V.data,N._resolvedData=V._resolvedData),pr(f,p,N.component?Ae?Ae.children:null:d,_,w),We&&Ae&&Ae.outlet&&Ae.outlet.isActivated&&w.canDeactivateChecks.push(new Ji(Ae.outlet.component,V))}else V&&wo(p,Ae,w),w.canActivateChecks.push(new as(_)),pr(f,null,N.component?Ae?Ae.children:null:d,_,w)})(V,N[V.value.outlet],d,_.concat([V.value]),w),delete N[V.value.outlet]}),ue(N,(V,Ae)=>wo(V,d.getContext(Ae),w)),w}function wo(f,p,d){const _=mi(f),w=f.value;ue(_,(N,V)=>{wo(N,w.component?p?p.children.getContext(V):null:p,d)}),d.canDeactivateChecks.push(new Ji(w.component&&p&&p.outlet&&p.outlet.isActivated?p.outlet.component:null,w))}function zt(f){return"function"==typeof f}function ce(f){return f instanceof Q.K||"EmptyError"===(null==f?void 0:f.name)}const dt=Symbol("INITIAL_VALUE");function fn(){return(0,q.w)(f=>(0,H.a)(f.map(p=>p.pipe((0,j.q)(1),(0,$.O)(dt)))).pipe((0,ne.U)(p=>{for(const d of p)if(!0!==d){if(d===dt)return dt;if(!1===d||d instanceof te)return d}return!0}),(0,ee.h)(p=>p!==dt),(0,j.q)(1)))}function cs(f){return(0,ie.z)((0,$e.b)(p=>{if(un(p))throw ws(0,p)}),(0,ne.U)(p=>!0===p))}const no={matched:!1,consumedSegments:[],remainingSegments:[],parameters:{},positionalParamSegments:{}};function ks(f,p,d,_,w){const N=io(f,p,d);return N.matched?function ni(f,p,d,_){const w=p.canMatch;if(!w||0===w.length)return(0,M.of)(!0);const N=w.map(V=>{const Ae=$i(V,f);return R(function E(f){return f&&zt(f.canMatch)}(Ae)?Ae.canMatch(p,d):f.runInContext(()=>Ae(p,d)))});return(0,M.of)(N).pipe(fn(),cs())}(_=Mo(p,_),p,d).pipe((0,ne.U)(V=>!0===V?N:{...no})):(0,M.of)(N)}function io(f,p,d){var _;if(""===p.path)return"full"===p.pathMatch&&(f.hasChildren()||d.length>0)?{...no}:{matched:!0,consumedSegments:[],remainingSegments:d,parameters:{},positionalParamSegments:{}};const N=(p.matcher||Ct)(d,f,p);if(!N)return{...no};const V={};ue(N.posParams,(We,ft)=>{V[ft]=We.path});const Ae=N.consumed.length>0?{...V,...N.consumed[N.consumed.length-1].parameters}:V;return{matched:!0,consumedSegments:N.consumed,remainingSegments:d.slice(N.consumed.length),parameters:Ae,positionalParamSegments:null!==(_=N.posParams)&&void 0!==_?_:{}}}function Vn(f,p,d,_){if(d.length>0&&function Ps(f,p,d){return d.some(_=>Zn(f,p,_)&&bn(_)!==It)}(f,d,_)){const N=new ge(p,function ds(f,p,d,_){const w={};w[It]=_,_._sourceSegment=f,_._segmentIndexShift=p.length;for(const N of d)if(""===N.path&&bn(N)!==It){const V=new ge([],{});V._sourceSegment=f,V._segmentIndexShift=p.length,w[bn(N)]=V}return w}(f,p,_,new ge(d,f.children)));return N._sourceSegment=f,N._segmentIndexShift=p.length,{segmentGroup:N,slicedSegments:[]}}if(0===d.length&&function Rs(f,p,d){return d.some(_=>Zn(f,p,_))}(f,d,_)){const N=new ge(f.segments,function ia(f,p,d,_,w){const N={};for(const V of _)if(Zn(f,d,V)&&!w[bn(V)]){const Ae=new ge([],{});Ae._sourceSegment=f,Ae._segmentIndexShift=p.length,N[bn(V)]=Ae}return{...w,...N}}(f,p,d,_,f.children));return N._sourceSegment=f,N._segmentIndexShift=p.length,{segmentGroup:N,slicedSegments:d}}const w=new ge(f.segments,f.children);return w._sourceSegment=f,w._segmentIndexShift=p.length,{segmentGroup:w,slicedSegments:d}}function Zn(f,p,d){return(!(f.hasChildren()||p.length>0)||"full"!==d.pathMatch)&&""===d.path}function Hr(f,p,d,_){return!!(bn(f)===_||_!==It&&Zn(p,d,f))&&("**"===f.path||io(p,f,d).matched)}function jr(f,p,d){return 0===p.length&&!f.children[d]}const qo=!1;class zr{constructor(p){this.segmentGroup=p||null}}class $r{constructor(p){this.urlTree=p}}function Xo(f){return se(new zr(f))}function Fs(f){return se(new $r(f))}class ra{constructor(p,d,_,w,N){this.injector=p,this.configLoader=d,this.urlSerializer=_,this.urlTree=w,this.config=N,this.allowRedirects=!0}apply(){const p=Vn(this.urlTree.root,[],[],this.config).segmentGroup,d=new ge(p.segments,p.children);return this.expandSegmentGroup(this.injector,this.config,d,It).pipe((0,ne.U)(N=>this.createUrlTree(Tt(N),this.urlTree.queryParams,this.urlTree.fragment))).pipe(At(N=>{if(N instanceof $r)return this.allowRedirects=!1,this.match(N.urlTree);throw N instanceof zr?this.noMatchError(N):N}))}match(p){return this.expandSegmentGroup(this.injector,this.config,p.root,It).pipe((0,ne.U)(w=>this.createUrlTree(Tt(w),p.queryParams,p.fragment))).pipe(At(w=>{throw w instanceof zr?this.noMatchError(w):w}))}noMatchError(p){return new c.vHH(4002,qo)}createUrlTree(p,d,_){const w=Ge(p);return new te(w,d,_)}expandSegmentGroup(p,d,_,w){return 0===_.segments.length&&_.hasChildren()?this.expandChildren(p,d,_).pipe((0,ne.U)(N=>new ge([],N))):this.expandSegment(p,_,d,_.segments,w,!0)}expandChildren(p,d,_){const w=[];for(const N of Object.keys(_.children))"primary"===N?w.unshift(N):w.push(N);return(0,o.D)(w).pipe((0,Xe.b)(N=>{const V=_.children[N],Ae=fr(d,N);return this.expandSegmentGroup(p,Ae,V,N).pipe((0,ne.U)(We=>({segment:We,outlet:N})))}),st((N,V)=>(N[V.outlet]=V.segment,N),{}),ut())}expandSegment(p,d,_,w,N,V){return(0,o.D)(_).pipe((0,Xe.b)(Ae=>this.expandSegmentAgainstRoute(p,d,_,Ae,w,N,V).pipe(At(ft=>{if(ft instanceof zr)return(0,M.of)(null);throw ft}))),ke(Ae=>!!Ae),At((Ae,We)=>{if(ce(Ae))return jr(d,w,N)?(0,M.of)(new ge([],{})):Xo(d);throw Ae}))}expandSegmentAgainstRoute(p,d,_,w,N,V,Ae){return Hr(w,d,N,V)?void 0===w.redirectTo?this.matchSegmentAgainstRoute(p,d,w,N,V):Ae&&this.allowRedirects?this.expandSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V):Xo(d):Xo(d)}expandSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V){return"**"===w.path?this.expandWildCardWithParamsAgainstRouteUsingRedirect(p,_,w,V):this.expandRegularSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V)}expandWildCardWithParamsAgainstRouteUsingRedirect(p,d,_,w){const N=this.applyRedirectCommands([],_.redirectTo,{});return _.redirectTo.startsWith("/")?Fs(N):this.lineralizeSegments(_,N).pipe((0,ae.z)(V=>{const Ae=new ge(V,{});return this.expandSegment(p,Ae,d,V,w,!1)}))}expandRegularSegmentAgainstRouteUsingRedirect(p,d,_,w,N,V){const{matched:Ae,consumedSegments:We,remainingSegments:ft,positionalParamSegments:Ot}=io(d,w,N);if(!Ae)return Xo(d);const Et=this.applyRedirectCommands(We,w.redirectTo,Ot);return w.redirectTo.startsWith("/")?Fs(Et):this.lineralizeSegments(w,Et).pipe((0,ae.z)(Cn=>this.expandSegment(p,d,_,Cn.concat(ft),V,!1)))}matchSegmentAgainstRoute(p,d,_,w,N){return"**"===_.path?(p=Mo(_,p),_.loadChildren?(_._loadedRoutes?(0,M.of)({routes:_._loadedRoutes,injector:_._loadedInjector}):this.configLoader.loadChildren(p,_)).pipe((0,ne.U)(Ae=>(_._loadedRoutes=Ae.routes,_._loadedInjector=Ae.injector,new ge(w,{})))):(0,M.of)(new ge(w,{}))):ks(d,_,w,p).pipe((0,q.w)(({matched:V,consumedSegments:Ae,remainingSegments:We})=>{var ft;return V?(p=null!==(ft=_._injector)&&void 0!==ft?ft:p,this.getChildConfig(p,_,w).pipe((0,ae.z)(Et=>{var Cn;const Hn=null!==(Cn=Et.injector)&&void 0!==Cn?Cn:p,vi=Et.routes,{segmentGroup:Uo,slicedSegments:go}=Vn(d,Ae,We,vi),So=new ge(Uo.segments,Uo.children);if(0===go.length&&So.hasChildren())return this.expandChildren(Hn,vi,So).pipe((0,ne.U)(er=>new ge(Ae,er)));if(0===vi.length&&0===go.length)return(0,M.of)(new ge(Ae,{}));const ms=bn(_)===N;return this.expandSegment(Hn,So,vi,go,ms?It:N,!0).pipe((0,ne.U)(Mi=>new ge(Ae.concat(Mi.segments),Mi.children)))}))):Xo(d)}))}getChildConfig(p,d,_){return d.children?(0,M.of)({routes:d.children,injector:p}):d.loadChildren?void 0!==d._loadedRoutes?(0,M.of)({routes:d._loadedRoutes,injector:d._loadedInjector}):function sl(f,p,d,_){const w=p.canLoad;if(void 0===w||0===w.length)return(0,M.of)(!0);const N=w.map(V=>{const Ae=$i(V,f);return R(function ta(f){return f&&zt(f.canLoad)}(Ae)?Ae.canLoad(p,d):f.runInContext(()=>Ae(p,d)))});return(0,M.of)(N).pipe(fn(),cs())}(p,d,_).pipe((0,ae.z)(w=>w?this.configLoader.loadChildren(p,d).pipe((0,$e.b)(N=>{d._loadedRoutes=N.routes,d._loadedInjector=N.injector})):function us(f){return se(As(qo,3))}())):(0,M.of)({routes:[],injector:p})}lineralizeSegments(p,d){let _=[],w=d.root;for(;;){if(_=_.concat(w.segments),0===w.numberOfChildren)return(0,M.of)(_);if(w.numberOfChildren>1||!w.children[It])return se(new c.vHH(4e3,qo));w=w.children[It]}}applyRedirectCommands(p,d,_){return this.applyRedirectCreateUrlTree(d,this.urlSerializer.parse(d),p,_)}applyRedirectCreateUrlTree(p,d,_,w){const N=this.createSegmentGroup(p,d.root,_,w);return new te(N,this.createQueryParams(d.queryParams,this.urlTree.queryParams),d.fragment)}createQueryParams(p,d){const _={};return ue(p,(w,N)=>{if("string"==typeof w&&w.startsWith(":")){const Ae=w.substring(1);_[N]=d[Ae]}else _[N]=w}),_}createSegmentGroup(p,d,_,w){const N=this.createSegments(p,d.segments,_,w);let V={};return ue(d.children,(Ae,We)=>{V[We]=this.createSegmentGroup(p,Ae,_,w)}),new ge(N,V)}createSegments(p,d,_,w){return d.map(N=>N.path.startsWith(":")?this.findPosParam(p,N,w):this.findOrReturn(N,_))}findPosParam(p,d,_){const w=_[d.path.substring(1)];if(!w)throw new c.vHH(4001,qo);return w}findOrReturn(p,d){let _=0;for(const w of d){if(w.path===p.path)return d.splice(_),w;_++}return p}}class ui{}class hs{constructor(p,d,_,w,N,V,Ae){this.injector=p,this.rootComponentType=d,this.config=_,this.urlTree=w,this.url=N,this.paramsInheritanceStrategy=V,this.urlSerializer=Ae}recognize(){const p=Vn(this.urlTree.root,[],[],this.config.filter(d=>void 0===d.redirectTo)).segmentGroup;return this.processSegmentGroup(this.injector,this.config,p,It).pipe((0,ne.U)(d=>{if(null===d)return null;const _=new qi([],Object.freeze({}),Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,{},It,this.rootComponentType,null,this.urlTree.root,-1,{}),w=new Pn(_,d),N=new Ro(this.url,w);return this.inheritParamsAndData(N._root),N}))}inheritParamsAndData(p){const d=p.value,_=ar(d,this.paramsInheritanceStrategy);d.params=Object.freeze(_.params),d.data=Object.freeze(_.data),p.children.forEach(w=>this.inheritParamsAndData(w))}processSegmentGroup(p,d,_,w){return 0===_.segments.length&&_.hasChildren()?this.processChildren(p,d,_):this.processSegment(p,d,_,_.segments,w)}processChildren(p,d,_){return(0,o.D)(Object.keys(_.children)).pipe((0,Xe.b)(w=>{const N=_.children[w],V=fr(d,w);return this.processSegmentGroup(p,V,N,w)}),st((w,N)=>w&&N?(w.push(...N),w):null),(0,lt.o)(w=>null!==w),Pe(null),ut(),(0,ne.U)(w=>{if(null===w)return null;const N=L(w);return function v(f){f.sort((p,d)=>p.value.outlet===It?-1:d.value.outlet===It?1:p.value.outlet.localeCompare(d.value.outlet))}(N),N}))}processSegment(p,d,_,w,N){return(0,o.D)(d).pipe((0,Xe.b)(V=>{var Ae;return this.processSegmentAgainstRoute(null!==(Ae=V._injector)&&void 0!==Ae?Ae:p,V,_,w,N)}),ke(V=>!!V),At(V=>{if(ce(V))return jr(_,w,N)?(0,M.of)([]):(0,M.of)(null);throw V}))}processSegmentAgainstRoute(p,d,_,w,N){if(d.redirectTo||!Hr(d,_,w,N))return(0,M.of)(null);let V;if("**"===d.path){var Ae,We;const ft=w.length>0?Re(w).parameters:{},Ot=Qe(_)+w.length,Et=new qi(w,ft,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,nn(d),bn(d),null!==(Ae=null!==(We=d.component)&&void 0!==We?We:d._loadedComponent)&&void 0!==Ae?Ae:null,d,je(_),Ot,Zt(d));V=(0,M.of)({snapshot:Et,consumedSegments:[],remainingSegments:[]})}else V=ks(_,d,w,p).pipe((0,ne.U)(({matched:ft,consumedSegments:Ot,remainingSegments:Et,parameters:Cn})=>{var Hn,vi;if(!ft)return null;const Uo=Qe(_)+Ot.length;return{snapshot:new qi(Ot,Cn,Object.freeze({...this.urlTree.queryParams}),this.urlTree.fragment,nn(d),bn(d),null!==(Hn=null!==(vi=d.component)&&void 0!==vi?vi:d._loadedComponent)&&void 0!==Hn?Hn:null,d,je(_),Uo,Zt(d)),consumedSegments:Ot,remainingSegments:Et}}));return V.pipe((0,q.w)(ft=>{var Ot,Et;if(null===ft)return(0,M.of)(null);const{snapshot:Cn,consumedSegments:Hn,remainingSegments:vi}=ft;p=null!==(Ot=d._injector)&&void 0!==Ot?Ot:p;const Uo=null!==(Et=d._loadedInjector)&&void 0!==Et?Et:p,go=function k(f){return f.children?f.children:f.loadChildren?f._loadedRoutes:[]}(d),{segmentGroup:So,slicedSegments:ms}=Vn(_,Hn,vi,go.filter(Mi=>void 0===Mi.redirectTo));if(0===ms.length&&So.hasChildren())return this.processChildren(Uo,go,So).pipe((0,ne.U)(Mi=>null===Mi?null:[new Pn(Cn,Mi)]));if(0===go.length&&0===ms.length)return(0,M.of)([new Pn(Cn,[])]);const Wi=bn(d)===N;return this.processSegment(Uo,go,So,ms,Wi?It:N).pipe((0,ne.U)(Mi=>null===Mi?null:[new Pn(Cn,Mi)]))}))}}function D(f){const p=f.value.routeConfig;return p&&""===p.path&&void 0===p.redirectTo}function L(f){const p=[],d=new Set;for(const _ of f){if(!D(_)){p.push(_);continue}const w=p.find(N=>_.value.routeConfig===N.value.routeConfig);void 0!==w?(w.children.push(..._.children),d.add(w)):p.push(_)}for(const _ of d){const w=L(_.children);p.push(new Pn(_.value,w))}return p.filter(_=>!d.has(_))}function je(f){let p=f;for(;p._sourceSegment;)p=p._sourceSegment;return p}function Qe(f){var p;let d=f,_=null!==(p=d._segmentIndexShift)&&void 0!==p?p:0;for(;d._sourceSegment;){var w;d=d._sourceSegment,_+=null!==(w=d._segmentIndexShift)&&void 0!==w?w:0}return _-1}function nn(f){return f.data||{}}function Zt(f){return f.resolve||{}}function Gi(f){return"string"==typeof f.title||null===f.title}function ii(f){return(0,q.w)(p=>{const d=f(p);return d?(0,o.D)(d).pipe((0,ne.U)(()=>p)):(0,M.of)(p)})}const oi=new c.OlP("ROUTES");let ki=(()=>{class f{constructor(d,_){this.injector=d,this.compiler=_,this.componentLoaders=new WeakMap,this.childrenLoaders=new WeakMap}loadComponent(d){if(this.componentLoaders.get(d))return this.componentLoaders.get(d);if(d._loadedComponent)return(0,M.of)(d._loadedComponent);this.onLoadStartListener&&this.onLoadStartListener(d);const _=R(d.loadComponent()).pipe((0,ne.U)(sa),(0,$e.b)(N=>{this.onLoadEndListener&&this.onLoadEndListener(d),d._loadedComponent=N}),Lt(()=>{this.componentLoaders.delete(d)})),w=new Je(_,()=>new pt.x).pipe(Ve());return this.componentLoaders.set(d,w),w}loadChildren(d,_){if(this.childrenLoaders.get(_))return this.childrenLoaders.get(_);if(_._loadedRoutes)return(0,M.of)({routes:_._loadedRoutes,injector:_._loadedInjector});this.onLoadStartListener&&this.onLoadStartListener(_);const N=this.loadModuleFactoryOrRoutes(_.loadChildren).pipe((0,ne.U)(Ae=>{this.onLoadEndListener&&this.onLoadEndListener(_);let We,ft,Ot=!1;Array.isArray(Ae)?ft=Ae:(We=Ae.create(d).injector,ft=G(We.get(oi,[],c.XFs.Self|c.XFs.Optional)));return{routes:ft.map(ji),injector:We}}),Lt(()=>{this.childrenLoaders.delete(_)})),V=new Je(N,()=>new pt.x).pipe(Ve());return this.childrenLoaders.set(_,V),V}loadModuleFactoryOrRoutes(d){return R(d()).pipe((0,ne.U)(sa),(0,ae.z)(w=>w instanceof c.YKP||Array.isArray(w)?(0,M.of)(w):(0,o.D)(this.compiler.compileModuleAsync(w))))}}return f.\u0275fac=function(d){return new(d||f)(c.LFG(c.zs3),c.LFG(c.Sil))},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function sa(f){return function Gr(f){return f&&"object"==typeof f&&"default"in f}(f)?f.default:f}let Wr=(()=>{class f{get hasRequestedNavigation(){return 0!==this.navigationId}constructor(){this.currentNavigation=null,this.lastSuccessfulNavigation=null,this.events=new pt.x,this.configLoader=(0,c.f3M)(ki),this.environmentInjector=(0,c.f3M)(c.lqb),this.urlSerializer=(0,c.f3M)(mn),this.rootContexts=(0,c.f3M)(Eo),this.navigationId=0,this.afterPreactivation=()=>(0,M.of)(void 0),this.rootComponentType=null,this.configLoader.onLoadEndListener=w=>this.events.next(new ko(w)),this.configLoader.onLoadStartListener=w=>this.events.next(new ti(w))}complete(){var d;null===(d=this.transitions)||void 0===d||d.complete()}handleNavigationRequest(d){var _;const w=++this.navigationId;null===(_=this.transitions)||void 0===_||_.next({...this.transitions.value,...d,id:w})}setupNavigations(d){return this.transitions=new re.X({id:0,targetPageId:0,currentUrlTree:d.currentUrlTree,currentRawUrl:d.currentUrlTree,extractedUrl:d.urlHandlingStrategy.extract(d.currentUrlTree),urlAfterRedirects:d.urlHandlingStrategy.extract(d.currentUrlTree),rawUrl:d.currentUrlTree,extras:{},resolve:null,reject:null,promise:Promise.resolve(!0),source:Gn,restoredState:null,currentSnapshot:d.routerState.snapshot,targetSnapshot:null,currentRouterState:d.routerState,targetRouterState:null,guards:{canActivateChecks:[],canDeactivateChecks:[]},guardsResult:null}),this.transitions.pipe((0,ee.h)(_=>0!==_.id),(0,ne.U)(_=>({..._,extractedUrl:d.urlHandlingStrategy.extract(_.rawUrl)})),(0,q.w)(_=>{let w=!1,N=!1;return(0,M.of)(_).pipe((0,$e.b)(V=>{this.currentNavigation={id:V.id,initialUrl:V.rawUrl,extractedUrl:V.extractedUrl,trigger:V.source,extras:V.extras,previousNavigation:this.lastSuccessfulNavigation?{...this.lastSuccessfulNavigation,previousNavigation:null}:null}}),(0,q.w)(V=>{var Ae;const We=d.browserUrlTree.toString(),ft=!d.navigated||V.extractedUrl.toString()!==We||We!==d.currentUrlTree.toString(),Ot=null!==(Ae=V.extras.onSameUrlNavigation)&&void 0!==Ae?Ae:d.onSameUrlNavigation;if(!ft&&"reload"!==Ot){const Et="";return this.events.next(new lo(V.id,d.serializeUrl(_.rawUrl),Et,0)),d.rawUrlTree=V.rawUrl,V.resolve(null),Ee.E}if(d.urlHandlingStrategy.shouldProcessUrl(V.rawUrl))return _r(V.source)&&(d.browserUrlTree=V.extractedUrl),(0,M.of)(V).pipe((0,q.w)(Et=>{var Cn,Hn;const vi=null===(Cn=this.transitions)||void 0===Cn?void 0:Cn.getValue();return this.events.next(new Si(Et.id,this.urlSerializer.serialize(Et.extractedUrl),Et.source,Et.restoredState)),vi!==(null===(Hn=this.transitions)||void 0===Hn?void 0:Hn.getValue())?Ee.E:Promise.resolve(Et)}),function wa(f,p,d,_){return(0,q.w)(w=>function oa(f,p,d,_,w){return new ra(f,p,d,_,w).apply()}(f,p,d,w.extractedUrl,_).pipe((0,ne.U)(N=>({...w,urlAfterRedirects:N}))))}(this.environmentInjector,this.configLoader,this.urlSerializer,d.config),(0,$e.b)(Et=>{this.currentNavigation={...this.currentNavigation,finalUrl:Et.urlAfterRedirects},_.urlAfterRedirects=Et.urlAfterRedirects}),function an(f,p,d,_,w){return(0,ae.z)(N=>function On(f,p,d,_,w,N,V="emptyOnly"){return new hs(f,p,d,_,w,V,N).recognize().pipe((0,q.w)(Ae=>null===Ae?function mr(f){return new Z.y(p=>p.error(f))}(new ui):(0,M.of)(Ae)))}(f,p,d,N.urlAfterRedirects,_.serialize(N.urlAfterRedirects),_,w).pipe((0,ne.U)(V=>({...N,targetSnapshot:V}))))}(this.environmentInjector,this.rootComponentType,d.config,this.urlSerializer,d.paramsInheritanceStrategy),(0,$e.b)(Et=>{if(_.targetSnapshot=Et.targetSnapshot,"eager"===d.urlUpdateStrategy){if(!Et.extras.skipLocationChange){const Hn=d.urlHandlingStrategy.merge(Et.urlAfterRedirects,Et.rawUrl);d.setBrowserUrl(Hn,Et)}d.browserUrlTree=Et.urlAfterRedirects}const Cn=new Io(Et.id,this.urlSerializer.serialize(Et.extractedUrl),this.urlSerializer.serialize(Et.urlAfterRedirects),Et.targetSnapshot);this.events.next(Cn)}));if(ft&&d.urlHandlingStrategy.shouldProcessUrl(d.rawUrlTree)){const{id:Et,extractedUrl:Cn,source:Hn,restoredState:vi,extras:Uo}=V,go=new Si(Et,this.urlSerializer.serialize(Cn),Hn,vi);this.events.next(go);const So=Co(Cn,this.rootComponentType).snapshot;return _={...V,targetSnapshot:So,urlAfterRedirects:Cn,extras:{...Uo,skipLocationChange:!1,replaceUrl:!1}},(0,M.of)(_)}{const Et="";return this.events.next(new lo(V.id,d.serializeUrl(_.extractedUrl),Et,1)),d.rawUrlTree=V.rawUrl,V.resolve(null),Ee.E}}),(0,$e.b)(V=>{const Ae=new zo(V.id,this.urlSerializer.serialize(V.extractedUrl),this.urlSerializer.serialize(V.urlAfterRedirects),V.targetSnapshot);this.events.next(Ae)}),(0,ne.U)(V=>_={...V,guards:gi(V.targetSnapshot,V.currentSnapshot,this.rootContexts)}),function di(f,p){return(0,ae.z)(d=>{const{targetSnapshot:_,currentSnapshot:w,guards:{canActivateChecks:N,canDeactivateChecks:V}}=d;return 0===V.length&&0===N.length?(0,M.of)({...d,guardsResult:!0}):function Sn(f,p,d,_){return(0,o.D)(f).pipe((0,ae.z)(w=>function Ma(f,p,d,_,w){const N=p&&p.routeConfig?p.routeConfig.canDeactivate:null;if(!N||0===N.length)return(0,M.of)(!0);const V=N.map(Ae=>{var We;const ft=null!==(We=zi(p))&&void 0!==We?We:w,Ot=$i(Ae,ft);return R(function S(f){return f&&zt(f.canDeactivate)}(Ot)?Ot.canDeactivate(f,p,d,_):ft.runInContext(()=>Ot(f,p,d,_))).pipe(ke())});return(0,M.of)(V).pipe(fn())}(w.component,w.route,d,p,_)),ke(w=>!0!==w,!0))}(V,_,w,f).pipe((0,ae.z)(Ae=>Ae&&function Is(f){return"boolean"==typeof f}(Ae)?function eo(f,p,d,_){return(0,o.D)(p).pipe((0,Xe.b)(w=>(0,fe.z)(function _i(f,p){return null!==f&&p&&p(new Ui(f)),(0,M.of)(!0)}(w.route.parent,_),function to(f,p){return null!==f&&p&&p(new rr(f)),(0,M.of)(!0)}(w.route,_),function No(f,p,d){const _=p[p.length-1],N=p.slice(0,p.length-1).reverse().map(V=>function ls(f){const p=f.routeConfig?f.routeConfig.canActivateChild:null;return p&&0!==p.length?{node:f,guards:p}:null}(V)).filter(V=>null!==V).map(V=>(0,Se.P)(()=>{const Ae=V.guards.map(We=>{var ft;const Ot=null!==(ft=zi(V.node))&&void 0!==ft?ft:d,Et=$i(We,Ot);return R(function na(f){return f&&zt(f.canActivateChild)}(Et)?Et.canActivateChild(_,f):Ot.runInContext(()=>Et(_,f))).pipe(ke())});return(0,M.of)(Ae).pipe(fn())}));return(0,M.of)(N).pipe(fn())}(f,w.path,d),function Lo(f,p,d){const _=p.routeConfig?p.routeConfig.canActivate:null;if(!_||0===_.length)return(0,M.of)(!0);const w=_.map(N=>(0,Se.P)(()=>{var V;const Ae=null!==(V=zi(p))&&void 0!==V?V:d,We=$i(N,Ae);return R(function Fn(f){return f&&zt(f.canActivate)}(We)?We.canActivate(p,f):Ae.runInContext(()=>We(p,f))).pipe(ke())}));return(0,M.of)(w).pipe(fn())}(f,w.route,d))),ke(w=>!0!==w,!0))}(_,N,f,p):(0,M.of)(Ae)),(0,ne.U)(Ae=>({...d,guardsResult:Ae})))})}(this.environmentInjector,V=>this.events.next(V)),(0,$e.b)(V=>{if(_.guardsResult=V.guardsResult,un(V.guardsResult))throw ws(0,V.guardsResult);const Ae=new kr(V.id,this.urlSerializer.serialize(V.extractedUrl),this.urlSerializer.serialize(V.urlAfterRedirects),V.targetSnapshot,!!V.guardsResult);this.events.next(Ae)}),(0,ee.h)(V=>!!V.guardsResult||(d.restoreHistory(V),this.cancelNavigationTransition(V,"",3,d),!1)),ii(V=>{if(V.guards.canActivateChecks.length)return(0,M.of)(V).pipe((0,$e.b)(Ae=>{const We=new co(Ae.id,this.urlSerializer.serialize(Ae.extractedUrl),this.urlSerializer.serialize(Ae.urlAfterRedirects),Ae.targetSnapshot);this.events.next(We)}),(0,q.w)(Ae=>{let We=!1;return(0,M.of)(Ae).pipe(function Wt(f,p){return(0,ae.z)(d=>{const{targetSnapshot:_,guards:{canActivateChecks:w}}=d;if(!w.length)return(0,M.of)(d);let N=0;return(0,o.D)(w).pipe((0,Xe.b)(V=>function Mn(f,p,d,_){const w=f.routeConfig,N=f._resolve;return void 0!==(null==w?void 0:w.title)&&!Gi(w)&&(N[yn]=w.title),function pn(f,p,d,_){const w=function qn(f){return[...Object.keys(f),...Object.getOwnPropertySymbols(f)]}(f);if(0===w.length)return(0,M.of)({});const N={};return(0,o.D)(w).pipe((0,ae.z)(V=>function fo(f,p,d,_){var w;const N=null!==(w=zi(p))&&void 0!==w?w:_,V=$i(f,N);return R(V.resolve?V.resolve(p,d):N.runInContext(()=>V(p,d)))}(f[V],p,d,_).pipe(ke(),(0,$e.b)(Ae=>{N[V]=Ae}))),mt(1),(0,jt.h)(N),At(V=>ce(V)?Ee.E:se(V)))}(N,f,p,_).pipe((0,ne.U)(V=>(f._resolvedData=V,f.data=ar(f,d).resolve,w&&Gi(w)&&(f.data[yn]=w.title),null)))}(V.route,_,f,p)),(0,$e.b)(()=>N++),mt(1),(0,ae.z)(V=>N===w.length?(0,M.of)(d):Ee.E))})}(d.paramsInheritanceStrategy,this.environmentInjector),(0,$e.b)({next:()=>We=!0,complete:()=>{We||(d.restoreHistory(Ae),this.cancelNavigationTransition(Ae,"",2,d))}}))}),(0,$e.b)(Ae=>{const We=new ei(Ae.id,this.urlSerializer.serialize(Ae.extractedUrl),this.urlSerializer.serialize(Ae.urlAfterRedirects),Ae.targetSnapshot);this.events.next(We)}))}),ii(V=>{const Ae=We=>{var ft;const Ot=[];null!==(ft=We.routeConfig)&&void 0!==ft&&ft.loadComponent&&!We.routeConfig._loadedComponent&&Ot.push(this.configLoader.loadComponent(We.routeConfig).pipe((0,$e.b)(Et=>{We.component=Et}),(0,ne.U)(()=>{})));for(const Et of We.children)Ot.push(...Ae(Et));return Ot};return(0,H.a)(Ae(V.targetSnapshot.root)).pipe(Pe(),(0,j.q)(1))}),ii(()=>this.afterPreactivation()),(0,ne.U)(V=>{const Ae=function lr(f,p,d){const _=Xi(f,p._root,d?d._root:void 0);return new uo(_,p)}(d.routeReuseStrategy,V.targetSnapshot,V.currentRouterState);return _={...V,targetRouterState:Ae}}),(0,$e.b)(V=>{d.currentUrlTree=V.urlAfterRedirects,d.rawUrlTree=d.urlHandlingStrategy.merge(V.urlAfterRedirects,V.rawUrl),d.routerState=V.targetRouterState,"deferred"===d.urlUpdateStrategy&&(V.extras.skipLocationChange||d.setBrowserUrl(d.rawUrlTree,V),d.browserUrlTree=V.urlAfterRedirects)}),((f,p,d)=>(0,ne.U)(_=>(new Ur(p,_.targetRouterState,_.currentRouterState,d).activate(f),_)))(this.rootContexts,d.routeReuseStrategy,V=>this.events.next(V)),(0,$e.b)({next:V=>{var Ae;w=!0,this.lastSuccessfulNavigation=this.currentNavigation,d.navigated=!0,this.events.next(new sn(V.id,this.urlSerializer.serialize(V.extractedUrl),this.urlSerializer.serialize(d.currentUrlTree))),null===(Ae=d.titleStrategy)||void 0===Ae||Ae.updateTitle(V.targetRouterState.snapshot),V.resolve(!0)},complete:()=>{w=!0}}),Lt(()=>{var V;w||N||this.cancelNavigationTransition(_,"",1,d),(null===(V=this.currentNavigation)||void 0===V?void 0:V.id)===_.id&&(this.currentNavigation=null)}),At(V=>{if(N=!0,Lr(V)){cr(V)||(d.navigated=!0,d.restoreHistory(_,!0));const We=new Ci(_.id,this.urlSerializer.serialize(_.extractedUrl),V.message,V.cancellationCode);if(this.events.next(We),cr(V)){const ft=d.urlHandlingStrategy.merge(V.url,d.rawUrlTree),Ot={skipLocationChange:_.extras.skipLocationChange,replaceUrl:"eager"===d.urlUpdateStrategy||_r(_.source)};d.scheduleNavigation(ft,Gn,null,Ot,{resolve:_.resolve,reject:_.reject,promise:_.promise})}else _.resolve(!1)}else{var Ae;d.restoreHistory(_,!0);const We=new Qt(_.id,this.urlSerializer.serialize(_.extractedUrl),V,null!==(Ae=_.targetSnapshot)&&void 0!==Ae?Ae:void 0);this.events.next(We);try{_.resolve(d.errorHandler(V))}catch(ft){_.reject(ft)}}return Ee.E}))}))}cancelNavigationTransition(d,_,w,N){const V=new Ci(d.id,this.urlSerializer.serialize(d.extractedUrl),_,w);this.events.next(V),d.resolve(!1)}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function _r(f){return f!==Gn}let Qo=(()=>{class f{buildTitle(d){let _,w=d.root;for(;void 0!==w;){var N;_=null!==(N=this.getResolvedTitleForRoute(w))&&void 0!==N?N:_,w=w.children.find(V=>V.outlet===It)}return _}getResolvedTitleForRoute(d){return d.data[yn]}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return(0,c.f3M)(al)},providedIn:"root"}),f})(),al=(()=>{class f extends Qo{constructor(d){super(),this.title=d}updateTitle(d){const _=this.buildTitle(d);void 0!==_&&this.title.setTitle(_)}}return f.\u0275fac=function(d){return new(d||f)(c.LFG(hn.Dx))},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Yr=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return(0,c.f3M)(Ns)},providedIn:"root"}),f})();class aa{shouldDetach(p){return!1}store(p,d){}shouldAttach(p){return!1}retrieve(p){return null}shouldReuseRoute(p,d){return p.routeConfig===d.routeConfig}}let Ns=(()=>{class f extends aa{}return f.\u0275fac=function(){let p;return function(_){return(p||(p=c.n5z(f)))(_||f)}}(),f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const hi=new c.OlP("",{providedIn:"root",factory:()=>({})});let la=(()=>{class f{}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:function(){return(0,c.f3M)(Bs)},providedIn:"root"}),f})(),Bs=(()=>{class f{shouldProcessUrl(d){return!0}extract(d){return d}merge(d,_){return d}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();function ll(f){throw f}function Vs(f,p,d){return p.parse("/")}const ca={paths:"exact",fragment:"ignored",matrixParams:"ignored",queryParams:"exact"},cl={paths:"subset",fragment:"ignored",matrixParams:"ignored",queryParams:"subset"};let Ei=(()=>{class f{get navigationId(){return this.navigationTransitions.navigationId}get browserPageId(){var d;return null===(d=this.location.getState())||void 0===d?void 0:d.\u0275routerPageId}get events(){return this.navigationTransitions.events}constructor(){var d;this.disposed=!1,this.currentPageId=0,this.console=(0,c.f3M)(c.c2e),this.isNgZoneEnabled=!1,this.options=(0,c.f3M)(hi,{optional:!0})||{},this.errorHandler=this.options.errorHandler||ll,this.malformedUriErrorHandler=this.options.malformedUriErrorHandler||Vs,this.navigated=!1,this.lastSuccessfulId=-1,this.urlHandlingStrategy=(0,c.f3M)(la),this.routeReuseStrategy=(0,c.f3M)(Yr),this.urlCreationStrategy=(0,c.f3M)(Oi),this.titleStrategy=(0,c.f3M)(Qo),this.onSameUrlNavigation=this.options.onSameUrlNavigation||"ignore",this.paramsInheritanceStrategy=this.options.paramsInheritanceStrategy||"emptyOnly",this.urlUpdateStrategy=this.options.urlUpdateStrategy||"deferred",this.canceledNavigationResolution=this.options.canceledNavigationResolution||"replace",this.config=G(null!==(d=(0,c.f3M)(oi,{optional:!0}))&&void 0!==d?d:[]),this.navigationTransitions=(0,c.f3M)(Wr),this.urlSerializer=(0,c.f3M)(mn),this.location=(0,c.f3M)(_t.Ye),this.isNgZoneEnabled=(0,c.f3M)(c.R0b)instanceof c.R0b&&c.R0b.isInAngularZone(),this.resetConfig(this.config),this.currentUrlTree=new te,this.rawUrlTree=this.currentUrlTree,this.browserUrlTree=this.currentUrlTree,this.routerState=Co(this.currentUrlTree,null),this.navigationTransitions.setupNavigations(this).subscribe(_=>{this.lastSuccessfulId=_.id,this.currentPageId=_.targetPageId},_=>{this.console.warn(`Unhandled Navigation Error: ${_}`)})}resetRootComponentType(d){this.routerState.root.component=d,this.navigationTransitions.rootComponentType=d}initialNavigation(){if(this.setUpLocationChangeListener(),!this.navigationTransitions.hasRequestedNavigation){const d=this.location.getState();this.navigateToSyncWithBrowser(this.location.path(!0),Gn,d)}}setUpLocationChangeListener(){this.locationSubscription||(this.locationSubscription=this.location.subscribe(d=>{const _="popstate"===d.type?"popstate":"hashchange";"popstate"===_&&setTimeout(()=>{this.navigateToSyncWithBrowser(d.url,_,d.state)},0)}))}navigateToSyncWithBrowser(d,_,w){const N={replaceUrl:!0},V=null!=w&&w.navigationId?w:null;if(w){const We={...w};delete We.navigationId,delete We.\u0275routerPageId,0!==Object.keys(We).length&&(N.state=We)}const Ae=this.parseUrl(d);this.scheduleNavigation(Ae,_,V,N)}get url(){return this.serializeUrl(this.currentUrlTree)}getCurrentNavigation(){return this.navigationTransitions.currentNavigation}resetConfig(d){this.config=d.map(ji),this.navigated=!1,this.lastSuccessfulId=-1}ngOnDestroy(){this.dispose()}dispose(){this.navigationTransitions.complete(),this.locationSubscription&&(this.locationSubscription.unsubscribe(),this.locationSubscription=void 0),this.disposed=!0}createUrlTree(d,_={}){const{relativeTo:w,queryParams:N,fragment:V,queryParamsHandling:Ae,preserveFragment:We}=_,ft=We?this.currentUrlTree.fragment:V;let Ot=null;switch(Ae){case"merge":Ot={...this.currentUrlTree.queryParams,...N};break;case"preserve":Ot=this.currentUrlTree.queryParams;break;default:Ot=N||null}return null!==Ot&&(Ot=this.removeEmptyProps(Ot)),this.urlCreationStrategy.createUrlTree(w,this.routerState,this.currentUrlTree,d,Ot,null!=ft?ft:null)}navigateByUrl(d,_={skipLocationChange:!1}){const w=un(d)?d:this.parseUrl(d),N=this.urlHandlingStrategy.merge(w,this.rawUrlTree);return this.scheduleNavigation(N,Gn,null,_)}navigate(d,_={skipLocationChange:!1}){return function Kr(f){for(let p=0;p{const N=d[w];return null!=N&&(_[w]=N),_},{})}scheduleNavigation(d,_,w,N,V){if(this.disposed)return Promise.resolve(!1);let Ae,We,ft,Ot;if(V?(Ae=V.resolve,We=V.reject,ft=V.promise):ft=new Promise((Hn,vi)=>{Ae=Hn,We=vi}),"computed"===this.canceledNavigationResolution)if(w&&w.\u0275routerPageId)Ot=w.\u0275routerPageId;else if(N.replaceUrl||N.skipLocationChange){var Et;Ot=null!==(Et=this.browserPageId)&&void 0!==Et?Et:0}else{var Cn;Ot=(null!==(Cn=this.browserPageId)&&void 0!==Cn?Cn:0)+1}else Ot=0;return this.navigationTransitions.handleNavigationRequest({targetPageId:Ot,source:_,restoredState:w,currentUrlTree:this.currentUrlTree,currentRawUrl:this.currentUrlTree,rawUrl:d,extras:N,resolve:Ae,reject:We,promise:ft,currentSnapshot:this.routerState.snapshot,currentRouterState:this.routerState}),ft.catch(Hn=>Promise.reject(Hn))}setBrowserUrl(d,_){const w=this.urlSerializer.serialize(d),N={..._.extras.state,...this.generateNgRouterState(_.id,_.targetPageId)};this.location.isCurrentPathEqualTo(w)||_.extras.replaceUrl?this.location.replaceState(w,"",N):this.location.go(w,"",N)}restoreHistory(d,_=!1){if("computed"===this.canceledNavigationResolution){var w,N;const V=this.currentPageId-d.targetPageId;"popstate"!==d.source&&"eager"!==this.urlUpdateStrategy&&this.currentUrlTree!==(null===(w=this.getCurrentNavigation())||void 0===w?void 0:w.finalUrl)||0===V?this.currentUrlTree===(null===(N=this.getCurrentNavigation())||void 0===N?void 0:N.finalUrl)&&0===V&&(this.resetState(d),this.browserUrlTree=d.currentUrlTree,this.resetUrlToCurrentUrlTree()):this.location.historyGo(V)}else"replace"===this.canceledNavigationResolution&&(_&&this.resetState(d),this.resetUrlToCurrentUrlTree())}resetState(d){this.routerState=d.currentRouterState,this.currentUrlTree=d.currentUrlTree,this.rawUrlTree=this.urlHandlingStrategy.merge(this.currentUrlTree,d.rawUrl)}resetUrlToCurrentUrlTree(){this.location.replaceState(this.urlSerializer.serialize(this.rawUrlTree),"",this.generateNgRouterState(this.lastSuccessfulId,this.currentPageId))}generateNgRouterState(d,_){return"computed"===this.canceledNavigationResolution?{navigationId:d,\u0275routerPageId:_}:{navigationId:d}}}return f.\u0275fac=function(d){return new(d||f)},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})(),Us=(()=>{class f{constructor(d,_,w,N,V,Ae){this.router=d,this.route=_,this.tabIndexAttribute=w,this.renderer=N,this.el=V,this.locationStrategy=Ae,this._preserveFragment=!1,this._skipLocationChange=!1,this._replaceUrl=!1,this.href=null,this.commands=null,this.onChanges=new pt.x;const We=V.nativeElement.tagName;this.isAnchorElement="A"===We||"AREA"===We,this.isAnchorElement?this.subscription=d.events.subscribe(ft=>{ft instanceof sn&&this.updateHref()}):this.setTabIndexIfNotOnNativeEl("0")}set preserveFragment(d){this._preserveFragment=(0,c.D6c)(d)}get preserveFragment(){return this._preserveFragment}set skipLocationChange(d){this._skipLocationChange=(0,c.D6c)(d)}get skipLocationChange(){return this._skipLocationChange}set replaceUrl(d){this._replaceUrl=(0,c.D6c)(d)}get replaceUrl(){return this._replaceUrl}setTabIndexIfNotOnNativeEl(d){null!=this.tabIndexAttribute||this.isAnchorElement||this.applyAttributeValue("tabindex",d)}ngOnChanges(d){this.isAnchorElement&&this.updateHref(),this.onChanges.next(this)}set routerLink(d){null!=d?(this.commands=Array.isArray(d)?d:[d],this.setTabIndexIfNotOnNativeEl("0")):(this.commands=null,this.setTabIndexIfNotOnNativeEl(null))}onClick(d,_,w,N,V){return!!(null===this.urlTree||this.isAnchorElement&&(0!==d||_||w||N||V||"string"==typeof this.target&&"_self"!=this.target))||(this.router.navigateByUrl(this.urlTree,{skipLocationChange:this.skipLocationChange,replaceUrl:this.replaceUrl,state:this.state}),!this.isAnchorElement)}ngOnDestroy(){var d;null===(d=this.subscription)||void 0===d||d.unsubscribe()}updateHref(){var d;this.href=null!==this.urlTree&&this.locationStrategy?null===(d=this.locationStrategy)||void 0===d?void 0:d.prepareExternalUrl(this.router.serializeUrl(this.urlTree)):null;const _=null===this.href?null:(0,c.P3R)(this.href,this.el.nativeElement.tagName.toLowerCase(),"href");this.applyAttributeValue("href",_)}applyAttributeValue(d,_){const w=this.renderer,N=this.el.nativeElement;null!==_?w.setAttribute(N,d,_):w.removeAttribute(N,d)}get urlTree(){return null===this.commands?null:this.router.createUrlTree(this.commands,{relativeTo:void 0!==this.relativeTo?this.relativeTo:this.route,queryParams:this.queryParams,fragment:this.fragment,queryParamsHandling:this.queryParamsHandling,preserveFragment:this.preserveFragment})}}return f.\u0275fac=function(d){return new(d||f)(c.Y36(Ei),c.Y36(Kn),c.$8M("tabindex"),c.Y36(c.Qsj),c.Y36(c.SBq),c.Y36(_t.S$))},f.\u0275dir=c.lG2({type:f,selectors:[["","routerLink",""]],hostVars:1,hostBindings:function(d,_){1&d&&c.NdJ("click",function(N){return _.onClick(N.button,N.ctrlKey,N.shiftKey,N.altKey,N.metaKey)}),2&d&&c.uIk("target",_.target)},inputs:{target:"target",queryParams:"queryParams",fragment:"fragment",queryParamsHandling:"queryParamsHandling",state:"state",relativeTo:"relativeTo",preserveFragment:"preserveFragment",skipLocationChange:"skipLocationChange",replaceUrl:"replaceUrl",routerLink:"routerLink"},standalone:!0,features:[c.TTD]}),f})();class Zr{}let fs=(()=>{class f{constructor(d,_,w,N,V){this.router=d,this.injector=w,this.preloadingStrategy=N,this.loader=V}setUpPreloading(){this.subscription=this.router.events.pipe((0,ee.h)(d=>d instanceof sn),(0,Xe.b)(()=>this.preload())).subscribe(()=>{})}preload(){return this.processRoutes(this.injector,this.router.config)}ngOnDestroy(){this.subscription&&this.subscription.unsubscribe()}processRoutes(d,_){const w=[];for(const We of _){var N,V;We.providers&&!We._injector&&(We._injector=(0,c.MMx)(We.providers,d,`Route: ${We.path}`));const ft=null!==(N=We._injector)&&void 0!==N?N:d,Ot=null!==(V=We._loadedInjector)&&void 0!==V?V:ft;if(We.loadChildren&&!We._loadedRoutes&&void 0===We.canLoad||We.loadComponent&&!We._loadedComponent)w.push(this.preloadConfig(ft,We));else if(We.children||We._loadedRoutes){var Ae;w.push(this.processRoutes(Ot,null!==(Ae=We.children)&&void 0!==Ae?Ae:We._loadedRoutes))}}return(0,o.D)(w).pipe((0,yt.J)())}preloadConfig(d,_){return this.preloadingStrategy.preload(_,()=>{let w;w=_.loadChildren&&void 0===_.canLoad?this.loader.loadChildren(d,_):(0,M.of)(null);const N=w.pipe((0,ae.z)(V=>{var Ae;return null===V?(0,M.of)(void 0):(_._loadedRoutes=V.routes,_._loadedInjector=V.injector,this.processRoutes(null!==(Ae=V.injector)&&void 0!==Ae?Ae:d,V.routes))}));if(_.loadComponent&&!_._loadedComponent){const V=this.loader.loadComponent(_);return(0,o.D)([N,V]).pipe((0,yt.J)())}return N})}}return f.\u0275fac=function(d){return new(d||f)(c.LFG(Ei),c.LFG(c.Sil),c.LFG(c.lqb),c.LFG(Zr),c.LFG(ki))},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac,providedIn:"root"}),f})();const Bo=new c.OlP("");let js=(()=>{class f{constructor(d,_,w,N,V={}){this.urlSerializer=d,this.transitions=_,this.viewportScroller=w,this.zone=N,this.options=V,this.lastId=0,this.lastSource="imperative",this.restoredId=0,this.store={},V.scrollPositionRestoration=V.scrollPositionRestoration||"disabled",V.anchorScrolling=V.anchorScrolling||"disabled"}init(){"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.setHistoryScrollRestoration("manual"),this.routerEventsSubscription=this.createScrollEvents(),this.scrollEventsSubscription=this.consumeScrollEvents()}createScrollEvents(){return this.transitions.events.subscribe(d=>{d instanceof Si?(this.store[this.lastId]=this.viewportScroller.getScrollPosition(),this.lastSource=d.navigationTrigger,this.restoredId=d.restoredState?d.restoredState.navigationId:0):d instanceof sn&&(this.lastId=d.id,this.scheduleScrollEvent(d,this.urlSerializer.parse(d.urlAfterRedirects).fragment))})}consumeScrollEvents(){return this.transitions.events.subscribe(d=>{d instanceof Pr&&(d.position?"top"===this.options.scrollPositionRestoration?this.viewportScroller.scrollToPosition([0,0]):"enabled"===this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition(d.position):d.anchor&&"enabled"===this.options.anchorScrolling?this.viewportScroller.scrollToAnchor(d.anchor):"disabled"!==this.options.scrollPositionRestoration&&this.viewportScroller.scrollToPosition([0,0]))})}scheduleScrollEvent(d,_){this.zone.runOutsideAngular(()=>{setTimeout(()=>{this.zone.run(()=>{this.transitions.events.next(new Pr(d,"popstate"===this.lastSource?this.store[this.restoredId]:null,_))})},0)})}ngOnDestroy(){var d,_;null===(d=this.routerEventsSubscription)||void 0===d||d.unsubscribe(),null===(_=this.scrollEventsSubscription)||void 0===_||_.unsubscribe()}}return f.\u0275fac=function(d){c.$Z()},f.\u0275prov=c.Yz7({token:f,factory:f.\u0275fac}),f})();function br(f,p){return{\u0275kind:f,\u0275providers:p}}function qr(){const f=(0,c.f3M)(c.zs3);return p=>{var d,_;const w=f.get(c.z2F);if(p!==w.components[0])return;const N=f.get(Ei),V=f.get(Vo);1===f.get(mo)&&N.initialNavigation(),null===(d=f.get(xr,null,c.XFs.Optional))||void 0===d||d.setUpPreloading(),null===(_=f.get(Bo,null,c.XFs.Optional))||void 0===_||_.init(),N.resetRootComponentType(w.componentTypes[0]),V.closed||(V.next(),V.unsubscribe())}}const Vo=new c.OlP("",{factory:()=>new pt.x}),mo=new c.OlP("",{providedIn:"root",factory:()=>1});const xr=new c.OlP("");function Wl(f){return br(0,[{provide:xr,useExisting:fs},{provide:Zr,useExisting:f}])}const $s=new c.OlP("ROUTER_FORROOT_GUARD"),Yl=[_t.Ye,{provide:mn,useClass:gn},Ei,Eo,{provide:Kn,useFactory:function vr(f){return f.routerState.root},deps:[Ei]},ki,[]];function fl(){return new c.PXZ("Router",Ei)}let Kl=(()=>{class f{constructor(d){}static forRoot(d,_){return{ngModule:f,providers:[Yl,[],{provide:oi,multi:!0,useValue:d},{provide:$s,useFactory:Zl,deps:[[Ei,new c.FiY,new c.tp0]]},{provide:hi,useValue:_||{}},null!=_&&_.useHash?{provide:_t.S$,useClass:_t.Do}:{provide:_t.S$,useClass:_t.b0},{provide:Bo,useFactory:()=>{const f=(0,c.f3M)(_t.EM),p=(0,c.f3M)(c.R0b),d=(0,c.f3M)(hi),_=(0,c.f3M)(Wr),w=(0,c.f3M)(mn);return d.scrollOffset&&f.setOffset(d.scrollOffset),new js(w,_,f,p,d)}},null!=_&&_.preloadingStrategy?Wl(_.preloadingStrategy).\u0275providers:[],{provide:c.PXZ,multi:!0,useFactory:fl},null!=_&&_.initialNavigation?Xn(_):[],[{provide:ps,useFactory:qr},{provide:c.tb,multi:!0,useExisting:ps}]]}}static forChild(d){return{ngModule:f,providers:[{provide:oi,multi:!0,useValue:d}]}}}return f.\u0275fac=function(d){return new(d||f)(c.LFG($s,8))},f.\u0275mod=c.oAB({type:f}),f.\u0275inj=c.cJS({imports:[dr]}),f})();function Zl(f){return"guarded"}function Xn(f){return["disabled"===f.initialNavigation?br(3,[{provide:c.ip1,multi:!0,useFactory:()=>{const p=(0,c.f3M)(Ei);return()=>{p.setUpLocationChangeListener()}}},{provide:mo,useValue:2}]).\u0275providers:[],"enabledBlocking"===f.initialNavigation?br(2,[{provide:mo,useValue:0},{provide:c.ip1,multi:!0,deps:[c.zs3],useFactory:p=>{const d=p.get(_t.V_,Promise.resolve());return()=>d.then(()=>new Promise(w=>{const N=p.get(Ei),V=p.get(Vo);(function _(w){p.get(Ei).events.pipe((0,ee.h)(V=>V instanceof sn||V instanceof Ci||V instanceof Qt),(0,ne.U)(V=>V instanceof sn||V instanceof Ci&&(0===V.code||1===V.code)&&null),(0,ee.h)(V=>null!==V),(0,j.q)(1)).subscribe(()=>{w()})})(()=>{w(!0)}),p.get(Wr).afterPreactivation=()=>(w(!0),V.closed?(0,M.of)(void 0):V),N.initialNavigation()}))}}]).\u0275providers:[]]}const ps=new c.OlP("")},5861:(ze,me,b)=>{function c(M,re,Q,H,fe,Se,ie){try{var Z=M[Se](ie),ye=Z.value}catch(se){return void Q(se)}Z.done?re(ye):Promise.resolve(ye).then(H,fe)}function o(M){return function(){var re=this,Q=arguments;return new Promise(function(H,fe){var Se=M.apply(re,Q);function ie(ye){c(Se,H,fe,ie,Z,"next",ye)}function Z(ye){c(Se,H,fe,ie,Z,"throw",ye)}ie(void 0)})}}b.d(me,{Z:()=>o})}},ze=>{ze(ze.s=284)}]); \ No newline at end of file diff --git a/server/src/uds/templates/uds/admin/index.html b/server/src/uds/templates/uds/admin/index.html index 9340bd0c7..cf6c9bc1d 100644 --- a/server/src/uds/templates/uds/admin/index.html +++ b/server/src/uds/templates/uds/admin/index.html @@ -99,7 +99,7 @@ - + \ No newline at end of file diff --git a/server/src/uds/transports/HTML5RDP/html5rdp.py b/server/src/uds/transports/HTML5RDP/html5rdp.py index ba299994e..55fd1ffca 100644 --- a/server/src/uds/transports/HTML5RDP/html5rdp.py +++ b/server/src/uds/transports/HTML5RDP/html5rdp.py @@ -1,4 +1,4 @@ -# -*- coding: utf-8 -*- +# pylint: disable=no-member # For some reason, pylint does not detect the Tab member of gui # # Copyright (c) 2012-2022 Virtual Cable S.L.U. @@ -39,12 +39,13 @@ from django.utils.translation import gettext_noop as _ from uds.core.ui import gui from uds.core import transports, exceptions from uds.core.util import os_detector as OsDetector -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds import models +from uds.core.util.model import getSqlDatetime # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser from uds.core.util.os_detector import DetectedOsInfo @@ -319,10 +320,8 @@ class HTML5RDPTransport(transports.Transport): # Strip spaces and all trailing '/' self.guacamoleServer.value = self.guacamoleServer.value.strip().rstrip('/') if self.guacamoleServer.value[0:4] != 'http': - raise exceptions.ValidationError( - _('The server must be http or https') - ) - #if self.useEmptyCreds.isTrue() and self.security.value != 'rdp': + raise exceptions.ValidationError(_('The server must be http or https')) + # if self.useEmptyCreds.isTrue() and self.security.value != 'rdp': # raise exceptions.ValidationException( # _( # 'Empty credentials (on Credentials tab) is only allowed with Security level (on Parameters tab) set to "RDP"' @@ -380,9 +379,11 @@ class HTML5RDPTransport(transports.Transport): username = proc[0] azureAd = False - if self.fixedDomain.value != '': - domain = self.fixedDomain.value + if self.fixedDomain.value.lower() == 'azuread': + azureAd = True + else: + domain = self.fixedDomain.value if self.useEmptyCreds.isTrue(): username, password, domain = '', '', '' @@ -394,6 +395,10 @@ class HTML5RDPTransport(transports.Transport): username = username + '@' + domain domain = '' + # If AzureAD, include it on username + if azureAd: + username = 'AzureAD\\' + username + # Fix username/password acording to os manager username, password = userService.processUserPassword(username, password) @@ -409,10 +414,10 @@ class HTML5RDPTransport(transports.Transport): userService: 'models.UserService', transport: 'models.Transport', ip: str, - os: 'DetectedOsInfo', + os: 'DetectedOsInfo', # pylint: disable=unused-argument user: 'models.User', password: str, - request: 'ExtendedHttpRequestWithUser', + request: 'ExtendedHttpRequestWithUser', # pylint: disable=unused-argument ) -> str: credsInfo = self.getConnectionInfo(userService, user, password) username, password, domain = ( @@ -421,10 +426,11 @@ class HTML5RDPTransport(transports.Transport): credsInfo['domain'], ) - scrambler = cryptoManager().randomString(32) - passwordCrypted = cryptoManager().symCrypt(password, scrambler) + scrambler = CryptoManager().randomString(32) + passwordCrypted = CryptoManager().symCrypt(password, scrambler) - as_txt = lambda x: 'true' if x else 'false' + def as_txt(txt: typing.Any) -> str: + return 'true' if txt else 'false' # Build params dict params = { @@ -442,7 +448,7 @@ class HTML5RDPTransport(transports.Transport): 'disable-upload': as_txt( self.enableFileSharing.value not in ('true', 'up') ), - 'drive-path': '/share/{}'.format(user.uuid), + 'drive-path': f'/share/{user.uuid}', 'drive-name': 'UDSfs', 'disable-copy': as_txt( self.enableClipboard.value in ('dis-copy', 'disabled') @@ -457,20 +463,26 @@ class HTML5RDPTransport(transports.Transport): }, } - if not password and self.security.value != 'rdp': # No password, but not rdp, so we need to use creds popup - extra_params=f'&creds={username}@{domain}' + if ( + not password and self.security.value != 'rdp' + ): # No password, but not rdp, so we need to use creds popup + extra_params = f'&creds={username}@{domain}' else: - extra_params='' + extra_params = '' + # pylint: disable=using-constant-test if False: # Future imp - sanitize = lambda x: re.sub("[^a-zA-Z0-9_-]", "_", x) + # sanitize = lambda x: re.sub("[^a-zA-Z0-9_-]", "_", x) + def sanitize(text: str) -> str: + return re.sub("[^a-zA-Z0-9_-]", "_", text) + params['recording-path'] = ( '/share/recording/' + sanitize(user.manager.name) + '_' + sanitize(user.name) + '/' - + models.getSqlDatetime().strftime('%Y%m%d-%H%M') + + getSqlDatetime().strftime('%Y%m%d-%H%M') ) params['create-recording-path'] = 'true' @@ -502,9 +514,9 @@ class HTML5RDPTransport(transports.Transport): ticket = models.TicketStore.create(params, validity=self.ticketValidity.num()) - onw = '&o_n_w={}'.format(transport.uuid) + onw = f'&o_n_w={transport.uuid}' if self.forceNewWindow.value == gui.TRUE: - onw = '&o_n_w={}'.format(userService.deployed_service.uuid) + onw = f'&o_n_w={userService.deployed_service.uuid}' elif self.forceNewWindow.value == 'overwrite': onw = '&o_s_w=yes' path = ( @@ -517,12 +529,5 @@ class HTML5RDPTransport(transports.Transport): path = path[:-1] return str( - "{server}{path}/#/?data={ticket}.{scrambler}{onw}{extra_params}".format( - server=self.guacamoleServer.value, - path=path, - ticket=ticket, - scrambler=scrambler, - onw=onw, - extra_params=extra_params, - ) + f'{self.guacamoleServer.value}{path}/#/?data={ticket}.{scrambler}{onw}{extra_params}' ) diff --git a/server/src/uds/transports/HTML5SSH/html5ssh.py b/server/src/uds/transports/HTML5SSH/html5ssh.py index 9b99370ba..9deda3cbe 100644 --- a/server/src/uds/transports/HTML5SSH/html5ssh.py +++ b/server/src/uds/transports/HTML5SSH/html5ssh.py @@ -40,12 +40,12 @@ from uds.core.ui import gui from uds.core import transports, exceptions from uds.core.util import os_detector as OsDetector -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds import models # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser from uds.core.util.os_detector import DetectedOsInfo @@ -66,6 +66,7 @@ class HTML5SSHTransport(transports.Transport): ownLink = True supportedOss = OsDetector.allOss + # pylint: disable=no-member # ??? SSH is there, but pylint does not see it ??? protocol = transports.protocols.SSH group = transports.TUNNELED_GROUP @@ -78,20 +79,20 @@ class HTML5SSHTransport(transports.Transport): defvalue='https://', length=64, required=True, - tab=gui.TUNNEL_TAB, + tab=gui.Tab.TUNNEL, ) username = gui.TextField( label=_('Username'), order=20, tooltip=_('Username for SSH connection authentication.'), - tab=gui.CREDENTIALS_TAB, + tab=gui.Tab.CREDENTIALS, ) password = gui.PasswordField( label=_('Password'), order=21, tooltip=_('Password for SSH connection authentication'), - tab=gui.CREDENTIALS_TAB, + tab=gui.Tab.CREDENTIALS, ) sshPrivateKey = gui.TextField( label=_('SSH Private Key'), @@ -100,7 +101,7 @@ class HTML5SSHTransport(transports.Transport): tooltip=_( 'Private key for SSH authentication. If not provided, password authentication is used.' ), - tab=gui.CREDENTIALS_TAB, + tab=gui.Tab.CREDENTIALS, ) sshPassphrase = gui.PasswordField( label=_('SSH Private Key Passphrase'), @@ -108,7 +109,7 @@ class HTML5SSHTransport(transports.Transport): tooltip=_( 'Passphrase for SSH private key if it is required. If not provided, but it is needed, user will be prompted for it.' ), - tab=gui.CREDENTIALS_TAB, + tab=gui.Tab.CREDENTIALS, ) sshCommand = gui.TextField( @@ -117,7 +118,7 @@ class HTML5SSHTransport(transports.Transport): tooltip=_( 'Command to execute on the remote server. If not provided, an interactive shell will be executed.' ), - tab=gui.PARAMETERS_TAB, + tab=gui.Tab.PARAMETERS, ) enableFileSharing = gui.ChoiceField( label=_('File Sharing'), @@ -130,7 +131,7 @@ class HTML5SSHTransport(transports.Transport): {'id': 'up', 'text': _('Allow upload only')}, {'id': 'true', 'text': _('Enable file sharing')}, ], - tab=gui.PARAMETERS_TAB, + tab=gui.Tab.PARAMETERS, ) fileSharingRoot = gui.TextField( label=_('File Sharing Root'), @@ -138,7 +139,7 @@ class HTML5SSHTransport(transports.Transport): tooltip=_( 'Root path for file sharing. If not provided, root directory will be used.' ), - tab=gui.PARAMETERS_TAB, + tab=gui.Tab.PARAMETERS, ) sshPort = gui.NumericField( length=40, @@ -147,7 +148,7 @@ class HTML5SSHTransport(transports.Transport): order=33, tooltip=_('Port of the SSH server.'), required=True, - tab=gui.PARAMETERS_TAB, + tab=gui.Tab.PARAMETERS, ) sshHostKey = gui.TextField( label=_('SSH Host Key'), @@ -155,7 +156,7 @@ class HTML5SSHTransport(transports.Transport): tooltip=_( 'Host key of the SSH server. If not provided, no verification of host identity is done.' ), - tab=gui.PARAMETERS_TAB, + tab=gui.Tab.PARAMETERS, ) serverKeepAlive = gui.NumericField( length=3, @@ -167,7 +168,7 @@ class HTML5SSHTransport(transports.Transport): ), required=True, minValue=0, - tab=gui.PARAMETERS_TAB, + tab=gui.Tab.PARAMETERS, ) ticketValidity = gui.NumericField( @@ -180,7 +181,7 @@ class HTML5SSHTransport(transports.Transport): ), required=True, minValue=60, - tab=gui.ADVANCED_TAB, + tab=gui.Tab.ADVANCED, ) forceNewWindow = gui.ChoiceField( order=91, @@ -201,7 +202,7 @@ class HTML5SSHTransport(transports.Transport): ), ], defvalue=gui.FALSE, - tab=gui.ADVANCED_TAB, + tab=gui.Tab.ADVANCED ) def initialize(self, values: 'Module.ValuesType'): @@ -211,9 +212,7 @@ class HTML5SSHTransport(transports.Transport): # Remove trailing / (one or more) from url if it exists from "guacamoleServer" field self.guacamoleServer.value = self.guacamoleServer.value.strip().rstrip('/') if self.guacamoleServer.value[0:4] != 'http': - raise exceptions.ValidationError( - _('The server must be http or https') - ) + raise exceptions.ValidationError(_('The server must be http or https')) def isAvailableFor(self, userService: 'models.UserService', ip: str) -> bool: """ @@ -232,13 +231,13 @@ class HTML5SSHTransport(transports.Transport): def getLink( self, - userService: 'models.UserService', + userService: 'models.UserService', # pylint: disable=unused-argument transport: 'models.Transport', ip: str, - os: 'DetectedOsInfo', - user: 'models.User', - password: str, - request: 'ExtendedHttpRequestWithUser', + os: 'DetectedOsInfo', # pylint: disable=unused-argument + user: 'models.User', # pylint: disable=unused-argument + password: str, # pylint: disable=unused-argument + request: 'ExtendedHttpRequestWithUser', # pylint: disable=unused-argument ) -> str: # Build params dict params = { @@ -254,9 +253,9 @@ class HTML5SSHTransport(transports.Transport): # Add optional parameters (strings only) for i in ( ('username', self.username), - ('password', self.password), - ('private-key', self.sshPrivateKey), - ('passphrase', self.sshPassphrase), + # ('password', self.password), + # ('private-key', self.sshPrivateKey), + # ('passphrase', self.sshPassphrase), ('command', self.sshCommand), ('host-key', self.sshHostKey), ): @@ -266,19 +265,19 @@ class HTML5SSHTransport(transports.Transport): # Filesharing using guacamole sftp if self.enableFileSharing.value != 'false': params['enable-sftp'] = 'true' - + if self.fileSharingRoot.value.strip(): params['sftp-root-directory'] = self.fileSharingRoot.value.strip() if self.enableFileSharing.value not in ('down', 'true'): - params['sftp-disable-download'] = 'true' - + params['sftp-disable-download'] = 'true' + if self.enableFileSharing.value not in ('up', 'true'): - params['sftp-disable-upload'] = 'true' + params['sftp-disable-upload'] = 'true' logger.debug('SSH Params: %s', params) - scrambler = cryptoManager().randomString(32) + scrambler = CryptoManager().randomString(32) ticket = models.TicketStore.create(params, validity=self.ticketValidity.num()) onw = '' @@ -289,7 +288,5 @@ class HTML5SSHTransport(transports.Transport): onw = onw.format(hash(transport.name)) return str( - "{}/guacamole/#/?data={}.{}{}".format( - self.guacamoleServer.value, ticket, scrambler, onw - ) + f'{self.guacamoleServer.value}/guacamole/#/?data={ticket}.{scrambler}{onw}' ) diff --git a/server/src/uds/transports/HTML5VNC/html5vnc.py b/server/src/uds/transports/HTML5VNC/html5vnc.py index 157b85a4c..e4c215dbf 100644 --- a/server/src/uds/transports/HTML5VNC/html5vnc.py +++ b/server/src/uds/transports/HTML5VNC/html5vnc.py @@ -38,12 +38,12 @@ from django.utils.translation import gettext_noop as _ from uds.core.ui import gui from uds.core import transports, exceptions from uds.core.util import os_detector as OsDetector -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds import models # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser from uds.core.util.os_detector import DetectedOsInfo @@ -236,7 +236,7 @@ class HTML5VNCTransport(transports.Transport): logger.debug('VNC Params: %s', params) - scrambler = cryptoManager().randomString(32) + scrambler = CryptoManager().randomString(32) ticket = models.TicketStore.create(params, validity=self.ticketValidity.num()) onw = '' @@ -246,8 +246,4 @@ class HTML5VNCTransport(transports.Transport): onw = 'o_s_w=yes' onw = onw.format(hash(transport.name)) - return str( - "{}/guacamole/#/?data={}.{}{}".format( - self.guacamoleServer.value, ticket, scrambler, onw - ) - ) + return f'{self.guacamoleServer.value}/guacamole/#/?data={ticket}.{scrambler}{onw}' diff --git a/server/src/uds/transports/RDP/rdp.py b/server/src/uds/transports/RDP/rdp.py index 2d2b934b7..0f94e5bdd 100644 --- a/server/src/uds/transports/RDP/rdp.py +++ b/server/src/uds/transports/RDP/rdp.py @@ -122,7 +122,7 @@ class RDPTransport(BaseRDPTransport): width == '-1' or height == '-1', width, height, depth, target=os.os ) r.enablecredsspsupport = ci.get('sso') == 'True' or self.credssp.isTrue() - r.address = '{}:{}'.format(ip, self.rdpPort.value) + r.address = f'{ip}:{self.rdpPort.num()}' r.username = username r.password = password r.domain = domain diff --git a/server/src/uds/transports/RDP/rdp_base.py b/server/src/uds/transports/RDP/rdp_base.py index 7d401aea7..4f190eda0 100644 --- a/server/src/uds/transports/RDP/rdp_base.py +++ b/server/src/uds/transports/RDP/rdp_base.py @@ -30,7 +30,6 @@ """ @author: Adolfo Gómez, dkmaster at dkmon dot com """ -import os import logging import typing @@ -39,14 +38,6 @@ from uds.core.ui import gui from uds.core import transports from uds.models import UserService -# TODO: implement this finally? -def createADUser(): - try: - from . import AD # type: ignore - except ImportError: - return - - # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from uds import models @@ -359,8 +350,7 @@ class BaseRDPTransport(transports.Transport): if self.testServer(userService, ip, self.rdpPort.num()) is True: self.cache.put(ip, 'Y', READY_CACHE_TIMEOUT) return True - else: - self.cache.put(ip, 'N', READY_CACHE_TIMEOUT) + self.cache.put(ip, 'N', READY_CACHE_TIMEOUT) return ready == 'Y' def processedUser( @@ -418,6 +408,10 @@ class BaseRDPTransport(transports.Transport): if '\\' in username: domain, username = username.split('\\') + # If AzureAD, include it on username + if azureAd: + username = 'AzureAD\\' + username + return { 'protocol': self.protocol, 'username': username, diff --git a/server/src/uds/transports/RDP/rdp_file.py b/server/src/uds/transports/RDP/rdp_file.py index f2a6043a2..0bf2ca2f6 100644 --- a/server/src/uds/transports/RDP/rdp_file.py +++ b/server/src/uds/transports/RDP/rdp_file.py @@ -1,7 +1,7 @@ # -*- coding: utf-8 -*- # -# Copyright (c) 2012-2022 Virtual Cable S.L.U. +# Copyright (c) 2011-2023 Virtual Cable S.L.U. # All rights reserved. # # Redistribution and use in source and binary forms, with or without modification, @@ -125,8 +125,7 @@ class RDPFile: params.append('/microphone:sys:alsa') else: params.append('/sound') - # Mac does not redirect microphone by default, seems to "cause problems" - # params.append('/microphone') + params.append('/microphone') if self.multimedia: params.append('/video') diff --git a/server/src/uds/transports/RDP/rdptunnel.py b/server/src/uds/transports/RDP/rdptunnel.py index 6b3b1c164..c2a4c7fa4 100644 --- a/server/src/uds/transports/RDP/rdptunnel.py +++ b/server/src/uds/transports/RDP/rdptunnel.py @@ -46,7 +46,7 @@ from .rdp_file import RDPFile # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from uds import models - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser logger = logging.getLogger(__name__) @@ -59,6 +59,7 @@ class TRDPTransport(BaseRDPTransport): Provides access via RDP to service. This transport can use an domain. If username processed by authenticator contains '@', it will split it and left-@-part will be username, and right password """ + isBase = False iconFile = 'rdp-tunnel.png' @@ -91,9 +92,7 @@ class TRDPTransport(BaseRDPTransport): verifyCertificate = gui.CheckBoxField( label=_('Force SSL certificate verification'), order=23, - tooltip=_( - 'If enabled, the certificate of tunnel server will be verified (recommended).' - ), + tooltip=_('If enabled, the certificate of tunnel server will be verified (recommended).'), defvalue=gui.FALSE, tab=gui.Tab.TUNNEL, ) @@ -168,9 +167,7 @@ class TRDPTransport(BaseRDPTransport): tunHost, tunPort = self.tunnelServer.value.split(':') - r = RDPFile( - width == '-1' or height == '-1', width, height, depth, target=os.os - ) + r = RDPFile(width == '-1' or height == '-1', width, height, depth, target=os.os) r.enablecredsspsupport = ci.get('sso') == 'True' or self.credssp.isTrue() r.address = '{address}' r.username = username @@ -237,10 +234,6 @@ class TRDPTransport(BaseRDPTransport): 'Os not valid for RDP Transport: %s', request.META.get('HTTP_USER_AGENT', 'Unknown'), ) - return super().getUDSTransportScript( - userService, transport, ip, os, user, password, request - ) - + return super().getUDSTransportScript(userService, transport, ip, os, user, password, request) return self.getScript(os.os.os_name(), 'tunnel', sp) - diff --git a/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature b/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature index a60d123d6..502179593 100644 --- a/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature +++ b/server/src/uds/transports/RDP/scripts/macosx/direct.py.signature @@ -1 +1 @@ -SijMzRukH+xARWhBXzy3Xu0fCA35ToaOZbn7LhYGxpYAGwMYGz2o6AfproZSSg/PtTwJjurqwGvTGkcS80ZvMMx/xNiHUJw1dUygcKKWBbsra/uEdMTTnkXiZZo61VJAl/Xk74hTbU8f6QEmoZwxXVr+DcrX7kqXhr/YuRxRS16rmWu0mYwu45p45X6tOB5z7ySDXJvjWg8uzdXZwKuUSh0TZi5PKCzzP/u8yVou8t6TkNk4Szh6KA7RcnEzrPzIYnNesfBH0GiFUTo8FYavN4rsTMU3FcYN9dfEy3eqwGsfizJ9c8fXlsYYAS5lO2TyNHq8HwL3uEl1uzihu0Z64pLX5xDC+oSRxMPuFR88XyfzM58bUPbGa/DVnSwKRHJO16tDh4pZ133wO7alSi80VYrgR2OB61LA7NcQlO0iQGjXFSqRoYVXL9mU3yHWngm8jb8UIrXYyyZfKTS46dbqko0BQ2h2n/JPIFS1D0x//rePc5R9Mp/oDrZk1+9JhZ+fPULX/X0jLxxVG9xHhSQ2IscLqswOBbgvqcjsz44+hmdzWwXMABizxMiMk1DOh0caMAKQPvncqCcMwZNsUygLh4GQxxcfLSTFSuEtGgw26sQctmIIhXtcMl0gy/nFY8uvlhwwzVbdbFFumRmB0xyuhYvDOfdFaQrz3i6utuFFaAk= \ No newline at end of file +Z4ThPHbN+CBvMR/JlJta2suqIv1DM81BkyrotTiXlYaeoG76XfXg85CTZ4vhahs0qthUoq6FK3+8fhmDT2NpBsgMx7pEsS3z8vzwbRcDMeuXYL8IPi4R3bYmBk0iFDGcDfcFH1gXsoj8RS9e9qCLjOHZYWNZa7grG/GGEpHque0z5lEGmfcvnjJGwCSxspQBlfPxJXyPjzAgLkYhSvZyf7z2HOqsdzkcBlfeiwgkM1RSj0btgH8qoUKbqpWDRsnjxISh7YMVh6gJdFIG5lrdFK2JOp42Ois974JVCvAQx7lz/DzUqjP3b6Cs4jbB7mL/bKGkYa90fK7L+EgjDqc9VQ47qk8VUX2v82JI7yOEU8HRPmmN1q/1Zerpjg1c1cBfRbFPS6ihoJvBm+1ATLobPkh1VoDOJuw/VOpsAQUProf9pbj7oHQpa2CKkQ5H4pIwjzx1i+QfvcWCkiM/O3K6cgI0sBZp4VBf0qTSVjQmZtbeqIxOrvLh9auQZ3MmHHp7K6TEUD9SCsQBHLfztcJmR00UWdFavLGNaTg/8KSPYCQ/W4sNmkLRPTHAd6cg3EMzmgt34qhFQ810y/HAANy8SM17il2B9oLmNtboSSC1RcWkdTu224Bn3PKBwSQen5NO4jix1KPAZUBV2RAJ1x2mVEExQpPxmLsBKuq5rgRQ5HM= \ No newline at end of file diff --git a/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature index a9f656bf7..1bdae3563 100644 --- a/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature +++ b/server/src/uds/transports/RDP/scripts/macosx/tunnel.py.signature @@ -1 +1 @@ -lr9WxhxFvFzpPIWqffvflnfr6E+Vif26jUQXaIKjStnA2ypDSGuWorP9AaAVIZhs0Dx/rYLPw1J2kp0HnvCdBoTQwWj7yO/96EJ4NbuSHH78IwHlERgK2jT2IhSmU0J8fQV5xZy6e6hgRgmoRmeA+MA8NLw8vfGBw9oJRAZG0uYmr+vCQpk8xVSnOK+joR7v5WNer7vlcT6izObAFW2EYpfvC91wY1/eUcpp9eyUxZcG4OeBu/gubCU4gm7i9JVojEh4zdU7SOaHX/RyvT7I3Y3krOV/fjCrIKIFkgvN3E45udpcl786z96pt3qDZ8X8jmxJZ641mzHE+nFKmUITKVUiXEX1+lifRWgl+x1YfatYrfSbVzSmMd+cMtXg54QVnmOzsUqPFQDB1b0IPXWI3ybQyVbkwbAFT2U86AZVoUDA0Kq4ZO7cyTDGwNVqbU2VERYMoSEphutSrZ+vEMxkTdmkM1LrJDm/fWV04jbW3MjPgOSyyul/xjQtYChBaTVFmQXbCH/BQsqMtjBjubixmK/jM7hP28FdJMtad+BxWSZsvQIaDjc80S+NgE2Yavu161SPu4fA34kQhZH4DkzkgS8xLCe2L9hrIrhWVrMhGxCl/9IhvKy4xDfbelxMcgr8X9m8NqwI6yn+qK96/6+NqfqUJ01h2/A7jta+7dze7c8= \ No newline at end of file +Q66JHGZ0NBpsbeUEn0xB1duWTpDwu6rQHmlW7G5dccYXDY3vlRatQt2MgiXL4WpT7EaIRoLGX+UauY5wjJaf7+IXYVhttv6fziZ4QCr+wOsoZZYImfeB7obMqYK0iGsM1F5XzVxdnnF/c6rnCqSKlvcScHwMIP9t1ZjMqneadkCXng5MgdLwcRGfP6ZJPoocTjMRr5iFF3dj3LoVFgsIYL3zMUrsAkUNGqextDPDjegmRIwJ5uPTozrGSXEHIKHSJfGJhwHc/jlLkyswVpJE646YL9B1C0Gy1y9hof5e7wv0eZGTNyE6ke+gG7iT9vt6r2xvABJxrldnlwUBjisE4ylE3DG+VGJqGopjFdfJGwH52AHGCfTyfEBXBVI8JU5EI6Mzh3b9uMpm+03Zf0zMoJfGJD4s+eViJEI22UqawYPMGFrFAL//DpwrBA5QGPgfERmtAzSw2PaZDxTy2EQnbzub7Zd8ijKeYWBbRSb1v3vJUgss1MNV2SxV7uuwRp0f3XNBzTInwsy1hHLMj00Drn3mw6/jrnOoZ8130l9CGz3sBLht7pQP83BK9Xa3iP/nTsDgE+ud2Y4UtGQmeEkT5A3XVhPeNi3ZdLth6BjWHZljER4bBcIBlwjDQMPkH7AHn2IChBtPoLCgSzG9ZAGWBTzL3LlSBjiQDcYIxqumBy0= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/linux/tunnel.py b/server/src/uds/transports/SPICE/scripts/linux/tunnel.py index 1bb1e5dbc..05133f562 100644 --- a/server/src/uds/transports/SPICE/scripts/linux/tunnel.py +++ b/server/src/uds/transports/SPICE/scripts/linux/tunnel.py @@ -38,6 +38,7 @@ if sp['ticket']: # type: ignore fss = None if sp['ticket_secure']: # type: ignore # Open tunnel + theFile = sp['as_file'] fss = forward(remote=(sp['tunHost'], int(sp['tunPort'])), ticket=sp['ticket_secure'], timeout=sp['tunWait'], check_certificate=sp['tunChk']) # type: ignore # Check that tunnel works.. diff --git a/server/src/uds/transports/SPICE/scripts/linux/tunnel.py.signature b/server/src/uds/transports/SPICE/scripts/linux/tunnel.py.signature index 8e77965d1..a02e6fd76 100644 --- a/server/src/uds/transports/SPICE/scripts/linux/tunnel.py.signature +++ b/server/src/uds/transports/SPICE/scripts/linux/tunnel.py.signature @@ -1 +1 @@ -QXLFvR9cYf0v0SLEBYE8VcY6UMirU/z8htzXU1Qzz89r6hcmsolTyYLuafGNzmcv4qs6qLU4zfXdr4khTzx4utwsSA52dJX5lDs4lN+9p8GCFDKw+Ky4jiE70OaWouwL8ryBmm6RJ/A6pMGPr8DPRWbib27uMm8BR08rSwal0gpbxufGnxs3WS9zm7Ye8AzQ5woSArBl788239yjBqW1L/1ynGdwXUr4NFlE1DOu6v77iO7igbbD9ros8fqKwi1c7q6T8fk6zrDYGZIV3/6d444yuk7zB9mucpz6Uv96fwYr5f62n7hNANRF5M4zdQpNcn1Awf40EAkF+zBUGqGZhAnYQgodYGLKzHflGJ/zDe+0oN0CbTAIW+DqTlijdXHa0iRwE6YjWVAZ/rNvWnYpNPkMX2hRzG9xVPf2GWnUSpl1+lk5DLNmlwSOB+kX6uX9u8W7OI3Xuy7geNGsIsxmDve03h/tTlzWdAPpAcI/ZlcIS0wfnmAVrMxPXuykekewuq9/S2XhUsQy078+dhFbFHNKz9JAhkiR0fiDMSCnbQbtZ4VscPVwkPfa3wwIbauLAv0i5+XHnOnXUc/zqE70af+kyTssx8fDZ6js6m/njsd5zJ/Gn4cKRfLxeVhwPW682q32Gko+4hJA16jPw0mQZHKZb0SXM+4Db0B0968kNY4= \ No newline at end of file +nIHuZ7FPPHZ6q7ITXxr+JKKVs38SDJiexURVymKXPIQmslDVOGcxRfrSu3RqujQ8MdtvJy7UOU90pBbOFANGo4hws5pY0ZndaVydzdrg3l8FBrbe+yGziFFXFfaby5xuRC2caCnngQZt5vv3jtL4dvIsaujaIIWw3Sqo8Oc23KguKwrGeIJhzbRmY3rJ+z0oHieJ8iDLhNKs725G8X4yo91IDQ73eFCGod9jwJwlGmYdk9hCvgvU1cuzESGzkHt3Fwzk6VGfDdRCJdxIP4CEgGgabBJiKKpsa6XnnLWuWPXFcut4uK7dmy17qOo8cgS2mlvo6ItT8IygSEyMciqs4ZnQ4dl5CUryvhxodmmiNTPvMgJQVVEMrOHZ7lVEYuWr3tD9uxyqBtD28ADDTLC84v5kWgXLXo9AdhQ5gZw/dChSTsitH95jbMLBDgeTmXNukboSkHjT1erfsohexEoPQQpFiQOS4mBxzbnF1/4vC7r8RyIOLg9XAlsRbGLF/sDx+5itLxgESJzjD+fx4o2dXuKfYmpsSCcf1ZZpA2a9x6hzNWg5WdVQG7FwdY/l8ySFZDzxb1IDZGW+1cpcYIzuYh3tQqmRQhInU0eszKL/Kj0/KvCqgseBfCtiSPntRrh0YsYfxJlBGfjBv9aKkTwfXV1x9oQV3pyw9DQoJGatVBo= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py index 0f59fe420..42c931325 100644 --- a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py +++ b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py @@ -42,6 +42,7 @@ if sp['ticket']: # type: ignore fss = None if sp['ticket_secure']: # type: ignore # Open tunnel + theFile = sp['as_file'] fss = forward(remote=(sp['tunHost'], int(sp['tunPort'])), ticket=sp['ticket_secure'], timeout=sp['tunWait'], check_certificate=sp['tunChk']) # type: ignore # Check that tunnel works.. diff --git a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature index d19f6ac39..4099accf3 100644 --- a/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature +++ b/server/src/uds/transports/SPICE/scripts/macosx/tunnel.py.signature @@ -1 +1 @@ -c4Xc2bgxDptIAkPoSkiiTxakb6Dh00Q8ZFDtIJ4GsaBC4mW4soE08f8ftX4Gcope7snM21uBL5h5R4CGi4JEgzL4Xw64w6uWvahIKLmYboXvvBt+aa7wSxmEYdMQ3qXnYqqINJ9YggD6XM5LTP2xuCSKfiwPVt6mQ8Kq4PS/iea/4Ve8jJguEBs3C+k6lR3b1gvZsTEbRpfsGT7Q+srHGi4WDVTpuht24W4GD1qjhCBjtfgZLPtlM0b/Gsd5lLUwiCY9FHcugRdFVV1MvaC8O3vv52YUVZmocoGToPV3XIA1dtjf+HzIWVB35IsXqDoThxwWYI9V8vDDEO7R2GW0g+PDzPFgd6itm1tsgIC4+Vf+jtAUyDYHyIECNlX5/j50+mNJyo+FY5jd9KRQzwcrWEpM7G89U412DdsB3Sdu0LvRlgKFVaHx9VELwV6mlBDSKB7Zl1E35bXyY9b8BNLDoxFkuITSRkzrDTiwFczNErmtYaOQm5RuaaYFXCeBB7fwtB+lyj53r6SFUCyD5hoa12/Wn94w9kwsNWQZTZ5lHMsmjFgQsPwTY20l97xTewhA4viS3wJ7JT3Ez9CdlmH3qVnZcl9IspuX0DV0GNG2pdgajVH0Ptp1gJ37w7JHfOJw8ZuUceCgSuz+ctsigomCQ6LDCecV07zPSilCix6D2Js= \ No newline at end of file +R+jK8cEVtr/3Q7bVB2K71l+RS8hnJH+oGRCHjYPjLGHM3O3xvDRdicMQ5FKD+n4l0Sb4apKD6BLyCxnMbQnC+9TWWAimgC7i4dzzi/Ef/ls6IrsC1t0jk7D5k0gcm2vPwPCsRJj+IWw3ZuCZ4WnuGWBZ4bY4reG3U3hNnV31tCfkVcehr587w6zIbC6j2YkNFwI/CagzgUmFPq5KedNG1zgaZer6mWinBxoqnhczQUlp9NgRAZp8szanruaIg1ur0f5LkYXA1uhDhDbL6kBocdSg3fiMxzp2OBSLHhXM2WgQNhRwm3hCgHC69gliLPUdFkxNxie3l5mmOErjDtKYXWLrfQdX6S0B7yOdyLqpj9K1rQ/GQcYc7fcxuXFNptem0gwXuUUjutNcp6mAVyrVC/GD7aqFG5F3C5RaeFhe6sx7vd2rfkmT2OvNQS6cQsjLGvLCRUqvebOTKcpncK3CBOEJxPbV0qMdCMlwaFHVjJ+udk95Fr+gOQmgvrlFtSsrOxJPa7L3UwCArWcrdH/mnaBdYM2EIN0vBmTWWjRnzrOs11EAAOCPJiSmShTWEd1nGsUq5+x2TNIUmy6jBAfKg2hyTtzoS5+v6M/GgWtS3mFDVVmY9T0qYEBJxCC1l1FVXPxf08ulf0i1yds7mXRIYw1lvoAycoDAulW8lYz0oFM= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/scripts/windows/tunnel.py b/server/src/uds/transports/SPICE/scripts/windows/tunnel.py index 16dcb5030..4a1ae37b2 100644 --- a/server/src/uds/transports/SPICE/scripts/windows/tunnel.py +++ b/server/src/uds/transports/SPICE/scripts/windows/tunnel.py @@ -44,6 +44,7 @@ if sp['ticket']: # type: ignore fss = None if sp['ticket_secure']: # type: ignore + theFile = sp['as_file'] # Open tunnel fss = forward(remote=(sp['tunHost'], int(sp['tunPort'])), ticket=sp['ticket_secure'], timeout=sp['tunWait'], check_certificate=sp['tunChk']) # type: ignore diff --git a/server/src/uds/transports/SPICE/scripts/windows/tunnel.py.signature b/server/src/uds/transports/SPICE/scripts/windows/tunnel.py.signature index 1fb2d898d..ff3f869fa 100644 --- a/server/src/uds/transports/SPICE/scripts/windows/tunnel.py.signature +++ b/server/src/uds/transports/SPICE/scripts/windows/tunnel.py.signature @@ -1 +1 @@ -T/rWfvR8sW4KLGct+/gvX3gU7Et8a+k4Dh2R0pdWqqRPeGciduBHpQHS8NDcF8aaWGVONcXoqNtg/ZqL8c+/ghKtRjAKLT8XnLoPrtjn4oHvr+YI6xFoNCuVXj5ZtHbIQZK0WFhobweD0GEaNBnNYFS+BLelR4uXhS4JmQc6yc8gJ8JpEUCOlFQ2R1N+I8xMUtNl+GQEKDypcrgf4QczwOV+54QKdwRrwW38Ao7C+aJYFfieMNku0EtKnaCS4o6dLkurJgQg0BCCPXywD8zHzvVdlo04frLGmCEyKg78FSbfeOTitabEmEP+i0riCEMJ8Dp4RFPu9I3cbwD2wuogg4psv63pHHaBJYwNVPJHxpPE0TxKDcljsoHL0jFEnDfHbtWNf56rnzEXSZKwXOWiSKVMDXEkc/AceBrNSf9i5gWyRv8I6CxCMEU4mjoyzklaenAdAgUty4UONEHuPL/TAJAlmYUd082ER4luJbTk41sM6JedgwkgltebVOLVkzx1z/Q618KWyDCCkedVnD8qcgAZ3Prjln7XhYCD1u/c16mAp8K3Xi++7D5kiojAFhYcXmxANI5vaf/AFXeZX+kcJaeJD9iGdJKpR6TMtwjvIqPyON98eSW3DvnWbZ3j3g8xZub60x1aYXgLb+IuXIFnSFt/A5FeUT2yslqAB06V1W0= \ No newline at end of file +IVIhkY9yqNTdG4AZlfklACy2g2GmQlTIfyeroN8urW+QfJD/oPg+MQ8qY95YKbQd2+s6FUMXj/qf8EpWJ8Je5SyuvW48nyDinEPhelQk0YF/A8Y2k+3v20wW5xgpBT2QYvLeM2QFC8PON/9HMhCOpyeJIqhDi0EopPbXfzGXbUBqHhIsD0t3uL2FdPGHCkexdTCqRjFTxPIG10ctrS73yWkLj407pVZumPeSpxYVTNK7FAX1N0mRZIZcEpp5c9BCzOPrgKCzoLPo6s5eg007B8W9StZBOrjnGYP763FJHlhrRBIzVkUTGQD2sX4WIfS8ZGzpT7YbTYDytNEAgNuOVN3vp8nugCNXSsyy02Q6Pr8/WAbAssW/Z/f/T1tpIPPMMHpb2Ufu5KRaSfFLbmuXgGdK1YEe9Z4FQnanjpie1jXuGGoTEVQDSwjOOCrvtqADFmBgu9IhJDNjr27Z3v6Bf0sUZVFfXkVwcQcuokZ1on3TD20aiQICX4XPC/lOxCKZiUS5WggpF/r9WBhkBsQUohVgr2R+zSvIK1mnv9+BvpTTV6cL/Htkxh79TF/BcSqtP3g/enjWGEkkFkfMRY3oO2+6ktRI3Bj6IfAYirR9y4IX8Ln7StIZFRVkAco+t/ckGl5WVK8NZDmQF63CLsrhgoT3RomxBa8XJkXPnQtxhss= \ No newline at end of file diff --git a/server/src/uds/transports/SPICE/spice_base.py b/server/src/uds/transports/SPICE/spice_base.py index 1341165ff..ecf71e211 100644 --- a/server/src/uds/transports/SPICE/spice_base.py +++ b/server/src/uds/transports/SPICE/spice_base.py @@ -127,7 +127,7 @@ class BaseSpiceTransport(transports.Transport): tooltip=_('If not empty, this proxy will be used to connect to the service instead of the one provided by the hypervisor. Format: http://host:port'), required=False, tab=gui.Tab.ADVANCED, - pattern=gui.TextField.PatternTypes.URL, + pattern=gui.TextField.PatternType.URL, ) overridedProxy = gui.TextField( @@ -135,7 +135,7 @@ class BaseSpiceTransport(transports.Transport): label=_('Override Proxy'), tooltip=_('If not empty, this proxy will be used to connect to the service instead of the one provided by the hypervisor. Format: http://host:port'), required=False, - tab=gui.ADVANCED_TAB, + tab=gui.Tab.ADVANCED, ) def isAvailableFor(self, userService: 'models.UserService', ip: str) -> bool: diff --git a/server/src/uds/transports/SPICE/spicetunnel.py b/server/src/uds/transports/SPICE/spicetunnel.py index f40be3d4f..b46ab8db2 100644 --- a/server/src/uds/transports/SPICE/spicetunnel.py +++ b/server/src/uds/transports/SPICE/spicetunnel.py @@ -45,7 +45,7 @@ from .remote_viewer_file import RemoteViewerFile # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from uds import models - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser from uds.core.util import os_detector @@ -148,14 +148,12 @@ class TSPICETransport(BaseSpiceTransport): validity=self.tunnelWait.num() + 60, # Ticket overtime ) - r = RemoteViewerFile( - con.get('address', ''), - con.get('port',''), - con.get('secure_port', ''), - con['ticket']['value'], # password - con.get('ca', self.serverCertificate.value.strip()), - con['cert_subject'], - fullscreen=self.fullScreen.isTrue(), + if con['secure_port']: + ticket_secure = TicketStore.create_for_tunnel( + userService=userService, + port=int(con['secure_port']), + host=con['address'], + validity=self.tunnelWait.num() + 60, # Ticket overtime ) r = RemoteViewerFile( diff --git a/server/src/uds/transports/Test/transport.py b/server/src/uds/transports/Test/transport.py index fbcd6d283..b25e5e88c 100644 --- a/server/src/uds/transports/Test/transport.py +++ b/server/src/uds/transports/Test/transport.py @@ -42,7 +42,7 @@ from uds import models # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser from uds.core.util.os_detector import DetectedOsInfo diff --git a/server/src/uds/transports/URL/url_custom.py b/server/src/uds/transports/URL/url_custom.py index 0ae596c9a..f56c6845e 100644 --- a/server/src/uds/transports/URL/url_custom.py +++ b/server/src/uds/transports/URL/url_custom.py @@ -42,7 +42,7 @@ from uds import models # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser from uds.core.util.os_detector import DetectedOsInfo diff --git a/server/src/uds/transports/X2GO/scripts/authorize.py b/server/src/uds/transports/X2GO/scripts/authorize.py index b585b971c..6fafe0826 100644 --- a/server/src/uds/transports/X2GO/scripts/authorize.py +++ b/server/src/uds/transports/X2GO/scripts/authorize.py @@ -1,4 +1,5 @@ -# may be executed on old python version +# may be executed on old python versions? (should not, but keep compat for a while more) +# pylint: disable=all from __future__ import unicode_literals import sys @@ -6,10 +7,6 @@ import os import errno import pwd -USER = '__USER__' -KEY = '__KEY__' - - def logError(err): print(err) @@ -20,14 +17,16 @@ def updateAuthorizedKeys(user, pubKey): logError('Not a linux platform') return + userInfo = pwd.getpwnam(user) + # Create .ssh on user home - home = os.path.expanduser('~{}'.format(user)) + home = userInfo.pw_dir.rstrip('/') if not os.path.exists(home): # User not found, nothing done logError('Home folder for user {} not found'.format(user)) return - uid = pwd.getpwnam(user).pw_uid + uid = userInfo.pw_uid sshFolder = '{}/.ssh'.format(home) if not os.path.exists(sshFolder): @@ -61,4 +60,5 @@ def updateAuthorizedKeys(user, pubKey): # Done -updateAuthorizedKeys(USER, KEY) +# __USER__ and __KEY__ will be replaced by the real values, they are placeholders (and must be left as is) +updateAuthorizedKeys('__USER__', '__KEY__') diff --git a/server/src/uds/transports/X2GO/x2go.py b/server/src/uds/transports/X2GO/x2go.py index e801352af..0ce1f77b5 100644 --- a/server/src/uds/transports/X2GO/x2go.py +++ b/server/src/uds/transports/X2GO/x2go.py @@ -34,7 +34,6 @@ import logging import typing from django.utils.translation import gettext_noop as _ -from uds.core.util import os_detector as OsDetector from .x2go_base import BaseX2GOTransport from . import x2go_file diff --git a/server/src/uds/transports/X2GO/x2go_base.py b/server/src/uds/transports/X2GO/x2go_base.py index 9d1cff8d6..ede11d16f 100644 --- a/server/src/uds/transports/X2GO/x2go_base.py +++ b/server/src/uds/transports/X2GO/x2go_base.py @@ -38,7 +38,7 @@ import typing import paramiko from django.utils.translation import gettext_noop as _, gettext_lazy -from uds.core.managers import userServiceManager +from uds.core.managers.user_service import UserServiceManager from uds.core.managers.user_preferences import CommonPrefs from uds.core.ui import gui from uds.core import transports @@ -52,7 +52,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) READY_CACHE_TIMEOUT = 30 -SSH_KEY_LENGTH = 1024 +SSH_KEY_LENGTH = 2048 class BaseX2GOTransport(transports.Transport): @@ -269,11 +269,11 @@ class BaseX2GOTransport(transports.Transport): key.write_private_key(privFile) priv = privFile.getvalue() - pub = key.get_base64() # 'ssh-rsa {} UDS@X2GOCLIENT'.format(key.get_base64()) + pub = key.get_base64() return priv, pub def getAuthorizeScript(self, user: str, pubKey: str) -> str: - with open(os.path.join(os.path.dirname(__file__), 'scripts/authorize.py')) as f: + with open(os.path.join(os.path.dirname(__file__), 'scripts/authorize.py'), encoding='utf8') as f: data = f.read() return data.replace('__USER__', user).replace('__KEY__', pubKey) @@ -283,5 +283,5 @@ class BaseX2GOTransport(transports.Transport): ) -> typing.Tuple[str, str]: priv, pub = self.genKeyPairForSsh() authScript = self.getAuthorizeScript(userName, pub) - userServiceManager().sendScript(userService, authScript) + UserServiceManager().sendScript(userService, authScript) return priv, pub diff --git a/server/src/uds/transports/X2GO/x2gotunnel.py b/server/src/uds/transports/X2GO/x2gotunnel.py index 526ebb9a3..ea31a8b54 100644 --- a/server/src/uds/transports/X2GO/x2gotunnel.py +++ b/server/src/uds/transports/X2GO/x2gotunnel.py @@ -44,7 +44,7 @@ from . import x2go_file # Not imported at runtime, just for type checking if typing.TYPE_CHECKING: from uds import models - from uds.core import Module + from uds.core.module import Module from uds.core.util.request import ExtendedHttpRequestWithUser from uds.core.util.os_detector import DetectedOsInfo diff --git a/server/src/uds/transports/__init__.py b/server/src/uds/transports/__init__.py index d332598e4..14082b39e 100644 --- a/server/src/uds/transports/__init__.py +++ b/server/src/uds/transports/__init__.py @@ -38,7 +38,7 @@ To create a new transport module, you will need to follow this steps: The registration of modules is done locating subclases of :py:class:`uds.core.auths.Authentication` -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ from uds.core.util import modfinder diff --git a/server/src/uds/web/util/configjs.py b/server/src/uds/web/util/configjs.py index 817b0341d..e30e9cf38 100644 --- a/server/src/uds/web/util/configjs.py +++ b/server/src/uds/web/util/configjs.py @@ -27,7 +27,7 @@ # OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. """ -.. moduleauthor:: Adolfo Gómez, dkmaster at dkmon dot com +Author: Adolfo Gómez, dkmaster at dkmon dot com """ import json import logging diff --git a/server/src/uds/web/util/services.py b/server/src/uds/web/util/services.py index 567ec8b8d..eacda911b 100644 --- a/server/src/uds/web/util/services.py +++ b/server/src/uds/web/util/services.py @@ -42,11 +42,12 @@ from uds.models import ( ServicePoolGroup, MetaPool, TicketStore, - getSqlDatetime, ) +from uds.core.util.model import getSqlDatetime from uds.core.util.config import GlobalConfig from uds.core.util import html -from uds.core.managers import cryptoManager, userServiceManager +from uds.core.managers.user_service import UserServiceManager +from uds.core.managers.crypto import CryptoManager from uds.core.services.exceptions import ( ServiceNotReadyError, MaxServicesReachedError, @@ -66,6 +67,7 @@ if typing.TYPE_CHECKING: logger = logging.getLogger(__name__) +# pylint: disable=too-many-arguments def _serviceInfo( uuid: str, is_meta: bool, @@ -106,11 +108,10 @@ def _serviceInfo( } +# pylint: disable=too-many-locals, too-many-branches, too-many-statements def getServicesData( request: 'ExtendedHttpRequestWithUser', -) -> typing.Dict[ - str, typing.Any -]: # pylint: disable=too-many-locals, too-many-branches, too-many-statements +) -> typing.Dict[str, typing.Any]: # pylint: disable=too-many-locals, too-many-branches, too-many-statements """Obtains the service data dictionary will all available services for this request Arguments: @@ -167,20 +168,19 @@ def getServicesData( ): yield t except Exception as e: - logger.warning( - 'Transport %s of %s not found. Ignoring. (%s)', t, member.pool, e - ) + logger.warning('Transport %s of %s not found. Ignoring. (%s)', t, member.pool, e) def buildMetaTransports( - transports: typing.Iterable[Transport], - isLabel: bool, + transports: typing.Iterable[Transport], isLabel: bool, meta: 'MetaPool' ) -> typing.List[typing.Mapping[str, typing.Any]]: - idd = lambda i: i.uuid if not isLabel else 'LABEL:' + i.label + def idd(i): + return i.uuid if not isLabel else 'LABEL:' + i.label + return [ { 'id': idd(i), 'name': i.name, - 'link': html.udsAccessLink(request, 'M' + meta.uuid, idd(i)), + 'link': html.udsAccessLink(request, 'M' + meta.uuid, idd(i)), # type: ignore 'priority': i.priority, } for i in transports @@ -195,23 +195,21 @@ def getServicesData( inAll: typing.Optional[typing.Set[str]] = None tmpSet: typing.Set[str] - if ( - meta.transport_grouping == MetaPool.COMMON_TRANSPORT_SELECT - ): # If meta.use_common_transports + if meta.transport_grouping == MetaPool.COMMON_TRANSPORT_SELECT: # If meta.use_common_transports # only keep transports that are in ALL members for member in meta.members.all().order_by('priority'): tmpSet = set() # if first pool, get all its transports and check that are valid for t in transportIterator(member): if inAll is None: - tmpSet.add(t.uuid) + tmpSet.add(t.uuid) # type: ignore elif t.uuid in inAll: # For subsequent, reduce... - tmpSet.add(t.uuid) + tmpSet.add(t.uuid) # type: ignore inAll = tmpSet # tmpSet has ALL common transports metaTransports = buildMetaTransports( - Transport.objects.filter(uuid__in=inAll or []), isLabel=False + Transport.objects.filter(uuid__in=inAll or []), isLabel=False, meta=meta ) elif meta.transport_grouping == MetaPool.LABEL_TRANSPORT_SELECT: ltrans: typing.MutableMapping[str, Transport] = {} @@ -231,7 +229,7 @@ def getServicesData( inAll = tmpSet # tmpSet has ALL common transports metaTransports = buildMetaTransports( - (v for k, v in ltrans.items() if k in (inAll or set())), isLabel=True + (v for k, v in ltrans.items() if k in (inAll or set())), isLabel=True, meta=meta ) else: for member in meta.members.all(): @@ -249,16 +247,14 @@ def getServicesData( { 'id': 'meta', 'name': 'meta', - 'link': html.udsAccessLink( - request, 'M' + meta.uuid, None - ), + 'link': html.udsAccessLink(request, 'M' + meta.uuid, None), # type: ignore 'priority': 0, } ] break # if not in_use and meta.number_in_use: # Only look for assignation on possible used - # assignedUserService = userServiceManager().getExistingAssignationForUser(pool, request.user) + # assignedUserService = UserServiceManager().getExistingAssignationForUser(pool, request.user) # if assignedUserService: # in_use = assignedUserService.in_use @@ -269,9 +265,7 @@ def getServicesData( # If no usable pools, this is not visible if metaTransports: group: typing.MutableMapping[str, typing.Any] = ( - meta.servicesPoolGroup.as_dict - if meta.servicesPoolGroup - else ServicePoolGroup.default().as_dict + meta.servicesPoolGroup.as_dict if meta.servicesPoolGroup else ServicePoolGroup.default().as_dict ) services.append( @@ -311,19 +305,12 @@ def getServicesData( sPool.transports.all(), key=lambda x: x.priority ): # In memory sort, allows reuse prefetched and not too big array typeTrans = t.getType() - if ( - typeTrans - and t.validForIp(request.ip) - and typeTrans.supportsOs(osType) - and t.validForOs(osType) - ): + if typeTrans and t.validForIp(request.ip) and typeTrans.supportsOs(osType) and t.validForOs(osType): if typeTrans.ownLink: - link = reverse('TransportOwnLink', args=('F' + sPool.uuid, t.uuid)) + link = reverse('TransportOwnLink', args=('F' + sPool.uuid, t.uuid)) # type: ignore else: - link = html.udsAccessLink(request, 'F' + sPool.uuid, t.uuid) - trans.append( - {'id': t.uuid, 'name': t.name, 'link': link, 'priority': t.priority} - ) + link = html.udsAccessLink(request, 'F' + sPool.uuid, t.uuid) # type: ignore + trans.append({'id': t.uuid, 'name': t.name, 'link': link, 'priority': t.priority}) # If empty transports, do not include it on list if not trans: @@ -332,14 +319,12 @@ def getServicesData( # Locate if user service has any already assigned user service for this. Use "pre cached" number of assignations in this pool to optimize in_use = typing.cast(typing.Any, sPool).number_in_use > 0 # if svr.number_in_use: # Anotated value got from getDeployedServicesForGroups(...). If 0, no assignation for this user - # ads = userServiceManager().getExistingAssignationForUser(svr, request.user) + # ads = UserServiceManager().getExistingAssignationForUser(svr, request.user) # if ads: # in_use = ads.in_use group = ( - sPool.servicesPoolGroup.as_dict - if sPool.servicesPoolGroup - else ServicePoolGroup.default().as_dict + sPool.servicesPoolGroup.as_dict if sPool.servicesPoolGroup else ServicePoolGroup.default().as_dict ) # Only add toBeReplaced info in case we allow it. This will generate some "overload" on the services @@ -351,9 +336,7 @@ def getServicesData( ) # tbr = False if toBeReplacedDate: - toBeReplaced = formats.date_format( - toBeReplacedDate, 'SHORT_DATETIME_FORMAT' - ) + toBeReplaced = formats.date_format(toBeReplacedDate, 'SHORT_DATETIME_FORMAT') toBeReplacedTxt = gettext( 'This service is about to be replaced by a new version. Please, close the session before {} and save all your work to avoid loosing it.' ).format(toBeReplacedDate) @@ -366,6 +349,7 @@ def getServicesData( # if sPool.service.getType().usesCache is False: # maxDeployed = sPool.service.getInstance().maxDeployed + # pylint: disable=cell-var-from-loop def datator(x) -> str: return ( x.replace('{use}', use_percent) @@ -380,9 +364,7 @@ def getServicesData( is_meta=False, name=datator(sPool.name), visual_name=datator( - sPool.visual_name.replace('{use}', use_percent).replace( - '{total}', maxDeployed - ) + sPool.visual_name.replace('{use}', use_percent).replace('{total}', maxDeployed) ), description=sPool.comments, group=group, @@ -403,9 +385,7 @@ def getServicesData( # logger.debug('Services: %s', services) # Sort services and remove services with no transports... - services = [ - s for s in sorted(services, key=lambda s: s['name'].upper()) if s['transports'] - ] + services = [s for s in sorted(services, key=lambda s: s['name'].upper()) if s['transports']] autorun = False if ( @@ -438,11 +418,11 @@ def enableService( # If meta service, process and rebuild idService & idTransport try: - res = userServiceManager().getService( + res = UserServiceManager().getService( request.user, request.os, request.ip, idService, idTransport, doTest=False ) - scrambler = cryptoManager().randomString(32) - password = cryptoManager().symCrypt(webPassword(request), scrambler) + scrambler = CryptoManager().randomString(32) + password = CryptoManager().symCrypt(webPassword(request), scrambler) userService, trans = res[1], res[3] @@ -453,10 +433,10 @@ def enableService( error = '' # No error if typeTrans.ownLink: - url = reverse('TransportOwnLink', args=('A' + userService.uuid, trans.uuid)) + url = reverse('TransportOwnLink', args=('A' + userService.uuid, trans.uuid)) # type: ignore else: data = { - 'service': 'A' + userService.uuid, + 'service': 'A' + userService.uuid, # type: ignore 'transport': trans.uuid, 'user': request.user.uuid, 'password': password, @@ -468,9 +448,10 @@ def enableService( logger.debug('Service not ready') # Not ready, show message and return to this page in a while # error += ' (code {0:04X})'.format(e.code) - error = gettext( - 'Your service is being created, please, wait for a few seconds while we complete it.)' - ) + '({}%)'.format(int(e.code * 25)) + error = ( + gettext('Your service is being created, please, wait for a few seconds while we complete it.)') + + f'({e.code*25}%)' + ) except MaxServicesReachedError: logger.info('Number of service reached MAX for service pool "%s"', idService) error = errors.errorString(errors.MAX_SERVICES_REACHED) diff --git a/server/src/uds/web/views/auth.py b/server/src/uds/web/views/auth.py index d4976229b..60e7984a2 100644 --- a/server/src/uds/web/views/auth.py +++ b/server/src/uds/web/views/auth.py @@ -38,7 +38,7 @@ from django.utils.translation import gettext as _ from django.views.decorators.cache import never_cache from django.views.decorators.csrf import csrf_exempt -import uds.web.util.errors as errors +from uds.web.util import errors from uds.core import auths from uds.core.auths.auth import ( webLogin, @@ -47,9 +47,9 @@ from uds.core.auths.auth import ( authLogLogin, getUDSCookie, ) -from uds.core.managers import userServiceManager, cryptoManager +from uds.core.managers.user_service import UserServiceManager +from uds.core.managers.crypto import CryptoManager from uds.core.services.exceptions import ServiceNotReadyError -from uds.core.util import os_detector as OsDetector from uds.core.util import html from uds.core.util.state import State from uds.core.util.model import processUuid @@ -116,14 +116,14 @@ def authCallback_stage2( result = authenticateViaCallback(authenticator, params, request) - os = OsDetector.getOsFromUA(request.META['HTTP_USER_AGENT']) + # os = OsDetector.getOsFromUA(request.META['HTTP_USER_AGENT']) if result.url: raise auths.exceptions.Redirect(result.url) if result.user is None: authLogLogin( - request, authenticator, '{0}'.format(params), 'Invalid at auth callback' + request, authenticator, f'{params}', 'Invalid at auth callback' ) raise auths.exceptions.InvalidUserException() @@ -222,10 +222,10 @@ def ticketAuth( auth = data['auth'] realname = data['realname'] poolUuid = data['servicePool'] - password = cryptoManager().decrypt(data['password']) + password = CryptoManager().decrypt(data['password']) except Exception: logger.error('Ticket stored is not valid') - raise auths.exceptions.InvalidUserException() + raise auths.exceptions.InvalidUserException() from None auth = Authenticator.objects.get(uuid=auth) # If user does not exists in DB, create it right now @@ -264,7 +264,7 @@ def ticketAuth( # Check if servicePool is part of the ticket if poolUuid: # Request service, with transport = None so it is automatic - res = userServiceManager().getService( + res = UserServiceManager().getService( request.user, request.os, request.ip, poolUuid, None, False ) _, userService, _, transport, _ = res @@ -272,11 +272,11 @@ def ticketAuth( transportInstance = transport.getInstance() if transportInstance.ownLink is True: link = reverse( - 'TransportOwnLink', args=('A' + userService.uuid, transport.uuid) + 'TransportOwnLink', args=('A' + userService.uuid, transport.uuid) # type: ignore ) else: link = html.udsAccessLink( - request, 'A' + userService.uuid, transport.uuid + request, 'A' + userService.uuid, transport.uuid # type: ignore ) request.session['launch'] = link @@ -287,7 +287,7 @@ def ticketAuth( # Now ensure uds cookie is at response getUDSCookie(request, response, True) return response - except ServiceNotReadyError as e: + except ServiceNotReadyError: return errors.errorView(request, errors.SERVICE_NOT_READY) except TicketStore.InvalidTicket: return errors.errorView(request, errors.RELOAD_NOT_SUPPORTED) diff --git a/server/src/uds/web/views/main.py b/server/src/uds/web/views/main.py index c98784cae..709dc4c8b 100644 --- a/server/src/uds/web/views/main.py +++ b/server/src/uds/web/views/main.py @@ -42,12 +42,10 @@ from django.views.decorators.cache import never_cache from django.urls import reverse from django.utils.translation import gettext as _ -from django.views.decorators.cache import never_cache - from uds.core.util.request import ExtendedHttpRequest, ExtendedHttpRequestWithUser from uds.core.auths import auth, exceptions from uds.core.util.config import GlobalConfig -from uds.core.managers import cryptoManager +from uds.core.managers.crypto import CryptoManager from uds.web.util import errors from uds.web.forms.LoginForm import LoginForm from uds.web.forms.MFAForm import MFAForm @@ -56,6 +54,7 @@ from uds.web.util.services import getServicesData from uds.web.util import configjs from uds.core import mfas from uds import models +from uds.core.util.model import getSqlDatetimeAsUnix @@ -121,7 +120,7 @@ def login( # If MFA is provided, we need to redirect to MFA page request.authorized = True if loginResult.user.manager.getType().providesMfa() and loginResult.user.manager.mfa: - authInstance = loginResult.user.manager.getInstance() + # authInstance = loginResult.user.manager.getInstance() request.authorized = False response = HttpResponseRedirect(reverse('page.mfa')) @@ -198,7 +197,7 @@ def mfa(request: ExtendedHttpRequest) -> HttpResponse: # Get validity duration validity = mfaProvider.validity*60 - now = models.getSqlDatetimeAsUnix() + now = getSqlDatetimeAsUnix() start_time = request.session.get('mfa_start_time', now) # If mfa process timed out, we need to start login again @@ -211,11 +210,13 @@ def mfa(request: ExtendedHttpRequest) -> HttpResponse: label = mfaInstance.label() if not mfaIdentifier: - if mfaInstance.emptyIndentifierAllowedToLogin(request) == True: + emtpyIdentifiedAllowed = mfaInstance.emptyIndentifierAllowedToLogin(request) + # can be True, False or None + if emtpyIdentifiedAllowed is True: # Allow login request.authorized = True return HttpResponseRedirect(reverse('page.index')) - elif mfaInstance.emptyIndentifierAllowedToLogin(request) == False: + if emtpyIdentifiedAllowed is False: # Not allowed to login, redirect to login error page logger.warning( 'MFA identifier not found for user %s on authenticator %s. It is required by MFA %s', @@ -224,7 +225,7 @@ def mfa(request: ExtendedHttpRequest) -> HttpResponse: mfaProvider.name, ) return errors.errorView(request, errors.ACCESS_DENIED) - # Default, do nothing, and continue + # None, the authenticator will decide what to do if mfaIdentifier is empty tries = request.session.get('mfa_tries', 0) if request.method == 'POST': # User has provided MFA code @@ -239,13 +240,16 @@ def mfa(request: ExtendedHttpRequest) -> HttpResponse: mfaIdentifier, code, validity=validity, - ) + ) # Will raise MFAError if code is not valid request.authorized = True - # Remove mfa_start_time from session - if 'mfa_start_time' in request.session: - del request.session['mfa_start_time'] + # Remove mfa_start_time and mfa from session + for i in ('mfa_start_time', 'mfa'): + if i in request.session: + del request.session[i] + # Redirect to index by default response = HttpResponseRedirect(reverse('page.index')) + # If mfaProvider requests to keep MFA code on client, create a mfacookie for this user if ( mfaProvider.remember_device > 0 @@ -334,7 +338,7 @@ def update_transport_ticket( domain = data.get('domain', None) or None # If empty string, set to None if password: - password = cryptoManager().symCrypt(password, scrambler) + password = CryptoManager().symCrypt(password, scrambler) def checkValidTicket(data: typing.Mapping[str, typing.Any]) -> bool: if 'ticket-info' not in data: diff --git a/server/src/uds/web/views/service.py b/server/src/uds/web/views/service.py index 08a8f5631..a392a53a1 100644 --- a/server/src/uds/web/views/service.py +++ b/server/src/uds/web/views/service.py @@ -32,20 +32,17 @@ import json import logging import typing -from django.utils.translation import gettext as _ -from django.urls import reverse from django.http import HttpResponse from django.views.decorators.cache import cache_page, never_cache from uds.core.auths.auth import webLoginRequired, webPassword -from uds.core.managers import userServiceManager +from uds.core.managers.user_service import UserServiceManager from uds.core.ui.images import DEFAULT_IMAGE from uds.core.util.model import processUuid from uds.models import Transport, Image from uds.core.util import log from uds.core.services.exceptions import ServiceNotReadyError -from uds.web.util import errors from uds.web.util import services # Not imported at runtime, just for type checking @@ -66,7 +63,7 @@ def transportOwnLink( # For type checkers to "be happy" try: - res = userServiceManager().getService( + res = UserServiceManager().getService( request.user, request.os, request.ip, idService, idTransport ) ip, userService, iads, trans, itrans = res @@ -91,10 +88,7 @@ def transportOwnLink( return HttpResponse(content=json.dumps(response), content_type='application/json') - # Will never reach this - return errors.errorView(request, errors.UNKNOWN_ERROR) - - +# pylint: disable=unused-argument @cache_page(3600, key_prefix='img', cache='memory') def transportIcon(request: 'ExtendedHttpRequest', idTrans: str) -> HttpResponse: try: @@ -164,12 +158,12 @@ def userServiceStatus( userService: typing.Optional['UserService'] = None status = 'running' # If service exists (meta or not) - if userServiceManager().isMetaService(idService): - userService = userServiceManager().locateMetaService( + if UserServiceManager().isMetaService(idService): + userService = UserServiceManager().locateMetaService( user=request.user, idService=idService ) else: - userService = userServiceManager().locateUserService( + userService = UserServiceManager().locateUserService( user=request.user, idService=idService, create=False ) if userService: @@ -198,11 +192,11 @@ def userServiceStatus( def action( request: 'ExtendedHttpRequestWithUser', idService: str, actionString: str ) -> HttpResponse: - userService = userServiceManager().locateMetaService( + userService = UserServiceManager().locateMetaService( request.user, idService ) if not userService: - userService = userServiceManager().locateUserService( + userService = UserServiceManager().locateUserService( request.user, idService, create=False ) @@ -216,30 +210,30 @@ def action( rebuild = True log.doLog( userService.deployed_service, - log.INFO, + log.LogLevel.INFO, "Removing User Service {} as requested by {} from {}".format( userService.friendly_name, request.user.pretty_name, request.ip ), - log.WEB, + log.LogSource.WEB, ) - userServiceManager().requestLogoff(userService) + UserServiceManager().requestLogoff(userService) userService.release() elif ( actionString == 'reset' and userService.deployed_service.allow_users_reset - and userService.deployed_service.service.getType().canReset + and userService.deployed_service.service.getType().canReset # type: ignore ): rebuild = True log.doLog( userService.deployed_service, - log.INFO, + log.LogLevel.INFO, "Reseting User Service {} as requested by {} from {}".format( userService.friendly_name, request.user.pretty_name, request.ip ), - log.WEB, + log.LogSource.WEB, ) - # userServiceManager().requestLogoff(userService) - userServiceManager().reset(userService) + # UserServiceManager().requestLogoff(userService) + UserServiceManager().reset(userService) if rebuild: diff --git a/tunnel-server/.pylintrc b/tunnel-server/.pylintrc new file mode 100644 index 000000000..58139091f --- /dev/null +++ b/tunnel-server/.pylintrc @@ -0,0 +1,632 @@ +[MAIN] + +# Analyse import fallback blocks. This can be used to support both Python 2 and +# 3 compatible code, which means that the block might have code that exists +# only in one or another interpreter, leading to false positives when analysed. +analyse-fallback-blocks=no + +# Clear in-memory caches upon conclusion of linting. Useful if running pylint +# in a server-like mode. +clear-cache-post-run=no + +# Load and enable all available extensions. Use --list-extensions to see a list +# all available extensions. +enable-all-extensions=yes + +# In error mode, messages with a category besides ERROR or FATAL are +# suppressed, and no reports are done by default. Error mode is compatible with +# disabling specific errors. +#errors-only= + +# Always return a 0 (non-error) status code, even if lint errors are found. +# This is primarily useful in continuous integration scripts. +#exit-zero= + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. +extension-pkg-allow-list=lxml.etree + +# A comma-separated list of package or module names from where C extensions may +# be loaded. Extensions are loading into the active Python interpreter and may +# run arbitrary code. (This is an alternative name to extension-pkg-allow-list +# for backward compatibility.) +extension-pkg-whitelist= + +# Return non-zero exit code if any of these messages/categories are detected, +# even if score is above --fail-under value. Syntax same as enable. Messages +# specified are enabled, while categories only check already-enabled messages. +fail-on= + +# Specify a score threshold under which the program will exit with error. +fail-under=10 + +# Interpret the stdin as a python script, whose filename needs to be passed as +# the module_or_package argument. +#from-stdin= + +# Files or directories to be skipped. They should be base names, not paths. +ignore=CVS + +# Add files or directories matching the regular expressions patterns to the +# ignore-list. The regex matches against paths and can be in Posix or Windows +# format. Because '\\' represents the directory delimiter on Windows systems, +# it can't be used as an escape character. +ignore-paths= + +# Files or directories matching the regular expression patterns are skipped. +# The regex matches against base names, not paths. The default value ignores +# Emacs file locks +ignore-patterns=^\.# + +# List of module names for which member attributes should not be checked +# (useful for modules/projects where namespaces are manipulated during runtime +# and thus existing member attributes cannot be deduced by static analysis). It +# supports qualified module names, as well as Unix pattern matching. +ignored-modules= + +# Python code to execute, usually for sys.path manipulation such as +# pygtk.require(). +#init-hook= + +# Use multiple processes to speed up Pylint. Specifying 0 will auto-detect the +# number of processors available to use, and will cap the count on Windows to +# avoid hangs. +jobs=1 + +# Control the amount of potential inferred values when inferring a single +# object. This can help the performance when dealing with large functions or +# complex, nested conditions. +limit-inference-results=100 + +# List of plugins (as comma separated values of python module names) to load, +# usually to register additional checkers. +load-plugins= + +# Pickle collected data for later comparisons. +persistent=yes + +# Minimum Python version to use for version dependent checks. Will default to +# the version used to run pylint. +py-version=3.11 + +# Discover python modules and packages in the file system subtree. +recursive=no + +# When enabled, pylint would attempt to guess common misconfiguration and emit +# user-friendly hints instead of false-positive error messages. +suggestion-mode=yes + +# Allow loading of arbitrary C extensions. Extensions are imported into the +# active Python interpreter and may run arbitrary code. +unsafe-load-any-extension=no + +# In verbose mode, extra non-checker-related info will be displayed. +#verbose= + + +[BASIC] + +# Naming style matching correct argument names. +argument-naming-style=snake_case + +# Regular expression matching correct argument names. Overrides argument- +# naming-style. If left empty, argument names will be checked with the set +# naming style. +#argument-rgx= + +# Naming style matching correct attribute names. +attr-naming-style=snake_case + +# Regular expression matching correct attribute names. Overrides attr-naming- +# style. If left empty, attribute names will be checked with the set naming +# style. +#attr-rgx= + +# Bad variable names which should always be refused, separated by a comma. +bad-names=foo, + bar, + baz, + toto, + tutu, + tata + +# Bad variable names regexes, separated by a comma. If names match any regex, +# they will always be refused +bad-names-rgxs= + +# Naming style matching correct class attribute names. +class-attribute-naming-style=any + +# Regular expression matching correct class attribute names. Overrides class- +# attribute-naming-style. If left empty, class attribute names will be checked +# with the set naming style. +#class-attribute-rgx= + +# Naming style matching correct class constant names. +class-const-naming-style=UPPER_CASE + +# Regular expression matching correct class constant names. Overrides class- +# const-naming-style. If left empty, class constant names will be checked with +# the set naming style. +#class-const-rgx= + +# Naming style matching correct class names. +class-naming-style=PascalCase + +# Regular expression matching correct class names. Overrides class-naming- +# style. If left empty, class names will be checked with the set naming style. +#class-rgx= + +# Naming style matching correct constant names. +const-naming-style=UPPER_CASE + +# Regular expression matching correct constant names. Overrides const-naming- +# style. If left empty, constant names will be checked with the set naming +# style. +#const-rgx= + +# Minimum line length for functions/classes that require docstrings, shorter +# ones are exempt. +docstring-min-length=-1 + +# Naming style matching correct function names. +function-naming-style=camelCase + +# Regular expression matching correct function names. Overrides function- +# naming-style. If left empty, function names will be checked with the set +# naming style. +#function-rgx= + +# Good variable names which should always be accepted, separated by a comma. +good-names=i, + j, + k, + ex, + Run, + _ + +# Good variable names regexes, separated by a comma. If names match any regex, +# they will always be accepted +good-names-rgxs= + +# Include a hint for the correct naming format with invalid-name. +include-naming-hint=no + +# Naming style matching correct inline iteration names. +inlinevar-naming-style=any + +# Regular expression matching correct inline iteration names. Overrides +# inlinevar-naming-style. If left empty, inline iteration names will be checked +# with the set naming style. +#inlinevar-rgx= + +# Naming style matching correct method names. +method-naming-style=camelCase + +# Regular expression matching correct method names. Overrides method-naming- +# style. If left empty, method names will be checked with the set naming style. +#method-rgx= + +# Naming style matching correct module names. +module-naming-style=camelCase + +# Regular expression matching correct module names. Overrides module-naming- +# style. If left empty, module names will be checked with the set naming style. +#module-rgx= + +# Colon-delimited sets of names that determine each other's naming style when +# the name regexes allow several styles. +name-group= + +# Regular expression which should only match function or class names that do +# not require a docstring. +no-docstring-rgx=^_ + +# List of decorators that produce properties, such as abc.abstractproperty. Add +# to this list to register other decorators that produce valid properties. +# These decorators are taken in consideration only for invalid-name. +property-classes=abc.abstractproperty + +# Regular expression matching correct type variable names. If left empty, type +# variable names will be checked with the set naming style. +#typevar-rgx= + +# Naming style matching correct variable names. +variable-naming-style=camelCase + +# Regular expression matching correct variable names. Overrides variable- +# naming-style. If left empty, variable names will be checked with the set +# naming style. +#variable-rgx= + + +[CLASSES] + +# Warn about protected attribute access inside special methods +check-protected-access-in-special-methods=no + +# List of method names used to declare (i.e. assign) instance attributes. +defining-attr-methods=__init__, + __new__, + setUp, + __post_init__ + +# List of member names, which should be excluded from the protected access +# warning. +exclude-protected=_asdict, + _fields, + _replace, + _source, + _make + +# List of valid names for the first argument in a class method. +valid-classmethod-first-arg=cls + +# List of valid names for the first argument in a metaclass class method. +valid-metaclass-classmethod-first-arg=mcs + + +[DESIGN] + +# List of regular expressions of class ancestor names to ignore when counting +# public methods (see R0903) +exclude-too-few-public-methods= + +# List of qualified class names to ignore when counting class parents (see +# R0901) +ignored-parents= + +# Maximum number of arguments for function / method. +max-args=10 + +# Maximum number of attributes for a class (see R0902). +max-attributes=12 + +# Maximum number of boolean expressions in an if statement (see R0916). +max-bool-expr=6 + +# Maximum number of branch for function / method body. +max-branches=24 + +# Maximum number of locals for function / method body. +max-locals=24 + +# Maximum number of parents for a class (see R0901). +max-parents=7 + +# Maximum number of public methods for a class (see R0904). +max-public-methods=32 + +# Maximum number of return / yield for function / method body. +max-returns=9 + +# Maximum number of statements in function / method body. +max-statements=96 + +# Minimum number of public methods for a class (see R0903). +min-public-methods=1 + + +[EXCEPTIONS] + +# Exceptions that will emit a warning when caught. +overgeneral-exceptions=builtins.BaseException,builtins.Exception + + +[FORMAT] + +# Expected format of line ending, e.g. empty (any line ending), LF or CRLF. +expected-line-ending-format= + +# Regexp for a line that is allowed to be longer than the limit. +ignore-long-lines=^\s*(# )??$ + +# Number of spaces of indent required inside a hanging or continued line. +indent-after-paren=4 + +# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 +# tab). +indent-string=' ' + +# Maximum number of characters on a single line. +max-line-length=100 + +# Maximum number of lines in a module. +max-module-lines=1000 + +# Allow the body of a class to be on the same line as the declaration if body +# contains single statement. +single-line-class-stmt=no + +# Allow the body of an if to be on the same line as the test if there is no +# else. +single-line-if-stmt=no + + +[IMPORTS] + +# List of modules that can be imported at any level, not just the top level +# one. +allow-any-import-level= + +# Allow explicit reexports by alias from a package __init__. +allow-reexport-from-package=no + +# Allow wildcard imports from modules that define __all__. +allow-wildcard-with-all=no + +# Deprecated modules which should not be used, separated by a comma. +deprecated-modules= + +# Output a graph (.gv or any supported image format) of external dependencies +# to the given file (report RP0402 must not be disabled). +ext-import-graph= + +# Output a graph (.gv or any supported image format) of all (i.e. internal and +# external) dependencies to the given file (report RP0402 must not be +# disabled). +import-graph= + +# Output a graph (.gv or any supported image format) of internal dependencies +# to the given file (report RP0402 must not be disabled). +int-import-graph= + +# Force import order to recognize a module as part of the standard +# compatibility libraries. +known-standard-library= + +# Force import order to recognize a module as part of a third party library. +known-third-party=enchant + +# Couples of modules and preferred modules, separated by a comma. +preferred-modules= + + +[LOGGING] + +# The type of string formatting that logging methods do. `old` means using % +# formatting, `new` is for `{}` formatting. +logging-format-style=old + +# Logging modules to check that the string format arguments are in logging +# function parameter format. +logging-modules=logging + + +[MESSAGES CONTROL] + +# Only show warnings with the listed confidence levels. Leave empty to show +# all. Valid levels: HIGH, CONTROL_FLOW, INFERENCE, INFERENCE_FAILURE, +# UNDEFINED. +confidence=HIGH, + CONTROL_FLOW, + INFERENCE, + INFERENCE_FAILURE, + UNDEFINED + +# Disable the message, report, category or checker with the given id(s). You +# can either give multiple identifiers separated by comma (,) or put this +# option multiple times (only on the command line, not in the configuration +# file where it should appear only once). You can also use "--disable=all" to +# disable everything first and then re-enable specific checks. For example, if +# you want to run only the similarities checker, you can use "--disable=all +# --enable=similarities". If you want to run only the classes checker, but have +# no Warning level messages displayed, use "--disable=all --enable=classes +# --disable=W". +disable=raw-checker-failed, + bad-inline-option, + locally-disabled, + file-ignored, + suppressed-message, + useless-suppression, + deprecated-pragma, + use-symbolic-message-instead, + R0022, + invalid-name, + broad-exception-caught, + broad-exception-raised, + +# Enable the message, report, category or checker with the given id(s). You can +# either give multiple identifier separated by comma (,) or put this option +# multiple time (only on the command line, not in the configuration file where +# it should appear only once). See also the "--disable" option for examples. +enable=c-extension-no-member + + +[METHOD_ARGS] + +# List of qualified names (i.e., library.method) which require a timeout +# parameter e.g. 'requests.api.get,requests.api.post' +timeout-methods=requests.api.delete,requests.api.get,requests.api.head,requests.api.options,requests.api.patch,requests.api.post,requests.api.put,requests.api.request + + +[MISCELLANEOUS] + +# List of note tags to take in consideration, separated by a comma. +notes=FIXME, + XXX, + TODO + +# Regular expression of note tags to take in consideration. +notes-rgx= + + +[REFACTORING] + +# Maximum number of nested blocks for function / method body +max-nested-blocks=8 + +# Complete name of functions that never returns. When checking for +# inconsistent-return-statements if a never returning function is called then +# it will be considered as an explicit return statement and no message will be +# printed. +never-returning-functions=sys.exit,argparse.parse_error + + +[REPORTS] + +# Python expression which should return a score less than or equal to 10. You +# have access to the variables 'fatal', 'error', 'warning', 'refactor', +# 'convention', and 'info' which contain the number of messages in each +# category, as well as 'statement' which is the total number of statements +# analyzed. This score is used by the global evaluation report (RP0004). +evaluation=max(0, 0 if fatal else 10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10)) + +# Template used to display messages. This is a python new-style format string +# used to format the message information. See doc for all details. +msg-template= + +# Set the output format. Available formats are text, parseable, colorized, json +# and msvs (visual studio). You can also give a reporter class, e.g. +# mypackage.mymodule.MyReporterClass. +#output-format= + +# Tells whether to display a full report or only the messages. +reports=no + +# Activate the evaluation score. +score=yes + + +[SIMILARITIES] + +# Comments are removed from the similarity computation +ignore-comments=yes + +# Docstrings are removed from the similarity computation +ignore-docstrings=yes + +# Imports are removed from the similarity computation +ignore-imports=yes + +# Signatures are removed from the similarity computation +ignore-signatures=yes + +# Minimum lines number of a similarity. +min-similarity-lines=4 + + +[SPELLING] + +# Limits count of emitted suggestions for spelling mistakes. +max-spelling-suggestions=4 + +# Spelling dictionary name. Available dictionaries: none. To make it work, +# install the 'python-enchant' package. +spelling-dict= + +# List of comma separated words that should be considered directives if they +# appear at the beginning of a comment and should not be checked. +spelling-ignore-comment-directives=fmt: on,fmt: off,noqa:,noqa,nosec,isort:skip,mypy: + +# List of comma separated words that should not be checked. +spelling-ignore-words= + +# A path to a file that contains the private dictionary; one word per line. +spelling-private-dict-file= + +# Tells whether to store unknown words to the private dictionary (see the +# --spelling-private-dict-file option) instead of raising a message. +spelling-store-unknown-words=no + + +[STRING] + +# This flag controls whether inconsistent-quotes generates a warning when the +# character used as a quote delimiter is used inconsistently within a module. +check-quote-consistency=no + +# This flag controls whether the implicit-str-concat should generate a warning +# on implicit string concatenation in sequences defined over several lines. +check-str-concat-over-line-jumps=no + + +[TYPECHECK] + +# List of decorators that produce context managers, such as +# contextlib.contextmanager. Add to this list to register other decorators that +# produce valid context managers. +contextmanager-decorators=contextlib.contextmanager + +# List of members which are set dynamically and missed by pylint inference +# system, and so shouldn't trigger E1101 when accessed. Python regular +# expressions are accepted. +generated-members= .*.objects + .*.DoesNotExist.* + .+service, + .+osmanager, + ldap\..+, + +# Tells whether to warn about missing members when the owner of the attribute +# is inferred to be None. +ignore-none=yes + +# This flag controls whether pylint should warn about no-member and similar +# checks whenever an opaque object is returned when inferring. The inference +# can return multiple potential results while evaluating a Python object, but +# some branches might not be evaluated, which results in partial inference. In +# that case, it might be useful to still emit no-member and other checks for +# the rest of the inferred objects. +ignore-on-opaque-inference=yes + +# List of symbolic message names to ignore for Mixin members. +ignored-checks-for-mixins=no-member, + not-async-context-manager, + not-context-manager, + attribute-defined-outside-init + +# List of class names for which member attributes should not be checked (useful +# for classes with dynamically set attributes). This supports the use of +# qualified names. +ignored-classes=optparse.Values,thread._local,_thread._local,argparse.Namespace + +# Show a hint with possible names when a member name was not found. The aspect +# of finding the hint is based on edit distance. +missing-member-hint=yes + +# The minimum edit distance a name should have in order to be considered a +# similar match for a missing member name. +missing-member-hint-distance=1 + +# The total number of similar names that should be taken in consideration when +# showing a hint for a missing member. +missing-member-max-choices=1 + +# Regex pattern to define which classes are considered mixins. +mixin-class-rgx=.*[Mm]ixin + +# List of decorators that change the signature of a decorated function. +signature-mutators= + + +[VARIABLES] + +# List of additional names supposed to be defined in builtins. Remember that +# you should avoid defining new builtins when possible. +additional-builtins= + +# Tells whether unused global variables should be treated as a violation. +allow-global-unused-variables=yes + +# List of names allowed to shadow builtins +allowed-redefined-builtins= + +# List of strings which can identify a callback function by name. A callback +# name must start or end with one of those strings. +callbacks=cb_, + _cb + +# A regular expression matching the name of dummy variables (i.e. expected to +# not be used). +dummy-variables-rgx=_+$|(_[a-zA-Z0-9_]*[a-zA-Z0-9]+?$)|dummy|^ignored_|^unused_ + +# Argument names that match this expression will be ignored. +ignored-argument-names=_.*|^ignored_|^unused_ + +# Tells whether we should check for unused import in __init__ files. +init-import=no + +# List of qualified module names which can have objects that can redefine +# builtins. +redefining-builtins-modules=six.moves,past.builtins,future.builtins,builtins,io diff --git a/tunnel-server/samples/echo_client_ssl.py b/tunnel-server/samples/echo_client_ssl.py index 3ada81133..5fa942f28 100644 --- a/tunnel-server/samples/echo_client_ssl.py +++ b/tunnel-server/samples/echo_client_ssl.py @@ -1,16 +1,14 @@ #!/usr/bin/env python3 # -*- coding=utf-8 -*- -from functools import WRAPPER_ASSIGNMENTS import ssl import asyncio -import logging import typing import certifi # In order to get valid ca certificates if typing.TYPE_CHECKING: - from asyncio.streams import StreamReader, StreamWriter + pass async def tcp_echo_client(): diff --git a/tunnel-server/samples/echo_server_ssl.py b/tunnel-server/samples/echo_server_ssl.py deleted file mode 100644 index 653ab70d8..000000000 --- a/tunnel-server/samples/echo_server_ssl.py +++ /dev/null @@ -1,117 +0,0 @@ -#!/usr/bin/env python3 -# -*- coding: utf-8 -*- -# -# Copyright (c) 2020 Virtual Cable S.L.U. -# All rights reserved. -# -# Redistribution and use in source and binary forms, with or without modification, -# are permitted provided that the following conditions are met: -# -# * Redistributions of source code must retain the above copyright notice, -# this list of conditions and the following disclaimer. -# * Redistributions in binary form must reproduce the above copyright notice, -# this list of conditions and the following disclaimer in the documentation -# and/or other materials provided with the distribution. -# * Neither the name of Virtual Cable S.L. nor the names of its contributors -# may be used to endorse or promote products derived from this software -# without specific prior written permission. -# -# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" -# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE -# DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE -# FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -# DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR -# SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER -# CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, -# OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -# OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. -''' -@author: Adolfo Gómez, dkmaster at dkmon dot com -''' - -import multiprocessing -import typing -import socket - -import curio -import curio.ssl -import curio.io - -BUFFER_SIZE = 1024 - -if typing.TYPE_CHECKING: - from multiprocessing.connection import Connection - -def get_socket(pipe: 'Connection') -> typing.Any: - sock, address = pipe.recv() - print(f'Sock: {sock}, f{address}') - return (sock, address) - -async def echo_server_async(pipe: 'Connection'): - async def run_server(pipe: 'Connection', group: curio.TaskGroup) -> None: - while True: - sock, address = await curio.run_in_thread(get_socket, pipe) - await group.spawn(echo_server, sock, address) - del sock - - async with curio.TaskGroup() as tg: - await tg.spawn(run_server, pipe, tg) - # Reap all of the children tasks as they complete - async for task in tg: - print(f'Deleting {task!r}') - task.joined = True - del task - -async def echo_server(iclient, address) -> None: - print(f'Connection from {address!r}') - - context = curio.ssl.SSLContext(curio.ssl.PROTOCOL_TLS_SERVER) - context.load_cert_chain('testing.pem', 'testing.key') - context.set_ciphers('ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384') - client = await context.wrap_socket(curio.io.Socket(iclient), server_side=True) - - while True: - data = await client.recv(BUFFER_SIZE) - if not data: - break - print(f'received {data}') - await client.sendall(data) - print('Closed') - -def main(): - own_conn, child_conn = multiprocessing.Pipe() - task = multiprocessing.Process(target=curio.run, args=(echo_server_async, child_conn,)) - task.start() - - host, port = 'fake.udsenterprise.com', 7777 - backlog = 100 - - sock = None - try: - # Wait for socket incoming connections and spread them - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) - try: - sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEPORT, True) - except (AttributeError, OSError) as e: - # log.warning('reuse_port=True option failed', exc_info=True) - pass - - sock.bind((host, port)) - sock.listen(backlog) - while True: - print('Waiting...') - client, addr = sock.accept() - print('Sending...') - own_conn.send((client, addr)) - - except Exception: - pass - - - if sock: - sock.close() - -if __name__ == "__main__": - main() \ No newline at end of file diff --git a/tunnel-server/samples/testing.key b/tunnel-server/samples/testing.key index 105218d74..d197f9e26 100644 --- a/tunnel-server/samples/testing.key +++ b/tunnel-server/samples/testing.key @@ -1,28 +1,52 @@ -----BEGIN PRIVATE KEY----- -MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCnBY9+BzkfBb6P -zvW9OsL+sbO5nQBTijsiODPsF5awGwMsEbz5eXh8fmrIWJA2Su0zbjAZn0V7emdp -xh8YvmWd8O1fJWcYzVE+oGweoQEg3j3EaDGhkYHsKzQHV7vYA45Nst8oNBOYStDK -XBur3z+TfW/BH5oLBWiU9qHMcQNwCKTORKMOdk04/L6BVf8wMB6uMGntXrBhCeIG -Zcjjh9aWZlvHFY6Ija4zyEGIig7/r4gcCg5r5Y4Tnd6py5gFK7QkwUssVlWOv6BD -PwUGYMEcrvFnebHB3LyVkNgl/YLYXJlFAiCORI+7/GvQ7jbUgn5RDCJ9F1lYUXTy -LKbyDgJTAgMBAAECggEAI+/BWReKxc8BmoWoQCfljtGDXxuV12O1p346RcEpjgix -3QiQBYmKUBcPOL49gUEL2nYJ6WlolNHYcFzNkhBdYudU25T7os2Cfpwbx1dTG9RV -q+3TR/U75CnDjxTkeO0C8FrdQxQ5Zxop5HB/D7MARebGZeI7zcVDJFIQrCFg4PjS -B2LqQroK1sZI9FRzH1ooaIMFDd4djw/gom5iwrn6zT9BsGVpBrMIJFKwnIx3PyWn -m10O0BsOuuyx5hXtiJGECN2DAaK5X+aOE9CiOVDePgzpBXM8zrNDw0D0kGpkdMHm -Y7oUN9HDIvKbyAzlOavs+8Wc8CibN5BO4lyUuMZP2QKBgQDaZDviNPCB+XxlPXv5 -xSj7KPLlbdIOzpF05Z9Sdw3Ba0UiS5bYZN9O14uefOm1z8sjON3OI0ZS25Oxx8hf -rDcerPahOBGHKe61dbkAXjuyhgMyQGedt+ROD8lfZzPH/mwQQQBVvWrWvgStRoG1 -zbN4FANkBAInhry0qvQLKsVJlQKBgQDDyLGr4zGQVtiakxufypuFlIl3e7vYCHyI -5jCE5Bpqb+rC8DEcRqVoLVP8LkzuWnwnbup9zp/epfDaSGPrTtL8lHdaps6w+MdL -q3hwD6lSgcWiUPw3HXL8aR4zPf/CvvSGzruEKM+Aly4kDNEqw1xwGqyvxZO1Ss8S -+qLP7jmyRwKBgGlU+NEEiY+WvhmySu5P2pEw0d44Vp0PonZIHczPYRIN491DqfCa -zl2fdlatlqc7HpXRYqF+v/dMsnKHkiwaysb/00A047dWUSyyJ9V2ncJgAoClMZSP -Ug0Ybh6WjxIBsysvvrKb1kDWizjrjbobCVl8BZqimEtqH+/fmC8epOL1AoGAOPCB -W7Azlfrr++iUvCA8otjUMf+2Xdn5/gaUTdHZLONnr1ITtlmFeYrVRh5hGWEPgphr -cjNJo4M3TQSIqsK98d9r5t1kd2ui6orv+AdWAzzisZZEA/N4oZggxF5fp8/JZftx -5bnIv2k4bhucKYevtprLZkNb9fnPx4FFIJv0A7kCgYEAxqDXDZJnqdP5b93l1PH/ -LdGJzrZoRuWQ3pPYeDtKxuhgfDWOjMl/nj1r4R12XhWBPSgAT3FVPHMoWbVuF9Mc -/rXqtOimNVuyMwnH/oNFb91V17jMKUYO2ULT3WPiFGCVdHmv7YjxyILmDfZWpgbY -TSM4J09MI1GOu8xHGGFqLVc= +MIIJRAIBADANBgkqhkiG9w0BAQEFAASCCS4wggkqAgEAAoICAQDVIMFTjpg90TMe +WmdcNaiuZm0PhNneh+Pp53s/r/XGl7jN3OGEZz3vrlb7GD6QrCD1bgLvBBnQe6rd +24r6D0H2rjS1wYgAMVnwQDmEk8PKEALKiS+BeBsTVBAdw6NMB1pi8afB8OfroK/R +1kbfiXr0dW77NNiHrr+I4fPpDDRvUmDRR1mQayBaQRLYyPNFvQah0d5DOYo6GpO8 +RijR9OtMDTRcw0hvWPTaYwioPDOOwt9E7cwU24f2w+XqsSlYN26w6fqinAt33KT7 +wchIInKTVlvCcrMJNVT81rliMJugIsIRB+2hvfmcmXXEVWBLPtebtwR6fkKyTOAf +mjfQvNfkDG0OjOGH2jShC7V3pZrjO5dNAFA7LV8NiKft+TDuwsYa0JQNDgAc38WR +gNXSUf/2vGt7pI7BVrDc5jZmrai0ERadK6oFGr5QczBDBmQ44242VDHcxdK3O8ST +/pOzgw6cD+9WnyLHMyVc4ykdPLW7e79+nIPFSB5i/Gx0MQj06cg9Myl146dCxgCI +hsTyKsDKfHiXLVD81AnC0WeExlGY0rTU9JeX6KfOOV3jgXaI1zaoP0RZoQj29X45 +aJBJ5nLifJ/bPNQGKLwMyRF38lHQReGwFodua+QnYgG+ryo4KyZa1cjEgPrMkf/P +E2eTviSk3jAUfBci+OIvGR0GMgdGPQIDAQABAoICAQCk9lNs/0PrJQ9yAPtbrdTA +GFt11Zhk272XACqvYtzTOAA8pyiOuPKBn+mHNH7Ir9Ja5Sm0IvJwIihgzFtHraOa +8b+upvtDWu+IO83JRi4XKklexsxUY8hhL4HB5/lvEYnuZ6k3PeXkxV0RB8+Xmevn +ZzXdjkvCyYlKw8lsqpuzRonVsmoqlCBYe2HBFdjmM6b8fVqRoenRi1yqL4vM5stw +9A+BdU2NkccDef/rZ51odIEn8v8xbbJRV9OP0kx0EYPFv3TVg/6Eae3xR05kNvWE +ASXI3cqh5/u+L90RmRn72qtnT0GpHUgk48r5ijOcSinMRt5aiXvKUiJvk4h8Mo7O +dKs1H4rZaS0+we2PsYQ5545gb6BU73XLZ8X2z7d+vrKkMAYufQOB258tBlFLEmd4 +uxWMQnVYe07rIFjfYR6jQm/LJHHYWH8t49LxsYDkh/NA1+//E+U6v4iPFCRQWEbm +IDVUVPF0r62H6NNJhcKNjJEc/5FON3rjkSWETjbjiQeqOny/d1TnUoJZJ8tdr5zl +PO9ZxoI/1ZuPUyJmJD2t9ZHs9q+GR3POak1cOOqlID814Y7+HtbB9oC2Cr9KQw9M +53ukcLMFNI2Erd6ofD/4liNgn8tYCIHD6EvWTDlC2tRALEdWpVaSMgD58yA+kgCv ++mIBtHg1zAtlL7jBe7g36QKCAQEA9LnJVvWd55JqrZS6SUy+a54A50ukz0ox34Pn +KPr4di9J6tfKKDuQt0woTmxJ9nFyDtZfMSPLPlMkMLbXTOwKLqkrajY40rVMFzqz +ttUJqW1FGUZwCBaOdyI62/pzhe0SHFJ3D9/xZeOj6sSbesM6CHYbK/k/KLHRwTcv +s6i3zncl9cJwUYuSF4Mkn2pP+mA366rNA/uzo6ThuzPRNkbz/ByDaXczu45l7oD9 +qsRgCCx28La/PMjRaBFeYPhe62JPAGQMU5vkoGakei1LlaEVYgmaShOoTrGNpS+2 +ybnTj/tHmTyUDxrlcbUjKrlOKUwvuss9xzzKVd/Ykv274hSH0wKCAQEA3vJQpx6g +6+2kGQGiNCn99ChK2JuXsNgSKt/71+aDqCjxxLUxfYr67Y25y634Iks6yo8wiWnW +EL0NSR//Ka1ZlfG2AZ8YSIWotKf76fnXeuKrBjUaDmPg9aGZIlbaUxxb4SorLaYB +TxPW/xlEwfT9/NjMW4ZoKVSMuru3CBBcRpI6Pj7PSaz9+FXJB3qU+MJqAD4bHyYT +vrb0VNff+w2cQKW64rmdcQHrraDb/wPOGC9vz8kBLx/VYkrjbh2rzdksYww30g66 +aPWlDbimCLC++jDvEwQCkxR6x9qWS1MQ68JCgF4wUf5OgBKSiJHrvQqXgEOFEXsa +aM3oC6ilV7i/rwKCAQEAy3l1eAH76kCIxg403SEb6iqTIbx5KYjM8sSe/Cm/T7R9 +xu7oPI9aAa0mjh3nWSp15PREbX0PTaCfJInBdUmEJcuuNz8h+7+VpnK+XbO/tskN +fLheCbuHdHJXcfNI/f9g4X+HUwGlmkutTFNv2qBbrhFVAjjYVKOUfQu/c6dCPD5A +p5ek/4gGTdpSJuGj4c8Cb8WxdDBg6hz7OkUZHAHedq3WbWgY8UayZZ2GS+e+2Mzv +j7DCTG3D/r0CNaoMcbVpbi/BN/sUGnF9K8BhaeVm+/5z9Edn1xY1aTTEy/DfgIUy +wKvnhq+cOfCbbrhnzlp0DOFTWkanDMNzNLQW9SCQ1QKCAQAZ7cifhxpkFgFNvzjk +JDYa3UzHIGFl+dszDVW26GJLfmeP3xrgZPeGBUOkgpknM+Skhj643Iw+6h3PcV81 +s6mFnNT0H1KtrI3QZPERZzM+YXpOgIKFRex15NNwgPVnURcGeucGqhXg4ofQp1mt +zRZ0/6nUwy7+D41Gcmp5D54Lvxny/08QXIQ1C5UTv5fvznyRhqeU2dLWDWUhMPIl +upF/m0a+86Nx7y0/xkOPxxuDCJFScygmGOeyRM9qkRzYFffplRQw4/GeH2OQ0vbM +b/HmGybS6VZ7UJhvAecU35ZKNQ+S6mFoR9FNZ9uO8pmeJMs16aRiQhTyN3BTWsvQ +BfaVAoIBAQDXewDSSyh/MeS5Q7sP9RtSkUCOnj5eCdOceByjj8rzPBukd6o9biUh +TNNjk88wpgo0BLxCE+ZUuN+IwkL5EDPuGw/DMah9p1ardtOUt6so1EtRMZ/mELS7 ++qV7FHlkKsp8X7xLWmQpujCeXf4WeOcY/3utSXsZV6TZn5J/0+rqR2JsEIrcSByF +1bswcFJ5xkCSPuMVNFco2QqUKwxgEC/8rPgx+0cM5ia8QY5mtEfgsCdNDW+RPUIY +UcDzHg9B2cE1D4y/ZlbkcBkKUqhHNW4DuKxI59rRJ+Oa3tPfJ+TyB2WcSCVFf+Ke +w02Xm8CALrj4oARVTXcf8r5nr6kz+G3/ -----END PRIVATE KEY----- diff --git a/tunnel-server/samples/testing.pem b/tunnel-server/samples/testing.pem index c4501dceb..d0d8b38ed 100644 --- a/tunnel-server/samples/testing.pem +++ b/tunnel-server/samples/testing.pem @@ -1,129 +1,31 @@ -----BEGIN CERTIFICATE----- -MIIFyDCCBLCgAwIBAgIQCZ+bJcbPk2YsooAFdD9PPjANBgkqhkiG9w0BAQsFADCB -jzELMAkGA1UEBhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4G -A1UEBxMHU2FsZm9yZDEYMBYGA1UEChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQD -Ey5TZWN0aWdvIFJTQSBEb21haW4gVmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENB -MB4XDTIwMTEzMDAwMDAwMFoXDTIxMTEzMDIzNTk1OVowHjEcMBoGA1UEAwwTKi51 -ZHNlbnRlcnByaXNlLmNvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB -AKcFj34HOR8Fvo/O9b06wv6xs7mdAFOKOyI4M+wXlrAbAywRvPl5eHx+ashYkDZK -7TNuMBmfRXt6Z2nGHxi+ZZ3w7V8lZxjNUT6gbB6hASDePcRoMaGRgewrNAdXu9gD -jk2y3yg0E5hK0MpcG6vfP5N9b8EfmgsFaJT2ocxxA3AIpM5Eow52TTj8voFV/zAw -Hq4wae1esGEJ4gZlyOOH1pZmW8cVjoiNrjPIQYiKDv+viBwKDmvljhOd3qnLmAUr -tCTBSyxWVY6/oEM/BQZgwRyu8Wd5scHcvJWQ2CX9gthcmUUCII5Ej7v8a9DuNtSC -flEMIn0XWVhRdPIspvIOAlMCAwEAAaOCAo4wggKKMB8GA1UdIwQYMBaAFI2MXsRU -rYrhd+mb+ZsF4bgBjWHhMB0GA1UdDgQWBBTkpYJLdVjo/XqVtNNxXP3k+TbzHzAO -BgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEFBQcD -AQYIKwYBBQUHAwIwSQYDVR0gBEIwQDA0BgsrBgEEAbIxAQICBzAlMCMGCCsGAQUF -BwIBFhdodHRwczovL3NlY3RpZ28uY29tL0NQUzAIBgZngQwBAgEwgYQGCCsGAQUF -BwEBBHgwdjBPBggrBgEFBQcwAoZDaHR0cDovL2NydC5zZWN0aWdvLmNvbS9TZWN0 -aWdvUlNBRG9tYWluVmFsaWRhdGlvblNlY3VyZVNlcnZlckNBLmNydDAjBggrBgEF -BQcwAYYXaHR0cDovL29jc3Auc2VjdGlnby5jb20wMQYDVR0RBCowKIITKi51ZHNl -bnRlcnByaXNlLmNvbYIRdWRzZW50ZXJwcmlzZS5jb20wggEEBgorBgEEAdZ5AgQC -BIH1BIHyAPAAdgB9PvL4j/+IVWgkwsDKnlKJeSvFDngJfy5ql2iZfiLw1wAAAXYY -yzKIAAAEAwBHMEUCIQDwBVF/I9Ut5lkgpt0KHVwAgQbH2YrTpPyX/zDoVm0rLwIg -dMS5/rHTZKlDUJlKHZw53RJPeoC4vHv5oBf4C5no//8AdgCUILwejtWNbIhzH4KL -IiwN0dpNXmxPlD1h204vWE2iwgAAAXYYyzKwAAAEAwBHMEUCIBNSxuL+PEvW7kwF -g5G4lNgCytcHDIUVjGZeiuhEBbMzAiEAjSkwqRia25veOppSkp43+iDa0mwEOPD/ -2WqerPQWYq0wDQYJKoZIhvcNAQELBQADggEBAJOfjODCZziUPp/2hDIvfS4ZQci6 -exjgsrEa/hWydvIxi1CyTxCdLKaWkUvUZFlHg6zxYFMqCg6jAWzo3rcR7b+bkGro -CD5yFaFJcRpkLAB3+1lS0laaovnuBh+vFkK/uT9qsnt4u8CJFIpDsO6YjGdELPUR -1rLnxgPlYI+kG8xEK1iHh53Q5ayKbsavzlQ4usxM+BEP0hjct/lomQN4WJG4ZXLp -HLYznI1ydppozicaMVl+/qn+NQcx1ULPEKC9SwVm72QQqFgTFUxUfM/gd+ROGDv1 -jNIJixg1F4HxiJdFUuOtcRpRzal9VSLl/P7qSyHlptrJh1RCEmAw7Ld1zVY= +MIIFWzCCA0OgAwIBAgIUfjLEhtPACCD07JPJtCW2DXVZPJYwDQYJKoZIhvcNAQEL +BQAwPTELMAkGA1UEBhMCRVMxDzANBgNVBAgMBk1hZHJpZDEdMBsGA1UECgwUVmly +dHVhbCBDYWJsZSBTLkwuVS4wHhcNMjMwMzI4MjExNTM3WhcNMzMwMzI1MjExNTM3 +WjA9MQswCQYDVQQGEwJFUzEPMA0GA1UECAwGTWFkcmlkMR0wGwYDVQQKDBRWaXJ0 +dWFsIENhYmxlIFMuTC5VLjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIB +ANUgwVOOmD3RMx5aZ1w1qK5mbQ+E2d6H4+nnez+v9caXuM3c4YRnPe+uVvsYPpCs +IPVuAu8EGdB7qt3bivoPQfauNLXBiAAxWfBAOYSTw8oQAsqJL4F4GxNUEB3Do0wH +WmLxp8Hw5+ugr9HWRt+JevR1bvs02Ieuv4jh8+kMNG9SYNFHWZBrIFpBEtjI80W9 +BqHR3kM5ijoak7xGKNH060wNNFzDSG9Y9NpjCKg8M47C30TtzBTbh/bD5eqxKVg3 +brDp+qKcC3fcpPvByEgicpNWW8Jyswk1VPzWuWIwm6AiwhEH7aG9+ZyZdcRVYEs+ +15u3BHp+QrJM4B+aN9C81+QMbQ6M4YfaNKELtXelmuM7l00AUDstXw2Ip+35MO7C +xhrQlA0OABzfxZGA1dJR//a8a3ukjsFWsNzmNmatqLQRFp0rqgUavlBzMEMGZDjj +bjZUMdzF0rc7xJP+k7ODDpwP71afIsczJVzjKR08tbt7v36cg8VIHmL8bHQxCPTp +yD0zKXXjp0LGAIiGxPIqwMp8eJctUPzUCcLRZ4TGUZjStNT0l5fop845XeOBdojX +Nqg/RFmhCPb1fjlokEnmcuJ8n9s81AYovAzJEXfyUdBF4bAWh25r5CdiAb6vKjgr +JlrVyMSA+syR/88TZ5O+JKTeMBR8FyL44i8ZHQYyB0Y9AgMBAAGjUzBRMB0GA1Ud +DgQWBBTaPrpBhqfJKKiWdfTRdt9cJBSoUTAfBgNVHSMEGDAWgBTaPrpBhqfJKKiW +dfTRdt9cJBSoUTAPBgNVHRMBAf8EBTADAQH/MA0GCSqGSIb3DQEBCwUAA4ICAQBn +GLuftO0gZqDSSbtisozzYie8slCG3W2zQGjGn5jTyNVzanYjJoxgxjEnaJ+8XycG +5AfdU8gOdRrXxj8Inca1fIaQwUr/Eo2TWAqbjWDBMapbbf1ISILEDzS7yFnppJu9 +Gtwk6vrbM+5CbG3AUYP+P9U7pgGQHWXMK72NyT43eehEXMFRQEkIodOEhec7Bl// +veqOlilA1RI0M8Rdz6p+VdycZWXh0XGShki/d0SypP3aXdBmAYHk6VPBAMhA/o99 +PAltUSAIXDOsYXQobCiejL/DHNKtwTmmtfMh8cJzmv9UmpR4HGjU+4SVEzdDOAA+ +I/V0lhJZeYZGNOJJILk8zn3cNZUUsfkyYI3c/KUqx0P/aImPAIrFsbsESsvnQJMq +6a/FChgZjL4gsKX5LmVU0orIPC0eCaFU/0VDpMxuChHziQpejepVSEII/9kI+Fif +lgM8LyFrMIf3H4Cw4Tlv9hCWqroqhhI7UKHG325fY9liIFlS1hBE7d0ruTYZweJK +FcTAGcXreXM4RS0dLv5zRaM0+RrsOvWeyMahce4NgxLoZzqH25bhGbmWG3Dzs77l +4mdAzCGBqpWTsoBmn3NnnnlNO2d2aGBzQeP+zz44utSxLCRuHRn3y0cy1yvDfOGy +J0Ue2U6H/f6EGh0YGWYAF+XzBZk8Q35BNfj0GHLYMQ== -----END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEU -MBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFs -IFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290 -MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFowbzELMAkGA1UEBhMCU0Ux -FDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRUcnVzdCBFeHRlcm5h -bCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0EgUm9v -dDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvt -H7xsD821+iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9 -uMq/NzgtHj6RQa1wVsfwTz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzX -mk6vBbOmcZSccbNQYArHE504B4YCqOmoaSYYkKtMsE8jqzpPhNjfzp/haW+710LX -a0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy2xSoRcRdKn23tNbE7qzN -E0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv77+ldU9U0 -WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYD -VR0PBAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0 -Jvf6xCZU7wO94CTLVBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRU -cnVzdCBBQjEmMCQGA1UECxMdQWRkVHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsx -IjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENBIFJvb3SCAQEwDQYJKoZIhvcN -AQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZlj7DYd7usQWxH -YINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 -6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvC -Nr4TDea9Y355e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEX -c4g/VhsxOBi0cQ+azcgOno4uG+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5a -mnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIFdzCCBF+gAwIBAgIQE+oocFv07O0MNmMJgGFDNjANBgkqhkiG9w0BAQwFADBv -MQswCQYDVQQGEwJTRTEUMBIGA1UEChMLQWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFk -ZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYDVQQDExlBZGRUcnVzdCBF -eHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEwNDgzOFow -gYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQHEwtK -ZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYD -VQQDEyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjAN -BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAgBJlFzYOw9sIs9CsVw127c0n00yt -UINh4qogTQktZAnczomfzD2p7PbPwdzx07HWezcoEStH2jnGvDoZtF+mvX2do2NC -tnbyqTsrkfjib9DsFiCQCT7i6HTJGLSR1GJk23+jBvGIGGqQIjy8/hPwhxR79uQf -jtTkUcYRZ0YIUcuGFFQ/vDP+fmyc/xadGL1RjjWmp2bIcmfbIWax1Jt4A8BQOujM -8Ny8nkz+rwWWNR9XWrf/zvk9tyy29lTdyOcSOk2uTIq3XJq0tyA9yn8iNK5+O2hm -AUTnAU5GU5szYPeUvlM3kHND8zLDU+/bqv50TmnHa4xgk97Exwzf4TKuzJM7UXiV -Z4vuPVb+DNBpDxsP8yUmazNt925H+nND5X4OpWaxKXwyhGNVicQNwZNUMBkTrNN9 -N6frXTpsNVzbQdcS2qlJC9/YgIoJk2KOtWbPJYjNhLixP6Q5D9kCnusSTJV882sF -qV4Wg8y4Z+LoE53MW4LTTLPtW//e5XOsIzstAL81VXQJSdhJWBp/kjbmUZIO8yZ9 -HE0XvMnsQybQv0FfQKlERPSZ51eHnlAfV1SoPv10Yy+xUGUJ5lhCLkMaTLTwJUdZ -+gQek9QmRkpQgbLevni3/GcV4clXhB4PY9bpYrrWX1Uu6lzGKAgEJTm4Diup8kyX -HAc/DVL17e8vgg8CAwEAAaOB9DCB8TAfBgNVHSMEGDAWgBStvZh6NLQm9/rEJlTv -A73gJMtUGjAdBgNVHQ4EFgQUU3m/WqorSs9UgOHYm8Cd8rIDZsswDgYDVR0PAQH/ -BAQDAgGGMA8GA1UdEwEB/wQFMAMBAf8wEQYDVR0gBAowCDAGBgRVHSAAMEQGA1Ud -HwQ9MDswOaA3oDWGM2h0dHA6Ly9jcmwudXNlcnRydXN0LmNvbS9BZGRUcnVzdEV4 -dGVybmFsQ0FSb290LmNybDA1BggrBgEFBQcBAQQpMCcwJQYIKwYBBQUHMAGGGWh0 -dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wDQYJKoZIhvcNAQEMBQADggEBAJNl9jeD -lQ9ew4IcH9Z35zyKwKoJ8OkLJvHgwmp1ocd5yblSYMgpEg7wrQPWCcR23+WmgZWn -RtqCV6mVksW2jwMibDN3wXsyF24HzloUQToFJBv2FAY7qCUkDrvMKnXduXBBP3zQ -YzYhBx9G/2CkkeFnvN4ffhkUyWNnkepnB2u0j4vAbkN9w6GAbLIevFOFfdyQoaS8 -Le9Gclc1Bb+7RrtubTeZtv8jkpHGbkD4jylW6l/VXxRTrPBPYer3IsynVgviuDQf -Jtl7GQVoP7o81DgGotPmjw7jtHFtQELFhLRAlSv0ZaBIefYdgWOWnU914Ph85I6p -0fKtirOMxyHNwu8= ------END CERTIFICATE----- - ------BEGIN CERTIFICATE----- -MIIGEzCCA/ugAwIBAgIQfVtRJrR2uhHbdBYLvFMNpzANBgkqhkiG9w0BAQwFADCB -iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl -cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV -BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTgx -MTAyMDAwMDAwWhcNMzAxMjMxMjM1OTU5WjCBjzELMAkGA1UEBhMCR0IxGzAZBgNV -BAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEYMBYGA1UE -ChMPU2VjdGlnbyBMaW1pdGVkMTcwNQYDVQQDEy5TZWN0aWdvIFJTQSBEb21haW4g -VmFsaWRhdGlvbiBTZWN1cmUgU2VydmVyIENBMIIBIjANBgkqhkiG9w0BAQEFAAOC -AQ8AMIIBCgKCAQEA1nMz1tc8INAA0hdFuNY+B6I/x0HuMjDJsGz99J/LEpgPLT+N -TQEMgg8Xf2Iu6bhIefsWg06t1zIlk7cHv7lQP6lMw0Aq6Tn/2YHKHxYyQdqAJrkj -eocgHuP/IJo8lURvh3UGkEC0MpMWCRAIIz7S3YcPb11RFGoKacVPAXJpz9OTTG0E -oKMbgn6xmrntxZ7FN3ifmgg0+1YuWMQJDgZkW7w33PGfKGioVrCSo1yfu4iYCBsk -Haswha6vsC6eep3BwEIc4gLw6uBK0u+QDrTBQBbwb4VCSmT3pDCg/r8uoydajotY -uK3DGReEY+1vVv2Dy2A0xHS+5p3b4eTlygxfFQIDAQABo4IBbjCCAWowHwYDVR0j -BBgwFoAUU3m/WqorSs9UgOHYm8Cd8rIDZsswHQYDVR0OBBYEFI2MXsRUrYrhd+mb -+ZsF4bgBjWHhMA4GA1UdDwEB/wQEAwIBhjASBgNVHRMBAf8ECDAGAQH/AgEAMB0G -A1UdJQQWMBQGCCsGAQUFBwMBBggrBgEFBQcDAjAbBgNVHSAEFDASMAYGBFUdIAAw -CAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0 -LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2Bggr -BgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNv -bS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDov -L29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAMr9hvQ5Iw0/H -ukdN+Jx4GQHcEx2Ab/zDcLRSmjEzmldS+zGea6TvVKqJjUAXaPgREHzSyrHxVYbH -7rM2kYb2OVG/Rr8PoLq0935JxCo2F57kaDl6r5ROVm+yezu/Coa9zcV3HAO4OLGi -H19+24rcRki2aArPsrW04jTkZ6k4Zgle0rj8nSg6F0AnwnJOKf0hPHzPE/uWLMUx -RP0T7dWbqWlod3zu4f+k+TY4CFM5ooQ0nBnzvg6s1SQ36yOoeNDT5++SR2RiOSLv -xvcRviKFxmZEJCaOEDKNyJOuB56DPi/Z+fVGjmO+wea03KbNIaiGCpXZLoUmGv38 -sbZXQm2V0TP2ORQGgkE49Y9Y3IBbpNV9lXj9p5v//cWoaasm56ekBYdbqbe4oyAL -l6lFhd2zi+WJN44pDfwGF/Y4QA5C5BIG+3vzxhFoYt/jmPQT2BVPi7Fp2RBgvGQq -6jG35LWjOhSbJuMLe/0CjraZwTiXWTb2qHSihrZe68Zk6s+go/lunrotEbaGmAhY -LcmsJWTyXnW0OMGuf1pGg+pRyrbxmRE1a6Vqe8YAsOf4vmSyrcjC8azjUeqkk+B5 -yOGBQMkKW+ESPMFgKuOXwIlCypTPRpgSabuY0MLTDXJLR27lk8QyKGOHQ+SwMj4K -00u/I5sUKUErmgQfky3xxzlIPK1aEn8= ------END CERTIFICATE----- - diff --git a/tunnel-server/src/uds_tunnel/config.py b/tunnel-server/src/uds_tunnel/config.py index 070714099..b5ca12709 100644 --- a/tunnel-server/src/uds_tunnel/config.py +++ b/tunnel-server/src/uds_tunnel/config.py @@ -50,11 +50,12 @@ class ConfigurationType(typing.NamedTuple): listen_address: str listen_port: int - + ipv6: bool workers: int + ssl_min_tls_version: str # Valid values are 1.2, 1.3 (1.0 and 1.1 are not supported) ssl_certificate: str ssl_certificate_key: str ssl_password: str @@ -76,26 +77,21 @@ class ConfigurationType(typing.NamedTuple): def __str__(self) -> str: return 'Configuration: \n' + '\n'.join( f'{k}={v}' - for k, v in self._asdict().items() + for k, v in self._asdict().items() # pylint: disable=no-member # python >=3.8 has _asdict ) - -def read_config_file( - cfg_file: typing.Optional[typing.Union[typing.TextIO, str]] = None -) -> str: +def read_config_file(cfg_file: typing.Optional[typing.Union[typing.TextIO, str]] = None) -> str: if cfg_file is None: cfg_file = CONFIGFILE if isinstance(cfg_file, str): - with open(cfg_file, 'r') as f: + with open(cfg_file, 'r', encoding='utf-8') as f: return '[uds]\n' + f.read() # path is in fact a file-like object return '[uds]\n' + cfg_file.read() -def read( - cfg_file: typing.Optional[typing.Union[typing.TextIO, str]] = None -) -> ConfigurationType: +def read(cfg_file: typing.Optional[typing.Union[typing.TextIO, str]] = None) -> ConfigurationType: config_str = read_config_file(cfg_file) cfg = configparser.ConfigParser() @@ -131,6 +127,7 @@ def read( listen_port=int(uds.get('port', '443')), ipv6=uds.get('ipv6', 'false').lower() == 'true', workers=int(uds.get('workers', '0')) or multiprocessing.cpu_count(), + ssl_min_tls_version=uds.get('ssl_min_tls_version', '1.2'), ssl_certificate=uds['ssl_certificate'], ssl_certificate_key=uds.get('ssl_certificate_key', ''), ssl_password=uds.get('ssl_password', ''), @@ -148,8 +145,8 @@ def read( except ValueError as e: raise Exception( f'Mandatory configuration file in incorrect format: {e.args[0]}. Please, revise {CONFIGFILE}' - ) + ) from None except KeyError as e: raise Exception( f'Mandatory configuration parameter not found: {e.args[0]}. Please, revise {CONFIGFILE}' - ) + ) from None diff --git a/tunnel-server/src/uds_tunnel/consts.py b/tunnel-server/src/uds_tunnel/consts.py index e9210efa5..87fb0c0a6 100644 --- a/tunnel-server/src/uds_tunnel/consts.py +++ b/tunnel-server/src/uds_tunnel/consts.py @@ -28,6 +28,7 @@ ''' Author: Adolfo Gómez, dkmaster at dkmon dot com ''' +import re import typing DEBUG = True @@ -71,3 +72,6 @@ RESPONSE_OK: typing.Final[bytes] = b'OK' # Backlog for listen socket BACKLOG = 1024 + +# Regular expression for parsing ticket +TICKET_REGEX = re.compile(f'^[a-zA-Z0-9]{{{TICKET_LENGTH}}}$') diff --git a/tunnel-server/src/uds_tunnel/processes.py b/tunnel-server/src/uds_tunnel/processes.py index 08243bc82..71cd2041c 100644 --- a/tunnel-server/src/uds_tunnel/processes.py +++ b/tunnel-server/src/uds_tunnel/processes.py @@ -72,7 +72,7 @@ class Processes: self.cfg = cfg self.ns = ns - for i in range(cfg.workers): + for _ in range(cfg.workers): self.add_child_pid() def add_child_pid(self): @@ -157,7 +157,7 @@ class Processes: ) -> None: if cfg.use_uvloop: try: - import uvloop + import uvloop # pylint: disable=import-outside-toplevel if sys.version_info >= (3, 11): with asyncio.Runner(loop_factory=uvloop.new_event_loop) as runner: diff --git a/tunnel-server/src/uds_tunnel/stats.py b/tunnel-server/src/uds_tunnel/stats.py index 8d5e90588..e3135cd11 100644 --- a/tunnel-server/src/uds_tunnel/stats.py +++ b/tunnel-server/src/uds_tunnel/stats.py @@ -36,8 +36,6 @@ import typing import io import asyncio import ssl -import logging -import typing from . import config @@ -51,6 +49,7 @@ INTERVAL = 2 # Interval in seconds between stats update logger = logging.getLogger(__name__) + class StatsSingleCounter: def __init__(self, parent: 'StatsManager', for_receiving=True) -> None: if for_receiving: @@ -69,14 +68,12 @@ class StatsManager: sent: int last_recv: int recv: int - last: float - start_time: float # timestamp - end_time: float + last: float # timestamp, from time.monotonic() + start_time: float # timestamp, from time.monotonic() + end_time: float # timestamp, from time.monotonic() def __init__(self, ns: 'Namespace'): self.ns = ns - self.ns.current += 1 - self.ns.total += 1 self.sent = self.last_sent = 0 self.recv = self.last_recv = 0 self.last = time.monotonic() @@ -87,7 +84,6 @@ class StatsManager: def current_time(self) -> float: return time.monotonic() - def update(self, force: bool = False): now = time.monotonic() if force or now - self.last > INTERVAL: @@ -105,6 +101,16 @@ class StatsManager: self.sent += size self.update() + def decrement_connections(self): + # Decrement current runing connections + self.ns.current -= 1 + + def increment_connections(self): + # Increment current runing connections + # Also, increment total connections + self.ns.current += 1 + self.ns.total += 1 + @property def as_sent_counter(self) -> 'StatsSingleCounter': return StatsSingleCounter(self, False) @@ -115,9 +121,10 @@ class StatsManager: def close(self): self.update(True) - self.ns.current -= 1 + self.decrement_connections() self.end_time = time.monotonic() + # Stats collector thread class GlobalStats: manager: 'SyncManager' @@ -143,6 +150,7 @@ class GlobalStats: def get_stats(ns: 'Namespace') -> typing.Iterable[str]: yield ';'.join([str(ns.current), str(ns.total), str(ns.sent), str(ns.recv)]) + # Stats processor, invoked from command line async def getServerStats(detailed: bool = False) -> None: cfg = config.read() @@ -166,8 +174,8 @@ async def getServerStats(detailed: bool = False) -> None: tmpdata = io.BytesIO() cmd = consts.COMMAND_STAT if detailed else consts.COMMAND_INFO - - writer.write(cmd + cfg.secret.encode()) + + writer.write(cmd + cfg.secret.encode()) await writer.drain() while True: diff --git a/tunnel-server/src/uds_tunnel/tunnel.py b/tunnel-server/src/uds_tunnel/tunnel.py index a9ec2ede5..209bd0098 100644 --- a/tunnel-server/src/uds_tunnel/tunnel.py +++ b/tunnel-server/src/uds_tunnel/tunnel.py @@ -67,6 +67,10 @@ class TunnelProtocol(asyncio.Protocol): source: typing.Tuple[str, int] # and destination destination: typing.Tuple[str, int] + # tls version used + tls_version: str + # cipher used + tls_cipher: str # Counters & stats related stats_manager: stats.StatsManager @@ -74,9 +78,7 @@ class TunnelProtocol(asyncio.Protocol): # If there is a timeout task running timeout_task: typing.Optional[asyncio.Task] = None - def __init__( - self, owner: 'proxy.Proxy' - ) -> None: + def __init__(self, owner: 'proxy.Proxy') -> None: # If no other side is given, we are the server part super().__init__() # transport is undefined until connection_made is called @@ -85,7 +87,9 @@ class TunnelProtocol(asyncio.Protocol): self.owner = owner self.source = ('', 0) self.destination = ('', 0) - + self.tls_version = '' + self.tls_cipher = '' + # If other_side is given, we are the client part (that is, the tunnel from us to remote machine) # In this case, only do_proxy is used self.client = None @@ -100,10 +104,11 @@ class TunnelProtocol(asyncio.Protocol): # Open Command has the ticket behind it if len(self.cmd) < consts.TICKET_LENGTH + consts.COMMAND_LENGTH: - # Reactivate timeout, will be deactivated on do_command - self.set_timeout(self.owner.cfg.command_timeout) return # Wait for more data to complete OPEN command + # Clean timeout now, we have received all data + self.clean_timeout() + # Ticket received, now process it with UDS ticket = self.cmd[consts.COMMAND_LENGTH :] @@ -117,9 +122,7 @@ class TunnelProtocol(asyncio.Protocol): async def open_client() -> None: try: - result = await TunnelProtocol.get_ticket_from_uds( - self.owner.cfg, ticket, self.source - ) + result = await TunnelProtocol.get_ticket_from_uds(self.owner.cfg, ticket, self.source) except Exception as e: logger.error('ERROR %s', e.args[0] if e.args else e) self.transport.write(consts.RESPONSE_ERROR_TICKET) @@ -139,8 +142,7 @@ class TunnelProtocol(asyncio.Protocol): try: family = ( socket.AF_INET6 - if ':' in self.destination[0] - or (self.owner.cfg.ipv6 and not '.' in self.destination[0]) + if ':' in self.destination[0] or (self.owner.cfg.ipv6 and '.' not in self.destination[0]) else socket.AF_INET ) (_, self.client) = await loop.create_connection( @@ -154,6 +156,7 @@ class TunnelProtocol(asyncio.Protocol): self.transport.resume_reading() # send OK to client self.transport.write(b'OK') + self.stats_manager.increment_connections() # Increment connections counters except Exception as e: logger.error('Error opening connection: %s', e) self.close_connection() @@ -163,11 +166,13 @@ class TunnelProtocol(asyncio.Protocol): # From now, proxy connection self.runner = self.do_proxy - def process_stats(self, full: bool) -> None: + def process_stats(self, full: bool) -> None: # pylint: disable=unused-argument # if pasword is not already received, wait for it if len(self.cmd) < consts.PASSWORD_LENGTH + consts.COMMAND_LENGTH: return + # Clean timeout now, we have received all data + self.clean_timeout() logger.info('COMMAND: %s', self.cmd[: consts.COMMAND_LENGTH].decode()) # Check valid source ip @@ -198,7 +203,10 @@ class TunnelProtocol(asyncio.Protocol): try: await asyncio.sleep(wait) logger.error('TIMEOUT FROM %s', self.pretty_source()) - self.transport.write(consts.RESPONSE_ERROR_TIMEOUT) + try: + self.transport.write(consts.RESPONSE_ERROR_TIMEOUT) + except Exception: # nosec: Transport not available, ignore + pass self.close_connection() except asyncio.CancelledError: pass @@ -223,10 +231,9 @@ class TunnelProtocol(asyncio.Protocol): def do_command(self, data: bytes) -> None: if self.cmd == b'': - logger.info('CONNECT FROM %s', self.pretty_source()) + logger.info('CONNECT FROM %s (%s/%s)', self.pretty_source(), self.tls_version, self.tls_cipher) - # Ensure we don't get a timeout - self.clean_timeout() + # We have at most self.owner.cfg.command_timeout seconds to receive the command and the ticket if needed self.cmd += data if len(self.cmd) >= consts.COMMAND_LENGTH: @@ -234,28 +241,27 @@ class TunnelProtocol(asyncio.Protocol): try: if command == consts.COMMAND_OPEN: self.process_open() - elif command == consts.COMMAND_TEST: + return + if command == consts.COMMAND_TEST: + self.clean_timeout() # Stop timeout logger.info('COMMAND: TEST') self.transport.write(consts.RESPONSE_OK) self.close_connection() return - elif command in (consts.COMMAND_STAT, consts.COMMAND_INFO): + if command in (consts.COMMAND_STAT, consts.COMMAND_INFO): # This is an stats requests try: - self.process_stats(full=command == consts.COMMAND_STAT) + self.process_stats(full=command == consts.COMMAND_STAT) except Exception as e: logger.error('ERROR processing stats: %s', e.args[0] if e.args else e) self.close_connection() return - else: - raise Exception('Invalid command') + raise Exception('Invalid command') except Exception: logger.error('ERROR from %s', self.pretty_source()) self.transport.write(consts.RESPONSE_ERROR_COMMAND) self.close_connection() return - else: - self.set_timeout(self.owner.cfg.command_timeout) # if not enough data to process command, wait for more @@ -287,9 +293,7 @@ class TunnelProtocol(asyncio.Protocol): ) # Notify end to uds, using a task becase we are not an async function asyncio.get_event_loop().create_task( - TunnelProtocol.notify_end_to_uds( - self.owner.cfg, self.notify_ticket, self.stats_manager - ) + TunnelProtocol.notify_end_to_uds(self.owner.cfg, self.notify_ticket, self.stats_manager) ) self.notify_ticket = b'' # Clean up so no more notifications else: @@ -299,12 +303,19 @@ class TunnelProtocol(asyncio.Protocol): self.owner.finished.set() def connection_made(self, transport: 'asyncio.transports.BaseTransport') -> None: - logger.debug('Connection made: %s', transport.get_extra_info('peername')) - # We know for sure that the transport is a Transport. self.transport = typing.cast('asyncio.transports.Transport', transport) - self.cmd = b'' + # Get source self.source = self.transport.get_extra_info('peername') + logger.debug('Connection made: %s', self.source) + + # Try to get the cipher used to show it in the logs + try: + self.tls_cipher, self.tls_version = transport.get_extra_info('cipher')[:2] + except Exception: # nosec, ingore if not TLS (but should not happen) + self.tls_cipher, self.tls_version = 'None', 'None' + + self.cmd = b'' def data_received(self, data: bytes): self.runner(data) # send data to current runner (command or proxy) @@ -332,7 +343,6 @@ class TunnelProtocol(asyncio.Protocol): def pretty_destination(self) -> str: return TunnelProtocol.pretty_address(self.destination) - @staticmethod async def _read_from_uds( cfg: config.ConfigurationType, @@ -341,13 +351,9 @@ class TunnelProtocol(asyncio.Protocol): queryParams: typing.Optional[typing.Mapping[str, str]] = None, ) -> typing.MutableMapping[str, typing.Any]: try: - url = ( - cfg.uds_server + '/' + ticket.decode() + '/' + msg + '/' + cfg.uds_token - ) + url = cfg.uds_server + '/' + ticket.decode() + '/' + msg + '/' + cfg.uds_token if queryParams: - url += '?' + '&'.join( - [f'{key}={value}' for key, value in queryParams.items()] - ) + url += '?' + '&'.join([f'{key}={value}' for key, value in queryParams.items()]) # Set options options: typing.Dict[str, typing.Any] = {'timeout': cfg.uds_timeout} if cfg.uds_verify_ssl is False: @@ -360,24 +366,15 @@ class TunnelProtocol(asyncio.Protocol): raise Exception(await r.text()) return await r.json() except Exception as e: - raise Exception(f'TICKET COMMS ERROR: {ticket.decode()} {msg} {e!s}') + raise Exception(f'TICKET COMMS ERROR: {ticket.decode()} {msg} {e!s}') from e @staticmethod async def get_ticket_from_uds( cfg: config.ConfigurationType, ticket: bytes, address: typing.Tuple[str, int] ) -> typing.MutableMapping[str, typing.Any]: - # Sanity checks - if len(ticket) != consts.TICKET_LENGTH: - raise ValueError(f'TICKET INVALID (len={len(ticket)})') - - for n, i in enumerate(ticket.decode(errors='ignore')): - if ( - (i >= 'a' and i <= 'z') - or (i >= '0' and i <= '9') - or (i >= 'A' and i <= 'Z') - ): - continue # Correctus - raise ValueError(f'TICKET INVALID (char {i} at pos {n})') + # Check ticket using re + if consts.TICKET_REGEX.match(ticket.decode(errors='replace')) is None: + raise ValueError(f'TICKET INVALID ({ticket.decode(errors="replace")})') return await TunnelProtocol._read_from_uds(cfg, ticket, address[0]) diff --git a/tunnel-server/src/uds_tunnel/tunnel_client.py b/tunnel-server/src/uds_tunnel/tunnel_client.py index 237ae8d78..26e09e503 100644 --- a/tunnel-server/src/uds_tunnel/tunnel_client.py +++ b/tunnel-server/src/uds_tunnel/tunnel_client.py @@ -1,10 +1,3 @@ -""" - Copyright (c) 2023 Adolfo Gómez García - - This software is released under the MIT License. - https://opensource.org/licenses/MIT -""" - # -*- coding: utf-8 -*- # # Copyright (c) 2022 Virtual Cable S.L.U. @@ -39,8 +32,6 @@ import asyncio import typing import logging -from . import consts, config - logger = logging.getLogger(__name__) if typing.TYPE_CHECKING: @@ -71,7 +62,7 @@ class TunnelClientProtocol(asyncio.Protocol): self.transport = typing.cast('asyncio.transports.Transport', transport) def connection_lost(self, exc: typing.Optional[Exception]) -> None: - # Ensure close other side if not server_side + # Ensure close other side try: self.receiver.close_connection() except Exception: diff --git a/tunnel-server/src/udstunnel.conf b/tunnel-server/src/udstunnel.conf index 3a307d396..fe8596cb6 100644 --- a/tunnel-server/src/udstunnel.conf +++ b/tunnel-server/src/udstunnel.conf @@ -36,6 +36,8 @@ workers = 2 ssl_certificate = /etc/certs/server.pem # Key can be included on certificate file, so this is optional ssl_certificate_key = /etc/certs/key.pem +# min tls version, optional, 1.2 if not set +ssl_min_tls_version = 1.3 # ssl_ciphers and ssl_dhparam are optional. ssl_ciphers = ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384 ssl_dhparam = /etc/certs/dhparam.pem diff --git a/tunnel-server/src/udstunnel.py b/tunnel-server/src/udstunnel.py index 66eb5eaa2..918ba34db 100755 --- a/tunnel-server/src/udstunnel.py +++ b/tunnel-server/src/udstunnel.py @@ -37,14 +37,16 @@ import argparse import signal import ssl import socket -import logging -from concurrent.futures import ThreadPoolExecutor -# event for stop notification -import threading +import threading # event for stop notification import typing +import logging +from logging.handlers import RotatingFileHandler +from concurrent.futures import ThreadPoolExecutor + try: import uvloop + asyncio.set_event_loop_policy(uvloop.EventLoopPolicy()) except ImportError: pass # no uvloop support @@ -73,8 +75,6 @@ def stop_signal(signum: int, frame: typing.Any) -> None: def setup_log(cfg: config.ConfigurationType) -> None: - from logging.handlers import RotatingFileHandler - # Update logging if needed if cfg.logfile: fileh = RotatingFileHandler( @@ -96,9 +96,7 @@ def setup_log(cfg: config.ConfigurationType) -> None: log.setLevel(cfg.loglevel) handler = logging.StreamHandler(sys.stderr) handler.setLevel(cfg.loglevel) - formatter = logging.Formatter( - '%(levelname)s - %(message)s' - ) # Basic log format, nice for syslog + formatter = logging.Formatter('%(levelname)s - %(message)s') # Basic log format, nice for syslog handler.setFormatter(formatter) log.addHandler(handler) @@ -107,10 +105,7 @@ def setup_log(cfg: config.ConfigurationType) -> None: logger.debug('Configuration: %s', cfg) -async def tunnel_proc_async( - pipe: 'Connection', cfg: config.ConfigurationType, ns: 'Namespace' -) -> None: - +async def tunnel_proc_async(pipe: 'Connection', cfg: config.ConfigurationType, ns: 'Namespace') -> None: loop = asyncio.get_running_loop() tasks: typing.List[asyncio.Task] = [] @@ -123,9 +118,7 @@ async def tunnel_proc_async( try: while True: # Clear back event, for next data - msg: typing.Optional[ - typing.Tuple[socket.socket, typing.Tuple[str, int]] - ] = pipe.recv() + msg: typing.Optional[typing.Tuple[socket.socket, typing.Tuple[str, int]]] = pipe.recv() if msg: return msg except EOFError: @@ -147,14 +140,31 @@ async def tunnel_proc_async( args['keyfile'] = cfg.ssl_certificate_key if cfg.ssl_password: args['password'] = cfg.ssl_password - + context.load_cert_chain(**args) + # Set min version from string (1.2 or 1.3) as ssl.TLSVersion.TLSv1_2 or ssl.TLSVersion.TLSv1_3 + if cfg.ssl_min_tls_version in ('1.2', '1.3'): + try: + context.minimum_version = getattr( + ssl.TLSVersion, f'TLSv1_{cfg.ssl_min_tls_version.split(".")[1]}' + ) + except Exception as e: + logger.exception('Setting min tls version failed: %s. Using defaults', e) + context.minimum_version = ssl.TLSVersion.TLSv1_2 + # Any other value will be ignored + if cfg.ssl_ciphers: - context.set_ciphers(cfg.ssl_ciphers) + try: + context.set_ciphers(cfg.ssl_ciphers) + except Exception as e: + logger.exception('Setting ciphers failed: %s. Using defaults', e) if cfg.ssl_dhparam: - context.load_dh_params(cfg.ssl_dhparam) + try: + context.load_dh_params(cfg.ssl_dhparam) + except Exception as e: + logger.exception('Loading dhparams failed: %s. Using defaults', e) try: while True: @@ -163,25 +173,26 @@ async def tunnel_proc_async( (sock, address) = await loop.run_in_executor(None, get_socket) if not sock: break # No more sockets, exit - logger.debug(f'CONNECTION from {address!r} (pid: {os.getpid()})') + logger.debug('CONNECTION from %s (pid: %s)', address, os.getpid()) # Due to proxy contains an "event" to stop, we need to create a new one for each connection add_autoremovable_task(asyncio.create_task(proxy.Proxy(cfg, ns)(sock, context))) - except asyncio.CancelledError: - raise + except asyncio.CancelledError: # pylint: disable=try-except-raise + raise # Stop, but avoid generic exception except Exception: logger.error('NEGOTIATION ERROR from %s', address[0] if address else 'unknown') except asyncio.CancelledError: pass # Stop # create task for server - + add_autoremovable_task(asyncio.create_task(run_server())) try: while tasks and not do_stop.is_set(): to_wait = tasks[:] # Get a copy of the list # Wait for "to_wait" tasks to finish, stop every 2 seconds to check if we need to stop - done, _ = await asyncio.wait(to_wait, return_when=asyncio.FIRST_COMPLETED, timeout=2) + # done, _ = + await asyncio.wait(to_wait, return_when=asyncio.FIRST_COMPLETED, timeout=2) except asyncio.CancelledError: logger.info('Task cancelled') do_stop.set() # ensure we stop @@ -189,8 +200,12 @@ async def tunnel_proc_async( logger.debug('Out of loop, stopping tasks: %s, running: %s', tasks, do_stop.is_set()) # If any task is still running, cancel it - asyncio.gather(*tasks, return_exceptions=True).cancel() - + for task in tasks: + try: + task.cancel() + except asyncio.CancelledError: + pass # Ignore, we are stopping + # for task in tasks: # task.cancel() @@ -199,16 +214,15 @@ async def tunnel_proc_async( logger.info('PROCESS %s stopped', os.getpid()) -def process_connection( - client: socket.socket, addr: typing.Tuple[str, str], conn: 'Connection' -) -> None: + +def process_connection(client: socket.socket, addr: typing.Tuple[str, str], conn: 'Connection') -> None: data: bytes = b'' try: # First, ensure handshake (simple handshake) and command data = client.recv(len(consts.HANDSHAKE_V1)) if data != consts.HANDSHAKE_V1: - raise Exception('Invalid data from {}: {}'.format(addr[0], data.hex())) # Invalid handshake + raise Exception(f'Invalid data from {addr[0]}: {data.hex()}') # Invalid handshake conn.send((client, addr)) del client # Ensure socket is controlled on child process except Exception as e: @@ -222,9 +236,7 @@ def tunnel_main(args: 'argparse.Namespace') -> None: # Try to bind to port as running user # Wait for socket incoming connections and spread them - socket.setdefaulttimeout( - 3.0 - ) # So we can check for stop from time to time and not block forever + socket.setdefaulttimeout(3.0) # So we can check for stop from time to time and not block forever af_inet = socket.AF_INET6 if args.ipv6 or cfg.ipv6 or ':' in cfg.listen_address else socket.AF_INET sock = socket.socket(af_inet, socket.SOCK_STREAM) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, True) @@ -248,15 +260,13 @@ def tunnel_main(args: 'argparse.Namespace') -> None: setup_log(cfg) - logger.info( - 'Starting tunnel server on %s:%s', cfg.listen_address, cfg.listen_port - ) + logger.info('Starting tunnel server on %s:%s', cfg.listen_address, cfg.listen_port) if setproctitle: setproctitle.setproctitle(f'UDSTunnel {cfg.listen_address}:{cfg.listen_port}') # Create pid file if cfg.pidfile: - with open(cfg.pidfile, mode='w') as f: + with open(cfg.pidfile, mode='w', encoding='utf-8') as f: f.write(str(os.getpid())) except Exception as e: @@ -269,7 +279,7 @@ def tunnel_main(args: 'argparse.Namespace') -> None: signal.signal(signal.SIGINT, stop_signal) signal.signal(signal.SIGTERM, stop_signal) except Exception as e: - # Signal not available on threads, and we use threads on tests, + # Signal not available on threads, and we use threads on tests, # so we will ignore this because on tests signals are not important logger.warning('Signal not available: %s', e) @@ -316,9 +326,7 @@ def tunnel_main(args: 'argparse.Namespace') -> None: def main() -> None: parser = argparse.ArgumentParser() group = parser.add_mutually_exclusive_group() - group.add_argument( - '-t', '--tunnel', help='Starts the tunnel server', action='store_true' - ) + group.add_argument('-t', '--tunnel', help='Starts the tunnel server', action='store_true') # group.add_argument('-r', '--rdp', help='RDP Tunnel for traffic accounting') group.add_argument( '-s', diff --git a/tunnel-server/test/test_tunnel.py b/tunnel-server/test/test_tunnel.py index 4b8186459..2f154b47e 100644 --- a/tunnel-server/test/test_tunnel.py +++ b/tunnel-server/test/test_tunnel.py @@ -76,7 +76,7 @@ class TestTunnel(IsolatedAsyncioTestCase): # Wait for response readed = await reader.read(1024) # Logger should have been called once with error - logger_mock.error.assert_called_once() + logger_mock.error.assert_called() if len(bad_cmd) < 4: # Response shout have been timeout